768 lines
49 KiB
TeX
768 lines
49 KiB
TeX
\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 à 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é de longueur "\unitlength" liée à 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é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édure de vérification}
|
|
\author{Ré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ésente la procédure de vérification d'une série de tests dédié à Herezh++. Cette vérification est effectuée via principalement un script perl. La première version de ce script a été mise en place par Laurent Mahéo au cours de sa thèse au début des années 2000. Puis plusieurs évolutions mineures ont été introduite. Enfin dernièrement, suite à un élargissement des objectifs, le script a été entièrement refondé 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és:
|
|
\begin{itemize}
|
|
\item la détection d'évolutions malencontreuses dans le fonctionnement d'Herezh++
|
|
\item la présentation d'exemples de fonctionnement et de mise en données des différentes possibilités offertes par Herezh++.
|
|
\end{itemize}
|
|
|
|
Enfin l'idée est que rien n'est définitif, et que des évolutions sont pré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écuter la vérification)}}
|
|
child { node[draw, anchor=west] {Rapport (répertoire contenant les rapports de vérification)}}
|
|
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}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
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és sous forme d'options. Pour l'instant, ces deux scripts existent. A terme, si \verb|verifier_exeHZ.pl| s'avère satisfaisant, la version \verb|.zsh| dispara\^itra du projet.\\
|
|
|
|
Avant de détailler l'utilisation de ces scripts, voici un résumé de la procé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écuter le script \verb|verifier_exeHZ.zsh| ou \verb|verifier_exeHZ.pl [...options...]| en lui indiquant l'exécutable à tester\\
|
|
\end{itemize}
|
|
|
|
\subsubsection*{\underline{Script \texttt{verifier\_exeHZ.zsh}} :}
|
|
Le script \verb|verifier_exeHZ.zsh| lance automatiquement tous les tests pré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é 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| (éventuellement créé 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'éditeur de texte \verb|nedit| est disponible.
|
|
|
|
Le script \verb|verifier_exeHZ.zsh| prend un argument : le nom de l'exécutable Herezh++. Typiquement, cet exécutable est présent dans un répertoire pointé par la variable environnement \verb|$PATH|. Mais on peut également donner un chemin absolu ou relatif.\\
|
|
Exemples :
|
|
\begin{itemize}
|
|
\item[$\bullet$] cas d'un exé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écutable spécifié 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ère identique. Toutes les informations mentionnées pour \verb|verifier_exeHZ.zsh| sont valables pour \verb|verifier_exeHZ.pl|. Cette version offre des possibilités supplé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|.\\
|
|
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}
|
|
|
|
|
|
%%
|
|
\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é 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és dans le répertoire \verb|Batterie| selon l'arborescence montrée sur la figure \ref{arbo_tests}. Le classement actuel est le suivant :
|
|
\begin{itemize}
|
|
\item[$\bullet$] \verb|FONCTION_UNIQUE| : répertoire dédié au simple test d'une fonctionnalité (une loi de comportement, un mode de calcul, un type d'élément, ...). En géné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éral, ce sont des tests "Longs".
|
|
\item[$\bullet$] \verb|AUTRES| : tests difficiles à classer. Ce répertoire peut aussi servir de lieu de dép\^ot temporaire avant transfert vers une rubrique dédié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] {TYPE\_DE\_CHARGEMENT}}
|
|
child { node[draw, anchor=west] {UTILITAIRES}}
|
|
}
|
|
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ç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éro de 1 à $N$. Pour chaque fichier \verb|.CVisu|[i], un calcul est lancé. Le premier calcul est celui correspondant au fichier \verb|.CVisu1|. Les calculs suivants pour [i]$>$1 sont des RESTART (si possible) du calcul précédent à partir du dernier incrément sauvegardé (selon option \verb|SAUVEGARDE| du fichier \verb|.info|).\\
|
|
|
|
Pour chaque calcul, un éventuel fichier d'extension \verb|.commande|[i] contient des commandes interactives pour répondre aux différents menus interactifs proposés par Herezh++. Par défaut, un calcul Herezh est exécuté 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é \verb|dimension|, l'option utilisée est \verb|-n| suivie du fichier \verb|.info| (création interactive d'un fichier .info). Il est également possible de définir complètement les arguments donnés à Herezh++ dans un fichier \verb|.argument|[i]. Pour plus d'informations sur les fichiers facultatifs, on peut se référer à la section \ref{section_fichiers_facultatifs}.\\
|
|
|
|
Une fois un test terminé, le répertoire du test est restauré dans son état d'origine (restauration de l'état initial du fichier \verb|.info| et suppression de tous les fichiers qui n'étaient pas présents à l'origine).
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\subsubsection{Vé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é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érence. Si l'écart absolu et relatif entre les données de référence et les données du calcul sont inférieures à une tolérance, alors le test est réussi. Les tolérances par défaut sont en absolu 1e-6 et en relatif 1e-3. Il est possible de choisir librement les tolérances dans un fichier \verb|.precision|[i]. Pour une grandeur $X$ générée à l'issue du calcul [i] et sa valeur de référence $X_{ref}$ contenue dans le fichier \verb|.maple.ref|[i], le test est réussi si les relations de comparaison suivantes sont respecté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ées, seule la dernière ligne est traité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écutable d'extension \verb|.verif|[i], signifiant que le calcul n°[i] sera vérifié par un script libre.\\
|
|
\end{itemize}
|
|
\item[$\bullet$] vérification simple de l'exécution :
|
|
\begin{itemize}
|
|
\item[] en l'absence de fichier \verb|.maple.ref| ou de script \verb|.verif|, la vérification est considérée \verb|OK| si le calcul s'est lancé normalement et terminé normalement (que le calcul ait convergé 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| (éventuellement vide dans certains cas)
|
|
\item[$\bullet$] les fichiers \verb|.CVisu|[i] (éventuellement vides dans certains cas)
|
|
\item[$\bullet$] tous les fichiers nécessaires à l'exécution des calculs (maillage \verb|.her|, etc...)\\
|
|
\end{itemize}
|
|
|
|
Les fichiers facultatifs en lien avec l'exécution d'un test sont :
|
|
\begin{itemize}
|
|
\item[$\bullet$] les fichiers maple de référence (fichiers d'extension \verb|.maple.ref|[i])
|
|
\item[$\bullet$] les fichiers de pré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écutables d'extension \verb|.verif|[i])
|
|
\item[$\bullet$] les fichiers donnant les arguments à l'exé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 à 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é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és par d'autres codes de calcul ou par des solutions analytiques (bien que le fichier \verb|README| puisse \^etre utilisé pour écrire ces donné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é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çabilité 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ésent à 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é.\\
|
|
|
|
Ce document est rédigé 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éer un nouveau test consiste à 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é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ée sur la figure \ref{arbo_repertoire_test} et les règles suivantes sont à respecter :
|
|
\begin{itemize}
|
|
\item[$\bullet$] Le nom du nouveau répertoire est choisi en utilisant uniquement les lettres de a à z (sans accent), les chiffres de 0 à 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à, il y a un script dédié pré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 à la racine du projet (c'est-à-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ésent dans le répertoire. Ce fichier doit \^etre présent m\^eme s'il est vide.
|
|
\item[$\bullet$] Pour chaque calcul, il est nécessaire de créer un fichier \verb|.CVisu| (\verb|.CVisu1|, \verb|.CVisu2|, etc...) m\^eme si celui-ci est vide. Ces fichiers servent non seulement à Herezh++ mais également au script \verb|Perl/test.pl| pour repérer les calculs à lancer (un calcul par fichier \verb|.CVisu|).
|
|
\item[$\bullet$] tous les fichiers \verb|.CVisu|[i] et les fichiers facultatifs nécessaires à l'exé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'é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ées sur la figure \ref{format_fichier_README}. Ces deux rubriques serviront à géné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 écrire des lignes de 3 tirets ou plus (\verb|---| ou plus) dans le corps d'une rubrique. Ces lignes servent à repé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[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 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écution du test. Notamment, certains fichiers ont un format bien pré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éthodologie}\label{subsection_methodologie}
|
|
|
|
Avant l'ajout définitif du répertoire de test dans la batterie, il est plus que conseillé de construire pas à 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érer le reste du projet. La méthodologie préconisée est :
|
|
\begin{enumerate}[label={\arabic*})]
|
|
\item cré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é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é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 à s'inspirer des répertoires déjà existants dans la batterie
|
|
\item se placer dans \verb|rep_tmp| et exé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'à ce que le test fonctionne
|
|
\item créer le fichier \verb|README| dans \verb|Test_R_nom_test| (voir section \ref{section_fichiers_obligatoires})
|
|
\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 :\\
|
|
\verb|cvs add Verif_Herezh/Batterie/.../rep_dest/Test_R_nom_test/*|
|
|
\item[$>$] Actualisation définitive du projet CVS en se plaç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ès recommandée car elle permet de supprimer automatiquement les répertoires vides dès l'import du projet (voir é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é que le répertoire effacé 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ée sur la figure \ref{format_fichier_README}. La syntaxe de l'intitulé des deux rubriques obligatoires "But du test" et "Description du calcul" doit \^etre strictement respectée. Il est fortement encouragé de renseigner les rubriques "Auteur" et "Mots-cles". Les autres rubriques sont indiquées à titre de proposition et pour des questions d'harmonie sur la forme d'un test à l'autre. Comme montré sur la figure \ref{format_fichier_README}, chaque titre de rubrique est précédé et suivi d'une ligne d'au moins trois tirets (\verb|---| et plus). Les lignes de tirets doivent \^etre réservées aux titres des rubriques (Ce motif sert à repé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ération automatique du catalogue de tests!!).\\
|
|
|
|
2) Dans les rubriques obligatoires, il est possible d'insérer des figures gr\^ace à 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é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é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 écrit sur plusieurs lignes mais ces retours à la ligne ne seront pas pris en compte dans la mise en forme du document pdf. Les formats d'images sont ceux supportés par \verb|pdflatex| et \verb|\includegraphics|, c'est-à-dire typiquement : \verb|.pdf|, \verb|.png| et \verb|.jpg|. Les fichiers image doivent \^etre situés dans le répertoire du test (c'est-à-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'échelle entre crochets à 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 également insé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çu du maillage \fin_legende|\\
|
|
\hspace*{0.5cm} $>$ Exemple sur une ligne avec facteur d'échelle de 60\% :\\
|
|
\hspace*{1.5cm} \verb|\figures: maillage.pdf[0.6] \legende: Aperçu du maillage \fin_legende|\\
|
|
\hspace*{0.5cm} $>$ Exemple sur une ligne avec 2 figures é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|(à gauche) et vue de côté (à droite) \fin_legende|
|
|
|
|
|
|
|
|
\subsubsection*{$\bullet$ \texttt{.info} :}
|
|
\begin{itemize}
|
|
\item[] Ce fichier est l'unique fichier d'extension \verb|.info| présent dans le répertoire. Il est obligatoire mais peut \^etre vide (par exemple dans le cas d'un cré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érieur au n°1 tentera de faire un \verb|RESTART| du calcul précédent. C'est pourquoi il faut faire attention au paramètre \verb|controle|$\rightarrow$\verb|SAUVEGARDE|. Le paramè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ésence de ces fichiers est obligatoire mais ils peuvent \^etre vides à 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écution du test}\label{section_fichiers_facultatifs}
|
|
|
|
|
|
|
|
%%
|
|
\subsubsection*{$\bullet$ \texttt{.precision} :}
|
|
\begin{itemize}
|
|
\item[] Ce fichier permet de modifier les précisions par défaut pour la comparaison des données au format maple pour un certain nombre de colonnes du fichier \verb|.maple|. Par défaut, les pré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é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é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 à un menu interactif. Sa présence équivaut à lancer un calcul Herezh++ de la maniè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 à la ligne. En particulier, il ne faut pas oublier le retour à la ligne à la fin de la dernière ligne.\\
|
|
\end{itemize}
|
|
|
|
%%
|
|
\subsubsection*{$\bullet$ \texttt{.verif} :}
|
|
\begin{itemize}
|
|
\item[] Ce fichier est un exé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 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écutable peut tout à fait afficher d'autres informations à titre facultatif.\\
|
|
|
|
Il est important de noter que cet exécutable reçoit 2 arguments lorsqu'il est appelé. 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écutable Herezh++ (en chemin absolu)
|
|
\item[- argument 2 :] 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}\\
|
|
|
|
Cet exécutable peut \^etre programmé dans n'importe quel langage, mais pour éviter les problèmes de compilateur, il est préférable d'éviter les langages nécessitant une compilation (par exemple : C, C++, Fortran, etc...). Il est préférables d'utiliser les langages interprétés (par exemple : sh, zsh, Perl, Python, etc...). Pour augmenter la portabilité de ces scripts, il faut éviter de mettre un chemin absolu vers l'interpréteur dans l'en-t\^ete. On utilisera la forme : \verb|#!/usr/bin/env| suivi du nom de l'interpréteur (exemples : \verb|#!/usr/bin/env perl| ou bien \verb|#!/usr/bin/env python|).\\
|
|
|
|
\underline{Remarque} : le script \verb|.verif| étant lancé après le calcul, il peut tout à fait servir de moyen détourné pour modifier le fichier \verb|.info| avant le calcul suivant (par exemple, pour tester un m\^eme mot-clé mais avec diverses valeurs de paramètres). Voir exemple section \ref{section_exemple_test_5}.
|
|
|
|
\end{itemize}
|
|
|
|
%%
|
|
\subsubsection*{$\bullet$ \texttt{.argument} :}
|
|
\begin{itemize}
|
|
\item[] Ce fichier permet de définir librement les arguments donnés à l'exé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é dans un fichier \verb|.log| avec la commande \verb|tee|. Il est donc inutile voire bloquant de rajouter une redirection supplémentaire parmi les arguments. Au final, pour un fichier contenant N lignes, la commande Herezh++ lancé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é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é. Il peut contenir un nombre quelconque de lignes de données mais seule la dernière sera utilisée pour la comparaison de \verb|.maple| explicitée à la section \ref{subsubsection_verification}.
|
|
\end{itemize}
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\subsection{Exemples de tests}\label{section_exemples_tests}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\subsubsection{Calcul classique : comparaison de données maple}\label{section_exemple_test_1}
|
|
|
|
Il s'agit du cas le plus courant consistant à réaliser des calculs générant des données au format maple à comparer avec les donné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érer un fichier \verb|.maple| qui sera comparé 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érer automatiquement les sorties maple en choisissant parmi les 2 possibilité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équence de sortie des résultats, seule la dernière ligne de données du fichier \verb|.maple| est vérifiée.\\
|
|
|
|
Le test \verb|Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_non_dynamique| est un exemple de calcul classique utilisant les précisions par défaut pour la comparaison des donné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é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écial est le fichier d'extension \verb|.verif1|.
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\subsubsection{Calcul consistant à cré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é \verb|dimension|. Pour cela, on crée simplement un fichier \verb|.info| vide. Un fichier \verb|.commande| sera forcément nécessaire pour répondre au menu interactif de cré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éé à un fichier \verb|.info| de référence. Attention au fait que le fichier \verb|.info| de réfé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 avancé sur l'utilisation d'un \texttt{.verif} pour un test multiparamètres}\label{section_exemple_test_5}
|
|
**** en cours d'écriture ***
|
|
|
|
%%
|
|
\clearpage
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Évolution des mises à jour}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{itemize}
|
|
|
|
\item[$\bullet$] 2015-06-29 (Julien Troufflard) :
|
|
\begin{itemize}
|
|
\item[-] création d'un nouveau script (\verb|Perl/genere_catalogue_tests.pl|). Il génère automatiquement une documentation sur les tests (résumé et index pour recherche par mots-clés). Ce document est placé à 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é à tout moment en définissant une balise de fin de rubrique à 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é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é sous CVS. Il s'appelle \verb|doc_procedure_verification.pdf| et est placé à la racine du projet (il s'agit simplement du fichier généré 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 éviter de lancer tous les tests. La version précédente \verb|verifier_exeHZ| est conservée mais renommée en \verb|verifier_exeHZ.zsh|. A terme, cette version zsh sera supprimée du projet CVS.\\
|
|
\end{itemize}%tiret
|
|
|
|
\item[$\bullet$] 2015-07-16 (Julien Troufflard) :
|
|
\begin{itemize}
|
|
\item[-] modif du script de génération automatique du catalogue de tests (script \verb|Perl/genere_catalogue_tests.pl|). Désormais, il est possible d'insérer des figures via une syntaxe par balises dans les fichiers README des tests. La méthode est expliquée à 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à dans la batterie. Est utile au moment de l'ajout d'un nouveau test pour aider à choisir le nom et éviter de choisir un nom déjà 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 à la section \ref{subsection_vue_ensemble}\\
|
|
\item[-] méthodologie pour ajouter un nouveau test : il n'y avait aucune section exposant clairement les étapes à suivre pour créer et ajouter un test, d'où la cré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ément installé sur toutes les machines. Pour éviter d'\^etre pénalisé par ce package, son existence est vérifiée via la subroutine \verb|check_install| du package \verb|Module::Load::Conditional| et, si il existe, l'appel à \verb|Term::ReadKey| est fait via \verb|require| au lieu de \verb|use|. Cette manière de faire pourra \^etre appliqué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ément. Ceci conduisait à croire que le fichier de redirection n'était pas créé et donc renvoyait un problème lié à la redirection de l'affichage. Désormais, un délai est accordé pour attendre la création de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De manière indirecte, ceci a conduit à cré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élioration de la portabilité 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 à l'architecture atypique (et actualisation de la section \ref{section_fichiers_facultatifs} pour signaler cette habitude à prendre pour les fichiers \verb|.verif|).\\
|
|
remarque : modif é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é d'insérer un espace "{\textbackslash}hspace" entre les figures \verb|\figures| (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|). 2) possibilité d'insérer des formules et caractères mathématiques dans les fichiers \verb|README| entre simples \$ ou doubles \$\$ (exemple : \${\textbackslash}nu=0.4\$ ou \$\${\textbackslash}sigma = E{\textbackslash}epsilon\$\$)\\
|
|
\end{itemize}%tiret
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-"
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%\item[$\bullet$] AAAA-MM-JJ (Prénom Nom) :
|
|
%\begin{itemize}
|
|
%\item[-] blabla 1\\
|
|
%\item[-] blabla 2\\
|
|
%.
|
|
%.
|
|
%.
|
|
%\item[-] blabla N\\
|
|
%\end{itemize}%tiret
|
|
|
|
|
|
\end{itemize}%bullet
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\end{document}
|