Salome HOME
PN intégration des modifs faites pour Homard
[tools/eficas.git] / Homard / homard_cata_STA7.py
1 # --------------------------------------------------
2 # debut entete
3 # --------------------------------------------------
4
5 import Accas
6 from Accas import *
7
8 #CONTEXT.debug=1
9
10 JdC = JDC_CATA(code='HOMARD',
11                execmodul=None,
12                regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
13                         )
14
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
21
22 # Types geometriques
23 class no  (GEOM):pass
24 class grno(GEOM):pass
25 class ma  (GEOM):pass
26 class grma(GEOM):pass
27
28 # --------------------------------------------------
29 # fin entete
30 # --------------------------------------------------
31
32
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.",
37 #
38 # 1. Langue des messages issus de HOMARD
39 #
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." ),
44 #
45 # 2. Les fichiers en entree/sortie
46 #
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",
56                          ang="Log File"),
57                      ),
58 #
59 # 3. Le type de traitement :
60 #
61          TRAITEMENT      =FACT(statut='o',
62 #
63 # 3.1. DEUX CHOIX EXCLUSIFS :
64 #
65 #      A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT
66 #         . RAFFINEMENT ET DERAFFINEMENT
67 #         . RAFFINEMENT SEUL
68 #         . DERAFFINEMENT SEUL
69 #      B. INFORMATION SUR UN MAILLAGE
70 #
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.",
77                                  defaut="LIBRE",
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.",
82                                  defaut="LIBRE",
83                                  into=("LIBRE","UNIFORME","NON") ),
84            INFORMATION     =SIMP(statut='f',typ='TXM',
85                                  fr="Information sur un maillage",
86                                  ang="Information on a mesh",
87                                  into=("OUI",) ),
88 #
89 # 3.2. LES CONTRAINTES :
90 #
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
99 #
100 # 3.2.2. POUR DE L'ADAPTATION UNIFORME
101 #          IL FAUT :
102 #      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
103 #      B. LE NOM MED DU MAILLAGE DE SORTIE
104 #          IL NE FAUT PAS :
105 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
106 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
107 #      C. LES CRITERES
108 #      REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
109 #                 IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
110 #
111 # 3.2.3. POUR DE L'INFORMATION :
112 #          IL FAUT :
113 #      A. LE NOM MED DU MAILLAGE D'ENTREE
114 #          IL NE FAUT PAS :
115 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
116 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
117 #      C. LES CRITERES
118 #      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
119 #      E. LA MISE A JOUR DE SOLUTION
120 #
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",),
124 #
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" ),
134                            ) ,
135 #
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.",),
149                            ) ,
150 #
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',
157                                                  fr="Critère absolu",
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" ),
165                            ) ,
166 #
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' ,
172                                                  fr="Critère absolu",
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" ),
180                            ) ,
181 #
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"),
187                            ) ,
188 #
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" ),
193                            ) ,
194 #
195 # 3.3. Le suivi de frontiere eventuel :
196 #
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" ),
200 #
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" ),
205                                ) ,
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" ),
210                                ), 
211 #
212          ),
213 #
214 # 4. L'ANALYSE DU MAILLAGE
215 #
216          ANALYSE         =FACT(statut='f',
217                                fr="Analyse du maillage.",
218                                ang="Mesh analysis.",
219 #
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
226 #
227            regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
228 #
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" ),
232 #
233          QUALITE         =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
234                           fr="Qualité du maillage",
235                           ang="Mesh quality" ),
236 #
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." ),
240 #
241          CONNEXITE       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
242                           fr="Connexité du maillage.",
243                           ang="Mesh connexity." ),
244 #
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." ),
248 #
249          ),
250 #
251 )  ;