2
0
Fork 0
Verif_Herezh/Doc/doc_procedure_verification.tex

1159 lines
74 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{float} % paquet pour placer les images correctement avec \begin{figure}[H]
\usepackage{enumitem}%package pour g<>rer la puce avec \begin{enumerate}[label={blabla-\arabic*}] (ce qui donne comme puces : blabla-1, blabla-2, etc...)
\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
%_____________
}
\definecolor{greenOK}{RGB}{15 , 185 , 15}
%
% 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{Personnes r<>f<EFBFBD>rentes}\label{section_personnes_referentes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Liste des personnes r<>f<EFBFBD>rentes <20> contacter pour toute question/probl<62>me :
\begin{itemize}
\item[\textbullet] G<>rard Rio (d<>veloppeur \verb|Herezh++|)\\
\hspace*{1cm} mail : {\color{blue} gerard.rio@univ-ubs.fr}
\item[\textbullet] Julien Troufflard (d<>veloppeur scripts proc<6F>dure de v<>rification)\\
\hspace*{1cm} mail : {\color{blue} troufflard@univ-ubs.fr}
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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] {Doc (r<>pertoire d<>di<64> <20> la r<>daction de la documentation utilisateur)}}
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[draw, anchor=west] {Tests\_en\_attente\_debug (r<>pertoire contenant des tests en attente pour cause de bugs)}}
child { node[anchor=west] {verifier\_exeHZ.zsh (script de lancement de la v<>rification)}}
child { node[anchor=west] {verifier\_exeHZ.pl (script de lancement de la v<>rification (nouvelle version)}
};
\end{tikzpicture}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Lancement de la batterie de tests}\label{section_lancement_batterie_tests}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Proc<EFBFBD>dure de lancement}
Il y a actuellement deux scripts permettant de lancer la batterie de tests. Le script \verb|verifier_exeHZ.zsh| est la version originale historique. Le script \verb|verifier_exeHZ.pl| est une version plus r<>cente offrant plus de possibilit<69>s sous forme d'options. Pour l'instant, ces deux scripts existent. A terme, si \verb|verifier_exeHZ.pl| s'av<61>re satisfaisant, la version \verb|.zsh| dispara\^itra du projet.\\
Avant de d<>tailler l'utilisation de ces scripts, voici un r<>sum<75> de la proc<6F>dure pour lancer la batterie :
\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.zsh| ou \verb|verifier_exeHZ.pl [...options...]| en lui indiquant l'ex<65>cutable <20> tester\\
\end{itemize}
Le rapport obtenu apr<70>s ex<65>cution de la batterie indique pour chaque test si il est r<>ussi ainsi que le temps de calcul obtenu par la commande \verb|time|.\\
\subsubsection*{\underline{Script \texttt{verifier\_exeHZ.zsh}} :}
Le script \verb|verifier_exeHZ.zsh| 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.
Comme mentionn<6E> pr<70>c<EFBFBD>demment, \verb|verifier_exeHZ.zsh| NE permet PAS d'interrompre correctement la batterie en cours avec \verb|ctrl+c|, avec pour cons<6E>quence un fort risque de modification des r<>pertoires de test originaux.
Le script \verb|verifier_exeHZ.zsh| 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.zsh HZppfast_Vn-1|
\item[] \verb|verifier_exeHZ.zsh 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.zsh /Users/dupont/bin/HZpp|
\item[] \verb|verifier_exeHZ.zsh ./HZppfast|
\item[] \verb|verifier_exeHZ.zsh ../mon_rep/HZppfast|\\
\end{itemize}
\end{itemize}
\subsubsection*{\underline{Script \texttt{verifier\_exeHZ.pl}} :}
Le script \verb|verifier_exeHZ.pl| fonctionne de mani<6E>re identique. Toutes les informations mentionn<6E>es pour \verb|verifier_exeHZ.zsh| sont valables pour \verb|verifier_exeHZ.pl|. Cette version offre des possibilit<69>s suppl<70>mentaires sous forme d'options. Ces options sont consultables en tapant \verb|verifier_exeHZ.pl -h| dans un terminal. En l'absence d'options, \verb|verifier_exeHZ.pl| fonctionne exactement comme \verb|verifier_exeHZ.zsh|. Comme mentionn<6E> pr<70>c<EFBFBD>demment, \verb|verifier_exeHZ.pl| permet d'interrompre correctement la batterie en cours avec \verb|ctrl+c|.\\
Exemples d'options :
\begin{itemize}
\item[$\bullet$] ne lancer que les tests rapides (option \verb|-R|) :
\begin{itemize}
\item[] \verb|verifier_exeHZ.pl -R HZppfast_Vn-1|
\end{itemize}
\item[$\bullet$] ne lancer que les tests longs (option \verb|-L|) :
\begin{itemize}
\item[] \verb|verifier_exeHZ.pl -L /Users/dupont/bin/HZpp|
\end{itemize}
\item[$\bullet$] ne lancer que les tests ayant un indicateur ECHEC dans un rapport de test (option \verb|-rpt nom_rapport|) :
\begin{itemize}
\item[] \verb|verifier_exeHZ.pl -rpt ./Rapport/rapport_test_R.txt HZppfast| \footnotesize (*)\normalsize
\item[] \hspace*{0.5cm} \footnotesize (*) Remarque : dans le cas de l'option \verb|-rpt|, le rapport de test s'appellera\\
\hspace*{3.1cm}\verb|Rapport/rapport_test_debugECHEC.txt|\normalsize\\
\end{itemize}
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Proc<EFBFBD>dure d'interruption}
L'utilisateur peut souhaiter stopper la batterie en cours. La commande usuelle d'interruption d'un processus UNIX/Linux est \verb|ctrl+c|.
{\color{greenOK} Le script \verb|verifier_exeHZ.pl| g<>re proprement une interruption de la batterie en cours par \verb|ctrl+c|.}
{\color{red} Le script \verb|verifier_exeHZ.zsh| ne g<>re pas correctement l'interruption \verb|ctrl+c| et il y a un risque d'avoir des fichiers et r<>pertoires non effac<61>s ou modifi<66>s. Par s<>curit<69>, il est demand<6E> de NE JAMAIS ACTUALISER le projet (cvs commit) apr<70>s une interruption ctrl+c du script \verb|verifier_exeHZ.zsh|.}
%%
\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|AUTRES| : 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}
\color{red} Dans le cas d'un nouveau test r<>v<EFBFBD>lant un bug encore non r<>solu dans Herezh++, le test doit \^etre stock<63> dans le r<>pertoire \verb|Tests_en_attente_debug| (merci d'en informer un r<>f<EFBFBD>rent du projet).
\color{black}
\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] {SORTIES}}
child { node[draw, anchor=west] {TYPE\_DE\_CALCUL}}
child { node[draw, anchor=west] {TYPE\_CHARGEMENT}}
child { node[draw, anchor=west] {UTILITAIRES}}
}
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child[missing] { }
child { node[draw, anchor=west] {CALCUL\_COMPLET}}
child { node[draw, anchor=west] {AUTRES}};
\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 d'un test}
Le script \verb|verifier_exeHZ.zsh| ou \verb|verifier_exeHZ.pl| a pour fonction de rechercher 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| (vide ou non) 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}.\\
L'ex<65>cution d'un test se fait dans un r<>pertoire temporaire dans \verb|/tmp|. On s'assure ainsi que le contenu du r<>pertoire d'origine ne sera jamais alt<6C>r<EFBFBD>, quelque soit le d<>roulement du test.\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{V<EFBFBD>rification}\label{subsubsection_verification}
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 test}\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])
\item[$\bullet$] les scripts de pr<70> et post traitement (respectivement les fichiers d'extension \verb|.pretrait|[i] et \verb|.posttrait|[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}
\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|catalogue_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 contenu des rubriques "Auteur", "Mots-cles", "But du test" et "Description du calcul" des fichiers README (voir figure \ref{format_fichier_README}).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Ajout d'un nouveau test}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Vue d'ensemble}\label{subsection_vue_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 (sans accent), 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|. Pour savoir si un nom de r<>pertoire existe d<>j<EFBFBD>, il y a un script d<>di<64> pr<70>sent dans le r<>pertoire \verb|Perl| : \verb|verif_existence_repertoire_test.pl| (option \verb|-h| pour l'aide). Pour l'utiliser, il faut se placer <20> la racine du projet (c'est-<2D>-dire au m\^eme niveau que le r<>pertoire \verb|Batterie|) et taper \verb|Perl/verif_existence_repertoire_test.pl nom_repertoire|.
\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|[i]).
\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 "But du test" et "Description du calcul" 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 "Auteur" et "Mots-cles", qui ne sont pas obligatoires, donnent des informations utiles (merci de les renseigner).
\item[] \bf Remarque importante : \rm ne pas <20>crire des lignes de 3 tirets ou plus (\verb|---| ou plus) dans le corps d'une rubrique. Ces lignes servent <20> rep<65>rer les titres de rubriques.\\
\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 { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.pretrait}{\color{red}1}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.posttrait}{\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[draw, anchor=west] {(*) nom\_calcul{\color{blue}.pretrait}{\color{red}2}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.posttrait}{\color{red}2}}}
child { node[anchor=west] {.}}
child { node[anchor=west] {.}}
child { node[anchor=west] {.}};
\end{tikzpicture}
\hspace*{0.8cm}
\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[] {}
child { node[anchor=west] {.}}
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 { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.pretrait}{\color{red}N}}}
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.posttrait}{\color{red}N}}}
child[missing] { }
child { node[draw, anchor=west] {(*) autres fichiers facultatifs}};
\end{tikzpicture}\\
\vspace*{0.5cm}
\hfill\small (*) fichiers facultatifs\normalsize
\caption{Contenu d'un r<>pertoire de test}
\label{arbo_repertoire_test}
\end{figure}
La section \ref{subsection_methodologie} propose une m<>thodologie de travail pour construire un nouveau test. La section \ref{section_commandes_CVS} est un rappel des commandes CVS de base. Les 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 section \ref{section_exemples_tests} a pour but de balayer les cas les plus courants de test et de donner des exemples.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{M<EFBFBD>thodologie}\label{subsection_methodologie}
Avant l'ajout d<>finitif du r<>pertoire de test dans la batterie, il est plus que conseill<6C> de construire pas <20> pas le test dans un r<>pertoire en dehors du projet CVS. Dans ce r<>pertoire, on pourra tester son fonctionnement sans risquer d'alt<6C>rer le reste du projet. La m<>thodologie pr<70>conis<69>e est :
\begin{enumerate}[label={\arabic*})]
\item cr<63>er un r<>pertoire quelconque (appelons ce r<>pertoire : \verb|rep_tmp|)
\item copier le r<>pertoire \verb|Perl| et le script \verb|verifier_exeHZ.pl| (ou \verb|verifier_exeHZ.zsh|) dans \verb|rep_tmp|
\item choisir un nom de r<>pertoire de test (voir section \ref{subsection_vue_ensemble}) et le cr<63>er dans \verb|rep_tmp| (appelons ce r<>pertoire : \verb|Test_R_nom_test|)\\
(au besoin, pour choisir le nom du test :\\
utiliser le script \verb|verif_existence_repertoire_test.pl| au niveau du r<>pertoire \verb|Verif_Herezh/Batterie|)
\item cr<63>er tous les fichiers n<>cessaires au calcul dans \verb|Test_R_nom_test| (voir sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs})\\
\underline{Remarque} : Ne pas h<>siter <20> s'inspirer des r<>pertoires d<>j<EFBFBD> existants dans la batterie
\item se placer dans \verb|rep_tmp| et ex<65>cuter le script \verb|verifier_exeHZ.pl(.zsh)|\\
(si le test fonctionne, un rapport de test en bonne et due forme est produit)
\item si il y a un disfonctionnement : modifier les fichiers de calcul jusqu'<27> ce que le test fonctionne
\item cr<63>er le fichier \verb|README| dans \verb|Test_R_nom_test| (voir section \ref{section_fichiers_obligatoires})
\item nettoyer le r<>pertoire \verb|Test_R_nom_test| pour qu'il ne contienne que les fichiers utiles (fichiers d<>finis aux sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs}, voir aussi figure \ref{arbo_repertoire_test})
\item choisir un r<>pertoire de destination dans la batterie (voir section \ref{section_classement_tests})\\
(appelons ce r<>pertoire \verb|rep_dest|)
\item enregistrer le test dans le projet CVS (voir section \ref{section_commandes_CVS}) :
\begin{itemize}
\item[$>$] Recopie du r<>pertoire de test vers le projet :\\
\verb|cp -R rep_tmp/Test_R_nom_test Verif_Herezh/Batterie/.../rep_dest/.|
\item[$>$] Ajout du r<>pertoire sous CVS :\\
\verb|cvs add Verif_Herezh/Batterie/.../rep_dest/Test_R_nom_test|
\item[$>$] Ajout de son contenu :\\
fichiers ASCII : \verb|cvs add ...liste des fichiers ASCII...|\\
fichiers binaire : \verb|cvs add -kb ...liste des fichiers binaires...|\\
\item[$>$] Actualisation d<>finitive du projet CVS en se pla<6C>ant dans le r<>pertoire du projet :\\
\verb|cvs commit -m 'ajout nouveau test etc...'|
\end{itemize}
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Commandes usuelles CVS}\label{section_commandes_CVS}
\begin{itemize}
\item[$\bullet$] importer le projet : \verb|cvs co -P 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 (*) l'option \verb|-P| est tr<74>s recommand<6E>e car elle permet de supprimer automatiquement les r<>pertoires vides d<>s l'import du projet (voir <20>galement remarque (***)).
\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 m\^eme si il est vide.\normalsize\\
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Fichiers obligatoires}\label{section_fichiers_obligatoires}
\subsubsection*{$\bullet$ \texttt{README} :}
1) 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 "But du test" et "Description du calcul" doit \^etre strictement respect<63>e. Il est fortement encourag<61> de renseigner les rubriques "Auteur" et "Mots-cles". 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 du catalogue de tests!!).\\
2) Dans les rubriques obligatoires, il est possible d'ins<6E>rer des figures gr\^ace <20> l'utilisation des balises \verb|\figures:|, \verb|\legende:| et \verb|\fin_legende|. Ces figures appara\^itront dans le catalogue de tests. Une figure est constitu<74>e de un ou plusieurs fichiers image et d'une l<>gende. Pour d<>clarer une figure, la ligne doit commencer par la balise "\verb|\figures:|" suivie du noms des fichiers image (il peut y en avoir plusieurs). Ensuite, sur la m\^eme ligne, on doit trouver la balise de d<>but de l<>gende "\verb|\legende:|". La l<>gende est constitu<74>e de tout le texte compris entre les balises "\verb|\legende:|" et "\verb|\fin_legende|". A noter que le texte de cette l<>gende peut \^etre <20>crit sur plusieurs lignes mais ces retours <20> la ligne ne seront pas pris en compte dans la mise en forme du document pdf. Les formats d'images sont ceux support<72>s par \verb|pdflatex| et \verb|\includegraphics|, c'est-<2D>-dire typiquement : \verb|.pdf|, \verb|.png| et \verb|.jpg|. Les fichiers image doivent \^etre situ<74>s dans le r<>pertoire du test (c'est-<2D>-dire le m\^eme r<>pertoire que le fichier \verb|README|). Concernant les dimensions des images, il faut savoir que le corps du texte du catalogue pdf a une largeur de 17cm et une hauteur de 24cm. Il est donc n<>cessaire de soit redimensionner les figures en fonction de ces longueurs, soit indiquer un facteur d'<27>chelle entre crochets <20> la fin du nom de fichier (pas d'espace entre la fin du nom de fichier et les crochets : \verb|nom_fichier.pdf[0.5]|). On peut <20>galement ins<6E>rer un espace entre 2 figures, tout simplement en mettant une valeur en cm entre crochets et pas de nom de figure (voir exemples ci-dessous).\\
Exemples :\\
\hspace*{0.5cm} $>$ Exemple sur une ligne :\\
\hspace*{1.5cm} \verb|\figures: maillage.pdf \legende: Aper<65>u du maillage \fin_legende|\\
\hspace*{0.5cm} $>$ Exemple sur une ligne avec facteur d'<27>chelle de 60\% :\\
\hspace*{1.5cm} \verb|\figures: maillage.pdf[0.6] \legende: Aper<65>u du maillage \fin_legende|\\
\hspace*{0.5cm} $>$ Exemple sur une ligne avec 2 figures <20>chelle 40\% et un espace de 1.2cm entre elles :\\
\hspace*{1.5cm} \verb|\figures: fig_1.pdf[0.4] [1.2] fig_2.pdf[0.4] \legende: ... \fin_legende|\\
\hspace*{0.5cm} $>$ Exemple multilignes :\\
\hspace*{1.5cm} \verb|\figures: coupe_SIG11.pdf \legende: Vue en coupe de|\\
\hspace*{1.5cm} \verb|la r<>partition des contraintes x \fin_legende|\\
\hspace*{0.5cm} $>$ Exemple multilignes avec plusieurs fichiers image :\\
\hspace*{1.5cm} \verb|\figures: vue_dessus.png vue_cote.png \legende: Vue de dessus|\\
\hspace*{1.5cm} \verb|(<28> gauche) et vue de c<>t<EFBFBD> (<28> droite) \fin_legende|\\
3) Dans les rubriques obligatoires, il est possible d'ins<6E>rer des formules math<74>matiques Latex entre \$ ou \$\$.\\
Exemples :\\
\hspace*{0.5cm} $>$ caract<63>re math<74>matique dans le texte :\\
\hspace*{1.5cm} - dans le \verb|README| :\\
le coefficient de Poisson est \${\textbackslash}nu=0.3\$, ce qui est classique pour un acier\\
\hspace*{1.5cm} - r<>sultat dans le catalogue :\\
le coefficient de Poisson est $\nu=0.3$, ce qui est classique pour un acier\\
~\\
\hspace*{0.5cm} $>$ formule math<74>matique <20>crite apr<70>s un passage <20> la ligne :\\
\hspace*{1.5cm} - dans le \verb|README| :\\
la loi de Hooke 1D s'<27>crit :\$\${\textbackslash}sigma = E{\textbackslash}varepsilon\$\$\\
\hspace*{1.5cm} - r<>sultat dans le catalogue :\\
la loi de Hooke 1D s'<27>crit :$$\sigma = E\varepsilon$$
4) Il est <20>galement possible d'<27>crire du code latex directement en utilisant les balises \verb|\latex_brut| et \verb|\fin_latex_brut|. D'une mani<6E>re g<>n<EFBFBD>rale, on peut <20>crire entre ces 2 balises tout ce que Latex accepte dans un corps de document. Les balises \verb|\latex_brut| et \verb|\fin_latex_brut| doivent appara\^itre seules sur une ligne sans aucun autre mot.\\
Exemple :\\
\hspace*{0.5cm} $>$ Exemple de bonne syntaxe :\\
\hspace*{1.5cm} \verb|\latex_brut|\\
\hspace*{1.7cm} \verb|ceci est un url : \url{http://....com}|\\
\hspace*{1.7cm} \verb|ceci est une <20>quation :|\\
\hspace*{1.7cm} \verb|\begin{equation}|\\
\hspace*{1.7cm} \verb|\sin{\pi}/2 = 1|\\
\hspace*{1.7cm} \verb|\end\{equation}|\\
\hspace*{1.5cm} \verb|\fin_latex_brut|\\
\hspace*{0.5cm} $>$ Exemple de mauvaise syntaxe 1 :\\
\hspace*{1.5cm} \verb|\latex_brut ceci est un url : \url{http://....com} \fin_latex_brut|\\
\hspace*{0.5cm} $>$ Exemple de mauvaise syntaxe 2 :\\
\hspace*{1.5cm} \verb|L'<27>quation de ce plan s'<27>crit : \latex_brut|\\
\hspace*{1.5cm} \verb|\begin{equation}|\\
\hspace*{1.5cm} \verb|z = 1|\\
\hspace*{1.5cm} \verb|\end\{equation} \fin_latex_brut|\\
\subsubsection*{$\bullet$ \texttt{.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}
\subsubsection*{$\bullet$ \texttt{.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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Fichiers facultatifs en rapport avec l'ex<65>cution du test}\label{section_fichiers_facultatifs}
%%
\subsubsection*{$\bullet$ \texttt{.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}
%%
\subsubsection*{$\bullet$ \texttt{.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}
%%
\subsubsection*{$\bullet$ \texttt{.verif} :}
\begin{itemize}
\item[] Ce fichier est un ex<65>cutable dont la fonction est de fournir le r<>sultat de la v<>rification. Il doit effectuer les traitements n<>cessaires pour d<>terminer si le test est \verb|OK| ou \verb|ECHEC|. Le contenu du script est totalement libre mais il doit obligatoirement indiquer le r<>sultat de la v<>rification en affichant une des 2 lignes suivantes :
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat verification : OK
resultat verification : 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 3 arguments lorsqu'il est appel<65>. Le programmeur pourra donc utiliser s'il le souhaite les arguments suivants :
\noindent\rule{0.8\textwidth}{0.5pt}\\
\hspace*{2cm}\begin{minipage}{0.6\textwidth}
\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|)
\item[- argument 3 :] nom du fichier \verb|.info|
\end{itemize}
\end{minipage}
\noindent\rule{0.8\textwidth}{0.5pt}\\
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...). Pour augmenter la portabilit<69> de ces scripts, il faut <20>viter de mettre un chemin absolu vers l'interpr<70>teur dans l'en-t\^ete. On utilisera la forme : \verb|#!/usr/bin/env| suivi du nom de l'interpr<70>teur (exemples : \verb|#!/usr/bin/env perl| ou bien \verb|#!/usr/bin/env python|).
\end{itemize}
%%
\subsubsection*{$\bullet$ \texttt{.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}
%%
\subsubsection*{$\bullet$ \texttt{.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>. Il peut contenir un nombre quelconque de lignes de donn<6E>es mais seule la derni<6E>re sera utilis<69>e pour la comparaison de \verb|.maple| explicit<69>e <20> la section \ref{subsubsection_verification}.
\end{itemize}
%%
\subsubsection*{$\bullet$ \texttt{.pretrait} :}
\begin{itemize}
\item[] Le but de ce fichier est d'effectuer des traitements juste \bf avant \rm le calcul. Ce fichier doit \^etre un ex<65>cutable programm<6D> dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.pretrait| fournit un indicateur de r<>ussite ou d'<27>chec. Il doit donc afficher une des 2 lignes suivantes :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat pretrait : OK
resultat pretrait : ECHEC
\end{verbatim}
\end{minipage}
Ce script re<72>oit 2 arguments :\\
\noindent\rule{0.8\textwidth}{0.5pt}\\
\hspace*{2cm}\begin{minipage}{0.6\textwidth}
\begin{itemize}
\item[- argument 1 :] nom de l'ex<65>cutable Herezh++ (en chemin absolu)
\item[- argument 2 :] nom du fichier \verb|.info|
\end{itemize}
\end{minipage}
\noindent\rule{0.8\textwidth}{0.5pt}\\
\end{itemize}
%%
\subsubsection*{$\bullet$ \texttt{.posttrait} :}
\begin{itemize}
\item[] Le but de ce fichier est d'effectuer des traitements juste \bf apr<70>s \rm le calcul. Il suit la m\^eme logique que le fichier \verb|.pretrait| avec 3 diff<66>rences : 1) le message de r<>ussite/<2F>chec n'a pas la m\^eme syntaxe, 2) il re<72>oit 3 arguments, 3) il est ex<65>cut<75> apr<70>s le calcul Herezh++. Ce fichier doit \^etre un ex<65>cutable programm<6D> dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.posttrait| fournit un indicateur de r<>ussite ou d'<27>chec. Il doit donc afficher une des 2 lignes suivantes :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat posttrait : OK
resultat posttrait : ECHEC
\end{verbatim}
\end{minipage}
Ce script re<72>oit 3 arguments :\\
\noindent\rule{0.8\textwidth}{0.5pt}\\
\hspace*{2cm}\begin{minipage}{0.6\textwidth}
\begin{itemize}
\item[- argument 1 :] nom de l'ex<65>cutable Herezh++ (en chemin absolu)
\item[- argument 2 :] nom du fichier \verb|.info|
\item[- argument 3 :] nom du fichier de redirection de l'affichage du calcul Herezh++ (fichier \verb|.log|)
\end{itemize}
\end{minipage}
\noindent\rule{0.8\textwidth}{0.5pt}\\
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Exemples de tests}\label{section_exemples_tests}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul classique : comparaison de donn<6E>es maple}\label{section_exemple_test_1}
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}\label{section_exemple_test_2}
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|"). Ce fichier sp<73>cial est le fichier d'extension \verb|.commande1|.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul utilisant un script libre de v<>rification}\label{section_exemple_test_3}
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|). Ce fichier sp<73>cial est le fichier d'extension \verb|.verif1|.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Calcul consistant <20> cr<63>er un fichier .info (Herezh -n)}\label{section_exemple_test_4}
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 \verb|.info| cr<63><72> <20> un fichier \verb|.info| de r<>f<EFBFBD>rence. Attention au fait que le fichier \verb|.info| 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|.\\
Actuellement, il n'y a pas d'exemple dans le r<>pertoire \verb|Batterie| mais 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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Exemple complexe effectuant des pr<70>-traitements et des post-traitements}\label{section_exemple_test_5}
Il est parfois utile d'ex<65>cuter des actions avant et/ou apr<70>s le calcul Herezh++. Les fichiers \verb|.pretrait| et \verb|.posttrait| sont l<> dans ce but. La s<>quence sera :
\begin{itemize}
\item[1)] lancement du script \verb|.pretrait| (+ v<>rification de la r<>ussite de ce script)
\item[2)] lancement du calcul Herezh
\item[3)] lancement du script \verb|.posttrait| (+ v<>rification de la r<>ussite de ce script)
\item[4)] V<>rification du calcul par les moyens habituels (comparaison \verb|.maple.ref|, script \verb|.verif|, pas de v<>rification, etc...)\\
\end{itemize}
Le script \verb|.pretrait| peut par exemple servir <20> modifier des param<61>tres dans le fichier \verb|.info| avant le calcul. Mais on peut aussi imaginer d'autres situations plus complexes.
Par exemple le test \verb|Batterie/FONCTION_UNIQUE/LOI_DE_COMP|ORTE\-\verb|MENT/Test_R_LOI_VIA_UMAT_1| est un test n<>cessitant un pr<70> et un post-traitement pour r<>aliser un dialogue entre 2 processus Herezh++. La v<>rification est une comparaison classique de r<>sultats \verb|.maple|. Cet exemple tr<74>s particulier montre que l'on peut lancer un autre calcul Herezh++ dans un script \verb|.pretrait| ou \verb|.posttrait| (attention : il faut s'assurer que ce processus ne tournera plus apr<70>s la fin du test).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Actualisation du catalogue de tests}\label{section_actualisation_catalogue_tests}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Principe}
Le document \verb|catalogue_tests.pdf| pr<70>sent <20> la racine du projet CVS est construit sur la base du fichier \verb|README| pr<70>sent dans chaque r<>pertoire de test. Ce fichier pdf est cr<63><72> via \LaTeX. Le script \verb|genere_catalogue_tests.pl|, pr<70>sent dans le r<>pertoire \verb|Perl|, automatise le traitement en regroupant le contenu des fichiers \verb|README| au sein d'un fichier \verb|.tex| qui est ensuite compil<69> avec la commande \verb|pdflatex|.
Une fois un nouveau test pr\^et <20> l'emploi avec un fichier \verb|README| conforme, l'utilisateur peut actualiser ce catalogue en ex<65>cutant le script \verb|genere_catalogue_tests.pl|. Ce script recherche tous les r<>pertoires de test depuis son r<>pertoire de lancement. Cela veut dire que l'utilisateur peut tr<74>s bien tester, dans un r<>pertoire s<>par<61>, si ce script fonctionne correctement pour son nouveau test avant d'actualiser la totalit<69> du catalogue. Notamment, si le fichier \verb|README| contient une insertion de figure, cela permet de tester au pr<70>alable si les dimensions de la figure sont bien configur<75>es.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Ex<EFBFBD>cution}
Pour ex<65>cuter le script \verb|genere_catalogue_tests.pl|, les commandes suivantes doivent \^etre disponibles :
\begin{itemize}
\item[-] \verb|pdflatex|
\item[-] \verb|makeindex|
\end{itemize}
~\\
La proc<6F>dure de lancement dans un terminal est :
\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|Perl/genere_catalogue_tests.pl|
\end{itemize}
~\\
Si tout se passe normalement, le fichier \verb|catalogue_tests.pdf| a <20>t<EFBFBD> cr<63><72> dans le r<>pertoire de lancement du script. La version finale actualis<69>e du catalogue (celle regroupant l'ensemble des tests) doit \^etre plac<61>e <20> la racine du projet CVS.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Proc<EFBFBD>dure en cas d'erreur}
Il est possible que la commande \verb|pdflatex| rencontre des probl<62>mes pour g<>n<EFBFBD>rer le fichier pdf. Tout ce qui met en d<>faut une compilation \LaTeX{} avec \verb|pdflatex| provoquera un <20>chec. Les probl<62>mes possibles identifi<66>s <20> l'heure actuelle sont :
\begin{itemize}
\item[-] des caract<63>res ou un encha\^inement de caract<63>res ing<6E>rables par \LaTeX{} sont pr<70>sents dans un fichier \verb|README|
\item[-] probl<62>me d'acc<63>s aux librairies. Une compilation \LaTeX{} requiert la pr<70>sence de certaines librairies, et parfois ces librairies ne sont pas pr<70>sentes sur la machine de l'utilisateur.
\end{itemize}
~\\
En cas de probl<62>me, le script \verb|genere_catalogue_tests.pl| signale l'<27>chec de la cr<63>ation du fichier pdf et fournit deux fichiers :
\begin{itemize}
\item[-] \verb|catalogue_tests.tex|
\item[-] \verb|catalogue_tests.error_log|
\end{itemize}
~\\
A partir de ces deux fichiers, l'utilisateur peut commencer un d<>buggage manuel. Le fichier \verb|catalogue_tests.tex| est le fichier source pr\^et <20> la compilation (avec \verb|pdflatex| ou n'importe quel autre moyen pour compiler un fichier \LaTeX). Le fichier \verb|catalogue_tests.error_log| contient l'affichage qui a <20>t<EFBFBD> produit par \verb|pdflatex|, ce qui permet de prendre connaissance des <20>ventuels message d'erreur. En premi<6D>re approche, le script \verb|genere_catalogue_tests.pl| affiche dans le terminal certaines lignes de ce fichier \verb|.error_log| (celle contenant le mot \verb|error|).\\
\color{blue}
\noindent\bf Remarque importante :\rm\\
\indent Le fichier \verb|catalogue_tests.tex| <20>tant pr\^et <20> la compilation, il est tout <20> fait possible de s'en servir pour aboutir manuellement <20> la cr<63>ation du fichier \verb|catalogue_tests.pdf|. Il n'est pas absolument indispensable que ce fichier pdf soit cr<63><72> par une ex<65>cution sans erreur du script \verb|genere_catalogue_tests.pl|. N<>anmoins, merci de signaler tout probl<62>me d'ex<65>cution.
\color{black}
~\\
La figure \ref{exemple_erreur_genereation_catalogue} montre un exemple d'affichage produit en cas d'erreur.
\begin{figure}[H]
\footnotesize
\begin{verbatim}
Erreur (prog:genere_catalogue_tests.pl) : erreur a l execution de pdflatex
Les fichiers suivants ont ete crees pour chercher manuellement la source de l erreur :
- catalogue_tests.tex (fichier .tex pret a la compilation)
- catalogue_tests.error_log (affichage renvoye par pdflatex)
(vous pouvez essayer de compiler vous-meme le fichier .tex pour
finaliser la creation du catalogue)
Notamment, le fichier catalogue_tests.error_log contient les erreurs :
-------------------------------------------------------------------------------------------------
> ! LaTeX Error: File `subfiguressss.sty' not found.
> Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
> ! LaTeX Error: File `subfiguressss.sty' not found.
-------------------------------------------------------------------------------------------------
\end{verbatim}
\normalsize
\caption{Exemple d'erreur produit par le script \texttt{genere\_catalogue\_test.pl} (cas d'une librairie .sty introuvable)}
\label{exemple_erreur_genereation_catalogue}
\end{figure}
%%
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{FAQ} \label{section_FAQ}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Les tests ne se lancent pas correctement (probl<62>me d'ex<65>cution)}
Compte-tenu des diverses architectures des machines utilisateur, il est possible que certains d<>tails manquent au bon fonctionnement (informatiquement parlant). Voici une liste des causes possibles :
\begin{itemize}[label=\textbullet]
\item la variable environnement \verb|PATH| ne contient pas le chemin vers le r<>pertoire courant ./ :\\
\hspace*{0.5cm} $\Rightarrow$ Il faut ajouter le caract<63>re "." <20> votre variable environnement \verb|PATH|
\item le r<>pertoire \verb|/tmp| n'existe pas (Les tests sont lanc<6E>s dans ce r<>pertoire) :\\
\hspace*{0.5cm} $\Rightarrow$ Pour r<>soudre ce probl<62>me, cela suppose une modification des programmes actuels. Contactez un membre appropri<72> du projet pour signaler ce besoin
\item votre machine n'a pas la commande \verb|tcsh| :\\
\hspace*{0.5cm} $\Rightarrow$ Tapez "\verb|which tcsh|" dans un terminal. Si il n'y a aucun r<>sultat ou un affichage du style "\verb|not found|", la commande \verb|tcsh| n'existe pas. Installez-l<> car elle est indispensable au fonctionnement
\end{itemize}
%%
\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{<EFBFBD>volution des mises <20> jour}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{itemize}
\item[$\bullet$] 2015-06-29 (Julien Troufflard) :
\begin{itemize}
\item[-] cr<63>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
~\\
\item[$\bullet$] 2015-07-13 (Julien Troufflard) :
\begin{itemize}
\item[-] changement du nom du fichier de catalogue de tests (d<>sormais s'appellera \verb|catalogue_test.pdf| au lieu de \verb|documentation_tests.pdf|)\\
\item[-] le fichier .pdf de la document utilisateur principale est d<>sormais archiv<69> sous CVS. Il s'appelle \verb|doc_procedure_verification.pdf| et est plac<61> <20> la racine du projet (il s'agit simplement du fichier g<>n<EFBFBD>r<EFBFBD> par \verb|Doc/doc_procedure_verification.tex|)
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-07-15 (Julien Troufflard) :
\begin{itemize}
\item[-] ajout d'une nouvelle version du script de lancement de la batterie. Cette nouvelle version en Perl s'appelle \verb|verifier_exeHZ.pl|. Elle reproduit la m\^eme chose que la version actuelle en zsh mais propose en plus des options pour <20>viter de lancer tous les tests. La version pr<70>c<EFBFBD>dente \verb|verifier_exeHZ| est conserv<72>e mais renomm<6D>e en \verb|verifier_exeHZ.zsh|. A terme, cette version zsh sera supprim<69>e du projet CVS.
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-07-16 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script de g<>n<EFBFBD>ration automatique du catalogue de tests (script \verb|Perl/genere_catalogue_tests.pl|). D<>sormais, il est possible d'ins<6E>rer des figures via une syntaxe par balises dans les fichiers README des tests. La m<>thode est expliqu<71>e <20> la section \ref{section_fichiers_obligatoires} "Fichiers obligatoires" (fichier \verb|README|)\\
\item[-] ajout du script \verb|Perl/verif_existence_repertoire_test.pl|. Permet de savoir si un nom de r<>pertoire de test existe d<>j<EFBFBD> dans la batterie. Est utile au moment de l'ajout d'un nouveau test pour aider <20> choisir le nom et <20>viter de choisir un nom d<>j<EFBFBD> existant (m\^eme si ce n'est pas dans le m\^eme r<>pertoire de destination car le catalogue des tests ne tient pas compte du chemin complet). Explication de son utilisation <20> la section \ref{subsection_vue_ensemble}\\
\item[-] m<>thodologie pour ajouter un nouveau test : il n'y avait aucune section exposant clairement les <20>tapes <20> suivre pour cr<63>er et ajouter un test, d'o<> la cr<63>ation de la section \ref{subsection_methodologie}
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-09-29 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|Perl/verifier_exeHZ.pl| : le package \verb|Term::ReadKey| n'est pas forc<72>ment install<6C> sur toutes les machines. Pour <20>viter d'\^etre p<>nalis<69> par ce package, son existence est v<>rifi<66>e via la subroutine \verb|check_install| du package \verb|Module::Load::Conditional| et, si il existe, l'appel <20> \verb|Term::ReadKey| est fait via \verb|require| au lieu de \verb|use|. Cette mani<6E>re de faire pourra \^etre appliqu<71>e partout o<> il y a un doute sur l'existence d'un package et d<>finir ainsi un moyen de contourner l'absence d'un package.\\
\item[-] modif du script \verb|Perl/test.pl| : il y avait une faille dans la subroutine \verb|lancement_commande|. Sur certaines machines, la redirection \verb|tee| ne se fait pas instantan<61>ment. Ceci conduisait <20> croire que le fichier de redirection n'<27>tait pas cr<63><72> et donc renvoyait un probl<62>me li<6C> <20> la redirection de l'affichage. D<>sormais, un d<>lai est accord<72> pour attendre la cr<63>ation de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De mani<6E>re indirecte, ceci a conduit <20> cr<63>er un nouvel indicateur de status pour signaler si le calcul ne se lance pas (\verb|probleme lancement calcul|).
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-09-30 (Julien Troufflard) :
\begin{itemize}
\item[-] modif de l'en-t\^ete de tous les scripts perl (y compris les \verb|.verif| de la batterie) : am<61>lioration de la portabilit<69> en modifiant le shebang selon \url{https://en.wikipedia.org/wiki/Shebang_\%28Unix\%29#Portability}. D<>sormais, les scripts commencent par \verb|#!/usr/bin/env perl| au lieu du chemin absolu \verb|#!/usr/bin/perl| qui pourrait ne pas fonctionner sur certaines machines <20> l'architecture atypique (et actualisation de la section \ref{section_fichiers_facultatifs} pour signaler cette habitude <20> prendre pour les fichiers \verb|.verif|).\\
remarque : modif <20>galement pour le script zsh \verb|verifier_exeHZ.zsh|
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-11-24 (Julien Troufflard) :
\begin{itemize}
\item[-] modif script \verb|Perl/genere_catalogue_tests.pl| :\\
1) possibilit<69> d'ins<6E>rer un espace "{\textbackslash}hspace" entre les figures \verb|\figures| (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|)\\
2) possibilit<69> d'ins<6E>rer des formules et caract<63>res math<74>matiques dans les fichiers \verb|README| entre simples \$ ou doubles \$\$ (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|)
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-11-25 (Julien Troufflard) :
\begin{itemize}
\item[-] modif script \verb|Perl/genere_rapport.pl| : modifification de l'en-t\^ete du rapport de tests avec notamment l'affichage du nom de la machine (via variable environnement \$HOST)
\item[-] modif script \verb|Perl/test.pl| :\\
1) gestion de bugs et am<61>liorations diverses :\\
- remplacement de "\verb|cp -nf|" par l'encha\^inement "\verb|rm -f|" + "\verb|cp|" (car dans certaines versions de \verb|cp|, l'option \verb|-n| n existe pas)\\
- modification majeure : d<>sormais, un test s'<27>xecute dans un repertoire de travail sur \verb|/tmp| (voir variable \verb|$repertoire_de_travail|). L'int<6E>r\^et majeur est de ne jamais modifier le r<>pertoire d'origine du test quelque soit le d<>roulement du test. Cette strat<61>gie permet actuellement d'interrompre la batterie avec \verb|ctrl+c| sans cons<6E>quence sur le contenu des r<>pertoires de test (voir proc<6F>dure d'interruption <20> la section \ref{section_lancement_batterie_tests}). De plus, une cons<6E>quence indirecte b<>n<EFBFBD>fique de ceci est que m\^eme quand un test se d<>roule correctement, il se pouvait que certains fichiers soient l<>g<EFBFBD>rement modifi<66>s (par exemple : le num<75>ro de version Herezh en en-t\^ete du fichier \verb|cube_soude.her| du test \verb|FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins|). En cons<6E>quence, cela g<>n<EFBFBD>rait un archivage CVS suppl<70>mentaire avec envoi intempestif d'un mail aux membres du projet pour chacun de ces fichiers, alors qu'en realit<69>, ils n'<27>taient pas fondamentalement et sciemment modifi<66>s. Ce probl<62>me mineur est d<>sormais r<>solu.\\
- comparaison maple : d<>sormais, si toutes les grandeurs d'un test sont OK, un affichage all<6C>g<EFBFBD> est produit dans le rapport (juste une ligne pour indiquer que toutes les grandeurs sont OK sans d<>tailler les comparaisons)\\
2) affichage des temps de calcul :\\
- dans la subroutine \verb|lancement_commande()| : lancement de Herezh via la tournure \verb/tsch -c "time HZ -f fic.info" | tee fic.log/ pour r<>cuperer le temps CPU dans le fichier .log (l'utilisation de \verb|tcsh -c|, c'est uniquement pour que le r<>sultat de \verb|time| soit bien r<>cup<75>r<EFBFBD> sur \verb|STDOUT|, donc dans \verb|fic.log|)\\
- juste apr<70>s l'appel <20> \verb|lancement_commande()| $\Rightarrow$ saisie du temps de calcul dans le \verb|.log| et affichage dans le rapport de test (juste apr<70>s le nom du test)
\end{itemize}%tiret
~\\
\item[$\bullet$] 2015-11-25(bis) (Julien Troufflard) :
\begin{itemize}
\item[-] modif scripts \verb|Perl/genere_catalogue_tests.pl| et \verb|Perl/genere_rapport.pl| : suppression de l'option \verb|-s| dans le shebang (inutile et en plus g<>n<EFBFBD>re un bug sur Linux quand on utilise la tournure \verb|#/usr/bin/env perl -s|)
\item[-] modif script \verb|Perl/test.pl| :\\
- remplacement de la subroutine \verb|return_nb_decimales()| par la subroutine \verb|return_nb_decimales_first()| (m\^eme chose mais en mieux : renvoie la position de la premi<6D>re d<>cimale non nulle au lieu du nombre total de d<>cimales). Pour rappel, ce traitement n'a pas pour but d'arrondir les r<>sultats pour la comparaison. Il s'agit juste d'un arrondi <20> but cosm<73>tique pour afficher, dans le rapport, la grandeur avec un nombre de d<>cimales adapt<70> <20> la pr<70>cision.\\
- comparaison maple :\\
1) modification de la comparaison pour g<>rer le cas o<> le nombre est tr<74>s petit (par exemple : 1.e-15 compar<61> <20> 1.e-30 g<>n<EFBFBD>re une erreur relative <20>norme). Ce probl<62>me avait <20>t<EFBFBD> d<>j<EFBFBD> pens<6E> dans la version historique de la v<>rification Herezh (Laurent Mah<61>o) mais malheureusement non trait<69> dans la nouvelle version. D<>sormais, on traite ce probl<62>me en arrondissant les grandeurs <20> 1.e-12 pr<70>s.\\
2) correction d'une erreur dans la comparaison absolue : par erreur, la comparaison se faisait toujours par rapport <20> la pr<70>cision absolue par d<>faut (\verb|$PREC_ABSOLU|) sans tenir compte de l'<27>ventuelle modification par fichier \verb|.precision|
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-02-12 (Julien Troufflard) :
\begin{itemize}
\item[-] modif script \verb|Perl/genere_catalogue_tests.pl| :\\
1) suppression du lancement de la commande \verb|makeindex| (en fait, le package imakeidx lance d<>j<EFBFBD> cette commande sous forme d'un appel system par Latex lui-e\^eme. Cette op<6F>ration <20>tait donc redondante)\\
2) meilleure gestion des erreurs de compilation pdflatex :\\
\begin{itemize}
\item[$>$] utilisation de l'option \verb|-interaction=nonstopmode| en plus de \verb|-halt-on-error|, ce qui <20>vite <20> pdflatex de s'arr\^eter sans rendre la main en cas d'absence de fichiers (package .sty introuvable, fichier image introuvable avec \verb|\includegraphics|, etc...)
\item[$>$] le script fournit <20> l'utilisateur le fichier \verb|catalogue_tests.tex| pr\^et <20> la compilation. Ce qui permet d'une part de chercher manuellement la source des erreurs de compilation, et d'autre part, de donner la possibilit<69> <20> l'utilisateur de terminer manuellement la compilation du catalogue de tests m\^eme si \verb|Perl/genere_catalogue_tests.pl| n'a pas pu aller jusqu'au bout.
\end{itemize}
\item[-] ajout dans la documentation d'un paragraphe concernant la g<>n<EFBFBD>ration du catalogue de tests (section \ref{section_actualisation_catalogue_tests})
\item[-] ajout dans la documentation d'un paragraphe regroupant les personnes r<>f<EFBFBD>rentes <20> contacter (section \ref{section_personnes_referentes})
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-03-11 (Julien Troufflard) :
\begin{itemize}
\item[-] modif des scripts \verb|verifier_exeHZ.pl| et \verb|Perl/test.pl| dans le but de permettre un arr\^et Ctrl-c propre en cours de batterie :\\
pour ces 2 scripts, une gestion des signaux d'interruption \verb|INT| et \verb|TERM| a <20>t<EFBFBD> introduite (subroutine \verb|arret_force()| et un fichier (texte) temporaire est utilis<69> pour permettre un dialogue entre les 2 processus (fichier de nom \verb|//tmp/verifier_exeHZ_2_test_$PID.com/| o<> \verb|$PID| est le pid du processus \verb|verifier_exeHZ.pl|). Un nouveau status de test existe d<>sormais dans le rapport de test : \verb|ECHEC : ***INTERRUPTION PAR L UTILISATEUR***|. A noter que le rapport de test est tout de m\^eme g<>n<EFBFBD>r<EFBFBD> en bonne et due forme pour les tests d<>j<EFBFBD> termin<69>s avant Ctrl-c (mais le rapport n'est pas automatiquement affich<63>). A noter <20>galement que, <20>tant donn<6E>es les modifs de \verb|Perl/test.pl|, l'interruption \verb|ctrl+c| n'est pas trop mal avec la version \verb|zsh| \verb|verifier_exeHZ.zsh| mais c'est tout de m\^eme moins bien ma\^itris<EFBFBD> (<28> <20>viter).
\item[-] la section \ref{section_lancement_batterie_tests} de ce document a <20>t<EFBFBD> divis<69> en 2 sous-sections. Une section est d<>di<64>e <20> la proc<6F>dure d'interruption \verb|ctrl+c| (pour expliquer mais aussi pour pointer du doigt le fait qu'une interruption volontaire n'est pas toujours une op<6F>ration sans cons<6E>quences).
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-03-24 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|Perl/test.pl| : ajout de la possibilit<69> de faire des traitements avant et apr<70>s calcul via un script \verb|.pretrait| et \verb|.posttrait| (voir section \ref{section_fichiers_facultatifs})
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-07-01 (Julien Troufflard) :
\begin{itemize}
\item[-] ajout d'une section FAQ dans cette doc (section \ref{section_FAQ})
\item[-] modif du script \verb|Perl/test.pl| : affichage du r<>pertoire de travail dans le terminal (r<>pertoire \verb|$repertoire_de_travail|)
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-08-30 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|Perl/genere_catalogue_tests.pl| : D<>sormais, on peut <20>crire directement du code latex dans les fichiers \verb|README| en utilisant les balises \verb|\latex_brut| et \verb|\fin_latex_brut| (voir section \ref{section_fichiers_obligatoires})
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-09-07 (Julien Troufflard) :
\begin{itemize}
\item[-] ajout d'un nouveau r<>pertoire dans l'arborescence : le r<>pertoire \verb|Tests_en_attente_debug/| est cr<63><72> dans le but d'y placer des nouveaux tests qui ne fonctionnent pas encore. Ils sont en attente de debuggage pour \^etre <20> terme d<>plac<61>s dans un endroit appropri<72> du r<>pertoire \verb|Batterie/| une fois r<>solu. \bf {\color{red} Attention :} \rm il s'agit bien d'y placer des \underline{nouveaux} tests qui ne marchent pas encore. Il n'est pas question d'y d<>placer d'anciens tests d<>j<EFBFBD> pr<70>sents dans \verb|Batterie/| sous le pr<70>texte qu'ils ne fonctionnent plus suite <20> un changement de version Herezh
\item[-] modif des scripts \verb|verifier_exeHZ.pl|, \verb|verifier_exeHZ.zsh|, \verb|Perl/genere_catalogue_tests.pl|, \verb|Perl/verif_existence_repertoire_test.pl| : on omet le r<>pertoire \verb|Tests_en_attente_debug/| pour lister les tests de la batterie (via l'option \verb|-not -path| dans la commande linux \verb|find|)
\item[-] modif du script \verb|Perl/test.pl| : ajout d'un 3<>me argument pour le script \verb|.verif|. D<>sormais, le nom du fichier \verb|.info| est fourni en 3<>me argument (voir la partie relative au script \verb|.verif| en section \ref{section_fichiers_facultatifs})
\end{itemize}%tiret
~\\
\item[$\bullet$] 2016-09-19 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|test.pl| : l<>g<EFBFBD>re modif sans cons<6E>quence (petit changement dans le message d'erreur en lien avec un probl<62>me d'ex<65>cution Herezh)
\end{itemize}%tiret
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%template d ajout d une nouvelle mise <20> jour (compos<6F> d'une puce "bullet" avec Date et auteur de la modif, suivie d une s<>rie de puce "-"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\item[$\bullet$] AAAA-MM-JJ (Pr<50>nom Nom) :
%\begin{itemize}
%\item[-] blabla 1
%\item[-] blabla 2
%.
%.
%.
%\item[-] blabla N
%\end{itemize}%tiret
%~\\
\end{itemize}%bullet
\end{document}