2
0
Fork 0
Verif_Herezh/Doc/doc_procedure_verification.tex

698 lines
40 KiB
TeX
Raw Normal View History

\documentclass[a4paper,12pt]{scrartcl}
%\usepackage{isolatin1}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage{epsfig,color}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{fancybox}
\usepackage{wrapfig}
%\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{subfigure}
%\usepackage{/Users/troufflard/LATEX/BIBLIOTHEQUE/macro_figure}
%\usepackage{eurosym}
\usepackage{calc}
%\usepackage{t1enc}
\usepackage{ifthen}
\usepackage{lscape}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{colortbl}
%\newcolumntype{M}[1]{>{\raggedright}m{#1}}
\usepackage{tikz}
\usetikzlibrary{trees}
\addto\captionsfrench{\def\figurename{Figure}}
\addto\captionsfrench{\def\tablename{Tableau}}
%\usepackage{hangcaption}
\oddsidemargin 0.1cm
\evensidemargin -0.9cm
\topmargin -1cm
\headsep 1cm
\textwidth 17cm
\textheight 24cm
\parindent 0.5cm
\raggedbottom
\sloppy
\usepackage{hyperref}
\hypersetup{
colorlinks=true, %colorise les liens
breaklinks=true, %permet le retour <20> la ligne dans les liens trop longs
urlcolor= blue, %couleur des hyperliens
linkcolor= blue, %couleur des liens internes
citecolor= green %couleur citation biblio
}
%creation d une longueur egale a \baselineskip pour l utiliser dans les tabular (car un bug incroyable fait que \baselineskip est egal a 0 dans les tabular!!!!)
\newlength{\savebaselineskip}
\setlength{\savebaselineskip}{\baselineskip}
\newcommand{\ligne}[1]{
%on change l'unit<69> de longueur "\unitlength" li<6C>e <20> l'environnement "picture"
%\baselineskip = distance entre la base d'une ligne et la base de la ligne suivante
%
% pour info, on a : 1cm = 3\baselineskip (sous r<>serve d'un changement de la valeur de \baselineskip)
%
\setlength{\unitlength}{\baselineskip}
%on declare un dessin de dimension #1 et de hauteur 0
\begin{picture}(#1,0.)
%on fait une ligne d'origine (0,0.25\baselineskip), dans la direction (1,0) et de longueur #1 (egale a la taille du dessin)
\put(0,0.25){\line(1,0){#1}}
\end{picture}
%Rq : on utilise 0.25\baselineskip pour l'origine afin d'avoir une ligne "centr<74>e" en hauteur, ce qui permet de faire des trucs du genre :
%-------------------
%texte bla bla
%-------------------
%
%au lieu de :
%_____________
%texte bla bla
%_____________
}
%
% titre, auteur, date
%
\title{Manuel d'utilisation de la proc<6F>dure de v<>rification}
\author{R<EFBFBD>dacteur principal: Julien Troufflard}
\date{\today}
%\pagestyle{arabic}
\pagenumbering{arabic}
\begin{document}
\maketitle
\tableofcontents
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction {\small \it (G<>rard Rio)}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ce manuel pr<70>sente la proc<6F>dure de v<>rification d'une s<>rie de tests d<>di<64> <20> Herezh++. Cette v<>rification est effectu<74>e via principalement un script perl. La premi<6D>re version de ce script a <20>t<EFBFBD> mise en place par Laurent Mah<61>o au cours de sa th<74>se au d<>but des ann<6E>es 2000. Puis plusieurs <20>volutions mineures ont <20>t<EFBFBD> introduite. Enfin derni<6E>rement, suite <20> un <20>largissement des objectifs, le script a <20>t<EFBFBD> enti<74>rement refond<6E> par Julien Troufflard en 2015. On trouvera dans ce document une description de l'organisation de l'arborescence, du fonctionnement et enfin de la m<>thodologie n<>cessaire pour introduire un nouveau test.
Deux objectifs principaux sont recherch<63>s:
\begin{itemize} \item la d<>tection d'<27>volutions malencontreuses dans le fonctionnement d'Herezh++
\item la pr<70>sentation d'exemples de fonctionnement et de mise en donn<6E>es des diff<66>rentes possibilit<69>s offertes par Herezh++. \end{itemize}
Enfin l'id<69>e est que rien n'est d<>finitif, et que des <20>volutions sont pr<70>visibles en fonction des demandes et attentes des utilisateurs.
%
\section{Arborescence du projet}\label{section_arborescence}
L'arborescence du projet CVS est la suivante :\\
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.6) and
two children at (0.5,-0.7) and (0.5,-1.5)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node[draw] {\bf Verif\_Herezh\rm}
child { node[draw, anchor=west] {Batterie (r<>pertoire contenant les r<>pertoires de test)}}
child { node[draw, anchor=west] {Perl (r<>pertoire contenant divers scripts Perl pour ex<65>cuter la v<>rification)}}
child { node[draw, anchor=west] {Rapport (r<>pertoire contenant les rapports de v<>rification)}}
child { node[anchor=west] {verifier\_exeHZ (script de lancement de la v<>rification)}
};
\end{tikzpicture}\\
%
%
\section{Lancement de la batterie de tests}
Le script \verb|verifier_exeHZ| permet de lancer la batterie de tests. Il lance automatiquement tous les tests pr<70>sents dans le r<>pertoire courant et ses sous-r<>pertoires. Un test est un r<>pertoire dont le nom commence par \verb|Test_R| ou \verb|Test_L| (voir section \ref{section_organisation_tests}). Le script peut \^etre lanc<6E> dans n'importe quel r<>pertoire contenant le r<>pertoire \verb|Perl|. Il produit un rapport de tests pour les tests \verb|Test_R| (tests rapides) et un rapport pour les tests \verb|Test_L| (tests longs). Ces rapports sont contenus dans le r<>pertoire \verb|Rapport| (<28>ventuellement cr<63><72> si il n'existe pas au lancement) sous le nom \verb|rapport_test_R.txt| et \verb|rapport_test_L.txt|. Le script affiche automatiquement ces rapports si l'<27>diteur de texte \verb|nedit| est disponible.
Le script \verb|verifier_exeHZ| prend un argument : le nom de l'ex<65>cutable Herezh++. Typiquement, cet ex<65>cutable est pr<70>sent dans un r<>pertoire point<6E> par la variable environnement \verb|$PATH|. Mais on peut <20>galement donner un chemin absolu ou relatif.\\
Exemples :
\begin{itemize}
\item[$\bullet$] cas d'un ex<65>cutable accessible via la variable environnement \verb|$PATH| :
\begin{itemize}
\item[] \verb|verifier_exeHZ HZppfast_Vn-1|
\item[] \verb|verifier_exeHZ HZppfast64|
\end{itemize}
\item[$\bullet$] cas d'un ex<65>cutable sp<73>cifi<66> par un chemin absolu ou relatif :
\begin{itemize}
\item[] \verb|verifier_exeHZ /Users/dupont/bin/HZpp|
\item[] \verb|verifier_exeHZ ./HZppfast|
\item[] \verb|verifier_exeHZ ../mon_rep/HZppfast|\\
\end{itemize}
\end{itemize}
La proc<6F>dure pour lancer la batterie est donc :
\begin{itemize}
\item[1-] se placer dans un r<>pertoire contenant des tests et le r<>pertoire \verb|Perl|.
\item[2-] ex<65>cuter le script \verb|verifier_exeHZ| en lui indiquant l'ex<65>cutable <20> tester
\end{itemize}
%
%
\clearpage
\newpage
\section{Organisation des tests}\label{section_organisation_tests}
%%
\subsection{Classement des tests}\label{section_classement_tests}
On distingue actuellement deux sortes de tests selon le temps de calcul : les tests "Rapides" et les tests "Longs". A titre indicatif, un test "Rapide" est suppos<6F> durer moins de 30 secondes. Chaque test est contenu dans un r<>pertoire dont le nom commence par \verb|Test_R| (test rapide) ou par \verb|Test_L| (test long). Les r<>pertoires de tests sont rang<6E>s dans le r<>pertoire \verb|Batterie| selon l'arborescence montr<74>e sur la figure \ref{arbo_tests}. Le classement actuel est le suivant :
\begin{itemize}
\item[$\bullet$] \verb|FONCTION_UNIQUE| : r<>pertoire d<>di<64> au simple test d'une fonctionnalit<69> (une loi de comportement, un mode de calcul, un type d'<27>l<EFBFBD>ment, ...). En g<>n<EFBFBD>ral, ce sont des tests "Rapides".
\item[$\bullet$] \verb|CALCUL_COMPLET| : exemples complets issus par exemple de travaux de recherche ou applications industrielles (par exemple : une mise en forme de t\^ole, un essai de traction avec localisation, un d<>ploiement de structure souple, ...). En g<>n<EFBFBD>ral, ce sont des tests "Longs".
\item[$\bullet$] \verb|AUTRE| : tests difficiles <20> classer. Ce r<>pertoire peut aussi servir de lieu de d<>p\^ot temporaire avant transfert vers une rubrique d<>di<64>e.
\end{itemize}
\begin{figure}[!h]
\centering
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.5)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node[draw] {Batterie}
child { node[draw, anchor=west] {FONCTION\_UNIQUE}
child { node[draw, anchor=west] {CHARGEMENT}}
child { node[draw, anchor=west] {CONTACT}}
child { node[draw, anchor=west] {CONDITIONS\_LIMITES}}
child { node[draw, anchor=west] {LOI\_DE\_COMPORTEMENT}}
child { node[draw, anchor=west] {TYPE\_DE\_CALCUL}}
child { node[draw, anchor=west] {UTILITAIRES}}
}
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child { node[draw, anchor=west] {CALCUL\_COMPLET}}
child { node[draw, anchor=west] {AUTRE}};
\end{tikzpicture}
\caption{Arborescence des tests dans le r<>pertoire Batterie}
\label{arbo_tests}
\end{figure}
%%
\clearpage
\newpage
\subsection{Lancement et v<>rification d'un test}
%%%%
\subsubsection{Lancement des calculs}
Le script \verb|verifier_exeHZ| a pour fonction de rechercher tous les r<>pertoires de tests (r<>pertoires commen<65>ant par \verb|Test_R| ou \verb|Test_L|. Chaque r<>pertoire de test contient un unique fichier \verb|.info| et un certain nombre $N$ de fichiers \verb|.CVisu|[i] o<> [i] est un num<75>ro de 1 <20> $N$. Pour chaque fichier \verb|.CVisu|[i], un calcul est lanc<6E>. Le premier calcul est celui correspondant au fichier \verb|.CVisu1|. Les calculs suivants pour [i]$>$1 sont des RESTART du calcul pr<70>c<EFBFBD>dent <20> partir du dernier incr<63>ment sauvegard<72> (selon option \verb|SAUVEGARDE| du fichier \verb|.info|).\\
Pour chaque calcul, un <20>ventuel fichier d'extension \verb|.commande|[i] contient des commandes interactives pour r<>pondre aux diff<66>rents menus interactifs propos<6F>s par Herezh++. Par d<>faut, un calcul Herezh est ex<65>cut<75> avec l'option \verb|-f| suivie du nom du fichier \verb|.info| (calcul classique). Si le fichier \verb|.info| ne contient pas le mot-cl<63> \verb|dimension|, l'option utilis<69>e est \verb|-n| suivie du fichier \verb|.info| (cr<63>ation interactive d'un fichier .info). Il est <20>galement possible de d<>finir compl<70>tement les arguments donn<6E>s <20> Herezh++ dans un fichier \verb|.argument|[i].
%%%%
\subsubsection{V<EFBFBD>rification}
Pour chaque calcul, une v<>rification est faite pour d<>terminer si le test est r<>ussi ou non. Le rapport de test contient les indicateurs \verb|OK| ou \verb|ECHEC|. Il y a actuellement 3 types de v<>rification possible :
\begin{itemize}
\item[$\bullet$] comparaison des donn<6E>es sorties au format maple :
\begin{itemize}
\item[] il s'agit du mode de v<>rification par d<>faut. Le fichier \verb|.CVisu|[i] d<>finit les sorties au format maple. Le r<>pertoire de test contient alors un fichier \verb|.maple.ref|[i] qui d<>finit les valeurs de r<>f<EFBFBD>rence. Si l'<27>cart absolu et relatif entre les donn<6E>es de r<>f<EFBFBD>rence et les donn<6E>es du calcul sont inf<6E>rieures <20> une tol<6F>rance, alors le test est r<>ussi. Les tol<6F>rances par d<>faut sont en absolu 1e-6 et en relatif 1e-3. Il est possible de choisir librement les tol<6F>rances dans un fichier \verb|.precision|[i]\\
\bf IMPORTANT : \rm si les fichiers \verb|.maple| et \verb|.maple.ref| contiennent plusieurs lignes de donn<6E>es, seule la derni<6E>re ligne est trait<69>e\\
\end{itemize}
\item[$\bullet$] comparaison libre d<>finie par un script :
\begin{itemize}
\item[] la v<>rification peut \^etre librement d<>fini par un script qui a pour fonction de renvoyer \verb|OK| ou \verb|ECHEC|. Ce script est un fichier ex<65>cutable d'extension \verb|.verif|[i], signifiant que le calcul n<>[i] sera v<>rifi<66> par un script libre.\\
\end{itemize}
\item[$\bullet$] v<>rification simple de l'ex<65>cution :
\begin{itemize}
\item[] en l'absence de fichier \verb|.maple.ref| ou de script \verb|.verif|, la v<>rification est consid<69>r<EFBFBD>e \verb|OK| si le calcul s'est lanc<6E> normalement et termin<69> normalement (que le calcul ait converg<72> ou non).
\end{itemize}
\end{itemize}
%%
\subsection{Contenu d'un r<>pertoire de tests}\label{section_contenu_repertoire_test}
Un r<>pertoire de tests contient des fichiers obligatoires et des fichiers facultatifs.\\
Les fichiers obligatoires sont :
\begin{itemize}
\item[$\bullet$] un fichier \verb|README| (informations sur le test, voir trame figure \ref{format_fichier_README})
\item[$\bullet$] un \bf unique \rm fichier \verb|.info| (<28>ventuellement vide dans certains cas)
\item[$\bullet$] les fichiers \verb|.CVisu|[i] (<28>ventuellement vides dans certains cas)
\item[$\bullet$] tous les fichiers n<>cessaires <20> l'ex<65>cution des calculs (maillage \verb|.her|, etc...)\\
\end{itemize}
Les fichiers facultatifs en lien avec l'ex<65>cution d'un test sont :
\begin{itemize}
\item[$\bullet$] les fichiers maple de r<>f<EFBFBD>rence (fichiers d'extension \verb|.maple.ref|[i])
\item[$\bullet$] les fichiers de pr<70>cision (fichiers d'extension \verb|.precision|[i])
\item[$\bullet$] les fichiers de commandes interactives (fichiers d'extension \verb|.commande|[i])
\item[$\bullet$] les scripts de v<>rification libre (fichiers ex<65>cutables d'extension \verb|.verif|[i])
\item[$\bullet$] les fichiers donnant les arguments <20> l'ex<65>cutable Herezh++ (fichiers~d'extension~\verb|.argument|[i])\\
\end{itemize}
D'autres fichiers facultatifs peuvent \^etre contenus dans un r<>pertoire de test. Il n'y a pas de restriction mis <20> part qu'un r<>pertoire de test ne doit pas contenir des fichiers trop lourd en terme d'espace disque. Typiquement, il peut \^etre utile d'ajouter les fichiers suivants :
\begin{itemize}
\item[$\bullet$] des fichiers de mise en donn<6E>es du test pour d'autres codes de calcul (par exemple : fichier \verb|.inp| pour Abaqus)
\item[$\bullet$] des fichiers donnant des r<>sultats donn<6E>s par d'autres codes de calcul ou par des solutions analytiques (bien que le fichier \verb|README| puisse \^etre utilis<69> pour <20>crire ces donn<6E>es)
\end{itemize}
%%
\subsection{Ajout d'un nouveau test}
\subsubsection{Vue d'ensemble}
Globalement, cr<63>er un nouveau test consiste <20> ajouter un nouveau r<>pertoire dans le r<>pertoire \verb|Batterie|. Le choix de son emplacement dans l'arborescence est libre en s'inspirant tout de m\^eme des descriptifs donn<6E>s en section \ref{section_classement_tests}. Le contenu du r<>pertoire est celui d<>fini en section \ref{section_contenu_repertoire_test}.
Les fichiers facultatifs d<>pendent du type de traitement Herezh++. Dans tous les cas, l'arborescence du r<>pertoire de test est de la forme montr<74>e sur la figure \ref{arbo_repertoire_test} et les r<>gles suivantes sont <20> respecter :
\begin{itemize}
\item[$\bullet$] Le nom du nouveau r<>pertoire est choisi en utilisant uniquement les lettres de a <20> z, les chiffres de 0 <20> 9, le signe moins (-) et le tiret bas (\_). Si le test est un test "Rapide" (moins de 30 secondes), le nom commence par \verb|Test_R|, sinon il commence par \verb|Test_L|.
\item[$\bullet$] Un seul fichier d'extension \verb|.info| doit \^etre pr<70>sent dans le r<>pertoire. Ce fichier doit \^etre pr<70>sent m\^eme s'il est vide.
\item[$\bullet$] tous les fichiers \verb|.CVisu|[i] et les fichiers facultatifs n<>cessaires <20> l'ex<65>cution d'un test (\verb|.verif|[i], \verb|[i].commande|, etc...) ont la m\^eme racine que le fichier \verb|.info| (par exemple, si on a le fichier \verb|nom_fichier.info|, l'<27>ventuel fichier \verb|.verif1| doit avoir pour nom \verb|nom_fichier.verif1|)
\item[$\bullet$] Pour chaque calcul, il est n<>cessaire de cr<63>er un fichier \verb|.CVisu| (\verb|.CVisu1|, \verb|.CVisu2|, etc...) m\^eme si celui-ci est vide. Ces fichiers servent non seulement <20> Herezh++ mais <20>galement au script \verb|Perl/test.pl| pour rep<65>rer les calculs <20> lancer (un calcul par fichier \verb|.CVisu|).
\item[$\bullet$] le fichier \verb|README| contient obligatoirement les rubriques "\it But du test\rm " et "\it Description du calcul\rm " montr<74>es sur la figure \ref{format_fichier_README}. Ces deux rubriques serviront <20> g<>n<EFBFBD>rer automatiquement une documentation pdf (catalogue de tests).\\
\end{itemize}
\begin{figure}[!h]
\centering
\begin{tikzpicture}[%
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.5)},
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
\node[draw] {Test\_[RL]\_nom\_repertoire}
child { node[draw, anchor=west] {README}}
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.info}}}
child[missing] { }
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}1}}}
child[missing] { }
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}2}}}
child { node[anchor=west] {.}}
child { node[anchor=west] {.}}
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}N}}}
child[missing] { }
child { node[draw, anchor=west] {(*) autres fichiers facultatifs}};
\end{tikzpicture}\\
\hspace*{-5.cm}\small (*) fichiers facultatifs\normalsize
\caption{Contenu d'un r<>pertoire de test}
\label{arbo_repertoire_test}
\end{figure}
%%%%
\subsubsection{Fichiers obligatoires}
\begin{itemize}
\item[$\bullet$] \verb|README| :\\
La trame du fichier est montr<74>e sur la figure \ref{format_fichier_README}. La syntaxe de l'intitul<75> des deux rubriques obligatoires (en bleu) doit \^etre strictement respect<63>e. Les autres rubriques sont indiqu<71>es <20> titre de proposition et pour des questions d'harmonie sur la forme d'un test <20> l'autre.\\
\item[$\bullet$] \verb|.info| :\\
Ce fichier est obligatoire mais peut \^etre vide (par exemple dans le cas d'un cr<63>ation de fichier \verb|.info| avec l'option Herezh \verb|-n|).\\
\item[$\bullet$] \verb|.CVisu|[i] :\\
La pr<70>sence de ces fichiers est obligatoire mais ils peuvent \^etre vides <20> partir du moment o<> le but du test n'est pas de comparer des r<>sultats Herezh maple ou Gmsh
\end{itemize}
%%%%
\subsubsection{Fichiers facultatifs}
\begin{itemize}
\item[$\bullet$] \verb|| :
\end{itemize}
%%%%
\subsubsection{Calcul classique : comparaison de donn<6E>es maple}
\clearpage
\newpage
\begin{figure}[!h]
{\color{blue}
\begin{verbatim}
------------------------------------------------------------
But du test
------------------------------------------------------------
du texte...
------------------------------------------------------------
Description du calcul
------------------------------------------------------------
du texte...
\end{verbatim}
}
\begin{verbatim}
------------------------------------------------------------
Mots-cles
------------------------------------------------------------
du texte...
------------------------------------------------------------
Grandeurs de comparaison
------------------------------------------------------------
du texte...
------------------------------------------------------------
Informations sur les fichiers facultatifs
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des solutions analytiques
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des codes de calcul
------------------------------------------------------------
du texte...
\end{verbatim}
\caption{Trame du fichier README pr<70>sent dans chaque r<>pertoire de test. \underline{Les deux rubriques en bleu sont obligatoires}}
\label{format_fichier_README}
\end{figure}
\clearpage
\newpage
{\color{red} Le document "???toto.pdf???" est le catalogue des tests actuellement pr<70>sents dans la batterie. Il d<>crit succinctement la nature d'un test (but du test et description du calcul). Dans chaque r<>pertoire de test, un fichier 1README.txt donne des informations sur le test (But du test, Description du calcul, Grandeurs de comparaison, Informations sur les fichiers facultatifs, Comparaison avec des solutions analytiques, Comparaison avec des codes de calcul). C'est <20> partir de cette documentation locale que le document global "???toto.pdf???" est construit, en reprenant le contenu des rubriques "But du test" et "Description du calcul".\\
Le fichier 1README.txt de chaque test a le format montr<74> sur la figure \ref{formet_fichier_1README}. {\color{red} Probl<62>me des accents dans un fichier ASCII. Les accents et apostrophes sont reconnus pour poser des probl<62>mes dans les fichiers ASCII. Mais si on choisit de ne pas les mettre, la construction du catalogue de test va \^etre r<>dig<69>e dans un mauvais fran<61>ais. proposition : <20>crire les fichiers 1README.txt, donc le catalogue des tests, en anglais (risqu<71> mais efficace) et sans apostrophes}.\\
D<EFBFBD>tail du contenu des rubriques :
\begin{itemize}
\item[$\bullet$] But du test (rubrique obligatoire) :
\begin{itemize}
\item[ ] Indiquer de mani<6E>re pr<70>cise et concise quelle est la ou les fonctionnalit<69>s de Herezh qui sont test<73>es et pr<70>ciser si une grandeur de sortie est particuli<6C>rement <20> surveiller (<28> noter que le test n'a pas forc<72>ment pour but de tester une fonction particuli<6C>rement, voir le 3<>me exemple ci-dessous)
\item[+] Exemples :
\begin{itemize}
\item[-] test du mot-cle non\_dynamique
\item[-] test de la loi de comportement MOONEY\_RIVLIN\_3D en cisaillement simple
\item[-] exemple d application industrielle : pas de test particulier
\item[-] verification de la contrainte SIG11 apres 3 cycles charge-decharge pour une loi additive ISOHYPER3DORGEAS1 + HYSTERESIS\_3D
\end{itemize}
\end{itemize}
\item[$\bullet$] Description du calcul (rubrique obligatoire) :
\begin{itemize}
\item[ ] D<>tails techniques sur le calcul (r<>sum<75> du probl<62>me, conditions limites (sym<79>tries), loi de comportement, chargement, etc...). Dans cette rubrique, on explique ce qui est simul<75> et comment avec toutes les informations n<>cessaires pour comprendre le calcul et pointer des points particuliers. On peut par exemple d<>crire le calcul en quelques phrases et ensuite s'inspirer de l'ordre du fichier \verb|.info| pour hi<68>rarchiser les d<>tails techniques
\item[+] Exemple :
\begin{itemize}
\item[ ] simulation d un essai de traction uniaxiale jusqu a striction sur une eprouvette de longueur 200, de largeur 50 et d epaisseur 1.5 pour une loi de comportement [type de loi]. La striction est obtenue en appliquant une loi de comportement legerement differente dans la zone ou on souhaite obtenir la striction. Pour les elements de cette zone, la loi de comportement a le parametre [nom du parametre] egal a [valeur] tandis qu il est egal a [valeur] pour tous les autres elements. Par symetrie, seul un huitieme de la geometrie est modelise, ce qui donne une geometrie de longueur 100 (suivant X), de largeur 25 (suivant Y) et d epaisseur 0.75 (suivant Z).
\begin{itemize}
\item[-] maillage (avec Gmsh) constitue de 5000 elements HEXAEDRE LINEAIRE a un seul point d integration (maille plus finement dans la zone de striction)
\item[-] loi de comportement de type [indiquer les mot-cles Herezh par exemple] pour le set d element [nom du set 1]
\item[-] loi de comportement de meme type que precedemment mais avec [decrire le parametre different] pour le set d element [nom du set 2]
\item[-] chargement par deplacement impose de 9.5 suivant X des noeuds en X=100 (la courbe de charge [nom de la courbe] pilote ce deplacement)
\item[-] conditions de blocage prenant en compte les symetries :\\
- blocage suivant X des noeuds du plan X=0\\
- blocage suivant Y des noeuds du plan Y=0\\
- blocage suivant Z des noeuds du plan Z=0
\end{itemize}
\end{itemize}
\end{itemize}
\item[$\bullet$] Grandeurs de comparaison :
\begin{itemize}
\item[ ] Il s'agit de r<>sumer les grandeurs importantes du \verb|.maple|. L'utilisateur voulant conna\^itre l'ensemble des grandeurs pourra toujours consulter le fichier \verb|.maple.ref|. Cette rubrique est l'occasion de donner des d<>tails suppl<70>mentaires <20> ceux d<>j<EFBFBD> pr<70>sents dans le \verb|.maple.ref|.
\begin{itemize}
\item[+] Exemples :
\begin{itemize}
\item[ ] deplacement au noeud [no] (noeud au fond de l entaille)\\
\hspace*{1.2cm}- grandeur : U2
\item[ ] contrainte dans le sens de traction au point d integration [no] de l element [no]\\
\hspace*{1.2cm}- grandeur : SIG22
\end{itemize}
\end{itemize}
\end{itemize}
\item[$\bullet$] Informations sur les fichiers facultatifs :
\begin{itemize}
\item[ ] Il s'agit de donner une description succinte des fichiers non indispensables au calcul Herezh
\end{itemize}
\item[$\bullet$] Comparaison avec des solutions analytiques :
\begin{itemize}
\item[ ] Cette rubrique permet de donner toutes les informations n<>cessaires <20> la comparaison entre le calcul Herezh et des solutions analytiques. Soit on <20>crit directement ici les formules et r<>sultats, soit on fait r<>f<EFBFBD>rence <20> des fichiers pr<70>sents dans le r<>pertoire. Ne pas oublier de nommer explicitement les grandeurs Herezh <20> comparer (SIG11, X1, etc...) et les valeurs obtenues avec la solution analytique.
\end{itemize}
\item[$\bullet$] Comparaison avec des codes de calcul :
\begin{itemize}
\item[ ] Cette rubrique permet de donner toutes les informations n<>cessaires <20> la comparaison entre le calcul Herezh et le calcul avec d'autres codes de calcul. Soit on <20>crit directement ici les r<>sultats, soit on fait r<>f<EFBFBD>rence <20> des fichiers pr<70>sents dans le r<>pertoire. Ne pas oublier de nommer explicitement les grandeurs Herezh <20> comparer (SIG11, X1, etc...) et les valeurs obtenues par l'autre code de calcul.
\end{itemize}
\end{itemize}
}
%%
\section{Fonctionnement}\label{section_2}
\subsection{Importation du r<>pertoire de v<>rification depuis CVS}
\begin{verbatim}
> cvs co Verif_Herezh
\end{verbatim}
%%
\subsection{Execution de la v<>rification}
Le script \verb|verifier_exeHZ| permet de lancer la v<>rification en utilisant l'ex<65>cutable Herezh++ de son choix. Le premier argument donn<6E> est le nom de cet ex<65>cutable. Par exemple :
\begin{verbatim}
> verifier_exeHZ HZppfast_Vn-1
\end{verbatim}
{\color{red} On aimerait que ce script puisse avoir deux r\^oles} :
\begin{itemize}
\item r\^ole principal : lancer la v<>rification du code (tous les tests {\color{red} ou une partie seulement des tests})
\item {\color{red} r\^ole secondaire : permettre <20> quelqu'un qui vient d'ajouter un test de v<>rifier si ce test fonctionne (sans lancer toute la batterie)}\\
\end{itemize}
Le script \verb|verifier_exeHZ| cherche les r<>pertoires de tests dans \underline{toute l'arborescence depuis l'endroit o<> la commande est ex<65>cut<75>e}. Tout r<>pertoire dont le nom commene par \verb|Test_R| ou \verb|Test_L| est consid<69>r<EFBFBD> comme <20>tant un r<>pertoire de test. {\color{red} Actuellement, il n'est pas possible de lancer cette commande ailleurs que dans le r<>pertoire o<> se trouve les r<>pertoires \verb|Perl| et \verb|Rapport|. Moyens d'y rem<65>dier :
\begin{itemize}
\item solution 1 : utiliser les scripts actuels mais c'est <20> la charge de l'utilisateur de faire en sorte que \verb|verifier_exeHZ| trouve l'acc<63>s aux scripts contenus dans \verb|Perl| (l<>g<EFBFBD>re modif de \verb|verifier_exeHZ| pour pouvoir renseigner des variables de chemin par exemple)\\
Inconv<EFBFBD>nient : il y a le risque qu'un utilisateur qui "commit" le projet avec certains param<61>tres dans \verb|verifier_exeHZ|, modifie les param<61>tres de \verb|verifier_exeHZ| des autres membres du projet lorsqu'ils feront un "update -dP"
\item solution 2 : plut\^ot que d'avoir plusieurs scripts, on les concat<61>ne en un seul script auto-suffisant (le script s'appellera toujours \verb|verifier_exeHZ| mais r<><72>crit en perl et les scripts contenus dans le r<>pertoire \verb|Perl| seront disponibles sous forme de subroutine au sein de \verb|verifier_exeHZ|)\\
\end{itemize}
}%fin color{red}
Un r<>pertoire de test contient un ou plusieurs fichiers de sortie \verb|.CVisu[no]| (num<75>rot<6F> <20> partir de 1). Un calcul par fichier \verb|.CVisu[no]| est fait lors de la v<>rification. {\color{red} A l'origine, le fonctionnement <20>tait de v<>rifier une seule valeur <20> la fois. Mais ce mode de fonctionnement n'est pas forc<72>ment utile d<>sormais car le script \verb|test.pl| peut d<>sormais comparer plusieurs valeurs <20> la fois. Donc, autant faire un seul \verb|.CVisu| avec toutes les valeurs d'un coup.} Chaque calcul g<>n<EFBFBD>re un fichier \verb|.maple|. Un fichier de r<>f<EFBFBD>rence d'extension \verb|.maple.ref[no]| sert de comparaison (un fichier de r<>f<EFBFBD>rence par \verb|.CVisu|). Le nombre de grandeur en sortie est quelconque mais les fichiers \verb|.maple| ne doivent contenir qu'une seule ligne de donn<6E>es.
%%
\subsection{Rapport de v<>rification}
Pour chaque grandeur de sortie de chaque calcul de chaque test, la comparaison est valide si l'<27>cart entre la grandeur en sortie du calcul et celle <20>crite dans le fichier de r<>f<EFBFBD>rence est inf<6E>rieur <20> une tol<6F>rance absolue et une tol<6F>rance relative. Le script \verb|verifier_exeHZ| g<>n<EFBFBD>re un rapport pour les tests rapides et un rapport pour les tests longs. Les rapports g<>n<EFBFBD>r<EFBFBD>s indiquent la validit<69> (indicateur : OK) ou l'<27>chec (indicateur : ECHEC) pour chaque grandeur (rep<65>r<EFBFBD>e par son num<75>ro de colonne dans le fichier \verb|.maple|). L'affichage produit indique le chemin du r<>pertoire de test, le no du fichier \verb|.CVisu| et les num<75>ros de colonnes de chaque grandeur. Par exemple :
\begin{verbatim}
./[chemin]/Test_[type]_[nom]/.CVisu[no]
-> grandeur testee : colonne [1]
- comparaison absolue (precision : 1e-12) -> OK
- comparaison relative (precision : 1e-05%) -> OK
.
.
.
-> grandeur testee : colonne [i<>me colonne]
- comparaison absolue (precision : 1e-12) -> ECHEC
- comparaison relative (precision : 1e-05%) -> OK
\end{verbatim}
Les pr<70>cisions figurent dans le script \verb|Perl/test.pl| et les valeurs de tol<6F>rance actuelles sont :
\begin{verbatim}
my $PREC_ABSOLU = 1.e-12;#precision pour la comparaison absolue
my $PREC_RELATIVE_POURCENT = 1.e-5;#precision pour la comparaison relative (en pourcent)
\end{verbatim}
{\color{red} }
%%
\section{D<EFBFBD>finition d'un r<>pertoire de test}\label{section_3}
Un test est constitu<74> d'un r<>pertoire contenant des fichiers obligatoires et des fichiers facultatifs. Les fichiers obligatoires sont destin<69>s <20> comparer deux versions de Herezh et sont les fichiers utilis<69>s pour le fonctionnement de la v<>rification automatis<69>e.
{\color{red} Dans les fichiers facultatifs, on trouve le ou les fichiers permettant d'affecter des valeurs particuli<6C>res aux pr<70>cisions pour la comparaison (fichiers \verb|.precision|). Les fichiers facultatifs sont aussi destin<69>s <20> la comparaison avec d'autres codes de calcul ou des solutions analytiques. La comparaison avec d'autres codes ou des solutions analytiques n'est pas automatis<69>e. C'est l'utilisateur qui doit faire cette comparaison "manuellement". Dans la mesure du possible, il faut fournir les fichiers permettant de re-g<>n<EFBFBD>rer les r<>sultats (une mise en donn<6E>es Abaqus \verb|.inp| par exemple, ou un script de calcul d'une solution analytique) et surtout une synth<74>se des r<>sultats donn<6E>s sous forme de texte (soit un fichier s<>par<61> pdf ou texte, soit directement dans le fichier obligatoire 1README.txt) et pr<70>ciser la version du logiciel de comparaison.}\\
Un test a les caract<63>ristiques suivantes :
\begin{itemize}
\item un nom de r<>pertoire choisi en respectant certaines r<>gles
\item des fichiers
\end{itemize}
%%
\subsection{Nom du r<>pertoire}\label{section_3_subsection_1}
Un r<>pertoire de test a un nom de la forme (respecter la casse) : \verb|Test_[duree]|{\color{red} \verb|_[dim]|}\verb|_[nom]|
avec :
\begin{itemize}
\item \verb|[duree]| : indicateur de la dur<75>e du calcul (Rapide ou Long) ; valeur = R ou L
\item (*) {\color{red} \verb|[dim]| : indication sur la dimension du probl<62>me ; valeur = 1D, 2D, 3D ou AXI}
\item (**) \verb|[nom]| : nom du test
\item[ ]
\item[ ] \footnotesize (*) le champ \verb|[dim]| n'existe pas si on utilise une arborescence de classement avec des r<>pertoires 1D, 2D, 3D, AXI (voir section \ref{section_1_subsection_2})\normalsize
\item[ ] \footnotesize (**) le champ \verb|[nom]| est choisi librement except<70>es les r<>gles suivantes : ne doit pas contenir d'espaces, <20>viter si possible d'utiliser un mot-cl<63> Herezh, {\color{red} autres r<>gles...}\normalsize\\
\end{itemize}
%%
\subsection{Choix de son emplacement dans l'arborescence de la batterie}\label{section_3_subsection_2}
\begin{itemize}
\item[$\bullet$] tests rapides d<>di<64>s <20> la v<>rification d'un mot-cl<63>\\
$\Rightarrow$ r<>pertoire \verb|Batterie/FONCTION_UNIQUE|.
\item[$\bullet$] tests rapides d<>di<64>s <20> la v<>rification d'une combinaison de mot-cl<63>s\\
$\Rightarrow$ r<>pertoire \verb|Batterie/FONCTIONS_COMBINEES|
\item[$\bullet$] calculs complets (exemples complexes)\\
$\Rightarrow$ r<>pertoire \verb|Batterie/CALCUL_COMPLET|
\end{itemize}
%%
\subsection{Contenu du r<>pertoire}\label{section_3_subsection_3}
Un r<>pertoire de test contient les fichiers suivants :
\begin{itemize}
\item[$\bullet$] FICHIERS OBLIGATOIRES :
\begin{itemize}
\item un fichier nomm<6D> \verb|1README.txt| donnant des informations sur le test (voir section \ref{section_1_subsection_3})
\item un seul fichier de calcul \verb|.info| (*) de nom : \verb|[nom_calcul].info| (**)
\item un ou plusieurs fichiers \verb|.CVisu| num<75>rot<6F>s <20> partir de 1 : \verb|[nom_calcul].CVisu1|, \verb|[nom_calcul].CVisu2|, ...
\item autant de fichiers de r<>f<EFBFBD>rence \verb|.maple.ref| qu'il y a de fichiers \verb|.CVisu| avec la m\^eme num<75>rotation que les fichiers \verb|.CVisu| : \verb|[nom_calcul].maple.ref1|, \verb|[nom_calcul].maple.ref2|, ...
\item tous les fichiers n<>cessaires au fonctionnement du calcul (fichiers appel<65>s dans le fichier \verb|.info|. Par exemple : les fichiers de maillage). Attention <20> l'extension de ces fichiers (*) (***)
\item[ ]
\item[ ] \footnotesize (*) le r<>pertoire doit absolument contenir \underline{un seul fichier ayant l'extension .info} pour des raisons de fonctionnement des scripts de v<>rification\normalsize
\item[ ] \footnotesize (**) le champ \verb|[nom_calcul]| est choisi librement except<70>es les r<>gles suivantes : ne doit pas contenir d'espaces, <20>viter si possible d'utiliser un mot-cl<63> Herezh, {\color{red} autres r<>gles...}\normalsize
\item[ ] \footnotesize (***) Attention : l'extension \verb|.precision| est r<>serv<72>e aux fichiers d<>finissant les pr<70>cisions de test\normalsize\\
\end{itemize}
{\color{red}
\item[$\bullet$] FICHIERS FACULTATIFS :
\begin{itemize}
\item {\color{red} fichiers d'extension \verb|.precision[no]| contenant les pr<70>cisions absolue et relative de chaque grandeur (<28> num<75>roter pour affecter un fichier de pr<70>cision <20> tel ou tel fichier \verb|.CVisu|)}
\item des fichiers de calcul et de r<>sultats issus d'autres codes de calcul (****)
\item des fichiers donnant une solution analytique du test (par exemple : documentation en pdf, script de calcul, etc...)
\item[ ]
\item[ ] \footnotesize (****) Ne pas oublier de pr<70>ciser la version de ces codes de calcul (par exemple dans le fichier 1README.txt dans la rubrique "Comparaison avec des codes de calcul")\normalsize
\item[ ]
\item[ ] \footnotesize \underline{Remarque} : que soit pour une comparaison avec un autre code de calcul ou une solution analytique, il faut faire attention au fait que Herezh fait toujours des calculs non-lin<69>aires et que par d<>faut la mesure de d<>formation est celle d'Almansi\normalsize\\
\end{itemize}
}
\end{itemize}
{\color{red}
Les fichiers facultatifs de pr<70>cision ont le format suivant :
\begin{verbatim}
#eventuellement des commentaires...
[no colonne] prec_absolue prec_relative
.
.
.
#eventuellement des commentaires...
[no colonne] prec_absolue prec_relative
\end{verbatim}
Il n'est pas n<>cessaire de fournir une pr<70>cision pour chacune des grandeurs. Par contre, pour chaque ligne d<>clar<61>e, il faut fournir la pr<70>cision absolue et la pr<70>cision relative. Par d<>faut, les pr<70>cisions sont \verb|prec_absolue|=1.e-12 et \verb|prec_relative|=1.e-5. Par exemple, si un fichier \verb|.maple| contient les grandeurs suivantes <20> un point d'int<6E>gration :
\begin{verbatim}
temps X Y Z SIG11
\end{verbatim}
o<EFBFBD> \verb|X|, \verb|Y|, \verb|Z| sont les positions du point d'int<6E>gration.\\
On peut ne sp<73>cifier les pr<70>cisions que pour la contrainte \verb|SIG11| en cr<63>ant le fichier suivant :
\begin{verbatim}
#precision pour la contrainte SIG11
[5] 1.e-6 1.e-3
\end{verbatim}
Les autres grandeurs \verb|temps|, \verb|X|, \verb|Y| et \verb|Z| seront compar<61>es en utilisant les pr<70>cisions par d<>faut.
}
%%
\section{Ajout d'un nouveau test}\label{section_4}
Pour ajouter un test, il est n<>cessaire de conna\^itre quelques commandes CVS de base et de suivre une proc<6F>dure d'ajout.
%%
\subsection{Commandes usuelles CVS}\label{section_4_subsection_1}
\begin{itemize}
\item[$\bullet$] importer le projet : \verb|cvs co Verif_Herezh|
\item[$\bullet$] actualiser sa version locale du projet : \verb|cvs update -dP| (*)
\item[$\bullet$] ajouter un fichier ou un r<>pertoire :
\begin{itemize}
\item fichier texte : \verb|cvs add nom_fichier|
\item fichier binaire : \verb|cvs add -kb nom_fichier|
\end{itemize}
\item[$\bullet$] effacer un fichier (**) :
\begin{itemize}
\item[1)] effacer le fichier \verb|nom_fichier|
\item[2)] \verb|cvs remove nom_fichier|
\end{itemize}
\item[]
\item[] \footnotesize (*) \underline{Toujours actualiser sa version locale avant de modifier le projet}. Cette commande actualise le r<>pertoire courant ainsi que tous ses sous-r<>pertoires\normalsize
\item[] \footnotesize (**) a priori, c'est la m\^eme d<>marche pour effacer un r<>pertoire, bien qu'il soit souvent constat<61> que le r<>pertoire effac<61> persistait\normalsize\\
\end{itemize}
%%
\subsection{Proc<EFBFBD>dure d'ajout}\label{section_4_subsection_2}
\begin{itemize}
\item[$\bullet$] cr<63>er les fichiers de calcul, de sortie et de r<>f<EFBFBD>rence
\begin{itemize}
\item[] Dans un r<>pertoire quelconque n'appartenant pas au projet CVS, on cr<63>e un fichier de calcul \verb|.info|, un ou plusieurs fichiers de sortie \verb|.CVisu[no]| (num<75>rot<6F>s <20> partir de 1) ainsi que tous les fichiers indispensables au lancement du calcul. Les fichiers \verb|.CVisu[no]| sont cr<63><72>s de mani<6E>re <20> ne faire que des sorties \verb|.maple| (choix 4 dans le menu interactif Herezh). Dans le fichier \verb|.info|, on sp<73>cifie l'option "\verb|avec plus visualisation|" ou "\verb|avec plus lectureCommandesVisu|". Pour chaque fichier \verb|.CVisu[no]|, on lance le calcul pour g<>n<EFBFBD>rer un fichier \verb|.maple| auquel on ajoute l'extension \verb|.ref[no]| apr<70>s \verb|.maple| (o<> \verb|[no]| est le m\^eme num<75>ro que le \verb|.CVisu| correspondant).
\end{itemize}
\item[$\bullet$] se positionner dans le r<>pertoire \verb|Batterie| du projet CVS
\item[$\bullet$] actualiser la version du projet : \verb|cvs update -dP|
\item[$\bullet$] cr<63>er un r<>pertoire d<>di<64> au test en respectant la convention sur le nom : \verb|Test_[duree]_[dimension]_[nom]|
\item[$\bullet$] recopier les fichiers de calcul, de sortie \verb|.CVisu[no]| et de r<>f<EFBFBD>rence \verb|.maple.ref[no]| dans ce r<>pertoire
\item[$\bullet$] recopier d'<27>ventuels fichiers facultatifs (fichier de pr<70>cision \verb|.precision|, solutions analytiques, mises en donn<6E>es et r<>sultats pour d'autres codes de calcul, ...)
\item[$\bullet$] cr<63>er le fichier 1README.txt selon la trame donn<6E>e en section \ref{section_1_subsection_3}
\item[$\bullet$] ajouter le nouveau r<>pertoire et ses fichiers au projet CVS : \verb|cvs add ...|
\item[$\bullet$] enregistrer les modifications du projet (se placer dans le r<>pertoire \verb|Batterie|, puis \verb|cvs commit -m 'ajout nouveau test dans Batterie, ... autres commentaires ...'|\\
\end{itemize}
Voir section \ref{section_3} pour plus d'informations notamment sur la convention sur le nom du r<>pertoire (section \ref{section_3_subsection_1}), le choix de l'emplacement du test dans l'arborescence (section \ref{section_3_subsection_2}) ou le contenu du r<>pertoire de test (section \ref{section_3_subsection_3}).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{<EFBFBD>volution des mises <20> jour} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
\end{document}