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