Salome HOME
PN pour notation scientifique
[tools/eficas.git] / Homard / homard_cata_V6n.py
1 # -*- coding: utf-8 -*-
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='o' ,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                     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",
80                                  into=("OUI",) ),
81 #
82 # 3.2. LES CONTRAINTES :
83 #
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
92 #
93 # 3.2.2. POUR DE L'ADAPTATION UNIFORME
94 #          IL FAUT :
95 #      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
96 #      B. LE NOM MED DU MAILLAGE DE SORTIE
97 #          IL NE FAUT PAS :
98 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
99 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
100 #      C. LES CRITERES
101 #      REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
102 #                 IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
103 #
104 # 3.2.3. POUR DE L'INFORMATION :
105 #          IL FAUT :
106 #      A. LE NOM MED DU MAILLAGE D'ENTREE
107 #          IL NE FAUT PAS :
108 #      A. LE NOM MED DE L'INDICATEUR D'ERREUR
109 #      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
110 #      C. LES CRITERES
111 #      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
112 #      E. LA MISE A JOUR DE SOLUTION
113 #
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",),
120 #
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" ),
133                            ) ,
134 #
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.",),
148                            ) ,
149 #
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',
156                                                  fr="Critère absolu",
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" ),
164                            ) ,
165 #
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' ,
171                                                  fr="Critère absolu",
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" ),
179                            ) ,
180 #
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"),
186                            ) ,
187 #
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" ),
192                            ) ,
193 #
194 # 3.3. Le suivi de frontiere eventuel :
195 #
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" ),
199 #
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" ),
204                                ) ,
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" ),
209                                ), 
210 #
211          ),
212 #
213 # 4. L'ANALYSE DU MAILLAGE
214 #
215          ANALYSE         =FACT(statut='f',
216                                fr="Analyse du maillage.",
217                                ang="Mesh analysis.",
218 #
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
225 #
226            regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
227 #
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" ),
231 #
232          QUALITE         =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
233                           fr="Qualité du maillage",
234                           ang="Mesh quality" ),
235 #
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." ),
239 #
240          CONNEXITE       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
241                           fr="Connexité du maillage.",
242                           ang="Mesh connexity." ),
243 #
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." ),
247 #
248          ),
249 #
250 )  ;