From 5976acb46e6cb4f51e2b4d5dd352662357a3c7d3 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Thu, 7 Oct 2004 14:26:18 +0000 Subject: [PATCH] *** empty log message *** --- Homard/homard_cata_V6n.py | 249 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100755 Homard/homard_cata_V6n.py diff --git a/Homard/homard_cata_V6n.py b/Homard/homard_cata_V6n.py new file mode 100755 index 00000000..a1998d03 --- /dev/null +++ b/Homard/homard_cata_V6n.py @@ -0,0 +1,249 @@ + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +import Accas +from Accas import * + +#CONTEXT.debug=1 + +JdC = JDC_CATA(code='HOMARD', + execmodul=None, + regles = (AU_MOINS_UN('DONNEES_HOMARD'),), + ) + +# Type le plus general +class entier (ASSD):pass +class reel (ASSD):pass +class complexe(ASSD):pass +class liste (ASSD):pass +class chaine (ASSD):pass + +# Types geometriques +class no (GEOM):pass +class grno(GEOM):pass +class ma (GEOM):pass +class grma(GEOM):pass + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- + + +DONNEES_HOMARD=PROC(nom="DONNEES_HOMARD",op= 189, docu="U7.04.01-b", + UIinfo={"groupes":("Fonction",)}, + fr="Imprime le fichier de configuration de HOMARD.", + ang="Writes the configuration file for HOMARD.", +# +# 1. Langue des messages issus de HOMARD +# + LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS", + into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",), + fr="Langue des messages issus de HOMARD.", + ang="Language for HOMARD messages." ), +# +# 2. Les fichiers en entree/sortie +# + MESSAGES = SIMP(statut='f' ,typ='TXM', + fr="Nom du fichier contenant les messages de sortie", + ang="Log File"), +# +# 3. Le type de traitement : +# + TRAITEMENT =FACT(statut='o', +# +# 3.1. DEUX CHOIX EXCLUSIFS : +# +# A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT +# . RAFFINEMENT ET DERAFFINEMENT +# . RAFFINEMENT SEUL +# . DERAFFINEMENT SEUL +# B. INFORMATION SUR UN MAILLAGE +# + regles=( AU_MOINS_UN('RAFFINEMENT','DERAFFINEMENT','INFORMATION'), + EXCLUS('RAFFINEMENT','INFORMATION'), + PRESENT_PRESENT('RAFFINEMENT','DERAFFINEMENT'), + PRESENT_PRESENT('DERAFFINEMENT','RAFFINEMENT'),), + RAFFINEMENT =SIMP(statut='f',typ='TXM', + fr="Choix du mode de raffinement.", + ang="Choice of refinement mode.", + into=("LIBRE","UNIFORME","NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ), + DERAFFINEMENT =SIMP(statut='f',typ='TXM', + fr="Choix du mode de deraffinement.", + ang="Choice of unrefinement mode.", + into=("LIBRE","UNIFORME","NON") ), + INFORMATION =SIMP(statut='f',typ='TXM', + fr="Information sur un maillage", + ang="Information on a mesh", + into=("OUI",) ), +# +# 3.2. LES CONTRAINTES : +# +# 3.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT : +# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART +# B. LE NOM MED DU MAILLAGE D'ENTREE +# C. LE NOM MED DE L'INDICATEUR D'ERREUR +# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART +# E. LA MISE A JOUR DE SOLUTION +# F. LE NOM MED DU MAILLAGE DE SORTIE +# REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS +# +# 3.2.2. POUR DE L'ADAPTATION UNIFORME +# IL FAUT : +# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART +# B. LE NOM MED DU MAILLAGE DE SORTIE +# IL NE FAUT PAS : +# A. LE NOM MED DE L'INDICATEUR D'ERREUR +# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR +# C. LES CRITERES +# REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION, +# IL FAUT LE NOM MED DU MAILLAGE D'ENTREE +# +# 3.2.3. POUR DE L'INFORMATION : +# IL FAUT : +# A. LE NOM MED DU MAILLAGE D'ENTREE +# IL NE FAUT PAS : +# A. LE NOM MED DE L'INDICATEUR D'ERREUR +# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR +# C. LES CRITERES +# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART +# E. LA MISE A JOUR DE SOLUTION +# + NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM', + fr="Nom MED du maillage en entrée", + ang="MED name of the in-mesh",), + FICHIER_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM', + fr="Nom du fichier MED du maillage en entrée", + ang="MED file name of the in-mesh",), +# + b_iteration_maj_champ =BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ", + fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs", + ang="MED name of the out-mesh, iteration rank and field updating", + NITER =SIMP(statut='o',typ='I', + fr="Numéro d'itération avant l'adaptation.", + ang="Iteration number before adaptation." ), + NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM', + fr="Nom MED du maillage en sortie", + ang="MED name of the out-mesh" ), + FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM', + fr="Nom du fichier MED du maillage en sortie", + ang="MED file name of the out-mesh" ), + ) , +# + b_indicateur_d_erreur =BLOC(condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \ + ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( DERAFFINEMENT == 'LIBRE' ) ", + fr="Indicateur d'erreur", + ang="Error indicator", + NOM_MED =SIMP(statut='o',typ='TXM', + fr="Nom MED de l'indicateur d'erreur.", + ang="MED name of error indicator.",), + COMPOSANTE =SIMP(statut='o',typ='TXM', + fr="Nom de la composante de l'indicateur d'erreur retenue.", + ang="Name of the selected component of the error indicator.",), + NUME_ORDRE =SIMP(statut='f',typ='I', + fr="Numero d'ordre de l'indicateur.", + ang="Rank number of the error indicator.",), + ) , +# + b_critere_de_raffinement =BLOC( condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \ + ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) ", + fr="Critère de raffinement.", + ang="Refinement threshold.", + regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),), + CRIT_RAFF_ABS =SIMP(statut='f',typ='R', + fr="Critère absolu", + ang="Absolute threshold" ), + CRIT_RAFF_REL =SIMP(statut='f',typ='R', + fr="Critère relatif", + ang="Relative threshold" ), + CRIT_RAFF_PE =SIMP(statut='f',typ='R', + fr="Pourcentage d'éléments", + ang="Percentage of elements" ), + ) , +# + b_critere_de_deraffinement =BLOC ( condition = "( DERAFFINEMENT == 'LIBRE' ) ", + fr="Critère de déraffinement.", + ang="Unrefinement threshold.", + regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),), + CRIT_DERA_ABS =SIMP(statut='f',typ='R' , + fr="Critère absolu", + ang="Absolute threshold" ), + CRIT_DERA_REL =SIMP(statut='f',typ='R', + fr="Critère relatif", + ang="Relative threshold" ), + CRIT_DERA_PE =SIMP(statut='f',typ='R', + fr="Pourcentage d'éléments", + ang="Percentage of elements" ), + ) , +# + b_niveau_maximum =BLOC ( condition = " ( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \ + ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( RAFFINEMENT == 'UNIFORME' ) ", + NIVE_MAX =SIMP(statut='f',typ='I', + fr="Niveau maximum de profondeur de raffinement", + ang="Maximum level for refinement"), + ) , +# + b_niveau_minimum =BLOC ( condition = " ( DERAFFINEMENT == 'LIBRE' ) or ( DERAFFINEMENT == 'UNIFORME' ) ", + NIVE_MIN =SIMP(statut='f',typ='I', + fr="Niveau minimum de déraffinement", + ang="Minimum level for unrefinement" ), + ) , +# +# 3.3. Le suivi de frontiere eventuel : +# + NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM', + fr="Nom MED du maillage de la frontiere à suivre", + ang="MED name of the boundary mesh" ), +# + b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" , + GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**', + fr="Groupes définissant la frontière", + ang="Groups which define the boundary" ), + ) , + fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" , + FIC_FRON = SIMP(statut='f',typ='TXM', + fr="Nom du fichier MED contenant le maillage frontiere", + ang="MED File including the boundary mesh" ), + ), +# + ), +# +# 4. L'ANALYSE DU MAILLAGE +# + ANALYSE =FACT(statut='f', + fr="Analyse du maillage.", + ang="Mesh analysis.", +# +# 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) : +# A. NOMBRE DES ELEMENTS +# B. QUALITE DES ELEMENTS +# C. INTERPENETRATION DES ELEMENTS +# D. CONNEXITE DU MAILLAGE +# E. TAILLE DES DIFFERENTS SOUS-DOMAINES +# + regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),), +# + NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"), + fr="Nombre de noeuds et éléments du maillage", + ang="Number of nodes and elements in the mesh" ), +# + QUALITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Qualité du maillage", + ang="Mesh quality" ), +# + INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Controle de la non interpénétration des éléments.", + ang="Overlapping checking." ), +# + CONNEXITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Connexité du maillage.", + ang="Mesh connexity." ), +# + TAILLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"), + fr="Tailles des sous-domaines du maillage.", + ang="Sizes of mesh sub-domains." ), +# + ), +# +) ; -- 2.39.2