modif doc utilisateur Doc/doc_procedure_verification.pdf
This commit is contained in:
parent
a8af512db4
commit
0d06d7eb8f
2 changed files with 268 additions and 359 deletions
|
@ -96,16 +96,19 @@ citecolor= green %couleur citation biblio
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
|
|
||||||
|
|
||||||
%
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Introduction {\small \it (Gérard Rio)}}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\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.
|
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:
|
Deux objectifs principaux sont recherchés:
|
||||||
\begin{itemize}
\item la détection d'évolutions malencontreuses dans le fonctionnement d'Herezh++
|
\begin{itemize}
|
||||||
\item la présentation d'exemples de fonctionnement et de mise en données des différentes possibilités offertes par Herezh++.
\end{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.
|
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.
|
||||||
%
|
%
|
||||||
|
@ -126,9 +129,9 @@ L'arborescence du projet CVS est la suivante :\\
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
|
||||||
\section{Lancement de la batterie de tests}
|
\section{Lancement de la batterie de tests}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
Le script \verb|verifier_exeHZ| permet de lancer la batterie de tests. Il lance automatiquement tous les tests pré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| permet de lancer la batterie de tests. Il 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.
|
||||||
|
|
||||||
|
@ -155,13 +158,14 @@ La proc
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
%
|
%%
|
||||||
%
|
|
||||||
\clearpage
|
\clearpage
|
||||||
\newpage
|
\newpage
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Organisation des tests}\label{section_organisation_tests}
|
\section{Organisation des tests}\label{section_organisation_tests}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{Classement des tests}\label{section_classement_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 :
|
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}
|
\begin{itemize}
|
||||||
|
@ -202,27 +206,37 @@ On distingue actuellement deux sortes de tests selon le temps de calcul : les te
|
||||||
%%
|
%%
|
||||||
\clearpage
|
\clearpage
|
||||||
\newpage
|
\newpage
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{Lancement et vérification d'un test}
|
\subsection{Lancement et vérification d'un test}
|
||||||
|
|
||||||
%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsubsection{Lancement des calculs}
|
\subsubsection{Lancement des calculs}
|
||||||
Le script \verb|verifier_exeHZ| a pour fonction de rechercher tous 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| 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 du calcul précédent à partir du dernier incrément sauvegardé (selon option \verb|SAUVEGARDE| du fichier \verb|.info|).\\
|
Le script \verb|verifier_exeHZ| a pour fonction de rechercher tous 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| 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 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}
|
\subsubsection{Vérification}
|
||||||
|
|
||||||
Pour chaque calcul, une vérification est faite pour déterminer si le test est réussi ou non. Le rapport de test contient les indicateurs \verb|OK| ou \verb|ECHEC|. Il y a actuellement 3 types de vérification possible :
|
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}
|
\begin{itemize}
|
||||||
\item[$\bullet$] comparaison des données sorties au format maple :
|
\item[$\bullet$] comparaison des données sorties au format maple :
|
||||||
\begin{itemize}
|
\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]\\
|
\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\\
|
\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}
|
\end{itemize}
|
||||||
\item[$\bullet$] comparaison libre définie par un script :
|
\item[$\bullet$] comparaison libre définie par un script :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[] la vérification peut \^etre librement défini par un script qui a pour fonction de renvoyer \verb|OK| ou \verb|ECHEC|. Ce script est un fichier exécutable d'extension \verb|.verif|[i], signifiant que le calcul n°[i] sera vérifié par un script libre.\\
|
\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}
|
\end{itemize}
|
||||||
\item[$\bullet$] vérification simple de l'exécution :
|
\item[$\bullet$] vérification simple de l'exécution :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
@ -231,7 +245,7 @@ Pour chaque calcul, une v
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{Contenu d'un répertoire de tests}\label{section_contenu_repertoire_test}
|
\subsection{Contenu d'un répertoire de tests}\label{section_contenu_repertoire_test}
|
||||||
Un répertoire de tests contient des fichiers obligatoires et des fichiers facultatifs.\\
|
Un répertoire de tests contient des fichiers obligatoires et des fichiers facultatifs.\\
|
||||||
|
|
||||||
|
@ -258,87 +272,6 @@ D'autres fichiers facultatifs peuvent \^etre contenus dans un r
|
||||||
\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)
|
\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}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Ajout d'un nouveau test}
|
|
||||||
|
|
||||||
|
|
||||||
\subsubsection{Vue d'ensemble}
|
|
||||||
Globalement, 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, 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|.
|
|
||||||
\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$] tous les fichiers \verb|.CVisu|[i] et les fichiers facultatifs nécessaires à l'exécution d'un test (\verb|.verif|[i], \verb|[i].commande|, etc...) ont la m\^eme racine que le fichier \verb|.info| (par exemple, si on a le fichier \verb|nom_fichier.info|, l'éventuel fichier \verb|.verif1| doit avoir pour nom \verb|nom_fichier.verif1|)
|
|
||||||
\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$] le fichier \verb|README| contient obligatoirement les rubriques "\it But du test\rm " et "\it Description du calcul\rm " montrées sur la figure \ref{format_fichier_README}. Ces deux rubriques serviront à générer automatiquement une documentation pdf (catalogue de tests).\\
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}[!h]
|
|
||||||
\centering
|
|
||||||
\begin{tikzpicture}[%
|
|
||||||
grow via three points={one child at (0.5,-0.7) and
|
|
||||||
two children at (0.5,-0.7) and (0.5,-1.5)},
|
|
||||||
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
|
|
||||||
\node[draw] {Test\_[RL]\_nom\_repertoire}
|
|
||||||
child { node[draw, anchor=west] {README}}
|
|
||||||
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.info}}}
|
|
||||||
child[missing] { }
|
|
||||||
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}1}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}1}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}1}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}1}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}1}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}1}}}
|
|
||||||
child[missing] { }
|
|
||||||
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}2}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}2}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}2}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}2}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}2}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}2}}}
|
|
||||||
child { node[anchor=west] {.}}
|
|
||||||
child { node[anchor=west] {.}}
|
|
||||||
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}N}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}N}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}N}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}N}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}N}}}
|
|
||||||
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}N}}}
|
|
||||||
child[missing] { }
|
|
||||||
child { node[draw, anchor=west] {(*) autres fichiers facultatifs}};
|
|
||||||
\end{tikzpicture}\\
|
|
||||||
\hspace*{-5.cm}\small (*) fichiers facultatifs\normalsize
|
|
||||||
\caption{Contenu d'un répertoire de test}
|
|
||||||
\label{arbo_repertoire_test}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
%%%%
|
|
||||||
\subsubsection{Fichiers obligatoires}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item[$\bullet$] \verb|README| :\\
|
|
||||||
La trame du fichier est montrée sur la figure \ref{format_fichier_README}. La syntaxe de l'intitulé des deux rubriques obligatoires (en bleu) doit \^etre strictement respectée. Les autres rubriques sont indiquées à titre de proposition et pour des questions d'harmonie sur la forme d'un test à l'autre.\\
|
|
||||||
\item[$\bullet$] \verb|.info| :\\
|
|
||||||
Ce fichier 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|).\\
|
|
||||||
\item[$\bullet$] \verb|.CVisu|[i] :\\
|
|
||||||
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}
|
|
||||||
|
|
||||||
%%%%
|
|
||||||
\subsubsection{Fichiers facultatifs}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item[$\bullet$] \verb|| :
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
%%%%
|
|
||||||
\subsubsection{Calcul classique : comparaison de données maple}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\clearpage
|
\clearpage
|
||||||
\newpage
|
\newpage
|
||||||
\begin{figure}[!h]
|
\begin{figure}[!h]
|
||||||
|
@ -389,258 +322,66 @@ du texte...
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Ajout d'un nouveau test}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Vue d'ensemble}
|
||||||
|
Globalement, 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}.
|
||||||
{\color{red} Le document "???toto.pdf???" est le catalogue des tests actuellement présents dans la batterie. Il décrit succinctement la nature d'un test (but du test et description du calcul). Dans chaque répertoire de test, un fichier 1README.txt donne des informations sur le test (But du test, Description du calcul, Grandeurs de comparaison, Informations sur les fichiers facultatifs, Comparaison avec des solutions analytiques, Comparaison avec des codes de calcul). C'est à partir de cette documentation locale que le document global "???toto.pdf???" est construit, en reprenant le contenu des rubriques "But du test" et "Description du calcul".\\
|
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 :
|
||||||
|
|
||||||
Le fichier 1README.txt de chaque test a le format montré sur la figure \ref{formet_fichier_1README}. {\color{red} Problème des accents dans un fichier ASCII. Les accents et apostrophes sont reconnus pour poser des problèmes dans les fichiers ASCII. Mais si on choisit de ne pas les mettre, la construction du catalogue de test va \^etre rédigée dans un mauvais français. proposition : écrire les fichiers 1README.txt, donc le catalogue des tests, en anglais (risqué mais efficace) et sans apostrophes}.\\
|
|
||||||
|
|
||||||
Détail du contenu des rubriques :
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[$\bullet$] But du test (rubrique obligatoire) :
|
\item[$\bullet$] Le nom du nouveau répertoire est choisi en utilisant uniquement les lettres de a à z, 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|.
|
||||||
\begin{itemize}
|
\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[ ] Indiquer de manière précise et concise quelle est la ou les fonctionnalités de Herezh qui sont testées et préciser si une grandeur de sortie est particulièrement à surveiller (à noter que le test n'a pas forcément pour but de tester une fonction particulièrement, voir le 3ème exemple ci-dessous)
|
\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[+] Exemples :
|
\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|)
|
||||||
\begin{itemize}
|
\item[$\bullet$] le fichier \verb|README| contient obligatoirement les rubriques \it But du test \rm et \it Description du calcul \rm montrées sur la figure \ref{format_fichier_README}. Ces deux rubriques serviront à générer automatiquement une documentation pdf (catalogue de tests).\\
|
||||||
\item[-] test du mot-cle non\_dynamique
|
|
||||||
\item[-] test de la loi de comportement MOONEY\_RIVLIN\_3D en cisaillement simple
|
|
||||||
\item[-] exemple d application industrielle : pas de test particulier
|
|
||||||
\item[-] verification de la contrainte SIG11 apres 3 cycles charge-decharge pour une loi additive ISOHYPER3DORGEAS1 + HYSTERESIS\_3D
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\item[$\bullet$] Description du calcul (rubrique obligatoire) :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] Détails techniques sur le calcul (résumé du problème, conditions limites (symétries), loi de comportement, chargement, etc...). Dans cette rubrique, on explique ce qui est simulé et comment avec toutes les informations nécessaires pour comprendre le calcul et pointer des points particuliers. On peut par exemple décrire le calcul en quelques phrases et ensuite s'inspirer de l'ordre du fichier \verb|.info| pour hiérarchiser les détails techniques
|
|
||||||
\item[+] Exemple :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] simulation d un essai de traction uniaxiale jusqu a striction sur une eprouvette de longueur 200, de largeur 50 et d epaisseur 1.5 pour une loi de comportement [type de loi]. La striction est obtenue en appliquant une loi de comportement legerement differente dans la zone ou on souhaite obtenir la striction. Pour les elements de cette zone, la loi de comportement a le parametre [nom du parametre] egal a [valeur] tandis qu il est egal a [valeur] pour tous les autres elements. Par symetrie, seul un huitieme de la geometrie est modelise, ce qui donne une geometrie de longueur 100 (suivant X), de largeur 25 (suivant Y) et d epaisseur 0.75 (suivant Z).
|
|
||||||
\begin{itemize}
|
|
||||||
\item[-] maillage (avec Gmsh) constitue de 5000 elements HEXAEDRE LINEAIRE a un seul point d integration (maille plus finement dans la zone de striction)
|
|
||||||
\item[-] loi de comportement de type [indiquer les mot-cles Herezh par exemple] pour le set d element [nom du set 1]
|
|
||||||
\item[-] loi de comportement de meme type que precedemment mais avec [decrire le parametre different] pour le set d element [nom du set 2]
|
|
||||||
\item[-] chargement par deplacement impose de 9.5 suivant X des noeuds en X=100 (la courbe de charge [nom de la courbe] pilote ce deplacement)
|
|
||||||
\item[-] conditions de blocage prenant en compte les symetries :\\
|
|
||||||
- blocage suivant X des noeuds du plan X=0\\
|
|
||||||
- blocage suivant Y des noeuds du plan Y=0\\
|
|
||||||
- blocage suivant Z des noeuds du plan Z=0
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\item[$\bullet$] Grandeurs de comparaison :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] Il s'agit de résumer les grandeurs importantes du \verb|.maple|. L'utilisateur voulant conna\^itre l'ensemble des grandeurs pourra toujours consulter le fichier \verb|.maple.ref|. Cette rubrique est l'occasion de donner des détails supplémentaires à ceux déjà présents dans le \verb|.maple.ref|.
|
|
||||||
\begin{itemize}
|
|
||||||
\item[+] Exemples :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] deplacement au noeud [no] (noeud au fond de l entaille)\\
|
|
||||||
\hspace*{1.2cm}- grandeur : U2
|
|
||||||
\item[ ] contrainte dans le sens de traction au point d integration [no] de l element [no]\\
|
|
||||||
\hspace*{1.2cm}- grandeur : SIG22
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\item[$\bullet$] Informations sur les fichiers facultatifs :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] Il s'agit de donner une description succinte des fichiers non indispensables au calcul Herezh
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\item[$\bullet$] Comparaison avec des solutions analytiques :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] Cette rubrique permet de donner toutes les informations nécessaires à la comparaison entre le calcul Herezh et des solutions analytiques. Soit on écrit directement ici les formules et résultats, soit on fait référence à des fichiers présents dans le répertoire. Ne pas oublier de nommer explicitement les grandeurs Herezh à comparer (SIG11, X1, etc...) et les valeurs obtenues avec la solution analytique.
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\item[$\bullet$] Comparaison avec des codes de calcul :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[ ] Cette rubrique permet de donner toutes les informations nécessaires à la comparaison entre le calcul Herezh et le calcul avec d'autres codes de calcul. Soit on écrit directement ici les résultats, soit on fait référence à des fichiers présents dans le répertoire. Ne pas oublier de nommer explicitement les grandeurs Herezh à comparer (SIG11, X1, etc...) et les valeurs obtenues par l'autre code de calcul.
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{figure}[!h]
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}[%
|
||||||
|
grow via three points={one child at (0.5,-0.7) and
|
||||||
|
two children at (0.5,-0.7) and (0.5,-1.5)},
|
||||||
|
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}]
|
||||||
|
\node[draw] {Test\_[RL]\_nom\_repertoire}
|
||||||
|
child { node[draw, anchor=west] {README}}
|
||||||
|
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.info}}}
|
||||||
|
child[missing] { }
|
||||||
|
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}1}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}1}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}1}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}1}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}1}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}1}}}
|
||||||
|
child[missing] { }
|
||||||
|
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}2}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}2}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}2}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}2}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}2}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}2}}}
|
||||||
|
child { node[anchor=west] {.}}
|
||||||
|
child { node[anchor=west] {.}}
|
||||||
|
child { node[draw, anchor=west] {nom\_calcul{\color{blue}.CVisu}{\color{red}N}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.maple.ref}{\color{red}N}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.precision}{\color{red}N}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.commande}{\color{red}N}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.verif}{\color{red}N}}}
|
||||||
|
child { node[draw, anchor=west] {(*) nom\_calcul{\color{blue}.argument}{\color{red}N}}}
|
||||||
|
child[missing] { }
|
||||||
|
child { node[draw, anchor=west] {(*) autres fichiers facultatifs}};
|
||||||
|
\end{tikzpicture}\\
|
||||||
|
\hspace*{-5.cm}\small (*) fichiers facultatifs\normalsize
|
||||||
|
\caption{Contenu d'un répertoire de test}
|
||||||
|
\label{arbo_repertoire_test}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
La sous-section \ref{section_commandes_CVS} est un rappel des commandes CVS de base. Les sous-sections \ref{section_fichiers_obligatoires} et \ref{section_fichiers_facultatifs} donnent des informations sur les fichiers obligatoires et les fichiers facultatifs en lien avec l'exécution du test. Notamment, certains fichiers ont un format bien précis pour \^etre exploitables. Ensuite, la sous-section \ref{section_exemples_tests} a pour but de balayer les cas les plus courant de tests et de donner des exemples.
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Commandes usuelles CVS}\label{section_commandes_CVS}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
%%
|
|
||||||
\section{Fonctionnement}\label{section_2}
|
|
||||||
|
|
||||||
\subsection{Importation du répertoire de vérification depuis CVS}
|
|
||||||
\begin{verbatim}
|
|
||||||
> cvs co Verif_Herezh
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Execution de la vérification}
|
|
||||||
|
|
||||||
Le script \verb|verifier_exeHZ| permet de lancer la vérification en utilisant l'exécutable Herezh++ de son choix. Le premier argument donné est le nom de cet exécutable. Par exemple :
|
|
||||||
\begin{verbatim}
|
|
||||||
> verifier_exeHZ HZppfast_Vn-1
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
{\color{red} On aimerait que ce script puisse avoir deux r\^oles} :
|
|
||||||
\begin{itemize}
|
|
||||||
\item r\^ole principal : lancer la vérification du code (tous les tests {\color{red} ou une partie seulement des tests})
|
|
||||||
\item {\color{red} r\^ole secondaire : permettre à quelqu'un qui vient d'ajouter un test de vérifier si ce test fonctionne (sans lancer toute la batterie)}\\
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
Le script \verb|verifier_exeHZ| cherche les répertoires de tests dans \underline{toute l'arborescence depuis l'endroit où la commande est exécutée}. Tout répertoire dont le nom commene par \verb|Test_R| ou \verb|Test_L| est considéré comme étant un répertoire de test. {\color{red} Actuellement, il n'est pas possible de lancer cette commande ailleurs que dans le répertoire où se trouve les répertoires \verb|Perl| et \verb|Rapport|. Moyens d'y remédier :
|
|
||||||
\begin{itemize}
|
|
||||||
\item solution 1 : utiliser les scripts actuels mais c'est à la charge de l'utilisateur de faire en sorte que \verb|verifier_exeHZ| trouve l'accès aux scripts contenus dans \verb|Perl| (légère modif de \verb|verifier_exeHZ| pour pouvoir renseigner des variables de chemin par exemple)\\
|
|
||||||
Inconvénient : il y a le risque qu'un utilisateur qui "commit" le projet avec certains paramètres dans \verb|verifier_exeHZ|, modifie les paramètres de \verb|verifier_exeHZ| des autres membres du projet lorsqu'ils feront un "update -dP"
|
|
||||||
\item solution 2 : plut\^ot que d'avoir plusieurs scripts, on les concatène en un seul script auto-suffisant (le script s'appellera toujours \verb|verifier_exeHZ| mais réécrit en perl et les scripts contenus dans le répertoire \verb|Perl| seront disponibles sous forme de subroutine au sein de \verb|verifier_exeHZ|)\\
|
|
||||||
\end{itemize}
|
|
||||||
}%fin color{red}
|
|
||||||
|
|
||||||
Un répertoire de test contient un ou plusieurs fichiers de sortie \verb|.CVisu[no]| (numéroté à partir de 1). Un calcul par fichier \verb|.CVisu[no]| est fait lors de la vérification. {\color{red} A l'origine, le fonctionnement était de vérifier une seule valeur à la fois. Mais ce mode de fonctionnement n'est pas forcément utile désormais car le script \verb|test.pl| peut désormais comparer plusieurs valeurs à la fois. Donc, autant faire un seul \verb|.CVisu| avec toutes les valeurs d'un coup.} Chaque calcul génère un fichier \verb|.maple|. Un fichier de référence d'extension \verb|.maple.ref[no]| sert de comparaison (un fichier de référence par \verb|.CVisu|). Le nombre de grandeur en sortie est quelconque mais les fichiers \verb|.maple| ne doivent contenir qu'une seule ligne de données.
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Rapport de vérification}
|
|
||||||
|
|
||||||
Pour chaque grandeur de sortie de chaque calcul de chaque test, la comparaison est valide si l'écart entre la grandeur en sortie du calcul et celle écrite dans le fichier de référence est inférieur à une tolérance absolue et une tolérance relative. Le script \verb|verifier_exeHZ| génère un rapport pour les tests rapides et un rapport pour les tests longs. Les rapports générés indiquent la validité (indicateur : OK) ou l'échec (indicateur : ECHEC) pour chaque grandeur (repérée par son numéro de colonne dans le fichier \verb|.maple|). L'affichage produit indique le chemin du répertoire de test, le no du fichier \verb|.CVisu| et les numéros de colonnes de chaque grandeur. Par exemple :
|
|
||||||
\begin{verbatim}
|
|
||||||
./[chemin]/Test_[type]_[nom]/.CVisu[no]
|
|
||||||
-> grandeur testee : colonne [1]
|
|
||||||
- comparaison absolue (precision : 1e-12) -> OK
|
|
||||||
- comparaison relative (precision : 1e-05%) -> OK
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
-> grandeur testee : colonne [ième colonne]
|
|
||||||
- comparaison absolue (precision : 1e-12) -> ECHEC
|
|
||||||
- comparaison relative (precision : 1e-05%) -> OK
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Les précisions figurent dans le script \verb|Perl/test.pl| et les valeurs de tolérance actuelles sont :
|
|
||||||
\begin{verbatim}
|
|
||||||
my $PREC_ABSOLU = 1.e-12;#precision pour la comparaison absolue
|
|
||||||
my $PREC_RELATIVE_POURCENT = 1.e-5;#precision pour la comparaison relative (en pourcent)
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
{\color{red} }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%
|
|
||||||
\section{Définition d'un répertoire de test}\label{section_3}
|
|
||||||
|
|
||||||
Un test est constitué d'un répertoire contenant des fichiers obligatoires et des fichiers facultatifs. Les fichiers obligatoires sont destinés à comparer deux versions de Herezh et sont les fichiers utilisés pour le fonctionnement de la vérification automatisée.
|
|
||||||
|
|
||||||
{\color{red} Dans les fichiers facultatifs, on trouve le ou les fichiers permettant d'affecter des valeurs particulières aux précisions pour la comparaison (fichiers \verb|.precision|). Les fichiers facultatifs sont aussi destinés à la comparaison avec d'autres codes de calcul ou des solutions analytiques. La comparaison avec d'autres codes ou des solutions analytiques n'est pas automatisée. C'est l'utilisateur qui doit faire cette comparaison "manuellement". Dans la mesure du possible, il faut fournir les fichiers permettant de re-générer les résultats (une mise en données Abaqus \verb|.inp| par exemple, ou un script de calcul d'une solution analytique) et surtout une synthèse des résultats donnés sous forme de texte (soit un fichier séparé pdf ou texte, soit directement dans le fichier obligatoire 1README.txt) et préciser la version du logiciel de comparaison.}\\
|
|
||||||
|
|
||||||
Un test a les caractéristiques suivantes :
|
|
||||||
\begin{itemize}
|
|
||||||
\item un nom de répertoire choisi en respectant certaines règles
|
|
||||||
\item des fichiers
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Nom du répertoire}\label{section_3_subsection_1}
|
|
||||||
|
|
||||||
Un répertoire de test a un nom de la forme (respecter la casse) : \verb|Test_[duree]|{\color{red} \verb|_[dim]|}\verb|_[nom]|
|
|
||||||
|
|
||||||
avec :
|
|
||||||
\begin{itemize}
|
|
||||||
\item \verb|[duree]| : indicateur de la durée du calcul (Rapide ou Long) ; valeur = R ou L
|
|
||||||
\item (*) {\color{red} \verb|[dim]| : indication sur la dimension du problème ; valeur = 1D, 2D, 3D ou AXI}
|
|
||||||
\item (**) \verb|[nom]| : nom du test
|
|
||||||
\item[ ]
|
|
||||||
\item[ ] \footnotesize (*) le champ \verb|[dim]| n'existe pas si on utilise une arborescence de classement avec des répertoires 1D, 2D, 3D, AXI (voir section \ref{section_1_subsection_2})\normalsize
|
|
||||||
\item[ ] \footnotesize (**) le champ \verb|[nom]| est choisi librement exceptées les règles suivantes : ne doit pas contenir d'espaces, éviter si possible d'utiliser un mot-clé Herezh, {\color{red} autres règles...}\normalsize\\
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Choix de son emplacement dans l'arborescence de la batterie}\label{section_3_subsection_2}
|
|
||||||
|
|
||||||
\begin{itemize}
|
|
||||||
\item[$\bullet$] tests rapides dédiés à la vérification d'un mot-clé\\
|
|
||||||
$\Rightarrow$ répertoire \verb|Batterie/FONCTION_UNIQUE|.
|
|
||||||
\item[$\bullet$] tests rapides dédiés à la vérification d'une combinaison de mot-clés\\
|
|
||||||
$\Rightarrow$ répertoire \verb|Batterie/FONCTIONS_COMBINEES|
|
|
||||||
\item[$\bullet$] calculs complets (exemples complexes)\\
|
|
||||||
$\Rightarrow$ répertoire \verb|Batterie/CALCUL_COMPLET|
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Contenu du répertoire}\label{section_3_subsection_3}
|
|
||||||
|
|
||||||
Un répertoire de test contient les fichiers suivants :
|
|
||||||
\begin{itemize}
|
|
||||||
\item[$\bullet$] FICHIERS OBLIGATOIRES :
|
|
||||||
\begin{itemize}
|
|
||||||
\item un fichier nommé \verb|1README.txt| donnant des informations sur le test (voir section \ref{section_1_subsection_3})
|
|
||||||
\item un seul fichier de calcul \verb|.info| (*) de nom : \verb|[nom_calcul].info| (**)
|
|
||||||
\item un ou plusieurs fichiers \verb|.CVisu| numérotés à partir de 1 : \verb|[nom_calcul].CVisu1|, \verb|[nom_calcul].CVisu2|, ...
|
|
||||||
\item autant de fichiers de référence \verb|.maple.ref| qu'il y a de fichiers \verb|.CVisu| avec la m\^eme numérotation que les fichiers \verb|.CVisu| : \verb|[nom_calcul].maple.ref1|, \verb|[nom_calcul].maple.ref2|, ...
|
|
||||||
\item tous les fichiers nécessaires au fonctionnement du calcul (fichiers appelés dans le fichier \verb|.info|. Par exemple : les fichiers de maillage). Attention à l'extension de ces fichiers (*) (***)
|
|
||||||
\item[ ]
|
|
||||||
\item[ ] \footnotesize (*) le répertoire doit absolument contenir \underline{un seul fichier ayant l'extension .info} pour des raisons de fonctionnement des scripts de vérification\normalsize
|
|
||||||
\item[ ] \footnotesize (**) le champ \verb|[nom_calcul]| est choisi librement exceptées les règles suivantes : ne doit pas contenir d'espaces, éviter si possible d'utiliser un mot-clé Herezh, {\color{red} autres règles...}\normalsize
|
|
||||||
\item[ ] \footnotesize (***) Attention : l'extension \verb|.precision| est réservée aux fichiers définissant les précisions de test\normalsize\\
|
|
||||||
\end{itemize}
|
|
||||||
{\color{red}
|
|
||||||
\item[$\bullet$] FICHIERS FACULTATIFS :
|
|
||||||
\begin{itemize}
|
|
||||||
\item {\color{red} fichiers d'extension \verb|.precision[no]| contenant les précisions absolue et relative de chaque grandeur (à numéroter pour affecter un fichier de précision à tel ou tel fichier \verb|.CVisu|)}
|
|
||||||
\item des fichiers de calcul et de résultats issus d'autres codes de calcul (****)
|
|
||||||
\item des fichiers donnant une solution analytique du test (par exemple : documentation en pdf, script de calcul, etc...)
|
|
||||||
\item[ ]
|
|
||||||
\item[ ] \footnotesize (****) Ne pas oublier de préciser la version de ces codes de calcul (par exemple dans le fichier 1README.txt dans la rubrique "Comparaison avec des codes de calcul")\normalsize
|
|
||||||
\item[ ]
|
|
||||||
\item[ ] \footnotesize \underline{Remarque} : que soit pour une comparaison avec un autre code de calcul ou une solution analytique, il faut faire attention au fait que Herezh fait toujours des calculs non-linéaires et que par défaut la mesure de déformation est celle d'Almansi\normalsize\\
|
|
||||||
\end{itemize}
|
|
||||||
}
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
{\color{red}
|
|
||||||
Les fichiers facultatifs de précision ont le format suivant :
|
|
||||||
\begin{verbatim}
|
|
||||||
#eventuellement des commentaires...
|
|
||||||
[no colonne] prec_absolue prec_relative
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
#eventuellement des commentaires...
|
|
||||||
[no colonne] prec_absolue prec_relative
|
|
||||||
\end{verbatim}
|
|
||||||
Il n'est pas nécessaire de fournir une précision pour chacune des grandeurs. Par contre, pour chaque ligne déclarée, il faut fournir la précision absolue et la précision relative. Par défaut, les précisions sont \verb|prec_absolue|=1.e-12 et \verb|prec_relative|=1.e-5. Par exemple, si un fichier \verb|.maple| contient les grandeurs suivantes à un point d'intégration :
|
|
||||||
\begin{verbatim}
|
|
||||||
temps X Y Z SIG11
|
|
||||||
\end{verbatim}
|
|
||||||
où \verb|X|, \verb|Y|, \verb|Z| sont les positions du point d'intégration.\\
|
|
||||||
On peut ne spécifier les précisions que pour la contrainte \verb|SIG11| en créant le fichier suivant :
|
|
||||||
\begin{verbatim}
|
|
||||||
#precision pour la contrainte SIG11
|
|
||||||
[5] 1.e-6 1.e-3
|
|
||||||
\end{verbatim}
|
|
||||||
Les autres grandeurs \verb|temps|, \verb|X|, \verb|Y| et \verb|Z| seront comparées en utilisant les précisions par défaut.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%
|
|
||||||
\section{Ajout d'un nouveau test}\label{section_4}
|
|
||||||
|
|
||||||
Pour ajouter un test, il est nécessaire de conna\^itre quelques commandes CVS de base et de suivre une procédure d'ajout.
|
|
||||||
|
|
||||||
%%
|
|
||||||
\subsection{Commandes usuelles CVS}\label{section_4_subsection_1}
|
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[$\bullet$] importer le projet : \verb|cvs co Verif_Herezh|
|
\item[$\bullet$] importer le projet : \verb|cvs co Verif_Herezh|
|
||||||
|
@ -660,38 +401,206 @@ Pour ajouter un test, il est n
|
||||||
\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\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\normalsize\\
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Fichiers obligatoires}\label{section_fichiers_obligatoires}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item[$\bullet$] \verb|README| :\\
|
||||||
|
La trame du fichier est montrée sur la figure \ref{format_fichier_README}. La syntaxe de l'intitulé des deux rubriques obligatoires (en bleu) doit \^etre strictement respectée. Les autres rubriques sont indiquées à titre de proposition et pour des questions d'harmonie sur la forme d'un test à l'autre.\\
|
||||||
|
\item[$\bullet$] \verb|.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}
|
||||||
|
\item[$\bullet$] \verb|.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}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsection{Fichiers facultatifs en rapport avec l'exécution du test}\label{section_fichiers_facultatifs}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
\subsection{Procédure d'ajout}\label{section_4_subsection_2}
|
\item[$\bullet$] \verb|.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}
|
||||||
|
|
||||||
\begin{itemize}
|
#eventuellement des commentaires...
|
||||||
\item[$\bullet$] créer les fichiers de calcul, de sortie et de référence
|
[no colonne] prec_absolue prec_relative
|
||||||
\begin{itemize}
|
.
|
||||||
\item[] Dans un répertoire quelconque n'appartenant pas au projet CVS, on crée un fichier de calcul \verb|.info|, un ou plusieurs fichiers de sortie \verb|.CVisu[no]| (numérotés à partir de 1) ainsi que tous les fichiers indispensables au lancement du calcul. Les fichiers \verb|.CVisu[no]| sont créés de manière à ne faire que des sorties \verb|.maple| (choix 4 dans le menu interactif Herezh). Dans le fichier \verb|.info|, on spécifie l'option "\verb|avec plus visualisation|" ou "\verb|avec plus lectureCommandesVisu|". Pour chaque fichier \verb|.CVisu[no]|, on lance le calcul pour générer un fichier \verb|.maple| auquel on ajoute l'extension \verb|.ref[no]| après \verb|.maple| (où \verb|[no]| est le m\^eme numéro que le \verb|.CVisu| correspondant).
|
.
|
||||||
\end{itemize}
|
.
|
||||||
\item[$\bullet$] se positionner dans le répertoire \verb|Batterie| du projet CVS
|
#eventuellement des commentaires...
|
||||||
\item[$\bullet$] actualiser la version du projet : \verb|cvs update -dP|
|
[no colonne] prec_absolue prec_relative
|
||||||
\item[$\bullet$] créer un répertoire dédié au test en respectant la convention sur le nom : \verb|Test_[duree]_[dimension]_[nom]|
|
|
||||||
\item[$\bullet$] recopier les fichiers de calcul, de sortie \verb|.CVisu[no]| et de référence \verb|.maple.ref[no]| dans ce répertoire
|
\end{verbatim}
|
||||||
\item[$\bullet$] recopier d'éventuels fichiers facultatifs (fichier de précision \verb|.precision|, solutions analytiques, mises en données et résultats pour d'autres codes de calcul, ...)
|
\end{minipage}
|
||||||
\item[$\bullet$] créer le fichier 1README.txt selon la trame donnée en section \ref{section_1_subsection_3}
|
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 :\\
|
||||||
\item[$\bullet$] ajouter le nouveau répertoire et ses fichiers au projet CVS : \verb|cvs add ...|
|
\hspace*{2cm}\begin{minipage}{\textwidth}
|
||||||
\item[$\bullet$] enregistrer les modifications du projet (se placer dans le répertoire \verb|Batterie|, puis \verb|cvs commit -m 'ajout nouveau test dans Batterie, ... autres commentaires ...'|\\
|
\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}
|
\end{itemize}
|
||||||
|
|
||||||
Voir section \ref{section_3} pour plus d'informations notamment sur la convention sur le nom du répertoire (section \ref{section_3_subsection_1}), le choix de l'emplacement du test dans l'arborescence (section \ref{section_3_subsection_2}) ou le contenu du répertoire de test (section \ref{section_3_subsection_3}).
|
%%
|
||||||
|
\item[$\bullet$] \verb|.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}
|
||||||
|
|
||||||
|
%%
|
||||||
|
\item[$\bullet$] \verb|.verif| :
|
||||||
|
\begin{itemize}
|
||||||
|
\item[] Ce fichier est un exécutable dont la fonction est de fournir le résultat de la vérification. Pour cela, il effectue les traitements nécessaires pour déterminer si le test est \verb|OK| ou \verb|ECHEC|. Il indique ce résultat en affichant la ligne suivante :
|
||||||
|
\hspace*{2cm}\begin{minipage}{\textwidth}
|
||||||
|
\begin{verbatim}
|
||||||
|
|
||||||
|
resultat verification : OK (ou ECHEC)
|
||||||
|
|
||||||
|
\end{verbatim}
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
En plus de cette ligne, cet exé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é par le script \verb|Perl/test.pl| :
|
||||||
|
\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}
|
||||||
|
|
||||||
|
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...).\\
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
%%
|
||||||
|
\item[$\bullet$] \verb|.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}
|
||||||
|
|
||||||
|
%%
|
||||||
|
\item[$\bullet$] \verb|.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é.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Évolution des mises à jour}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
\subsection{Exemples de tests}\label{section_exemples_tests}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsubsection{Calcul classique : comparaison de données maple}
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage| est un exemple de calcul utilisant un fichier de commandes interactives (réponses au menu interactif de l'utilitaire "\verb|avec plus fusion_maillages|").
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsubsection{Calcul utilisant un script libre de vérification}
|
||||||
|
|
||||||
|
Le test \verb|Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non| \verb|-references| est un exemple de calcul utilisant un script de vérification (comparaison entre deux fichiers \verb|.her|).
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\subsubsection{Calcul consistant à créer un fichier .info (Herezh -n)}
|
||||||
|
|
||||||
|
Le script \verb|Perl/test.pl| lance un calcul Herezh++ avec l'option \verb|-n| si le fichier \verb|.info| ne contient pas le mot-clé \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 créé à un fichier de référence. Attention au fait que le fichier 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|.\\
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
\newpage
|
||||||
|
\clearpage
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Évolution des mises à jour}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
Loading…
Reference in a new issue