Salome HOME
PN pour afficher 1 seule fenetre de parametres
[tools/eficas.git] / Homard / homard_cata_V6n.py
1
2 # --------------------------------------------------
3 # debut entete
4 # --------------------------------------------------
5
6 import Accas
7 from Accas import *
8
9 #CONTEXT.debug=1
10
11 JdC = JDC_CATA(code='HOMARD',
12                execmodul=None,
13                regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
14                         )
15
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
22
23 # Types geometriques
24 class no  (GEOM):pass
25 class grno(GEOM):pass
26 class ma  (GEOM):pass
27 class grma(GEOM):pass
28
29 # --------------------------------------------------
30 # fin entete
31 # --------------------------------------------------
32
33
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.",
38 #
39 # 1. Langue des messages issus de HOMARD
40 #
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." ),
45 #
46 # 2. Les fichiers en entree/sortie
47 #
48          MESSAGES =  SIMP(statut='f' ,typ='TXM',
49                          fr="Nom du fichier contenant les messages de sortie",
50                          ang="Log File"),
51 #
52 # 3. Le type de traitement :
53 #
54          TRAITEMENT      =FACT(statut='o',
55 #
56 # 3.1. DEUX CHOIX EXCLUSIFS :
57 #
58 #      A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT
59 #         . RAFFINEMENT ET DERAFFINEMENT
60 #         . RAFFINEMENT SEUL
61 #         . DERAFFINEMENT SEUL
62 #      B. INFORMATION SUR UN MAILLAGE
63 #
64            regles=( AU_MOINS_UN('RAFFINEMENT','DERAFFINEMENT','INFORMATION'),
65                     EXCLUS('RAFFINEMENT','INFORMATION'),
66                     PRESENT_PRESENT('RAFFINEMENT','DERAFFINEMENT'),
67                     PRESENT_PRESENT('DERAFFINEMENT','RAFFINEMENT'),),
68            RAFFINEMENT      =SIMP(statut='f',typ='TXM',     
69                                  fr="Choix du mode de raffinement.",
70                                  ang="Choice of refinement mode.",
71                                  into=("LIBRE","UNIFORME","NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ),
72            DERAFFINEMENT   =SIMP(statut='f',typ='TXM',     
73                                  fr="Choix du mode de deraffinement.",
74                                  ang="Choice of unrefinement mode.",
75                                  into=("LIBRE","UNIFORME","NON") ),
76            INFORMATION     =SIMP(statut='f',typ='TXM',
77                                  fr="Information sur un maillage",
78                                  ang="Information on a mesh",
79                                  into=("OUI",) ),
80 #
81 # 3.2. LES CONTRAINTES :
82 #
83 # 3.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
84 #      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
85 #      B. LE NOM MED DU MAILLAGE D'ENTREE
86 #      C. LE NOM MED DE L'INDICATEUR D'ERREUR
87 #      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
88 #      E. LA MISE A JOUR DE SOLUTION
89 #      F. LE NOM MED DU MAILLAGE DE SORTIE
90 #      REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
91 #
92 # 3.2.2. POUR DE L'ADAPTATION UNIFORME
93 #          IL FAUT :
94 #      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
95 #      B. LE NOM MED DU MAILLAGE DE SORTIE
96 #          IL NE FAUT PAS :
97 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
98 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
99 #      C. LES CRITERES
100 #      REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
101 #                 IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
102 #
103 # 3.2.3. POUR DE L'INFORMATION :
104 #          IL FAUT :
105 #      A. LE NOM MED DU MAILLAGE D'ENTREE
106 #          IL NE FAUT PAS :
107 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
108 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
109 #      C. LES CRITERES
110 #      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
111 #      E. LA MISE A JOUR DE SOLUTION
112 #
113            NOM_MED_MAILLAGE_N    =SIMP(statut='o',typ='TXM',     
114                                  fr="Nom MED du maillage en entrée",
115                                  ang="MED name of the in-mesh",),
116            FICHIER_MED_MAILLAGE_N    =SIMP(statut='o',typ='TXM',     
117                                  fr="Nom du fichier MED du maillage en entrée",
118                                  ang="MED file name of the in-mesh",),
119 #
120            b_iteration_maj_champ =BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
121                            fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs",
122                            ang="MED name of the out-mesh, iteration rank and field updating",
123                            NITER                =SIMP(statut='o',typ='I',
124                            fr="Numéro d'itération avant l'adaptation.",
125                            ang="Iteration number before adaptation." ),
126                            NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
127                            fr="Nom MED du maillage en sortie",
128                            ang="MED name of the out-mesh" ),
129                            FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
130                            fr="Nom du fichier MED du maillage en sortie",
131                            ang="MED file name of the out-mesh" ),
132                            ) ,
133 #
134            b_indicateur_d_erreur  =BLOC(condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
135                                                      ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( DERAFFINEMENT == 'LIBRE' ) ",
136                            fr="Indicateur d'erreur",
137                            ang="Error indicator",
138                            NOM_MED  =SIMP(statut='o',typ='TXM',
139                            fr="Nom MED de l'indicateur d'erreur.",
140                            ang="MED name of error indicator.",),
141                            COMPOSANTE  =SIMP(statut='o',typ='TXM',
142                            fr="Nom de la composante de l'indicateur d'erreur retenue.",
143                            ang="Name of the selected component of the error indicator.",),
144                            NUME_ORDRE  =SIMP(statut='f',typ='I',
145                            fr="Numero d'ordre de l'indicateur.",
146                            ang="Rank number of the error indicator.",),
147                            ) ,
148 #
149            b_critere_de_raffinement =BLOC( condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
150                                                         ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) ",
151                            fr="Critère de raffinement.",
152                            ang="Refinement threshold.",
153                            regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
154                            CRIT_RAFF_ABS   =SIMP(statut='f',typ='R',
155                                                  fr="Critère absolu",
156                                                  ang="Absolute threshold"  ),
157                            CRIT_RAFF_REL   =SIMP(statut='f',typ='R',
158                                                  fr="Critère relatif",
159                                                  ang="Relative threshold" ),
160                            CRIT_RAFF_PE    =SIMP(statut='f',typ='R',
161                                                  fr="Pourcentage d'éléments",
162                                                  ang="Percentage of elements" ),
163                            ) ,
164 #
165            b_critere_de_deraffinement =BLOC ( condition = "( DERAFFINEMENT == 'LIBRE' ) ",
166                            fr="Critère de déraffinement.",
167                            ang="Unrefinement threshold.",
168                            regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
169                            CRIT_DERA_ABS   =SIMP(statut='f',typ='R' ,
170                                                  fr="Critère absolu",
171                                                  ang="Absolute threshold" ),
172                            CRIT_DERA_REL   =SIMP(statut='f',typ='R',
173                                                  fr="Critère relatif",
174                                                  ang="Relative threshold" ),
175                            CRIT_DERA_PE    =SIMP(statut='f',typ='R',
176                                                  fr="Pourcentage d'éléments",
177                                                  ang="Percentage of elements" ),
178                            ) ,
179 #
180            b_niveau_maximum =BLOC ( condition = " ( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
181                                                   ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or ( RAFFINEMENT == 'UNIFORME' ) ",
182                            NIVE_MAX        =SIMP(statut='f',typ='I',
183                                                  fr="Niveau maximum de profondeur de raffinement",
184                                                  ang="Maximum level for refinement"),
185                            ) ,
186 #
187            b_niveau_minimum =BLOC ( condition = " ( DERAFFINEMENT == 'LIBRE' ) or ( DERAFFINEMENT == 'UNIFORME' ) ",
188                            NIVE_MIN        =SIMP(statut='f',typ='I',
189                                                  fr="Niveau minimum de déraffinement",
190                                                  ang="Minimum level for unrefinement" ),
191                            ) ,
192 #
193 # 3.3. Le suivi de frontiere eventuel :
194 #
195          NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
196                            fr="Nom MED du maillage de la frontiere à suivre",
197                            ang="MED name of the boundary mesh" ),
198 #
199          b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
200                            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
201                                                  fr="Groupes définissant la frontière",
202                                                  ang="Groups which define the boundary" ),
203                                ) ,
204          fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
205                           FIC_FRON = SIMP(statut='f',typ='TXM',
206                                          fr="Nom du fichier MED contenant le maillage frontiere",
207                                          ang="MED File including the boundary mesh" ),
208                                ), 
209 #
210          ),
211 #
212 # 4. L'ANALYSE DU MAILLAGE
213 #
214          ANALYSE         =FACT(statut='f',
215                                fr="Analyse du maillage.",
216                                ang="Mesh analysis.",
217 #
218 #    5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
219 #    A. NOMBRE DES ELEMENTS
220 #    B. QUALITE DES ELEMENTS
221 #    C. INTERPENETRATION DES ELEMENTS
222 #    D. CONNEXITE DU MAILLAGE
223 #    E. TAILLE DES DIFFERENTS SOUS-DOMAINES
224 #
225            regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
226 #
227          NOMBRE          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
228                           fr="Nombre de noeuds et éléments du maillage",
229                           ang="Number of nodes and elements in the mesh" ),
230 #
231          QUALITE         =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
232                           fr="Qualité du maillage",
233                           ang="Mesh quality" ),
234 #
235          INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
236                           fr="Controle de la non interpénétration des éléments.",
237                           ang="Overlapping checking." ),
238 #
239          CONNEXITE       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
240                           fr="Connexité du maillage.",
241                           ang="Mesh connexity." ),
242 #
243          TAILLE          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
244                           fr="Tailles des sous-domaines du maillage.",
245                           ang="Sizes of mesh sub-domains." ),
246 #
247          ),
248 #
249 )  ;