1 # -*- coding: utf-8 -*-
2 # --------------------------------------------------
4 # --------------------------------------------------
11 JdC = JDC_CATA(code='HOMARD',
13 regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
16 # Type le plus general
17 class entier (ASSD):pass
18 class reel (ASSD):pass
19 class complexe(ASSD):pass
20 class liste (ASSD):pass
21 class chaine (ASSD):pass
29 # --------------------------------------------------
31 # --------------------------------------------------
34 DONNEES_HOMARD=PROC(nom="DONNEES_HOMARD",op= 189, docu="U7.04.01-b",
35 UIinfo={"groupes":("Fonction",)},
36 fr="Imprime le fichier de configuration de HOMARD.",
37 ang="Writes the configuration file for HOMARD.",
39 # 1. Langue des messages issus de HOMARD
41 LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
42 into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
43 fr="Langue des messages issus de HOMARD.",
44 ang="Language for HOMARD messages." ),
46 # 2. Les fichiers en entree/sortie
48 MESSAGES = SIMP(statut='o' ,typ='TXM',
49 fr="Nom du fichier contenant les messages de sortie",
52 # 3. Le type de traitement :
54 TRAITEMENT =FACT(statut='o',
56 # 3.1. DEUX CHOIX EXCLUSIFS :
58 # A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT
59 # . RAFFINEMENT ET DERAFFINEMENT
61 # . DERAFFINEMENT SEUL
62 # B. INFORMATION SUR UN MAILLAGE
64 regles=( AU_MOINS_UN('RAFFINEMENT','DERAFFINEMENT','INFORMATION'),
65 EXCLUS('RAFFINEMENT','INFORMATION'),
66 EXCLUS('DERAFFINEMENT','INFORMATION'),),
67 #PRESENT_PRESENT('RAFFINEMENT','DERAFFINEMENT'),
68 #PRESENT_PRESENT('DERAFFINEMENT','RAFFINEMENT'),),
69 RAFFINEMENT =SIMP(statut='f',typ='TXM',
70 fr="Choix du mode de raffinement.",
71 ang="Choice of refinement mode.",
72 into=("LIBRE","UNIFORME","NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ),
73 DERAFFINEMENT =SIMP(statut='f',typ='TXM',
74 fr="Choix du mode de deraffinement.",
75 ang="Choice of unrefinement mode.",
76 into=("LIBRE","UNIFORME","NON") ),
77 INFORMATION =SIMP(statut='f',typ='TXM',
78 fr="Information sur un maillage",
79 ang="Information on a mesh",
82 # 3.2. LES CONTRAINTES :
84 # 3.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
85 # A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
86 # B. LE NOM MED DU MAILLAGE D'ENTREE
87 # C. LE NOM MED DE L'INDICATEUR D'ERREUR
88 # D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
89 # E. LA MISE A JOUR DE SOLUTION
90 # F. LE NOM MED DU MAILLAGE DE SORTIE
91 # REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
93 # 3.2.2. POUR DE L'ADAPTATION UNIFORME
95 # A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
96 # B. LE NOM MED DU MAILLAGE DE SORTIE
98 # A. LE NOM MED DE L'INDICATEUR D'ERREUR
99 # B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
101 # REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
102 # IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
104 # 3.2.3. POUR DE L'INFORMATION :
106 # A. LE NOM MED DU MAILLAGE D'ENTREE
108 # A. LE NOM MED DE L'INDICATEUR D'ERREUR
109 # B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
111 # D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
112 # E. LA MISE A JOUR DE SOLUTION
114 NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',
115 fr="Nom MED du maillage en entrée",
116 ang="MED name of the in-mesh",),
117 FICHIER_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',
118 fr="Nom du fichier MED du maillage en entrée",
119 ang="MED file name of the in-mesh",),
121 b_iteration_maj_champ =BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
122 fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs",
123 ang="MED name of the out-mesh, iteration rank and field updating",
124 NITER =SIMP(statut='o',typ='I',
125 fr="Numéro d'itération avant l'adaptation.",
126 ang="Iteration number before adaptation." ),
127 NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
128 fr="Nom MED du maillage en sortie",
129 ang="MED name of the out-mesh" ),
130 FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
131 fr="Nom du fichier MED du maillage en sortie",
132 ang="MED file name of the out-mesh" ),
135 b_indicateur_d_erreur =BLOC(condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
136 ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( DERAFFINEMENT == 'LIBRE' ) ",
137 fr="Indicateur d'erreur",
138 ang="Error indicator",
139 NOM_MED =SIMP(statut='o',typ='TXM',
140 fr="Nom MED de l'indicateur d'erreur.",
141 ang="MED name of error indicator.",),
142 COMPOSANTE =SIMP(statut='o',typ='TXM',
143 fr="Nom de la composante de l'indicateur d'erreur retenue.",
144 ang="Name of the selected component of the error indicator.",),
145 NUME_ORDRE =SIMP(statut='f',typ='I',
146 fr="Numero d'ordre de l'indicateur.",
147 ang="Rank number of the error indicator.",),
150 b_critere_de_raffinement =BLOC( condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
151 ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) ",
152 fr="Critère de raffinement.",
153 ang="Refinement threshold.",
154 regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
155 CRIT_RAFF_ABS =SIMP(statut='f',typ='R',
157 ang="Absolute threshold" ),
158 CRIT_RAFF_REL =SIMP(statut='f',typ='R',
159 fr="Critère relatif",
160 ang="Relative threshold" ),
161 CRIT_RAFF_PE =SIMP(statut='f',typ='R',
162 fr="Pourcentage d'éléments",
163 ang="Percentage of elements" ),
166 b_critere_de_deraffinement =BLOC ( condition = "( DERAFFINEMENT == 'LIBRE' ) ",
167 fr="Critère de déraffinement.",
168 ang="Unrefinement threshold.",
169 regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
170 CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
172 ang="Absolute threshold" ),
173 CRIT_DERA_REL =SIMP(statut='f',typ='R',
174 fr="Critère relatif",
175 ang="Relative threshold" ),
176 CRIT_DERA_PE =SIMP(statut='f',typ='R',
177 fr="Pourcentage d'éléments",
178 ang="Percentage of elements" ),
181 b_niveau_maximum =BLOC ( condition = " ( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
182 ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( RAFFINEMENT == 'UNIFORME' ) ",
183 NIVE_MAX =SIMP(statut='f',typ='I',
184 fr="Niveau maximum de profondeur de raffinement",
185 ang="Maximum level for refinement"),
188 b_niveau_minimum =BLOC ( condition = " ( DERAFFINEMENT == 'LIBRE' ) or ( DERAFFINEMENT == 'UNIFORME' ) ",
189 NIVE_MIN =SIMP(statut='f',typ='I',
190 fr="Niveau minimum de déraffinement",
191 ang="Minimum level for unrefinement" ),
194 # 3.3. Le suivi de frontiere eventuel :
196 NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
197 fr="Nom MED du maillage de la frontiere à suivre",
198 ang="MED name of the boundary mesh" ),
200 b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
201 GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
202 fr="Groupes définissant la frontière",
203 ang="Groups which define the boundary" ),
205 fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
206 FIC_FRON = SIMP(statut='f',typ='TXM',
207 fr="Nom du fichier MED contenant le maillage frontiere",
208 ang="MED File including the boundary mesh" ),
213 # 4. L'ANALYSE DU MAILLAGE
215 ANALYSE =FACT(statut='f',
216 fr="Analyse du maillage.",
217 ang="Mesh analysis.",
219 # 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
220 # A. NOMBRE DES ELEMENTS
221 # B. QUALITE DES ELEMENTS
222 # C. INTERPENETRATION DES ELEMENTS
223 # D. CONNEXITE DU MAILLAGE
224 # E. TAILLE DES DIFFERENTS SOUS-DOMAINES
226 regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
228 NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
229 fr="Nombre de noeuds et éléments du maillage",
230 ang="Number of nodes and elements in the mesh" ),
232 QUALITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
233 fr="Qualité du maillage",
234 ang="Mesh quality" ),
236 INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
237 fr="Controle de la non interpénétration des éléments.",
238 ang="Overlapping checking." ),
240 CONNEXITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
241 fr="Connexité du maillage.",
242 ang="Mesh connexity." ),
244 TAILLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
245 fr="Tailles des sous-domaines du maillage.",
246 ang="Sizes of mesh sub-domains." ),