2
0
Fork 0
Verif_Herezh/Doc/doc_procedure_verification.tex

629 lines
34 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
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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 (si possible) 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]. Pour plus d'informations sur les fichiers facultatifs, on peut se r<>f<EFBFBD>rer <20> la section \ref{section_fichiers_facultatifs}.\\
Une fois un test termin<69>, le r<>pertoire du test est restaur<75> dans son <20>tat d'origine (restauration de l'<27>tat initial du fichier \verb|.info| et suppression de tous les fichiers qui n'<27>taient pas pr<70>sents <20> l'origine).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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]. Pour une grandeur $X$ g<>n<EFBFBD>r<EFBFBD>e <20> l'issue du calcul [i] et sa valeur de r<>f<EFBFBD>rence $X_{ref}$ contenue dans le fichier \verb|.maple.ref|[i], le test est r<>ussi si les relations de comparaison suivantes sont respect<63>es :
\begin{equation}
\begin{array}{rrcl}
\text{comparaison absolue :} & |X - X_{ref}| & \leq & \varepsilon_{absolu}\\
\text{comparaison relative :} & \left|\dfrac{X - X_{ref}}{X_{ref}}\right| & \leq & \varepsilon_{relatif}\:\:\:\forall X_{ref} \neq 0
\end{array}
\end{equation}
\\
\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<>finie 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 lourds 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}
\clearpage
\begin{figure}[!h]
{\color{brown}
\begin{verbatim}
------------------------------------------------------------
Auteur
------------------------------------------------------------
liste des auteurs sous la forme : Prenom Nom (email)
remarque : un auteur par ligne
------------------------------------------------------------
Mots-cles
------------------------------------------------------------
liste des mots-cles (un par ligne)
remarque : un mot-cle peut contenir des espaces
(exemple : contraintes planes)
\end{verbatim}
}
{\color{blue}
\begin{verbatim}
------------------------------------------------------------
But du test
------------------------------------------------------------
du texte...
------------------------------------------------------------
Description du calcul
------------------------------------------------------------
du texte...
\end{verbatim}
}
\begin{verbatim}
------------------------------------------------------------
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. {\color{blue} Les rubriques en bleu sont \underline{obligatoires}.} {\color{brown} Les rubriques en marron sont importantes pour la tra<72>abilit<69> des tests mais non obligatoires.}}
\label{format_fichier_README}
\end{figure}
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Recherche de tests}\label{section_recherche_de_tests}
Un document pdf de nom \verb|documentation_tests.pdf| est pr<70>sent <20> la racine du projet CVS. Il dresse la liste actuelle des tests et r<>sume en quelques phrases leur contenu. Un index en fin de document permet de faire une recherche par mot-cl<63>.\\
Ce document est r<>dig<69> automatiquement sur la base du contenus des fichiers README montr<74> sur la figure \ref{format_fichier_README}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Ajout d'un nouveau test}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Vue d'ensemble}
Cr<EFBFBD>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$] 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$] tous les fichiers \verb|.CVisu|[i] et les fichiers facultatifs n<>cessaires <20> l'ex<65>cution d'un test (\verb|.verif|[i], \verb|.commande|[i], 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$] 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). Dans le m\^eme but, les rubriques \it Auteur \rm et \it Mots-cles\rm, qui ne sont pas obligatoires, donnent des informations pr<70>cieuses (merci de les renseigner).
\item[] Remarque importante : ne pas <20>crire des lignes de tirets (\verb|---| et plus) dans le corps d'une rubrique.\\
\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}
La sous-section \ref{section_commandes_CVS} est un rappel des commandes CVS de base. Les sous-sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs} donnent des informations sur les fichiers obligatoires et les fichiers facultatifs en lien avec l'ex<65>cution du test. Notamment, certains fichiers ont un format bien pr<70>cis pour \^etre exploitables. Ensuite, la sous-section \ref{section_exemples_tests} a pour but de balayer les cas les plus courant de tests et de donner des exemples.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Commandes usuelles CVS}\label{section_commandes_CVS}
\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{Fichiers obligatoires}\label{section_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. Il est fortement encourag<61> de renseigner les rubriques \it Auteur \rm et \it Mots-cles\rm. 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. Comme montr<74> sur la figure \ref{format_fichier_README}, chaque titre de rubrique est pr<70>c<EFBFBD>d<EFBFBD> et suivi d'une ligne d'au moins trois tirets (\verb|---| et plus). Les lignes de tirets doivent \^etre r<>serv<72>es aux titres des rubriques (Ce motif sert <20> rep<65>rer la fin d'une rubrique. L'insertion d'une ligne de tirets dans le corps d'une rubrique mettra en d<>faut le script de g<>n<EFBFBD>ration automatique de la documentation!!).\\
\item[$\bullet$] \verb|.info| :
\begin{itemize}
\item[] Ce fichier est l'unique fichier d'extension \verb|.info| pr<70>sent dans le r<>pertoire. Il 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|).\\
Il n'y a pas de restriction majeure sur le contenu de ce fichier mais il est important de noter que dans le cas d'un test avec plusieurs fichiers \verb|.CVisu|, chaque calcul ult<6C>rieur au n<>1 tentera de faire un \verb|RESTART| du calcul pr<70>c<EFBFBD>dent. C'est pourquoi il faut faire attention au param<61>tre \verb|controle|$\rightarrow$\verb|SAUVEGARDE|. Le param<61>tre suffisant est :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
controle
SAUVEGARDE DERNIER_CALCUL
\end{verbatim}
\end{minipage}
Si le calcul utilise un menu interactif, un fichier \verb|.commande| sera n<>cessaire.\\
\end{itemize}
\item[$\bullet$] \verb|.CVisu|[i] :
\begin{itemize}
\item[] 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}
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Fichiers facultatifs en rapport avec l'ex<65>cution du test}\label{section_fichiers_facultatifs}
\begin{itemize}
%%
\item[$\bullet$] \verb|.precision| :
\begin{itemize}
\item[] Ce fichier permet de modifier les pr<70>cisions par d<>faut pour la comparaison des donn<6E>es au format maple pour un certain nombre de colonnes du fichier \verb|.maple|. Par d<>faut, les pr<70>cisions sont 1e-6 en absolu, 1e-3 en relatif. Le format du fichier est le suivant :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
#eventuellement des commentaires...
[no colonne] prec_absolue prec_relative
.
.
.
#eventuellement des commentaires...
[no colonne] prec_absolue prec_relative
\end{verbatim}
\end{minipage}
Il est important de noter que les crochets autour d'un num<75>ro de colonne sont obligatoires. Par exemple, si le fichier \verb|.maple| contient une ligne de la forme :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
temps X Y Z SIG11
\end{verbatim}
\end{minipage}
Il est possible de modifier les pr<70>cisions uniquement pour la colonne 5 avec le fichier \verb|.precision| suivant :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
#precisions pour la contrainte SIG11
# absolue relative
[5] 1.e-2 5.e-2
\end{verbatim}
\end{minipage}
\end{itemize}
%%
\item[$\bullet$] \verb|.commande| :
\begin{itemize}
\item[] Le but de ce fichier est de fournir automatiquement les r<>ponses <20> un menu interactif. Sa pr<70>sence <20>quivaut <20> lancer un calcul Herezh++ de la mani<6E>re suivante :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
HZppfast [-f|-n] nom_calcul.info < nom_calcul.commande
\end{verbatim}
\end{minipage}
Chaque ligne contient une r<>ponse suivie par un retour <20> la ligne. En particulier, il ne faut pas oublier le retour <20> la ligne <20> la fin de la derni<6E>re ligne.\\
\end{itemize}
%%
\item[$\bullet$] \verb|.verif| :
\begin{itemize}
\item[] Ce fichier est un ex<65>cutable dont la fonction est de fournir le r<>sultat de la v<>rification. Pour cela, il effectue les traitements n<>cessaires pour d<>terminer si le test est \verb|OK| ou \verb|ECHEC|. Il indique ce r<>sultat en affichant la ligne suivante :
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat verification : OK (ou ECHEC)
\end{verbatim}
\end{minipage}
En plus de cette ligne, cet ex<65>cutable peut tout <20> fait afficher d'autres informations <20> titre facultatif.\\
Il est important de noter que cet ex<65>cutable re<72>oit 2 arguments lorsqu'il est appel<65> par le script \verb|Perl/test.pl| :
\begin{itemize}
\item[argument 1 :] nom de l'ex<65>cutable Herezh++ (en chemin absolu)
\item[argument 2 :] nom du fichier de redirection de l'affichage du calcul Herezh++ (fichier \verb|.log|)
\end{itemize}
Cet ex<65>cutable peut \^etre programm<6D> dans n'importe quel langage, mais pour <20>viter les probl<62>mes de compilateur, il est pr<70>f<EFBFBD>rable d'<27>viter les langages n<>cessitant une compilation (par exemple : C, C++, Fortran, etc...). Il est pr<70>f<EFBFBD>rables d'utiliser les langages interpr<70>t<EFBFBD>s (par exemple : sh, zsh, Perl, Python, etc...).\\
\end{itemize}
%%
\item[$\bullet$] \verb|.argument| :
\begin{itemize}
\item[] Ce fichier permet de d<>finir librement les arguments donn<6E>s <20> l'ex<65>cutable Herezh++. Il peut contenir autant de lignes que n<>cessaire. Il est important de noter que l'affichage produit par Herezh++ est toujours redirig<69> dans un fichier \verb|.log| avec la commande \verb|tee|. Il est donc inutile voire bloquant de rajouter une redirection suppl<70>mentaire parmi les arguments. Au final, pour un fichier contenant N lignes, la commande Herezh++ lanc<6E>e sera :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
HZppfast ligne_1 ligne_2 ... ligne_N | tee nom_calcul.log
\end{verbatim}
\end{minipage}
\end{itemize}
%%
\item[$\bullet$] \verb|.maple.ref| :
\begin{itemize}
\item[] Ce fichier est utile pour la comparaison de donn<6E>es au format maple. Le nombre de colonnes de ce fichier doit \^etre en accord avec le fichier \verb|.maple| produit par la lecture du \verb|.CVisu| associ<63>.
\end{itemize}
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Exemples de tests}\label{section_exemples_tests}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul classique : comparaison de donn<6E>es maple}
Il s'agit du cas le plus courant consistant <20> r<>aliser des calculs g<>n<EFBFBD>rant des donn<6E>es au format maple <20> comparer avec les donn<6E>es contenues dans un fichier \verb|.maple.ref|. Les fichiers \verb|.CVisu|[i] d<>finissent des sorties au format maple. Le calcul n<>[i] utilise le fichier \verb|.CVisu|[i] pour g<>n<EFBFBD>rer un fichier \verb|.maple| qui sera compar<61> au fichier \verb|.maple.ref|[i] qui doit contenir exactement le m\^eme nombre de colonnes que le fichier \verb|.maple|.\\
Le fichier \verb|.info| doit g<>n<EFBFBD>rer automatiquement les sorties maple en choisissant parmi les 2 possibilit<69>s suivantes :
\begin{itemize}
\item[1-] lecture automatique : \verb|TYPE_DE_CALCUL|$\rightarrow$\verb|avec plus lectureCommandesVisu|
\item[2-] sortie au fil du calcul : \verb|para_affichage|$\rightarrow$\verb|FREQUENCE_SORTIE_FIL_DU_CALCUL|\\
\end{itemize}
A noter que quelque soit la fr<66>quence de sortie des r<>sultats, seule la derni<6E>re ligne de donn<6E>es du fichier \verb|.maple| est v<>rifi<66>e.\\
Le test \verb|Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_non_dynamique| est un exemple de calcul classique utilisant les pr<70>cisions par d<>faut pour la comparaison des donn<6E>es.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul utilisant un fichier de commandes interactives}
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage| est un exemple de calcul utilisant un fichier de commandes interactives (r<>ponses au menu interactif de l'utilitaire "\verb|avec plus fusion_maillages|").
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul utilisant un script libre de v<>rification}
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non| \verb|-references| est un exemple de calcul utilisant un script de v<>rification (comparaison entre deux fichiers \verb|.her|).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul consistant <20> cr<63>er un fichier .info (Herezh -n)}
Le script \verb|Perl/test.pl| lance un calcul Herezh++ avec l'option \verb|-n| si le fichier \verb|.info| ne contient pas le mot-cl<63> \verb|dimension|. Pour cela, on cr<63>e simplement un fichier \verb|.info| vide. Un fichier \verb|.commande| sera forc<72>ment n<>cessaire pour r<>pondre au menu interactif de cr<63>ation.
Il ne s'agit pas d'un calcul classique. Donc, sauf cas particulier, la v<>rification sera faite via un script \verb|.verif| afin de comparer le fichier cr<63><72> <20> un fichier de r<>f<EFBFBD>rence. Attention au fait que le fichier de r<>f<EFBFBD>rence ne doit pas avoir l'extension \verb|.info| car il ne peut y avoir qu'un seul fichier \verb|.info| dans le r<>pertoire. On peut par exemple utiliser l'extension \verb|.info.ref1|.\\
L'arborescence pour ce genre de test devrait avoir la forme suivante :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\vspace*{0.2cm}
\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} (fichier vide)}}
child[missing] { }
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}1} (fichier vide)}}
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[missing] { }
child { node[draw, anchor=west] {nom\_calcul.info.ref1}};
\end{tikzpicture}
\end{minipage}
%%
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{<EFBFBD>volution des mises <20> jour}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{itemize}
\item[$\bullet$] 2015-06-29 (Julien Troufflard) :
\begin{itemize}
\item[-]cr<EFBFBD>ation d'un nouveau script (\verb|Perl/genere_catalogue_tests.pl|). Il g<>n<EFBFBD>re automatiquement une documentation sur les tests (r<>sum<75> et index pour recherche par mots-cl<63>s). Ce document est plac<61> <20> la racine du projet sous le nom \verb|documentation_tests.pdf|. Le mode de fonctionnement (lecture des fichiers README de chaque test) impose une nouvelle contrainte sur la forme des fichiers README (interdiction d'utiliser des lignes de 3 tirets ou plus dans le corps d'une rubrique README car ce motif signifie la fin d'une rubrique). Cette contrainte est le choix actuel mais peut \^etre modifi<66> <20> tout moment en d<>finissant une balise de fin de rubrique <20> utiliser dans les fichiers README (par exemple : \verb|fin_rubrique|) et en indiquant sa syntaxe dans la variable \verb|$MOTIF_FIN_RUBRIQUE| du script \verb|Perl/genere_catalogue_tests.pl|.\\
\item[-]Apparition d'une nouvelle rubrique README : \it Auteur \rm (renseigne le ou les auteurs du test avec pr<70>nom, nom, adresse mail). rubrique qui appara\^it dans la documentation des tests.
\end{itemize}%tiret
\end{itemize}%bullet
\end{document}