]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
PN :
authoreficas <>
Tue, 9 Aug 2005 10:00:18 +0000 (10:00 +0000)
committereficas <>
Tue, 9 Aug 2005 10:00:18 +0000 (10:00 +0000)
Homard/homard_cata_V73.py [new file with mode: 0755]

diff --git a/Homard/homard_cata_V73.py b/Homard/homard_cata_V73.py
new file mode 100755 (executable)
index 0000000..24a7e8c
--- /dev/null
@@ -0,0 +1,309 @@
+# -*- coding: utf-8 -*-
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+#CONTEXT.debug=1
+
+JdC = JDC_CATA(code='HOMARD',
+               execmodul=None,
+               regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
+                       )
+
+# Type le plus general
+class entier  (ASSD):pass
+class reel    (ASSD):pass
+class complexe(ASSD):pass
+class liste   (ASSD):pass
+class chaine  (ASSD):pass
+
+# Types geometriques
+class no  (GEOM):pass
+class grno(GEOM):pass
+class ma  (GEOM):pass
+class grma(GEOM):pass
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+def bloc_adaptation():
+    return BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
+                fr="Nom MED du maillage en sortie, numero d'iteration",
+                ang="MED name of the out-mesh, iteration rank",
+                NITER =SIMP(statut='o',typ='I',
+                           fr="Numéro d'itération avant l'adaptation.",
+                           ang="Iteration number before adaptation." ),
+                NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom MED du maillage en sortie",
+                           ang="MED name of the out-mesh" ),
+                FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom du fichier MED du maillage en sortie",
+                           ang="MED file name of the out-mesh" ),
+           )
+
+#
+def critere_de_raffinement() :
+  return BLOC(condition = "( RAFFINEMENT != 'NON' ) ",
+               fr="Critère de raffinement.",
+               ang="Refinement threshold.",
+               regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
+               CRIT_RAFF_ABS   =SIMP (statut='f',typ='R',
+                                      fr="Critère absolu",
+                                      ang="Absolute threshold"  ),
+               CRIT_RAFF_REL   =SIMP (statut='f',typ='R',
+                                      fr="Critère relatif",
+                                      ang="Relative threshold" ),
+               CRIT_RAFF_PE    =SIMP (statut='f',typ='R',
+                                      fr="Pourcentage d'éléments",
+                                      ang="Percentage of elements" ),
+               )
+#
+def critere_de_deraffinement():
+   return BLOC(condition = "( DERAFFINEMENT != 'NON' ) ",
+               fr="Critère de déraffinement.",
+               ang="Unrefinement threshold.",
+               regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+               CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
+                                   fr="Critère absolu",
+                                   ang="Absolute threshold" ),
+               CRIT_DERA_REL   =SIMP(statut='f',typ='R',
+                                     fr="Critère relatif",
+                                     ang="Relative threshold" ),
+               CRIT_DERA_PE    =SIMP(statut='f',typ='R',
+                                     fr="Pourcentage d'éléments",
+                                     ang="Percentage of elements" ),
+          )
+
+def indicateur_d_erreur():
+   return  BLOC(condition = "( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
+                          ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR') or (DERAFFINEMENT == 'LIBRE')",
+             fr="Indicateur d'erreur",
+             ang="Error indicator",
+             NOM_MED  =    SIMP (statut='o',typ='TXM',
+                             fr="Nom MED de l'indicateur d'erreur.",
+                             ang="MED name of error indicator.",),
+             COMPOSANTE  = SIMP(statut='o',typ='TXM',
+                             fr="Nom de la composante de l'indicateur d'erreur retenue.",
+                             ang="Name of the selected component of the error indicator.",),
+             NUME_ORDRE  = SIMP(statut='o',typ='I',
+                             fr="Numero d'ordre de l'indicateur.",
+                             ang="Rank number of the error indicator.",),
+             NUME_PAS_TEMPS  = SIMP(statut='f',typ='I',
+                             fr="Numero de pas de temps de l'indicateur.",
+                             ang="Time step number of the error indicator.",),
+                           ) 
+
+def niveau_maximum():
+   return BLOC ( condition = " ( RAFFINEMENT == 'LIBRE' ) or ( RAFFINEMENT == 'NON-CONFORME' ) or \
+                                ( RAFFINEMENT == 'NON-CONFORME-INDICATEUR' ) or \
+                                ( RAFFINEMENT == 'UNIFORME' ) ",
+                 NIVE_MAX      = SIMP(statut='f',typ='I',
+                                 fr="Niveau maximum de profondeur de raffinement",
+                                 ang="Maximum level for refinement"),
+                           )
+#
+def niveau_minimum():
+   return BLOC ( condition = " ( DERAFFINEMENT == 'LIBRE' ) or ( DERAFFINEMENT == 'UNIFORME' ) ",
+                 NIVE_MIN  = SIMP(statut='f',typ='I',
+                             fr="Niveau minimum de déraffinement",
+                             ang="Minimum level for unrefinement" ),
+                           ) 
+
+
+DONNEES_HOMARD=PROC(nom="DONNEES_HOMARD",op= 189, docu="U7.04.01-b",
+            UIinfo={"groupes":("Fonction",)},
+                    fr="Imprime le fichier de configuration de HOMARD.",
+                    ang="Writes the configuration file for HOMARD.",
+#
+# 1. Langue des messages issus de HOMARD
+#
+         LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",    
+                               into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+                           fr="Langue des messages issus de HOMARD.",
+                           ang="Language for HOMARD messages." ),
+#
+# 2. Les fichiers en entree/sortie
+#
+         MESSAGES =  SIMP(statut='o' ,typ='TXM',
+                         fr="Nom du fichier contenant les messages de sortie",
+                         ang="Log File"),
+#
+# 3. Le type de traitement :
+#
+          TRAITEMENT      =FACT(statut='o',
+           regles=( UN_PARMI('TYPE_RAFFINEMENT_LIBRE','TYPE_DERAFFINEMENT_UNIFORME','TYPE_RAFFINEMENT_UNIFORME','INFORMATION'),
+###                    EXCLUS('TYPE_RAFFINEMENT_LIBRE','INFORMATION'),
+###                    EXCLUS('TYPE_RAFFINEMENT_UNIFORME','INFORMATION'),
+                   ),
+#
+          TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
+                           RAFFINEMENT   = SIMP (statut='o',typ='TXM',
+                                           fr="Choix du mode de raffinement.",
+                                           ang="Choice of refinement mode.",
+                                           into=("NON","LIBRE","NON-CONFORME","NON-CONFORME-INDICATEUR"),),
+
+                           DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+                                           fr="Choix du mode de deraffinement.",
+                                           ang="Choice of unrefinement mode.",
+                                           into=("NON","LIBRE",),),
+
+                           b_adaptation              = bloc_adaptation(),
+                          b_indicateur_d_erreur      = indicateur_d_erreur(),
+                          b_critere_de_raffinement   = critere_de_raffinement(),
+                          b_critere_de_deraffinement = critere_de_deraffinement(),
+                           b_niveau_minimum          = niveau_minimum(),
+                           b_niveau_maximum          = niveau_maximum(),
+
+                                   ),
+
+#
+           TYPE_RAFFINEMENT_UNIFORME = FACT( statut='f',
+                           RAFFINEMENT   = SIMP (statut='o',typ='TXM',
+                                           fr="Choix du mode de raffinement.",
+                                           ang="Choice of refinement mode.",
+                                          defaut="UNIFORME",
+                                           into=("UNIFORME",),),
+
+                           DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+                                           fr="Choix du mode de deraffinement.",
+                                           ang="Choice of unrefinement mode.",
+                                          defaut="NON",
+                                           into=("NON",),),
+
+                           b_adaptation              = bloc_adaptation(),
+                           b_niveau_minimum          = niveau_minimum(),
+                           b_niveau_maximum          = niveau_maximum(),
+
+                                       ),
+
+#
+           TYPE_DERAFFINEMENT_UNIFORME = FACT( statut='f',
+                           RAFFINEMENT   = SIMP (statut='o',typ='TXM',
+                                           fr="Choix du mode de raffinement.",
+                                           ang="Choice of refinement mode.",
+                                          defaut="NON",
+                                           into=("NON",),),
+
+                           DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+                                           fr="Choix du mode de deraffinement.",
+                                           ang="Choice of unrefinement mode.",
+                                          defaut="UNIFORME",
+                                           into=("UNIFORME",),),
+
+                           b_adaptation              = bloc_adaptation(),
+                           b_niveau_minimum          = niveau_minimum(),
+                           b_niveau_maximum          = niveau_maximum(),
+                                       ),
+#
+           INFORMATION     =SIMP(statut='f',typ='TXM',
+                                 fr="Information sur un maillage",
+                                 ang="Information on a mesh",
+                                 into=("OUI",) ),
+       ),
+#
+# 3.2. LES CONTRAINTES :
+#
+# 3.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
+#      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+#      B. LE NOM MED DU MAILLAGE D'ENTREE
+#      C. LE NOM MED DE L'INDICATEUR D'ERREUR
+#      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+#      E. LA MISE A JOUR DE SOLUTION
+#      F. LE NOM MED DU MAILLAGE DE SORTIE
+#      REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
+#
+# 3.2.2. POUR DE L'ADAPTATION UNIFORME
+#          IL FAUT :
+#      A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+#      B. LE NOM MED DU MAILLAGE DE SORTIE
+#          IL NE FAUT PAS :
+#      A. LE NOM MED DE L'INDICATEUR D'ERREUR
+#      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+#      C. LES CRITERES
+#      REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
+#                 IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
+#
+# 3.2.3. POUR DE L'INFORMATION :
+#          IL FAUT :
+#      A. LE NOM MED DU MAILLAGE D'ENTREE
+#          IL NE FAUT PAS :
+#      A. LE NOM MED DE L'INDICATEUR D'ERREUR
+#      B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+#      C. LES CRITERES
+#      D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+#      E. LA MISE A JOUR DE SOLUTION
+#
+           NOM_MED_MAILLAGE_N    = SIMP(statut='o',typ='TXM',     
+                                 fr="Nom MED du maillage en entrée",
+                                 ang="MED name of the in-mesh",),
+           FICHIER_MED_MAILLAGE_N  = SIMP(statut='o',typ='TXM',     
+                                 fr="Nom du fichier MED du maillage en entrée",
+                                 ang="MED file name of the in-mesh",),
+#
+#
+#
+#
+# 3.3. Le suivi de frontiere eventuel :
+#
+         NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
+                           fr="Nom MED du maillage de la frontiere à suivre",
+                           ang="MED name of the boundary mesh" ),
+#
+         b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
+                           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                                                 fr="Groupes définissant la frontière",
+                                                 ang="Groups which define the boundary" ),
+                               ) ,
+         fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
+                         FIC_FRON = SIMP(statut='f',typ='TXM',
+                                        fr="Nom du fichier MED contenant le maillage frontiere",
+                                        ang="MED File including the boundary mesh" ),
+                               ), 
+#
+#
+# 4. L'ANALYSE DU MAILLAGE
+#
+         ANALYSE         =FACT(statut='f',
+                               fr="Analyse du maillage.",
+                               ang="Mesh analysis.",
+#
+#    5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
+#    A. NOMBRE DES ELEMENTS
+#    B. QUALITE DES ELEMENTS
+#    C. INTERPENETRATION DES ELEMENTS
+#    D. CONNEXITE DU MAILLAGE
+#    E. TAILLE DES DIFFERENTS SOUS-DOMAINES
+#
+           regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
+#
+         NOMBRE          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+                          fr="Nombre de noeuds et éléments du maillage",
+                          ang="Number of nodes and elements in the mesh" ),
+#
+         QUALITE         =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                          fr="Qualité du maillage",
+                          ang="Mesh quality" ),
+#
+         INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                          fr="Controle de la non interpénétration des éléments.",
+                          ang="Overlapping checking." ),
+#
+         CONNEXITE       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                          fr="Connexité du maillage.",
+                          ang="Mesh connexity." ),
+#
+         TAILLE          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                          fr="Tailles des sous-domaines du maillage.",
+                          ang="Sizes of mesh sub-domains." ),
+#
+         ),
+#
+#
+# 5. Les fichiers en entree/sortie
+#
+#
+)  ;