From 2afaabc5f060287a11e61804b94da21026af9e3f Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Fri, 31 Jul 2015 14:51:47 +0000 Subject: [PATCH] introduction de 4 cas tests (FONCTION_UNIQUE/CONDITIONS_LIMITES : cisaillement periodique; FONCTION_UNIQUE/TYPE_DE_CALCUL : Zhai, Chung-Lee et HHT); modif de Perl/genere_catalogue_tests.pl : possibilite de mettre un facteur d echelle sur les figures (voir doc_procedure_verification.pdf section 5.4 fichier README) --- .../README | 41 +++++ .../chung_lee_dynamique_explicite.CVisu1 | 116 +++++++++++++ .../chung_lee_dynamique_explicite.info | 79 +++++++++ ...g_lee_dynamique_explicite_princ.maple.ref1 | 80 +++++++++ .../cube_1elt_npti8.her | 18 ++ .../cube_1elt_npti8.lis | 158 ++++++++++++++++++ .../Test_R_dynamique_implicite_HHT/README | 41 +++++ .../cube_1elt_npti8.her | 18 ++ .../cube_1elt_npti8.lis | 158 ++++++++++++++++++ .../dynamique_implicite_HHT.CVisu1 | 116 +++++++++++++ .../dynamique_implicite_HHT.info | 80 +++++++++ .../dynamique_implicite_HHT_princ.maple.ref1 | 80 +++++++++ .../Test_R_zhai_dynamique_explicite/README | 41 +++++ .../cube_1elt_npti8.her | 18 ++ .../cube_1elt_npti8.lis | 158 ++++++++++++++++++ .../zhai_dynamique_explicite.CVisu1 | 116 +++++++++++++ .../zhai_dynamique_explicite.info | 79 +++++++++ .../zhai_dynamique_explicite_princ.maple.ref1 | 80 +++++++++ Doc/doc_procedure_verification.tex | 19 ++- Perl/genere_catalogue_tests.pl | 59 +++++-- catalogue_tests.pdf | Bin 108834 -> 135433 bytes doc_procedure_verification.pdf | Bin 206095 -> 203584 bytes 22 files changed, 1528 insertions(+), 27 deletions(-) create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/README create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.CVisu1 create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.info create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite_princ.maple.ref1 create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.her create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.lis create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/README create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.her create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.lis create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.CVisu1 create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.info create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT_princ.maple.ref1 create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/README create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.her create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.lis create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.CVisu1 create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.info create mode 100644 Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite_princ.maple.ref1 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/README b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/README new file mode 100644 index 0000000..afddab8 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/README @@ -0,0 +1,41 @@ +------------------------------------------------------ +Auteur +------------------------------------------------------ +Julien Troufflard (troufflard@univ-ubs.fr) + +------------------------------------------------------ +Mots-cles +------------------------------------------------------ +traction uniaxiale +dynamique explicite chung-lee +Chung-Lee +ISOELAS + +------------------------------------------------------ +But du test +------------------------------------------------------ +test simple du mode de calcul : dynamique explicite Chung-Lee +"" + TYPE_DE_CALCUL + dynamique_explicite_chung_lee + + PARA_TYPE_DE_CALCUL + beta= 1.037 +"" + +------------------------------------------------------ +Description du calcul +------------------------------------------------------ +traction uniaxiale suivant X sur un cube 1x1x1 (1 element HEXAEDRE LINEAIRE) + - loi elastique ISOELAS + +------------------------------------------------------------- +Grandeurs de comparaison +------------------------------------------------------------- +pour le noeud 8 : + - vitesse : V2 + - acceleration : GAMMA2 + +pour le point d integration 1 de l element 1 : + - deformations : EPS11 EPS22 EPS33 + - contrainte : SIG11 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.CVisu1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.CVisu1 new file mode 100644 index 0000000..3273df9 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.CVisu1 @@ -0,0 +1,116 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.687 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d'une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) + dernier_increment fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d'abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d'abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud 8 fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud V2 GAMMA2 fin_list_ddl_noeud + type_sortie_ddl_retenue= 0 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d'integration, une liste de (un element, un numero de pt d'integ), puis + deb_list_NbElement_NbPtInteg 1 1 fin_list_NbElement_NbPtInteg + # debut de la liste des ref d'elements, puis une liste de: nom + numero d'integ, puis + deb_list_ref_element fin_list_ref_element + # debut de la liste des ref de ptinteg d'elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element EPS11 EPS22 EPS33 SIG11 fin_list_ddl_element # fin de la liste de ddl a considerer pour les elements + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c'est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l'accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d'animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l'animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l'arret de la lecture des commandes, apres ce mot cle, aucune commande n'est lu, de plus + # sans le mot cle de fin de fichier, le fichier n'est pas valide + + ############################################################################################### + + diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.info b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.info new file mode 100644 index 0000000..d3391cc --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite.info @@ -0,0 +1,79 @@ +dimension 3 + + +niveau_commentaire 3 + + +TYPE_DE_CALCUL ---------------------------------------------- + +dynamique_explicite_chung_lee avec plus lectureCommandesVisu + +PARA_TYPE_DE_CALCUL + beta= 1.037 + + +< cube_1elt_npti8.her +< cube_1elt_npti8.lis + +# renumerotation_des_noeuds_ + + +les_courbes_1D ---------------------------------------------- + + rampe COURBEPOLYLINEAIRE_1_D + Debut_des_coordonnees_des_points + Coordonnee dim= 2 0. 0. + Coordonnee dim= 2 0.001 1. + Fin_des_coordonnees_des_points + +choix_materiaux ---------------------------------------------- + +E_tout MAT_ELAS + +materiaux ---------------------------------------------- + +MAT_ELAS ISOELAS +210000. 0.3 + + +masse_volumique ---------------------------------------------- + +E_tout 8.7e-9 + + +charges ---------------------------------------------- + + +blocages ---------------------------------------------- + +#traction uniaxiale suivant X par deplacement impose +N_droit UX +N_arriere UY +N_bas UZ +N_gauche 'UX= COURBE_CHARGE: rampe ECHELLE: 0.01' + +controle ---------------------------------------------- + +TEMPSFIN 0.001 +DELTAt COEF_PASCRITIQUE 0.95 +ITERATIONS 15 +PRECISION 1e-3 +SAUVEGARDE DERNIER_CALCUL +MAXINCRE 99999999 +NORME Residu/Reaction_et_VarRes + + +para_pilotage_equi_global ---------------------------------------------- + + +para_syteme_lineaire ---------------------------------------------- + + +para_affichage ---------------------------------------------- + +resultats ---------------------------------------------- +COPIE 0 +POINTS_INTEGRATION E_tout +Green-Lagrange Almansi Cauchy_global Def_mixte_local Sigma_mixte_local + +_fin_point_info_ diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite_princ.maple.ref1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite_princ.maple.ref1 new file mode 100644 index 0000000..7346203 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/chung_lee_dynamique_explicite_princ.maple.ref1 @@ -0,0 +1,80 @@ +#fichier au format maple6 +############################################################################################### +# Visualisation elements finis : Herezh++ V6.713 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + # entete des donnees : informations gererales: on trouve successivement: + # >> le nombre de grandeurs globales (peut etre nul) suivi des identificateurs + # precedes du numero de colonne entre crochet + # >> le nombre de maillages m, et dimension de l'espace de travail + # puis pour chaque maillage, + # >> le nombre de torseurs de reaction (peut etre nul), le nombre total de reel qui va etre ecrit + # correspondant aux composantes des torseurs, puis les noms de ref associee suivi des positions + # des composantes entre crochet accolees a un identificateur: R pour reaction, M pour moment + # puis pour chaque maillage + # >> le nombre de noeud n (peut etre nul) ou il y a des grandeurs en sortie , + # puis le nombre des grandeurs p1 correspondantes, la position entre crochet des coordonnees + # et enfin l'idendificateur de ces grandeurs(p1 chaines de caractere) + # precedes du numero de colonne correspondant entre crochet + # puis pour chaque maillage + # >> le nombre de couples element-pt_integ (peut etre nulle) ou il y a des grandeurs en sortie , + # les grandeurs aux elements sont decomposees en 2 listes: la premiere de quantite P2 correspondant + # a des grandeurs generiques, la seconde de quantite P3 corresponds aux grandeurs specifiques, + # on trouve donc a la suite du nombre d'element: le nombre P2, suivi de P2 identificateurs de ddl + # chacun precedes du numero de colonne entre crochet + # puis le nombre P3, suivi de P3 identificateurs+categorie+type (chaines de caracteres), + # suivi entre crochet, de la plage des numeros de colonnes, correspondant + # chacun sur une ligne differentes + # ==== NB: pour les grandeurs specifique tensorielle: exemple d'ordre en 2D: + # tenseur symetrique, A(1,1) A(2,1) A(2,2), non symetrique A(1,1) A(1,2) A(2,1) A(2,2) + # en 3D c'est: tenseur symetrique, A(1,1) A(2,1) A(2,2) A(3,1) A(3,2) A(3,3) + # non symetrique A(1,1) A(1,2) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3) + # ** dans le cas ou il n'y a qu'un seul increment en sortie, pour les grandeurs aux noeuds et aux elements, + # ** les informations peuvent etre decoupees selon: une ligne = un noeud, et le temps n'est pas indique + # ** ( cf: parametre_style_de_sortie = 0) + +#==================================================================== +#|| recapitulatif des differentes grandeurs par colonne || +#==================================================================== +#---------------------------------- grandeur globales ------------------------------------ +#0 (nombre de grandeurs globales) +#---------------------------------- maillage et dimension -------------------------------- +#1 3 (nombre de maillages et dimension) +#---------------------------------- torseurs de reactions -------------------------------- +#0 0 (nombre de torseurs et nombre total de grandeurs associees) +# +#---------------------------------- grandeurs aux noeuds -------------------------------- +#1 2 (nombre de noeuds, nombre total de grandeurs associees) +# noeud_8 [2]X [3]Y [4]Z [5]V2 [6]GAMMA2 ; +# +#---------------------------------- grandeurs aux elements ------------------------------ +#1 4 00 (nombre total d'elements, nombre totale de grandeurs associees, nombre de grandeurs particulieres, nombre de grandeurs tensorielles) +# element_1 pt_integ_1: [8]X [9]Y [10]Z [11] EPS11 [12] EPS22 [13] EPS33 [14] SIG11 +# +# +#==================================================================== +#|| fin du recapitulatif des differentes grandeurs || +#==================================================================== + + # ensuite les donnees sont organisees sur differentes lignes, chaques lignes correspondant + # a un calcul (par exemple un pas de temps), sur chaque ligne il y a m enregistrement, chacun + # correspondant a un maillage. On trouve pour chaque enregistrement successivement : + # s'il y a des grandeurs globales: le temps puis les grandeurs globales, + # puis s'il y a des torseurs de reaction : + # de nouveau le temps, les composantes de la resultante puis les composantes du moments + # donc en 1D -> 1 reels (resultante), en 2D -> 3 reels (resultante 2, moment 1) et en 3D 6 reels + # puis s'il y a des grandeurs aux noeuds: de nouveau le temps + # les coordonnees a t du premier noeud suivi des p1 grandeurs correspondant au premier noeud + # puis les coordonnees du second noeud, les p1 grandeurs etc. pour tous les noeuds + # puis s'il y a des grandeur aux elements: + # le temps, puis les coordonnees a t du point d'integration d'un element (pour les grandeurs generiques) + # suivi des p2 grandeurs correspondantes puis les coordonnees a t du point d'integration + # correspondant aux grandeurs specifiques suivi des p3 grandeurs correspondantes + # puis les coordonnees d'un second point d'integration d'un element, les p2 grandeurs + # etc. pour tous les points d'integration - element + + 1.000000000000e-03 1.010000000000e+00 1.000000000000e+00 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e-03 2.134381140592e-01 7.886751345948e-01 7.886751345948e-01 9.851975296540e-03 0.000000000000e+00 0.000000000000e+00 2.785077631906e+03 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.her b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.her new file mode 100644 index 0000000..3bc9991 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.her @@ -0,0 +1,18 @@ + nom_maillage cube_1elt_npti8 + + noeuds + 8 NOEUDS + + 1 0 0 0 + 2 0 0 1 + 3 0 1 0 + 4 0 1 1 + 5 1 0 0 + 6 1 0 1 + 7 1 1 0 + 8 1 1 1 + + elements + 1 ELEMENTS + + 1 HEXAEDRE LINEAIRE 5 7 3 1 6 8 4 2 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.lis b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.lis new file mode 100644 index 0000000..8224c23 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/cube_1elt_npti8.lis @@ -0,0 +1,158 @@ +# CORRESPONDANCE label => position +# +# gauche => X=1 +# +# droit => X=0 +# +# avant => Y=1 +# +# arriere => Y=0 +# +# haut => Z=1 +# +# bas => Z=0 +# + + N_avant 3 4 7 8 + + N_arriere 1 2 5 6 + + N_haut 2 4 6 8 + + N_bas 1 3 5 7 + + N_droit 1 2 3 4 + + N_gauche 5 6 7 8 + + N_haut_droit 2 4 + + N_haut_gauche 6 8 + + N_haut_arriere 2 6 + + N_haut_avant 4 8 + + N_bas_droit 1 3 + + N_bas_gauche 5 7 + + N_bas_arriere 1 5 + + N_bas_avant 3 7 + + N_arriere_droit 1 2 + + N_arriere_gauche 5 6 + + N_avant_droit 3 4 + + N_avant_gauche 7 8 + + N_haut_arriere_droit 2 + + N_haut_arriere_gauche 6 + + N_haut_avant_gauche 8 + + N_haut_avant_droit 4 + + N_bas_arriere_droit 1 + + N_bas_arriere_gauche 5 + + N_bas_avant_gauche 7 + + N_bas_avant_droit 3 + + N_to 1 2 3 4 5 6 7 8 + + E_avant 1 + + E_derriere 1 + + E_haut 1 + + E_bas 1 + + E_droit 1 + + E_gauche 1 + + E_haut_droit 1 + + E_haut_gauche 1 + + E_haut_arriere 1 + + E_haut_avant 1 + + E_bas_droit 1 + + E_bas_gauche 1 + + E_bas_arriere 1 + + E_bas_avant 1 + + E_arriere_droit 1 + + E_arriere_gauche 1 + + E_avant_droit 1 + + E_avant_gauche 1 + + E_haut_arriere_droit 1 + + E_haut_arriere_gauche 1 + + E_haut_avant_gauche 1 + + E_haut_avant_droit 1 + + E_bas_arriere_droit 1 + + E_bas_arriere_gauche 1 + + E_bas_avant_gauche 1 + + E_bas_avant_droit 1 + + E_to 1 + + F_avant 1 5 + + F_arriere 1 2 + + F_haut 1 4 + + F_bas 1 1 + + F_droit 1 6 + + F_gauche 1 3 + + A_haut_droit 1 11 + + A_haut_gauche 1 9 + + A_haut_arriere 1 12 + + A_haut_avant 1 10 + + A_bas_droit 1 3 + + A_bas_gauche 1 1 + + A_bas_arriere 1 4 + + A_bas_avant 1 2 + + A_arriere_droit 1 8 + + A_arriere_gauche 1 5 + + A_avant_droit 1 7 + + A_avant_gauche 1 6 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/README b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/README new file mode 100644 index 0000000..68b6a94 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/README @@ -0,0 +1,41 @@ +------------------------------------------------------ +Auteur +------------------------------------------------------ +Julien Troufflard (troufflard@univ-ubs.fr) + +------------------------------------------------------ +Mots-cles +------------------------------------------------------ +traction uniaxiale +dynamique implicite HHT +HHT +ISOELAS + +------------------------------------------------------ +But du test +------------------------------------------------------ +test simple du mode de calcul : dynamique implicite avec methode HHT +"" + TYPE_DE_CALCUL + dynamique_implicite + + PARA_TYPE_DE_CALCUL + hht= -0.05 +"" + +------------------------------------------------------ +Description du calcul +------------------------------------------------------ +traction uniaxiale suivant X sur un cube 1x1x1 (1 element HEXAEDRE LINEAIRE) + - loi elastique ISOELAS + +------------------------------------------------------------- +Grandeurs de comparaison +------------------------------------------------------------- +pour le noeud 8 : + - vitesse : V2 + - acceleration : GAMMA2 + +pour le point d integration 1 de l element 1 : + - deformations : EPS11 EPS22 EPS33 + - contrainte : SIG11 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.her b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.her new file mode 100644 index 0000000..3bc9991 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.her @@ -0,0 +1,18 @@ + nom_maillage cube_1elt_npti8 + + noeuds + 8 NOEUDS + + 1 0 0 0 + 2 0 0 1 + 3 0 1 0 + 4 0 1 1 + 5 1 0 0 + 6 1 0 1 + 7 1 1 0 + 8 1 1 1 + + elements + 1 ELEMENTS + + 1 HEXAEDRE LINEAIRE 5 7 3 1 6 8 4 2 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.lis b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.lis new file mode 100644 index 0000000..8224c23 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/cube_1elt_npti8.lis @@ -0,0 +1,158 @@ +# CORRESPONDANCE label => position +# +# gauche => X=1 +# +# droit => X=0 +# +# avant => Y=1 +# +# arriere => Y=0 +# +# haut => Z=1 +# +# bas => Z=0 +# + + N_avant 3 4 7 8 + + N_arriere 1 2 5 6 + + N_haut 2 4 6 8 + + N_bas 1 3 5 7 + + N_droit 1 2 3 4 + + N_gauche 5 6 7 8 + + N_haut_droit 2 4 + + N_haut_gauche 6 8 + + N_haut_arriere 2 6 + + N_haut_avant 4 8 + + N_bas_droit 1 3 + + N_bas_gauche 5 7 + + N_bas_arriere 1 5 + + N_bas_avant 3 7 + + N_arriere_droit 1 2 + + N_arriere_gauche 5 6 + + N_avant_droit 3 4 + + N_avant_gauche 7 8 + + N_haut_arriere_droit 2 + + N_haut_arriere_gauche 6 + + N_haut_avant_gauche 8 + + N_haut_avant_droit 4 + + N_bas_arriere_droit 1 + + N_bas_arriere_gauche 5 + + N_bas_avant_gauche 7 + + N_bas_avant_droit 3 + + N_to 1 2 3 4 5 6 7 8 + + E_avant 1 + + E_derriere 1 + + E_haut 1 + + E_bas 1 + + E_droit 1 + + E_gauche 1 + + E_haut_droit 1 + + E_haut_gauche 1 + + E_haut_arriere 1 + + E_haut_avant 1 + + E_bas_droit 1 + + E_bas_gauche 1 + + E_bas_arriere 1 + + E_bas_avant 1 + + E_arriere_droit 1 + + E_arriere_gauche 1 + + E_avant_droit 1 + + E_avant_gauche 1 + + E_haut_arriere_droit 1 + + E_haut_arriere_gauche 1 + + E_haut_avant_gauche 1 + + E_haut_avant_droit 1 + + E_bas_arriere_droit 1 + + E_bas_arriere_gauche 1 + + E_bas_avant_gauche 1 + + E_bas_avant_droit 1 + + E_to 1 + + F_avant 1 5 + + F_arriere 1 2 + + F_haut 1 4 + + F_bas 1 1 + + F_droit 1 6 + + F_gauche 1 3 + + A_haut_droit 1 11 + + A_haut_gauche 1 9 + + A_haut_arriere 1 12 + + A_haut_avant 1 10 + + A_bas_droit 1 3 + + A_bas_gauche 1 1 + + A_bas_arriere 1 4 + + A_bas_avant 1 2 + + A_arriere_droit 1 8 + + A_arriere_gauche 1 5 + + A_avant_droit 1 7 + + A_avant_gauche 1 6 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.CVisu1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.CVisu1 new file mode 100644 index 0000000..3273df9 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.CVisu1 @@ -0,0 +1,116 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.687 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d'une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) + dernier_increment fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d'abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d'abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud 8 fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud V2 GAMMA2 fin_list_ddl_noeud + type_sortie_ddl_retenue= 0 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d'integration, une liste de (un element, un numero de pt d'integ), puis + deb_list_NbElement_NbPtInteg 1 1 fin_list_NbElement_NbPtInteg + # debut de la liste des ref d'elements, puis une liste de: nom + numero d'integ, puis + deb_list_ref_element fin_list_ref_element + # debut de la liste des ref de ptinteg d'elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element EPS11 EPS22 EPS33 SIG11 fin_list_ddl_element # fin de la liste de ddl a considerer pour les elements + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c'est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l'accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d'animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l'animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l'arret de la lecture des commandes, apres ce mot cle, aucune commande n'est lu, de plus + # sans le mot cle de fin de fichier, le fichier n'est pas valide + + ############################################################################################### + + diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.info b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.info new file mode 100644 index 0000000..e7eb79d --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT.info @@ -0,0 +1,80 @@ +dimension 3 + + +niveau_commentaire 3 + + +TYPE_DE_CALCUL ---------------------------------------------- + +dynamique_implicite avec plus lectureCommandesVisu + +PARA_TYPE_DE_CALCUL + hht= -0.05 + +< cube_1elt_npti8.her +< cube_1elt_npti8.lis + +# renumerotation_des_noeuds_ + + +les_courbes_1D ---------------------------------------------- + + rampe COURBEPOLYLINEAIRE_1_D + Debut_des_coordonnees_des_points + Coordonnee dim= 2 0. 0. + Coordonnee dim= 2 0.001 1. + Fin_des_coordonnees_des_points + +choix_materiaux ---------------------------------------------- + +E_tout MAT_ELAS + +materiaux ---------------------------------------------- + +MAT_ELAS ISOELAS +210000. 0.3 + + +masse_volumique ---------------------------------------------- + +E_tout 8.7e-9 + + +charges ---------------------------------------------- + + +blocages ---------------------------------------------- + +#traction uniaxiale suivant X par deplacement impose +N_droit UX +N_arriere UY +N_bas UZ +N_gauche 'UX= COURBE_CHARGE: rampe ECHELLE: 0.01' + +controle ---------------------------------------------- + +DELTAtMINI 1.e-7 +DELTAtMAXI 0.0001 +TEMPSFIN 0.001 +DELTAt 0.0001 +ITERATIONS 15 +PRECISION 1e-3 +SAUVEGARDE DERNIER_CALCUL +MAXINCRE 99999999 +NORME Residu/Reaction_et_VarRes + + +para_pilotage_equi_global ---------------------------------------------- + + +para_syteme_lineaire ---------------------------------------------- + + +para_affichage ---------------------------------------------- + +resultats ---------------------------------------------- +COPIE 0 +POINTS_INTEGRATION E_tout +Green-Lagrange Almansi Cauchy_global Def_mixte_local Sigma_mixte_local + +_fin_point_info_ diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT_princ.maple.ref1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT_princ.maple.ref1 new file mode 100644 index 0000000..be990c2 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_implicite_HHT/dynamique_implicite_HHT_princ.maple.ref1 @@ -0,0 +1,80 @@ +#fichier au format maple6 +############################################################################################### +# Visualisation elements finis : Herezh++ V6.713 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + # entete des donnees : informations gererales: on trouve successivement: + # >> le nombre de grandeurs globales (peut etre nul) suivi des identificateurs + # precedes du numero de colonne entre crochet + # >> le nombre de maillages m, et dimension de l'espace de travail + # puis pour chaque maillage, + # >> le nombre de torseurs de reaction (peut etre nul), le nombre total de reel qui va etre ecrit + # correspondant aux composantes des torseurs, puis les noms de ref associee suivi des positions + # des composantes entre crochet accolees a un identificateur: R pour reaction, M pour moment + # puis pour chaque maillage + # >> le nombre de noeud n (peut etre nul) ou il y a des grandeurs en sortie , + # puis le nombre des grandeurs p1 correspondantes, la position entre crochet des coordonnees + # et enfin l'idendificateur de ces grandeurs(p1 chaines de caractere) + # precedes du numero de colonne correspondant entre crochet + # puis pour chaque maillage + # >> le nombre de couples element-pt_integ (peut etre nulle) ou il y a des grandeurs en sortie , + # les grandeurs aux elements sont decomposees en 2 listes: la premiere de quantite P2 correspondant + # a des grandeurs generiques, la seconde de quantite P3 corresponds aux grandeurs specifiques, + # on trouve donc a la suite du nombre d'element: le nombre P2, suivi de P2 identificateurs de ddl + # chacun precedes du numero de colonne entre crochet + # puis le nombre P3, suivi de P3 identificateurs+categorie+type (chaines de caracteres), + # suivi entre crochet, de la plage des numeros de colonnes, correspondant + # chacun sur une ligne differentes + # ==== NB: pour les grandeurs specifique tensorielle: exemple d'ordre en 2D: + # tenseur symetrique, A(1,1) A(2,1) A(2,2), non symetrique A(1,1) A(1,2) A(2,1) A(2,2) + # en 3D c'est: tenseur symetrique, A(1,1) A(2,1) A(2,2) A(3,1) A(3,2) A(3,3) + # non symetrique A(1,1) A(1,2) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3) + # ** dans le cas ou il n'y a qu'un seul increment en sortie, pour les grandeurs aux noeuds et aux elements, + # ** les informations peuvent etre decoupees selon: une ligne = un noeud, et le temps n'est pas indique + # ** ( cf: parametre_style_de_sortie = 0) + +#==================================================================== +#|| recapitulatif des differentes grandeurs par colonne || +#==================================================================== +#---------------------------------- grandeur globales ------------------------------------ +#0 (nombre de grandeurs globales) +#---------------------------------- maillage et dimension -------------------------------- +#1 3 (nombre de maillages et dimension) +#---------------------------------- torseurs de reactions -------------------------------- +#0 0 (nombre de torseurs et nombre total de grandeurs associees) +# +#---------------------------------- grandeurs aux noeuds -------------------------------- +#1 2 (nombre de noeuds, nombre total de grandeurs associees) +# noeud_8 [2]X [3]Y [4]Z [5]V2 [6]GAMMA2 ; +# +#---------------------------------- grandeurs aux elements ------------------------------ +#1 4 00 (nombre total d'elements, nombre totale de grandeurs associees, nombre de grandeurs particulieres, nombre de grandeurs tensorielles) +# element_1 pt_integ_1: [8]X [9]Y [10]Z [11] EPS11 [12] EPS22 [13] EPS33 [14] SIG11 +# +# +#==================================================================== +#|| fin du recapitulatif des differentes grandeurs || +#==================================================================== + + # ensuite les donnees sont organisees sur differentes lignes, chaques lignes correspondant + # a un calcul (par exemple un pas de temps), sur chaque ligne il y a m enregistrement, chacun + # correspondant a un maillage. On trouve pour chaque enregistrement successivement : + # s'il y a des grandeurs globales: le temps puis les grandeurs globales, + # puis s'il y a des torseurs de reaction : + # de nouveau le temps, les composantes de la resultante puis les composantes du moments + # donc en 1D -> 1 reels (resultante), en 2D -> 3 reels (resultante 2, moment 1) et en 3D 6 reels + # puis s'il y a des grandeurs aux noeuds: de nouveau le temps + # les coordonnees a t du premier noeud suivi des p1 grandeurs correspondant au premier noeud + # puis les coordonnees du second noeud, les p1 grandeurs etc. pour tous les noeuds + # puis s'il y a des grandeur aux elements: + # le temps, puis les coordonnees a t du point d'integration d'un element (pour les grandeurs generiques) + # suivi des p2 grandeurs correspondantes puis les coordonnees a t du point d'integration + # correspondant aux grandeurs specifiques suivi des p3 grandeurs correspondantes + # puis les coordonnees d'un second point d'integration d'un element, les p2 grandeurs + # etc. pour tous les points d'integration - element + + 1.000000000000e-03 1.010000000000e+00 9.970546131444e-01 9.970546131444e-01 -6.830835075784e-01 4.417870659731e+05 1.000000000000e-03 2.134381140592e-01 7.863521812200e-01 7.863521812200e-01 9.851975296540e-03 -2.958451104270e-03 -2.958451104270e-03 2.068222172026e+03 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/README b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/README new file mode 100644 index 0000000..9c0d1f3 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/README @@ -0,0 +1,41 @@ +------------------------------------------------------ +Auteur +------------------------------------------------------ +Julien Troufflard (troufflard@univ-ubs.fr) + +------------------------------------------------------ +Mots-cles +------------------------------------------------------ +traction uniaxiale +dynamique explicite zhai +Zhai +ISOELAS + +------------------------------------------------------ +But du test +------------------------------------------------------ +test simple du mode de calcul : dynamique explicite Zhai +"" + TYPE_DE_CALCUL + dynamique_explicite_zhai + + PARA_TYPE_DE_CALCUL + phi_minus= 0.5 grand_phi= 0.5 +"" + +------------------------------------------------------ +Description du calcul +------------------------------------------------------ +traction uniaxiale suivant X sur un cube 1x1x1 (1 element HEXAEDRE LINEAIRE) + - loi elastique ISOELAS + +------------------------------------------------------------- +Grandeurs de comparaison +------------------------------------------------------------- +pour le noeud 8 : + - vitesse : V2 + - acceleration : GAMMA2 + +pour le point d integration 1 de l element 1 : + - deformations : EPS11 EPS22 EPS33 + - contrainte : SIG11 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.her b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.her new file mode 100644 index 0000000..3bc9991 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.her @@ -0,0 +1,18 @@ + nom_maillage cube_1elt_npti8 + + noeuds + 8 NOEUDS + + 1 0 0 0 + 2 0 0 1 + 3 0 1 0 + 4 0 1 1 + 5 1 0 0 + 6 1 0 1 + 7 1 1 0 + 8 1 1 1 + + elements + 1 ELEMENTS + + 1 HEXAEDRE LINEAIRE 5 7 3 1 6 8 4 2 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.lis b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.lis new file mode 100644 index 0000000..8224c23 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/cube_1elt_npti8.lis @@ -0,0 +1,158 @@ +# CORRESPONDANCE label => position +# +# gauche => X=1 +# +# droit => X=0 +# +# avant => Y=1 +# +# arriere => Y=0 +# +# haut => Z=1 +# +# bas => Z=0 +# + + N_avant 3 4 7 8 + + N_arriere 1 2 5 6 + + N_haut 2 4 6 8 + + N_bas 1 3 5 7 + + N_droit 1 2 3 4 + + N_gauche 5 6 7 8 + + N_haut_droit 2 4 + + N_haut_gauche 6 8 + + N_haut_arriere 2 6 + + N_haut_avant 4 8 + + N_bas_droit 1 3 + + N_bas_gauche 5 7 + + N_bas_arriere 1 5 + + N_bas_avant 3 7 + + N_arriere_droit 1 2 + + N_arriere_gauche 5 6 + + N_avant_droit 3 4 + + N_avant_gauche 7 8 + + N_haut_arriere_droit 2 + + N_haut_arriere_gauche 6 + + N_haut_avant_gauche 8 + + N_haut_avant_droit 4 + + N_bas_arriere_droit 1 + + N_bas_arriere_gauche 5 + + N_bas_avant_gauche 7 + + N_bas_avant_droit 3 + + N_to 1 2 3 4 5 6 7 8 + + E_avant 1 + + E_derriere 1 + + E_haut 1 + + E_bas 1 + + E_droit 1 + + E_gauche 1 + + E_haut_droit 1 + + E_haut_gauche 1 + + E_haut_arriere 1 + + E_haut_avant 1 + + E_bas_droit 1 + + E_bas_gauche 1 + + E_bas_arriere 1 + + E_bas_avant 1 + + E_arriere_droit 1 + + E_arriere_gauche 1 + + E_avant_droit 1 + + E_avant_gauche 1 + + E_haut_arriere_droit 1 + + E_haut_arriere_gauche 1 + + E_haut_avant_gauche 1 + + E_haut_avant_droit 1 + + E_bas_arriere_droit 1 + + E_bas_arriere_gauche 1 + + E_bas_avant_gauche 1 + + E_bas_avant_droit 1 + + E_to 1 + + F_avant 1 5 + + F_arriere 1 2 + + F_haut 1 4 + + F_bas 1 1 + + F_droit 1 6 + + F_gauche 1 3 + + A_haut_droit 1 11 + + A_haut_gauche 1 9 + + A_haut_arriere 1 12 + + A_haut_avant 1 10 + + A_bas_droit 1 3 + + A_bas_gauche 1 1 + + A_bas_arriere 1 4 + + A_bas_avant 1 2 + + A_arriere_droit 1 8 + + A_arriere_gauche 1 5 + + A_avant_droit 1 7 + + A_avant_gauche 1 6 diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.CVisu1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.CVisu1 new file mode 100644 index 0000000..3273df9 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.CVisu1 @@ -0,0 +1,116 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.687 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d'une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) + dernier_increment fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d'abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d'abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud 8 fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud V2 GAMMA2 fin_list_ddl_noeud + type_sortie_ddl_retenue= 0 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d'integration, une liste de (un element, un numero de pt d'integ), puis + deb_list_NbElement_NbPtInteg 1 1 fin_list_NbElement_NbPtInteg + # debut de la liste des ref d'elements, puis une liste de: nom + numero d'integ, puis + deb_list_ref_element fin_list_ref_element + # debut de la liste des ref de ptinteg d'elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element EPS11 EPS22 EPS33 SIG11 fin_list_ddl_element # fin de la liste de ddl a considerer pour les elements + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c'est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l'accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d'animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l'animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l'arret de la lecture des commandes, apres ce mot cle, aucune commande n'est lu, de plus + # sans le mot cle de fin de fichier, le fichier n'est pas valide + + ############################################################################################### + + diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.info b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.info new file mode 100644 index 0000000..c37977a --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite.info @@ -0,0 +1,79 @@ +dimension 3 + + +niveau_commentaire 3 + + +TYPE_DE_CALCUL ---------------------------------------------- + +dynamique_explicite_zhai avec plus lectureCommandesVisu + +PARA_TYPE_DE_CALCUL + phi_minus= 0.5 grand_phi= 0.5 + + +< cube_1elt_npti8.her +< cube_1elt_npti8.lis + +# renumerotation_des_noeuds_ + + +les_courbes_1D ---------------------------------------------- + + rampe COURBEPOLYLINEAIRE_1_D + Debut_des_coordonnees_des_points + Coordonnee dim= 2 0. 0. + Coordonnee dim= 2 0.001 1. + Fin_des_coordonnees_des_points + +choix_materiaux ---------------------------------------------- + +E_tout MAT_ELAS + +materiaux ---------------------------------------------- + +MAT_ELAS ISOELAS +210000. 0.3 + + +masse_volumique ---------------------------------------------- + +E_tout 8.7e-9 + + +charges ---------------------------------------------- + + +blocages ---------------------------------------------- + +#traction uniaxiale suivant X par deplacement impose +N_droit UX +N_arriere UY +N_bas UZ +N_gauche 'UX= COURBE_CHARGE: rampe ECHELLE: 0.01' + +controle ---------------------------------------------- + +TEMPSFIN 0.001 +DELTAt COEF_PASCRITIQUE 0.95 +ITERATIONS 15 +PRECISION 1e-3 +SAUVEGARDE DERNIER_CALCUL +MAXINCRE 99999999 +NORME Residu/Reaction_et_VarRes + + +para_pilotage_equi_global ---------------------------------------------- + + +para_syteme_lineaire ---------------------------------------------- + + +para_affichage ---------------------------------------------- + +resultats ---------------------------------------------- +COPIE 0 +POINTS_INTEGRATION E_tout +Green-Lagrange Almansi Cauchy_global Def_mixte_local Sigma_mixte_local + +_fin_point_info_ diff --git a/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite_princ.maple.ref1 b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite_princ.maple.ref1 new file mode 100644 index 0000000..cdfea62 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/zhai_dynamique_explicite_princ.maple.ref1 @@ -0,0 +1,80 @@ +#fichier au format maple6 +############################################################################################### +# Visualisation elements finis : Herezh++ V6.713 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + # entete des donnees : informations gererales: on trouve successivement: + # >> le nombre de grandeurs globales (peut etre nul) suivi des identificateurs + # precedes du numero de colonne entre crochet + # >> le nombre de maillages m, et dimension de l'espace de travail + # puis pour chaque maillage, + # >> le nombre de torseurs de reaction (peut etre nul), le nombre total de reel qui va etre ecrit + # correspondant aux composantes des torseurs, puis les noms de ref associee suivi des positions + # des composantes entre crochet accolees a un identificateur: R pour reaction, M pour moment + # puis pour chaque maillage + # >> le nombre de noeud n (peut etre nul) ou il y a des grandeurs en sortie , + # puis le nombre des grandeurs p1 correspondantes, la position entre crochet des coordonnees + # et enfin l'idendificateur de ces grandeurs(p1 chaines de caractere) + # precedes du numero de colonne correspondant entre crochet + # puis pour chaque maillage + # >> le nombre de couples element-pt_integ (peut etre nulle) ou il y a des grandeurs en sortie , + # les grandeurs aux elements sont decomposees en 2 listes: la premiere de quantite P2 correspondant + # a des grandeurs generiques, la seconde de quantite P3 corresponds aux grandeurs specifiques, + # on trouve donc a la suite du nombre d'element: le nombre P2, suivi de P2 identificateurs de ddl + # chacun precedes du numero de colonne entre crochet + # puis le nombre P3, suivi de P3 identificateurs+categorie+type (chaines de caracteres), + # suivi entre crochet, de la plage des numeros de colonnes, correspondant + # chacun sur une ligne differentes + # ==== NB: pour les grandeurs specifique tensorielle: exemple d'ordre en 2D: + # tenseur symetrique, A(1,1) A(2,1) A(2,2), non symetrique A(1,1) A(1,2) A(2,1) A(2,2) + # en 3D c'est: tenseur symetrique, A(1,1) A(2,1) A(2,2) A(3,1) A(3,2) A(3,3) + # non symetrique A(1,1) A(1,2) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3) + # ** dans le cas ou il n'y a qu'un seul increment en sortie, pour les grandeurs aux noeuds et aux elements, + # ** les informations peuvent etre decoupees selon: une ligne = un noeud, et le temps n'est pas indique + # ** ( cf: parametre_style_de_sortie = 0) + +#==================================================================== +#|| recapitulatif des differentes grandeurs par colonne || +#==================================================================== +#---------------------------------- grandeur globales ------------------------------------ +#0 (nombre de grandeurs globales) +#---------------------------------- maillage et dimension -------------------------------- +#1 3 (nombre de maillages et dimension) +#---------------------------------- torseurs de reactions -------------------------------- +#0 0 (nombre de torseurs et nombre total de grandeurs associees) +# +#---------------------------------- grandeurs aux noeuds -------------------------------- +#1 2 (nombre de noeuds, nombre total de grandeurs associees) +# noeud_8 [2]X [3]Y [4]Z [5]V2 [6]GAMMA2 ; +# +#---------------------------------- grandeurs aux elements ------------------------------ +#1 4 00 (nombre total d'elements, nombre totale de grandeurs associees, nombre de grandeurs particulieres, nombre de grandeurs tensorielles) +# element_1 pt_integ_1: [8]X [9]Y [10]Z [11] EPS11 [12] EPS22 [13] EPS33 [14] SIG11 +# +# +#==================================================================== +#|| fin du recapitulatif des differentes grandeurs || +#==================================================================== + + # ensuite les donnees sont organisees sur differentes lignes, chaques lignes correspondant + # a un calcul (par exemple un pas de temps), sur chaque ligne il y a m enregistrement, chacun + # correspondant a un maillage. On trouve pour chaque enregistrement successivement : + # s'il y a des grandeurs globales: le temps puis les grandeurs globales, + # puis s'il y a des torseurs de reaction : + # de nouveau le temps, les composantes de la resultante puis les composantes du moments + # donc en 1D -> 1 reels (resultante), en 2D -> 3 reels (resultante 2, moment 1) et en 3D 6 reels + # puis s'il y a des grandeurs aux noeuds: de nouveau le temps + # les coordonnees a t du premier noeud suivi des p1 grandeurs correspondant au premier noeud + # puis les coordonnees du second noeud, les p1 grandeurs etc. pour tous les noeuds + # puis s'il y a des grandeur aux elements: + # le temps, puis les coordonnees a t du point d'integration d'un element (pour les grandeurs generiques) + # suivi des p2 grandeurs correspondantes puis les coordonnees a t du point d'integration + # correspondant aux grandeurs specifiques suivi des p3 grandeurs correspondantes + # puis les coordonnees d'un second point d'integration d'un element, les p2 grandeurs + # etc. pour tous les points d'integration - element + + 1.000000000000e-03 1.010000000000e+00 9.970583790889e-01 9.970583790889e-01 -4.259581600240e-01 -8.796369095293e+07 1.000000000000e-03 2.134381140592e-01 7.863551513269e-01 7.863551513269e-01 9.851975296540e-03 -2.954651707768e-03 -2.954651707765e-03 2.069142795025e+03 diff --git a/Doc/doc_procedure_verification.tex b/Doc/doc_procedure_verification.tex index 2dc873c..cf7e23d 100644 --- a/Doc/doc_procedure_verification.tex +++ b/Doc/doc_procedure_verification.tex @@ -360,9 +360,9 @@ du texte... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Recherche de tests}\label{section_recherche_de_tests} -Un document pdf de nom \verb|documentation_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é.\\ +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 contenus des fichiers README montré sur la figure \ref{format_fichier_README}. +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}). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -378,8 +378,8 @@ Les fichiers facultatifs d \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 \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). Dans le m\^eme but, les rubriques \it Auteur \rm et \it Mots-cles\rm, qui ne sont pas obligatoires, donnent des informations précieuses (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.\\ +\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} @@ -482,13 +482,14 @@ utiliser le script \verb|verif_existence_repertoire_test.pl| au niveau du r \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 (en bleu) doit \^etre strictement respectée. Il est fortement encouragé de renseigner les rubriques \it Auteur \rm et \it Mots-cles\rm. 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 redimensionner les figures en fonction de ces longueurs car les dimensions de l'image seront utilisées telle quelle pour la génération du catalogue de tests. Par exemple, il est inutile d'insérer deux images à la fois de 9cm de large en espérant qu'elles soient cote à cote. L'idée est que les images ne soient pas trop grosses mais lisibles.\\ +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]|).\\ 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 :\\ + \hspace*{1.5cm} \verb|\figures: maillage.pdf[0.6] \legende: Aperçu du maillage \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|\\ @@ -603,7 +604,7 @@ Il est important de noter que cet ex 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...).\\ -\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 mot-clé mais avec divers valeurs de paramètres). Voir exemple section \ref{section_exemple_test_5}. +\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} @@ -665,7 +666,7 @@ Le script \verb|Perl/test.pl| lance un calcul Herezh++ avec l'option \verb|-n| s 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|.\\ -L'arborescence pour ce genre de test devrait avoir la forme suivante :\\ +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}[% diff --git a/Perl/genere_catalogue_tests.pl b/Perl/genere_catalogue_tests.pl index 8f976a8..434d760 100755 --- a/Perl/genere_catalogue_tests.pl +++ b/Perl/genere_catalogue_tests.pl @@ -632,7 +632,25 @@ sub recopie_rubrique_README { chomp; #----------------------------------------------- - #cas special : balise d ajout d une figure (saisie des fichiers figures et de la legende) + #cas d une ligne blanche => incrementation du compteur et nouveau tour de boucle + #----------------------------------------------- + if($_ =~ /^\s*$/) { + $nb_lignes_blanches++; + next; + } + + + + #----------------------------------------------- + # cas des lignes non blanches + #----------------------------------------------- + + #on vide le nombre de lignes blanches actuel + print $handle_fic_destination "\\vspace*{\\baselineskip}\n" for(1 .. $nb_lignes_blanches); + $nb_lignes_blanches = 0; + + #----------------------------------------------- + #1) cas special : balise d ajout d une figure (saisie des fichiers figures et de la legende) #----------------------------------------------- if(/^\s*\\figures:\s*(\S+(?:\s+\S+)*)\s*\\legende:/) { #noms des fichiers figures @@ -675,18 +693,22 @@ sub recopie_rubrique_README { ($_, $rep) = splitpath($fic_source); #ecriture de l image (\includegraphics) et sa legende - print $handle_fic_destination "\n"; - print $handle_fic_destination "\n"; print $handle_fic_destination "\\begin{figure}[H]\n"; print $handle_fic_destination "\\centering\n"; #-- autant de includegraphics que de fichiers image + # (on regarde si il y a un facteur d echelle a la fin du nom de fichier) foreach my $nom_fig (@nom_figures) { - print $handle_fic_destination "\\includegraphics[]{$rep/$nom_fig}\n"; + #echelle par defaut = 1 + my $scale = 1.; + #si le nom du fichier contient un facteur d echelle, on le prend en compte + if($nom_fig =~ /\[\s*($format_reel)\s*\]$/) { + $scale = $1; + $nom_fig =~ s/\[\s*$format_reel\s*\]$//;#suppression de [facteur echelle] du nom du fichier + } + print $handle_fic_destination "\\includegraphics[scale=$scale]{$rep/$nom_fig}\n"; } print $handle_fic_destination "\\caption{$legende}\n"; print $handle_fic_destination "\\end{figure}\n"; - print $handle_fic_destination "\n"; - print $handle_fic_destination "\n"; #nouveau tour de la boucle SUBWHILE next SUBWHILE; @@ -695,20 +717,12 @@ sub recopie_rubrique_README { #----------------------------------------------- - #cas normal : ligne classique + #2) cas normal : ligne classique #----------------------------------------------- - #gestion des caracteres ou groupes de caracteres speciaux - my $texte_a_ecrire = translate_to_latex($_); - - #cas d une ligne blanche => incrementation du compteur - if($texte_a_ecrire =~ /^\s*$/) { - $nb_lignes_blanches++; - } - #sinon : cas d une ligne de texte => ecriture de $nb_lignes_blanches passages a la ligne suivi du texte else { - #ecriture de $nb_lignes_blanches passages a la ligne \\ - print $handle_fic_destination "\\\\" for(1 .. $nb_lignes_blanches); - $nb_lignes_blanches = 0;#reset du compteur + #gestion des caracteres ou groupes de caracteres speciaux + my $texte_a_ecrire = translate_to_latex($_); + #ecriture du texte (suivi d un passage a la ligne pour respecter la forme du README) print $handle_fic_destination "$texte_a_ecrire\\\\\n"; } @@ -811,6 +825,15 @@ sub translate_to_latex { # (important : ne pas oublier de l option "g" a la fin de l operateur de substitution => $string =~ s/bla bla/ha ha/g; ) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- + ############################################################################################## + ### IMPORTANT : la ligne ci-dessous traite le cas des antislash. Il faut absolument + ### ne rien mettre avant ce traitement car les substitutions qui suivent + ### rajoutent des antislash (et ceux-la, il ne faut pas les remplacer par \backslash) + ############################################################################################## + $string =~ s/\\/\$\\backslash\$/g;#anti-slash (solution : caractere special \backslash entre dollars) + + $string =~ s/\%/\\\%/g;#pourcent (solution : rajout d un antislash devant => \%) + $string =~ s/\#/\\\#/g;#diese (solution : rajout d un antislash devant => \#) $string =~ s/_/\$\\_\$/g;#tiret bas (solution : antislash devant + entre dollars) $string =~ s/\^($format_reel)/\$\^$1\$/g;#cas d un exposant mathematique : symbole circonflexe suivi d un nombre (solution : entre dollars) $string =~ s/([<>])/\$$1\$/g;#symboles inferieur et superieur (solution : entre dollars) diff --git a/catalogue_tests.pdf b/catalogue_tests.pdf index 603fb9df4151fb6dd3fde09c3e4728a433fb7c57..b7dc16d1cdf2bcba252aa5aff1974124f108b64a 100644 GIT binary patch delta 105539 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 W)X@lqGd0WB$7i)XdQt0@>gmY}TAAJc0M&&ggqu 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 z∈AOvl@tEb0gRfVq9 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 delta 79099 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
s!NZmA36esd@1#N^mfKF zb!zVm&gpf(n<9T8^dd_l9gYS}*HeSzflGM)T>jS4@^hzpirtL7kFijKQ+RfOa14t- zX4E4VU{Rl=USe&vr25I<^=zvm*Bj!bMq ztz36(s9CX6SKn1r*|*uc4iLt%kU~XvcJ?v1?c*$gvBSW&E*E6=pMU%4iOQ#_;L3E>Ei0-89cuKcan+o;a+}<()P{8pr)gv#xhg@30~mB=M%}K`vM(mlv4H5r=&q_#MLtY1zR(7vj5x@i?s=Eni>ocOU8s%R z_e)mU4d*cY<|sPK2UxcZYBsqEC7xKcKu%Wdox*>hBroW^0!Cd|im+DkiA|E2f|`rj z6_RJ7^=io-IjACBJ2iGvT6pp(Ns4xpOH8U@m@Kc_%=!rK>*}MWh7id}#MH71VwfK_ zfdwC9HOl7>z;0~w3~3SgYc-tWBKl9&Du~e4ytz05PJP*-k$Z;ABPlzZ*G^5TD;#`? z#kYSn=z@Duq0-3S#9~*G-|GZ4hn?GI;p_VdG=y_4vks{!wi01A`?t#H?n}e{yY}J} znACO0i;`hfb@{=>p!zj<@!wfGSU@fP@^2b((ryqsi9ODano<H9v!xGS6e4 zXih7hG;pi(y*{}M7$y3Au1I<6wP?7MWABY@!=08LclKU?0PK;ghE+C8j2?gS&X$NK7L_|#0VQspR8N# zi?Katt*^F#(J83*Ay{lNG~rMOL@th?3|4zkmqM8u!L~L|G81MG>ct4e_t<#=lU~In z*a*Xy*3Ulh#fUmvi^|+%X4pb%HHv={9T*xr6ntd5WT%uJRR}ZO$D_#}TiK@4u}y`{ zDPjI8$=%OlZ+YRnFi&hFkC>se01N z5MQaG>Y{U3Qx}j25q#E2UoQ&d4rFU9x6VQOXcm8~h7vWmDP=xNJZx9vZ*t?gfDvJK z^!RxO>f;M;0+;TXRXe?K5{u`wm^DXGNI>z2?ZmD=E0M^cUL>_qFVXLoZ|wr4^|R*E zR^@6IDbtS#+DL5DGoJejir;^I3we@(0H&|7E;KkfEn0j@iD3!Za|Ohxm0*_V_Uc+X zwBPjT`PvGY^WRo4;XO+}^66wy++GEg;~`dPk6v{n(%u+oj-0;Lw@02-F{rB*23f^F zyaiVM?B;D9oM=awaSKK?9Ws#blDxcA9(08_ZIC5!Pu(y3)));>Ay$8d$mCB=j0