]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
CCAR: rabattre la version V1_15a4 dans la branche principale
authorChristian Caremoli <>
Mon, 4 May 2009 16:50:20 +0000 (16:50 +0000)
committerChristian Caremoli <>
Mon, 4 May 2009 16:50:20 +0000 (16:50 +0000)
250 files changed:
Aster/Cata/Utilitai/as_timer.py
Aster/Cata/cataSTA7/cata.py
Aster/Cata/cataSTA8/cata.py
Aster/Cata/cataSTA9/Intranet/__init__.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/calc_eolienne.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/Sensibilite.py [deleted file]
Aster/Cata/cataSTA9/Macro/calc_essai_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/calc_modal_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/calc_spec_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py
Aster/Cata/cataSTA9/Macro/dyna_iss_vari_ops.py
Aster/Cata/cataSTA9/Macro/exec_logiciel_ops.py
Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py
Aster/Cata/cataSTA9/Macro/macr_cara_poutre_ops.py
Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py
Aster/Cata/cataSTA9/Macro/macr_recal_ops.py
Aster/Cata/cataSTA9/Macro/macro_expans_ops.py
Aster/Cata/cataSTA9/Macro/macro_matr_asse_ops.py
Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py [deleted file]
Aster/Cata/cataSTA9/Macro/observation_ops.py
Aster/Cata/cataSTA9/Macro/post_dyna_alea_ops.py
Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py
Aster/Cata/cataSTA9/Macro/post_k_trans_ops.py
Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/Macro/reca_graphique.py [deleted file]
Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py
Aster/Cata/cataSTA9/Macro/test_temps_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA9/SD/co_cara_elem.py
Aster/Cata/cataSTA9/SD/sd_cara_elem.py
Aster/Cata/cataSTA9/SD/sd_cham_elem.py
Aster/Cata/cataSTA9/SD/sd_cham_mater.py
Aster/Cata/cataSTA9/SD/sd_cham_no.py
Aster/Cata/cataSTA9/SD/sd_char_acou.py
Aster/Cata/cataSTA9/SD/sd_char_cine.py
Aster/Cata/cataSTA9/SD/sd_char_meca.py
Aster/Cata/cataSTA9/SD/sd_char_ther.py
Aster/Cata/cataSTA9/SD/sd_compor.py
Aster/Cata/cataSTA9/SD/sd_compor1.py [deleted file]
Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py [deleted file]
Aster/Cata/cataSTA9/SD/sd_formule.py [deleted file]
Aster/Cata/cataSTA9/SD/sd_macr_elem_dyna.py
Aster/Cata/cataSTA9/SD/sd_matr_cine.py
Aster/Cata/cataSTA9/SD/sd_matr_elem.py
Aster/Cata/cataSTA9/SD/sd_nume_ddl_com.py
Aster/Cata/cataSTA9/SD/sd_nume_ddl_gene.py
Aster/Cata/cataSTA9/SD/sd_nume_equa.py
Aster/Cata/cataSTA9/SD/sd_obstacle.py [deleted file]
Aster/Cata/cataSTA9/SD/sd_prof_chno.py
Aster/Cata/cataSTA9/SD/sd_resultat.py
Aster/Cata/cataSTA9/SD/sd_resultat_dyn.py
Aster/Cata/cataSTA9/SD/sd_solveur.py
Aster/Cata/cataSTA9/SD/sd_squelette.py
Aster/Cata/cataSTA9/SD/sd_table_container.py
Aster/Cata/cataSTA9/SD/sd_tran_gene.py
Aster/Cata/cataSTA9/SD/sd_xfem.py
Aster/Cata/cataSTA9/SD/utilsd.py
Aster/Cata/cataSTA9/cata.py
Aster/Cata/cataSTA9/ops.py
Aster/configuration.py [new file with mode: 0644]
Aster/editeur.ini
Aster/editeur_salome.ini
Aster/prefs.py
Aster/properties.py
Aster/sdist.py
Editeur/analyse_catalogue.py
Editeur/basestyle.py [new file with mode: 0644]
Editeur/comploaderqt4.py [new file with mode: 0644]
Editeur/configuration.py [deleted file]
Editeur/fontes.py [new file with mode: 0644]
Editeur/import_code.py
Editeur/listePatrons.py
Editeur/styles.py [new file with mode: 0644]
Editeur/utils.py
Ihm/I_JDC.py
Ihm/I_MACRO_ETAPE.py
InterfaceQT/browser.py
InterfaceQT/editor.py
InterfaceQT/monFonctionPanel.py
InterfaceQT/monIncludePanel.py
InterfaceQT/monOptionsEditeur.py
InterfaceQT/monPlusieursBasePanel.py
InterfaceQT/monPlusieursIntoPanel.py
InterfaceQT/monRacinePanel.py
InterfaceQT/monSelectVal.py
InterfaceQT/politiquesValidation.py
InterfaceQT/qtCommun.py
InterfaceQT/qtEficas.py
InterfaceQT/qtSaisie.py
InterfaceQT/readercata.py
InterfaceQT/viewManager.py
InterfaceQT4/browser.py
InterfaceQT4/compooper.py
InterfaceQT4/composimp.py
InterfaceQT4/editor.py
InterfaceQT4/eficas_go.py
InterfaceQT4/monIncludePanel.py
InterfaceQT4/monOptionsEditeur.py
InterfaceQT4/monParamPanel.py
InterfaceQT4/monPlusieursASSDPanel.py
InterfaceQT4/monPlusieursBasePanel.py
InterfaceQT4/monRacinePanel.py
InterfaceQT4/monUniqueBasePanel.py
InterfaceQT4/monUniqueSDCOIntoPanel.py
InterfaceQT4/prefsQT.py [deleted file]
InterfaceQT4/qtCommun.py
InterfaceQT4/qtEficas.py
InterfaceQT4/qtSaisie.py
InterfaceQT4/readercata.py
InterfaceQT4/viewManager.py
InterfaceTK/appli.py
InterfaceTK/bureau.py
InterfaceTK/catabrowser.py
InterfaceTK/cataediteur.py
InterfaceTK/change_comm.py
InterfaceTK/compomacro.py
InterfaceTK/componuplet.py
InterfaceTK/treewidget.py
InterfaceTK/widgets.py
Noyau/N_MCSIMP.py
Noyau/ascheckers.py
Noyau/asojb.py
Noyau/context.py
Openturns_Study/OpenTURNS_Cata_Study_V1.py [new file with mode: 0644]
Openturns_Study/OpenTURNS_Cata_Study_V2.py [new file with mode: 0644]
Openturns_Study/OpenTURNS_Cata_Study_V3.py [new file with mode: 0644]
Openturns_Study/catalogues_openturns.ini [new file with mode: 0644]
Openturns_Study/configuration.py [new file with mode: 0644]
Openturns_Study/ops.py [new file with mode: 0644]
Openturns_Study/prefs.py [new file with mode: 0644]
Openturns_Study/properties.py [new file with mode: 0644]
Openturns_Study/qtEficas_openturns_study.py [new file with mode: 0755]
Openturns_Study/sdistOTqt.py [new file with mode: 0644]
Openturns_Study/style.py [new file with mode: 0644]
Openturns_Study/test/MinMax_ExpPlane.comm [new file with mode: 0644]
Openturns_Study/test/MinMax_ExpPlane.py [new file with mode: 0644]
Openturns_Study/test/MinMax_RandomSampling.comm [new file with mode: 0644]
Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py [new file with mode: 0644]
Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py [new file with mode: 0644]
Openturns_Wrapper/catalogues_openturns.ini [new file with mode: 0644]
Openturns_Wrapper/configuration.py [new file with mode: 0644]
Openturns_Wrapper/prefs.py [new file with mode: 0644]
Openturns_Wrapper/properties.py [new file with mode: 0644]
Openturns_Wrapper/qtEficas_openturns_wrapper.py [new file with mode: 0755]
Openturns_Wrapper/sdistOTqt.py [new file with mode: 0644]
Openturns_Wrapper/style.py [new file with mode: 0644]
Tests/README
Tests/prefs.py
Tests/testcomm9/efica01a.com0
Tests/testcomm9/forma12c.comm
Tests/testelem/testvalidator1.py
Tests/testelem/testvalidator2.py
Traducteur/dictErreurs.py
Traducteur/regles.py
Traducteur/traduitV8V9.py
Ui/OptionsEditeur.py [deleted file]
Ui/OptionsPdf.py [deleted file]
Ui/aideQT.py [deleted file]
Ui/desChoixCata.py [deleted file]
Ui/desChoixCata.ui
Ui/desCommande.py [deleted file]
Ui/desCommande.ui
Ui/desCommentaire.py [deleted file]
Ui/desCommentaire.ui
Ui/desError.py [deleted file]
Ui/desError.ui
Ui/desFormule.py [deleted file]
Ui/desFormule.ui
Ui/desInactif.py [deleted file]
Ui/desInactif.ui
Ui/desInclude.py [deleted file]
Ui/desInclude.ui
Ui/desListeParam.py [deleted file]
Ui/desMCFact.py [deleted file]
Ui/desMCFact.ui
Ui/desMCListAjout.py [deleted file]
Ui/desMCListAjout.ui
Ui/desMacro.py [deleted file]
Ui/desMacro.ui
Ui/desParam.py [deleted file]
Ui/desParam.ui
Ui/desPlusieursBase.py [deleted file]
Ui/desPlusieursBase.ui
Ui/desPlusieursInto.py [deleted file]
Ui/desPlusieursInto.ui
Ui/desPoursuite.py [deleted file]
Ui/desPoursuite.ui
Ui/desRacine.py [deleted file]
Ui/desRacine.ui
Ui/desSelectVal.py [deleted file]
Ui/desSelectVal.ui
Ui/desUniqueASSD.py [deleted file]
Ui/desUniqueASSD.ui
Ui/desUniqueBase.py [deleted file]
Ui/desUniqueBase.ui
Ui/desUniqueComp.py [deleted file]
Ui/desUniqueComp.ui
Ui/desUniqueInto.py [deleted file]
Ui/desUniqueInto.ui
Ui/desUniqueSDCO.py [deleted file]
Ui/desUniqueSDCO.ui
Ui/desUniqueSDCOInto.py [deleted file]
Ui/desUniqueSDCOInto.ui
Ui/desVisu.py [deleted file]
Ui/myMain.py [deleted file]
UiQT4/OptionsEditeur.py
UiQT4/OptionsPdf.py
UiQT4/aideQT.py
UiQT4/desChoixCata.py
UiQT4/desCommande.py
UiQT4/desCommentaire.py
UiQT4/desError.py
UiQT4/desFormule.py
UiQT4/desInactif.py
UiQT4/desInclude.py
UiQT4/desListeParam.py
UiQT4/desMCFact.py
UiQT4/desMCListAjout.py
UiQT4/desParam.py
UiQT4/desPlusieursBase.py
UiQT4/desPlusieursInto.py
UiQT4/desPoursuite.py
UiQT4/desRacine.py
UiQT4/desSelectVal.py
UiQT4/desUniqueASSD.py
UiQT4/desUniqueBase.py
UiQT4/desUniqueComp.py
UiQT4/desUniqueInto.py
UiQT4/desUniqueSDCO.py
UiQT4/desUniqueSDCOInto.py
UiQT4/desViewTexte.py
UiQT4/desVisu.py
UiQT4/myMain.py
UiQT4/myMain.ui
Validation/V_UN_PARMI.py
convert/convert_openturns.py [deleted file]
convert/convert_openturns_study.py [new file with mode: 0644]
convert/convert_openturns_wrapper.py [new file with mode: 0644]
generator/OpenturnsBase.py
generator/OpenturnsSTD.py
generator/OpenturnsXML.py
generator/generator_openturns_study.py [new file with mode: 0644]
generator/generator_openturns_wrapper.py [new file with mode: 0644]
generator/generator_vers3DSalome.py

index 38c4f4d798ea621279d9cf2cf0db6ecd2a61d208..3adc325224cfd8aa615d9d6099642e17aff40231 100644 (file)
@@ -22,7 +22,7 @@
    Definition of ASTER_TIMER class.
 """
 
-__revision__ = "$Id: as_timer.py,v 1.2.6.1 2007-10-22 12:23:38 pnoyret Exp $"
+__revision__ = "$Id: as_timer.py,v 1.3.4.1 2008-11-13 10:35:09 cchris Exp $"
 
 # ----- differ messages translation
 def _(mesg):
index cc4ccf06b91869590b26f91cee949330f6806ffe..3ee29ff6369924840502e4fcc82cc7bc17b59135 100644 (file)
@@ -35,7 +35,7 @@ except:
 
 #
 __version__="$Name:  $"
-__Id__="$Id: cata.py,v 1.3.8.6 2007-06-15 13:57:36 cchris Exp $"
+__Id__="$Id: cata.py,v 1.4.14.1 2008-11-13 10:35:10 cchris Exp $"
 #
 JdC = JDC_CATA(code='ASTER',
                execmodul=None,
index a506925a5094b2814c02acdb7bb258f1cfd9829e..20f6f52c4621b9df1aa279d81e9f12aaf20c2348 100755 (executable)
@@ -35,7 +35,7 @@ except:
   pass
 
 __version__="$Name:  $"
-__Id__="$Id: cata.py,v 1.4.6.1.4.1 2008-10-10 13:28:49 pnoyret Exp $"
+__Id__="$Id: cata.py,v 1.5.4.3 2008-12-08 13:50:34 pnoyret Exp $"
 
 EnumTypes = (ListType, TupleType)
 
@@ -20103,7 +20103,7 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 10/07/2006   AUTEUR LEBOUVIE F.LEBOUVIER 
+#& MODIF COMMANDE  DATE 01/10/2008   AUTEUR MACOCCO K.MACOCCO 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20195,13 +20195,13 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
          ),
          ORIE_NORM_COQUE =FACT(statut='f',max='**',
-           regles=(EXCLUS('NOEUD','GROUP_NO'),
-                   PRESENT_PRESENT('NOEUD','VECT_NORM'),
-                   PRESENT_PRESENT('GROUP_NO','VECT_NORM'),),
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            VECT_NORM       =SIMP(statut='f',typ='R',max=3),
-           NOEUD           =SIMP(statut='f',typ=no),
-           GROUP_NO        =SIMP(statut='f',typ=grno),
+           b_vect_norm     =BLOC(condition = "VECT_NORM != None",
+             regles=UN_PARMI('NOEUD','GROUP_NO'),
+             NOEUD           =SIMP(statut='f',typ=no),
+             GROUP_NO        =SIMP(statut='f',typ=grno),
+           ),
          ),
          PLAQ_TUBE       =FACT(statut='f',
            DEXT            =SIMP(statut='o',typ='R' ),
@@ -20227,7 +20227,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
            VECT_X          =SIMP(statut='o',typ='R',min=2,max=3),
            VECT_Y          =SIMP(statut='f',typ='R',min=2,max=3),
          ),
-         ECHELLE         =SIMP(statut='f',typ='R',),        
+         ECHELLE         =SIMP(statut='f',typ='R',),
          TRANSLATION     =SIMP(statut='f',typ='R',min=2,max=3),
          ROTATION        =FACT(statut='f',max='**',
            POIN_1           =SIMP(statut='o',typ='R',min=2,max=3),
diff --git a/Aster/Cata/cataSTA9/Intranet/__init__.py b/Aster/Cata/cataSTA9/Intranet/__init__.py
new file mode 100644 (file)
index 0000000..8877006
--- /dev/null
@@ -0,0 +1,19 @@
+#@ MODIF __init__ Intranet  DATE 18/09/2007   AUTEUR DURAND C.DURAND 
+
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
diff --git a/Aster/Cata/cataSTA9/Intranet/calc_eolienne.py b/Aster/Cata/cataSTA9/Intranet/calc_eolienne.py
new file mode 100644 (file)
index 0000000..e565b6c
--- /dev/null
@@ -0,0 +1,1722 @@
+#@ MODIF calc_eolienne Intranet  DATE 18/09/2007   AUTEUR DURAND C.DURAND 
+
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+#
+# LISTE DES FONCTIONS, MACROS et CATALOGUES
+#
+# MACROS
+#
+# calc_char_houle
+# macr_calc_eolienne
+#
+# FONCTIONS
+#
+# mail_eolienne
+# eolien_regression
+# lect_resu_stream
+# donn_boucle_pas_temps
+# extr_char_houle
+#
+# CATALOGUES
+#
+# CALC_CHAR_HOULE
+# MACR_CALC_EOLIENNE
+#
+#____________________________________________________________________
+#
+# On charge les modules necessaires
+import os
+import Numeric
+import re
+import math
+#
+# permet de definir dans le meme fichier les catalogues et les macros
+from Cata.cata import *
+#
+#____________________________________________________________________
+#____________________________________________________________________
+#
+#____________________________________________________________________
+#___________________ DEBUT MACRO calc_char_houle ____________________
+#
+#
+def calc_char_houle_ops(self, INFO, STREAM, IMPRESSION, **args):
+#
+#  1. args est le dictionnaire des arguments
+#    args.keys() est la liste des mots-clés
+#    args.keys()[0] est la premiere valeur de cette liste
+#    args.keys()[1:] est la liste des valeurs suivantes dans cette liste
+#    args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+
+  """ Calcule le chargement du a la houle.  """
+
+# On charge les modules nécessaires
+  from Accas import _F
+  import aster
+
+#____________________________________________________________________
+#
+# 1. Préalables
+#____________________________________________________________________
+
+# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
+
+  self.set_icmd(1)
+
+# 1.2 ==> On importe les définitions des commandes Aster utilisées
+#         dans la macro
+
+  EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
+  IMPR_TABLE= self.get_cmd("IMPR_TABLE")
+  DEFI_FICHIER= self.get_cmd("DEFI_FICHIER")
+  
+# 1.3 ==> Le nom des programmes à lancer
+
+#  repertoire_outils = "/home/eolien/ASTER_EOLIEN/"
+  repertoire_outils = aster.repout()
+  calc_houle = repertoire_outils + "calc_houle"
+
+# 1.4 ==> Initialisations
+
+  erreur = 0
+  erreur_partiel = [0]
+  Rep_Calc_ASTER = os.getcwd()
+
+  messages_erreur = { 0 : "<CALC_CHAR_HOULE> Tout va bien.",
+                      1 : "<CALC_CHAR_HOULE> Impossible de créer le répertoire de travail pour le logiciel de calcul de houle.",
+                    100 : "<CALC_CHAR_HOULE> Erreur." }
+
+  while not erreur :
+
+#____________________________________________________________________
+#
+# 2. Répertoires et fichiers
+#____________________________________________________________________
+#
+
+# 2.1. ==> Création du répertoire pour l'exécution du logiciel STREAM_FM
+
+    Nom_Rep_local_houle = "tmp_stream"
+    Rep_Calc_LOGICIEL_local_houle = os.path.join(".",Nom_Rep_local_houle)
+    Rep_Calc_LOGICIEL_global_houle = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_houle)
+
+    try :
+      os.mkdir(Rep_Calc_LOGICIEL_global_houle)
+    except os.error,erreur_partiel :
+      self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+      self.cr.fatal("Impossible de créer le répertoire de travail pour le logiciel de calcul de houle : "+Rep_Calc_LOGICIEL_global_houle)
+      erreur = 1
+      break
+
+# 2.2. ==> On cree un fichier annexe pour transmettre des infos à la procédure de lancement
+#          de STREAM_FM
+
+    fic_Info_ASTER = os.path.join(Rep_Calc_LOGICIEL_global_houle,"InfoExecASTER")
+    f_execAster = open(fic_Info_ASTER, "w")
+    f_execAster.write(str(INFO)+"\n")
+    f_execAster.close()
+
+#____________________________________________________________________
+#
+# 3. Décodage des arguments de la macro-commande
+#    et création des fichiers pour STREAM_FM
+#____________________________________________________________________
+
+# 3.1. ==> Les fichiers pour le logiciel STREAM_FM
+#          Ils sont créés dans le répertoire d'exécution du logiciel, avec leurs noms officiels
+
+    fic_data_HT = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_HT.par")
+    fic_data_FM = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.par")
+
+# 3.2 ==> Construction du fichier 'data_HT'
+
+# 3.2.1 ==> Ouverture du fichier data_HT dans un répertoire temporaire
+
+    f_menu = open(fic_data_HT, "w")
+
+# 3.2.2 ==> Lecture et écriture des données nécessaires
+
+    prof          = STREAM['PROFONDEUR']
+    h_houle       = STREAM['H_HOULE']
+    peri_houle    = STREAM['PERI_HOULE']
+    courant_euler = STREAM['COUR_EULERIEN']
+    ordre_fonc    = STREAM['ORDR_FONC_COURAN']
+  
+    f_menu.write(str(prof)+" <= Profondeur d'eau (m)\n")
+    f_menu.write(str(h_houle)+" <= Hauteur de houle (crete-a-creux) (m)\n")
+    f_menu.write(str(peri_houle)+" <= Periode de houle (s)\n")
+    f_menu.write(str(courant_euler)+" <= Vitesse du courant eulerien (m/s)\n")
+    f_menu.write(str(ordre_fonc)+" <= ordre de la fonction de courant (m/s)\n")
+
+# 3.2.3 ==> Fermeture du fichier data_HT
+
+    f_menu.close()
+
+    if INFO >= 2 :
+      print "===========================\n"
+      print "Contenu du fichier data_HT :"
+      fichier = open (fic_data_HT,"r")
+      les_lignes = fichier.readlines()
+      fichier.close()
+      for ligne in les_lignes :
+        print ligne[:-1]
+      print "===========================\n"
+
+# 3.3 ==> Construction du fichier "data_FM"
+
+# 3.3.1 ==> Ouverture du fichier
+
+    f_FM = open(fic_data_FM, "w")
+
+# 3.3.2 ==> Lecture et écriture des données nécessaires
+
+    diam         = STREAM['DEXT_HAUT_BASE']
+    coef_trainee = STREAM['COEF_TRAINEE']
+    coef_inertie = STREAM['COEF_INERTIE']
+    nb_nive_z    = STREAM['NB_POINTS_VERT']
+    nb_dt_par_t  = STREAM['NB_INTER_PERI']
+  
+    f_FM.write(str(diam)+" <= Diametre du cylindre (m)\n")
+    f_FM.write(str(coef_trainee)+" <= Coefficient de trainee Cd\n")
+    f_FM.write(str(coef_inertie)+" <= Coefficient d'inertie Cm\n")
+    f_FM.write(str(nb_nive_z)+" <= Nbe de points sur la verticale\n")
+    f_FM.write(str(nb_dt_par_t)+" <= Nbe de pas de temps sur une periode de houle\n")
+
+# 3.3.3 ==> Fermeture du fichier data_FM
+
+    f_FM.close()
+
+    if INFO >= 2 :
+      print "===========================\n"
+      print "Contenu du fichier data_FM :"
+      fichier = open (fic_data_FM,"r")
+      les_lignes = fichier.readlines()
+      fichier.close()
+      for ligne in les_lignes :
+        print ligne[:-1]
+      print "===========================\n"
+
+# 3.4 ==> Nom du fichier qui contiendra le résultat
+
+    if (IMPRESSION['UNITE'] != None) :
+      Unit_Fich_Resu = 'fort.'+str(IMPRESSION['UNITE'])
+
+#____________________________________________________________________
+#
+# 4. Ecriture de la commande d"exécution du logiciel STREAM
+#
+#   Remarque : dans la donnée de la version du logiciel STREAM, il faut remplacer
+#              le _ de la donnée par un ., qui
+#              est interdit dans la syntaxe du langage de commandes ASTER
+#   Remarque : il faut remplacer le N majuscule de la donnee par
+#              un n minuscule, qui est interdit dans la syntaxe du langage
+#              de commandes ASTER
+#____________________________________________________________________
+#
+
+    VERSION="aster"
+    LOGICIEL = "STREAM"
+
+    EXEC_LOGICIEL ( ARGUMENT = (Rep_Calc_LOGICIEL_global_houle, # nom du repertoire du calcul de houle
+                                LOGICIEL,                       # nom du logiciel de calcul de houle
+                                VERSION,                        # version du logiciel de calcul de houle
+                               ),
+                    LOGICIEL = calc_houle
+                  )
+
+#____________________________________________________________________
+#
+# 5. Lecture du fichier de résultats STREAM_FM
+#____________________________________________________________________
+#
+# 5.1 ==> Ouverture, lecture et fermeture du fichier "AMA_FM.res"
+
+    if (IMPRESSION['UNITE'] != None) :
+      fic_resuStream = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.res")
+      f_resu = open(fic_resuStream, "r")
+      lignes = f_resu.readlines()
+      f_resu.close()
+
+      Fic_Tabl_Resu = os.path.join(Rep_Calc_ASTER,Unit_Fich_Resu)
+      f_resu = open(Fic_Tabl_Resu, "w")
+      f_resu.writelines(lignes)
+      f_resu.close()
+#
+#____________________________________________________________________
+#
+# 6. C'est fini !
+#____________________________________________________________________
+#    
+    break
+
+# 6.1. ==> Arret en cas d'erreur
+
+  if erreur :
+    if not messages_erreur.has_key(erreur) :
+      erreur = 100
+    self.cr.fatal(messages_erreur[erreur])
+
+  return
+
+#____________________________________________________________________
+#____________________ FIN MACRO calc_char_houle _____________________
+#
+#____________________________________________________________________
+#___________________ DEBUT FONCTION mail_eolienne ___________________
+#
+#
+# ===>   Creation des fichiers de commandes GIBI
+#____________________________________________________________________
+#
+
+def mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES,
+                  DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE,
+                  EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT,
+                  EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT,
+                  NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT,
+                  ANGLE_VENT_AXE_X,
+                  MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg) :
+
+#
+# 1 ==> Reccuperation du repertoire dans lequel s'execute le calcul ASTER
+#
+  Rep_Calc_ASTER = os.getcwd()
+
+#
+# 2 ==> Decoupage des mailles de la base en fonction du niveau d'eau
+#
+  lb  = H_BASE / NB_ELEM_BASE
+  nbi = int(H_IMMERGEE/lb)
+  hbe = H_BASE - H_IMMERGEE
+
+  # CAS 1
+  if ( ((H_IMMERGEE/lb)-nbi) < 0.5 ) :
+      lbi = H_IMMERGEE/nbi
+      if (hbe > 0.0) :
+          nbe = NB_ELEM_BASE - nbi
+          lbe = hbe/nbe
+      else :
+          nbe = 0
+  # CAS 2
+  if ( ((H_IMMERGEE/lb)-nbi) >= 0.5 ) :
+      lbi = H_IMMERGEE/(nbi+1)
+      nbe = NB_ELEM_BASE - (nbi+1)
+      lbe = hbe/nbe
+      nbi = nbi + 1
+
+#
+# 3 ==> Ecriture des donnees necessaires dans le fichier auxiliaire
+#
+  if MODELISATION == 'POUTRE' :   
+
+    # 3.1 ==> Ouverture du fichier auxiliaire
+
+    fichier_auxi = os.path.join(Rep_Calc_ASTER,"fichaux")
+    fdaux = open (fichier_auxi,'w')
+
+    # 3.2 ==> Ecriture des donnees dans le fichier auxiliaire
+
+    j = 0
+
+    for i in range(nbi) :
+      j = j+1
+      fdaux.write("base"+str(j)+" = baset . "+str(j)+";\n")
+    if hbe > 0.0 :
+      for i in range(nbe) :
+        j = j+1
+        fdaux.write("base"+str(j)+" = baset . "+str(j)+";\n") 
+
+    for i in range(NB_ELEM_FUT) :
+      fdaux.write("fut"+str(i+1)+" = futt . "+str(i+1)+";\n")
+
+    fdaux.write("SAUV FORM eolienne;\n")
+    fdaux.write("FIN;\n")
+
+    # 3.3 ==> Fermeture du fichier auxiliaire
+
+    fdaux.close()
+
+#
+# 4 ==> Ecriture des donnees necessaires dans le fichier de donnees GIBI
+#
+
+# 4.1 ==> Ouverture du fichier de données GIBI
+
+  fdgib = open (fichier_datg,'w')
+
+
+# 4.2 ==> Ecriture des donnees dans le fichier de donnees GIBI
+
+  fdgib.write("*********************************\n")
+  fdgib.write("** Maillage d'une eolienne en mer\n")
+  fdgib.write("*********************************\n")
+  fdgib.write("***********************\n")
+  fdgib.write("***********************\n")
+  fdgib.write("** donnees geometriques\n")
+  fdgib.write("***********************\n")
+
+  fdgib.write("opti nive "+str(NIVE_GIBI)+";\n")
+
+  if MODELISATION == 'POUTRE' :
+    fdgib.write("modbase = 'poutre';\n")
+    fdgib.write("modfut = 'poutre';\n")
+  if MODELISATION == 'COQUE' :
+    fdgib.write("modbase = 'coque';\n")
+    fdgib.write("modfut = 'coque';\n")
+  if MODELISATION == '3D' :
+    fdgib.write("modbase = '3D';\n")
+    fdgib.write("modfut = '3D';\n")
+    if TYPE_ELEM == 'CUB8' : fdgib.write("quad = 'non';\n")
+    if TYPE_ELEM == 'CU20' : fdgib.write("quad = 'oui';\n")
+
+  fdgib.write("**** hauteur totale du monopode (hors nacelle)\n") 
+  fdgib.write("h_totale = "+str(H_TOTALE)+";\n")   
+  fdgib.write("**** hauteur de la base du monopode\n") 
+  fdgib.write("hb = "+str(H_BASE)+";\n")   
+  fdgib.write("**** hauteur immergee (deduite du calcul par STREAM)\n") 
+  fdgib.write("hbi = "+str(H_IMMERGEE)+";\n")   
+  fdgib.write("**** nombre de mailles immergees de la base\n") 
+  fdgib.write("nbi = "+str(nbi)+";\n")   
+  fdgib.write("**** hauteur emergee\n") 
+  fdgib.write("hbe = "+str(hbe)+";\n")   
+  fdgib.write("**** nombre de mailles emergees de la base\n") 
+  fdgib.write("nbe = "+str(nbe)+";\n")   
+  fdgib.write("**** decoupage vertical\n") 
+  fdgib.write("nb_base = "+str(NB_ELEM_BASE)+";\n")   
+  fdgib.write("nb_fut = "+str(NB_ELEM_FUT)+";\n")   
+  fdgib.write("**** diametre et epaisseur bas du fut\n") 
+  fdgib.write("dex_bfut = "+str(DEXT_BAS_FUT)+";\n")   
+  fdgib.write("ep_bfut = "+str(EPAIS_BAS_FUT)+";\n")   
+  fdgib.write("**** diametre et epaisseur haut du fut\n") 
+  fdgib.write("dex_hfut = "+str(DEXT_HAUT_FUT)+";\n")   
+  fdgib.write("ep_hfut = "+str(EPAIS_HAUT_FUT)+";\n")   
+  fdgib.write("**** diametre et epaisseur bas de la base\n") 
+  fdgib.write("dex_bbas = "+str(DEXT_BAS_BASE)+";\n")   
+  fdgib.write("ep_bbas = "+str(EPAIS_BAS_BASE)+";\n")   
+  fdgib.write("**** diametre et epaisseur haut de la base\n") 
+  fdgib.write("dex_hbas = "+str(DEXT_HAUT_BASE)+";\n")   
+  fdgib.write("ep_hbas = "+str(EPAIS_HAUT_BASE)+";\n")   
+
+  if MODELISATION == '3D' or MODELISATION == 'COQUE' :   
+    fdgib.write("**** nombre d'elements sur un demi-cercle\n") 
+    fdgib.write("nbcirfut = "+str(NBEL_DCIR_FUT)+";\n")   
+    fdgib.write("nbcirbas = "+str(NBEL_DCIR_BASE)+";\n")  
+    fdgib.write("**** hauteur de la jonction base/fut\n") 
+    fdgib.write("hbj = "+str(H_JONCTION)+";\n")   
+  if MODELISATION == '3D' :     
+    fdgib.write("**** nombre d'elements dans l'epaisseur\n") 
+    fdgib.write("nbep_fut = "+str(NBEL_EPAIS_FUT)+";\n")   
+    fdgib.write("nbep_bas = "+str(NBEL_EPAIS_BASE)+";\n")   
+
+  fdgib.write("**** angle entre la pression du vent et l'axe X (degres)\n") 
+  fdgib.write("alpha = "+str(ANGLE_VENT_AXE_X)+";\n")   
+  fdgib.write("**** decalage pales\n") 
+  fdgib.write("dec0 = "+str(DECAL_PALES)+";\n")   
+  fdgib.write("**** hauteur moyeu\n") 
+  fdgib.write("hp0 = "+str(H_MOYEU)+";\n")   
+
+  fdgib.write("opti echo 0;\n")   
+#  loc_datg = "/home/eolien/DATG/"
+  loc_datg = aster.repdex()
+  fdgib.write("* \n")   
+  fdgib.write(open(os.path.join(loc_datg, 'calc_eolienne.datg'), 'r').read())
+
+# 4.3 ==> Fermeture du fichier de donnees GIBI
+
+  fdgib.close()
+
+# 5 ==> FIN
+
+  return
+
+#____________________________________________________________________
+#____________________ FIN FONCTION mail_eolienne ____________________
+#
+#____________________________________________________________________
+#
+#____________________________________________________________________
+#_________________ DEBUT FONCTION eolien_regression _________________
+#
+#
+# ===>   Regression selon les moindres carres
+#____________________________________________________________________
+#
+#
+def eolien_regression (liste, INFO,) :
+#
+#
+#____________________________________________________________________
+#
+#                    MOINDRES CARRES
+#____________________________________________________________________
+#
+# Calcul des coefficients teta0, teta1, teta2 et teta3 de
+# l'application qui passe au mieux (au sens des moindres carres)
+# par les couples (profondeur,force lineique).
+
+
+# 1 ==> Initialisation
+
+
+# 2 ==> Nombre de points calcules par STREAM selon l'axe vertical
+
+  dim = liste.shape[0]
+
+# Controle : dim == Nb_valeur  a voir
+
+# 3 ==> Definition des polynomes
+
+  global P0, P1, P2, P3
+
+  def P0():
+      return 1
+
+  def P1(alpha1, x):
+      return (x-alpha1)
+
+  def P2(alpha1, alpha2, beta2, x):
+      return (x-alpha2)*(x-alpha1) - beta2
+
+  def P3(alpha1, alpha2, alpha3, beta2, beta3, x):
+      return (x-alpha3)*((x-alpha2)*(x-alpha1) - beta2) - beta3*(x-alpha1)
+
+# 4 ==> Definition de la fonction polynomiale de degre 3
+
+  def FF3(alpha1, alpha2, alpha3, beta2, beta3, teta0, teta1, teta2, teta3, x):
+      return teta0*P0() + teta1*P1(alpha1,x) + teta2*P2(alpha1,alpha2,beta2,x) + teta3*P3(alpha1,alpha2,alpha3,beta2,beta3,x)
+
+# 5 ==> Calcul des coefficients alpha1, alpha2, alpha3, beta2 et beta3
+
+  numerateur_alpha1 = 0
+  denominateur_alpha1 = 0
+  alpha1 = 0
+  for i in range(dim) :
+     numerateur_alpha1 = numerateur_alpha1 + liste[[i,0]]*P0()**2
+     denominateur_alpha1 = denominateur_alpha1 + P0()**2
+
+  alpha1 = numerateur_alpha1/denominateur_alpha1
+
+  numerateur_alpha2 = 0
+  denominateur_alpha2 = 0
+  alpha2 = 0
+  numerateur_beta2 = 0
+  denominateur_beta2 = 0
+  beta2 = 0
+  for i in range(dim) :
+     numerateur_alpha2 = numerateur_alpha2 + liste[[i,0]]*P1(alpha1,liste[[i,0]])**2
+     denominateur_alpha2 = denominateur_alpha2 + P1(alpha1,liste[[i,0]])**2
+     numerateur_beta2 = numerateur_beta2 + P1(alpha1,liste[[i,0]])**2
+     denominateur_beta2 = denominateur_beta2 + P0()**2
+
+  alpha2 = numerateur_alpha2/denominateur_alpha2
+  beta2 = numerateur_beta2/denominateur_beta2
+
+  numerateur_alpha3 = 0
+  denominateur_alpha3 = 0
+  alpha3 = 0
+  numerateur_beta3 = 0
+  denominateur_beta3 = 0
+  beta3 = 0
+  for i in range(dim) :
+     numerateur_alpha3 = numerateur_alpha3 + liste[[i,0]]*P2(alpha1,alpha2,beta2,liste[[i,0]])**2
+     denominateur_alpha3 = denominateur_alpha3 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2
+     numerateur_beta3 = numerateur_beta3 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2
+     denominateur_beta3 = denominateur_beta3 + P1(alpha1,liste[[i,0]])**2
+
+  alpha3 = numerateur_alpha3/denominateur_alpha3
+  beta3 = numerateur_beta3/denominateur_beta3
+
+# 6 ==> Calcul des estimateurs cherches : teta0, teta1, teta2, teta3
+
+  numerateur_teta0 = 0
+  denominateur_teta0 = 0
+  teta0 = 0
+  for i in range(dim) :
+     numerateur_teta0 = numerateur_teta0 + liste[[i,1]]*P0()
+     denominateur_teta0 = denominateur_teta0 + P0()**2
+
+  teta0 = numerateur_teta0/denominateur_teta0
+
+  numerateur_teta1 = 0
+  denominateur_teta1 = 0
+  teta1 = 0
+  for i in range(dim) :
+     numerateur_teta1 = numerateur_teta1 + liste[[i,1]]*P1(alpha1,liste[[i,0]])
+     denominateur_teta1 = denominateur_teta1 + P1(alpha1,liste[[i,0]])**2
+
+  teta1 = numerateur_teta1/denominateur_teta1
+
+  numerateur_teta2 = 0
+  denominateur_teta2 = 0
+  teta2 = 0
+  for i in range(dim) :
+     numerateur_teta2 = numerateur_teta2 + liste[[i,1]]*P2(alpha1,alpha2,beta2,liste[[i,0]])
+     denominateur_teta2 = denominateur_teta2 + P2(alpha1,alpha2,beta2,liste[[i,0]])**2
+
+  teta2 = numerateur_teta2/denominateur_teta2
+
+  numerateur_teta3 = 0
+  denominateur_teta3 = 0
+  teta3 = 0
+  for i in range(dim) :
+     numerateur_teta3 = numerateur_teta3 + liste[[i,1]]*P3(alpha1,alpha2,alpha3,beta2,beta3,liste[[i,0]])
+     denominateur_teta3 = denominateur_teta3 + P3(alpha1,alpha2,alpha3,beta2,beta3,liste[[i,0]])**2
+
+  teta3 = numerateur_teta3/denominateur_teta3
+
+# 7 ==> Impression de certains resultats si INFO == 2
+
+  if (INFO == 2) :
+    print "  "
+    print "<EOLIEN_REGRESSION>   RESULTATS  "
+    print "  "
+    print "<EOLIEN_REGRESSION> teta0 = ", teta0
+    print "<EOLIEN_REGRESSION> teta1 = ", teta1
+    print "<EOLIEN_REGRESSION> teta2 = ", teta2
+    print "<EOLIEN_REGRESSION> teta3 = ", teta3
+    print "  "
+
+    print "<EOLIEN_REGRESSION>  ===>  VERIFICATION INTERPOLATION\n"
+    print " No point - profondeur - valeur STREAM - valeur par moindres carres \n"
+    for i in range(dim) :
+      print '  %3d   %12.4f     %12.4f     %12.4f' % (i+1,liste[[i,0]],liste[[i,1]],FF3(alpha1, alpha2, alpha3, beta2, beta3, teta0, teta1, teta2, teta3,liste[[i,0]]))
+
+  return (teta0,teta1,teta2,teta3,alpha1,alpha2,alpha3,beta2,beta3)
+
+#____________________________________________________________________
+#_________________ FIN FONCTION eolien_regression ___________________
+#
+#____________________________________________________________________
+#
+#____________________________________________________________________
+#_________________ DEBUT FONCTION lect_resu_stream __________________
+#
+#
+# ===>   Lecture du fichier de resultats STREAM_FM
+#____________________________________________________________________
+#
+
+def lect_resu_stream(INFO) :
+
+# 1 ==> Ouverture, lecture et fermeture du fichier "AMA_FM.res"
+
+  Rep_Calc_ASTER = os.getcwd()
+  Nom_Rep_local_houle = "tmp_stream"
+  Rep_Calc_LOGICIEL_local_houle = os.path.join(".",Nom_Rep_local_houle)
+  Rep_Calc_LOGICIEL_global_houle = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_houle)
+
+  fic_resuStream = os.path.join(Rep_Calc_LOGICIEL_global_houle,"AMA_FM.res")
+  f_resu = open(fic_resuStream, "r")
+  lignes = f_resu.readlines()
+  f_resu.close()
+
+# 2 ==> Lecture du nombre de points (valeurs de forces lineiques).
+#       Lecture du nombre par lequel la periode a ete decoupee
+#       ATENTION ==> le nombre de pas de temps est egal a ce nombre plus un.
+
+  compt_temps = 0
+  compt_valeur = 0
+  dict_temps = {}
+
+  for i in range(len(lignes)) :
+    ligne = lignes[i].split()
+    print"<LECT_RESU_STREAM> ligne = ",ligne
+    if ligne[0] == "/PERIODE" and ligne[2] == "HOULE.................T........:" :
+      periode_houle = float(ligne[len(ligne)-2])
+
+      if INFO == 2 :
+        print "<I> <MACR_CALC_EOLIENNE> Periode de houle = ",periode_houle
+
+    if ligne[0] == "/NB" and ligne[2] == "POINTS" :
+      Nb_valeur = int(ligne[len(ligne)-1])
+
+      if INFO == 2 :
+        print "<I> <MACR_CALC_EOLIENNE> Nb_valeur = ",Nb_valeur
+
+    if ligne[0] == "/NB" and ligne[4] == "TEMPS" :
+      Nb_pas_temps = int(ligne[len(ligne)-1])
+
+      if INFO == 2 :
+        print "<I> <MACR_CALC_EOLIENNE> Nb_pas_temps = ",Nb_pas_temps
+        break
+
+  return(periode_houle,Nb_valeur,Nb_pas_temps,lignes)
+
+#____________________________________________________________________
+#__________________ FIN FONCTION lect_resu_stream ___________________
+#
+#____________________________________________________________________
+#
+#____________________________________________________________________
+#_______________ DEBUT FONCTION donn_boucle_pas_temps _______________
+#
+#
+# ===>   Preparation donnees necessaires a la boucle sur les pas de temps
+#        et verification du nombre de pas de temps
+#____________________________________________________________________
+#
+
+def donn_boucle_pas_temps(lignes,Nb_pas_temps) :
+
+# 1 ==> Construction du dictionnaire contenant :
+#       pas_de_temps : numeros de ligne du fichier resu_STREAM_FM
+
+  compt_temps = 0
+  dict_temps = {}
+
+  for i in range(len(lignes)) :
+    ligne = lignes[i].split()
+    if len(ligne) != 0 :
+      if ligne[0] == "#TITRE" and ligne[1] == "TEMPS" :
+        compt_temps = compt_temps + 1
+        dict_temps["TEMPS_"+str(compt_temps)] = i+1
+
+# 2 ==> Controle de l'egalite : compt_temps == Nb_pas_temps+1
+#       et arret en cas d'erreur.
+
+  if compt_temps != (Nb_pas_temps+1) :
+    print"\n <F> <DONN_BOUCLE_PAS_TEMPS> IL Y A UN PROBLEME DANS DE NOMBRE DE PAS DE TEMPS.\n"
+
+  return(dict_temps)
+#
+#____________________________________________________________________
+#________________ FIN FONCTION donn_boucle_pas_temps ________________
+#
+#____________________________________________________________________
+#
+#____________________________________________________________________
+#__________________ DEBUT FONCTION extr_char_houle __________________
+#
+#
+# ===>   Extraction  des couples (profondeur,force lineique)
+#        du fichier resu_STREAM_FM au pas de temps courant et
+#        remplissage de la liste de travail.
+#____________________________________________________________________
+#
+#####################
+#    VALEUR TEST
+#
+test = 'NON'
+#  Nb_pas_temps = 0
+#####################   
+  
+def extr_char_houle(k,dict_temps,Nb_valeur,lignes) :
+
+  liste = Numeric.zeros((Nb_valeur,2), Numeric.Float)
+
+  nume_ligne_temps = dict_temps["TEMPS_"+str(k)]
+  range_depart = int(nume_ligne_temps) + 2
+  range_arrive = int(nume_ligne_temps) + Nb_valeur + 3
+  for l in range(range_depart, range_arrive) :
+    ligne = lignes[l].split()
+    if (len(ligne) != 0) :
+      Flag_Val=re.match(r'^[-]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?$',ligne[0])
+    if (Flag_Val != None) :
+      liste[[(l-range_depart),0]] = float(ligne[0])
+      liste[[(l-range_depart),1]] = float(ligne[1])
+
+  return(range_depart,range_arrive,liste)
+
+#____________________________________________________________________
+#___________________ FIN FONCTION extr_char_houle ___________________
+#
+#                    _____________________________
+#                           _______________       
+#                    _____________________________
+#
+#____________________________________________________________________
+#__________________ DEBUT MACRO macr_calc_eolienne __________________
+#
+#
+# ===>   MACRO COMMANDE MACR_CALC_EOLIENNE
+#
+#____________________________________________________________________
+#
+# SCRIPT PYTHON
+#
+def macr_calc_eolienne_ops(self, INFO, MONOPODE, EXEC_MAILLAGE, AFFE_MATERIAU, CHARGEMENT,
+                                 IMPRESSION, MODELISATION, NOM_MAIL_REF, TYPE_ELEM, FATIGUE, **args) :
+
+  """ Calcule la structure de l'eolienne en mer.  """
+
+# On charge les modules nécessaires
+  from Accas import _F
+  import aster
+#  import os
+
+#____________________________________________________________________
+#
+# 1. Préalables
+#____________________________________________________________________
+#
+# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
+
+  self.set_icmd(1)
+  erreur = 0
+
+# 1.2 ==> On importe les définitions des commandes Aster utilisées
+#         dans la macro
+
+  affemateriau = AFFE_MATERIAU
+#  impression = IMPRESSION
+  PRE_GIBI = self.get_cmd("PRE_GIBI")
+  EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
+  LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE")
+  DEFI_GROUP = self.get_cmd("DEFI_GROUP")
+  CREA_MAILLAGE = self.get_cmd("CREA_MAILLAGE")
+  MODI_MAILLAGE = self.get_cmd("MODI_MAILLAGE")
+  AFFE_CARA_ELEM = self.get_cmd("AFFE_CARA_ELEM")
+  AFFE_MODELE = self.get_cmd("AFFE_MODELE")
+  AFFE_MATERIAU = self.get_cmd("AFFE_MATERIAU")
+  FORMULE = self.get_cmd("FORMULE")
+  AFFE_CHAR_MECA_F= self.get_cmd("AFFE_CHAR_MECA_F")
+  AFFE_CHAR_MECA= self.get_cmd("AFFE_CHAR_MECA")
+  DEFI_LIST_REEL= self.get_cmd("DEFI_LIST_REEL")
+  STAT_NON_LINE= self.get_cmd("STAT_NON_LINE")
+  MECA_STATIQUE= self.get_cmd("MECA_STATIQUE")
+  CREA_CHAMP= self.get_cmd("CREA_CHAMP")
+  PROJ_CHAMP= self.get_cmd("PROJ_CHAMP")
+  CREA_RESU= self.get_cmd("CREA_RESU")
+  CALC_ELEM= self.get_cmd("CALC_ELEM")
+#
+#  IMPR_CO= self.get_cmd("IMPR_CO")
+#
+  IMPR_RESU= self.get_cmd("IMPR_RESU")
+  CALC_NO= self.get_cmd("CALC_NO")
+  CALC_FATIGUE= self.get_cmd("CALC_FATIGUE")
+  DETRUIRE= self.get_cmd("DETRUIRE")
+  DEFI_FICHIER= self.get_cmd("DEFI_FICHIER")
+
+# 1.3 ==> Lecture des donnees
+
+  H_TOTALE        = MONOPODE['H_TOTALE']
+  H_BASE          = MONOPODE['H_BASE']
+  H_MOYEU         = MONOPODE['H_MOYEU']
+  DECAL_PALES     = MONOPODE['DECAL_PALES']
+  DEXT_HAUT_BASE  = MONOPODE['DEXT_HAUT_BASE']
+  DEXT_BAS_BASE   = MONOPODE['DEXT_BAS_BASE']
+  EPAIS_HAUT_BASE = MONOPODE['EPAIS_HAUT_BASE']
+  EPAIS_BAS_BASE  = MONOPODE['EPAIS_BAS_BASE']
+  DEXT_HAUT_FUT   = MONOPODE['DEXT_HAUT_FUT']
+  DEXT_BAS_FUT    = MONOPODE['DEXT_BAS_FUT']
+  EPAIS_HAUT_FUT  = MONOPODE['EPAIS_HAUT_FUT']
+  EPAIS_BAS_FUT   = MONOPODE['EPAIS_BAS_FUT']
+  NB_ELEM_BASE    = MONOPODE['NB_ELEM_BASE']
+  NB_ELEM_FUT     = MONOPODE['NB_ELEM_FUT']
+  if (MODELISATION == '3D' or MODELISATION == 'COQUE') :
+     H_JONCTION = MONOPODE['H_JONCTION']
+     DEXT_NACELLE  = MONOPODE['DEXT_NACELLE']
+     EPAIS_NACELLE = MONOPODE['EPAIS_NACELLE']
+     NBEL_EPAIS_BASE = MONOPODE['NBEL_EPAIS_BASE']
+     NBEL_EPAIS_FUT  = MONOPODE['NBEL_EPAIS_FUT']
+  else :
+     H_JONCTION      = None
+     DEXT_NACELLE    = None
+     EPAIS_NACELLE   = None
+     NBEL_EPAIS_BASE = None
+     NBEL_EPAIS_FUT  = None
+     
+  if (MODELISATION == '3D') :
+     NBEL_DCIR_BASE  = MONOPODE['NBEL_DCIR_BASE']
+     NBEL_DCIR_FUT   = MONOPODE['NBEL_DCIR_FUT']
+  else :
+     NBEL_DCIR_BASE = None
+     NBEL_DCIR_FUT  = None
+
+  ANGLE_VENT_AXE_X = CHARGEMENT['ANGLE_VENT_AXE_X']
+
+  LOGICIEL   = EXEC_MAILLAGE['LOGICIEL']
+  UNITE_DATG = EXEC_MAILLAGE['UNITE_DATG']
+  UNITE_MGIB = EXEC_MAILLAGE['UNITE_MGIB']
+  NIVE_GIBI  = EXEC_MAILLAGE['NIVE_GIBI']
+
+# 1.4 ==> Creation du repertoire pour l'execution du logiciel GIBI
+
+  erreur_partiel = [0]
+  Rep_Calc_ASTER = os.getcwd()
+
+  Nom_Rep_local_mail = "tmp_dgib"
+  Rep_Calc_LOGICIEL_local_mail = os.path.join(".",Nom_Rep_local_mail)
+  Rep_Calc_LOGICIEL_global_mail = os.path.join(Rep_Calc_ASTER,Nom_Rep_local_mail)
+
+  try :
+    os.mkdir(Rep_Calc_LOGICIEL_global_mail)
+  except os.error,erreur_partiel :
+    self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+    self.cr.fatal("Impossible de creer le repertoire de travail pour le logiciel de maillage : "+Rep_Calc_LOGICIEL_global_mail)
+
+  aux_datg = 'fort.'+str(UNITE_DATG)
+  fichier_datg = os.path.join(Rep_Calc_LOGICIEL_global_mail,aux_datg)
+
+  aux_mgib = 'fort.'+str(UNITE_MGIB)
+  fichier_mgib = os.path.join(Rep_Calc_ASTER,aux_mgib)
+
+  repertoire_outils = aster.repout()
+  if (LOGICIEL == 'GIBI2000') : logi_mail = repertoire_outils+'gibi2000'
+  if (LOGICIEL == 'GIBI98') : logi_mail = repertoire_outils+'gibi98'
+
+# 1.5 ==> Construction du maillage et du modele de reference
+
+  if (MODELISATION == '3D') and (FATIGUE != None) :
+
+    H_IMMERGEE = MONOPODE['H_BASE']
+  
+    mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES,
+                  DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE,
+                  EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT,
+                  EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT,
+                  NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT,
+                  ANGLE_VENT_AXE_X,
+                  MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg)
+
+    EXEC_LOGICIEL(
+                  LOGICIEL=logi_mail,
+                  ARGUMENT=(fichier_datg,   # fichier de donnees GIBI
+                            fichier_mgib,   # fichier resultats format GIBI
+                           )
+                 )
+
+    PRE_GIBI()
+    
+    if NOM_MAIL_REF!=None : self.DeclareOut('mail_ref',NOM_MAIL_REF)
+    mail_ref = LIRE_MAILLAGE()    
+
+# debut test
+#       IMPR_CO(CO=mail_ref,)
+# fin test
+
+    MOREF = AFFE_MODELE( MAILLAGE=mail_ref,
+                         AFFE=(_F(GROUP_MA     = ('MONOPODE'),
+                                  PHENOMENE    = 'MECANIQUE',
+                                  MODELISATION = '3D',),),);
+
+# 1.6 ==> Lecture du fichier de resultats STREAM_FM
+
+  (periode_houle,Nb_valeur,Nb_pas_temps,lignes) = lect_resu_stream(INFO)
+
+# 1.7 ==> declaration de tableaux pour les concepts Aster
+
+  if (MODELISATION == 'COQUE') :
+    MA2      = [None] * (Nb_pas_temps+1) # pour la modelisation COQUE
+
+  MA       = [None] * (Nb_pas_temps+1)   # pour les modelisations POUTRE et 3D
+  __MO     = [None] * (Nb_pas_temps+1)
+  CARA     = [None] * (Nb_pas_temps+1)
+  __affmat = [None] * (Nb_pas_temps+1)  
+
+# 1.8 ==> Construction du dictionnaire contenant :
+#         pas_de_temps : numeros de ligne du fichier resu_STREAM_FM
+
+  dict_temps = donn_boucle_pas_temps(lignes,Nb_pas_temps)
+
+#____________________________________________________________________
+#
+#####################
+#    VALEUR TEST
+#
+  test = 'NON'
+#  Nb_pas_temps = 0
+#####################   
+#____________________________________________________________________
+#
+# 2. ==> BOUCLE SUR LES PAS DE TEMPS
+#        Dans cette boucle, a chaque pas de temps nous produisons :
+#        1. un maillage en fonction de la hauteur d'eau ;
+#        2. un chargement correspondant a la hauteur d'eau et a la modelisation ;
+#        3. un calcul elastique lineaire avec MECA_STATIQUE ;
+#        4. un fichier resultat qui est stocke dans un repertoire .repe ;
+#        5. dans le cas ou un calcul en fatigue est demande nous projetons
+#           le champ de contrainte calcule aux noeuds sur un maillage de reference.
+#
+  
+  for j in range(Nb_pas_temps+1) :
+
+    k = j + 1
+
+# 2.1 ==> Extraction  des couples (profondeur,force lineique)
+#         du fichier resu_STREAM_FM au pas de temps courant et
+#         remplissage de la liste de travail.
+
+    (range_depart,range_arrive,liste) = extr_char_houle(k,dict_temps,Nb_valeur,lignes)
+
+# 2.2 ==> Extraction de la hauteur d'eau
+
+    H_IMMERGEE = liste[[(range_arrive-range_depart-2),0]]
+    if INFO == 2 :
+      print "<I> <MACR_CALC_EOLIENNE> ==> Numero d'ordre = ", j    
+      print "<I> <MACR_CALC_EOLIENNE> ==> hauteur_eau = ", H_IMMERGEE    
+
+#####################
+#    VALEUR TEST
+#
+#    hauteur_eau = 30.
+#####################   
+    print "\n<CALC_EOLIENNE>  liste = \n", liste          
+    print"   "     
+
+# 2.3 ==> Calcul des coefficients de la regression de maniere a
+#         construire un chargement continu.
+
+    (teta0,teta1,teta2,teta3,alpha1,alpha2,alpha3,beta2,beta3) = eolien_regression (liste, INFO)
+
+    print "  "
+    print "<I> <MACR_CALC_EOLIENNE>   RESULTATS  "
+    print "  "
+    print "<I> <MACR_CALC_EOLIENNE> teta0 = ", teta0
+    print "<I> <MACR_CALC_EOLIENNE> teta1 = ", teta1
+    print "<I> <MACR_CALC_EOLIENNE> teta2 = ", teta2
+    print "<I> <MACR_CALC_EOLIENNE> teta3 = ", teta3
+    print "  "
+
+# 2.4 ==> Creation du maillage pour la hauteur d'eau (H_IMMERGEE) courante
+
+    mail_eolienne(H_TOTALE, H_BASE, H_IMMERGEE, H_MOYEU, H_JONCTION, DECAL_PALES,
+                  DEXT_NACELLE, EPAIS_NACELLE, DEXT_HAUT_BASE, DEXT_BAS_BASE,
+                  EPAIS_HAUT_BASE, EPAIS_BAS_BASE, DEXT_HAUT_FUT, DEXT_BAS_FUT,
+                  EPAIS_HAUT_FUT, EPAIS_BAS_FUT, NB_ELEM_BASE, NB_ELEM_FUT,
+                  NBEL_EPAIS_BASE, NBEL_EPAIS_FUT, NBEL_DCIR_BASE, NBEL_DCIR_FUT,
+                  ANGLE_VENT_AXE_X,
+                  MODELISATION, TYPE_ELEM, NIVE_GIBI, fichier_datg)
+
+# 2.5 ==> Lancement de GIBI
+    EXEC_LOGICIEL(
+                   LOGICIEL = logi_mail,
+                   ARGUMENT = (fichier_datg,    # fichier de donnees GIBI
+                               fichier_mgib,    # fichier resultats format GIBI
+                              )
+                 )
+
+# 2.6 ==> Lecture du maillage et definition des groupes
+
+    PRE_GIBI()
+
+    MA[j] = LIRE_MAILLAGE()
+
+    MA[j]=DEFI_GROUP( reuse         = MA[j],
+                      MAILLAGE      = MA[j],
+                      CREA_GROUP_NO = _F( TOUT_GROUP_MA='OUI',),);
+
+# debut test
+#  IMPR_CO(CO=MA[j],)
+# fin test
+
+# 2.7 ==> Modelisation POUTRE
+
+    if MODELISATION == 'POUTRE' :
+
+      __MO[j]=AFFE_MODELE(MAILLAGE=MA[j],
+                 AFFE=_F(GROUP_MA='EOLIENNE',PHENOMENE='MECANIQUE',MODELISATION='POU_D_T',),);
+
+      motscle={}
+      motscle['POUTRE']=[]
+      for i in range(NB_ELEM_FUT) :
+        nom  = 'FUT'+str(i+1)
+        incr = (DEXT_BAS_FUT - DEXT_HAUT_FUT)/(2.0*NB_ELEM_FUT)
+        r1 = (DEXT_BAS_FUT/2.0) - (i*incr)
+        r2 = r1 - incr     
+        motscle['POUTRE'].append(_F(GROUP_MA=nom,SECTION='CERCLE',CARA=('R1','R2','EP1','EP2',),VALE=(r1,r2,EPAIS_BAS_FUT,EPAIS_HAUT_FUT,),VARI_SECT='HOMOTHETIQUE',), )
+
+      for i in range(NB_ELEM_BASE) :
+        nom = 'BASE'+str(i+1)
+        incr = (DEXT_BAS_BASE - DEXT_HAUT_BASE)/(2.0*NB_ELEM_BASE)
+        r1 = (DEXT_BAS_BASE/2.0) - (i*incr)        
+        r2 = r1 - incr     
+        motscle['POUTRE'].append(_F(GROUP_MA=nom,SECTION='CERCLE',CARA=('R1','R2','EP1','EP2',),VALE=(r1,r2,EPAIS_BAS_BASE,EPAIS_HAUT_BASE,),VARI_SECT='HOMOTHETIQUE',), )
+
+      CARA[j]=AFFE_CARA_ELEM( MODELE = __MO[j], 
+                              **motscle );
+
+# 2.8 ==> Modelisation COQUE
+       
+    if MODELISATION == 'COQUE' :
+      MA2[j] = CREA_MAILLAGE( MAILLAGE=MA[j],
+                              MODI_MAILLE=( _F( OPTION   = 'QUAD8_9',
+                                                GROUP_MA = ('PARTEM','PARTIM',),),
+                                            _F( OPTION   = 'TRIA6_7',
+                                                GROUP_MA = ('JONCTION',),),),
+                            );
+
+      __MO[j] = AFFE_MODELE( MAILLAGE=MA2[j],
+                             AFFE=( _F( GROUP_MA     = ('PARTEM','PARTIM','JONCTION','CHAUTE'),
+                                        PHENOMENE    = 'MECANIQUE',
+                                        MODELISATION = 'COQUE_3D',),
+                                    _F( GROUP_MA     = 'NACELLE',
+                                        PHENOMENE    = 'MECANIQUE',
+                                        MODELISATION = 'POU_D_E',),),
+                            );
+  
+      
+      MA2[j] = MODI_MAILLAGE( reuse         = MA2[j],
+                              MAILLAGE      = MA2[j],
+                              ORIE_NORM_COQUE = _F(
+                              GROUP_MA = ('PARTEM','PARTIM','JONCTION'),),);
+      CARA[j] = AFFE_CARA_ELEM( MODELE=__MO[j],
+                                POUTRE=( _F(GROUP_MA = 'NACELLE',
+                                            SECTION  = 'CERCLE',
+                                            CARA     = ('R','EP',),
+                                            VALE     = (dex_nacelle/2.,ep_nacelle,), ),
+                                     ),
+                                COQUE=( _F( GROUP_MA = ('PARTEM','PARTIM','CHAUTE'),
+                                            EPAIS    = ep_b_fut,
+                                            ANGL_REP = (0.0,90.0,), ),
+
+                                        _F( GROUP_MA = ('JONCTION'),
+                                            EPAIS    =  h_jonction, ),
+                                      ),
+                               );
+
+# 2.9 ==> Modelisation 3D
+
+    if MODELISATION == '3D' :
+    
+      __MO[j] = AFFE_MODELE( MAILLAGE=MA[j],
+                             AFFE=(_F( GROUP_MA     = ('BASE','FUT','JONCTION','CHAUTE','SI1','SE1'),
+                                       PHENOMENE    = 'MECANIQUE',
+                                       MODELISATION = '3D',),
+                                   _F( GROUP_MA     ='NACELLE',
+                                       PHENOMENE    ='MECANIQUE',
+                                       MODELISATION ='POU_D_E',),),
+                           );
+   
+      MA[j] = MODI_MAILLAGE( reuse        = MA[j],
+                             MAILLAGE     = MA[j],
+                             ORIE_PEAU_3D = _F(
+                             GROUP_MA     = ('SE1','SI1','CHAUTE'),),
+                           );
+
+      CARA[j] = AFFE_CARA_ELEM( MODELE =__MO[j],
+                                POUTRE =(
+                                         _F( GROUP_MA = 'NACELLE',
+                                             SECTION  = 'CERCLE',
+                                             CARA     = ('R','EP',),
+                                             VALE     = (DEXT_NACELLE/2.0,EPAIS_NACELLE,), ),
+                                        ),
+                              );
+
+# 2.10 ==> Affectation du materiau
+
+    motscles={}
+    motscles['AFFE_MATERIAU']=[]
+    for mat in affemateriau :
+      if mat['TOUT'] == None :
+        # Creation de mots-cles pour les AFFE_CHAR_MECA
+        motscles['AFFE_MATERIAU'].append(_F( GROUP_MA = mat['GROUP_MA'],
+                                             MATER    = mat['MATER'],
+                                             TEMP_REF = mat['TEMP_REF'],) )
+      else :
+        # Creation de mots-cles pour les AFFE_CHAR_MECA
+        motscles['AFFE_MATERIAU'].append(_F( TOUT     = 'OUI',
+                                             MATER    = mat['MATER'],
+                                             TEMP_REF = mat['TEMP_REF'],) )
+    if MODELISATION == 'COQUE' :
+      __affmat[j] = AFFE_MATERIAU( MAILLAGE = MA2[j],
+                                   MODELE   = __MO[j],
+                                   AFFE     = motscles['AFFE_MATERIAU'],
+                                 )
+    else :
+      __affmat[j] = AFFE_MATERIAU( MAILLAGE = MA[j],
+                                   MODELE   = __MO[j],
+                                   AFFE     = motscles['AFFE_MATERIAU'],
+                                 )
+
+# 2.11 ==> Chargement et conditions aux limites
+
+    RAUMER = 1027.42     # masse volumique de l'eau de mer (kg/m3)
+    l_elem_stream = 0.3  # longueur des elements de STREAM_FM (m)
+  
+    if test == 'OUI':
+      # FC3 poutre           
+      if MODELISATION == 'POUTRE' :
+        FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=' -(exp((Z+231.21)/20.187))/0.3')
+      else :
+      # FC3 coque et 3D
+        FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE='''- (
+          (3.E-5-(1.E4*Z))+((-6.E-8*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+2.E-5*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))
+          -0.0021*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+0.0224*(atan(Y/(X+1.E-8)))+0.9328)*
+          (0.5*'''+str(RAUMER)+'''*1.6**2)))''')
+    else :
+      if MODELISATION == 'POUTRE' :   
+        FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=''' -('''
+           +str(teta0)+'''+('''
+           +str(teta1)+''')*(Z-('''+str(alpha1)+'''))+('''
+           +str(teta2)+''')*((Z-('''+str(alpha2)+'''))*(Z-('''+str(alpha1)+'''))-('''+str(beta2)+'''))+('''
+           +str(teta3)+''')*( (Z-('''+str(alpha3)+'''))*((Z-('''+str(alpha2)+'''))*(Z-('''+str(alpha1)+'''))-('''
+                           +str(beta2)+'''))-('''+str(beta3)+''')*(Z-('''+str(alpha1)+'''))))/'''+str(l_elem_stream))
+      else :
+        r_bas = (DEXT_HAUT_BASE + DEXT_BAS_FUT)/4.0   # rayon moyen de la base
+        deux_pi_r_bas = 2.0*math.pi*r_bas             # rayon moyen de la base multiplie par 2*pi
+        int_dp_etoil = -4.83893                       # valeur de l integrale de la fonction de repartition de pression
+
+        FC3 = FORMULE(NOM_PARA=('X','Y','Z'),VALE=''' -(
+           (('''+str(H_BASE)+'''-Z)*1.0E+4)+(
+           ((('''+str(teta0)+'''+'''
+           +str(teta1)+'''*(Z-'''+str(alpha1)+''')+'''
+           +str(teta2)+'''*((Z-'''+str(alpha2)+''')*(Z-'''+str(alpha1)+''')-'''+str(beta2)+''')+'''
+           +str(teta3)+'''*( (Z-'''+str(alpha3)+''')*((Z-'''+str(alpha2)+''')*(Z-'''+str(alpha1)+''')-'''
+                           +str(beta2)+''')-'''+str(beta3)+'''*(Z-'''+str(alpha1)+''')))/'''+str(l_elem_stream)+''')-'''
+          +str(deux_pi_r_bas)+'''*(('''+str(H_BASE)+'''-Z)*1.0E+4))*
+          ((-6.E-8*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+2.E-5*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))
+          -0.0021*(atan(Y/(X+1.E-8)))*(atan(Y/(X+1.E-8)))+0.0224*(atan(Y/(X+1.E-8)))+0.9328))/('''+str(r_bas)+'''*'''+str(int_dp_etoil)+''')))''')     
+          
+    if CHARGEMENT['VENT'] == 'OUI' :
+      FV0 = CHARGEMENT['FORCE_VENT_FUT']
+    else :
+      FV0 = FORMULE(NOM_PARA=('X','Y','Z'),VALE='0.0*Z')
+
+    if MODELISATION == 'POUTRE' :
+      CH=AFFE_CHAR_MECA_F(MODELE=__MO[j],
+                      FORCE_POUTRE=(_F(GROUP_MA='PARTIM',FX=FC3,),
+                                    _F(GROUP_MA='PARTEM',FX=FV0,),),)
+    if MODELISATION == 'COQUE' :
+      CH=AFFE_CHAR_MECA_F(MODELE=__MO[j],
+                      FORCE_COQUE=(_F(GROUP_MA='SI1',PRES=FC3,),
+                                   _F(GROUP_MA='SE1',PRES=FV0,),),);
+
+    if MODELISATION == '3D' :
+      CH=AFFE_CHAR_MECA_F(MODELE=__MO[j],
+                      PRES_REP=(_F(GROUP_MA='SI1',PRES=FC3,),
+                                _F(GROUP_MA='SE1',PRES=FV0,),),);
+
+    # force due au poids du rotor decale de d1 (N)
+    F2 = CHARGEMENT['FORCE_POIDS_ROTOR']
+
+    # force due au poids de la nacelle (N)
+    F3 = CHARGEMENT['FORCE_POIDS_NACELLE']
+
+    # force totale en z sur le sommet
+    FCZ = F2+F3
+
+    # force du à l'effort du vent sur les pales
+    FRU = CHARGEMENT['FORCE_VENT_PALES']
+    # moment resistant
+    MRU = CHARGEMENT['MOMENT_RESISTANT']
+
+    # force et moment dus au vent sur le rotor suivant le repère global
+    ALPHAR = CHARGEMENT['ANGLE_VENT_AXE_X']*(math.pi)/180.0
+
+    F1X = FRU*math.cos(ALPHAR)
+    F1Y = FRU*math.sin(ALPHAR)
+    M1X = MRU*math.cos(ALPHAR)
+    M1Y = MRU*math.sin(ALPHAR)
+
+    MCY = M1Y-(MONOPODE['DECAL_PALES']*F2)+(MONOPODE['H_MOYEU']*FRU)
+
+    if MODELISATION == 'POUTRE' :
+      LIMIT=AFFE_CHAR_MECA( MODELE       = __MO[j],
+                            DDL_IMPO     = _F( GROUP_NO='B_BASE',
+                                               DX=0.0,DY=0.0,DZ=0.0,
+                                               DRX=0.0,DRY=0.0,DRZ=0.0,),
+                            FORCE_NODALE = _F( GROUP_NO='H_FUT',
+                                               FX=F1X,
+                                               FY=F1Y,
+                                               FZ=FCZ,
+                                               MX=M1X,
+                                               MY=MCY,
+                                               MZ=0.0,),)
+
+    if MODELISATION == 'COQUE' :
+      LIMIT=AFFE_CHAR_MECA(MODELE=__MO[j],
+                         DDL_IMPO=_F(GROUP_NO='CBASI',
+                                     DX=0.0,DY=0.0,DZ=0.0,
+                                     DRX=0.0,DRY=0.0,DRZ=0.0,),
+
+                        LIAISON_ELEM=_F(OPTION='COQ_POU',
+                                        CARA_ELEM = CARA[j],
+                                        AXE_POUTRE=(0.,0.,1.,),
+                                        GROUP_MA_1='CHAUTE',
+                                        GROUP_NO_2='H_FUT',),
+
+                         FORCE_NODALE=(_F(GROUP_NO='CHP',
+                                         FX=F1X,FY=F1Y,FZ=F2,
+                                         MX=M1X,MY=M1Y,MZ=0.0,),
+
+                                      _F(GROUP_NO='CHP0',FZ=F3,),
+                                        ),)
+  
+    if MODELISATION == '3D' :
+      LIMIT=AFFE_CHAR_MECA(MODELE=__MO[j],
+                         DDL_IMPO=_F(GROUP_NO='CBASI',
+                                     DX=0.0,DY=0.0,DZ=0.0,),
+
+                        LIAISON_ELEM=_F(OPTION='3D_POU',
+                                        CARA_ELEM = CARA[j],
+                                        AXE_POUTRE=(0.,0.,1.,),
+                                        GROUP_MA_1='CHAUTE',
+                                        GROUP_NO_2='H_FUT',),
+
+                         FORCE_NODALE=(_F(GROUP_NO='CHP',
+                                         FX=F1X,FY=F1Y,FZ=F2,
+                                         MX=M1X,MY=M1Y,MZ=0.0,),
+
+                                      _F(GROUP_NO='CHP0',FZ=F3,),
+                                        ),)
+
+    POIDS=AFFE_CHAR_MECA( MODELE=__MO[j],
+                          PESANTEUR=(9.81,0.0,0.0,-1.0,),)
+
+# 2.12 ==> Realisation du calcul
+
+    if MODELISATION == 'POUTRE' :
+
+      TEMPS=DEFI_LIST_REEL(DEBUT=0.0,
+                         INTERVALLE=_F(JUSQU_A=1.0,
+                                       PAS=1.0,),)
+
+      RESU=STAT_NON_LINE(MODELE=__MO[j],
+                       CHAM_MATER=__affmat[j],
+                       CARA_ELEM=CARA[j],
+                       EXCIT=(_F(CHARGE=POIDS,),
+                              _F(CHARGE=CH,),
+                              _F(CHARGE=LIMIT,),),
+                       COMP_INCR=_F(RELATION='ELAS',
+                                    GROUP_MA='EOLIENNE',),
+                       INCREMENT=_F(LIST_INST=TEMPS,
+                                    NUME_INST_FIN=1,),)
+
+      RESU=CALC_ELEM( reuse =RESU,
+                      RESULTAT=RESU,
+                      OPTION=('SIEF_ELNO_ELGA','SIGM_ELNO_SIEF','SIPO_ELNO_SIEF',),)
+
+    if MODELISATION == 'COQUE' :
+      RESU=MECA_STATIQUE( MODELE=__MO[j],
+                          CHAM_MATER=__affmat[j],
+                          CARA_ELEM=CARA[j],
+                          EXCIT=(_F(CHARGE=POIDS,),
+                                 _F(CHARGE=CH,),
+                                 _F(CHARGE=LIMIT,),),
+                          NIVE_COUCHE='MOY',
+                        );
+      RESU=CALC_ELEM( reuse =RESU,
+                      RESULTAT=RESU,
+                      OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),)
+
+      RESU = CALC_NO( reuse =RESU,
+                      RESULTAT=RESU,
+                      OPTION=('SIGM_NOEU_DEPL','EQUI_NOEU_SIGM',),);        
+
+    if MODELISATION == '3D' :
+      RESU=MECA_STATIQUE( MODELE=__MO[j],
+                          CHAM_MATER=__affmat[j],
+                          CARA_ELEM=CARA[j],
+                          EXCIT=(_F(CHARGE=POIDS,),
+                                 _F(CHARGE=CH,),
+                                 _F(CHARGE=LIMIT,),),
+                        );
+      RESU=CALC_ELEM( reuse =RESU,
+                      RESULTAT=RESU,
+                      REPE_COQUE=_F(NIVE_COUCHE='MOY',),
+                      OPTION=('SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',));
+
+      RESU = CALC_NO( reuse =RESU,
+                      RESULTAT=RESU,
+                      OPTION=('SIGM_NOEU_DEPL','EQUI_NOEU_SIGM',),);         
+
+# 2.13 ==> Preparation du modele de reference si modelisation 3D calcul de la fatigue
+
+    delta = periode_houle/Nb_pas_temps
+    inst = -periode_houle/2.0 + j*delta
+    if (MODELISATION == '3D') and (FATIGUE != None) :
+  
+      if (k == 1) :
+        CHAMREF = AFFE_MATERIAU( MAILLAGE = mail_ref,
+                                 MODELE   = MOREF,
+                                 AFFE     = motscles['AFFE_MATERIAU'],)  
+  
+      RESPRO = PROJ_CHAMP( METHODE  = 'ELEM',
+                           NOM_CHAM = 'SIGM_NOEU_DEPL',
+                           RESULTAT = RESU,
+                           MODELE_1 = __MO[j],
+                           MODELE_2 = MOREF,
+                           VIS_A_VIS=(
+                                      _F( GROUP_MA_2='MONOPODE',
+                                          GROUP_MA_1='MONOPODE' ),
+                                     ),                  
+                         )
+
+      SIG_PRO = CREA_CHAMP( TYPE_CHAM  = 'NOEU_SIEF_R',
+                            OPERATION  = 'EXTR',
+                            RESULTAT   =  RESPRO  ,
+                            NOM_CHAM   = 'SIGM_NOEU_DEPL',
+                            NUME_ORDRE = 1,
+                          )
+
+      if (k==1) :
+        RESREF = CREA_RESU( 
+                            OPERATION = 'AFFE',
+                            TYPE_RESU = 'EVOL_ELAS',
+                            NOM_CHAM  = 'SIGM_NOEU_DEPL',
+                            AFFE      = _F( CHAM_GD = SIG_PRO,
+                                            INST = (inst), ), 
+                          )
+      else :
+        RESREF = CREA_RESU( reuse = RESREF,
+                            OPERATION = 'AFFE',
+                            TYPE_RESU = 'EVOL_ELAS',
+                            NOM_CHAM  = 'SIGM_NOEU_DEPL',
+                            AFFE      = _F( CHAM_GD = SIG_PRO,
+                                            INST = (inst), ),
+                          )
+
+# 2.14 ==> Impression des resultats
+
+    if MODELISATION == 'POUTRE' :
+      fich1='poutre_t='+str(inst)+'.resu'
+      fich2='poutre_t='+str(inst)+'.cast'
+      fich3='poutre_t='+str(inst)+'.ensi'
+      fich4='poutre_t='+str(inst)+'.unv'
+    if MODELISATION == 'COQUE' :
+      fich1='coque_t='+str(inst)+'.resu'
+      fich2='coque_t='+str(inst)+'.cast'
+      fich3='coque_t='+str(inst)+'.ensi'
+      fich4='coque_t='+str(inst)+'.unv'
+    if MODELISATION == '3D' :
+      fich1='3D_t='+str(inst)+'.resu'
+      fich2='3D_t='+str(inst)+'.cast'
+      fich3='3D_t='+str(inst)+'.ensi'
+      fich4='3D_t='+str(inst)+'.unv'
+
+    fich1b = './REPE_OUT/'+fich1
+    fich2b = './REPE_OUT/'+fich2
+    fich3b = './REPE_OUT/'+fich3
+    fich4b = './REPE_OUT/'+fich4
+
+    if IMPRESSION != None :
+      motscles={}
+      motscles['IMPRESSION']=[]
+      # Creation de mots-cles pour les IMPR_RESU
+      for impr in IMPRESSION :
+        if impr['FORMAT']=='RESULTAT':
+          UNIT_1B=DEFI_FICHIER(FICHIER=fich1b)
+          unitr = UNIT_1B
+        if impr['FORMAT']=='CASTEM':
+          UNIT_2B=DEFI_FICHIER(FICHIER=fich2b)
+          unitr = UNIT_2B
+        if impr['FORMAT']=='ENSIGHT':
+          UNIT_3B=DEFI_FICHIER(FICHIER=fich3b)
+          unitr = UNIT_3B
+        if impr['FORMAT']=='IDEAS':
+          UNIT_4B=DEFI_FICHIER(FICHIER=fich4b)
+          unitr = UNIT_4B
+        if MODELISATION == '3D':    
+             motscles['IMPRESSION'].append(_F(MAILLAGE=MA[j],RESULTAT=RESU,
+                                             NOM_CHAM=('DEPL','SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),) )
+        if MODELISATION == 'COQUE':      
+             motscles['IMPRESSION'].append(_F(MAILLAGE=MA2[j],RESULTAT=RESU,
+                                           NOM_CHAM=('DEPL','SIGM_ELNO_DEPL','EQUI_ELNO_SIGM',),) )
+        if MODELISATION == 'POUTRE':     
+             motscles['IMPRESSION'].append(_F(MAILLAGE=MA[j],RESULTAT=RESU,
+                                           NOM_CHAM=('DEPL','SIGM_ELNO_SIEF','SIPO_ELNO_SIEF',),) )
+
+      IMPR_RESU(FORMAT=impr['FORMAT'],UNITE=unitr,
+                RESU=motscles['IMPRESSION'],)
+
+      for impr in IMPRESSION :
+        if impr['FORMAT']=='RESULTAT':
+          DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich1b)
+          DETRUIRE(CONCEPT=_F( NOM = UNIT_1B))
+        if impr['FORMAT']=='CASTEM':
+          DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich2b)
+          DETRUIRE(CONCEPT=_F( NOM = UNIT_2B))
+        if impr['FORMAT']=='ENSIGHT':
+          DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich3b)
+          DETRUIRE(CONCEPT=_F( NOM = UNIT_3B))
+        if impr['FORMAT']=='IDEAS':
+          DEFI_FICHIER(ACTION='LIBERER',FICHIER=fich4b)
+          DETRUIRE(CONCEPT=_F( NOM = UNIT_4B))
+      
+      if (MODELISATION == '3D') and (FATIGUE != None) :
+         DETRUIRE(CONCEPT=_F( NOM = SIG_PRO))
+         DETRUIRE(CONCEPT=_F( NOM = RESPRO))
+      if MODELISATION == 'POUTRE' :
+         DETRUIRE(CONCEPT=_F( NOM = TEMPS))
+
+    DETRUIRE(CONCEPT=_F( NOM = FC3))
+    DETRUIRE(CONCEPT=_F( NOM = CH))
+    DETRUIRE(CONCEPT=_F( NOM = LIMIT))
+    DETRUIRE(CONCEPT=_F( NOM = POIDS))
+    DETRUIRE(CONCEPT=_F( NOM = RESU))
+#
+#____________________________________________________________________
+#
+# 3.  Calcul de fatigue.
+#     On calcule la fatigue si la modelisation est 3D et si le mot clef
+#     fatigue est present.
+#____________________________________________________________________
+#
+# 3.1 ==> Calcul de la fatigue
+#
+  if (MODELISATION == '3D') and  (FATIGUE != None) : 
+                   
+    self.DeclareOut('CHFATI',self.sd)
+    CHFATI = CALC_FATIGUE (
+                 TYPE_CALCUL = 'FATIGUE_MULTI',
+                 TYPE_CHARGE = 'PERIODIQUE',
+                 OPTION = 'DOMA_NOEUD',
+                 RESULTAT = RESREF,
+                 CHAM_MATER = CHAMREF,
+                 GROUP_MA = ('BASE','FUT'),
+                 MAILLAGE = mail_ref,
+                 CRITERE=FATIGUE['CRITERE'],
+                 METHODE='CERCLE_EXACT',
+                 INFO = 2, )
+
+#____________________________________________________________________
+#
+# 3.2 ==> Impression des resultats de fatigue
+#
+    if IMPRESSION != None :
+      motscles={}
+      motscles['IMPRESSION']=[]
+
+      motscles['IMPRESSION'].append(_F(MAILLAGE=mail_ref,CHAM_GD=CHFATI,) )
+
+    IMPR_RESU( FORMAT=impr['FORMAT'],
+               MODELE   = MOREF,
+               RESU=motscles['IMPRESSION'],)
+
+#____________________________________________________________________
+#
+# 4. C'est fini !
+#____________________________________________________________________
+#    
+  if erreur :
+    if not messages_erreur.has_key(erreur) :
+      erreur = 100
+    self.cr.fatal(messages_erreur[erreur])
+
+  return
+#
+#____________________________________________________________________
+#____________________________________________________________________
+#
+#                  CATALOGUES DES MACRO-COMMANDES
+#____________________________________________________________________
+#____________________________________________________________________
+#
+#              ________________________________________
+#
+#____________________________________________________________________
+#____________________________________________________________________
+#
+# CATALOGUE DE LA MACRO COMMANDE CALC_CHAR_HOULE
+#____________________________________________________________________
+#____________________________________________________________________
+#
+
+CALC_CHAR_HOULE=MACRO( nom="CALC_CHAR_HOULE",op=calc_char_houle_ops,
+                       fr="Calcul le chargement du a la houle.",
+                       ang=".",reentrant='n',
+                       docu="Ux.xx.xx-a",
+         STREAM            =FACT(statut='o',max=1,
+           PROFONDEUR        =SIMP(statut='o',typ='R'),  
+           H_HOULE           =SIMP(statut='o',typ='R'),  
+           PERI_HOULE        =SIMP(statut='o',typ='R'), 
+           COUR_EULERIEN     =SIMP(statut='o',typ='R'), 
+           COEF_TRAINEE      =SIMP(statut='o',typ='R'),  
+           COEF_INERTIE      =SIMP(statut='o',typ='R'),  
+           ORDR_FONC_COURAN  =SIMP(statut='o',typ='I'),  
+           NB_POINTS_VERT    =SIMP(statut='o',typ='I'),  
+           NB_INTER_PERI     =SIMP(statut='o',typ='I'),  
+           DEXT_HAUT_BASE    =SIMP(statut='o',typ='R'), 
+         ),
+            
+         IMPRESSION      =FACT(statut='f',
+         UNITE           =SIMP(statut='o',typ='I'),
+         ),
+             
+         INFO           = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+);
+
+#
+#____________________________________________________________________
+#____________________________________________________________________
+#
+# CATALOGUE DE LA MACRO COMMANDE MACR_CALC_EOLIENNE
+#____________________________________________________________________
+#____________________________________________________________________
+#
+
+def macr_calc_eolienne_prod(self,NOM_MAIL_REF,**args):
+  if NOM_MAIL_REF != None : self.type_sdprod(NOM_MAIL_REF,maillage_sdaster)
+  return cham_no_sdaster
+
+
+MACR_CALC_EOLIENNE=MACRO(nom="MACR_CALC_EOLIENNE",op=macr_calc_eolienne_ops,
+                   sd_prod=macr_calc_eolienne_prod,
+                   fr="Calcul d une eolienne en mer.",
+                   ang=".",reentrant='n',
+                   docu="U2.09.04-a",
+         EXEC_MAILLAGE   =FACT(statut='o',
+           LOGICIEL        =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ),
+           UNITE_DATG      =SIMP(statut='f',typ='I',defaut=70),  
+           UNITE_MGIB      =SIMP(statut='f',typ='I',defaut=19),  
+           NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)),
+         ),
+
+         MODELISATION   =SIMP(statut='o',typ='TXM', into=("POUTRE","COQUE","3D") ),
+         NOM_MAIL_REF   =SIMP(statut='f',typ=(CO,maillage_sdaster)),
+            
+         TYPE_ELEM      =SIMP(statut='f',typ='TXM',defaut="CUB8",into=("CUB8","CU20") ),
+            
+         b_model_3D  =BLOC(condition = "MODELISATION == '3D'",
+   
+            MONOPODE =FACT(statut='o',max=1,
+
+               H_TOTALE        =SIMP(statut='o',typ='R' ),  
+               H_BASE          =SIMP(statut='o',typ='R' ),  
+               H_MOYEU         =SIMP(statut='o',typ='R' ),  
+               H_JONCTION      =SIMP(statut='o',typ='R' ),  
+               DECAL_PALES     =SIMP(statut='o',typ='R' ),  
+               DEXT_NACELLE    =SIMP(statut='o',typ='R' ), 
+               EPAIS_NACELLE   =SIMP(statut='o',typ='R' ), 
+               DEXT_HAUT_BASE  =SIMP(statut='o',typ='R' ), 
+               DEXT_BAS_BASE   =SIMP(statut='f',typ='R' ), 
+               EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), 
+               EPAIS_BAS_BASE  =SIMP(statut='f',typ='R' ), 
+               DEXT_HAUT_FUT   =SIMP(statut='o',typ='R' ), 
+               DEXT_BAS_FUT    =SIMP(statut='f',typ='R' ), 
+               EPAIS_HAUT_FUT  =SIMP(statut='o',typ='R' ), 
+               EPAIS_BAS_FUT   =SIMP(statut='f',typ='R' ), 
+               NB_ELEM_BASE    =SIMP(statut='f',typ='I',defaut=30),
+               NB_ELEM_FUT     =SIMP(statut='f',typ='I',defaut=70),
+               NBEL_EPAIS_BASE =SIMP(statut='f',typ='I',defaut=3),
+               NBEL_EPAIS_FUT  =SIMP(statut='f',typ='I',defaut=3),
+               NBEL_DCIR_BASE  =SIMP(statut='f',typ='I',defaut=15),
+               NBEL_DCIR_FUT   =SIMP(statut='f',typ='I',defaut=15),
+                          ),    
+            ),
+                        
+         b_model_coque  =BLOC(condition = "MODELISATION == 'COQUE' ",
+   
+           MONOPODE        =FACT(statut='o',max=1,
+
+              H_TOTALE        =SIMP(statut='o',typ='R' ),  
+              H_BASE          =SIMP(statut='o',typ='R' ),  
+              H_MOYEU         =SIMP(statut='o',typ='R' ),  
+              H_JONCTION      =SIMP(statut='o',typ='R' ),  
+              DECAL_PALES     =SIMP(statut='o',typ='R' ),  
+              DEXT_NACELLE    =SIMP(statut='o',typ='R' ), 
+              EPAIS_NACELLE   =SIMP(statut='o',typ='R' ), 
+              DEXT_HAUT_BASE  =SIMP(statut='o',typ='R' ), 
+              DEXT_BAS_BASE   =SIMP(statut='f',typ='R' ), 
+              EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), 
+              EPAIS_BAS_BASE  =SIMP(statut='f',typ='R' ), 
+              DEXT_HAUT_FUT   =SIMP(statut='o',typ='R' ), 
+              DEXT_BAS_FUT    =SIMP(statut='f',typ='R' ), 
+              EPAIS_HAUT_FUT  =SIMP(statut='o',typ='R' ), 
+              EPAIS_BAS_FUT   =SIMP(statut='f',typ='R' ), 
+              NB_ELEM_BASE    =SIMP(statut='f',typ='I',defaut=30),
+              NB_ELEM_FUT     =SIMP(statut='f',typ='I',defaut=70),
+              NBEL_DCIR_BASE  =SIMP(statut='f',typ='I',defaut=15),
+              NBEL_DCIR_FUT   =SIMP(statut='f',typ='I',defaut=15),
+                             ),    
+           ),
+
+         b_model_poutre  =BLOC(condition = "MODELISATION == 'POUTRE' ",
+   
+           MONOPODE          =FACT(statut='o',max=1,
+
+              H_TOTALE        =SIMP(statut='o',typ='R' ),  
+              H_BASE          =SIMP(statut='o',typ='R' ),  
+              H_MOYEU         =SIMP(statut='o',typ='R' ),  
+              DECAL_PALES     =SIMP(statut='o',typ='R' ),  
+              DEXT_HAUT_BASE  =SIMP(statut='o',typ='R' ), 
+              DEXT_BAS_BASE   =SIMP(statut='f',typ='R' ), 
+              EPAIS_HAUT_BASE =SIMP(statut='o',typ='R' ), 
+              EPAIS_BAS_BASE  =SIMP(statut='f',typ='R' ), 
+              DEXT_HAUT_FUT   =SIMP(statut='o',typ='R' ), 
+              DEXT_BAS_FUT    =SIMP(statut='f',typ='R' ), 
+              EPAIS_HAUT_FUT  =SIMP(statut='o',typ='R' ), 
+              EPAIS_BAS_FUT   =SIMP(statut='f',typ='R' ), 
+              NB_ELEM_BASE    =SIMP(statut='f',typ='I',defaut=30),
+              NB_ELEM_FUT     =SIMP(statut='f',typ='I',defaut=70),
+                             ),    
+           ),
+                  
+         AFFE_MATERIAU   =FACT(statut='o',max=3,
+             regles=(UN_PARMI('TOUT','GROUP_MA'),),
+             TOUT           =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+             GROUP_MA       =SIMP(statut='f',typ='TXM',into=("BASE","FUT") ),
+             MATER          =SIMP(statut='o',typ=mater_sdaster ),
+             TEMP_REF       =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+         ),
+
+         CHARGEMENT        =FACT(statut='o',
+           FORCE_POIDS_ROTOR   =SIMP(statut='o',typ='R' ),
+           FORCE_POIDS_NACELLE =SIMP(statut='o',typ='R' ),
+           FORCE_VENT_PALES =SIMP(statut='o',typ='R' ),
+           ANGLE_VENT_AXE_X =SIMP(statut='o',typ='R' ),
+           MOMENT_RESISTANT =SIMP(statut='o',typ='R' ),
+           FORCE_VENT_FUT   =SIMP(statut='o',typ=(fonction_sdaster,formule) ),
+           VENT    =SIMP(statut='o',typ='TXM',into=("OUI","NON") ),
+           HOULE   =SIMP(statut='o',typ='TXM',into=("OUI","NON") ),
+         ),
+
+         FATIGUE   =FACT(statut='f',
+           CRITERE   =SIMP(statut='f',typ='TXM',defaut="DANG_VAN_MODI_AC",into=("MATAKE","DANG_VAN_MODI_AC") ),
+         ),
+
+         SOLVEUR         =FACT(statut='d',
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+           b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+           ),
+           b_ldlt         =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+           ),
+           b_ldlt_mult    =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+             NPREC           =SIMP(statut='f',typ='I',defaut= 8 ),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+           b_gcpc         =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+             NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
+           ),
+           SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+         ),
+
+         IMPRESSION      =FACT(statut='f',
+           FORMAT          =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
+                                 into=("RESULTAT","CASTEM","IDEAS","ENSIGHT")),
+                                 
+           b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+             VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+           ),  
+
+           b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+             NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+           ),
+             
+             TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+             NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+             INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+         ),      
+
+        INFO           = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+);
diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_cata.py
new file mode 100644 (file)
index 0000000..8cddc46
--- /dev/null
@@ -0,0 +1,190 @@
+#@ MODIF macr_cabri_calc_cata Intranet  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+from Intranet.macr_cabri_calc_ops import macr_cabri_calc_ops
+from Cata.cata import *
+   
+def macr_cabri_calc_prod(self,MODELE_THER,MODELE_MECA,CHAM_MATER,
+                         CHAR_THER,CHAR_MECA,RESU_THER,**args):
+  if MODELE_THER != None:
+   self.type_sdprod(MODELE_THER,modele_sdaster)   
+  if MODELE_MECA != None:
+   self.type_sdprod(MODELE_MECA,modele_sdaster)  
+  if RESU_THER != None:
+   self.type_sdprod(RESU_THER,evol_ther)     
+  if CHAM_MATER != None:
+   self.type_sdprod(CHAM_MATER,cham_mater)     
+  if CHAR_THER != None: 
+    for m in CHAR_THER:
+      self.type_sdprod(m['CHARGE'],char_ther)
+  if CHAR_MECA != None: 
+    for m in CHAR_MECA:
+      self.type_sdprod(m['CHARGE'],char_meca)
+  return evol_noli
+
+
+MACR_CABRI_CALC=MACRO(nom="MACR_CABRI_CALC",
+                      op=macr_cabri_calc_ops,
+                      sd_prod=macr_cabri_calc_prod,
+                      fr="Calcul thermo-mécanique d'une jonction boulonnée de tuyauterie",
+                      reentrant='n',
+                      UIinfo={"groupes":("Outils métier",)},
+                      MAILLAGE   = SIMP(statut='o',typ=maillage_sdaster,),
+                      AFFE_MATERIAU = FACT(statut='o',max='**',
+                        regles=(UN_PARMI('TOUT','GROUP_MA',),),
+                        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                        GROUP_MA = SIMP(statut='f',typ='TXM',into=(
+                                                                  "BRIDE",
+                                                                  "GOUJON",
+                                                                  "ROND",
+                                                                  "ECROU",
+                                                                  "JOINT",) ),
+                        MATER    = SIMP(statut='o',typ=mater_sdaster),
+                        TEMP_REF = SIMP(statut='d',typ='R',defaut= 25. ),
+                      ),                      
+                      CHAM_MATER = SIMP(statut = 'f',typ=CO,),
+                      MODELE_THER= SIMP(statut = 'f',typ=CO,),
+                      
+                      DEFI_CHAR_THER = FACT(statut ='d',
+                        TEMP_INIT     = SIMP(statut='d',typ='R',defaut= 25.,),
+                        COEF_H_FLUI   = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        TEMP_EXT_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        COEF_H_AIR    = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        TEMP_EXT_AIR  = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        LIST_INST     = SIMP(statut='f',typ=listr8_sdaster),
+                      ),                      
+                      
+                      CHAR_THER  = FACT(statut = 'f',max=4,
+                        CHARGE    = SIMP(statut='o',typ=CO),
+                        TYPE      = SIMP(statut='o',typ='TXM',
+                                 into=("BRIDE_FLUIDE","BRIDE_AIR","ECROU_GOUJON",
+                                       "BRIDE_JOINT"),)
+                                       ),
+
+                      RESU_THER  = SIMP(statut = 'f',typ=CO,),                                       
+
+                                       
+                      MODELE_MECA= SIMP(statut = 'f',typ=CO,),
+
+                      DEFI_CHAR_MECA   = FACT(statut='o',
+                        PRETENS    = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        PRES_REP   = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                        EFFE_FOND  = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+                      ),                                                             
+
+                      CHAR_MECA  = FACT(statut = 'f',max=11,
+                        CHARGE    = SIMP(statut='o',typ=CO),
+                        TYPE      = SIMP(statut='o',typ='TXM',
+                                 into=("BLOC_BAS_GOUJ","BLOC_BAS_JOINT",
+                                       "BLOC_LAT_ALES","BLOC_LAT_NALES",
+                                       "PLAN_TUBE",
+                                       "PRES_FLU","EFFET_FOND",
+                                       "CONT_JOINT",
+                                       "DEFO_THER",
+                                       "SERR_ECROU_1","SERR_ECROU_2",),)
+                                       ),
+                     
+                      RELATION = SIMP(statut='f',typ='TXM',
+                                       into=('VMIS_ISOT_TRAC','ELAS','ELAS_VMIS_TRAC',),),
+                        
+                      SOLVEUR   = FACT(statut='d',
+                        METHODE  = SIMP(statut='d',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT",) ),
+                        b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ",
+                           fr="Paramètres de la méthode multi frontale",
+                           RENUM           = SIMP(statut='d',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+                           NPREC           = SIMP(statut='d',typ='I',defaut=8),
+                           STOP_SINGULIER  = SIMP(statut='d',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+                           ),                 
+                      ),                                             
+                      INCREMENT = FACT(statut='f',
+                        regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+                                EXCLUS('NUME_INST_FIN','INST_FIN'),),
+                        LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
+                        EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+                                 into=("CHRONOLOGIQUE",) ),                                 
+                        NUME_INST_INIT  =SIMP(statut='f',typ='I'),
+                        INST_INIT       =SIMP(statut='f',typ='R'),
+                        NUME_INST_FIN   =SIMP(statut='f',typ='I'),
+                        INST_FIN        =SIMP(statut='f',typ='R'),
+                        PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
+           SUBD_METHODE    =SIMP( statut='f',typ='TXM',
+              into =("AUCUNE","UNIFORME","EXTRAPOLE"),
+              defaut="AUCUNE",
+              fr="Méthode de subdivision des pas de temps en cas de non-convergence"
+           ),
+           b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'",
+             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
+             SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0,
+                fr="Coefficient multiplicateur de la 1ère subdivision"),
+             SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,
+                fr="Nombre de subdivision d'un pas de temps"),
+             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
+                fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
+             SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
+                fr="Pas de temps en dessous duquel on ne subdivise plus"),
+           ),
+           b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'",
+             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
+             SUBD_OPTION    =SIMP(statut='f',typ='TXM',
+                into =("IGNORE_PREMIERES","GARDE_DERNIERES",), 
+                defaut="IGNORE_PREMIERES",
+                fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"),
+             SUBD_ITER_IGNO =SIMP(statut='c',typ='I',defaut=3,val_min=0,
+                fr="Les n premières itérations sont ignorées pour l'extrapolation"),
+             SUBD_ITER_FIN  =SIMP(statut='c',typ='I',defaut=8,val_min=3,
+                fr="Seules les n dernières itérations sont prises pour l'extrapolation"),
+             SUBD_PAS       =SIMP(statut='c',typ='I',defaut=4,val_min=2,
+                fr="Nombre de subdivision d'un pas de temps en cas divergence"),
+             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
+                fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
+             SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
+                fr="Pas de temps en dessous duquel on ne subdivise plus"),
+             SUBD_ITER_PLUS =SIMP(statut='c',typ='I',defaut=50,val_min=20,
+                fr="% itération autorisée en plus"),
+           ),
+           # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS 
+                        OPTI_LIST_INST  =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
+                        NOM_CHAM        =SIMP(statut='f',typ='TXM',),
+                        NOM_CMP         =SIMP(statut='f',typ='TXM',),
+                        VALE            =SIMP(statut='f',typ='R'),
+                      ),
+                      NEWTON          =FACT(statut='d',
+                        REAC_INCR       =SIMP(statut='f',typ='I',defaut= 1 ),
+                        PREDICTION      =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL") ),
+                        MATRICE         =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+                        PAS_MINI_ELAS   =SIMP(statut='f',typ='R',defaut=0.0E+0),
+                        REAC_ITER       =SIMP(statut='f',typ='I',defaut=0),
+                        EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
+                      ),
+                      RESO_INTE       =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+                                into=("IMPLICITE",)),
+                      CONVERGENCE     =FACT(statut='d',
+                        regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
+                        SIGM_REFE       =SIMP(statut='f',typ='R'),
+                        EPSI_REFE       =SIMP(statut='f',typ='R'),
+                        FLUX_THER_REFE  =SIMP(statut='f',typ='R'),        
+                        RESI_REFE_RELA  =SIMP(statut='f',typ='R'),
+                        RESI_GLOB_MAXI  =SIMP(statut='f',typ='R'),
+                        RESI_GLOB_RELA  =SIMP(statut='f',typ='R'),
+                        ITER_GLOB_MAXI  =SIMP(statut='f',typ='I',defaut=10),
+                        ITER_GLOB_ELAS  =SIMP(statut='f',typ='I',defaut=25),
+                      ),
+                     );
diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_calc_ops.py
new file mode 100644 (file)
index 0000000..81d8ea3
--- /dev/null
@@ -0,0 +1,555 @@
+#@ MODIF macr_cabri_calc_ops Intranet  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+
+def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
+    CHAR_MECA,RESU_THER,RESO_INTE,
+    AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON,
+    INCREMENT,CHAM_MATER,**args):
+   """
+     Ecriture de la macro MACR_CABRI_CALC
+   """
+
+   #################################################################
+   ########## PREPARATION MACRO
+   #################################################################
+
+   from Accas import _F
+
+   ier =0
+
+   # On met certains mots-clefs dans des variables locales pour les proteger
+   affemateriau = AFFE_MATERIAU
+   mail         = MAILLAGE
+   resointe     = RESO_INTE
+
+   # On importe les definitions des commandes a utiliser dans la macro
+   # Le nom de la variable doit etre obligatoirement le nom de la commande
+   DEFI_GROUP       = self.get_cmd('DEFI_GROUP')
+   AFFE_MATERIAU    = self.get_cmd('AFFE_MATERIAU')
+   AFFE_MODELE      = self.get_cmd('AFFE_MODELE')
+   MODI_MAILLAGE    = self.get_cmd('MODI_MAILLAGE')
+   AFFE_CHAR_THER_F = self.get_cmd('AFFE_CHAR_THER_F')
+   AFFE_CHAR_THER   = self.get_cmd('AFFE_CHAR_THER')
+   AFFE_CHAR_MECA_F = self.get_cmd('AFFE_CHAR_MECA_F')
+   AFFE_CHAR_MECA   = self.get_cmd('AFFE_CHAR_MECA')
+   DEFI_FONCTION    = self.get_cmd('DEFI_FONCTION')
+   DEFI_LIST_REEL   = self.get_cmd('DEFI_LIST_REEL')
+   THER_LINEAIRE    = self.get_cmd('THER_LINEAIRE')
+   STAT_NON_LINE    = self.get_cmd('STAT_NON_LINE')
+
+   # La macro compte pour 1 dans la numerotation des commandes
+   self.set_icmd(1)
+
+   # Le concept sortant (de type evol_noli) est nomme 'resumeca' dans
+   # le contexte de la macro
+   self.DeclareOut('resumeca',self.sd)
+   self.DeclareOut('mail',MAILLAGE)
+
+   #################################################################
+   ########## PREPARATION DES MODELES
+   #################################################################
+
+   # Definition des groupes
+   mail=DEFI_GROUP(reuse =mail,MAILLAGE=mail,
+                        CREA_GROUP_NO=(
+                                  _F(GROUP_MA='M_GOU',NOM='N_M_GOU',),
+                                  _F(GROUP_MA='M_JOI',NOM='N_M_JOI',),
+                                  _F(GROUP_MA='SCBJ',NOM='N_SCBJ',),
+                                  _F(GROUP_MA='SCJB',NOM='N_SCJB',),
+                                  _F(GROUP_MA='M_L_AA',NOM='N_M_L_AA',),
+                                  _F(GROUP_MA='SCEG',NOM='N_SCEG',),
+                                  _F(GROUP_MA='SCGE',NOM='N_SCGE',),),)
+
+   # Creation du modele thermique
+   if MODELE_THER != None:
+      self.DeclareOut('modther',MODELE_THER)
+
+   modther=AFFE_MODELE(MAILLAGE=mail,
+                          AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
+                          'M_L_AA','M_INT','M_L_SA','M_EXT','SCEG','SCGE',),
+                                  PHENOMENE='THERMIQUE',
+                                  MODELISATION='3D_DIAG',),
+                         );
+
+   # Creation du modele mecanique
+   if MODELE_MECA != None:
+      self.DeclareOut('modmeca',MODELE_MECA)
+
+   modmeca = AFFE_MODELE(MAILLAGE=mail,
+                          AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
+                          'M_L_AA','M_L_SA','SCEG','SCGE','M_INT','M_EXT',),
+                                  PHENOMENE='MECANIQUE',
+                                  MODELISATION='3D',),
+                         );
+
+   # Orientation des mailles
+   mail=MODI_MAILLAGE(reuse =mail,
+                 MAILLAGE=mail,
+                 ORIE_PEAU_3D=(_F(GROUP_MA=('M_INT','M_TUB',),),
+                               _F(GROUP_MA=('M_L_AA','M_JOI','M_L_SA',),),),
+                              );
+
+
+
+   # Affectation des materiaux (thermique)
+   motscles={}
+   motscles['AFFE']=[]
+   for mat in affemateriau:
+      if mat['TOUT'] == None:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
+                                    MATER = mat['MATER']))
+      else:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(TOUT='OUI',
+                                    MATER = mat['MATER']))
+
+   __cham = AFFE_MATERIAU(MAILLAGE=mail,
+                    MODELE=modther,
+                    AFFE=motscles['AFFE'],
+                   )
+
+   #################################################################
+   ########## CONDITIONS AUX LIMITES THERMIQUES
+   #################################################################
+   # Recuperation des parametres thermiques
+
+   if DEFI_CHAR_THER != None:
+      temp_ini = DEFI_CHAR_THER['TEMP_INIT']
+      if DEFI_CHAR_THER['COEF_H_FLUI']!=None:
+         coef_int = DEFI_CHAR_THER['COEF_H_FLUI']
+      else:
+         coef_int = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,0.016,
+                       7200.0,0.016,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      if DEFI_CHAR_THER['TEMP_EXT_FLUI']!=None:
+         temp_int = DEFI_CHAR_THER['TEMP_EXT_FLUI']
+      else:
+         temp_int = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
+                          600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      if DEFI_CHAR_THER['COEF_H_AIR']!=None:
+         coef_ext = DEFI_CHAR_THER['COEF_H_AIR']
+      else:
+         coef_ext = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,1e-05,7200.0,1e-05,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+
+      if DEFI_CHAR_THER['TEMP_EXT_AIR']!=None:
+         temp_ext = DEFI_CHAR_THER['TEMP_EXT_AIR']
+      else:
+         temp_ext = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,20.0,7200.0,20.0,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      if DEFI_CHAR_THER['LIST_INST']!=None:
+         transi1  = DEFI_CHAR_THER['LIST_INST']
+      else:
+         transi1  = DEFI_LIST_REEL(DEBUT=0.0,
+                     INTERVALLE=(_F(JUSQU_A=1.0,
+                                    NOMBRE=1,),
+                                 _F(JUSQU_A=11.0,
+                                    NOMBRE=10,),
+                                 _F(JUSQU_A=600.0,
+                                    NOMBRE=10,),
+                                 _F(JUSQU_A=610.0,
+                                    NOMBRE=30,),
+                                 _F(JUSQU_A=1800.0,
+                                    NOMBRE=30,),
+                                 _F(JUSQU_A=7200.0,
+                                    NOMBRE=10,),),);
+   else:
+      temp_ini = DEFI_CHAR_THER['TEMP_INIT']
+      coef_int = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,0.016,
+                       7200.0,0.016,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      temp_int = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
+                          600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      coef_ext = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,1e-05,7200.0,1e-05,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      temp_ext = DEFI_FONCTION(NOM_PARA='INST',
+                    VALE=(0.0,20.0,7200.0,20.0,),
+                    PROL_DROITE='CONSTANT',
+                    PROL_GAUCHE='CONSTANT',);
+      transi1  = DEFI_LIST_REEL(DEBUT=0.0,
+                     INTERVALLE=(_F(JUSQU_A=1.0,
+                                    NOMBRE=1,),
+                                 _F(JUSQU_A=11.0,
+                                    NOMBRE=10,),
+                                 _F(JUSQU_A=600.0,
+                                    NOMBRE=10,),
+                                 _F(JUSQU_A=610.0,
+                                    NOMBRE=30,),
+                                 _F(JUSQU_A=1800.0,
+                                    NOMBRE=30,),
+                                 _F(JUSQU_A=7200.0,
+                                    NOMBRE=10,),),);
+   # Que sauver ?
+   if CHAR_THER != None:
+      for m in CHAR_THER:
+         if m['TYPE']=="BRIDE_FLUIDE":
+            self.DeclareOut('cl_th1',m['CHARGE'])
+         if m['TYPE']=="BRIDE_AIR":
+            self.DeclareOut('cl_th2',m['CHARGE'])
+         if m['TYPE']=="ECROU_GOUJON":
+            self.DeclareOut('cl_th3',m['CHARGE'])
+         if m['TYPE']=="BRIDE_JOINT":
+            self.DeclareOut('cl_th4',m['CHARGE'])
+
+   # Echanges thermiques internes entre le fluide et la bride
+   cl_th1=AFFE_CHAR_THER_F(MODELE=modther,
+                           ECHANGE=_F(GROUP_MA = 'M_INT',
+                                      COEF_H   = coef_int,
+                                      TEMP_EXT = temp_int,),);
+
+   # Echanges thermiques externes entre bride et air ambiant
+   cl_th2=AFFE_CHAR_THER_F(MODELE=modther,
+                           ECHANGE=_F(GROUP_MA='M_EXT',
+                                   COEF_H=coef_ext,
+                                   TEMP_EXT=temp_ext,),);
+
+   # Echanges thermiques entre ecrou et goujon
+   cl_th3=AFFE_CHAR_THER(MODELE=modther,
+                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+                                        GROUP_NO_2='N_SCGE',
+                                        DDL_1='TEMP',
+                                        COEF_MULT_1=1.0,
+                                        DDL_2='TEMP',
+                                        COEF_MULT_2=-1.0,
+                                        COEF_IMPO=0.0,),);
+
+   # Echanges thermiques entre bride et joint
+   cl_th4=AFFE_CHAR_THER(MODELE=modther,
+                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCBJ',
+                                        GROUP_NO_2='N_SCJB',
+                                        DDL_1='TEMP',
+                                        COEF_MULT_1=1.0,
+                                        DDL_2='TEMP',
+                                        COEF_MULT_2=-1.0,
+                                        COEF_IMPO=0.0,),);
+
+
+
+   #################################################################
+   ########## CALCUL THERMIQUE
+   #################################################################
+   if RESU_THER != None:
+      self.DeclareOut('resuther',RESU_THER)
+
+   resuther=THER_LINEAIRE(MODELE=modther,
+                  CHAM_MATER=__cham,
+                  EXCIT=(_F(CHARGE=cl_th1,),
+                         _F(CHARGE=cl_th2,),
+                         _F(CHARGE=cl_th3,),
+                         _F(CHARGE=cl_th4,),),
+                  INCREMENT=_F(LIST_INST=transi1,),
+                  ETAT_INIT=_F(VALE=temp_ini,),
+                  TITRE='CABRI THERMIQUE &DATE &HEURE',);
+
+      # Affectation des materiaux (mécanique)
+   if CHAM_MATER != None:
+      self.DeclareOut('_chamt',CHAM_MATER)
+   motscles={}
+   motscles['AFFE']=[]
+   motscles['AFFE_VARC']=[]
+   for mat in affemateriau:
+      if mat['TOUT'] == None:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
+                                    MATER = mat['MATER'],) )
+         motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',GROUP_MA=mat['GROUP_MA'],
+                                         EVOL=resuther,NOM_CHAM='TEMP',
+                                         VALE_REF = mat['TEMP_REF'],))
+      else:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(TOUT='OUI',
+                                    MATER = mat['MATER']) )
+         motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',TOUT='OUI',
+                                         EVOL=resuther,NOM_CHAM='TEMP',
+                                         VALE_REF = mat['TEMP_REF'],))
+
+   _chamt = AFFE_MATERIAU(MAILLAGE=mail,
+                    MODELE=modther,
+                    AFFE=motscles['AFFE'],
+                    AFFE_VARC=motscles['AFFE_VARC'],
+                   )
+
+   #################################################################
+   ########## CONDITIONS AUX LIMITES MECANIQUES
+   #################################################################
+   # Recuperation des parametres mecaniques
+   if DEFI_CHAR_MECA != None:
+     if DEFI_CHAR_MECA['PRETENS']!=None:
+         f_pret = DEFI_CHAR_MECA['PRETENS']
+     else:
+         f_pret=DEFI_FONCTION(NOM_PARA='INST',
+                     VALE=(0.0,0.0,1.0,-0.02,),
+                     PROL_DROITE='CONSTANT',
+                     PROL_GAUCHE='CONSTANT',);
+     if DEFI_CHAR_MECA['PRES_REP']!=None:
+         pre_int = DEFI_CHAR_MECA['PRES_REP']
+     else:
+         pre_int = DEFI_FONCTION(NOM_PARA='INST',
+                      VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
+                      PROL_DROITE='CONSTANT',
+                      PROL_GAUCHE='CONSTANT',);
+     if DEFI_CHAR_MECA['EFFE_FOND']!=None:
+         eff_fond = DEFI_CHAR_MECA['EFFE_FOND']
+     else:
+         eff_fond=DEFI_FONCTION(NOM_PARA='INST',
+                       VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
+                       PROL_DROITE='CONSTANT',
+                       PROL_GAUCHE='CONSTANT',);
+   else:
+      f_pret=DEFI_FONCTION(NOM_PARA='INST',
+                     VALE=(0.0,0.0,1.0,-0.02,),
+                     PROL_DROITE='CONSTANT',
+                     PROL_GAUCHE='CONSTANT',);
+
+      pre_int = DEFI_FONCTION(NOM_PARA='INST',
+                      VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
+                      PROL_DROITE='CONSTANT',
+                      PROL_GAUCHE='CONSTANT',);
+
+      eff_fond=DEFI_FONCTION(NOM_PARA='INST',
+                       VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
+                       PROL_DROITE='CONSTANT',
+                       PROL_GAUCHE='CONSTANT',);
+   # Que sauver ?
+   if CHAR_MECA != None:
+      for m in CHAR_MECA:
+         if m['TYPE']=="BLOC_BAS_GOUJ":
+            self.DeclareOut('cl_me1',m['CHARGE'])
+         if m['TYPE']=="BLOC_BAS_JOINT":
+            self.DeclareOut('cl_me2',m['CHARGE'])
+         if m['TYPE']=="BLOC_LAT_ALES":
+            self.DeclareOut('cl_me3',m['CHARGE'])
+         if m['TYPE']=="BLOC_LAT_NALES":
+            self.DeclareOut('cl_me4',m['CHARGE'])
+         if m['TYPE']=="PLAN_TUBE":
+            self.DeclareOut('cl_me5',m['CHARGE'])
+         if m['TYPE']=="PRES_FLU":
+            self.DeclareOut('cl_me6',m['CHARGE'])
+         if m['TYPE']=="EFFET_FOND":
+            self.DeclareOut('cl_me7',m['CHARGE'])
+         if m['TYPE']=="CONT_JOINT":
+            self.DeclareOut('cl_me8',m['CHARGE'])
+         if m['TYPE']=="SERR_ECROU_1":
+            self.DeclareOut('cl_me10',m['CHARGE'])
+         if m['TYPE']=="SERR_ECROU_2":
+            self.DeclareOut('cl_me11',m['CHARGE'])
+
+
+   # Blocage bas du goujon
+   cl_me1=AFFE_CHAR_MECA(MODELE=modmeca,
+                      DDL_IMPO=_F(GROUP_NO='N_M_GOU',
+                                  DZ=0.0,),
+                      INFO=2,);
+   # Blocage bas du joint
+   cl_me2=AFFE_CHAR_MECA(MODELE=modmeca,
+                      DDL_IMPO=_F(GROUP_NO='N_M_JOI',
+                                  DZ=0.0,),
+                      INFO=2,);
+
+   # Blocage lateral, face laterale avec alesage
+   cl_me3=AFFE_CHAR_MECA(MODELE=modmeca,
+                      DDL_IMPO=_F(GROUP_NO='N_M_L_AA',
+                                  DY=0.0,),
+                      INFO=2,);
+
+   # Face laterale sans alesage
+   cl_me4=AFFE_CHAR_MECA(MODELE=modmeca,
+                      FACE_IMPO=_F(GROUP_MA='M_L_SA',
+                                   DNOR=0.0,),
+                      INFO=2,);
+
+   # Condition de planeite de la face de coupe du tube
+   cl_me5=AFFE_CHAR_MECA(MODELE=modmeca,
+                      LIAISON_UNIF=_F(GROUP_MA='M_TUB',
+                                      DDL='DZ',),
+                      INFO=2,);
+   # Pression due au fluide
+   cl_me6=AFFE_CHAR_MECA_F(MODELE=modmeca,
+                           PRES_REP=_F(GROUP_MA='M_INT',
+                                     PRES=pre_int,),
+                           INFO=2,);
+
+   # Effet de fond
+   cl_me7=AFFE_CHAR_MECA_F(MODELE=modmeca,
+                           PRES_REP=_F(GROUP_MA='M_TUB',
+                                     PRES=eff_fond,),
+                           INFO=2,);
+
+   # Contact zone de joint
+   cl_me8=AFFE_CHAR_MECA(MODELE=modmeca,
+                        CONTACT=_F(GROUP_MA_MAIT='SCBJ',
+                                   GROUP_MA_ESCL='SCJB',),
+                        INFO=2,);
+
+   # Serrage ecrou/goujon (pre-tensionnement)
+   cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca,
+                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+                                          GROUP_NO_2='N_SCGE',
+                                          DDL_1='DZ',
+                                          COEF_MULT_1=1.0,
+                                          DDL_2='DZ',
+                                          COEF_MULT_2=-1.0,
+                                          COEF_IMPO=f_pret,),
+                      INFO=2,);
+
+   cl_me11=AFFE_CHAR_MECA(MODELE=modmeca,
+                       LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+                                        GROUP_NO_2='N_SCGE',
+                                        DDL_1='DX',
+                                        COEF_MULT_1=1.0,
+                                        DDL_2='DX',
+                                        COEF_MULT_2=-1.0,
+                                        COEF_IMPO=0.0,),
+                      INFO=2,);
+
+
+   #################################################################
+   ########## CALCUL MECANIQUE
+   #################################################################
+   # Options de convergence
+   solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+
+   # Elimination des valeurs "None"
+   for i in solveur.keys():
+      if solveur[i]==None : del solveur[i]
+
+
+   transi2 = DEFI_LIST_REEL(DEBUT=0.0,
+                     INTERVALLE=(_F(JUSQU_A=1.0,
+                                    NOMBRE=2,),
+                                 _F(JUSQU_A=11.0,
+                                    NOMBRE=20,),
+                                 _F(JUSQU_A=600.0,
+                                    NOMBRE=20,),
+                                 _F(JUSQU_A=610.0,
+                                    NOMBRE=20,),
+                                 _F(JUSQU_A=1800.0,
+                                    NOMBRE=20,),
+                                 _F(JUSQU_A=7200.0,
+                                    NOMBRE=20,),),);
+
+   # Options d'incrementation
+   if INCREMENT != None:
+      if INCREMENT['LIST_INST'] != None:
+         listinst = INCREMENT['LIST_INST']
+      else:
+         listinst = transi2
+
+      increment=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
+
+      # Elimination des valeurs "None"
+      for i in increment.keys():
+         if increment[i]==None : del increment[i]
+
+      increment['LIST_INST'] = listinst
+
+   else:
+      listinst  = transi2
+      increment =_F(
+               LIST_INST       = listinst,
+               ),
+
+   # Options de Newton
+   newton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
+   # Elimination des valeurs "None"
+   for i in newton.keys():
+      if newton[i]==None : del newton[i]
+
+   # Options de convergence
+   convergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
+   # Elimination des valeurs "None"
+   for i in convergence.keys():
+      if convergence[i]==None : del convergence[i]
+
+   # Options de comportement
+   # Type incremental (=1) ou elastique (=0)
+   comp_incr = 0
+   if RELATION:
+      relation=RELATION
+      if relation == 'VMIS_ISOT_TRAC':
+         comp_incr = 1
+      else:
+         comp_incr = 0
+   else:
+      relation = 'ELAS'
+      comp_incr = 0
+
+
+   # Parametres du calcul
+   if comp_incr == 1:
+      resumeca=STAT_NON_LINE(MODELE=modmeca,
+                  CHAM_MATER=_chamt,
+                  EXCIT=(_F(CHARGE=cl_me1,),
+                         _F(CHARGE=cl_me2,),
+                         _F(CHARGE=cl_me3,),
+                         _F(CHARGE=cl_me4,),
+                         _F(CHARGE=cl_me5,),
+                         _F(CHARGE=cl_me6,),
+                         _F(CHARGE=cl_me7,),
+                         _F(CHARGE=cl_me8,),
+                         _F(CHARGE=cl_me10,),
+                         _F(CHARGE=cl_me11,),
+                  ),
+                  SOLVEUR        = solveur,
+                  COMP_INCR      =_F(RELATION=relation,RESO_INTE=resointe),
+                  NEWTON         = newton,
+                  INCREMENT      = increment,
+                  CONVERGENCE    = convergence,
+                  TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
+   else:
+      resumeca=STAT_NON_LINE(MODELE=modmeca,
+                  CHAM_MATER=_chamt,
+                  EXCIT=(_F(CHARGE=cl_me1,),
+                         _F(CHARGE=cl_me2,),
+                         _F(CHARGE=cl_me3,),
+                         _F(CHARGE=cl_me4,),
+                         _F(CHARGE=cl_me5,),
+                         _F(CHARGE=cl_me6,),
+                         _F(CHARGE=cl_me7,),
+                         _F(CHARGE=cl_me8,),
+                         _F(CHARGE=cl_me10,),
+                         _F(CHARGE=cl_me11,),
+                  ),
+                  SOLVEUR        = solveur,
+                  COMP_ELAS      =_F(RELATION=relation,RESO_INTE=resointe),
+                  NEWTON         = newton,
+                  INCREMENT      = increment,
+                  CONVERGENCE    = convergence,
+                  TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
+
+   return ier
diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_cata.py
new file mode 100644 (file)
index 0000000..6af1e04
--- /dev/null
@@ -0,0 +1,92 @@
+#@ MODIF macr_cabri_mail_cata Intranet  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+from Intranet.macr_cabri_mail_ops import macr_cabri_mail_ops
+from Cata.cata import *
+
+MACR_CABRI_MAIL=MACRO(nom="MACR_CABRI_MAIL",
+                      op=macr_cabri_mail_ops,
+                      sd_prod=maillage_sdaster,
+                      fr="maillage d'une jonction boulonnée de tuyauterie",
+                      reentrant='n',
+                      UIinfo={"groupes":("Outils métier",)},
+                      EXEC_MAILLAGE = FACT(statut='o',
+                        LOGICIEL      = SIMP(statut = 'o',typ='TXM',into=("GIBI2000",),),
+                        UNITE_DATG    = SIMP(statut = 'f',typ='I',defaut=70,),
+                        UNITE_MGIB    = SIMP(statut = 'f',typ='I',defaut=19,),
+                        NIVE_GIBI     = SIMP(statut = 'f',typ='I',defaut=10,
+                                          into = (3,4,5,6,7,8,9,10,11),
+                                            ),
+                                          ),
+                      RAFF_MAILLAGE   = FACT(statut = 'd',
+                        NB_RADIAL    = SIMP(statut = 'f',typ='I',defaut=2,),
+                        NB_CIRCONF   = SIMP(statut = 'f',typ='I',defaut=3,),
+                        NB_VERTICAL  = SIMP(statut = 'f',typ='I',defaut=6,),
+                        NB_ALESAGE   = SIMP(statut = 'f',typ='I',defaut=5,),
+                                          ),
+                      VERI_MAIL     = FACT(statut='d',
+                        VERIF         = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),  
+                        APLAT         = SIMP(statut='f',typ='R',defaut= 1.0E-3 ),  
+                                          ),                                          
+                      GEOM_BRID     = FACT(statut = 'o',
+                        NORME         = SIMP(statut = 'o',typ='TXM',into=("OUI","NON"),),
+                        b_bride_iso   = BLOC(condition = "NORME == 'OUI'",
+                          TYPE           = SIMP(statut='o',typ='TXM',
+                                                into=('A','AA','B','B1','C','D','D1','E','F',
+                                                      'FF','G','GG','H','H1','I','J','J1',
+                                                      'K','L','L1','M','N','O','P','S','T','W'), 
+                                               ),
+                                            ),
+                        b_bride_niso  = BLOC(condition = "NORME == 'NON'",
+                          TUBU_D_EXT     = SIMP(statut='o',typ='R',),
+                          TUBU_H         = SIMP(statut='o',typ='R',),
+                          BRID_D_EXT     = SIMP(statut='o',typ='R',),
+                          BRID_D_INT     = SIMP(statut='o',typ='R',),
+                          BRID_H         = SIMP(statut='o',typ='R',),
+                          BRID_D_CONGE   = SIMP(statut='o',typ='R',),
+                          BRID_R_CONGE   = SIMP(statut='o',typ='R',),
+                          BRID_D_EPAUL   = SIMP(statut='o',typ='R',),
+                          BRID_H_EPAUL   = SIMP(statut='o',typ='R',),
+                          BRID_D_ALESAG  = SIMP(statut='o',typ='R',),
+                          BRID_P_ALESAG  = SIMP(statut='o',typ='R',),
+                          BRID_H_ALESAG  = SIMP(statut='o',typ='R',),
+                          GOUJ_N_GOUJON  = SIMP(statut='o',typ='I',),
+                          GOUJ_D_GOUJON  = SIMP(statut='o',typ='R',),
+                          GOUJ_E_FILET   = SIMP(statut='o',typ='R',),
+                          GOUJ_D_RONDEL  = SIMP(statut='o',typ='R',),
+                          GOUJ_E_RONDEL  = SIMP(statut='o',typ='R',),
+                          GOUJ_D_ECROU   = SIMP(statut='o',typ='R',),
+                          GOUJ_E_ECROU   = SIMP(statut='o',typ='R',),
+                          ETAN_E_JOINT   = SIMP(statut='o',typ='R',),
+                                            ),
+                                         ),
+                      IMPRESSION    = FACT(statut='d',
+                        UNITE          = SIMP(statut='f',typ='I'),
+                        FORMAT         = SIMP(statut='f',typ='TXM',defaut="ASTER",    
+                                              into=("ASTER","CASTEM","IDEAS"),
+                                             ),
+                        b_impr_castem = BLOC(condition = "FORMAT == 'CASTEM'",
+                          NIVE_GIBI      = SIMP(statut='f',typ='I',defaut=10,into=(3,10),),
+                                            ),
+                        b_impr_ideas  = BLOC(condition = "FORMAT == 'IDEAS'",
+                          VERSION        = SIMP(statut='f',typ='I',defaut=5,into=(4,5),),
+                                            ),
+                                          ),
+                     );
diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_dat.py
new file mode 100644 (file)
index 0000000..751f416
--- /dev/null
@@ -0,0 +1,628 @@
+#@ MODIF macr_cabri_mail_dat Intranet  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# Données pour les brides standards
+
+
+
+# Pour ajouter une bride x:
+#  Définir un dico_bride_x comme ci-dessous puis ajoutez-le à dico_bride_std
+
+# dictionnaire pour la description des variables
+dico_var_geo = {'nbgouj':'Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)',
+            'dint':'Diamètre intérieur de la bride (BRID_D_INT)',
+            'dex1':'Diamétre extérieur de la conduite (TUBU_D_EXT)',
+            'dex2':'Position (diamètre) du congé de la bride (BRID_D_CONGE)',
+            'dex3':'Diamètre de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_D_EPAUL)',
+            'dtrou':'Position des alésages de la bride permettant l''introduction des goujons (BRID_P_ALESAG)',
+            'dext':'Diamètre extérieur de la bride (BRID_D_EXT)',
+            'dt':'Diamètre des alésages de la bride permettant l''introduction des goujons (BRID_D_ALESAG)',
+            'drd':'Diamètre de la rondelle (GOUJ_D_RONDEL)',
+            'dg':'Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)',
+            'dec':'Diamètre de l''écrou (GOUJ_D_ECROU)',
+            'rcong':'Rayon du congé de la bride (BRID_R_CONGE)',
+            'he':'Epaisseur de la rondelle (GOUJ_E_RONDEL)',
+            'e':'Epaisseur de l''écrou (GOUJ_E_ECROU)',
+            'hc1':'Hauteur de la bride (BRID_H)',
+            'hcg1':'Hauteur de conduite (TUBU_H)',
+            'hb':'Hauteur de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_H_EPAUL)',
+            'htrou':'Hauteur des alésages de la bride permettant l''introduction des goujons (BRID_H_ALESAG)',
+            'pf':'Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)',
+            'j':'Epaisseur du joint au niveau de l''interface d''étanchéité (ETAN_E_JOINT)'}
+
+dico_var_msh = {'nrad':'Nombre d''éléments radiaux (NBR_RAD)',
+            'ncir':'Nombre d''éléments circonférentiels (NBR_CIR)',
+            'nver':'Nombre d''éléments verticaux (NBR_VER)',
+            'nsect':'Nombre d''éléments de l''alésage (NBR_ALE)',
+            'temps':'Temps d''analyse'}
+
+# dictionnaires des brides standards
+dico_bride_A = {'nbgouj': 4,
+                'dint':   15.76,
+                'dex1':   21.3,
+                'dex2':   38.,
+                'dex3':   48.,
+                'dtrou':  67.,
+                'dext':   95.,
+                'dt':     14.,
+                'drd':    25.,
+                'dg':     12.,
+                'dec':    18.,
+                'rcong':  3.,
+                'he':     12.,
+                'e':      2.5,
+                'hc1':    46.5,
+                'hcg1':   20,
+                'hb':     1.5,
+                'htrou':  20.,
+                'pf':     1.5,
+                'j':      2}
+
+dico_bride_AA = {'nbgouj': 32,
+                'dint':   336.5,
+                'dex1':   355.6,
+                'dex2':   395.,
+                'dex3':   415.,
+                'dtrou':  460.,
+                'dext':   515.,
+                'dt':     22.,
+                'drd':    36.,
+                'dg':     20.,
+                'dec':    30.,
+                'rcong':  5.,
+                'he':     20.,
+                'e':      3.,
+                'hc1':    115.,
+                'hcg1':   115./2.,
+                'hb':     3.,
+                'htrou':  47.,
+                'pf':     2.2,
+                'j':      2}
+
+dico_bride_B = {'nbgouj': 4,
+                'dint':   26.64,
+                'dex1':   33.4,
+                'dex2':   53.,
+                'dex3':   63.,
+                'dtrou':  88.,
+                'dext':   123.,
+                'dt':     16.,
+                'drd':    27.,
+                'dg':     14.,
+                'dec':    21.,
+                'rcong':  4.,
+                'he':     14.,
+                'e':      2.5,
+                'hc1':    59.,
+                'hcg1':   59./2.,
+                'hb':     1.5,
+                'htrou':  27.5,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_B1 = {'nbgouj': 4,
+                'dint':   24.3,
+                'dex1':   33.4,
+                'dex2':   53.,
+                'dex3':   63.,
+                'dtrou':  88.,
+                'dext':   123.,
+                'dt':     16.,
+                'drd':    27.,
+                'dg':     14.,
+                'dec':    21.,
+                'rcong':  4.,
+                'he':     14.,
+                'e':      2.5,
+                'hc1':    59.,
+                'hcg1':   59./2.,
+                'hb':     1.5,
+                'htrou':  27.5,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_C = {'nbgouj': 8,
+                'dint':   52.48,
+                'dex1':   60.3,
+                'dex2':   84.,
+                'dex3':   100.,
+                'dtrou':  127.,
+                'dext':   165.,
+                'dt':     18.,
+                'drd':    30,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  4.,
+                'he':     16.,
+                'e':      3,
+                'hc1':    70.,
+                'hcg1':   70./2.,
+                'hb':     1.5,
+                'htrou':  21.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_D = {'nbgouj': 8,
+                'dint':   42.9,
+                'dex1':   60.3,
+                'dex2':   84.,
+                'dex3':   100.,
+                'dtrou':  127.,
+                'dext':   165.,
+                'dt':     18.,
+                'drd':    30,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    87.6,
+                'hcg1':   87.6/2.,
+                'hb':     1.5,
+                'htrou':  38.5,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_D1 = {'nbgouj': 8,
+                'dint':   49.22,
+                'dex1':   60.3,
+                'dex2':   84.,
+                'dex3':   100.,
+                'dtrou':  127.,
+                'dext':   165.,
+                'dt':     18.,
+                'drd':    30,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    87.6,
+                'hcg1':   87.6/2.,
+                'hb':     1.5,
+                'htrou':  38.5,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_E = {'nbgouj': 8,
+                'dint':   83.1,
+                'dex1':   88.9,
+                'dex2':   117.5,
+                'dex3':   135.,
+                'dtrou':  165.,
+                'dext':   209.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    80.,
+                'hcg1':   80./2.,
+                'hb':     2.,
+                'htrou':  27.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_F = {'nbgouj': 8,
+                'dint':   73.66,
+                'dex1':   88.9,
+                'dex2':   117.5,
+                'dex3':   135.,
+                'dtrou':  165.,
+                'dext':   209.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    89.,
+                'hcg1':   89./2.,
+                'hb':     2.,
+                'htrou':  36.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_FF = {'nbgouj': 32,
+                'dint':   396.99,
+                'dex1':   406.4,
+                'dex2':   440.,
+                'dex3':   455.,
+                'dtrou':  485.,
+                'dext':   535.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    99.,
+                'hcg1':   99./2.,
+                'hb':     3.,
+                'htrou':  40.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_G = {'nbgouj': 12,
+                'dint':   66.7,
+                'dex1':   88.9,
+                'dex2':   117.5,
+                'dex3':   135.,
+                'dtrou':  165.,
+                'dext':   209.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    98.,
+                'hcg1':   98./2.,
+                'hb':     2.,
+                'htrou':  45.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_GG = {'nbgouj': 36,
+                'dint':   381.,
+                'dex1':   406.4,
+                'dex2':   445.,
+                'dex3':   460.,
+                'dtrou':  495.,
+                'dext':   545.,
+                'dt':     22.,
+                'drd':    36,
+                'dg':     20.,
+                'dec':    30.,
+                'rcong':  5.,
+                'he':     20.,
+                'e':      3.,
+                'hc1':    129.,
+                'hcg1':   129./2.,
+                'hb':     3.,
+                'htrou':  63.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_H = {'nbgouj': 12,
+                'dint':   108.2,
+                'dex1':   114.3,
+                'dex2':   146.,
+                'dex3':   157.,
+                'dtrou':  190.,
+                'dext':   225.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    89.,
+                'hcg1':   89./2.,
+                'hb':     2.,
+                'htrou':  33.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_H1 = {'nbgouj': 12,
+                'dint':   102.6,
+                'dex1':   114.3,
+                'dex2':   146.,
+                'dex3':   157.,
+                'dtrou':  190.,
+                'dext':   225.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    89.,
+                'hcg1':   89./2.,
+                'hb':     2.,
+                'htrou':  33.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_I = {'nbgouj': 18,
+                'dint':   92.1,
+                'dex1':   114.3,
+                'dex2':   146.,
+                'dex3':   160.,
+                'dtrou':  200.,
+                'dext':   255.,
+                'dt':     20.,
+                'drd':    32.,
+                'dg':     18.,
+                'dec':    27.,
+                'rcong':  5.,
+                'he':     18.,
+                'e':      3.,
+                'hc1':    99.,
+                'hcg1':   99./2.,
+                'hb':     2.,
+                'htrou':  43.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_J = {'nbgouj': 18,
+                'dint':   87.34,
+                'dex1':   114.3,
+                'dex2':   146.,
+                'dex3':   160.,
+                'dtrou':  200.,
+                'dext':   255.,
+                'dt':     20.,
+                'drd':    32.,
+                'dg':     18.,
+                'dec':    27.,
+                'rcong':  5.,
+                'he':     18.,
+                'e':      3.,
+                'hc1':    111.,
+                'hcg1':   111./2.,
+                'hb':     2.,
+                'htrou':  55.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_J1 = {'nbgouj': 18,
+                'dint':   87.3,
+                'dex1':   114.3,
+                'dex2':   146.,
+                'dex3':   160.,
+                'dtrou':  200.,
+                'dext':   255.,
+                'dt':     22.,
+                'drd':    36.,
+                'dg':     20.,
+                'dec':    30.,
+                'rcong':  5.,
+                'he':     20.,
+                'e':      3.,
+                'hc1':    111.,
+                'hcg1':   111./2.,
+                'hb':     2.,
+                'htrou':  55.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_K = {'nbgouj': 8,
+                'dint':   161.5,
+                'dex1':   168.3,
+                'dex2':   192.,
+                'dex3':   210.,
+                'dtrou':  235.,
+                'dext':   280.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    84.,
+                'hcg1':   84./2.,
+                'hb':     2.,
+                'htrou':  28.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_L = {'nbgouj': 16,
+                'dint':   154.8,
+                'dex1':   168.3,
+                'dex2':   206.,
+                'dex3':   220.,
+                'dtrou':  255.,
+                'dext':   317.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    96.,
+                'hcg1':   96./2.,
+                'hb':     2.,
+                'htrou':  40.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_L1 = {'nbgouj': 16,
+                'dint':   154.8,
+                'dex1':   168.3,
+                'dex2':   206.,
+                'dex3':   220.,
+                'dtrou':  255.,
+                'dext':   317.,
+                'dt':     20.,
+                'drd':    32.,
+                'dg':     18.,
+                'dec':    27.,
+                'rcong':  5.,
+                'he':     18.,
+                'e':      3.,
+                'hc1':    96.,
+                'hcg1':   96./2.,
+                'hb':     2.,
+                'htrou':  40.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_M = {'nbgouj': 16,
+                'dint':   139.7,
+                'dex1':   168.3,
+                'dex2':   206.,
+                'dex3':   220.,
+                'dtrou':  250.,
+                'dext':   290.,
+                'dt':     24.,
+                'drd':    40.,
+                'dg':     22.,
+                'dec':    32.,
+                'rcong':  5.,
+                'he':     22.,
+                'e':      3.,
+                'hc1':    135.,
+                'hcg1':   135./2.,
+                'hb':     3.,
+                'htrou':  62.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_N = {'nbgouj': 12,
+                'dint':   131.9,
+                'dex1':   168.3,
+                'dex2':   220.,
+                'dex3':   240.,
+                'dtrou':  290.,
+                'dext':   365.,
+                'dt':     30.,
+                'drd':    48.,
+                'dg':     27.,
+                'dec':    41.,
+                'rcong':  5.,
+                'he':     27.,
+                'e':      4.,
+                'hc1':    148.,
+                'hcg1':   148./2.,
+                'hb':     3.,
+                'htrou':  75.,
+                'pf':     2.6,
+                'j':      2}
+dico_bride_O = {'nbgouj': 12,
+                'dint':   211.58,
+                'dex1':   219.1,
+                'dex2':   248.,
+                'dex3':   260.,
+                'dtrou':  292.,
+                'dext':   335.,
+                'dt':     20.,
+                'drd':    32.,
+                'dg':     18.,
+                'dec':    27.,
+                'rcong':  5.,
+                'he':     18.,
+                'e':      3.,
+                'hc1':    87.,
+                'hcg1':   87./2.,
+                'hb':     3.,
+                'htrou':  30.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_P = {'nbgouj': 16,
+                'dint':   202.74,
+                'dex1':   219.1,
+                'dex2':   248.,
+                'dex3':   260.,
+                'dtrou':  292.,
+                'dext':   335.,
+                'dt':     20.,
+                'drd':    32,
+                'dg':     18.,
+                'dec':    27.,
+                'rcong':  5.,
+                'he':     18.,
+                'e':      3.,
+                'hc1':    99.,
+                'hcg1':   99./2.,
+                'hb':     3.,
+                'htrou':  42.,
+                'pf':     2.2,
+                'j':      2}
+dico_bride_S = {'nbgouj': 16,
+                'dint':   264.62,
+                'dex1':   273.,
+                'dex2':   305.,
+                'dex3':   315.,
+                'dtrou':  350.,
+                'dext':   390.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    89.,
+                'hcg1':   89./2.,
+                'hb':     3.,
+                'htrou':  32.,
+                'pf':     1.7,
+                'j':      2}
+dico_bride_T = {'nbgouj': 16,
+                'dint':   254.56,
+                'dex1':   273.,
+                'dex2':   320.,
+                'dex3':   340.,
+                'dtrou':  385.,
+                'dext':   444.,
+                'dt':     27.,
+                'drd':    45.,
+                'dg':     24.,
+                'dec':    36.,
+                'rcong':  5.,
+                'he':     24.,
+                'e':      4.,
+                'hc1':    128.,
+                'hcg1':   128./2.,
+                'hb':     3.,
+                'htrou':  55.,
+                'pf':     2.6,
+                'j':      2}
+dico_bride_W = {'nbgouj': 28,
+                'dint':   314.76,
+                'dex1':   323.9,
+                'dex2':   360.,
+                'dex3':   385.,
+                'dtrou':  415.,
+                'dext':   460.,
+                'dt':     18.,
+                'drd':    30.,
+                'dg':     16.,
+                'dec':    24.,
+                'rcong':  5.,
+                'he':     16.,
+                'e':      3.,
+                'hc1':    96.,
+                'hcg1':   96./2.,
+                'hb':     3.,
+                'htrou':  37.,
+                'pf':     1.7,
+                'j':      2}
+
+
+# dictionnaire pour faire le lien entre l'option de bride et les valeurs normalisées
+dico_bride_std = {'AA':dico_bride_AA,
+                  'A':dico_bride_A,
+                  'B':dico_bride_B,
+                  'B1':dico_bride_B1,
+                  'C':dico_bride_C,
+                  'D':dico_bride_D,
+                  'D1':dico_bride_D1,
+                  'E':dico_bride_E,
+                  'F':dico_bride_F,
+                  'FF':dico_bride_FF,
+                  'G':dico_bride_G,
+                  'GG':dico_bride_GG,
+                  'H':dico_bride_H,
+                  'H1':dico_bride_H1,
+                  'I':dico_bride_I,
+                  'J':dico_bride_J,
+                  'J1':dico_bride_J1,
+                  'K':dico_bride_K,
+                  'L':dico_bride_L,
+                  'L1':dico_bride_L1,
+                  'M':dico_bride_M,
+                  'N':dico_bride_N,
+                  'O':dico_bride_O,
+                  'P':dico_bride_P,
+                  'S':dico_bride_S,
+                  'T':dico_bride_T,
+                  'W':dico_bride_W}
diff --git a/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py b/Aster/Cata/cataSTA9/Intranet/macr_cabri_mail_ops.py
new file mode 100644 (file)
index 0000000..f122a99
--- /dev/null
@@ -0,0 +1,459 @@
+#@ MODIF macr_cabri_mail_ops Intranet  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+import os
+
+def macr_cabri_mail_ops(self,EXEC_MAILLAGE,RAFF_MAILLAGE,VERI_MAIL,GEOM_BRID,
+                        IMPRESSION,**args):
+  """
+     Ecriture de la macro MACR_CABRI_MAIL
+  """
+  import types
+  from Accas import _F
+
+  ier=0
+
+  # On importe les definitions des commandes a utiliser dans la macro
+  # Le nom de la variable doit etre obligatoirement le nom de la commande
+  EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL')
+  LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE')
+  PRE_GIBI      = self.get_cmd('PRE_GIBI')
+  IMPR_RESU     = self.get_cmd('IMPR_RESU')
+
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+
+  # Le concept sortant (de type mail) est nommé 'nomres' dans 
+  # le contexte de la macro
+  
+  self.DeclareOut('nomres',self.sd)
+  
+  # Chemin de Gibi
+  import aster
+  loc_gibi=aster.repout()
+  gibi2000=loc_gibi+'gibi'
+  
+  # Unité pour le fichier maillage produit (format GIBI)
+  unite_mgib = EXEC_MAILLAGE['UNITE_MGIB']
+  # Unité pour le fichier de commandes GIBI
+  unite_datg = EXEC_MAILLAGE['UNITE_DATG']
+  # Niveau gibi
+  niveau_gibi = EXEC_MAILLAGE['NIVE_GIBI']
+  # Verif mail
+  ver_apla = VERI_MAIL['APLAT']
+  ver_veri = VERI_MAIL['VERIF']
+  
+  # Impression
+  if IMPRESSION['UNITE']!=None:
+   imp_unit = IMPRESSION['UNITE']
+   imp_unitF = 1
+  else:
+   imp_unitF = 0  
+  if IMPRESSION['FORMAT']!=None:
+   imp_form = IMPRESSION['FORMAT']
+   imp_formF = 1
+  else:
+   imp_formF = 0 
+#  if IMPRESSION['FICHIER']!=None:
+#   imp_fich = IMPRESSION['FICHIER']
+#   imp_fichF = 1
+#  else:
+#   imp_fichF = 0 
+  # Maillage  
+  nrad = RAFF_MAILLAGE['NB_RADIAL']
+  ncir = RAFF_MAILLAGE['NB_CIRCONF']
+  nver = RAFF_MAILLAGE['NB_VERTICAL']
+  nsect = RAFF_MAILLAGE['NB_ALESAGE']
+  temps = 5.
+    
+  maillage = {'nrad': nrad,
+              'ncir': ncir,
+              'nver': nver,
+              'nsect': nsect,
+              'temps' : temps,}
+
+  # Création du fichier datg
+  
+  if GEOM_BRID['NORME'] == 'OUI':
+    # Bride standard
+    type_bride = GEOM_BRID['TYPE']
+    ### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+    write_file_dgib_STD(unite_mgib,unite_datg,maillage,type_bride) 
+  else:
+    # Bride quelconque
+    geo_bride_qqe = {'nbgouj': GEOM_BRID['GOUJ_N_GOUJON'],
+                'dint':   GEOM_BRID['BRID_D_INT'],
+                'dex1':   GEOM_BRID['TUBU_D_EXT'],
+                'dex2':   GEOM_BRID['BRID_D_CONGE'],
+                'dex3':   GEOM_BRID['BRID_D_EPAUL'],
+                'dtrou':  GEOM_BRID['BRID_P_ALESAG'],
+                'dext':   GEOM_BRID['BRID_D_EXT'],
+                'dt':     GEOM_BRID['BRID_D_ALESAG'],
+                'drd':    GEOM_BRID['GOUJ_D_RONDEL'],
+                'dg':     GEOM_BRID['GOUJ_D_GOUJON'],
+                'dec':    GEOM_BRID['GOUJ_D_ECROU'],
+                'rcong':  GEOM_BRID['BRID_R_CONGE'],
+                'he':     GEOM_BRID['GOUJ_E_ECROU'],
+                'e':      GEOM_BRID['GOUJ_E_RONDEL'],
+                'hc1':    GEOM_BRID['BRID_H'],
+                'hcg1':   GEOM_BRID['TUBU_H'],
+                'hb':     GEOM_BRID['BRID_H_EPAUL'],
+                'htrou':  GEOM_BRID['BRID_H_ALESAG'],
+                'pf':     GEOM_BRID['GOUJ_E_FILET'],
+                'j':      GEOM_BRID['ETAN_E_JOINT']}  
+    ### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+    write_file_dgib_QQE(unite_mgib,unite_datg,maillage,geo_bride_qqe)  
+
+  fichier_datg = 'fort.'+str(unite_datg)
+  fichier_mgib = 'fort.'+str(unite_mgib)
+  
+  # Lancement de GIBI
+  EXEC_LOGICIEL(
+               LOGICIEL=gibi2000,
+               ARGUMENT=(fichier_datg, fichier_mgib),
+               )
+  # Lecture du maillage GIBI dans ASTER
+  PRE_GIBI(
+          UNITE_GIBI = unite_mgib,
+          )
+  
+  nomres = LIRE_MAILLAGE(VERI_MAIL=_F(APLAT = ver_apla,
+                                      VERIF = ver_veri ),)
+                                      
+#  if (imp_fichF == 1):  
+#   print imp_fich
+  if (imp_formF == 1):  
+   print imp_form
+  if (imp_unitF == 1):  
+   print imp_unit    
+  # Impression du fichier maillage
+  if (imp_formF == 1):
+    if (imp_form == 'CASTEM'):
+      imp_ngib = IMPRESSION['NIVE_GIBI']
+      IMPR_RESU( RESU = _F(MAILLAGE=nomres, ),
+                 FORMAT = 'CASTEM', NIVE_GIBI = imp_ngib )
+    if (imp_form == 'IDEAS'):
+      imp_nver = IMPRESSION['VERSION']
+      IMPR_RESU(RESU = _F(MAILLAGE=nomres,),
+                FORMAT = 'IDEAS', VERSION = imp_nver )
+                                
+  return ier
+
+
+##############################################################################################
+# Liste des fonctions
+##############################################################################################
+
+#############
+## EXTERNES (appelables depuis l'extérieur)
+#############
+
+### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+# null = write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride)
+
+### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+# null = write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride)
+
+### Imprime tout le catalogue des brides standards disponibles dans un fichier texte
+# null = print_bride_std(nom_fichier)
+### Catalogue complet des brides standards disponibles
+# txt = bride_std()
+
+#############
+## INTERNES (réservées au travail interne)
+#############
+
+### Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
+# NomFichier(txt) = name_file_mgib(unite_mgib):
+
+### Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
+# NomFichier(txt) = name_file_datg(unite_datg):
+
+### Récupère un fichier texte DATG
+# Txt = text_datg(fichier_datg):
+
+### Génération du texte pour les variables
+# Txt = para_text(dico_var,var): 
+
+
+
+#=============================================================================================
+# Importation des modules Python
+#=============================================================================================
+
+from Intranet.macr_cabri_mail_dat import dico_var_geo,dico_var_msh,dico_bride_std
+
+#=============================================================================================
+# Fonctions principales
+#=============================================================================================
+# Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+def write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride):
+
+    # Nom du fichier maillage produit par GIBI
+    nomFichierMGIB = name_file_mgib(unite_mgib)
+    # Nom du fichier de commandes pour GIBI
+    nomFichierDATG = name_file_datg(unite_datg)
+        
+    # Ouverture du fichier d'entrée de commandes
+    fdgib=open(nomFichierDATG,'w')
+    
+    # En-tete
+    text =        "**************************************************************\n"
+    text = text + "* Fichier GIBI pour le maillage d'une bride \n"
+    text = text + "**************************************************************\n"
+    text = text + "\n"
+    text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
+    text = text + "* Ne pas modifier\n"
+    text = text + "\n"    
+    text = text + "**************************************************************\n"
+    text = text + "* Type bride: Bride standard \n"
+    text = text + "**************************************************************\n"
+    text = text + "titre '"+"Bride standard"+"';\n"
+    text = text + "** Type bride standard: "+geo_bride+"\n"
+   
+    text = text + "\n"
+    text = text + "nomfich = CHAINE \n"
+    if len(nomFichierMGIB)>72:
+      raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
+         'pour GIBI) :\n',nomFichierMGIB
+    elif len(nomFichierMGIB)<=69:
+      text = text + "'"+nomFichierMGIB+"';\n"
+    else:
+      text = text + "'"+nomFichierMGIB[:69]+"'\n" \
+                  + "'"+nomFichierMGIB[69:]+"';\n"
+    text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
+    text = text + "dens 1;\n"
+    text = text + "\n"
+    fdgib.write(text)
+    
+    # Procédures internes supplémentaires
+    text =        "**************************************************************\n"
+    text = text + "* Procédures supplémentaires \n"
+    text = text + "**************************************************************\n"
+    text = text + text_datg_pro()
+    fdgib.write(text)
+    
+    # Début de procédure de création du maillage
+    text =        "**************************************************************\n"
+    text = text + "**************************************************************\n"
+    text = text + "********* Début de procédure de création du maillage *********\n"
+    text = text + "**************************************************************\n"
+    text = text + "**************************************************************\n"
+    text = text + "\n debproc constru;\n"
+    fdgib.write(text)
+
+    # Paramètres géométriques
+    car_bride = dico_bride_std[geo_bride]
+    text =        "**************************************************************\n"
+    text = text + "* Paramètres géométriques \n"
+    text = text + "**************************************************************\n"
+    text = text + para_text(dico_var_geo,car_bride)
+    fdgib.write(text) 
+
+    # Paramètres du maillage
+    text =        "**************************************************************\n"
+    text = text + "* Paramètres physiques \n"
+    text = text + "**************************************************************\n"
+    text = text + para_text(dico_var_msh,msh_bride)
+    fdgib.write(text) 
+
+    # Algorithme du maillage
+    text =        "**************************************************************\n"
+    text = text + "* Algorithme de maillage \n"
+    text = text + "**************************************************************\n"
+    text = text + text_datg_std()
+    fdgib.write(text)
+    
+    # Fermeture du fichier maillage
+    fdgib.close()
+    
+    
+# Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+def write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride):
+        
+    # Nom du fichier maillage produit par GIBI
+    nomFichierMGIB = name_file_mgib(unite_mgib)
+    # Nom du fichier de commandes pour GIBI
+    nomFichierDATG = name_file_datg(unite_datg)
+      
+    # Ouverture du fichier d'entree de commandes
+    fdgib=open(nomFichierDATG,'w')
+    
+    # En-tete
+    text =        "**************************************************************\n"
+    text = text + "* Fichier GIBI pour le maillage d'une bride \n"
+    text = text + "**************************************************************\n"
+    text = text + "\n"
+    text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
+    text = text + "* Ne pas modifier\n"
+    text = text + "\n"    
+    text = text + "**************************************************************\n"
+    text = text + "* Type bride: Bride quelconque\n"
+    text = text + "**************************************************************\n"
+    text = text + "titre '"+"Bride Quelconque"+"';\n"
+    text = text + "\n"
+    text = text + "nomfich = CHAINE \n"
+    if len(nomFichierMGIB)>72:
+      raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
+         'pour GIBI) :\n',nomFichierMGIB
+    elif len(nomFichierMGIB)<=69:
+      text = text + "'"+nomFichierMGIB+"';\n"
+    else:
+      text = text + "'"+nomFichierMGIB[:69]+"'\n" \
+                  + "'"+nomFichierMGIB[69:]+"';\n"
+    text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
+    text = text + "dens 1;\n"
+    text = text + "\n"
+    fdgib.write(text)
+    
+    # Procédures internes supplémentaires
+    text =        "**************************************************************\n"
+    text = text + "* Procédures supplémentaires \n"
+    text = text + "**************************************************************\n"
+    text = text + text_datg_pro()
+    fdgib.write(text)
+    
+    # Début de procédure de création du maillage
+    text =        "**************************************************************\n"
+    text = text + "**************************************************************\n"
+    text = text + "********* Début de procédure de création du maillage *********\n"
+    text = text + "**************************************************************\n"
+    text = text + "**************************************************************\n"
+    text = text + "\n debproc constru;\n"
+    fdgib.write(text)
+
+    # Paramètres géométriques
+    text =        "**************************************************************\n"
+    text = text + "* Paramètres géométriques \n"
+    text = text + "**************************************************************\n"
+    text = text + para_text(dico_var_geo,geo_bride)
+    fdgib.write(text) 
+
+    # Paramètres du maillage
+    text =        "**************************************************************\n"
+    text = text + "* Paramètres physiques \n"
+    text = text + "**************************************************************\n"
+    text = text + para_text(dico_var_msh,msh_bride)
+    fdgib.write(text) 
+
+    # Algorithme du maillage
+    text =        "**************************************************************\n"
+    text = text + "* Algorithme de maillage \n"
+    text = text + "**************************************************************\n"
+    text = text + text_datg_qqe()
+    fdgib.write(text)
+    
+    # Fermeture du fichier maillage
+    fdgib.close()
+
+# Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
+def name_file_mgib(unite_mgib):
+    cur_dir = os.getcwd()
+    nomFichier = cur_dir+'/fort.'+str(unite_mgib)
+    return nomFichier
+
+
+# Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
+def name_file_datg(unite_datg):
+    cur_dir = os.getcwd()
+    nomFichier = cur_dir+'/fort.'+str(unite_datg)
+    return nomFichier
+
+# Récupère un fichier texte DATG: texte GIBI pour procédures
+def text_datg_pro():
+   import aster
+   loc_datg = aster.repdex()
+   datg_bridePro  = loc_datg+"macr_cabri_mail_proc.datg"
+   fproc=open(datg_bridePro,'r')
+   procText = fproc.read()
+   fproc.close()
+
+   return procText
+
+# Récupère un fichier texte DATG: texte GIBI pour bride quelconque
+def text_datg_qqe():
+   import aster
+   loc_datg = aster.repdex()
+   datg_brideQqe  = loc_datg+"macr_cabri_mail_qqe.datg"      
+   fproc=open(datg_brideQqe,'r')
+   procText = fproc.read()
+   fproc.close()
+
+   return procText
+
+# Récupère un fichier texte DATG: texte GIBI pour bride standard
+def text_datg_std():
+   import aster
+   loc_datg = aster.repdex()
+   datg_brideStd  = loc_datg+"macr_cabri_mail_std.datg"      
+   fproc=open(datg_brideStd,'r')
+   procText = fproc.read()
+   fproc.close()
+
+   return procText
+
+# Génération du texte pour les variables
+def para_text(dico_var,var):
+    text = '\n'
+    for nom_var in var.keys():
+        text = text+"* "+dico_var[nom_var]+"\n"
+        text = text+nom_var+" = "+`var[nom_var]`+";\n"
+    return text
+
+#=============================================================================================
+# Accès au catalogue des brides standards
+# (les brides standards sont décrites dans le fichier Data_Brides.py)
+#=============================================================================================
+
+
+
+# Imprime tout le catalogue des brides standards disponibles dans un fichier texte
+def print_bride_std(nom_fichier):
+    text = bride_std()
+    # Ouverture du fichier
+    finfo=open(nom_fichier,'w')
+    # Ecriture des infos
+    finfo.write(text)
+    # Fermeture du fichier
+    finfo.close()
+
+# Catalogue complet des brides standards disponibles
+def bride_std():
+    # Ligne d'info
+    text = "Liste des brides standards avec leurs dimensions\n"
+    # Première ligne
+    text = text+"\t"
+    for nom_variable in dico_var_geo.keys():      
+        text = text + nom_variable+"\t\t"
+    text = text + "\n"
+    # Lignes suivantes
+    for nom_bride in dico_bride_std.keys():
+        bride = dico_bride_std[nom_bride]    
+        text = text + nom_bride + '\t'
+        for nom_var in dico_var_geo.keys():
+            chaine = "%f" % (bride[nom_var])
+            text = text+chaine+"\t"               
+        text = text + "\n"
+    return text
diff --git a/Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py b/Aster/Cata/cataSTA9/Intranet/macro_bascule_schema_ops.py
new file mode 100644 (file)
index 0000000..8f763ed
--- /dev/null
@@ -0,0 +1,296 @@
+#@ MODIF macro_bascule_schema_ops Intranet  DATE 17/12/2007   AUTEUR GREFFET N.GREFFET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+def macro_bascule_schema_ops (self,MODE,MATE,CARA,
+                        INCR_I,INCR_E,
+                        SCH_TEMPS_I,SCH_TEMPS_E,SCH_TEMPS_EQ,
+                        C_INCR_I,C_INCR_E,
+                        EXC_T,NEWT,INIT,TP_BAS,SCH_INI,EQUILIBRAGE,**args):
+  ier=0
+  import copy
+  import aster
+  import string
+  import types
+  from Accas import _F
+  from Noyau.N_utils import AsType
+  from Utilitai.Utmess     import  UTMESS
+  # On importe les definitions des commandes a utiliser dans la macro
+  DYNA_NON_LINE  =self.get_cmd('DYNA_NON_LINE')
+  CREA_CHAMP     =self.get_cmd('CREA_CHAMP')
+  DEFI_LIST_REEL =self.get_cmd('DEFI_LIST_REEL')
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+  # Le concept sortant (de type evol_noli) est nommé
+  # 'nomres' dans le contexte de la macro
+  self.DeclareOut('nomres',self.sd)
+  #
+  #
+  dexct=[]
+  for j in EXC_T :
+      dexct.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dexct[-1].keys():
+          if dexct[-1][i]==None : del dexct[-1][i]
+  #
+  dComp_incri=[]
+  for j in C_INCR_I :
+      dComp_incri.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dComp_incri[-1].keys():
+          if dComp_incri[-1][i]==None : del dComp_incri[-1][i]
+  #
+  dComp_incre=[]
+  for j in C_INCR_E :
+      dComp_incre.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dComp_incre[-1].keys():
+          if dComp_incre[-1][i]==None : del dComp_incre[-1][i]
+  #
+  dincri=[]
+  for j in INCR_I :
+      dincri.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dincri[-1].keys():
+          if dincri[-1][i]==None : del dincri[-1][i]
+  #
+  dincre=[]
+  for j in INCR_E :
+      dincre.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dincre[-1].keys():
+          if dincre[-1][i]==None : del dincre[-1][i]
+  #
+  dschi=[]
+  for j in SCH_TEMPS_I :
+      dschi.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dschi[-1].keys():
+          if dschi[-1][i]==None : del dschi[-1][i]
+  #        
+  dsche=[]
+  for j in SCH_TEMPS_I :
+      dsche.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dsche[-1].keys():
+          if dsche[-1][i]==None : del dsche[-1][i]
+  #        
+  dscheq=[]
+  for j in SCH_TEMPS_I :
+      dscheq.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dscheq[-1].keys():
+          if dscheq[-1][i]==None : del dscheq[-1][i]
+  #     
+  dnew=[]
+  for j in NEWT :
+      dnew.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dnew[-1].keys():
+          if dnew[-1][i]==None : del dnew[-1][i]    
+  #       
+  dini=[]
+  for j in INIT :
+      dini.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dini[-1].keys():
+          if dini[-1][i]==None : del dini[-1][i]            
+  #
+  dequi=[]
+  for j in EQUILIBRAGE :
+      dequi.append(j.cree_dict_valeurs(j.mc_liste))
+      for i in dequi[-1].keys():
+          if dequi[-1][i]==None : del dequi[-1][i]  
+  #
+  __L0   = TP_BAS['VALE']
+  dincri1=copy.copy(dincri)
+  dincri1[-1]['INST_FIN']= __L0[0]
+  #
+  __dtimp=dequi[-1]['DT_IMP']
+  __dtexp=dequi[-1]['DT_EXP']
+  #
+  __dim=(-1)*len(dComp_incri)
+  __lis=range(0,__dim,-1)
+  __non_lin='NON'
+  for i in __lis :
+      if (dComp_incri[i]['RELATION']!='DIS_CHOC' and dComp_incri[i]['RELATION']!='ELAS'):
+          __non_lin='OUI'
+          break             
+  #   
+  #
+  if SCH_INI=='IMPLICITE':
+       dincri1=copy.copy(dincri)
+       dincri1[-1]['INST_FIN']= __L0[0]
+       nomres=DYNA_NON_LINE(MODELE      =MODE,
+                            CHAM_MATER  =MATE,
+                            CARA_ELEM   =CARA,
+                            EXCIT       =dexct,
+                            COMP_INCR   =dComp_incri,
+                            INCREMENT   =dincri1,
+                            SCHEMA_TEMPS=dschi,
+                            NEWTON=dnew,
+                            ETAT_INIT=dini,           ) 
+       __prc = 'IMPLICITE'                    
+  #
+  if SCH_INI=='EXPLICITE':
+       dincre1=copy.copy(dincre)
+       dincre1[-1]['INST_FIN']= __L0[0]
+       nomres=DYNA_NON_LINE(MODELE      =MODE,
+                            CHAM_MATER  =MATE,
+                            MASS_DIAG='OUI',
+                            CARA_ELEM   =CARA,
+                            EXCIT       =dexct,
+                            COMP_INCR   =dComp_incre,
+                            INCREMENT   =dincre1,
+                            SCHEMA_TEMPS=dsche,
+                            NEWTON=dnew,
+                            ETAT_INIT=dini,           ) 
+                            
+       __prc = 'EXPLICITE'                       
+                       
+ #  
+  __nb=len(__L0)
+  j = 1                 
+  while 1:
+     #
+     if __prc=='IMPLICITE' : 
+        __Ue=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                        TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],)
+        #                                              
+        __Ve=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                        TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],)                                 
+        #
+        __Ae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                        TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],)
+        #            
+        __Ce=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, 
+                        TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],)                  
+        #          
+        __Vae=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, 
+                         TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],) 
+        dincre1=copy.copy(dincre)      
+        dincre1[-1]['INST_FIN'] = __L0[j] 
+        dincre1[-1]['INST_INIT']= __L0[j-1]                 
+        nomres=DYNA_NON_LINE(reuse=nomres, 
+                             MODELE=MODE,
+                             MASS_DIAG='OUI',
+                             CHAM_MATER=MATE,
+                             CARA_ELEM=CARA,
+                             EXCIT=dexct,
+                             ETAT_INIT=_F(DEPL=__Ue, VITE=__Ve, ACCE=__Ae, 
+                                          SIGM=__Ce, VARI=__Vae,),
+                             COMP_INCR=dComp_incre,
+                             INCREMENT=dincre1,
+                             SCHEMA_TEMPS=dsche,
+                             NEWTON=dnew,) 
+        #                     
+        __prc='EXPLICITE' 
+        j = j + 1   
+        bool = (j!=(__nb))
+        if (not bool): break                   
+        #        
+     if __prc=='EXPLICITE' : 
+            # calcul sur la zone de recouvrement 
+            print('calcul d''une solution explicite stabilisée')
+            __U1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                            TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL', INST=__L0[j-1],)
+            #                                              
+            __V1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                            TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE', INST=__L0[j-1],)                                 
+            #
+            __A1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres,
+                            TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE', INST=__L0[j-1],)
+            #            
+            __C1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, 
+                            TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=__L0[j-1],)                  
+            #          
+            __Va1=CREA_CHAMP(OPERATION='EXTR', PRECISION=1.E-7, RESULTAT=nomres, 
+                             TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=__L0[j-1],)              
+            #
+            __lrec=DEFI_LIST_REEL(DEBUT=__L0[j-1],
+                                  INTERVALLE=_F(JUSQU_A=(__L0[j-1])+(10*(__dtexp)),
+                                                PAS=__dtexp),)
+            __u_rec=DYNA_NON_LINE(MODELE=MODE,
+                                  CHAM_MATER=MATE,
+                                  MASS_DIAG='OUI',
+                                  CARA_ELEM=CARA,
+                                  EXCIT=dexct,
+                                  ETAT_INIT=_F(DEPL=__U1, VITE=__V1, ACCE=__A1, 
+                                               SIGM=__C1, VARI=__Va1,),
+                                  COMP_INCR=dComp_incre,
+                                  INCREMENT=_F(LIST_INST=__lrec,
+                                               INST_INIT=__L0[j-1],
+                                               INST_FIN=(__L0[j-1])+(10*(__dtexp))),
+                                  SCHEMA_TEMPS=dscheq,
+                                  NEWTON=dnew,) 
+            #
+            __Ui =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=__u_rec,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL',      INST=(__L0[j-1])+(10*(__dtexp)),)
+            #                                              
+            __Vi =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=__u_rec,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE',      INST=(__L0[j-1])+(10*(__dtexp)),)                                 
+            #
+            __Ai =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=__u_rec,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE',      INST=(__L0[j-1])+(10*(__dtexp)),)                               
+            #          
+            # equilibrage du premier pas implicite
+            print('equilibrage du pas explicite stabilisée')
+            dincri1=copy.copy(dincri)      
+            dincri1[-1]['INST_FIN'] = ((__L0[j-1])+(10*(__dtexp))) 
+            dincri1[-1]['INST_INIT']=  (__L0[j-1])             
+            nomres=DYNA_NON_LINE(reuse=nomres,
+                                 MODELE=MODE,
+                                 CHAM_MATER=MATE,
+                                 CARA_ELEM=CARA,
+                                 EXCIT=dexct,
+                                 ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, 
+                                              SIGM=__C1, VARI=__Va1,),
+                                 COMP_INCR=dComp_incri,
+                                 INCREMENT=dincri1,
+                                 SCHEMA_TEMPS=dschi,
+                                 NEWTON=dnew,)            
+            #
+            __Ui =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=nomres,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='DEPL',      INST=(__L0[j-1])+(10*(__dtexp)),)
+            #                                              
+            __Vi =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=nomres,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='VITE',      INST=(__L0[j-1])+(10*(__dtexp)),)                                 
+            #
+            __Ai =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=nomres,
+                             TYPE_CHAM='NOEU_DEPL_R', NOM_CHAM='ACCE',      INST=(__L0[j-1])+(10*(__dtexp)),)
+            #            
+            __Ci =CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=nomres, 
+                             TYPE_CHAM='ELGA_SIEF_R', NOM_CHAM='SIEF_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),)                  
+            #          
+            __Vai=CREA_CHAMP(OPERATION='EXTR',        PRECISION=1.E-7,      RESULTAT=nomres, 
+                             TYPE_CHAM='ELGA_VARI_R', NOM_CHAM='VARI_ELGA', INST=(__L0[j-1])+(10*(__dtexp)),)
+            #                                                                          
+            print('calcul implicite après équilibrage')
+            dincri1=copy.copy(dincri)      
+            dincri1[-1]['INST_FIN'] = __L0[j] 
+            dincri1[-1]['INST_INIT']= ((__L0[j-1])+(10*(__dtexp)))   
+            nomres=DYNA_NON_LINE(reuse=nomres,
+                                 MODELE=MODE,
+                                 CHAM_MATER=MATE,
+                                 CARA_ELEM=CARA,
+                                 EXCIT=dexct,
+                                 ETAT_INIT=_F(DEPL=__Ui, VITE=__Vi, ACCE=__Ai, 
+                                              SIGM=__Ci, VARI=__Vai,
+                                             ),
+                                 COMP_INCR=dComp_incri,
+                                 INCREMENT=dincri1,
+                                 SCHEMA_TEMPS=dschi,
+                                 NEWTON=dnew,)  
+            #      
+            __prc='IMPLICITE'
+            j = j + 1 
+            bool = (j!=(__nb))
+            if (not bool): break                       
+  #            
+  return ier
diff --git a/Aster/Cata/cataSTA9/Macro/Sensibilite.py b/Aster/Cata/cataSTA9/Macro/Sensibilite.py
deleted file mode 100644 (file)
index abd3f87..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#@ MODIF Sensibilite Macro  DATE 19/11/2007   AUTEUR COURTOIS M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-"""
-Module traite de la gestion des concepts sensibles :
-   - classe permettant de stocker les noms des concepts et leurs dérivées
-   - corps de la macro MEMO_NOM_SENSI
-"""
-
-# protection pour eficas
-try:
-   import aster
-   from Utilitai.Utmess import  UTMESS
-except:
-   pass
-
-_VIDE_ = '????????'
-
-#-------------------------------------------------------------------------------
-def _force_list(obj):
-   """Impose le type list."""
-   if obj is not None and not type(obj) in (list, tuple):
-      obj = (obj,)
-   return obj
-
-
-#-------------------------------------------------------------------------------
-class MEMORISATION_SENSIBILITE:
-   """Classe pour la mémorisation des concepts sensibles et leurs dérivées.
-   """
-   def __init__(self, debug=False):
-      """Initialisation de la structure
-      """
-      self._debug = debug
-      # dictionnaire de correspondance : ('nom concept', 'nom parasensi') : 'nom compose'
-      self._corr = {}
-      # idem que _corr mais, pour les commandes principales, on stocke sd elle-meme
-      self._cosd = {}
-      self._nsnp = {}   # l'inverse
-      # dictionnaire donnant les 3 tuples de mots-clés, valeurs, mots-clés facteurs
-      self._mcle = {}
-
-
-   def key(self, nosimp, nopase):
-      """Retourne la clé d'accès aux dictionnaires
-      """
-      if not type(nosimp) in (str, unicode) or not type(nopase) in (str, unicode) or \
-         len(nosimp.strip()) > 8 or len(nopase.strip()) > 8:
-            UTMESS('F', 'SENSIBILITE_57', valk=(nosimp, nopase))
-      return nosimp.strip(), nopase.strip()
-   
-   
-   def set(self, nosimp, nopase, nocomp=None, limocl=None, livale=None, limofa=None,
-           verbose=False):
-      """On renseigne la structure de mémorisation : CHOIX='E'
-      """
-      key = self.key(nosimp, nopase)
-      if self._corr.has_key(key):
-         UTMESS('F', 'SENSIBILITE_90', valk=(nosimp, nopase))
-      limocl = _force_list(limocl) or ()
-      livale = _force_list(livale) or ()
-      limofa = _force_list(limofa) or ()
-      if not (len(limocl) == len(livale) == len(limofa)):
-         UTMESS('F', 'SENSIBILITE_97')
-      
-      if nocomp is None:
-         nocomp = aster.get_nom_concept_unique('S')
-      # on ne conserve que le nom (au moins pour le moment)
-      if type(nocomp) != str:
-         sd = nocomp
-         nocomp = nocomp.nom
-      else:
-         sd = None
-      self._corr[key] = nocomp
-      self._cosd[nocomp] = sd
-      self._nsnp[nocomp] = key
-      self._mcle[key] = (limocl, livale, limofa)
-      
-      if verbose or self._debug:
-         UTMESS('I', 'SENSIBILITE_58', valk=(nosimp, nopase, nocomp))
-         if len(limocl) != 0:
-            UTMESS('I', 'SENSIBILITE_59', valk=(str(limocl), str(livale), str(limofa)))
-
-
-   def get_nocomp(self, nosimp, nopase):
-      """On récupère le nom composé associé à un nom simple.
-      """
-      key = self.key(nosimp, nopase)
-      nocomp = self._corr.get(key, _VIDE_)
-      if self._debug:
-         print '<DBG> memo_sensi.get_nocomp'
-         print '      nosimp, nopase = "%s", "%s"' % (nosimp, nopase)
-         print '      nom composé    = "%s"' % nocomp
-      return nocomp
-
-
-   def get_nsnp(self, nocomp):
-      """On récupère le nom du concept et le parasensi associé au nom composé fourni.
-      """
-      key = self._nsnp.get(nocomp, (_VIDE_, _VIDE_))
-      if self._debug:
-         print '<DBG> memo_sensi.get_nsnp'
-         print '      nom composé    = "%s"' % nocomp
-         print '      nosimp, nopase = "%s", "%s"' % key
-      return nocomp
-
-
-   def get_mcle(self, nosimp, nopase):
-      """On récupère les mots-clés associés à un couple ('nom concept', 'nom parasensi')
-      """
-      key = self.key(nosimp, nopase)
-      tup3 = self._mcle.get(key, ((), (), ()) )
-      if self._debug:
-         print tup3
-         print '<DBG> memo_sensi.get_mcle      nbmocl =',len(tup3[0])
-         print '      nosimp, nopase = "%s", "%s"' % (nosimp, nopase)
-         print '      mots-clés      = ', tup3
-      return tup3
-
-
-   def psinfo(self, nosimp):
-      """Pendant de l'ex-routine psnosd : retour selon le type de `nosimp`.
-      """
-      # est-ce une structure dérivée ?
-      if nosimp in self._nsnp.keys():
-         t_couples = self._nsnp[nosimp]
-         ideriv = 1
-      else:
-         t_couples = self.get_deriv(nosimp)
-         ideriv = 0
-      # on met le tuple des couples à plat : un tuple de longueur double
-      l_res = []
-      for coupl in t_couples:
-         l_res.extend(coupl)
-      t_res = tuple(l_res)
-      if self._debug:
-         print '<DBG> memo_sensi.psinfo'
-         print '      nosimp = "%s"' % nosimp
-         print '      ideriv = ', ideriv
-         print '      result = ', t_res
-      return ideriv, t_res
-
-
-   def get_deriv(self, nosimp):
-      """On récupère la liste des couples ('nom composé', 'nom parasensi') associé à
-      un nom simple.
-      """
-      res = []
-      # liste des clés d'accès concernant `nosimp`.
-      l_key = [(ns, np) for ns, np in self._corr.keys() if ns == nosimp.strip()]
-      for ns, np in l_key:
-         res.append((self._corr[ns, np], np))
-      return tuple(res)
-
-
-   def get_nom_sd_princ(self):
-      """Retourne la liste des noms des sd dérivées produites par les commandes principales.
-      """
-      return tuple(self._cosd.keys())
-
-
-   def delete(self, nosimp, nopase):
-      """On récupère les mots-clés associés à un couple ('nom concept', 'nom parasensi')
-      """
-      key = self.key(nosimp, nopase)
-      nocomp = self.get_nocomp(nosimp, nopase)
-      if nocomp != _VIDE_:
-         del self._corr[key]
-         del self._cosd[nocomp]
-         del self._mcle[key]
-         del self._nsnp[nocomp]
-
-
-#-------------------------------------------------------------------------------
-#-------------------------------------------------------------------------------
-def memo_nom_sensi_ops(self, NOM, **args):
-   """Macro MEMO_NOM_SENSI.
-   Transitoire : l'appel aux méthodes de MEMORISATION_SENSIBILITE devraient
-      à terme etre fait directement sans introduire de commandes MEMO_NOM_SENSI.
-   
-   Faut-il traiter les mots-clés NOM_ZERO et NOM_UN ?
-   Il me semble que NOM_COMPOSE est toujours présent : obligatoire
-   """
-   import aster
-   
-   ier=0
-   # La macro compte pour 1 dans la numerotation des commandes
-   self.set_icmd(1)
-   
-   dNOM = NOM[0].cree_dict_valeurs(NOM[0].mc_liste)
-   
-   nosimp = dNOM['NOM_SD']
-   nopase = dNOM['PARA_SENSI'].nom
-   nocomp = dNOM['NOM_COMPOSE']
-   
-   self.jdc.memo_sensi.set(nosimp, nopase, nocomp,
-                           dNOM['MOT_CLE'], dNOM['VALEUR'], dNOM['MOT_FACT'],
-                           verbose=True)
-
-   # s'il faut déclarer le concept dérivé dans le jdc
-   if dNOM['TYPE_SD_DERIV']:
-      self.DeclareOut('nocomp', dNOM['NOM_COMPOSE'])
-      # enregistrement dans le tableau des concepts jeveux
-      icmdt = aster.co_register_jev(dNOM['NOM_COMPOSE'].nom, dNOM['TYPE_SD_DERIV'].upper(), 'MEMO_NOM_SENSI')
-   
-   return ier
diff --git a/Aster/Cata/cataSTA9/Macro/calc_essai_ops.py b/Aster/Cata/cataSTA9/Macro/calc_essai_ops.py
new file mode 100644 (file)
index 0000000..7fdadf8
--- /dev/null
@@ -0,0 +1,274 @@
+#@ MODIF calc_essai_ops Macro  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+## \package calc_essai_ops Implémentation de la macro CALC_ESSAI
+#
+# Ce module contient la partie controle de la macro CALC_ESSAI
+# l'implémetation de cette macro se trouve dans les modules
+# meidee_help, meidee_mac, meidee_massamor, meidee_turbulent
+# on utilise aussi une librairie de support
+# pour la gestion de l'interface graphique dans meidee_iface
+
+
+def calc_essai_ops( self,
+                    INTERACTIF          = None,
+                    UNITE_FIMEN         = None,
+                    UNITE_RESU          = None,
+                    EXPANSION           = None,
+                    MEIDEE_FLUDELA      = None,
+                    MEIDEE_TURBULENT    = None,
+                    IDENTIFICATION      = None,
+                    MODIFSTRUCT         = None,
+                    GROUP_NO_CAPTEURS   = None,
+                    GROUP_NO_EXTERIEUR  = None,
+                    RESU_FLUDELA        = None,
+                    RESU_TURBULENT      = None,
+                    RESU_IDENTIFICATION = None,
+                    RESU_MODIFSTRU      = None,
+                    **args):
+    import aster
+    from Meidee.meidee_cata import MeideeObjects
+    ier = 0
+    
+    prev = aster.onFatalError()
+    aster.onFatalError("EXCEPTION")
+
+    # La macro compte pour 1 dans la numerotation des commandes
+    self.set_icmd(1)
+
+    
+    # gestion des concepts sortants de la macro, declares a priori
+    table = []
+    table_fonction = []
+
+    if not RESU_MODIFSTRU:
+        out_modifstru = {}
+    else:
+        out_modifstru = RESU_MODIFSTRU[0] # max=1 dans le capy
+
+
+    if not RESU_IDENTIFICATION:
+        RESU_IDENTIFICATION = []
+    else:
+        for res in RESU_IDENTIFICATION:
+            table_fonction.append(res['TABLE'])
+    out_identification = {"DeclareOut" : self.DeclareOut,
+                          "TypeTables" : 'TABLE_FONCTION',
+                          "ComptTable" : 0,
+                          "TablesOut"  : table_fonction}
+
+    if not RESU_FLUDELA:
+        RESU_FLUDELA = []
+    else:
+        for res in RESU_FLUDELA:
+            table.append(res['TABLE'])
+    out_fludela = {"DeclareOut" : self.DeclareOut,
+                   "TypeTables" : 'TABLE',
+                   "ComptTable" : 0,
+                   "TablesOut" : table}
+
+    if not RESU_TURBULENT:
+        RESU_TURBULENT = []
+    else:
+        for res in RESU_TURBULENT:
+            table.append(res['FONCTION'])
+    out_meideeturb = {"DeclareOut" : self.DeclareOut,
+                      "FoncOut" : table}
+        
+    
+    # Mode interactif : ouverture d'une fenetre Tk
+    if INTERACTIF == "OUI":
+        create_interactive_window(self,
+                                  UNITE_FIMEN,
+                                  UNITE_RESU,
+                                  out_fludela,
+                                  out_meideeturb,
+                                  out_identification,
+                                  out_modifstru)
+    else:
+        from Meidee.meidee_calcul import MessageBox
+        from Meidee.meidee_test import TestMeidee
+        mess = MessageBox(UNITE_RESU)
+        mess.disp_mess("Mode non intéractif")
+        
+        objects = MeideeObjects(self, mess)
+
+        # importation des concepts aster existants de la memoire jeveux
+        TestMeidee(self,
+                   mess,
+                   out_fludela,
+                   out_meideeturb,
+                   out_identification,
+                   out_modifstru,
+                   objects,
+                   EXPANSION,
+                   MEIDEE_FLUDELA,
+                   MEIDEE_TURBULENT,
+                   IDENTIFICATION,
+                   MODIFSTRUCT,
+                   GROUP_NO_CAPTEURS,
+                   GROUP_NO_EXTERIEUR              
+                   )
+
+        mess.close_file()
+    aster.onFatalError(prev)
+    return ier
+
+
+
+def create_tab_mess_widgets(tk, UNITE_RESU):
+    """Construits les objects table et boîte à messages."""
+    try:
+        from Pmw import PanedWidget
+    except ImportError:
+        PanedWidget = None
+    
+    from Meidee.meidee_iface import MessageBoxInteractif, TabbedWindow
+    
+    if PanedWidget:
+        pw = PanedWidget(tk, orient='vertical',
+                         hull_borderwidth = 1,
+                         hull_relief = 'sunken',
+                         )
+        tabsw = pw.add("main", min=.1, max=.9)
+        msgw = pw.add("msg", min=.1, max=.2)
+        pw.grid(sticky='nsew')
+        tabsw.rowconfigure(0, weight=1)
+        tabsw.columnconfigure(0, weight=1)
+        msgw.rowconfigure(0, weight=1)
+        msgw.columnconfigure(0, weight=1)
+    else:
+        tabsw = tk
+        msgw = tk
+        tk.rowconfigure(1, weight=3)
+        tk.rowconfigure(1, weight=1)
+    
+    tabs = TabbedWindow(tabsw, ["Expansion de modeles",
+                                "Modification structurale",
+                                "MEIDEE mono-modal fludela",
+                                "MEIDEE mono-modal turbulent",
+                                "Identification de chargement",
+                                "Parametres de visualisation"])
+
+    tabs.grid(row=0, column=0, sticky='nsew')
+    # pack(side='top',expand=1,fill='both')
+    
+    # ecriture des message dans un fichier message
+    mess = MessageBoxInteractif(msgw, UNITE_RESU)
+    if PanedWidget:
+        mess.grid(row=0, column=0, sticky='nsew')
+        #mess.pack(side='top',expand=1,fill='both')
+    else:
+        mess.grid(row=1, column=0, sticky='nsew')
+        #mess.pack(side='top',expand=1,fill='both')
+    
+    return tabs, mess
+
+def get_fimen_files(UNITE_FIMEN, FIMEN=None):
+    """Fichiers fimen éventuels associés aux unités logiques en entrée"""
+    # XXX FIMEN is not defined (should it be included in the macro)
+    from Utilitai.UniteAster import UniteAster
+    fichiers_fimen = []
+    print "FIMEN:", UNITE_FIMEN
+
+    if UNITE_FIMEN:
+        if type(FIMEN)==int:
+            UNITE_FIMEN= [ UNITE_FIMEN ]
+        for unit in UNITE_FIMEN:
+            UL = UniteAster()
+            fichiers_fimen.append( (unit, UL.Nom(unit)) )
+
+    return fichiers_fimen
+
+
+class FermetureCallback:
+    """Opérations à appliquer lors de la fermeture de la
+    fenêtre Tk.
+    """
+
+    def __init__(self, main_tk, turbulent):
+        self.main_tk = main_tk
+        self.turbulent = turbulent
+
+    def apply(self):
+        """Enlève les fichiers temporaires de Xmgrace"""
+        if self.turbulent.param_visu.logiciel_courbes is not None:
+            self.turbulent.param_visu.logiciel_courbes.fermer()
+        self.main_tk.quit()
+
+
+def create_interactive_window(macro,
+                              UNITE_FIMEN,
+                              UNITE_RESU,
+                              out_fludela,
+                              out_meideeturb,
+                              out_identification,
+                              out_modifstru):
+    """Construit la fenêtre interactive comprenant une table pour 
+    les 4 domaines de Meidee."""
+    from Tkinter import Tk
+    
+    from Meidee.meidee_cata import MeideeObjects
+    from Meidee.meidee_correlation import InterfaceCorrelation
+    from Meidee.meidee_modifstruct import InterfaceModifStruct
+    from Meidee.meidee_fludela import InterfaceFludela, InterfaceTurbMonomod
+    from Meidee.meidee_turbulent import InterfaceTurbulent
+    from Meidee.meidee_parametres import InterfaceParametres
+    
+    # fenetre principale
+    tk = Tk()
+    tk.rowconfigure(0, weight=1)
+    tk.columnconfigure(0,weight=1)
+    
+    tabs, mess = create_tab_mess_widgets(tk, UNITE_RESU)
+    main = tabs.root()
+    
+    # importation des concepts aster de la memoire jeveux    
+    objects = MeideeObjects(macro, mess)
+    tabs.set_objects(objects)
+    
+    param_visu = InterfaceParametres(main, mess)
+    
+    iface = InterfaceCorrelation(main, objects, macro, mess, param_visu)
+    imodifstruct = InterfaceModifStruct(main, objects, macro,
+                                        mess, out_modifstru, param_visu)
+    fludelamonomod = InterfaceFludela(main, objects,
+                                      get_fimen_files(UNITE_FIMEN), mess, out_fludela, param_visu)
+    turbmonomod = InterfaceTurbMonomod(main, objects,get_fimen_files(UNITE_FIMEN) ,mess, out_meideeturb, param_visu)
+    turbulent = InterfaceTurbulent(main, objects, mess, out_identification, param_visu)
+    
+    tabs.set_tab("Expansion de modeles", iface.main)
+    tabs.set_tab("Modification structurale", imodifstruct.main)
+    tabs.set_tab("MEIDEE mono-modal fludela", fludelamonomod )
+    tabs.set_tab("MEIDEE mono-modal turbulent", turbmonomod )
+    tabs.set_tab("Identification de chargement", turbulent)
+    tabs.set_tab("Parametres de visualisation", param_visu)
+    
+    #tabs.set_current_tab("Modifstruct")
+    tabs.set_current_tab("Expansion de modeles")
+
+    tk.protocol("WM_DELETE_WINDOW", FermetureCallback(tk, turbulent).apply)
+    
+    try:
+        tk.mainloop()
+    except :
+        print "MEIDEE : *ERREUR*"
+
+    
diff --git a/Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py b/Aster/Cata/cataSTA9/Macro/calc_europlexus_ops.py
new file mode 100644 (file)
index 0000000..6b3a4a8
--- /dev/null
@@ -0,0 +1,2407 @@
+#@ MODIF calc_europlexus_ops Macro  DATE 24/11/2008   AUTEUR ASSIRE A.ASSIRE 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+#-----------------------------------------------------------------------   
+#----------------------------- Importation des modules  ----------------
+#-----------------------------------------------------------------------   
+debug = False
+dryrun = False
+
+import types,string
+import os
+import Numeric as N
+import math 
+import copy
+import sets
+
+# Protection pour Eficas
+try:
+   import aster
+   from Accas import _F
+   from Utilitai.partition import MAIL_PY
+except:
+  pass
+      
+#----------------------------- Precision ------------------------------- 
+tst = 1.0E-10
+
+#-----------------------------------------------------------------------   
+#----------------------------- Fonctions de calcul vectoriel -----------
+#-----------------------------------------------------------------------   
+
+def norme(u) :
+  return N.sqrt(N.dot(u,u))
+
+def vecteurs_egaux(v1,v2):
+  diff = v1-v2
+  #print 'v1',v1
+  #print 'v2',v2
+  for v in diff:
+    if abs(v) > tst : return False
+  return True  
+
+#-----------------------------------------------------------------------   
+#----------------------------- Operateur de la Macro-commande ----------
+#-----------------------------------------------------------------------   
+
+def calc_europlexus_ops(self,MODELE,CARA_ELEM,CHAM_MATER,EXCIT,FONC_PARASOL=None,
+                             DIME=None,OBSERVATION=None,ARCHIVAGE=None,COURBE=None,
+                             CALCUL=None,DOMAINES=None,INTERFACES=None,INFO=1,**args):
+        
+#   import aster
+#   from Accas import _F
+
+  ier=0
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+
+  # On importe les definitions des commandes a utiliser dans la macro
+  # Le nom de la variable doit etre obligatoirement le nom de la commande
+  
+  global _F,INFO_EXEC_ASTER,DETRUIRE,IMPR_RESU,DEFI_FICHIER,LIRE_RESU,CREA_MAILLAGE
+  global DEFI_GROUP,LIRE_MAILLAGE,CREA_TABLE,IMPR_TABLE,AFFE_MODELE,EXEC_LOGICIEL
+  global LIRE_CHAMP,CREA_CHAMP,CREA_RESU,FORMULE
+  
+  INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
+  DETRUIRE        = self.get_cmd('DETRUIRE')
+  IMPR_RESU       = self.get_cmd('IMPR_RESU')
+  DEFI_FICHIER    = self.get_cmd('DEFI_FICHIER')
+  LIRE_RESU       = self.get_cmd('LIRE_RESU')
+  CREA_MAILLAGE   = self.get_cmd('CREA_MAILLAGE')
+  DEFI_GROUP      = self.get_cmd('DEFI_GROUP')
+  LIRE_MAILLAGE   = self.get_cmd('LIRE_MAILLAGE')
+  CREA_TABLE      = self.get_cmd('CREA_TABLE')
+  IMPR_TABLE      = self.get_cmd('IMPR_TABLE')
+  AFFE_MODELE     = self.get_cmd('AFFE_MODELE')
+  EXEC_LOGICIEL   = self.get_cmd('EXEC_LOGICIEL')
+  LIRE_CHAMP      = self.get_cmd('LIRE_CHAMP')
+  CREA_CHAMP      = self.get_cmd('CREA_CHAMP')
+  CREA_RESU       = self.get_cmd('CREA_RESU')
+  FORMULE         = self.get_cmd('FORMULE')
+
+  # Pour la gestion des Exceptions
+  prev_onFatalError = aster.onFatalError()
+  aster.onFatalError('EXCEPTION')
+
+
+  # Pour masquer certaines alarmes
+  from Utilitai.Utmess import UTMESS, MasquerAlarme, RetablirAlarme
+  MasquerAlarme('MED_1')
+
+  # Ligne de commande d'Europlexus
+  if args.has_key('LOGICIEL'): EXEC = args['LOGICIEL']
+  else: EXEC = '/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d'
+  if debug: print 'args_keys : %s'%args.keys()
+  if args.has_key('PAS_NBRE_COURBE') :
+     if debug: print 'PAS NBRE COURBE = ok (%s)'%args['PAS_NBRE_COURBE']
+  else :
+     if debug: print 'PAS NBRE COURBE = nook'
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+
+  # classs Europlexus permettant de faire le chainage avec le Code_Aster
+  EPX = EUROPLEXUS(MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME,
+# AA                   ECRITURE,CALCUL,REPE='REPE_OUT',EXEC=EXEC)
+                   OBSERVATION,ARCHIVAGE,COURBE,CALCUL,DOMAINES,INTERFACES,
+                   REPE='REPE_OUT',EXEC=EXEC, INFO=INFO, args=args)
+
+  # Eriture du fichier de commande Europlexus
+  EPX.ecrire_fichier()
+
+  # Si dryrun alors on ne lance pas le calcul Europlexus
+  if dryrun: return ier
+
+  # Lancement du calcul Europlexus
+  EPX.lancer_calcul()
+
+  # Recuperer le resulat Europlexus a l'aide d'un concept aster de type evol_noli
+  fichier_med = 'auto'
+  fichier_pun = 'auto'
+#  if debug  : 
+#    fichier_med='fort.81'
+#    fichier_pun ='fort.85'
+
+  self.DeclareOut('resu',self.sd) # Le concept sortant (de type evol_noli) est nomme 'resu'   
+  global resu # pour que le nom du concept prenne celui defini par l'utilisateur
+  EPX.get_resu(fichier_med=fichier_med)
+
+  #Recuperer les concepts table
+  if COURBE is not None:
+    global table
+    # icourbe = 0
+    # for fonc in COURBE['TABLE'] :
+      # icourbe += 1
+    self.DeclareOut('table',args['TABLE_COURBE'])
+    EPX.get_table()
+      # EPX.get_table(icourbe=icourbe,fichier=fichier_pun)
+
+
+  # Pour la gestion des Exceptions
+  aster.onFatalError(prev_onFatalError)
+
+  # Pour la gestion des alarmes
+  RetablirAlarme('MED_1')
+
+  return ier
+
+#-----------------------------------------------------------------------   
+#----------------------------- class EUROPLEXUS ------------------------
+#-----------------------------------------------------------------------   
+
+class EUROPLEXUS:
+# AA  def __init__(self,MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME,ECRITURE,CALCUL,REPE,EXEC,**args):
+  def __init__(self,MODELE,CARA_ELEM,CHAM_MATER,FONC_PARASOL,EXCIT,DIME,OBSERVATION,ARCHIVAGE,COURBE,CALCUL,DOMAINES,INTERFACES,REPE,EXEC,INFO,args):
+
+    if debug: print 'args_key %s'%args.keys()
+    # Mettre toutes les entrees en attributs
+    self.DIME = DIME
+    self.MODELE = MODELE
+    self.CARA_ELEM = CARA_ELEM
+    self.CHAM_MATER = CHAM_MATER
+    self.FONC_PARASOL = FONC_PARASOL
+    self.EXCIT = EXCIT
+#    self.ECRITURE = ECRITURE
+    self.OBSERVATION = OBSERVATION
+    self.ARCHIVAGE = ARCHIVAGE
+    self.COURBE = COURBE
+    self.CALCUL = CALCUL
+    self.DOMAINES = DOMAINES
+    self.INTERFACES = INTERFACES
+    self.INFO = INFO
+
+    # Repertoire de calcul Europlexus 
+    self.REPE   = REPE 
+    # Commande d'execution de Europlexus
+    self.EXEC   = EXEC
+    
+    if args.has_key('UNITE_COURBE'): self.UNITE_COURBE = args['UNITE_COURBE']
+    else:                            self.UNITE_COURBE = None
+    
+    if args.has_key('PAS_INST_COURBE'): self.PAS_INST_COURBE = args['PAS_INST_COURBE']
+    else:                            self.PAS_INST_COURBE = None
+   
+    if args.has_key('PAS_NBRE_COURBE'): self.PAS_NBRE_COURBE = args['PAS_NBRE_COURBE']
+    else:                            self.PAS_NBRE_COURBE = None
+
+    if args.has_key('TABLE_COURBE'): self.TABLE_COURBE = args['TABLE_COURBE']
+    else:                            self.TABLE_COURBE = None
+    # Dictionnaire contenant le texte associé au fichier de commande Europlexus
+    self.epx = {}
+    
+    if debug: print 'pas nbre courbe = %s'%self.PAS_NBRE_COURBE
+    
+    # Concept pour un nouveau maillage si on utilise RIGI_PARASOL ou 
+    # si on regroupe separement les mailles tria3 et quad4
+    self.NEW_MA = None
+    
+    # Nom des fichiers de Europlexus (commande et sorties)
+    self.nom_fichiers = {'COMMANDE' : 'commandes.epx',
+                         'MAILLAGE' : 'maillage_epx',
+                         'ALIT'     : 'champ.alit',
+                         'MED'      : 'champ.e2m',
+                         'PUN'      : 'courbes.pun',
+                        }
+    
+    # Chemin du repertoire courant ou le calcul Aster est lance
+    self.pwd = os.getcwd() + os.sep                     
+    
+
+  
+#-----------------------------------------------------------------------       
+  def get_unite_libre(self,):
+
+    _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
+    unite=_UL['UNITE_LIBRE',1]
+    DETRUIRE(CONCEPT=(_F(NOM=_UL),), INFO=1)
+    return(unite)
+    
+     
+#-----------------------------------------------------------------------   
+  def reupere_structure(self,concept,mot_cle=None):
+
+    try : structure = concept.etape.valeur
+    except : UTMESS('F','PLEXUS_1') 
+
+    if mot_cle : 
+      if structure.has_key(mot_cle) : return structure[mot_cle]
+      else : return None 
+    return structure
+#-----------------------------------------------------------------------   
+  def get_motcle(self,fact,mot_cle,code_mess='F'):
+    try : 
+      out = fact[mot_cle]
+    except : 
+      out = None
+    if not out is None : return out    
+    if not code_mess is None and code_mess: UTMESS(code_mess,'PLEXUS_2',valk=mot_cle)
+    return None
+
+#-----------------------------------------------------------------------   
+  def get_group_ma(self,fact):
+    group_ma = self.get_motcle(fact,'GROUP_MA',code_mess='F')
+    if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,)
+    # elif types.TypeType(group_ma) == types.ListType   : group_ma = tupel(group_ma)  
+    return group_ma
+    
+#-----------------------------------------------------------------------   
+  def get_group_ma_f(self,fact):
+    group_ma = self.get_motcle(fact,'GROUP_MA',None)
+    if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,)
+    # elif types.TypeType(group_ma) == types.ListType   : group_ma = tupel(group_ma) 
+    if not group_ma : group_ma=[]
+    return group_ma
+    
+#-----------------------------------------------------------------------   
+  def setlist(self,fact):
+    #print 'types.TypeType(fact)',types.TypeType(fact)
+    if fact is None : return fact
+    if not types.TypeType(fact) in [types.ListType,types.TupleType] : fact= [fact]
+    return fact
+    
+#-----------------------------------------------------------------------   
+  def lire_fichier(self,fichier,):
+    fd = open(fichier,'r')
+    lignes = fd.readlines()
+    fd.close()
+    valeurs = []
+    commentaires = ['#','%','$','*']
+    for ll in lignes:
+      add = 1
+      for comment in commentaires : 
+        if string.find(ll,comment) != -1 : add = 0;break
+      if add :   
+         data = [val for val in ll.split(None)]
+         valeurs.append(data)
+    return valeurs
+    
+#-----------------------------------------------------------------------   
+  def fichier2dic(self,fichier):
+    valeurs = self.lire_fichier(fichier)
+    dic = {}
+    mot_cle = None
+    for ll in valeurs:
+      if len(ll) > 1 :    
+        for mot in ll :
+          try : 
+            val = float(mot)
+            if not mot_cle is None : dic[mot_cle].append(val)
+          except : 
+            mot_cle = mot
+            dic[mot_cle] = []
+            
+    return dic
+    
+#-----------------------------------------------------------------------   
+  def lire_pun(self,fichier):
+    if debug: print 'lire_pun : fichier = %s'%fichier
+    data  = self.lire_fichier(fichier)
+    icourbe = 0
+    courbes = {}
+    for ligne in data:
+      if debug: print 'lire_pun : %s'%ligne
+      if ligne[0] in ('VALEURS','VALUES'):
+         icourbe += 1;
+         nb = int(ligne[1])
+         courbes[icourbe] = []
+      else:
+        ligne_vale = [float(val) for val in ligne]
+        courbes[icourbe].append(ligne_vale)
+    for courbe in courbes :
+        courbes[courbe]=N.transpose(N.array(courbes[courbe]))
+    return courbes
+    
+#-----------------------------------------------------------------------   
+  def export_DEBUT(self):
+    
+    epx = self.epx
+    
+    # Cle identifiant 
+    MODULE = 'DEBUT'
+    
+    # Entete de la commande Europlexus courante
+    epx[MODULE] = ['*--FICHIER CREE PAR CALC_EUROPLEXUS/Code_Aster']
+    
+    # Texte declarant le debut
+    epx[MODULE].append('TITRE')
+    epx[MODULE].append('ECHO')
+    options = 'TRID NONL'
+# AA    champ_fact = self.ECRITURE['CHAMP']
+    champ_fact = self.ARCHIVAGE
+    if champ_fact is not None : options += ' MEDE'
+    epx[MODULE].append(options)
+    epx[MODULE].append('\n') 
+
+#-----------------------------------------------------------------------   
+  def export_MAILLAGE(self,format='CASTEM'):
+
+    epx = self.epx
+
+    # Cle identifiant 
+    MODULE = 'MAILLAGE'
+
+    # Entete de la commande Europlexus courante
+    epx[MODULE] = ['*--LECTURE MAILLAGE']
+
+    # Recuperer la concept maillage modifie ou initial 
+    if self.NEW_MA is None :
+      concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+    else :
+      concept_maillage = copy.copy(self.NEW_MA) 
+
+    # Ecrire le maillage, qui peut etre a ete enrichi avec des commandes Aster, sous le format souhaite (MED ou CASTEM)
+    unite = self.get_unite_libre()
+
+    # Extensions des formats de maillage 
+    extension = {'CASTEM' : '.mgib', 'MED':'.med'}
+
+    # donner un nom au fichier de maillage parce que le fort.unite peut etre ecrase par d'autre operation d'ecriture
+    nom_fichier = self.REPE + os.sep + self.nom_fichiers['MAILLAGE'] + extension[format]
+    DEFI_FICHIER(UNITE=unite,FICHIER=nom_fichier,ACTION='ASSOCIER')
+    IMPR_RESU(UNITE=unite,
+              FORMAT=format,
+              RESU = _F(MAILLAGE=concept_maillage)
+             )
+    DEFI_FICHIER(UNITE=unite,ACTION='LIBERER');    
+
+    # Ecriture de la commande Europlexus associee
+    fichier_maillage = self.pwd + nom_fichier
+
+    #epx[MODULE].append('OPNF FORMAT 9')
+    epx[MODULE].append('%s '%format)
+    epx[MODULE].append("'%s' TOUT" %fichier_maillage)    
+    #epx[MODULE].append('CASTEM 9 TOUT')
+
+    epx[MODULE].append('\n')    
+
+#-----------------------------------------------------------------------   
+  def export_DIME(self,):
+    epx = self.epx
+
+    # Cle identifiant 
+    MODULE = 'DIME'
+
+    # Entete de la commande Europlexus courante
+    epx[MODULE] = ['*--DIMENSIONNEMENT']
+    epx[MODULE].append('\n')
+
+    # Test si des parametres de dime seront introuduites à l'aide d'un fichier externe 
+    try    : unite_dime = self.DIME['UNITE_DIME']
+    except : unite_dime = None
+
+    # Recuperer le dictionnaire issu du fichier associe à UNITE_DIME (s'il existe)
+    if unite_dime is not None : 
+      fort = 'fort.%i' %unite_dime
+      dic_fichier = self.fichier2dic(fort)
+    else:
+      dic_fichier = {}
+
+    # mettre a jour les cles definis dans le fichier par celles qui sont 
+    # definies directement sous le mot-cle facteur DIME
+    cles = ['Q4GS', 'FORCE', 'PT6L', 'ZONE', 'POUT', 
+            'ECRO', 'APPU', 'BLOQ', 'PRESS', 'PMAT', 
+            'FTAB', 'DKT3', 'DEPL', 'FNOM', 'TABLE', 
+            'LIAI', 'MTTI', 'PT1L','NEPE']
+
+    for cle in cles:
+      try:
+        if self.DIME[cle] is not None : 
+          dic_fichier[cle] = self.DIME[cle]
+      except : pass  
+
+    # Imprimer les mot-cles et leurs dans epx
+    epx[MODULE].append('DIME')
+    for cle in dic_fichier:
+      vale = dic_fichier[cle]
+      st = 5*' ' + cle
+      for v in vale:
+        st += ' %i' %v
+      epx[MODULE].append(st)  
+    epx[MODULE].append('TERM')    
+
+    epx[MODULE].append('\n')
+         
+#-----------------------------------------------------------------------   
+  def export_MODELE(self):
+    
+    epx = self.epx
+    
+    # Cle identifiant 
+    MODULE = 'MODELE'
+    
+    epx[MODULE] = ['*--DEFINITION DE LA GEOMETRIE']
+    
+    # Entete de la commande Europlexus courante
+    epx[MODULE].append('GEOMETRIE')
+    
+    # Recuperer la structure sous le mot_cle facteur AFFE de AFFE_MODELE 
+    affe_modele = self.reupere_structure(self.MODELE,'AFFE')
+    affe_modele = self.setlist(affe_modele)
+    
+    # Correspondance de modelisation aster/europlexus
+    dic_modele = {'DKT':'DKT3','DKTG':'Q4GS','POU_D_E':'POUT'}
+    
+    # Correspondance de modelisation europlexus/aster
+    dic_modele_epx = {}
+    for cle in dic_modele.keys():
+      dic_modele_epx[dic_modele[cle]] = cle
+
+    # initialisation du dictioannaire qui contient les group_ma en fonction de la modelisation
+    dic_gma = {}
+    for cle in dic_modele.values():
+      dic_gma[cle] = []
+      
+    for affe in affe_modele:
+      modelisation = affe['MODELISATION']
+      phenomene = affe['PHENOMENE']
+      if  phenomene == 'MECANIQUE' and modelisation in dic_modele.keys():
+        if affe.has_key('GROUP_MA') :
+          group_ma = self.get_group_ma(affe)
+          dic_gma[dic_modele[modelisation]].extend(group_ma)
+        else : 
+          UTMESS('F','PLEXUS_3') 
+    
+    # Regrouper separement les mailles tria3 et quad4 de la modilisation DKT (s'il y a lieu)
+    # parce que leurs modilisations dans europlexus sont differentes:
+    #                                                                tria3 : DKT3
+    #                                                                quad4 : Q4GS
+    
+    # Initialisation du dictionnaire contenant les elements du modele de type TRIA3 et QUAD4
+    nom_groups= {'TRIA3':[],'QUAD4':[]}
+    
+    if len(dic_gma['DKT3']) > 0:
+      concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+      class_dkt = DKT(MAILLAGE=concept_maillage,)
+      nom_groups = class_dkt.aster2epx(groups=dic_gma['DKT3'])
+      if debug: print 'nom_groups = %s'%nom_groups
+      # mettre a jour les groups de chaque modelisation
+      dic_gma['DKT3'] = nom_groups['TRIA3']
+      dic_gma['Q4GS'].extend(nom_groups['QUAD4'])
+      
+    
+    # liste comportant les modelisations definis dans le module GEOMETRIE
+    # cette liste va servir à determiner les indices des champs stockes dans le fichier med (get_resu)
+    self.modelisations = []
+    # Ecriture sous format europlexus
+    for modelisation in  dic_gma.keys() :
+      len_groups = len(dic_gma[modelisation])
+      if len_groups > 0 :
+        self.modelisations.append(modelisation)
+        epx[MODULE].append(5*' ' + modelisation + 2*' ' + dic_gma[modelisation][0])
+        if len_groups > 1 :
+          for ig in range(1,len_groups) :
+            group_ma = dic_gma[modelisation][ig]
+            epx[MODULE].append((len(modelisation)+5+2)*' ' + group_ma)
+
+                
+    
+    # Mettre a jour le modele dans le cas ou le maillage a ete modifie pour la seperation de TRIA3 et QUAD4
+    # ce modele va etre utilise dans la lecture du fichier med (get_resu)
+    if len(nom_groups['QUAD4']) == 0 :
+      self.NEW_MODELE = copy.copy(self.MODELE)
+    else :
+      affe_model = []
+      for modelisation in self.modelisations :
+         affe_model.append({'GROUP_MA':dic_gma[modelisation],
+                           'MODELISATION': dic_modele_epx[modelisation],
+                           'PHENOMENE':'MECANIQUE' })
+        
+      __MO = AFFE_MODELE(MAILLAGE = concept_maillage,
+                          AFFE = affe_model,
+                          );
+        
+      self.NEW_MODELE = copy.copy(__MO);
+    
+    # Utiliser dans Ecriture des elements et points du fichier med    
+    self.dic_gma = dic_gma
+    # Il y a une suite dans RIGI_PARSOL
+    
+    #epx[MODULE].append('TERM')
+    #epx[MODULE].append('\n') 
+    
+    
+ #-----------------------------------------------------------------------   
+  def export_CARA_ELEM(self):
+    
+    epx = self.epx
+    
+    # Cle identifiant 
+    MODULE = 'CARA_ELEM'
+
+    # Recuperer la structure du concept sorti de AFFE_CARA_ELEM
+    cara_elem_struc = self.reupere_structure(self.CARA_ELEM)
+
+    epx[MODULE] = ['*--CARACTERISTIQUES DES ELEMENTS DE STRUCTURE']
+
+    # Entete de la commande Europlexus courante
+    epx[MODULE].append('COMPLEMENT')
+
+    # Dictionnaire conteant les donnees associees aux differents elements de structure
+    dic_elem = {}
+    for cle in ['DISCRET','COQUE','POUTRE','RIGI_PARASOL']:
+      if cara_elem_struc.has_key(cle):
+        fact = cara_elem_struc[cle]
+        if fact :
+          dic_elem[cle] = self.setlist(fact)
+     
+    # traduire les masses concentrees si elles existent
+    cle = 'DISCRET'
+    self.discretParasol = {}
+    if dic_elem.has_key(cle):
+      epx[MODULE].append('\n') 
+      epx[MODULE].append('*--MASSES AJOUTEES')
+      for elem in dic_elem[cle]:
+        if elem['CARA'] == 'M_T_D_N' :
+          group_ma = self.get_group_ma(elem)
+          vale = elem['VALE']
+          epx[MODULE].append('MASSE  123456 %g' %vale)
+          epx[MODULE].append(7*' ' + 'LECT')
+          for group in group_ma:
+            epx[MODULE].append(11*' '+group)
+          epx[MODULE].append(7*' ' + 'TERM')
+        if elem['CARA'] == 'K_TR_D_N' :
+          group_ma = self.get_group_ma(elem)
+          vale     = elem['VALE']
+          for gma in group_ma :
+            self.discretParasol[gma] = vale
+           
+    # traduire les elements coques s'ils existent
+    cle = 'COQUE'
+    self.dicOrthotropie={}
+    self.listEpais=[]
+    self.listEpais2=[]
+    if dic_elem.has_key(cle):
+      epx[MODULE].append('\n') 
+      epx[MODULE].append('*--ELEMENTS COQUES')
+      for elem in dic_elem[cle]:
+#        print elem     
+        group_ma = self.get_group_ma(elem)
+        epais = elem['EPAIS']
+        if self.ARCHIVAGE['CONT_GENER'] == 'OUI' :
+            self.listEpais.append({'VALE' : epais, 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X21'})
+            self.listEpais2.append({'VALE' : epais**2/6., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X22'})
+        else :
+            self.listEpais.append({'VALE' : 1., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X21'})
+            self.listEpais2.append({'VALE' : 1., 'GROUP_MA' : group_ma, 'NOM_CMP' : 'X22'})
+        st = 'EPAIS  %g  ' %epais
+        #ajouter les group_ma qui ont ete affecte par ces caracteristiques
+        epx[MODULE].append(st+'LECT')
+        for group in group_ma:
+          epx[MODULE].append((len(st)+4)*' '+group)
+        epx[MODULE].append((len(st))*' '+'TERM')
+        if elem.has_key('VECTEUR'):
+# AA       if elem['VECTEUR'] :
+            for group in group_ma :
+                self.dicOrthotropie[group] = elem['VECTEUR']
+         
+    # traduire les elements poutres s'ils existent
+    cle = 'POUTRE'
+    if dic_elem.has_key(cle):
+      concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+      #class permettant de calculer et verifier les vecteurs de poutre dans Europlexus
+      class_poutre = POUTRE(MAILLAGE=concept_maillage,CARA_ELEM=self.CARA_ELEM)
+      epx[MODULE].append('\n') 
+      epx[MODULE].append('*--ELEMENTS POUTRES')
+      for elem in dic_elem[cle]:       
+        group_ma = self.get_group_ma(elem)
+        vecteurs = class_poutre.getvecteurs(group_ma,verif='non')
+        vect_y = vecteurs[group_ma[0]]
+        type_section = elem['SECTION']
+        st = 'GEOP %s ' %type_section
+        if type_section == 'RECTANGLE' :
+          # Correspondance de caracteristique de poutre aster/europlexus
+          dic_corresp = {'HY':'AY','HZ':'AZ'}
+          epx[MODULE].append(st)
+          # ajouter le vecteur definisant l'orientation de la section
+          epx[MODULE].append(len(st)*' ' + 'VX %g' %vect_y[0])
+          epx[MODULE].append(len(st)*' ' + 'VY %g' %vect_y[1])
+          epx[MODULE].append(len(st)*' ' + 'VZ %g' %vect_y[2])
+          # ajouter les caracteristiques de la poutre
+          cara = elem['CARA']
+          vale = elem['VALE']
+          for icar in range(len(cara)):
+            car = cara[icar]
+            val = vale[icar]
+            car_epx = dic_corresp[car]
+            epx[MODULE].append(len(st)*' ' + '%s %g' %(car_epx,val))
+          # ajouter les group_ma qui ont ete affecte par ces caracteristiques
+          epx[MODULE].append(5*' '+'LECT')
+          for group in group_ma:
+            epx[MODULE].append(len(st)*' '+group)
+          epx[MODULE].append(5*' '+'TERM')     
+        else : 
+          UTMESS('A','PLEXUS_4',valk=type_section) 
+      
+    epx[MODULE].append('\n') 
+
+#-----------------------------------------------------------------------   
+  def export_RIGI_PARASOL(self):
+
+    epx = self.epx
+    
+    # Cle identifiant 
+    MODULE = 'RIGI_PARASOL'
+    concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+    self.MApyt = MAIL_PY()
+    self.MApyt.FromAster(concept_maillage)
+
+    # Recuperer la structure du concept sorti de AFFE_CARA_ELEM
+    cara_elem_struc = self.reupere_structure(self.CARA_ELEM)
+    
+    # Recuperer la structure RIGI_PARASOL si elles existe
+    list_rigi_parasol = None
+    if cara_elem_struc.has_key('RIGI_PARASOL'):
+      fact = cara_elem_struc['RIGI_PARASOL']
+      if fact :list_rigi_parasol = self.setlist(fact)
+   
+    # Traduction des fonctions definies dans FONC_PARASOL    
+    #dic_fonc_parasol = self.get_FONC_PARASOL(list_rigi_parasol)
+    dic_fonc_parasol = self.get_FONC_PARASOL()
+    epx[MODULE] = ['*--SUPPORT ELASTIQUE']
+   
+    # si l'utilisateur a lui meme fourni des GROUP_MA de discrets : on commence par la
+    gmaParasol=self.get_group_ma_f(self.FONC_PARASOL)
+    group_union = ''
+    for gma in gmaParasol :
+        if gma not in self.discretParasol :
+            if debug: print gma
+            if debug: print self.discretParasol.keys()
+            raise 'Discret non defini'
+        vale = self.discretParasol[gma]
+        epx[MODULE].append('SUPPORT')
+        epx[MODULE].append(6*' '+'KX %g  KY %g  KZ %g'%(vale[0],vale[1],vale[2]))
+        epx[MODULE].append(6*' '+'KRX %g KRY %g KRZ %g'%(vale[3],vale[4],vale[5]))       
+        for cle_fonc_parasol in dic_fonc_parasol.keys() :
+          epx[MODULE].append(6*' ' + '%s %i' %(cle_fonc_parasol,dic_fonc_parasol[cle_fonc_parasol]) )
+        epx[MODULE].append(6*' '+'LECT %s TERM'%gma)
+        group_union += '%s '%gma
+    if len(gmaParasol) > 0 :
+        epx['MODELE'].append(5*' ' + 'APPU  ' + group_union)
+
+    # concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+    # DEFI_GROUP(reuse         = concept_maillage,
+                 # MAILLAGE      = concept_maillage,
+                 # CREA_GROUP_NO = _F(GROUP_MA = gmaParasol),
+                # );
+        
+   
+   
+    # traduire les rigi_parasol
+    if list_rigi_parasol :   
+      # changement de module parce que les supports issus de RIGI_PARASOL  doivent etre imprimes apres les materiaux
+      # fichiers_parasol = []
+      # cles_oblig = ['UNITE_EUROPLEXUS','GROUP_MA_POI1']
+      # for elem in list_rigi_parasol:
+        # elem_cara = elem['CARA']
+        # if elem_cara == 'K_TR_D_N':
+          # for cle_test in cles_oblig:
+            # if not elem.has_key(cle_test):
+              # pass
+          # unite = elem['UNITE_EUROPLEXUS']
+          # fichier = 'fort.%i' %unite
+          # if fichier not in fichiers_parasol : fichiers_parasol.append(fichier)
+        # else :
+        #   pass
+      # Lecture des valeurs de rigidites generees par aster a partir des rigidites globales definis dans PARA_RIGISOL
+      # ressorts = []        
+      # for fichier in fichiers_parasol :
+        # ressorts.extend(self.lire_fichier(fichier))
+      ressorts = self.CARA_ELEM.toEPX()
+      # Creer un maillage qui, pour chaque noeud de l'interface utilisee dans rigi_parsol, asscocie un group_ma asscie
+      # parce que on n'a pas les memes numeros des noeuds dans Europlexus
+      crea_poi1 = []
+      dic_gma = {}
+      igr = -1
+      # Liste des group_ma associes au noeuds ou le RIGI_PARSOL a ete applique 
+      groups_parasol = []
+      
+      for noeud in ressorts.keys() :
+        # noeud = ressor[0]
+        if not dic_gma.has_key(noeud):
+          igr += 1
+          group_ma = 'SUP%i' %igr
+          dic_gma[noeud] = group_ma
+          groups_parasol.append(group_ma)
+          crea_poi1.append(_F(NOEUD=noeud,NOM_GROUP_MA=group_ma)) 
+      
+      # ATTENTION : a deplacer
+      # crea_maillage a faire de facon centraliser pour RIGI_PARASOL et le POST-TRAITEMENT ailleurs
+      courbe_fact = self.COURBE
+      if courbe_fact is None: courbe_fact = []
+      lnoeuds=sets.Set([])
+      lmailles=sets.Set([])
+      dicma=[]
+      for courbe in courbe_fact :
+        if courbe['GROUP_NO'] != None :
+            noeuds = courbe['GROUP_NO']
+            if type(noeuds) == tuple :
+                for el in noeuds :
+                    lnoeuds.add(el)
+            else :
+                lnoeuds.add(noeuds)
+        if courbe['GROUP_MA'] != None :
+            mailles = courbe['GROUP_MA']
+            if type(mailles) == tuple :
+                for el in mailles :
+                    lmailles.add(el)
+            else :
+                lmailles.add(mailles)
+      for maille in lmailles :
+        dicma.append({'NOM' : maille, 'MAILLE' : maille})
+
+      for no in lnoeuds :
+        if not self.MApyt.gno.has_key(no) :
+            crea_poi1.append(_F(NOEUD=no,NOM_GROUP_MA=no)) 
+      
+      __NEW = CREA_MAILLAGE(MAILLAGE=concept_maillage,
+                             CREA_POI1 = crea_poi1,
+                            );
+      self.NEW_MA = copy.copy(__NEW)
+      # Ecriture sous format europlexus
+      # Indices des composantes
+      indices_comps = {'KX':1,'KY':2,'KZ':3,'KRX':4,'KRY':5,'KRZ':6}
+      for noeud in ressorts :
+        valeurs = ressorts[noeud]
+        epx[MODULE].append('SUPPORT')
+        # ecriture des composantes et de leurs valeurs associees
+        for comp in indices_comps.keys():
+          if debug: print len(valeurs),indices_comps[comp]-1          
+          vale = valeurs[indices_comps[comp]-1]
+          epx[MODULE].append(3*' ' + '%s %s' %(comp,vale))
+        # caracteristiques des translations et des rotations  
+        for cle_fonc_parasol in dic_fonc_parasol.keys() :
+          epx[MODULE].append(3*' ' + '%s %i' %(cle_fonc_parasol,dic_fonc_parasol[cle_fonc_parasol]) )
+        
+        # ecriture du group_ma associe
+        # noeud = ressor[0]
+        group_ma = dic_gma[noeud]
+        epx[MODULE].append(3*' ' + 'LECT %s TERM' %group_ma) 
+    
+      epx[MODULE].append('\n')
+      
+      group_union = 'PARASOL'
+      dicma.append({'NOM' : group_union, 'UNION' : groups_parasol})
+      __NEW = DEFI_GROUP(reuse = __NEW, 
+                MAILLAGE = __NEW,
+                CREA_GROUP_MA = dicma
+                )     
+      
+      # Mettre a jour le module modele qd les ressots existent
+      epx['MODELE'].append(5*' ' + 'APPU  ' + group_union)
+    # Fermer le module modele dans tous les cas 
+    self.multidomaine = 0
+    listInterfaces = self.INTERFACES
+    self.gmaInterfaces=[]
+    if listInterfaces :
+        i=0
+        self.multidomaine = 1
+        for interface in listInterfaces :
+            Lgma1 = self.setlist(interface['GROUP_MA_1'])
+            Lgma2 = self.setlist(interface['GROUP_MA_2'])
+            self.gmaInterfaces.extend(Lgma1)
+            self.gmaInterfaces.extend(Lgma2)
+            for gma in Lgma1 :
+                if i==0 :
+                    epx['MODELE'].append(5*' ' + 'CL3L' + 2*' ' + gma)
+                else :
+                    epx['MODELE'].append(11*' ' + gma)
+            for gma in Lgma2 :
+                    epx['MODELE'].append(11*' ' + gma)
+            i+=1
+    epx['MODELE'].append('TERM')
+    epx['MODELE'].append('\n')
+
+    if self.gmaInterfaces :
+        epx['CHAM_MATER'].append('FANTOME 0. LECT')
+        for gma in self.gmaInterfaces :
+            epx['CHAM_MATER'].append(15*' '+'%s'%gma)
+        epx['CHAM_MATER'].append('           TERM')
+    epx['CHAM_MATER'].append('\n')   
+    
+    
+    # DEFINITION REPERES ORTHOTROPIE QUI DOIT ETRE APRES LES SUPPORTS
+    for gma in self.gmaGLRC :
+        if gma not in self.dicOrthotropie :
+            raise "Erreur : %s non affecte par un repere d'orthotropie : ajouter le mot-cle 'VECTEUR' dans AFFE_CARA_ELEM"%gma
+        vale = self.dicOrthotropie[gma]
+        epx[MODULE].append('COMP ORTS %g %g %g'%(vale[0],vale[1],vale[2]))
+        epx[MODULE].append(3*' '+'LECT')
+        epx[MODULE].append(7*' '+'%s'%gma)
+        epx[MODULE].append(3*' '+'TERM')
+    epx[MODULE].append('\n') 
+#-----------------------------------------------------------------------   
+  def get_FONC_PARASOL(self,list_rigi_parasol=None) :
+    
+    epx = self.epx
+    
+    MODULE = 'FONC_PARASOL'
+    if list_rigi_parasol is not None :
+      if self.FONC_PARASOL is None : UTMESS('F','PLEXUS_12')
+    # else : return None
+    
+    epx[MODULE] = ['*--DEFINITIONS DES FONCTIONS']
+    
+    # Entete de la commande europlexus
+    epx[MODULE].append('FONC')
+    
+    # Cles de FONC_PARASOL dans l'ordre
+    cles = ['NFKT','NFKR']
+    # Dictionnaire faisant la correspondance entre la fonction et son numero europlexus
+    dic_fonc = {} 
+    try : 
+        ifonc = self.ifonc
+        if debug: print 'self.ifonc = %s'%ifonc
+    except : 
+        self.ifonc=0
+        ifonc = self.ifonc     
+        if debug: print 'ifonc = %s'%ifonc
+    if epx.has_key('FONC_MATER') :
+        epx[MODULE].extend(epx['FONC_MATER'])
+    for cle in cles:
+      ifonc += 1
+      dic_fonc[cle] = ifonc
+      fonction = self.get_motcle(self.FONC_PARASOL,cle,code_mess='A')    
+      (temps,valeurs) = fonction.Valeurs()
+      # imprimer les valeurs de la table
+      epx[MODULE].append(5*' ' +'NOPA %i TABLE %i' %(ifonc,len(temps)) )
+      for ival in range(len(temps)):
+         epx[MODULE].append(17*' ' +'%g %g' %(temps[ival],valeurs[ival]))   
+    self.ifonc = ifonc
+    self.dic_fonc = dic_fonc
+    epx[MODULE].append('\n')
+    return dic_fonc
+          
+#-----------------------------------------------------------------------   
+  def export_CHAM_MATER(self): 
+    
+    epx = self.epx
+    
+    # CLe identifiant
+    MODULE = 'CHAM_MATER'
+    
+    epx[MODULE] = ['*--DEFINITION DES MATERIAUX']
+    
+    # Entete de la commande Europlexus courante
+    epx[MODULE].append('MATERIAUX')
+         
+    # Recuperer la structure sous le mot_cle facteur AFFE de AFFE_MATER 
+    affe_mater = self.reupere_structure(self.CHAM_MATER,'AFFE')
+    affe_mater = self.setlist(affe_mater)
+    
+    # Dictionnaire stoquant les caracteristiques mecaniques et les group_ma associe a chaque materiau
+    dic_mater = {}
+    typMat = {}
+    # GLRC impose de définir l'orientation : on stocke dans gmaGLRC les GMA dont il faudra retrouver l'orientation dans MODI_MAILLAGE/ORIE_NORM_COQUE
+    self.gmaGLRC = []
+    epx['FONC_MATER'] = []
+    ref_fonc=[]
+    for affe in affe_mater :
+      # Recuperer le concept du materiau defini par DEFI_MATERIAU
+      concept_mater = affe['MATER']
+      # Recuperer le nom du materiau
+      nom_mater = concept_mater.get_name()
+      # Recuperer le group_ma concerne
+      group_ma = self.get_group_ma(affe)
+      if debug: print 'type(group_ma) = %s'%type(group_ma)
+      if not dic_mater.has_key(nom_mater):
+         dic_mater[nom_mater] = {'GROUP_MA':[]}
+         # Recuperer les caracteristiques elastiques du materiau
+         elas = self.reupere_structure(concept_mater,'ELAS')
+         if elas :
+            typMat[nom_mater] = 'ELAS'
+            for car in ['E','RHO','NU']:
+              dic_mater[nom_mater][car] = elas[car]
+            for car in ['AMOR_ALPHA','AMOR_BETA'] :
+              if elas.has_key(car) :
+                dic_mater[nom_mater][car] = elas[car]
+              else :
+                dic_mater[nom_mater][car] = None                 
+         beton = self.reupere_structure(concept_mater,'BETON')
+         if beton  :
+            typMat[nom_mater] = 'GLRC'
+            self.gmaGLRC.extend(group_ma)
+            dic_mater[nom_mater]['LINER']=[]
+            dic_mater[nom_mater]['NAPPE']=[]
+            materBeton = beton['MATER']
+            elasBeton = self.reupere_structure(materBeton,'ELAS')
+            dic_mater[nom_mater]['BETON']={}
+            for car in ['E','RHO','NU']:
+              dic_mater[nom_mater]['BETON'][car] = self.get_motcle(elasBeton,car)
+            for car in ['AMOR_ALPHA','AMOR_BETA']:
+              dic_mater[nom_mater]['BETON'][car] = self.get_motcle(elasBeton,car,None)
+            ecroBeton = self.reupere_structure(materBeton,'BETON_ECRO_LINE')
+            for car in ['SYT','SYC']:
+              dic_mater[nom_mater]['BETON'][car] = self.get_motcle(ecroBeton,car,None)
+            for car in ['EPAIS','GAMMA','QP1','QP2','C1N1','C1N2','C1N3','C2N1','C2N2','C2N3','C1M1','C1M2','C1M3','C2M1','C2M2','C2M3'] :
+              dic_mater[nom_mater]['BETON'][car] = self.get_motcle(beton,car)
+            for car in ['OMT','EAT','BT1','BT2'] :
+              dic_mater[nom_mater]['BETON'][car] = self.get_motcle(beton,car,None)
+            for car in ['MP1X','MP1Y','MP2X','MP2Y'] :
+              car_temp = self.get_motcle(beton,car,None)
+              if debug: print 'type(car_temp) = %s'%type(car_temp)
+              dic_mater[nom_mater]['BETON'][car] = None
+              if car_temp :
+                  if type(car_temp) == float :
+                    dic_mater[nom_mater]['BETON'][car] = car_temp
+                  else :
+                    if debug: print dir(car_temp)
+                    try : 
+                        ifonc = self.ifonc
+                    except : 
+                        self.ifonc=0
+                        ifonc = self.ifonc     
+                    ifonc += 1
+                    val = car_temp.Valeurs()
+                    x = val[:len(val):2]
+                    y = val[1:len(val):2]
+                    # imprimer les valeurs de la table
+                    epx['FONC_MATER'].append(5*' ' +'%i LSQU 2 TABLE %i' %(ifonc,len(x)) )
+                    for ival in range(len(x)):
+                       epx['FONC_MATER'].append(17*' ' +'%g %g' %(x[ival],y[ival]))   
+                    dic_mater[nom_mater]['BETON'][car] = 'FONC %i'%ifonc
+                    self.ifonc=ifonc
+                
+         
+         cable = self.reupere_structure(concept_mater,'CABLE_PREC')
+         if cable  :
+            materCable = cable['MATER']
+            elasCable = self.reupere_structure(materCable,'ELAS')
+            ecroCable = self.reupere_structure(materCable,'ECRO_LINE')
+            dic_mater[nom_mater]['CABLE']={}
+            for car in ['E','NU']:
+              dic_mater[nom_mater]['CABLE'][car] = elasCable[car]           
+            for car in ['SY']:
+              dic_mater[nom_mater]['CABLE'][car] = ecroCable[car]
+            for car in ['OMX','OMY','RX','RY','PREX','PREY'] :
+              dic_mater[nom_mater]['CABLE'][car] = cable[car]
+         Lnappes = self.setlist(self.reupere_structure(concept_mater,'NAPPE'))
+         if Lnappes  :
+            for nappe in Lnappes :
+                dic_tmp = {}
+                materNappe = nappe['MATER']
+                elasNappe = self.reupere_structure(materNappe,'ELAS')
+                ecroNappe = self.reupere_structure(materNappe,'ECRO_LINE')
+                for car in ['E','NU']:
+                  dic_tmp[car] = elasNappe[car]           
+                for car in ['SY']:
+                  if ecroNappe :
+                    dic_tmp[car] = ecroNappe[car]
+                  else :
+                    dic_tmp[car] = None
+                for car in ['OMX','OMY','RX','RY'] :
+                  dic_tmp[car] = nappe[car]
+                for car in ['FS',] :
+                  if nappe.has_key(car) :
+                    dic_tmp[car] = nappe[car]
+                  else :
+                    dic_tmp[car] = None
+                dic_mater[nom_mater]['NAPPE'].append(dic_tmp)
+         Lliners = self.setlist(self.reupere_structure(concept_mater,'LINER'))
+         if Lliners :
+            for liner in Lliners :
+                dic_tmp = {}
+                materLiner = liner['MATER']
+                elasLiner = self.reupere_structure(materLiner,'ELAS')
+                ecroLiner = self.reupere_structure(materLiner,'ECRO_LINE')
+                for car in ['E','NU']:
+                  dic_tmp[car] = elasLiner[car]           
+                for car in ['SY']:
+                  dic_tmp[car] = ecroLiner[car]
+                for car in ['OML','RLR'] :
+                  dic_tmp[car] = liner[car]
+                dic_mater[nom_mater]['LINER'].append(dic_tmp)
+                
+
+      if debug: print 'MATER = %s \n type = %s \n dic = %s'%(nom_mater,typMat, dic_mater[nom_mater])
+      dic_mater[nom_mater]['GROUP_MA'].extend(group_ma)
+      
+      # if gmaGLRC :
+          # concept_maillage = self.reupere_structure(self.MODELE,'MAILLAGE')
+          # if debug: print 'ETAPES MAILLAGES'
+          # if debug: print dir(concept_maillage)
+          # if debug: print concept_maillage.executed
+          # if debug: print concept_maillage.etape
+          # if debug: print dir(concept_maillage.etape)
+          # if debug: print concept_maillage.etape.get_liste_etapes()
+          # if debug: print concept_maillage.etape.valeur
+        
+      
+    # Impression au format Europlexus
+    
+    for nom_mater in dic_mater.keys():
+      epx[MODULE].append('*--MATERIAU %s' %nom_mater)
+      # mot cle indicant qu'il s'agit des caracteristiques lineaires du materiau
+      if typMat[nom_mater] == 'ELAS' :
+          dic_corresp = {'E':'YOUNG','NU':'NU','RHO':'RO'}
+          dic_corresp2 ={'AMOR_ALPHA':'KRAY','AMOR_BETA':'MRAY'}
+          epx[MODULE].append('LINE')
+          for car_aster in dic_corresp.keys():
+            vale    = dic_mater[nom_mater][car_aster]
+            car_epx = dic_corresp[car_aster]
+            if vale is not None :
+              epx[MODULE].append('%s %g' %(car_epx,vale))
+          for car_aster in dic_corresp2.keys():
+            vale    = dic_mater[nom_mater][car_aster]
+            car_epx = dic_corresp2[car_aster]
+            if vale is not None :
+              epx[MODULE].append('%s %g' %(car_epx,vale))
+      else : #GLRC
+        dic_corres1 = {'RHO':'RO','EPAIS':'H','E':'EB','NU':'NUB'}
+        dic_corresNapp = {'E' : 'EA','SY':'FY','OMX':'OMX','OMY':'OMY','RX':'RX','RY':'RY','FS':'FS'}
+        dic_corresPrec = {'E' : 'EA','SY':'FY','OMX':'OMX','OMY':'OMY','RX':'RX','RY':'RY'}
+        dic_corresLinr = {'E' : 'EA','SY':'FY','OML':'OMLR','NU':'NULR','RLR':'RLR'}
+        dic_corres2 = {'OMT' : 'OMT','EAT':'EAT','BT1':'BT1','BT2':'BT2','SYT' : 'FT','GAMMA':'GAMM','QP1':'QP1','QP2':'QP2','C1N1':'C1N1','C1N2':'C1N2','C1N3':'C1N3','C2N1':'C2N1','C2N2':'C2N2','C2N3':'C2N3','C1M1':'C1M1','C1M2':'C1M2','C1M3':'C1M3','C2M1':'C2M1','C2M2':'C2M2','C2M3':'C2M3','SYC':'FC'}
+        dic_corres2b = {'MP1X':'MP1X','MP2X':'MP2X','MP1Y':'MP1Y','MP2Y':'MP2Y',}
+        dic_corres3 = {'PREX' : 'PREX', 'PREY' : 'PREY'}
+        dic_corres4 = {'AMOR_ALPHA':'KRAY','AMOR_BETA':'MRAY'}
+        epx[MODULE].append('GLRC DAMA')
+        for car_aster in dic_corres1.keys():
+            vale    = dic_mater[nom_mater]['BETON'][car_aster]
+            car_epx = dic_corres1[car_aster]
+            if vale is not None :
+                epx[MODULE].append('%s %g' %(car_epx,vale))
+        nlit = len(dic_mater[nom_mater]['NAPPE'])+len(dic_mater[nom_mater]['LINER'])
+        if dic_mater[nom_mater].has_key('CABLE') : 
+            nlit+=1
+        if nlit :
+            epx[MODULE].append('%s %g' %('NLIT',nlit))
+        for nappe in dic_mater[nom_mater]['NAPPE'] :
+            epx[MODULE].append('NAPP')
+            for car_aster in dic_corresNapp.keys():
+                if nappe.has_key(car_aster) :
+                    vale    = nappe[car_aster]
+                    car_epx = dic_corresNapp[car_aster]
+                    if vale is not None:
+                        epx[MODULE].append('%s %g' %(car_epx,vale))
+        if dic_mater[nom_mater].has_key('CABLE') : 
+            epx[MODULE].append('PREC')
+            for car_aster in dic_corresPrec.keys():
+                vale    = dic_mater[nom_mater]['CABLE'][car_aster]
+                car_epx = dic_corresPrec[car_aster]
+                if vale is not None :
+                    epx[MODULE].append('%s %g' %(car_epx,vale))
+        for liner in dic_mater[nom_mater]['LINER'] :
+            epx[MODULE].append('LINR')
+            for car_aster in dic_corresLinr.keys():
+                vale    = liner[car_aster]
+                car_epx = dic_corresLinr[car_aster]
+                if vale is not None :
+                    epx[MODULE].append('%s %g' %(car_epx,vale))
+        for car_aster in dic_corres2.keys():
+            vale    = dic_mater[nom_mater]['BETON'][car_aster]
+            car_epx = dic_corres2[car_aster]
+            if vale is not None :
+                if type(vale) == float :
+                    epx[MODULE].append('%s %g' %(car_epx,vale))
+                else :
+                    epx[MODULE].append('%s %s' %(car_epx,vale))
+        for car_aster in dic_corres2b.keys():
+            vale    = dic_mater[nom_mater]['BETON'][car_aster]
+            car_epx = dic_corres2b[car_aster]
+            if vale is not None :
+                if type(vale) == float :
+                    epx[MODULE].append('%s %g' %(car_epx,vale))
+                else :
+                    epx[MODULE].append('%s %s' %(car_epx,vale))
+        if dic_mater[nom_mater].has_key('CABLE') : 
+            for car_aster in dic_corres3.keys():
+                vale    = dic_mater[nom_mater]['CABLE'][car_aster]
+                car_epx = dic_corres3[car_aster]
+                if vale is not None :
+                    epx[MODULE].append('%s %g' %(car_epx,vale))
+        for car_aster in dic_corres4.keys():
+            vale    = dic_mater[nom_mater]['BETON'][car_aster]
+            car_epx = dic_corres4[car_aster]
+            if vale is not None :
+                epx[MODULE].append('%s %g' %(car_epx,vale))
+      
+          # ajouter les group_ma qui ont ete affecte par ces caracteristiques
+      epx[MODULE].append(3*' '+'LECT')
+      for group in dic_mater[nom_mater]['GROUP_MA']:
+        epx[MODULE].append(7*' '+group)
+      epx[MODULE].append(3*' '+'TERM')
+
+    
+    return epx
+    
+#-----------------------------------------------------------------------   
+  def export_EXCIT(self):
+  
+    epx = self.epx
+    
+    # CLe identifiant
+    MODULE = 'EXCIT'
+    
+    epx[MODULE] = ['*--DEFINITION DES CHARGEMENTS et DES CONDITIONS AUX LIMITES']
+    
+    # Entete de la commande Europlexus courante
+    #epx[MODULE].append('CHARGEMENT')
+    
+    excit_list = self.setlist(self.EXCIT)
+    
+    # Traduction de ddl_impo
+    dic_ddl_impo = {'DX':1,'DY':2,'DZ':3,'DRZ':4,'DRY':5,'DRZ':6}
+    
+    # Initialisation des variables decrivant le chargement et les conditions de blocage
+    CHARGEMENT = []
+    LIAISON   = []
+    
+    for excit in excit_list:
+      concept_charge = excit['CHARGE']
+      pres_rep_list = self.reupere_structure(concept_charge,'PRES_REP')
+      ddl_impo_list = self.reupere_structure(concept_charge,'DDL_IMPO')
+      pres_rep_list = self.setlist(pres_rep_list)
+      ddl_impo_list = self.setlist(ddl_impo_list)
+      # PRES_REP
+      if pres_rep_list :
+        if len(CHARGEMENT) == 0 : CHARGEMENT = ['CHARGEMENT']
+        fonction = self.get_motcle(excit,'FONC_MULT',code_mess='A')
+        if fonction is None:
+          UTMESS('F','PLEXUS_7')
+        (temps,valeurs) = fonction.Valeurs()
+        for pres_rep in  pres_rep_list :
+          pression = pres_rep['PRES']
+          group_ma = self.get_group_ma(pres_rep)
+           
+          CHARGEMENT.append(2*' ' + '1 FACTO 2')
+          CHARGEMENT.append(6*' ' +'PRESS COQU %g' %pression)
+          # ajouter les group_ma qui ont ete affecte par ces caracteristiques
+          CHARGEMENT.append(6*' '+'LECT')
+          for group in group_ma:
+            CHARGEMENT.append(10*' '+group)
+          CHARGEMENT.append(6*' '+'TERM') 
+          # imprimer les valeurs de la table
+          CHARGEMENT.append(6*' ' +'TABLE %i' %len(temps))
+          for ival in range(len(temps)):
+            CHARGEMENT.append(10*' ' +'%g %g' %(temps[ival],valeurs[ival]))
+      # DDL_IMPO
+      #if debug: print 'ddl_impo_list',ddl_impo_list
+      if ddl_impo_list :
+        #UTMESS('A','PLEXUS_8')
+        if len(LIAISON) == 0 : LIAISON = ['LIAISON']
+        for ddl_impo in ddl_impo_list:
+          blocage = ''
+          for cle in dic_ddl_impo.keys() :
+            vale = self.get_motcle(ddl_impo,cle,code_mess='None')
+            if vale is not None:
+              if vale != 0 : UTMESS('F','PLEXUS_13')
+              else : 
+                blocage += `dic_ddl_impo[cle]`
+          # recupere les entites geometriques
+          for entite in ['GROUP_MA','GROUP_NO'] :
+            group_ma = self.get_motcle(ddl_impo,entite,code_mess='None')
+            if group_ma is not None : 
+              group_ma = self.setlist(group_ma);break
+          LIAISON.append(' '*2 + 'BLOQ %s' %blocage)
+          # ajouter les group_ma qui ont ete affecte par ces caracteristiques
+          LIAISON.append(6*' '+'LECT')
+          for group in group_ma:
+            LIAISON.append(10*' '+group)
+          LIAISON.append(6*' '+'TERM') 
+            
+      if not ddl_impo_list and not pres_rep_list :
+        UTMESS('F','PLEXUS_9')
+    
+    # Transmettre les commandes a la liste global epx
+    for var in [CHARGEMENT,LIAISON] :
+      if len(var) > 0 :
+        epx[MODULE].append('\n')
+        for ligne in var : epx[MODULE].append(ligne)
+    
+    epx[MODULE].append('\n')    
+
+#-----------------------------------------------------------------------   
+  def Correspondance_champ(self):
+   
+    # Dictionnaire de passage de champs Aster --> Europlexus
+    dic_champ = {'DEPL':'DEPLACEMENT','VITE':'VITESSE','ACCE':'ACCELERATION',
+                 'SIEF_ELGA':'CONT','EPSI_ELGA':'EPST','VARI_ELGA':'ECRO'}
+    
+    # Dictionnaire de passage de composantes Aster --> Europlexus
+    dic_cmp = {}
+    for cham in ['DEPL','VITE','ACCE'] :
+      dic_cmp[cham] = {'DX' : 1,'DY':2,'DZ':3,'DRX':4,'DRY':5,'DRZ':6}
+    
+    dic_cmp['SIEF_ELGA']  = {'SIXX':1,'SIYY':2,'SIZZ':3,'SIXY':4,'SIXZ':5,'SIYZ':6,'NXX':1,'NYY':2,'NXY':3,'MXX':4,'MYY':5,'MXY':6,'QX':7,'QY':8}
+    dic_cmp['VARI_ELGA'] = {}
+    for ii in range(1,25):
+      dic_cmp['VARI_ELGA']['V%i'%ii] = ii
+    
+    self.dic_champ = dic_champ  
+    self.dic_cmp = dic_cmp
+        
+    
+#-----------------------------------------------------------------------   
+  def export_ECRITURE(self):
+    
+    epx = self.epx
+    
+    self.Correspondance_champ()
+             
+    # CLe identifiant
+    MODULE = 'ECRITURE'
+
+    dcles_freq = {'FREQ':'PAS_NBRE', 'TFREQ':'PAS_INST'}
+
+    def get_freq(fact):
+      for cle_freq in dcles_freq.keys(): 
+# AA        vale_freq = self.get_motcle(fact,cle_freq,code_mess=None)
+        vale_freq = self.get_motcle(fact,dcles_freq[cle_freq],code_mess=None)
+        if vale_freq is not None : break
+      return cle_freq,vale_freq  
+      
+    def get_freq2() :
+        if self.PAS_NBRE_COURBE :
+            return 'FREQ',self.PAS_NBRE_COURBE
+        elif self.PAS_INST_COURBE :
+            return 'TFREQ',self.PAS_INST_COURBE
+        else :
+            raise 'Erreur programmation'
+        
+
+    def string2list(var) :
+      if types.TypeType(var) == types.StringType : var = (var,)
+      return var
+
+
+    epx[MODULE] = ['*--ECRITURES DES RESULTATS']
+    epx[MODULE] = ['opti K2GP']
+    # Entete de la commande Europlexus courante
+    epx[MODULE].append('ECRITURE')
+
+
+    # Traitement du mot-cle facteur OBSERVATION (EPX = LISTING)
+# AA    listing_fact = self.ECRITURE['LISTING']
+    listing_fact = self.OBSERVATION
+    nom_cham = string2list(listing_fact['NOM_CHAM'])
+
+    cle_freq_listing, vale_freq_listing = get_freq(listing_fact)
+# AA   cles_entite = ['POINTS','ELEMEMTS']
+    dcles_entite = {'POINT':'GROUP_NO', 'ELEM':'GROUP_MA'}
+# AA    dcles_tout   = {'POINTS':'TOUT_GROUP_NO', 'ELEMEMTS':'GROUP_MA'}
+    cles_entite = dcles_entite.keys()
+
+    # Ecriture format Europlexus
+    
+    # Ecriture LISTING
+    st = 2*' '   
+    for cham_aster in nom_cham:
+      cham_epx = self.dic_champ[cham_aster]
+      st +=  '%s ' % cham_epx  
+    st += ' %s %g' % (cle_freq_listing,vale_freq_listing)
+    st += ' NOPO NOEL'
+    epx[MODULE].append(st)
+    for cle in cles_entite:
+# AA    for cle in cles_entite :
+# AA      entite_geo = self.get_motcle(listing_fact ,cle, code_mess=None)
+# AA       entite_geo = string2list(entite_geo)
+
+       entite_geo = string2list(listing_fact[dcles_entite[cle]])
+       # if listing_fact['TOUT_%s' % dcles_entite[cle]] == 'OUI': epx[MODULE].append(2*' ' +'%s TOUS ' % cle)
+       # elif entite_geo is None:                                 epx[MODULE].append(2*' ' +'NO%s' % cle)
+       # else:
+          # epx[MODULE].append(2*' ' +'%s LECT' %cle)
+          # for group in entite_geo :
+             # epx[MODULE].append(6*' '+group)
+          # epx[MODULE].append(2*' '+'TERM') 
+
+#        if entite_geo is None : 
+#           epx[MODULE].append(2*' ' +'NO%s' %cle)
+#        elif  entite_geo[0] == 'TOUS' :
+#          epx[MODULE].append(2*' ' +'%s TOUS ' %cle)
+#        else :
+#           epx[MODULE].append(2*' ' +'%s LECT' %cle)
+#           for group in entite_geo :
+#              epx[MODULE].append(6*' '+group)
+#           epx[MODULE].append(2*' '+'TERM') 
+#           
+
+    # Ecriture FICHIER ALICE UTILISE par le mot-cle facteur COURBE
+# AA    courbe_fact = self.ECRITURE['COURBE']
+    courbe_fact = self.COURBE
+    if courbe_fact is not None :
+
+      # dcourbe=[]
+      # for j in courbe_fact:
+         # dcourbe.append(j.cree_dict_valeurs(j.mc_liste))
+         # for i in dcourbe[-1].keys():
+            # if dcourbe[-1][i]==None : del dcourbe[-1][i]
+
+      # if debug: print 'dcourbe=', dcourbe
+
+      cle_freq, vale_freq = get_freq2()
+      fichier_alit = self.pwd + self.REPE + os.sep + self.nom_fichiers['ALIT']
+      epx[MODULE].append(2*' ' + "FICH ALIT 11  %s %g" %(cle_freq,vale_freq))
+
+      # Liste les noeuds a postraiter
+      lnoeuds=sets.Set([])
+      lmailles=sets.Set([])
+      for courbe in courbe_fact :
+        if courbe['GROUP_NO'] != None :
+            noeuds = courbe['GROUP_NO']
+            if debug: print type(noeuds)
+            # liste de noeud ou un seul noeud ?
+            if type(noeuds) == tuple :
+                for el in noeuds :
+                    lnoeuds.add(el)
+            else :
+                lnoeuds.add(noeuds)
+        elif courbe['GROUP_MA'] != None :
+            mailles = courbe['GROUP_MA']
+            if debug: print type(mailles)
+            # liste de mailles ou une seule maille ?
+            if type(mailles ) == tuple :
+                for el in mailles :
+                    lmailles.add(el)
+            else :
+                lmailles.add(mailles)           
+        else :
+            raise 'Erreur ni noeud ni maille'
+      # sys.exit()
+      # tables = self.get_motcle(courbe_fact,'TABLE',code_mess='F')
+      # tables = self.setlist(tables)
+
+      # icourbe = 0
+      # for table in tables:
+        # icourbe += 1
+        # noeud = table['NOEUD']
+        # list_noeuds.append(noeud)
+      # Ecriture la liste des noeuds sous format epx
+      if lnoeuds :
+          epx[MODULE].append(4*' ' +'POINTS')
+          epx[MODULE].append(6*' ' +'LECT ')
+          for noeud in lnoeuds :
+            epx[MODULE].append(8*' '+noeud)
+          epx[MODULE].append(6*' '+'TERM')   
+      if lmailles :
+          epx[MODULE].append(4*' ' +'ELEM')
+          epx[MODULE].append(6*' ' +'LECT ')
+          for maille in lmailles :
+            epx[MODULE].append(8*' '+maille)
+          epx[MODULE].append(6*' '+'TERM')   
+     
+     
+      # Pas besoin d'elements 
+      # epx[MODULE].append(4*' ' + 'NOELEMENTS')
+    
+    # Ecriture fichier MED representant les champs aux noeuds et aux points de gauss
+    # Traitement du mot-cle facteur ARCHIVAGE
+#    # Traitement du mot-cle facteur CHAMP
+#    champ_fact = self.ECRITURE['CHAMP']
+    champ_fact = self.ARCHIVAGE
+    if champ_fact is not None :
+      cle_freq_champ,vale_freq_champ = get_freq(champ_fact)
+      epx[MODULE].append(2*' ' + 'FICHIER MED')
+      # chemin complet du fichier med
+      fichier_med = self.pwd + self.REPE + os.sep + self.nom_fichiers['MED']
+      epx[MODULE].append(2*' ' + "'%s'" %fichier_med)
+      cle_freq,vale_freq = get_freq(champ_fact)
+      epx[MODULE].append(2*' ' + ' %s %g' %(cle_freq_champ,vale_freq_champ))
+      
+      # groupes de mailles du modele
+      entite_geo={}
+      entite_geo['ELEM'] = []
+      for model in ['DKT3','Q4GS'] :
+         if model in self.modelisations :
+             entite_geo['ELEM'].extend(self.dic_gma[model])
+      entite_geo['POINT'] = []
+      for model in ['DKT3','Q4GS','POUT'] :
+         if model in self.modelisations :
+             entite_geo['POINT'].extend(self.dic_gma[model])
+      for cle in cles_entite :
+       epx[MODULE].append(2*' ' +'%s LECT' %cle)
+       for group in entite_geo[cle] :
+          epx[MODULE].append(6*' '+group)
+       epx[MODULE].append(2*' '+'TERM') 
+    
+    # Une ligne de saut
+    epx[MODULE].append('\n')
+    
+#-----------------------------------------------------------------------   
+
+  def export_POST_COURBE(self):
+
+    # Suite de postraitement permettant d'ecrire des fichiers ASCII 
+    # des grandeurs demandees
+    
+    # Tester si le mot_cle facteur COURBE a ete renseigne
+# AA   courbe_fact = self.ECRITURE['COURBE']
+    courbe_fact = self.COURBE
+    if courbe_fact is None : return
+
+    epx = self.epx
+                 
+    # Cle identifiant
+    MODULE = 'POST_COURBE'
+
+    # Ecriture fort Europlexus
+    # Entete de la commande courante
+    epx[MODULE] = ['SUITE\n']
+    # epx[MODULE].append("'TITRE'")
+#    unite_alit = self.get_motcle(courbe_fact,'UNITE_ALIT',code_mess=None)
+#    if debug: print 'unite_alit=', unite_alit
+    if self.UNITE_COURBE: fichier_courbes = os.path.join(self.pwd, 'fort.%s' % str(self.UNITE_COURBE))
+    else:                 fichier_courbes = self.pwd + self.REPE + os.sep + self.nom_fichiers['PUN']
+    fichier_alit = self.pwd + self.REPE + os.sep + self.nom_fichiers['ALIT']
+    epx[MODULE].append("RESULTAT ALICE TEMPS 11")
+    epx[MODULE].append("OPNF FORMAT 17 '%s'" %fichier_courbes)    
+    epx[MODULE].append("SORTIES GRAPHIQUES")
+    # epx[MODULE].append("PERFO '%s'"%fichier_courbes)
+    epx[MODULE].append("AXTEMPS 1. 'TEMPS(s)'")
+
+    # recuperer le mot-cle facteur COURBE
+# AA    courbe_fact = self.ECRITURE['COURBE']
+    courbe_fact = self.COURBE
+    # recuperer les mot_cle TABLE
+    # tables = self.get_motcle(courbe_fact,'TABLE',code_mess='F')
+    #tables = self.setlist(tables)
+
+    # Dictionnaire decrivant les legendes des abscisses et ordodonnees des courbes imprimees
+    # et utilisee dans get_tables
+    self.legend_courbes = {}
+    entites_courbe = ['GROUP_NO','GROUP_MA'] 
+    entite_EPX={'GROUP_NO' : 'NOEUD', 'GROUP_MA' : 'ELEM'}
+    icourbe = 0
+    # for table in tables:
+    lnoeuds = []
+    for table in courbe_fact :
+      for entite_type in entites_courbe :
+        try : entite = table[entite_type]
+        except : entite = None
+        if entite is not None :        
+            cham_aster = table['NOM_CHAM']
+            cmp_aster = table['NOM_CMP']
+            cham_epx = self.dic_champ[cham_aster]
+            cmp_epx  = self.dic_cmp[cham_aster][cmp_aster]
+            # ylabel   = cham_aster + '_' + cmp_aster
+            ylabel   = cmp_aster
+            if type(entite) is not tuple : entite = [entite,]
+            for el in entite :
+                icourbe+=1
+                label = ylabel + '_%s'%el
+                if entite_type == 'MAILLE' :
+                    label = label+'_%s'%table['NUM_GAUSS']
+                st = "COURBE %i '%s' %s COMP %i "% (icourbe,label,cham_epx,cmp_epx)
+                if entite_type == 'MAILLE' :
+                    st=st+"GAUSS %i "%table['NUM_GAUSS']
+                st=st+"%s LECT %s TERM"%(entite_EPX[entite_type],el)
+                if debug: print 'st = %s'%st
+                epx[MODULE].append(st)
+                # epx[MODULE].append("LIST %i AXES 1. '%s'" % (icourbe,ylabel))
+                st = "LIST %s AXES 1. '%s'" % (icourbe,label)
+                if debug: print 'st = %s'%st
+                epx[MODULE].append(st)
+                self.legend_courbes[icourbe] = ['TEMPS',label]
+        
+    
+
+    # Une ligne de saut
+    epx[MODULE].append('\n')
+
+#-----------------------------------------------------------------------   
+  def export_CALCUL(self):
+    
+    epx = self.epx
+    
+    # CLe identifiant
+    MODULE = 'CALCUL'
+
+    # Entete de la commande Europlexus courante
+    epx[MODULE] = ['*--OPTION DE CALCUL']
+    epx[MODULE].append('')
+    type_discr = self.CALCUL['TYPE_DISCRETISATION']
+    
+    epx[MODULE].append('OPTION PAS %s' %type_discr)
+      
+    if  type_discr == 'AUTO':
+      cstab = self.CALCUL['CSTAB']
+      epx[MODULE].append(7*' ' + 'CSTAB %s' %cstab)
+    
+    listInterfaces = self.INTERFACES
+    listDomaines = self.DOMAINES
+    domaineInterfaces = {}
+    if listDomaines :
+        epx[MODULE].append('\n')
+        epx[MODULE].append('*--DEFINITION DES SOUS DOMAINES')
+        epx[MODULE].append('')
+        epx[MODULE].append('STRUCTURE %s'%len(listDomaines))
+        for interface in listInterfaces :
+            Lgma1 = self.setlist(interface['GROUP_MA_1'])
+            Lgma2 = self.setlist(interface['GROUP_MA_2'])
+            idS1 = interface['IDENT_DOMAINE_1']
+            idS2 = interface['IDENT_DOMAINE_2']
+            if not domaineInterfaces.has_key(idS1) :
+                domaineInterfaces[idS1]= []
+            if not domaineInterfaces.has_key(idS2) :
+                domaineInterfaces[idS2]= []
+            domaineInterfaces[idS1].extend(Lgma1)
+            domaineInterfaces[idS2].extend(Lgma2)
+    else : 
+        listDomaines = []
+    for domaine in listDomaines :
+        Lgma = self.setlist(domaine['GROUP_MA'])
+        id  = domaine['IDENTIFIANT']
+        epx[MODULE].append(3*' '+'DOMA LECT')
+        for gma in Lgma :
+            epx[MODULE].append(12*' '+gma)
+        for gma in domaineInterfaces[id] :
+            epx[MODULE].append(12*' '+gma)
+        epx[MODULE].append(8*' '+'TERM')
+        epx[MODULE].append(8*' '+'IDENTIFIANT %s\n'%id)
+        
+    
+    if listInterfaces :
+        epx[MODULE].append('')
+        epx[MODULE].append('INTERFACE %s'%len(listInterfaces))
+    else :
+        listInterfaces = []
+    for interface in listInterfaces :
+        Lgma1 = self.setlist(interface['GROUP_MA_1'])
+        Lgma2 = self.setlist(interface['GROUP_MA_2'])
+        idS1 = interface['IDENT_DOMAINE_1']
+        idS2 = interface['IDENT_DOMAINE_2']
+        tole = interface['TOLE']
+        epx[MODULE].append(3*' '+'MORTAR TOLE %g'%tole)
+        epx[MODULE].append(7*' '+'DOMA %s LECT'%idS1)
+        for gma in Lgma1 :
+            epx[MODULE].append(13*' '+gma)
+        epx[MODULE].append(10*' '+'TERM')
+        epx[MODULE].append(7*' '+'DOMA %s LECT'%idS2)
+        for gma in Lgma2 :
+            epx[MODULE].append(13*' '+gma)
+        epx[MODULE].append(10*' '+'TERM')
+                
+    epx[MODULE].append('\n')
+    epx[MODULE].append('*--LANCEMENT DE CALCUL')
+    epx[MODULE].append('')
+    calcul = 'CALCUL'
+# AAA    cles = ['INST_INIT','PASFIX','INST_FIN','DTMAX']
+    cles = ['INST_INIT','PASFIX','INST_FIN']
+    dcles = {'INST_INIT':'TINI', 'PASFIX':'PASFIX', 'INST_FIN':'TFIN'}
+    for cle in dcles.keys():
+      try : calcul += ' %s %g' %(dcles[cle], self.CALCUL[cle])
+      except : pass
+    # Doit etre mis en entier
+    try : calcul += ' %s %d' %('NMAX',self.CALCUL['NMAX'])
+    except : pass
+    epx[MODULE].append(calcul) 
+    epx[MODULE].append('\n')
+    #epx[MODULE].append('FIN')  
+    
+  
+#-----------------------------------------------------------------------   
+  def ecrire_fichier(self,):
+    
+    fichier = self.REPE + os.sep + self.nom_fichiers['COMMANDE']
+
+    # ordre des modules de definition du modele EPX
+    modules = ['DEBUT','MAILLAGE','DIME','MODELE','CARA_ELEM','FONC_PARASOL','CHAM_MATER','RIGI_PARASOL','EXCIT','ECRITURE','CALCUL','POST_COURBE']
+    
+    #les modules MODELE et RIGI_PARASOL doivent etre executes avant MAILLAGE 
+    # car le maillage peut etre modifie dans ces modules
+    modules_exe = []
+    modules_exe.extend(modules)
+    modules_exe.remove('MAILLAGE') 
+    modules_exe.append('MAILLAGE')
+    
+    # Excecution des differentes modules
+    for module in modules_exe:
+      fct = 'export_%s' %module
+      if hasattr(self,fct) : 
+        eval('self.'+fct+'()')  
+      else :  
+        print 'module %s pas encore developpe' %fct
+    
+    # Ecriture du fichier texte contenant toutes les commandes Europlexus
+    fd = open(fichier,'w')
+    for module in modules :
+      if self.epx.has_key(module) :
+        for ll in self.epx[module]:
+          if debug: print 'EPX : %s'%ll
+          fd.write('%s\n'%ll)
+    # Fin du fichier de commandes epx      
+    fd.write('FIN')      
+    fd.close()
+
+#-----------------------------------------------------------------------   
+  def get_table(self,icourbe=1,fichier='auto') :
+   
+    global table
+    
+    if not hasattr(self,'courbes'): 
+      if fichier == 'auto' : fichier = self.pwd + self.REPE + os.sep + self.nom_fichiers['PUN']
+      if not os.path.isfile(fichier) : return
+      self.courbes = self.lire_pun(fichier=fichier)
+    
+    if not os.path.isfile(fichier) : return
+    if debug: print self.courbes,type(self.courbes)
+    nc = 0
+    para_ordonnee = []
+    dico = []
+    for icourbe in self.courbes :
+        valeurs = self.courbes[icourbe]
+        if debug: print 'icourbe = %s ; valeurs = %s'%(icourbe, valeurs)
+        if nc == 0 :
+            para_abscisse = self.legend_courbes[icourbe][0]
+            vale_abscisse = valeurs[0,:].tolist()
+            assert (len(para_abscisse)<17)
+            dico.append({'TYPE_K':'K16','LISTE_R' : vale_abscisse , 'PARA' : para_abscisse})
+            para_ordonnee = self.legend_courbes[icourbe][1]
+            vale_ordonnee = valeurs[1,:].tolist()
+            assert (len(para_ordonnee)<17)
+            dico.append({'TYPE_K':'K16','LISTE_R' : vale_ordonnee , 'PARA' : para_ordonnee})
+            nc=1
+        else :
+            if ((self.legend_courbes[icourbe][0] == para_abscisse) and (vale_abscisse == valeurs[0,:].tolist())) :
+                para_ordonnee = self.legend_courbes[icourbe][1]
+                vale_ordonnee = valeurs[1,:].tolist()
+                assert (len(para_ordonnee)<17)
+                dico.append({'TYPE_K':'K16','LISTE_R' : vale_ordonnee , 'PARA' : para_ordonnee})
+            else :
+                raise 'Table non compatible'
+    
+    table = CREA_TABLE( LISTE =dico
+                      );
+    
+    if 0 :
+      unite = self.get_unite_libre()
+      unite = 90
+      DEFI_FICHIER(UNITE=unite,ACTION='ASSOCIER'); 
+                                                
+      IMPR_TABLE(UNITE = unite,
+               FORMAT = 'XMGRACE',
+               TABLE = table,
+               LEGENDE_X = para_abscisse,
+               LEGENDE_Y = para_ordonnee,
+               LEGENDE   = 'test'
+           );
+           
+      os.system('xmgrace fort.%i' %unite) 
+    
+      DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); 
+           
+                  
+#-----------------------------------------------------------------------
+  def get_resu(self,fichier_med='auto'):
+    
+    # Rendre global le resu pour qu'il soit accepte dans self.DeclareOut 
+    global resu
+    
+    if fichier_med == 'auto' : fichier_med = self.REPE + os.sep + self.nom_fichiers['MED'] 
+    
+    if debug: print fichier_med
+    if not os.path.isfile(fichier_med) :
+       print "Pas de fichier MED !"
+       return
+        
+    # Format med des champs depl, vite et acce
+    format_med =[_F(NOM_CHAM_MED='CHAMP___DEPLACEMENT___001',
+                    NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'),
+                    NOM_CMP_MED=('UX','UY','UZ','RX','RY','RZ'),
+                    NOM_CHAM    ='DEPL' ),
+                 _F(NOM_CHAM_MED='CHAMP___VITESSE___001',
+                    NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'),
+                    NOM_CMP_MED=('VX','VY','VZ','RX','RY','RZ'),
+                    NOM_CHAM    ='VITE' ),
+                 _F(NOM_CHAM_MED='CHAMP___ACCELERATION___001',
+                    NOM_CMP=('DX','DY','DZ','DRX','DRY','DRZ'),
+                    NOM_CMP_MED=('GX','GY','GZ','RX','RY','RZ'),
+                    NOM_CHAM    ='ACCE' ),
+                ]    
+
+    # Dicionnaire permettant de faire la correspondance des champs aux pts de gauss entre le med de europlexus et aster
+    dic_cmp_gauss = {}
+    
+    dic_cmp_gauss['CONTRAINTE'] = {'DKT3': {'NOM_CMP'     : ('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
+                                            'NOM_CMP_MED' : ('SIG1','SIG2','SIG3','SIG4','SIG5','SIG6',),},
+                                   'Q4GS': {'NOM_CMP'     : ('NXX','NYY','NXY','MXX','MYY','MXY','QX','QY'),
+                                            'NOM_CMP_MED' : ('SIG1','SIG2','SIG3','SIG4','SIG5','SIG6','SIG7','SIG8'),},
+                                   'POUT' : {}        
+                    
+                                   }
+
+    dic_cmp_gauss['DEFORMATION'] = {'DKT3': {'NOM_CMP'     : ('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),
+                                            'NOM_CMP_MED' : ('EPS1','EPS2','EPS3','EPS4','EPS5','EPS6',),},
+                                   'Q4GS': {'NOM_CMP'     : ('EXX','EYY','EXY','KXX','KYY','KXY','GAX','GAY'),
+                                            'NOM_CMP_MED' : ('EPS1','EPS2','EPS3','EPS4','EPS5','EPS6','EPS7','EPS8'),},
+                                   'POUT' : {}        
+                    
+                                   }
+
+    dic_cmp_gauss['ECROUISSAGE'] = {'DKT3': {'NOM_CMP'     : ('V1','V2'),
+                                            'NOM_CMP_MED'  : ('VAR8','VAR9'),},
+                                   'Q4GS' : {'NOM_CMP'      : ('V1','V2'),
+                                            'NOM_CMP_MED'  : ('VAR8','VAR9'),},
+                                   'POUT' : {}        
+                        
+                                    }
+                                    
+    # Dictionnaire permettant de traduire le champ epx en med au nom asscie dans aster
+# AA    epx2aster = {'CONTRAINTE':'SIEF_ELGA','ECROUISSAGE':'VARI_ELGA'}
+    epx2aster = {'CONTRAINTE':'SIEF_ELGA','DEFORMATION':'EPSI_ELGA_DEPL','ECROUISSAGE':'VARI_ELGA'}
+
+# AA : desactive pour le moment
+#     # Enrichir la liste format_med par les champs aux pts de gauss
+#     imode = 0
+#     if debug: print 'self.modelisations',self.modelisations
+#     for modelisation in self.modelisations :
+#       #if modelisation in ['Q4GS','DKT3'] :
+#         imode += 1
+#         numero =  string.replace('%3.i' %imode,' ','0')
+#         for champ in dic_cmp_gauss.keys():
+#           if len(dic_cmp_gauss[champ][modelisation]) > 0 :
+#             nom_cham_med = 'CHAMP___'+ champ + (13-len(champ))*'_' + numero
+#             nom_cham = epx2aster[champ]
+#             nom_cmp = dic_cmp_gauss[champ][modelisation]['NOM_CMP']
+#             nom_cmp_med = dic_cmp_gauss[champ][modelisation]['NOM_CMP_MED']
+#             # ajouer a la list format_med
+#             format_med.append(_F(NOM_CHAM_MED=nom_cham_med,NOM_CMP=nom_cmp,
+#                                NOM_CMP_MED=nom_cmp_med,NOM_CHAM=nom_cham)
+#                            )
+
+    # Lire le fichier med avec les options choisies dans la liste format_med
+    unite = self.get_unite_libre()
+    DEFI_FICHIER(UNITE=unite,ACTION='LIBERER'); 
+    fort = 'fort.%i' %unite
+    if os.path.isfile(fort) : os.remove(fort)
+
+    os.symlink(fichier_med,fort)
+
+    # Regeneration des mots-cles EXCIT passés en argument de la macro
+    dExcit=[]
+    for j in self.EXCIT :
+       dExcit.append(j.cree_dict_valeurs(j.mc_liste))
+       for i in dExcit[-1].keys():
+          if dExcit[-1][i]==None : del dExcit[-1][i]
+    resu = LIRE_RESU(TYPE_RESU='EVOL_NOLI',
+#                  VERI_ELGA='NON',
+                  FORMAT='MED',
+                  MODELE=self.NEW_MODELE,
+                  FORMAT_MED=format_med,
+                  UNITE=unite,
+                  CHAM_MATER=self.CHAM_MATER,
+                  CARA_ELEM=self.CARA_ELEM,
+                  TOUT_ORDRE='OUI',
+                  EXCIT=dExcit,
+                  INFO=self.INFO,
+                  );
+
+    __EPN = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM = 'ELGA_NEUT_R',
+            OPERATION = 'AFFE',
+            MODELE    = self.NEW_MODELE,
+            PROL_ZERO = 'OUI',
+            AFFE      = self.listEpais,
+            )
+    __EPN2 = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM = 'ELGA_NEUT_R',
+            OPERATION = 'AFFE',
+            MODELE    = self.NEW_MODELE,
+            PROL_ZERO = 'OUI',
+            AFFE      = self.listEpais2,
+            )
+    __UNN = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM = 'ELGA_NEUT_R',
+            OPERATION = 'AFFE',
+            MODELE    = self.NEW_MODELE,
+            PROL_ZERO = 'OUI',
+            AFFE = _F(VALE=(1.,1.), TOUT='OUI', NOM_CMP=('X21','X22')),
+            )
+    __FONC1 = FORMULE(VALE='X1*X21',NOM_PARA=('X1','X21'))
+    __FONC2 = FORMULE(VALE='X2*X21',NOM_PARA=('X2','X21'))
+    __FONC3 = FORMULE(VALE='X3*X21',NOM_PARA=('X3','X21'))
+    __FONC4 = FORMULE(VALE='X4*X22',NOM_PARA=('X4','X22'))
+    __FONC5 = FORMULE(VALE='X5*X22',NOM_PARA=('X5','X22'))
+    __FONC6 = FORMULE(VALE='X6*X22',NOM_PARA=('X6','X22'))
+    __FONC7 = FORMULE(VALE='X7*X21',NOM_PARA=('X7','X21'))
+    __FONC8 = FORMULE(VALE='X8*X21',NOM_PARA=('X8','X21'))
+    __FONC11 = FORMULE(VALE='X11*X21',NOM_PARA=('X11','X21'))
+    __FONC12 = FORMULE(VALE='X12*X21',NOM_PARA=('X12','X21'))
+    __FONC13 = FORMULE(VALE='X13*X21',NOM_PARA=('X13','X21'))
+    __FONC14 = FORMULE(VALE='X14*X22',NOM_PARA=('X14','X22'))
+    __FONC15 = FORMULE(VALE='X15*X22',NOM_PARA=('X15','X22'))
+    __FONC16 = FORMULE(VALE='X16*X22',NOM_PARA=('X16','X22'))
+    __FONC17 = FORMULE(VALE='X17*X21',NOM_PARA=('X17','X21'))
+    __FONC18 = FORMULE(VALE='X18*X21',NOM_PARA=('X18','X21'))
+    
+    __FONCC = CREA_CHAMP(
+        INFO      = self.INFO,
+        TYPE_CHAM = 'ELGA_NEUT_F',
+        OPERATION = 'AFFE',
+        MODELE    = self.NEW_MODELE,
+        PROL_ZERO = 'OUI',
+        AFFE      = _F(
+               TOUT    = 'OUI',
+               NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8','X11','X12','X13','X14','X15','X16','X17','X18'),
+               VALE_F  = (__FONC1,__FONC2,__FONC3,__FONC4,__FONC5,__FONC6,__FONC7,__FONC8,__FONC11,__FONC12,__FONC13,
+                          __FONC14,__FONC15,__FONC16,__FONC17,__FONC18)),
+                          )
+    __FONCC2 = CREA_CHAMP(
+        INFO      = self.INFO,
+        TYPE_CHAM = 'ELGA_NEUT_F',
+        OPERATION = 'AFFE',
+        MODELE    = self.NEW_MODELE,
+        PROL_ZERO = 'OUI',
+        AFFE      = _F(
+               TOUT    = 'OUI',
+               NOM_CMP = ('X1','X2'),
+               VALE_F  = (__FONC1,__FONC2)),
+               )
+    listEffg = []
+    i=0
+    listType=[]
+    __SIG11 = [None]*10
+    __SIG21 = [None]*10
+
+    # Pour masquer certaines alarmes
+    from Utilitai.Utmess import MasquerAlarme, RetablirAlarme
+    MasquerAlarme('MED_83')
+    MasquerAlarme('MED_98')
+
+    while 1:
+        # index=1
+        # pas = self.ARCHIVAGE['PAS_NBRE']
+        # dicDetr=[]
+        # if 'Q4GS' in self.modelisations :
+            err = 0
+            try :
+                __SIG11[i] = LIRE_CHAMP(
+                    INFO        = self.INFO,
+                    TYPE_CHAM   = 'ELGA_SIEF_R',
+                    UNITE       = 99,
+                    NUME_PT     = 0,
+                    MODELE      = self.NEW_MODELE,
+                    MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    PROL_ZERO   = 'OUI',
+                    NOM_MED     = 'CHAMP___CONTRAINTE___00%d'%(i+1),
+                    NOM_CMP     = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP'],
+                    NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP_MED'])
+                # dicDetr.append({'NOM' : __SIG11})
+                DETRUIRE(CONCEPT=_F(NOM = __SIG11[i]), INFO=1)
+                listType.append('Q4GS')
+                # index=2 
+            except :
+                err+=1
+            try :
+                __SIG21[i] = LIRE_CHAMP(
+                    INFO        = self.INFO,
+                    TYPE_CHAM   = 'ELGA_SIEF_R',
+                    UNITE       = 99,
+                    NUME_PT     = 0,
+                    MODELE      = self.NEW_MODELE,
+                    MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    PROL_ZERO   = 'OUI',
+                    NOM_MED     = 'CHAMP___CONTRAINTE___00%d'%(i+1),
+                    NOM_CMP     = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'],
+                    NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP_MED']),
+                DETRUIRE(CONCEPT=_F(NOM = __SIG21[i]), INFO=1)
+                if len(listType)<i+1 :
+                    listType.append('DKT3')
+            except : 
+                err+=1
+            if err<2 :
+                i+=1
+            else :
+                break
+        # if 'DKT3' in self.modelisations :
+            # try : 
+                # __SIG21 = LIRE_CHAMP(
+                    # INFO        = self.INFO,
+                    # TYPE_CHAM   = 'ELGA_SIEF_R',
+                    # UNITE       = 99,
+                    # NUME_PT     = i*pas,
+                    # MODELE      = self.NEW_MODELE,
+                    # MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    # PROL_ZERO   = 'OUI',
+                    # NOM_MED     = 'CHAMP___CONTRAINTE___00%d'%index,
+                    # NOM_CMP     = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'],
+                    # NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP_MED']),
+                # dicDetr.append({'NOM' : __SIG21})
+
+            # except :
+                # err +=1
+        # if err > 1 :
+            # break
+        # DETRUIRE(CONCEPT=dicDetr) 
+        # i+=1
+
+    # Pour la gestion des alarmes
+    RetablirAlarme('MED_83')
+    RetablirAlarme('MED_98')
+
+
+    nbChamp = i
+    itot=len(resu.LIST_PARA()['INST'])
+    __EFFG=[None]*itot
+    # __EPSG=[None]*itot
+    __ECRG=[None]*itot
+    __SIG1 = [None]*nbChamp
+    __SIG2 = [None]*nbChamp
+    for i in xrange(itot) :
+        dicAffe=[]
+        dicAffe2=[]
+        dicAffe3=[]
+        index=1
+        pas = self.ARCHIVAGE['PAS_NBRE']
+        dicAsse = [{'TOUT' : 'OUI', 'CHAM_GD' : __EPN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}]
+        dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPN2, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.})
+        dicAsse2 = [{'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}]
+        dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.})
+        dicAsse3 = [{'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X21', 'NOM_CMP_RESU' : 'X21'}]
+        dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __UNN, 'NOM_CMP' : 'X22', 'NOM_CMP_RESU' : 'X22', 'CUMUL' : 'OUI','COEF_R':1.})
+        dicDetr=[]
+        # if 'Q4GS' in self.modelisations :
+        for j in xrange(nbChamp) :
+            if listType[j] == 'Q4GS' :
+                __SIG1[j] = LIRE_CHAMP(
+                    INFO        = self.INFO,
+                    TYPE_CHAM   = 'ELGA_SIEF_R',
+                    UNITE       = 99,
+                    NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+                    MODELE      = self.NEW_MODELE,
+                    MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    PROL_ZERO   = 'OUI',
+                    NOM_MED     = 'CHAMP___CONTRAINTE___00%d'%(j+1),
+                    NOM_CMP     = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP'],
+                    NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP_MED'],
+                        )
+                # __EPS1 = LIRE_CHAMP(
+                    # INFO        = self.INFO,
+                    # TYPE_CHAM   = 'ELGA_EPSI_R',
+                    # UNITE       = 99,
+                    # NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+                    # MODELE      = self.NEW_MODELE,
+                    # MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    # PROL_ZERO   = 'OUI',
+                    # NOM_MED     = 'CHAMP___DEFORM_TOT___001',
+                    # NOM_CMP     = dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP'],
+                    # NOM_CMP_MED = dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP_MED'])
+#                 __ECR1 = LIRE_CHAMP(
+#                     INFO        = self.INFO,
+#                     TYPE_CHAM   = 'ELGA_VARI_R',
+#                     UNITE       = 99,
+#                     NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+#                     MODELE      = self.NEW_MODELE,
+#                     MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+#                     PROL_ZERO   = 'OUI',
+#                     NOM_MED     = 'CHAMP___ECROUISSAGE__001',
+#                     NOM_CMP     = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP'],
+#                     NOM_CMP_MED = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP_MED'])
+                dicDetr.append({'NOM' : __SIG1[j]})
+                dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __SIG1[j], 'NOM_CMP' : tuple(dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP']), 
+                            'NOM_CMP_RESU' : ('X1','X2','X3','X4','X5','X6','X7','X8'), 'CUMUL' : 'OUI','COEF_R':1.})
+                # dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPS1, 'NOM_CMP' : tuple(dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP']), 
+                            # 'NOM_CMP_RESU' : ('X1','X2','X3','X4','X5','X6','X7','X8'), 'CUMUL' : 'OUI','COEF_R':1.})
+#                 dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __ECR1, 'NOM_CMP' : tuple(dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP']), 
+#                             'NOM_CMP_RESU' : ('X1','X2'), 'CUMUL' : 'OUI','COEF_R':1.})
+            else :
+                __SIG2[j] = LIRE_CHAMP(
+                    INFO        = self.INFO,
+                    TYPE_CHAM   = 'ELGA_SIEF_R',
+                    UNITE       = 99,
+                    NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+                    MODELE      = self.NEW_MODELE,
+                    MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    PROL_ZERO   = 'OUI',
+                    NOM_MED     = 'CHAMP___CONTRAINTE___00%d'%(j+1),
+                    NOM_CMP     = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'],
+                    NOM_CMP_MED = dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP_MED'],
+                    )
+                # __EPS2 = LIRE_CHAMP(
+                    # INFO        = self.INFO,
+                    # TYPE_CHAM   = 'ELGA_EPSI_R',
+                    # UNITE       = 99,
+                    # NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+                    # MODELE      = self.NEW_MODELE,
+                    # MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+                    # PROL_ZERO   = 'OUI',
+                    # NOM_MED     = 'CHAMP___DEFORM_TOT___00%d'%index,
+                    # NOM_CMP     = dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP'],
+                    # NOM_CMP_MED = dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP_MED']),
+#                 __ECR2 = LIRE_CHAMP(
+#                     INFO        = self.INFO,
+#                     TYPE_CHAM   = 'ELGA_VARI_R',
+#                     UNITE       = 99,
+#                     NUME_PT     = resu.LIST_PARA()['NUME_ORDRE'][i],
+#                     MODELE      = self.NEW_MODELE,
+#                     MAILLAGE    = self.reupere_structure(self.MODELE,'MAILLAGE'),
+#                     PROL_ZERO   = 'OUI',
+#                     NOM_MED     = 'CHAMP___ECROUISSAGE__00%d'%index,
+#                     NOM_CMP     = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP'],
+#                     NOM_CMP_MED = dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP_MED'])
+                dicAsse.append({'TOUT' : 'OUI', 'CHAM_GD' : __SIG2[j], 'NOM_CMP' : tuple(dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP']),
+                                'NOM_CMP_RESU' : ('X11','X12','X13','X14','X15','X16'), 'CUMUL' : 'OUI','COEF_R':1.})
+                # dicAsse2.append({'TOUT' : 'OUI', 'CHAM_GD' : __EPS2, 'NOM_CMP' : tuple(dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP']), 
+                                # 'NOM_CMP_RESU' : ('X11','X12','X13','X14','X15','X16'), 'CUMUL' : 'OUI','COEF_R':1.})
+#                 dicAsse3.append({'TOUT' : 'OUI', 'CHAM_GD' : __ECR2, 'NOM_CMP' : tuple(dic_cmp_gauss['ECROUISSAGE']['DKT3']['NOM_CMP']), 
+#                                 'NOM_CMP_RESU' : ('X11','X12'), 'CUMUL' : 'OUI','COEF_R':1.})
+                dicDetr.append({'NOM' : __SIG2[j]})
+                # dicDetr.append({'NOM' : __EPS2})
+#                dicDetr.append({'NOM' : __ECR2})
+                # dicDetr.append({'NOM' : __EPS1})
+#                dicDetr.append({'NOM' : __ECR1})
+        # if 'DKT3' in self.modelisations:
+
+        __SIGN = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM = 'ELGA_NEUT_R',
+            OPERATION = 'ASSE',
+            PROL_ZERO = 'OUI',
+            MODELE    = self.NEW_MODELE,
+            ASSE      = dicAsse,
+            )
+        # __EPSN = CREA_CHAMP(
+            # INFO      = self.INFO,
+            # TYPE_CHAM = 'ELGA_NEUT_R',
+            # OPERATION = 'ASSE',
+            # PROL_ZERO = 'OUI',
+            # MODELE    = self.NEW_MODELE,
+            # ASSE      = dicAsse2)
+#         __ECRN = CREA_CHAMP(
+#             INFO      = self.INFO,
+#             TYPE_CHAM = 'ELGA_NEUT_R',
+#             OPERATION = 'ASSE',
+#             PROL_ZERO = 'OUI',
+#             MODELE    = self.NEW_MODELE,
+#             ASSE      = dicAsse3)
+        dicDetr.append({'NOM' : __SIGN})
+        # dicDetr.append({'NOM' : __EPSN})
+#         dicDetr.append({'NOM' : __ECRN})
+        __EFFGN = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM = 'ELGA_NEUT_R',
+            OPERATION = 'EVAL',
+            CHAM_F    = __FONCC,
+            CHAM_PARA = (__SIGN),
+          )
+        # __EPSGN = CREA_CHAMP(
+            # INFO      = self.INFO,
+            # TYPE_CHAM = 'ELGA_NEUT_R',
+            # OPERATION = 'EVAL',
+            # CHAM_F    = __FONCC,
+            # CHAM_PARA   = (__EPSN))
+#         __ECRGN = CREA_CHAMP(
+#             INFO      = self.INFO,
+#             TYPE_CHAM = 'ELGA_NEUT_R',
+#             OPERATION = 'EVAL',
+#             CHAM_F    = __FONCC2,
+#             CHAM_PARA   = (__ECRN))
+        dicDetr.append({'NOM' : __EFFGN})
+        # dicDetr.append({'NOM' : __EPSGN})
+#         dicDetr.append({'NOM' : __ECRGN})
+        __EFFG[i] = CREA_CHAMP(
+            INFO      = self.INFO,
+            TYPE_CHAM  = 'ELGA_SIEF_R',
+            OPERATION = 'ASSE',
+            PROL_ZERO = 'OUI',
+            MODELE    = self.NEW_MODELE,
+            ASSE      = _F(
+                TOUT = 'OUI',
+                CHAM_GD = __EFFGN,
+                NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8')+('X11','X12','X13','X14','X15','X16'),
+                NOM_CMP_RESU = tuple(dic_cmp_gauss['CONTRAINTE']['Q4GS']['NOM_CMP']+dic_cmp_gauss['CONTRAINTE']['DKT3']['NOM_CMP'])),
+                )
+        # __EPSG[i] = CREA_CHAMP(
+            # INFO      = self.INFO,
+            # TYPE_CHAM  = 'ELGA_EPSI_R',
+            # OPERATION = 'ASSE',
+            # PROL_ZERO = 'OUI',
+            # MODELE    = self.NEW_MODELE,
+            # ASSE      = _F(
+                # TOUT = 'OUI',
+                # CHAM_GD = __EPSGN,
+                # NOM_CMP = ('X1','X2','X3','X4','X5','X6','X7','X8')+('X11','X12','X13','X14','X15','X16'),
+                # NOM_CMP_RESU = tuple(dic_cmp_gauss['DEFORMATION']['Q4GS']['NOM_CMP']+dic_cmp_gauss['DEFORMATION']['DKT3']['NOM_CMP'])))
+#         __ECRG[i] = CREA_CHAMP(
+#             INFO      = self.INFO,
+#             TYPE_CHAM  = 'ELGA_VARI_R',
+#             OPERATION = 'ASSE',
+#             PROL_ZERO = 'OUI',
+#             MODELE    = self.NEW_MODELE,
+#             ASSE      = _F(
+#                 TOUT = 'OUI',
+#                 CHAM_GD = __ECRGN,
+#                 NOM_CMP = ('X1','X2'),
+#                 NOM_CMP_RESU = tuple(dic_cmp_gauss['ECROUISSAGE']['Q4GS']['NOM_CMP'])))
+        dicAffe.append({'CHAM_GD' : __EFFG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]})
+        # dicAffe2.append({'CHAM_GD' : __EPSG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]})
+#         dicAffe3.append({'CHAM_GD' : __ECRG[i], 'MODELE' : self.NEW_MODELE,'CHAM_MATER' : self.CHAM_MATER,'INST': resu.LIST_PARA()['INST'][i]})
+        DETRUIRE(CONCEPT=dicDetr, INFO=1)
+        resu = CREA_RESU(reuse=resu,
+            OPERATION = 'AFFE',
+            TYPE_RESU = 'EVOL_NOLI',
+            NOM_CHAM  = 'SIEF_ELGA',
+            AFFE = dicAffe,
+            )
+        # resu = CREA_RESU(reuse=resu,
+            # OPERATION = 'AFFE',
+            # TYPE_RESU = 'EVOL_NOLI',
+            # NOM_CHAM  = 'EPSI_ELGA_DEPL',
+            # AFFE = dicAffe2)
+        resu = CREA_RESU(reuse=resu,
+            OPERATION = 'AFFE',
+            TYPE_RESU = 'EVOL_NOLI',
+            NOM_CHAM  = 'VARI_ELGA',
+            AFFE = dicAffe3,
+            )
+
+    DEFI_FICHIER(UNITE=unite,ACTION='LIBERER');              
+
+    os.remove(fort)
+
+#-----------------------------------------------------------------------
+  def lancer_calcul(self,fichier_med='auto'):
+
+     fichier_epx = self.nom_fichiers['COMMANDE']
+     EXEC_LOGICIEL(LOGICIEL='cd %s ; %s %s ; iret=$? ; cd %s ; exit $iret' % (self.pwd + self.REPE, self.EXEC, fichier_epx, self.pwd),
+                   INFO=2)
+
+
+#------------------------------------------------------------------------
+#----------------------------- FIN class EUROPLEXUS ---------------------
+#------------------------------------------------------------------------
+
+#------------------------------------------------------------------------
+#----------------------------- class POUTRE -----------------------------
+#------------------------------------------------------------------------
+
+class POUTRE:
+  def __init__(self,MAILLAGE,CARA_ELEM):
+    
+    # recuperer les infos du maillage sous format python 
+    self.MApyt = MAIL_PY()
+    self.MApyt.FromAster(MAILLAGE)
+    self.CARA_ELEM = CARA_ELEM
+    # un dictionnaire stockant tous orientations definis dans AFF_CARA_ELEM
+    self.dic_gma = self.orientation_cara_elem()
+       
+#------------------------------------------------------------------------
+  def getvecteurs(self,groupes_poutres,verif='non'):
+    vecteurs = {}
+    ig = 0
+    message = 0
+    for gr in groupes_poutres :
+      ig += 1 
+      if not self.dic_gma.has_key(gr): self.dic_gma[gr] = {'ANGL_VRIL':0.0}
+      vecteurs[gr] = self.get_vecty_group_ma(gr)  
+      if verif == 'oui':
+        if ig > 1 :
+          if not vecteurs_egaux(vecteurs[gr],vect_old) : message = 1
+        vect_old = vecteurs[gr]
+    
+    if message : UTMESS('F','PLEXUS_10',valk=groupes_poutres)   
+    
+    return vecteurs   
+  
+#------------------------------------------------------------------------
+  def orientation_cara_elem(self,):
+    
+    dic_gma = {}
+    etapes = self.CARA_ELEM.etape.valeur
+    
+    if not etapes.has_key('ORIENTATION') : return dic_gma
+         
+    orientation = etapes['ORIENTATION']
+    try :
+      test = orientation [0]
+    except :
+      orientation  = [orientation]
+
+    for ll in orientation  :
+      cara = ll['CARA']
+      if cara in ['ANGL_VRIL','ANGL_NAUT','VECT_Y'] : 
+        if ll.has_key('GROUP_MA') :
+          group_ma = ll['GROUP_MA']
+          if types.TypeType(group_ma) == types.StringType : group_ma = (group_ma,) 
+          a = ll['VALE']
+          for gr in group_ma:
+            if not dic_gma.has_key(gr): dic_gma[gr] = {}
+            dic_gma[gr][cara] = a
+    
+    for gr in dic_gma.keys() :
+      if not dic_gma[gr].has_key('VECT_Y'):
+        if not dic_gma[gr].has_key('ANGL_VRIL') : dic_gma[gr]['ANGL_VRIL'] = 0.0
+        if dic_gma[gr].has_key('ANGL_NAUT'):
+          if len(dic_gma[gr]['ANGL_NAUT']) == 2 : 
+            dic_gma[gr]['ANGL_NAUT'] = list(dic_gma[gr]['ANGL_NAUT']) + [dic_gma[gr]['ANGL_VRIL']]
+          
+    return(dic_gma)
+    
+#------------------------------------------------------------------------
+  def get_vecty_group_ma(self,group_ma):
+    
+    #if debug: print '*'*10
+    #if debug: print 'Test de group_ma',group_ma
+    #if debug: print '*'*10
+
+    message = 0
+
+    if self.dic_gma[group_ma].has_key('VECT_Y') : return self.dic_gma[group_ma]['VECT_Y']
+
+    if not self.dic_gma[group_ma].has_key('ANGL_NAUT'):calcul_angle = 1
+    else: calcul_angle = 0
+
+    mailles = self.MApyt.gma[string.rstrip(group_ma)]
+
+    for imaille in range(len(mailles)):
+      maille = mailles[imaille]
+      if calcul_angle:
+        alpha,beta = self.calcul_angles_naut(maille)
+        angl = [alpha,beta,self.dic_gma[group_ma]['ANGL_VRIL']]
+      else:
+        angl = self.dic_gma[group_ma]['ANGL_NAUT']
+
+      vect_y = self.angle2vecty(angl)
+      if imaille > 1 :  
+        if not vecteurs_egaux(vect_y0,vect_y) : message = 1
+      vect_y0 = vect_y   
+
+    self.dic_gma[group_ma]['VECT_Y'] = vect_y 
+
+    if message : 
+      #if debug: print 'group_ma',group_ma
+      UTMESS('F','PLEXUS_11',valk=group_ma) 
+
+    return vect_y        
+
+#------------------------------------------------------------------------
+  def angle2vecty(self,angl):
+    #transformer en rd
+    for iangl in range(len(angl)):
+      angl[iangl] = N.pi*angl[iangl]/180. 
+    cosa = math.cos( angl[0] )
+    sina = math.sin( angl[0] )
+    cosb = math.cos( angl[1] )
+    sinb = math.sin( angl[1] )
+    cosg = math.cos( angl[2] )
+    sing = math.sin( angl[2] )
+    vect = [ sing*sinb*cosa - cosg*sina , cosg*cosa + sing*sinb*sina , sing*cosb ]
+    for ii in range(len(vect)):
+      if abs(vect[ii]) <= tst : vect[ii] = 0.0
+    vect = N.array(vect)
+    vect = vect/norme(vect)
+    return vect
+    
+#------------------------------------------------------------------------
+  def get_coor_nodes_maille(self,maille):
+    node1,node2 = self.MApyt.co[maille]
+    coor1 = self.MApyt.cn[node1]
+    coor2 = self.MApyt.cn[node2]
+    return [coor1,coor2]
+    
+#------------------------------------------------------------------------
+  def calcul_angles_naut(self,maille):
+    
+    # Angles directeurs d'une poutre (nautiques)
+    
+    a,b = self.get_coor_nodes_maille(maille)
+
+    gx = [ b[0]-a[0] , b[1]-a[1] , b[2]-a[2] ]
+   
+    if( (abs(gx[1]) < tst)  and (abs(gx[0]) <= tst) ):
+      alpha = 0.0
+    else:
+      alpha = math.atan2(gx[1],gx[0])
+
+    p  = math.sqrt( gx[0]*gx[0] + gx[1]*gx[1] )
+    if( (abs(gx[2]) < tst ) and (abs(p) <=tst) ):
+      beta = 0.0
+    else:
+      beta  = -math.atan2(gx[2],p)
+    
+    # alpha et Beta en degre
+    alpha = alpha*180./math.pi
+    beta = beta*180./math.pi
+    
+    return alpha,beta
+
+#------------------------------------------------------------------------
+#----------------------------- FIN class POUTRE -------------------------
+#------------------------------------------------------------------------
+
+
+#------------------------------------------------------------------------
+#----------------------------- class DKT --------------------------------
+#------------------------------------------------------------------------
+
+class DKT:
+
+  def __init__(self,MAILLAGE):
+   
+    self.MAILLAGE = MAILLAGE
+    # recuperer les infos du maillage sous format python 
+    self.MApyt = MAIL_PY()
+    self.MApyt.FromAster(MAILLAGE)
+  
+  def aster2epx(self,groups):
+    
+    # initialisations du dic contenant les mailles de tria3 et quad4
+    dic_groups = {}
+    for cle in ['TRIA3','QUAD4']:
+      dic_groups[cle] = []
+    # placer les mailles dans le champ associe
+    for gr in groups:
+      mailles = self.MApyt.gma[string.rstrip(gr)]
+      for maille in mailles:
+        code_maille = self.MApyt.tm[maille]
+        type_maille = self.MApyt.nom[code_maille]
+        maille_initiale = string.rstrip(self.MApyt.correspondance_mailles[maille]) 
+        if not maille_initiale in dic_groups[type_maille] :
+          dic_groups[type_maille].append(maille_initiale) 
+        
+    # creer le mot-cle facteur permettant de creer les groupes de mailles associes au TRIA3 et QUAD4
+    crea_group_ma = []
+    # dictionnair contenant les noms des groups qui vont etre creer au besoin
+    nom_groups = {}
+    for cle in dic_groups.keys() :
+      if len(dic_groups[cle]) > 0 :
+        crea_group_ma.append({'MAILLE':dic_groups[cle],'NOM':cle})
+        nom_groups[cle] = [cle]
+      else:
+        nom_groups[cle] = []
+    # ce n'est pas necessaire de creer les group_ma si on n'a pas de quad4
+    if len(dic_groups['QUAD4']) >0:
+      
+      #global DEFI_GROUP
+      
+      DEFI_GROUP(reuse         = self.MAILLAGE,
+                 MAILLAGE      = self.MAILLAGE,
+                 CREA_GROUP_MA = crea_group_ma,
+                );
+       
+    else :
+      # on affecte au TRIA les groupes deja fournis en argument
+      nom_groups['TRIA3'] = groups
+    
+    return nom_groups
+      
+#------------------------------------------------------------------------
+#----------------------------- FIN class DKT ----------------------------
+#------------------------------------------------------------------------
diff --git a/Aster/Cata/cataSTA9/Macro/calc_modal_ops.py b/Aster/Cata/cataSTA9/Macro/calc_modal_ops.py
new file mode 100644 (file)
index 0000000..c462a3b
--- /dev/null
@@ -0,0 +1,162 @@
+#@ MODIF calc_modal_ops Macro  DATE 14/10/2008   AUTEUR NISTOR I.NISTOR 
+
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+#-*- coding: iso-8859-1 -*-
+
+
+def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISEMENT,
+                        SOLVEUR,CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE,
+                        VERI_MODE,INFO,**args):
+  """
+     Ecriture de la macro CALC_MODAL
+  """
+  from Accas import _F
+  ier=0
+  from Utilitai.Utmess     import  UTMESS
+
+  # On importe les definitions des commandes a utiliser dans la macro
+  # Le nom de la variable doit etre obligatoirement le nom de la commande
+  CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
+  NUME_DDL      =self.get_cmd('NUME_DDL')
+  ASSE_MATRICE  =self.get_cmd('ASSE_MATRICE')  
+  MODE_ITER_SIMULT  =self.get_cmd('MODE_ITER_SIMULT')
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+
+
+  # on defini la liste des mots cle pour les appels aux CALC_MATR_ELEM
+  motsclece={}
+  if CHARGE     != None: motsclece['CHARGE']      =CHARGE
+  if CHAM_MATER != None: motsclece['CHAM_MATER']  =CHAM_MATER
+  if CARA_ELEM  != None: motsclece['CARA_ELEM']   =CARA_ELEM
+  if INST       != None: motsclece['INST']        =INST
+
+  #c'est avec le mot cle AMORTISEMENT qu'on decide si on calcule la matrice C
+  # d'amortisement 
+
+  
+  _a=CALC_MATR_ELEM(MODELE=MODELE, OPTION='RIGI_MECA', **motsclece)
+  _b=CALC_MATR_ELEM(MODELE=MODELE, OPTION='MASS_MECA', **motsclece)
+  if AMORTISEMENT=='OUI':  
+    _c=CALC_MATR_ELEM(MODELE=MODELE, OPTION='AMOR_MECA',
+                       RIGI_MECA=_a, MASS_MECA=_b,**motsclece)
+
+  #on produit en local le concept NUME_DDL, il n'est pas visible pour l'utilisateur
+  
+  # Les mots cles simples sous SOLVEUR sont par defaut MULT_FRONT/METIS
+  methode=SOLVEUR['METHODE']
+  renum=SOLVEUR['RENUM'] 
+
+  _num=NUME_DDL(MATR_RIGI=_a,METHODE=methode,RENUM=renum,INFO=INFO)
+  
+  #assemblages des matrices 
+  _rigas=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=_num)
+  _masas=ASSE_MATRICE(MATR_ELEM=_b,NUME_DDL=_num)
+  if AMORTISEMENT=='OUI':     
+    _amoras=ASSE_MATRICE(MATR_ELEM=_c,NUME_DDL=_num)
+
+  #lancement du calcul des modes propres
+  # on defini la liste des mots cle pour l'appel au MODE_ITER_SIMULT
+
+  motscit={}
+  motscfa={}
+
+  if METHODE=='TRI_DIAG':
+     if args.has_key('NMAX_ITER_ORTHO'):
+        motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
+     if args.has_key('PREC_ORTHO'):
+        motscit['PREC_ORTHO']      =args['PREC_ORTHO']
+     if args.has_key('PREC_LANCZOS'):
+        motscit['PREC_LANCZOS']    =args['PREC_LANCZOS']
+     if args.has_key('MAX_ITER_QR'):
+        motscit['NMAX_ITER_QR']    =args['NMAX_ITER_QR']
+  elif METHODE=='JACOBI':
+     if args.has_key('NMAX_ITER_BATHE'):
+        motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
+     if args.has_key('PREC_BATHE'):
+        motscit['PREC_BATHE']      =args['PREC_BATHE']
+     if args.has_key('NMAX_ITER_JACOBI'):
+        motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
+     if args.has_key('PREC_JACOBI'):
+        motscit['PREC_JACOBI']     =args['PREC_JACOBI']
+  elif METHODE=='SORENSEN':
+     if args.has_key('NMAX_ITER_SOREN'):
+        motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
+     if args.has_key('PARA_ORTHO_SOREN'):
+        motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
+     if args.has_key('PREC_SOREN'):
+        motscit['PREC_SOREN']      =args['PREC_SOREN']
+  elif METHODE=='QZ':
+     if args.has_key('TYPE_QZ'):
+        motscit['TYPE_QZ'] =args['TYPE_QZ']
+  
+  if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
+  if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
+  
+  if CALC_FREQ['OPTION']=='PLUS_PETITE':
+     motscfa['NMAX_FREQ']=CALC_FREQ['NMAX_FREQ']
+
+  if CALC_FREQ['OPTION']=='CENTRE':
+     motscfa['FREQ']=CALC_FREQ['FREQ']
+     if CALC_FREQ['AMOR_REDUIT']: motscfa['AMOR_REDUIT']=CALC_FREQ['AMOR_REDUIT']
+     motscfa['NMAX_FREQ']=CALC_FREQ['NMAX_FREQ']
+     
+  if CALC_FREQ['OPTION']=='BANDE':
+     motscfa['FREQ']=CALC_FREQ['FREQ']
+     
+  motscit['CALC_FREQ'] = _F(OPTION          =CALC_FREQ['OPTION'],
+                            SEUIL_FREQ      =CALC_FREQ['SEUIL_FREQ'],
+                            NPREC_SOLVEUR   =CALC_FREQ['NPREC_SOLVEUR'],
+                            NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'],
+                            PREC_SHIFT      =CALC_FREQ['PREC_SHIFT'],
+                            APPROCHE        =CALC_FREQ['APPROCHE'],
+                            **motscfa)
+
+  motscit['VERI_MODE'] = _F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
+                            SEUIL      =VERI_MODE['SEUIL'],
+                            STURM      =VERI_MODE['STURM'],
+                            PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
+
+  motscit['STOP_FREQ_VIDE'] = CALC_FREQ['STOP_FREQ_VIDE']
+
+  if MODE_RIGIDE=='OUI':
+    mode_rigi='MODE_RIGIDE'
+  elif MODE_RIGIDE=='NON':
+    mode_rigi='SANS' 
+  self.DeclareOut('modes',self.sd)
+  
+  if AMORTISEMENT=='NON':
+     modes=MODE_ITER_SIMULT(MATR_A  =_rigas,
+                            MATR_B  =_masas,
+                            METHODE =METHODE,
+                            OPTION  =mode_rigi,
+                            INFO    =INFO,
+                            **motscit)
+  elif AMORTISEMENT=='OUI':
+     modes=MODE_ITER_SIMULT(MATR_A  =_rigas,
+                            MATR_B  =_masas,
+                            MATR_C  =_amoras,
+                            METHODE =METHODE,
+                            OPTION  =mode_rigi,
+                            INFO    =INFO,
+                            **motscit)
+  return ier
diff --git a/Aster/Cata/cataSTA9/Macro/calc_spec_ops.py b/Aster/Cata/cataSTA9/Macro/calc_spec_ops.py
new file mode 100644 (file)
index 0000000..a6d669f
--- /dev/null
@@ -0,0 +1,419 @@
+#@ MODIF calc_spec_ops Macro  DATE 21/10/2008   AUTEUR CORUS M.CORUS 
+
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+import copy
+import types
+from SD.sd_fonction import sd_fonction
+
+# -----------------------------------------------------------------------------
+class FonctionError(Exception): pass
+class ParametreError(FonctionError):      pass  # probleme de NOM_PARA
+class InterpolationError(FonctionError):  pass
+class ProlongementError(FonctionError):   pass
+
+# -----------------------------------------------------------------------------
+
+
+def calc_spec_ops(self,TAB_ECHANT,ECHANT,INTERSPE,TRANSFERT,TITRE,INFO,**args):
+#  ------------------------------------------------------------------
+#  Calcul d'une matrice interspectrale
+#  a partir de fonctions reelles
+
+   import aster
+   from types import ListType, TupleType
+   EnumTypes = (ListType, TupleType)
+   from Accas               import _F
+   from Utilitai.Utmess     import  UTMESS
+   import Numeric
+   import FFT
+   
+   commande='CALC_SPEC'
+
+   ier = 0
+   # La macro compte pour 1 dans la numerotation des commandes
+   self.set_icmd(1)
+
+   # Le concept sortant (de type table_sdaster ou derive) est tab
+   self.DeclareOut('tabout', self.sd)
+   
+   # On importe les definitions des commandes a utiliser dans la macro
+   # Le nom de la variable doit etre obligatoirement le nom de la commande
+   CREA_TABLE    = self.get_cmd('CREA_TABLE')
+   CALC_TABLE    = self.get_cmd('CALC_TABLE')
+   DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
+
+#--- Verifications sur les entrees --#
+
+   if (ECHANT==None and TAB_ECHANT==None) : 
+      raise FonctionError, 'Vous devez specifier des fonctions en entree'
+
+   if TAB_ECHANT==None : TAB_ECHANT=[]
+   if ECHANT==None : ECHANT=[]
+   if INTERSPE==None : INTERSPE=[]
+   if TRANSFERT==None : TRANSFERT=[]
+   if len(TAB_ECHANT)*len(ECHANT) !=0 :
+      raise FonctionError, 'Vous pouvez specifier une table_fonction ou' + ' une liste de fonctions en entree, mais pas les deux'
+   if len(TRANSFERT)*len(INTERSPE) !=0 :
+      raise FonctionError, 'Vous ne pouvez specifier qu' +"'"+'un type de calcul par appel'
+   
+   
+   
+#-- Recuperation des entrees --#  
+
+   l_f=[]
+   l_t=[]
+   l_G=[]
+   l_H=[]
+#   for occ in TAB_ECHANT : 
+#      l_t.append(('TAB_ECHANT',occ))   
+   if TAB_ECHANT:  #MC
+      l_t = TAB_ECHANT.List_F()[0]
+
+   for occ in ECHANT : 
+      l_f.append(('ECHANT',occ))
+   for occ in INTERSPE : 
+      l_G.append(('INTERSPE',occ))
+   for occ in TRANSFERT : 
+      l_H.append(('TRANSFERT',occ))
+      
+   
+# Pour dimensionner les fenetres :
+# Cas ECHANT : on recupere simplement la premiere fonction
+# Cas_TAB_ECHANT : on recupere toutes les fonctions
+   
+   if len(l_f) >0 :
+      vale_sig=l_f[0][1]['FONCTION'].Valeurs(); 
+      l_ech=len(vale_sig[0])
+      dt=vale_sig[0][1]-vale_sig[0][0]
+   else :
+      #tab_ast=l_t[0][1]['NOM_TAB'];
+      tab_ast=l_t['NOM_TAB']  #MC
+      tab_py=tab_ast.EXTR_TABLE();
+      
+      nom_fonc= tab_py['FONCTION'].values()['FONCTION']
+      fonc_py = [sd_fonction(fonc) for fonc in nom_fonc]
+      temp=fonc_py[0].VALE.get();
+      dt=temp[1]-temp[0];
+      
+      l_ech_temp=l_t['LONGUEUR_ECH'];
+      recouvr_temp=l_t['RECOUVREMENT'];
+      l_ech_t=[l_ech_temp[0]['DUREE'] , l_ech_temp[0]['POURCENT'],l_ech_temp[0]['NB_PTS'] ];
+      recouvr_t=[recouvr_temp[0]['DUREE'] , recouvr_temp[0]['POURCENT'],recouvr_temp[0]['NB_PTS'] ];
+      if l_ech_t.count(None)==3 : l_ech=len(temp)/2;
+      if recouvr_t.count(None)==3 : recouvr=0;
+      if l_ech_t.count(None)<2 : 
+         raise FonctionError, 'Vous ne pouvez utiliser qu'+"'"+ 'un mot clef pour definir la longueur des echantillons'
+      if recouvr_t.count(None)<2 : 
+         raise FonctionError, 'Vous ne pouvez utiliser qu'+"'"+'un mot clef pour definir la longueur de recouvrement des echantillons'
+      for i1 in range(3) :
+          if l_ech_t[i1] !=None :
+             if   i1 == 0 : 
+                l_ech=int(Numeric.floor(l_ech_t[i1]/dt));
+             elif i1 == 1 :
+                l_ech=int(Numeric.floor((len(temp)/2)*l_ech_t[i1]*0.01));
+             elif i1 == 2 :
+                l_ech=int(Numeric.floor(l_ech_t[i1]))
+      if l_ech > len(temp)/2 :
+         raise FonctionError, 'Vous devez specifier une longueur d'+"'"+'echantillon inferieure a la longueur totale de l'+"'"+'acquisition'
+      for i1 in range(3) :
+          if recouvr_t[i1] !=None :
+             if   i1 == 0 : 
+                recouvr=int(Numeric.floor(recouvr_t[i1]/dt));
+             elif i1 == 1 :
+                recouvr=int(Numeric.floor((l_ech)*recouvr_t[i1]*0.01));
+             elif i1 == 2 :
+                recouvr=int(Numeric.floor(recouvr_t[i1]))
+      if recouvr > l_ech :
+         raise FonctionError, 'La longueur de recouvrement ne peut exceder la longueur '
+
+#-- Recuperation des fenetres
+
+   for occ in l_G+l_H :
+      if occ[1]['FENETRE'] == 'RECT' :
+         fene=[1.]*l_ech
+      elif occ[1]['FENETRE'] == 'HAMM' :
+         fene=[0.54-0.46*Numeric.cos(2*Numeric.pi*i1/(l_ech-1)) for i1 in range(l_ech)]
+      elif occ[1]['FENETRE'] == 'HANN' :
+         fene=[0.5-0.5*Numeric.cos(2*Numeric.pi*i1/(l_ech-1)) for i1 in range(l_ech)]
+      elif occ[1]['FENETRE'] == 'EXPO' :
+         para=occ[1]['DEFI_FENE']
+         if len(para) != 2 :
+            raise FonctionError, 'Erreur de taille dans DEFI_FENE : ' + 'la fenetre exponentielle est definie par exactement deux valeurs'
+         fene=[1.]*int(para[0]-1)+[Numeric.exp(para[1]*(i1-int(para[0]-1))*dt) for i1 in range(int(para[0]-1),l_ech)]
+      elif occ[1]['FENETRE'] == 'PART' :
+         fene=occ[1]['DEFI_FENE']
+         if len(fene) != l_ech :
+            raise FonctionError, 'Erreur de taille dans DEFI_FENE : ' + 'La fenetre doit etre definie avec le meme nombre de points que les echantillons'
+   
+   if len(TRANSFERT)+len(INTERSPE) == 0 : #-- on ne rentre rien : interspectre par defaut - fenetre rectangulaire
+      fene=[1.]*l_ech
+      INTERSPE=1.;
+      
+      
+#--          Recuperation des signaux           --#
+#-- Verifications et transformations de Fourier --#
+#--         Entrees sous formes de table        --#
+      
+   tmp=[];
+   lt=[];
+   frq=[];
+   fft=[];
+   df=[];
+   num_ord=[];
+   num_mes=[]; 
+   
+   
+   if TAB_ECHANT : # Cas TAB_ECHANT
+      num_mes_temp= tab_py['NUME_MES'].values()['NUME_MES']
+      max_mes=Numeric.maximum.reduce(num_mes_temp);
+      num_ord_temp= tab_py['NUME_ORDRE_I'].values()['NUME_ORDRE_I']
+      long_fonc=[len(fonc_py[i1].VALE.get()) for i1 in range(len(fonc_py))]
+      
+      N_fen=int(Numeric.floor((Numeric.minimum.reduce(long_fonc)/2-l_ech)/(l_ech-recouvr))+1)
+
+      sig=[]; 
+      dt=[];    
+      for i1 in range(len(fonc_py)) :
+         vale=fonc_py[i1].VALE.get();
+         temp=(list(vale[0:int(len(vale)/2)]));
+         sig.append(list(vale[int(len(vale)/2):]));
+         test_pas=Numeric.subtract(temp[1:],temp[0:-1])
+         crit=test_pas.tolist();
+         crit.sort();
+         dt.append(crit[-1]);
+         if abs((crit[-1]-crit[0])/crit[-1]) > 1.e-5 :
+            raise FonctionError, 'L'+"'"+'echantillonage doit etre fait a pas constant'
+
+      for j1 in range(N_fen) :
+         for i1 in range(len(fonc_py)) :
+            fft.append(FFT.fft(Numeric.multiply(sig[i1][j1*(l_ech-recouvr):(j1*(l_ech-recouvr)+l_ech)],fene)))
+            if j1 == 0 : df.append(1./(dt[i1])/l_ech);
+            num_mes.append(num_mes_temp[i1]+max_mes*j1);
+            num_ord.append(num_ord_temp[i1]); 
+
+      test_df=Numeric.subtract(df[1:],df[0:-1])
+      test_df=test_df.tolist();
+      test_df.sort();
+      if abs(test_df[-1]) > 1.e-5 :
+         raise FonctionError, 'Toutes les fonctions doivent etre definies ' + 'avec la meme frequence d'+"'"+'echantillonage'
+       
+      frq = [df[-1]*i1 for i1 in range(l_ech)]
+
+
+#--          Recuperation des signaux           --#
+#-- Verifications et transformations de Fourier --#
+#--         Entrees sous formes de fonction     --#
+
+   if ECHANT:
+      for occ in l_f :
+         vale_sig=occ[1]['FONCTION'].Valeurs();
+         #-- pour les tests ulterieurs --#
+         lt.append(len(vale_sig[0]))    
+         if len(vale_sig[0]) != len(vale_sig[1]) :
+            raise FonctionError, 'Les vecteurs associes au temps '+'et aux echantillons doivent etre de meme longueur'      
+         num_mes.append(occ[1]['NUME_MES'])
+         num_ord.append(occ[1]['NUME_ORDRE_I'])
+      
+         tmp.append(vale_sig[0])
+         test_pas=Numeric.subtract(vale_sig[0][1:],vale_sig[0][0:-1])
+         crit=test_pas.tolist();
+         crit.sort();
+         if abs((crit[-1]-crit[0])/crit[-1]) > 1.e-5 :
+            raise FonctionError, 'L'+"'"+'echantillonage doit etre fait a pas constant'
+         fft.append(FFT.fft(Numeric.multiply(vale_sig[1],fene)))
+         df.append(1./(crit[-1])/len(vale_sig[0]));
+      
+      
+      #-- Verification des longueurs --#      
+      
+      test_long=Numeric.subtract(lt[1:],lt[0:-1])
+      test_long=test_long.tolist();
+      test_long.sort();
+      if (test_long[-1]-test_long[0]) != 0 :
+         raise FonctionError, 'Toutes les fonctions doivent etre definies avec le meme nombre de points'
+   
+   
+      test_df=Numeric.subtract(df[1:],df[0:-1])
+      test_df=test_df.tolist();
+      test_df.sort();
+      if abs(test_df[-1]) > 1.e-5 :
+         raise FonctionError, 'Toutes les fonctions doivent etre definies '+'avec la meme frequence d'+"'"+'echantillonage'
+       
+      frq = [df[-1]*i1 for i1 in range(lt[-1])]
+   
+   
+#-- index des numeros d'ordre pour le moyennage
+
+   uu=[];
+   vv=[];
+   uu=uu+num_ord;
+   vv=vv+num_ord;
+   uu.sort();
+   ind_ord=[];
+   list_ord=[];
+   while  len(uu) > 0 :
+      list_ord.append(uu[0])
+      tt=[];
+      for i1 in range(uu.count(uu[0])) : 
+         tt.append(vv.index(uu[0]))
+         vv[tt[-1]]=0
+      ind_ord.append(tt)
+      uu=uu[int(uu.count(uu[0])):]  
+   
+#-- Calcul de la matrice inter spectrale
+
+   if len(INTERSPE) != 0 :
+      dimh   = (len(list_ord)*(len(list_ord)+1))/2
+      l_fc=[];
+      nume_i1=[]
+      nume_j1=[]
+      
+      for i1 in range(len(list_ord)) :
+         for j1 in range(i1,len(list_ord)) :
+            #-- on ne calcule les spectres que pour des numeros de mesures correspondants
+            #-- Ca n'a a priori pas de sens de calculer l'interspectre entre deux signaux acquis a des instants differents
+            #-- Par contre, on peut moyenner deux interspectres obtenus a des instants differents, sous reserve
+            #-- de stationnarite et d'ergodicite du signal
+            mes_i1=[num_mes[k1] for k1 in ind_ord[i1]]
+            mes_j1=[num_mes[k1] for k1 in ind_ord[j1]]
+            ind_mes=[];
+            #-- recuperation des indices des fft a prendre en compte pour l'interspectre
+            for k1 in range(len(mes_i1)) :
+               if mes_i1[k1] in mes_j1 :
+                  ind_mes.append([ind_ord[i1][k1],ind_ord[j1][mes_j1.index(mes_i1[k1])]])
+
+            #-- Calcul des interspectres   
+            dsp=[0.j]*l_ech;
+            if len(ind_mes) > 0 :   
+               for l1 in range(len(ind_mes)) :
+                  dsp_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][0]]),fft[ind_mes[l1][1]])
+                  dsp_t=Numeric.divide(dsp_t,l_ech*len(ind_mes))
+                  dsp=Numeric.add(dsp,dsp_t)
+               dsp=dsp.tolist();
+               dsp_r=[];
+       
+               for k1 in range(int(Numeric.floor(l_ech/2))) :
+                  dsp_r=dsp_r+[frq[k1],dsp[k1].real,dsp[k1].imag]
+    
+               _fonc = DEFI_FONCTION(NOM_PARA='FREQ',VALE_C=dsp_r,);
+               l_fc.append(_fonc.nom)
+               nume_i1.append(list_ord[i1])
+               nume_j1.append(list_ord[j1])
+   
+      mcfact=[]
+      mcfact.append(_F(PARA='NOM_CHAM'    ,LISTE_K='DSP'  ))
+      mcfact.append(_F(PARA='OPTION'      ,LISTE_K='TOUT' ))
+      mcfact.append(_F(PARA='DIMENSION'   ,LISTE_I=(dimh,) ))
+      mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i1 ))
+      mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j1 ))
+      mcfact.append(_F(PARA='FONCTION_C'  ,LISTE_K=l_fc  ))
+      self.DeclareOut('tab_inte',self.sd)
+      tab_inte=CREA_TABLE(LISTE=mcfact,
+                          TITRE='',
+                          TYPE_TABLE='TABLE_FONCTION')
+
+
+#-- Calcul des transferts
+
+   if len(TRANSFERT) != 0 :
+      
+      l_fc=[];
+      nume_i1=[]
+      nume_j1=[]
+      
+      #-- test sur les entrees pour les references --#
+      if type(l_H[0][1]['REFER'])==int :
+         refer=[];
+         refer.append(l_H[0][1]['REFER'])
+      elif type(l_H[0][1]['REFER'])==tuple :
+         refer=list(l_H[0][1]['REFER'])
+      ind_refer=[];
+      dimh   = len(refer)*(len(list_ord)-len(refer))
+      for k1 in range(len(refer)) :
+         for l1 in range(len(list_ord)) :
+            if refer[k1] == list_ord[l1] : ind_refer.append(l1);
+
+      #-- H1 : interspectre / autospectre
+      #-- H2 : autospectre / interspectre
+      #-- CO : coherence entre H1 et H2. 
+      
+      if l_H[0][1]['ESTIM']!='HV' :
+         for i1 in range(len(refer)) :
+            for j1 in range(len(list_ord)) : 
+               if refer[i1] != list_ord[j1] :
+                  mes_i1=[num_mes[k1] for k1 in ind_ord[ind_refer[i1]]]  #-- mesures des efforts 
+                  mes_j1=[num_mes[k1] for k1 in ind_ord[j1]]  #-- mesures des reponses
+                  ind_mes=[];
+                  #-- recuperation des indices des mesures a predre en compte pour les spectres
+                  for k1 in range(len(mes_i1)) :
+                     if mes_i1[k1] in mes_j1 :
+                        ind_mes.append([ind_ord[i1][k1],ind_ord[j1][mes_j1.index(mes_i1[k1])]])
+
+                  #-- Calcul des FRF
+                  Guu=[0.j]*l_ech;
+                  Gyy=[0.j]*l_ech;
+                  Gyu=[0.j]*l_ech;
+                  if len(ind_mes) > 0 :   
+                     for l1 in range(len(ind_mes)) :
+                        Guu_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][0]]),fft[ind_mes[l1][0]])
+                        Guu=Numeric.add(Guu,Guu_t)
+                        Gyu_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][1]]),fft[ind_mes[l1][0]])
+                        Gyu=Numeric.add(Gyu,Gyu_t)
+                        Gyy_t=Numeric.multiply(Numeric.conjugate(fft[ind_mes[l1][1]]),fft[ind_mes[l1][1]])
+                        Gyy=Numeric.add(Gyy,Gyy_t)
+
+                     if l_H[0][1]['ESTIM']=='H1' :
+                        frf=Numeric.divide(Numeric.conjugate(Gyu),Guu);
+                        nom_frf='FRF-H1';
+                     elif l_H[0][1]['ESTIM']=='H2' :
+                        frf=Numeric.divide(Gyy,Gyu);
+                        nom_frf='FRF-H2';
+                     elif l_H[0][1]['ESTIM']=='CO' :
+                        H1=Numeric.divide(Numeric.conjugate(Gyu),Guu);
+                        H2=Numeric.divide(Gyy,Gyu);
+                        frf=Numeric.divide(H1,H2);
+                        nom_frf='FRF-COH';
+
+                     frf=frf.tolist();
+                     frf_r=[];
+
+                     for k1 in range(int(Numeric.floor(l_ech/2))) :
+                        frf_r=frf_r+[frq[k1],frf[k1].real,frf[k1].imag]
+
+                     _fonc = DEFI_FONCTION(NOM_PARA='FREQ',VALE_C=frf_r,);
+                     l_fc.append(_fonc.nom)
+                     nume_i1.append(refer[i1])
+                     nume_j1.append(list_ord[j1])
+
+      #-- On remplit la table_fonction avec tout ce qui va bien 
+      mcfact=[]
+      mcfact.append(_F(PARA='NOM_CHAM'    ,LISTE_K=nom_frf ))
+      mcfact.append(_F(PARA='OPTION'      ,LISTE_K='TOUT'  ))
+      mcfact.append(_F(PARA='DIMENSION'   ,LISTE_I=(dimh,) ))
+      mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i1 ))
+      mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j1 ))
+      mcfact.append(_F(PARA='FONCTION_C'  ,LISTE_K=l_fc  ))
+      self.DeclareOut('tab_inte',self.sd)
+      tab_inte=CREA_TABLE(LISTE=mcfact,
+                          TITRE='',
+                          TYPE_TABLE='TABLE_FONCTION')
+
index 115448c87342a2fb0fa052269cd2250df4b10aa0..b3e19a1ef57b61859291465d40500df11ae54a12 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF creation_donnees_homard Macro  DATE 11/12/2007   AUTEUR GNICOLAS G.NICOLAS 
+#@ MODIF creation_donnees_homard Macro  DATE 06/10/2008   AUTEUR GNICOLAS G.NICOLAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -21,7 +21,7 @@
 """
 Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster.
 """
-__revision__ = "V1.3"
+__revision__ = "V1.4"
 __all__ = [ ]
  
 import os
@@ -181,8 +181,8 @@ class creation_donnees_homard:
 #     5. Les entrées/sorties au format HOMARD
 #
       if self.mode_homard == "ADAP" :
-        self.fic_homard_niter   = "M_" + self.str_niter   + ".hom"
-        self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom"
+        self.fic_homard_niter   = "M_" + self.str_niter   + ".hom.med"
+        self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom.med"
       else :
         self.fic_homard_niter = None
         self.fic_homard_niterp1 = None
@@ -367,7 +367,7 @@ class creation_donnees_homard:
 #
 #     3. Les fichiers externes
 #
-      self.ecrire_ligne_configuration_0("Les fichiers au format MED")
+      self.ecrire_ligne_configuration_0("Les fichiers de Code_Aster, au format MED")
       self.ecrire_ligne_configuration_2("CCNoMN__", self.CCNoMN__)
       self.ecrire_ligne_configuration_2("CCMaiN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
       if self.mode_homard == "ADAP" :
@@ -379,7 +379,7 @@ class creation_donnees_homard:
 #
 #     4. Les fichiers HOMARD
 #
-      self.ecrire_ligne_configuration_0("Les fichiers au format HOMARD")
+      self.ecrire_ligne_configuration_0("Les fichiers de HOMARD, au format MED")
       if self.mode_homard == "ADAP" :
         self.ecrire_ligne_configuration_3("HOMaiN__", "M_"+self.str_niter  , self.fic_homard_niter )
         self.ecrire_ligne_configuration_3("HOMaiNP1", "M_"+self.str_niterp1, self.fic_homard_niterp1)
index 9ab71c5ce358f776e8c67515c91d6bb799c10dca..670e4fa4d1a7a2bfb372a72539f1e7ccca1746c7 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF dyna_iss_vari_ops Macro  DATE 21/04/2008   AUTEUR ZENTNER I.ZENTNER 
+#@ MODIF dyna_iss_vari_ops Macro  DATE 05/09/2008   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
index ad19d219bbc54c3c72427fd2b4b900d5a29f3345..964c2600ec96f4ee830f358d82920369794d0c8b 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF exec_logiciel_ops Macro  DATE 19/05/2008   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF exec_logiciel_ops Macro  DATE 21/10/2008   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -18,6 +18,8 @@
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
 
+# RESPONSABLE COURTOIS M.COURTOIS
+
 import os.path
 import traceback
 import shutil
@@ -112,14 +114,22 @@ def exec_logiciel_ops(self, LOGICIEL, ARGUMENT, MAILLAGE, CODE_RETOUR_MAXI, INFO
    if mode_lancement == CMD_EXTERNE:
       scmd = cmd % d_para
       comment = "Lancement de la commande :\n%s" % scmd
-      iret, output = ExecCommand(scmd,
-                                 alt_comment=comment)
-      # écrire l'output dans le .mess si demandé
-      if INFO == 2:
-         aster.affiche('MESSAGE', output)
+      iret, output, error = ExecCommand(scmd, alt_comment=comment, verbose=False, 
+                                        capturestderr=True, separated_stderr=True)
+      erreur = iret > CODE_RETOUR_MAXI
+      
+      # output
+      if INFO > 0 or erreur:
+         UTMESS('I', 'EXECLOGICIEL0_11', vali=(iret, CODE_RETOUR_MAXI))
+         UTMESS('I', 'EXECLOGICIEL0_9',  valk=output)
+      
+      # en cas d'erreur, on dump tout dans le .resu + .erre
+      if INFO == 2 or erreur:
+         UTMESS('I', 'EXECLOGICIEL0_8',  valk=scmd, print_as='E')
+         UTMESS('I', 'EXECLOGICIEL0_10', valk=error, print_as='E')
       
-      if CODE_RETOUR_MAXI >= 0 and iret > CODE_RETOUR_MAXI:
-         UTMESS('F', 'EXECLOGICIEL0_3', vali=[CODE_RETOUR_MAXI,iret])
+      if erreur:
+         UTMESS('F', 'EXECLOGICIEL0_3', vali=[CODE_RETOUR_MAXI, iret])
    
    #----------------------------------------------
    # 3b. Exécution d'un fichier Python
index 276e72b6b5140f0cbd072f684b189d9b9db8b4e5..14874e19efbe7db5d74b760d0eb7a3ed2627820b 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_adap_mail_ops Macro  DATE 11/12/2007   AUTEUR GNICOLAS G.NICOLAS 
+#@ MODIF macr_adap_mail_ops Macro  DATE 24/11/2008   AUTEUR GNICOLAS G.NICOLAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -32,57 +32,65 @@ def macr_adap_mail_ops ( self,
   """
 #
 #  1. args est le dictionnaire des arguments
-#     args.keys() est la liste des mots-clés
+#     args.keys() est la liste des mots-cles
 #     args.keys()[0] est la premiere valeur de cette liste
 #     args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-#     args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+#     args.keys(mot_cle) represente le contenu de la variable mot_cle dans la macro appelante.
 #
 ###  print args
 ###  print args.keys()
 ###  if len (args.keys())>0 : print args.keys()[0]
 ###  print args["MAILLAGE"]
 #
-#  2. Les caractéristiques d'un passage sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de sollicitations pour une série d'adaptation. L'ensemble de ces dictionnaires
-#     est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir
-#     la retrouver à chaque nouveau passage.
+#  2. Les caracteristiques d'un passage sont conservees dans un dictionnaire. Il y a autant de
+#     dictionnaires que de sollicitations pour une serie d'adaptation. L'ensemble de ces dictionnaires
+#     est conserve dans la liste Liste_Passages. Cette liste est necessairement globale pour pouvoir
+#     la retrouver e chaque nouveau passage.
 #     Description du dictionnaire de passages :
-#        dico["Maillage_0"]             = o ; string ; nom du concept du maillage initial de la série d'adaptation
-#        dico["Maillage_NP1"]           = o ; string ; nom du concept du dernier maillage adapté
-#        dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du répertoire de calcul pour HOMARD
-#        dico["Rep_Calc_HOMARD_local"]  = o ; string ; Nom local du répertoire de calcul pour HOMARD
-#                                                      depuis le répertoire de calcul pour ASTER
-#        dico["niter"]                  = o ; entier ; numéro d'itération
-#
-#  3. Les caractéristiques d'un maillage sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
+#        dico["Maillage_0"]             = o ; string ; nom du concept du maillage initial de la serie d'adaptation
+#        dico["Maillage_NP1"]           = o ; string ; nom du concept du dernier maillage adapte
+#        dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du repertoire de calcul pour HOMARD
+#        dico["Rep_Calc_HOMARD_local"]  = o ; string ; Nom local du repertoire de calcul pour HOMARD
+#                                                      depuis le repertoire de calcul pour ASTER
+#        dico["niter"]                  = o ; entier ; numero d'iteration
+#
+#  3. Les caracteristiques d'un maillage sont conservees dans un dictionnaire. Il y a autant de
+#     dictionnaires que de maillages manipules. L'ensemble de ces dictionnaires est conserve
 #     dans la liste liste_maillages.
 #     Description du dictionnaire de maillages :
 #        dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1", "MAILLAGE_NP1_ANNEXE" ou "MAILLAGE_FRONTIERE"
-#        dico["Nom_ASTER"]     = o ; concept ASTER associé
+#        dico["Nom_ASTER"]     = o ; concept ASTER associe
 #        dico["Action"]        = o ; string ; "A_ecrire" ou "A_lire"
 #        dico["NOM_MED"]       = o ; string ; Nom MED du maillage
 #
-#  4. Les caractéristiques d'un champ sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé
+#  4. Les caracteristiques d'un champ sont conservees dans un dictionnaire. Il y a autant de
+#     dictionnaires que de champs manipules. L'ensemble de ces dictionnaires est conserve
 #     dans la liste liste_champs.
 #     Description du dictionnaire de champs :
 #        dico["Type_Champ"]   = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
-#        dico["RESULTAT"]     = f ; concept ASTER du résutat associé
+#        dico["RESULTAT"]     = f ; concept ASTER du resutat associe
 #        dico["NOM_CHAM"]     = f ; string ; Nom ASTER du champ
-#        dico["CHAM_GD"]      = f ; concept ASTER du champ de grandeur associée
+#        dico["CHAM_GD"]      = f ; concept ASTER du champ de grandeur associee
 #        dico["COMPOSANTE"]   = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-#        dico["NUME_ORDRE"]   = f ; entier ; Numéro d'ordre du champ
+#        dico["NUME_ORDRE"]   = f ; entier ; Numero d'ordre du champ
 #        dico["INST"]         = f ; entier ; Instant du champ
-#        dico["PRECISION"]    = f ; entier ; Précision sur l'instant du champ
-#        dico["CRITERE"]      = f ; entier ; Critère de précision sur l'instant du champ
-#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
+#        dico["PRECISION"]    = f ; entier ; Precision sur l'instant du champ
+#        dico["CRITERE"]      = f ; entier ; Critere de precision sur l'instant du champ
+#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage
 #        dico["NOM_MED"]      = o ; string ; Nom MED du champ
-#        dico["SENSIBILITE"]  = f ; string ; Nom du paramètre sensible associé
+#        dico["SENSIBILITE"]  = f ; string ; Nom du parametre sensible associe
+#
+#  5. Signification de INFO
+#     INFO = 1 : aucun message
+#     INFO = 2 : les messages des commandes annexes (DEFI_FICHIER, IMPR_RESU, LIRE_MAILLAGE, LIRE_CHAMP)
+#     INFO = 3 : aucun message pour les commandes annexes
+#                1er niveau de message pour l'execution de HOMARD
+#     INFO = 4 : aucun message pour les commandes annexes
+#                2nd niveau de message pour l'execution de HOMARD
 #
   from Accas import _F
   from Macro import creation_donnees_homard 
-  from Utilitai.Utmess     import UTMESS
+  from Utilitai.Utmess     import UTMESS, MasquerAlarme, RetablirAlarme
   import aster 
   import string
   import os
@@ -91,14 +99,14 @@ def macr_adap_mail_ops ( self,
   global Liste_Passages
 #
 #====================================================================
-# 1. Préalables
+# 1. Prealables
 #====================================================================
 #
 # 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
 #
   self.set_icmd(1)
 #
-# 1.2. ==> Numéro du passage dans cette macro
+# 1.2. ==> Numero du passage dans cette macro
 #
   try :
     self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1
@@ -116,7 +124,7 @@ def macr_adap_mail_ops ( self,
   LIRE_MAILLAGE   = self.get_cmd("LIRE_MAILLAGE")
   LIRE_CHAMP      = self.get_cmd("LIRE_CHAMP")
 #
-# 1.4. ==> Le nom du programme HOMARD à lancer
+# 1.4. ==> Le nom du programme HOMARD e lancer
 #
   repertoire_outils = aster.repout()
   homard            = repertoire_outils + "homard"
@@ -132,11 +140,18 @@ def macr_adap_mail_ops ( self,
   dico_indi = {}
 #
   LISTE_ADAPTATION_LIBRE = ("RAFF_DERA" , "RAFFINEMENT" , "DERAFFINEMENT")
+#
+  if ( INFO == 2 ) :
+    infomail = "OUI"
+    infocomm = 2
+  else :
+    infomail = "NON"
+    infocomm = 1
 #
 #====================================================================
-# 2. Décodage des arguments de la macro-commande
+# 2. Decodage des arguments de la macro-commande
 #====================================================================
-# 2.1. ==> Données de pilotage de l'adaptation
+# 2.1. ==> Donnees de pilotage de l'adaptation
 #
   if ( self.nom == "MACR_ADAP_MAIL" ) :
 #
@@ -162,7 +177,7 @@ def macr_adap_mail_ops ( self,
 #gn      print "dico = ",dico
       liste_maillages.append(dico)
 #
-# 2.1.2. ==> L'éventuel indicateur d'erreur
+# 2.1.2. ==> L'eventuel indicateur d'erreur
 #
 #gn    print "\n.. Debut de 2.1.2"
 #gn    print "args = ", args
@@ -203,7 +218,7 @@ def macr_adap_mail_ops ( self,
       dico_indi = dico
 ###      print dico
 #
-# 2.1.3. ==> Les champs à mettre à jour
+# 2.1.3. ==> Les champs e mettre e jour
 #
 #gn     print "\n.. Debut de 2.1.3."
 #
@@ -277,7 +292,7 @@ def macr_adap_mail_ops ( self,
 #
 ###    print liste_zones
 #
-# 2.2. ==> Données de pilotage de l'information
+# 2.2. ==> Donnees de pilotage de l'information
 #
   else :
 #
@@ -289,7 +304,7 @@ def macr_adap_mail_ops ( self,
     dico["Action"]        = "A_ecrire"
     liste_maillages.append(dico)
 #
-# 2.3. ==> Suivi de frontière
+# 2.3. ==> Suivi de frontiere
 #
 #gn   print "\n.. Debut de 2.3."
 #
@@ -301,8 +316,8 @@ def macr_adap_mail_ops ( self,
     dico["Action"]        = "A_ecrire"
     liste_maillages.append(dico)
 #
-# 2.4. ==> Le numéro de version de HOMARD
-#    Remarque : dans la donnée de la version de HOMARD, il faut remplacer
+# 2.4. ==> Le numero de version de HOMARD
+#    Remarque : dans la donnee de la version de HOMARD, il faut remplacer
 #               le _ de la donnee par un ., qui est interdit dans la
 #               syntaxe du langage de commandes ASTER
 #    Remarque : il faut remplacer le N majuscule de la donnee par
@@ -322,14 +337,14 @@ def macr_adap_mail_ops ( self,
 #gn  print ".... version_perso  = ", version_perso
 #
 #====================================================================
-# 3. Préparation du lancement des commandes
+# 3. Preparation du lancement des commandes
 #====================================================================
 #
 # 3.1. ==> . Elaboration des noms MED des concepts de maillage
-#          . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
+#          . Memorisation des noms ASTER du maillage en entree et en sortie (sous forme string)
 #
-#          On crée une nouvelle liste des dictionnaires décrivant les maillages
-#          et à la fin on écrase l'ancienne liste par cette nouvelle.
+#          On cree une nouvelle liste des dictionnaires decrivant les maillages
+#          et e la fin on ecrase l'ancienne liste par cette nouvelle.
 #
 #gn  print "\n.. Debut de 3.1."
 #
@@ -349,12 +364,12 @@ def macr_adap_mail_ops ( self,
 #gn    print "\ndico apres = ",dico
   liste_maillages = l_aux
 #
-# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
+# 3.2. ==> Recherche du numero d'iteration et du repertoire de travail
 #
-# 3.2.1. ==> Par défaut :
-#            . le numéro d'itération est nul
-#            . le nom du répertoire de lancement de HOMARD est construit sur le nom
-#              du maillage en entrée et le numéro de passage dans la fonction
+# 3.2.1. ==> Par defaut :
+#            . le numero d'iteration est nul
+#            . le nom du repertoire de lancement de HOMARD est construit sur le nom
+#              du maillage en entree et le numero de passage dans la fonction
 #
 #gn  print "\.. Debut de 3.2.1."
 #
@@ -365,17 +380,17 @@ def macr_adap_mail_ops ( self,
 ###  print "Rep_Calc_HOMARD_local  = ", Rep_Calc_HOMARD_local
 ###  print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
 #
-# 3.2.2. ==> En adaptation : il faut repartir du répertoire de l'itération précédente
+# 3.2.2. ==> En adaptation : il faut repartir du repertoire de l'iteration precedente
 #
 #gn  print "\.. Debut de 3.2.2."
 #
   if ( mode_homard == "ADAP" ) :
 #
-# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
-#              dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
+# 3.2.2.1. ==> On recherche si dans les passages deje effectues, il en existe un
+#              dont le maillage d'arrivee etait l'actuel maillage d'entree. Si c'est
 #              le cas, cela veut dire que l'adaptation en cours est la suite d'une
-#              précédente. On doit donc utiliser le meme répertoire. Le numéro
-#              d'itération est celui de l'adaptation précédente augmenté de 1.
+#              precedente. On doit donc utiliser le meme repertoire. Le numero
+#              d'iteration est celui de l'adaptation precedente augmente de 1.
 #
 #gn     print "\.. Debut de 3.2.2.1."
 #
@@ -415,7 +430,7 @@ def macr_adap_mail_ops ( self,
 #
 ###  print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
 #
-# 3.2.3. Création du répertoire pour homard
+# 3.2.3. Creation du repertoire pour homard
 #        attention : on ne fait cette creation qu'une seule fois par cas
 #                    d'adaptation ou d'information
 #
@@ -435,21 +450,16 @@ def macr_adap_mail_ops ( self,
 #
 #gn  print "\.. Debut de 4."
 #
-#  On doit écrire : le maillage,
+#  On doit ecrire : le maillage,
 #                   le champ d'indicateur d'erreur
-#                   les champs à convertir
+#                   les champs e convertir
 #  Remarque : on met tout dans le meme fichier
 #
-#  Chacune de ces écritures est optionnelle selon le contexte.
-#
-  if ( INFO > 1 ) :
-    infomail = "OUI"
-  else :
-    infomail = "NON"
+#  Chacune de ces ecritures est optionnelle selon le contexte.
 #
-# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
-#          Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
-#                     un fichier de nom fort.n, placé dans le répertoire de calcul
+# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et eventuellement de HOMARD vers ASTER
+#          Remarque : aujourd'hui, les ecritures ou les lectures au format MED se font obligatoirement sur
+#                     un fichier de nom fort.n, place dans le repertoire de calcul
 ##
 # 4.1.1. ==> D'ASTER vers HOMARD
 #
@@ -464,20 +474,20 @@ def macr_adap_mail_ops ( self,
     fichier_homard_vers_aster = os.path.join(Rep_Calc_ASTER,"fort." + str(unite_fichier_homard_vers_aster))
 ###    print "fichier_homard_vers_aster = ",fichier_homard_vers_aster
 #
-# 4.2. La définition du fichier de ASTER vers HOMARD
+# 4.2. La definition du fichier de ASTER vers HOMARD
 # 
   DEFI_FICHIER ( ACTION= "ASSOCIER",
                  UNITE = unite_fichier_aster_vers_homard,
                  TYPE = "LIBRE",
-                 INFO = INFO )
+                 INFO = infocomm )
 #
 # 4.3. Le(s) maillage(s)
-# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
+# Le maillage de calcul et l'eventuel maillage de la frontiere sont ecrits
 # dans le meme fichier MED
-# En fait, on pourrait s'en passer au dela de la 1ère itération
-# car HOMARD a mémorisé. Mais dès que l'on écrit un champ,
-# les conventions MED imposent la présence du maillage dans le fichier.
-# Donc on va toujours écrire.
+# En fait, on pourrait s'en passer au dela de la 1ere iteration
+# car HOMARD a memorise. Mais des que l'on ecrit un champ,
+# les conventions MED imposent la presence du maillage dans le fichier.
+# Donc on va toujours ecrire.
 #
   for dico in liste_maillages :
     if ( dico["Action"] == "A_ecrire" ) :
@@ -487,32 +497,32 @@ def macr_adap_mail_ops ( self,
       motscfa["RESU"] = _F( INFO_MAILLAGE=infomail,
                           **motscsi )
 #
-      IMPR_RESU ( INFO = INFO
+      IMPR_RESU ( INFO = infocomm
                   FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard,
                   **motscfa )
 #
 # 4.4. Le(s) champ(s)
-#        Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
+#        Attention : il se peut que l'on demande la mise e jour du champ qui a servi comme
 #                    indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
 #                    impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
-#                    deux champs. D'ailleurs, c'est plus économique ainsi !
+#                    deux champs. D'ailleurs, c'est plus economique ainsi !
 #        Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur.
-#                   s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut
+#                   s'il y a demande de mise e jour, toutes les composantes sont concernees. Il faut
 #                   donc dans ce cas imprimer le champ total.
 #        dico["Type_Champ"]   = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
-#        dico["RESULTAT"]     = f ; concept ASTER du résutat associé
+#        dico["RESULTAT"]     = f ; concept ASTER du resutat associe
 #        dico["NOM_CHAM"]     = f ; string ; Nom ASTER du champ
-#        dico["CHAM_GD"]      = f ; concept ASTER du champ de grandeur associée
+#        dico["CHAM_GD"]      = f ; concept ASTER du champ de grandeur associee
 #        dico["COMPOSANTE"]   = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-#        dico["NUME_ORDRE"]   = f ; entier ; Numéro d'ordre du champ
+#        dico["NUME_ORDRE"]   = f ; entier ; Numero d'ordre du champ
 #        dico["INST"]         = f ; entier ; Instant du champ
-#        dico["PRECISION"]    = f ; entier ; Précision sur l'instant du champ
-#        dico["CRITERE"]      = f ; entier ; Critère de précision sur l'instant du champ
-#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
+#        dico["PRECISION"]    = f ; entier ; Precision sur l'instant du champ
+#        dico["CRITERE"]      = f ; entier ; Critere de precision sur l'instant du champ
+#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpole sur le nouveau maillage
 #        dico["NOM_MED"]      = o ; string ; Nom MED du champ
-#        dico["SENSIBILITE"]  = f ; string ; Nom du paramètre sensible associé
+#        dico["SENSIBILITE"]  = f ; string ; Nom du parametre sensible associe
 #
-# 4.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
+# 4.4.1. Recherche d'un doublon eventuel sur le champ d'indicateur d'erreur
 #
 #gn  print "dico_indi = ",dico_indi
   if len(dico_indi) > 0 :
@@ -530,10 +540,10 @@ def macr_adap_mail_ops ( self,
   liste_champs_imprime = []
   for dico in liste_champs :
 ###    print "\n.... dico = ",dico
-#   Pour un champ à mettre à jour, on a toujours impression
+#   Pour un champ e mettre e jour, on a toujours impression
     if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
       liste_champs_imprime.append(dico)
-#     Si le champ d'indicateur n'a toujours pas été repéré comme champ à mettre à jour :
+#     Si le champ d'indicateur n'a toujours pas ete repere comme champ e mettre e jour :
       if not indic_est_deja_imprime :
 #       Est-ce le meme champ ?
         on_a_le_champ = 1
@@ -559,9 +569,9 @@ def macr_adap_mail_ops ( self,
               else :
                 on_a_le_champ = 0
                 break
-#       Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
-#       seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
-#       en numéro d'ordre et une donnée en instant. On croise les doigts.)
+#       Si oui, est-ce au meme moment ? (remarque : si rien n'est designe, c'est qu'il n'y a qu'un
+#       seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnee
+#       en numero d'ordre et une donnee en instant. On croise les doigts.)
         if on_a_le_champ :
           for cle in [ "NUME_ORDRE", "INST" ] :
             if dico.has_key(cle) :
@@ -573,12 +583,12 @@ def macr_adap_mail_ops ( self,
         if on_a_le_champ :
           indic_est_deja_imprime = 1
 ###  print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime
-#   Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
-#   l'inclure dans les champs à imprimer
+#   Si le champ d'indicateur n'a pas ete repere comme champ e mettre e jour, il faut
+#   l'inclure dans les champs e imprimer
   if not indic_est_deja_imprime :
     liste_champs_imprime.append(dico_indi)
 #
-# 4.4.2. Impressions après le filtrage précédent
+# 4.4.2. Impressions apres le filtrage precedent
 #gn  print "\n.... Debut de 4.2.4.2."
 #
   for dico in liste_champs_imprime :
@@ -597,19 +607,19 @@ def macr_adap_mail_ops ( self,
                       )
 #gn    print ".. motscfa = ",motscfa
 #
-    IMPR_RESU ( INFO = INFO
+    IMPR_RESU ( INFO = infocomm
                 FORMAT ='MED', UNITE = unite_fichier_aster_vers_homard,
                 **motscfa )
 #
 #====================================================================
-# 5. ==> Création des fichiers de données pour HOMARD
+# 5. ==> Creation des fichiers de donnees pour HOMARD
 #====================================================================
 #
 #gn  print "\.. Debut de 5."
 #
   dico_configuration = {}
 #
-# 5.1. ==> Les généralités
+# 5.1. ==> Les generalites
 #
   dico_configuration["INFO"] = INFO
 #
@@ -629,7 +639,7 @@ def macr_adap_mail_ops ( self,
     dico_configuration[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
 #gn  print dico_configuration
 #
-# 5.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
+# 5.3. ==> Les caracteristiques de l'eventuel indicateur d'erreur
 #
   for dico in liste_champs :
     dico_aux = {}
@@ -644,7 +654,7 @@ def macr_adap_mail_ops ( self,
 #gn  if dico_configuration.has_key("Indicateur") :
 #gn    print "dico_configuration[Indicateur] = ", dico_configuration["Indicateur"]
 #
-# 5.4. ==> Les éventuelles zones de raffinement
+# 5.4. ==> Les eventuelles zones de raffinement
 #
   prem = 1
   for dico in liste_zones :
@@ -658,7 +668,7 @@ def macr_adap_mail_ops ( self,
 ###  if dico_configuration.has_key("Zones") :
 ###    print "dico_configuration[Zones] = ", dico_configuration["Zones"]
 #
-# 5.5. ==> La mise à jour de champs
+# 5.5. ==> La mise e jour de champs
 #
   prem = 1
   for dico in liste_champs :
@@ -685,10 +695,10 @@ def macr_adap_mail_ops ( self,
 #gn  if dico_configuration.has_key("Champs") :
 #gn   print "dico_configuration[Champs] = ", dico_configuration["Champs"]
 #
-# 5.6. ==> Appel de la fonction de création
+# 5.6. ==> Appel de la fonction de creation
 #
   donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration )
-  if ( INFO > 1 ) :
+  if ( INFO >= 4 ) :
     donnees_homard.quel_mode ( )
   fic_homard_niter, fic_homard_niterp1 = donnees_homard.creation_configuration ( )
   donnees_homard.ecrire_fichier_configuration ( )
@@ -697,11 +707,11 @@ def macr_adap_mail_ops ( self,
   else :
     Nom_Fichier_Donnees = "0"
 #
-# 5.7. ==> Impression eventuelle des fichiers créés
+# 5.7. ==> Impression eventuelle des fichiers crees
 #
-#gn  print "Répertoire ",Rep_Calc_HOMARD_global
+#gn  print "Repertoire ",Rep_Calc_HOMARD_global
 #gn  os.system("ls -la "+Rep_Calc_HOMARD_global)
-  if ( INFO > 1 ) :
+  if ( INFO >= 4 ) :
     l_aux = ["HOMARD.Donnees" , "HOMARD.Configuration"]
   else :
     l_aux = [ ]
@@ -723,21 +733,25 @@ def macr_adap_mail_ops ( self,
 #gn        time.sleep(3600)
 #
 #====================================================================
-# 6. Ecriture de la commande d'exécution de homard
+# 6. Ecriture de la commande d'execution de homard
 #====================================================================
 #
 #
 #gn  print "\.. Debut de 6."
+#gn  os.system("cp " + Rep_Calc_HOMARD_global + "/../fort.17* $HOME/aster")
+#gn  os.system("cp " + Rep_Calc_HOMARD_global + "/HOMARD.Configuration $HOME/aster/HOMARD.Configuration"+str(niter))
 #gn  fichier_aster_vers_homard_2 = os.path.join("/tmp" , "fort." + str(unite_fichier_aster_vers_homard))
 #gn  shutil.copyfile(fichier_aster_vers_homard, fichier_aster_vers_homard_2)
 #
+  iaux = INFO
   EXEC_LOGICIEL ( ARGUMENT = (Rep_Calc_HOMARD_global, # nom du repertoire
                               VERSION_HOMARD,         # version de homard
-                              str(INFO),              # niveau d information
-                              Nom_Fichier_Donnees,    # fichier de données HOMARD
+                              str(iaux),              # niveau d information
+                              Nom_Fichier_Donnees,    # fichier de donnees HOMARD
                               str(version_perso),     # version personnelle de homard ?
                              ),
-                  LOGICIEL = homard
+                  LOGICIEL = homard,
+                  INFO     = INFO,
                 )
 #gn  import time
 #gn  time.sleep(3600)
@@ -755,26 +769,33 @@ def macr_adap_mail_ops ( self,
 #        Remarque :
 #        La fonction self.DeclareOut(a,b) fonctionne ainsi :
 #        a est une chaine de caracteres
-#        b est la variable déclarée dans la commande
-#        le but est de associer le contenu de b à la variable locale qui sera désignée par a
+#        b est la variable declaree dans la commande
+#        le but est de associer le contenu de b e la variable locale qui sera designee par a
 #        Exemple :
 #        self.DeclareOut("maillage_a_lire",args["MAILLAGE_NP1"])
-#        ==> la variable maillage_a_lire est identifiée à l'argument "MAILLAGE_NP1"
+#        ==> la variable maillage_a_lire est identifiee e l'argument "MAILLAGE_NP1"
 #====================================================================
 #
   if ( mode_homard == "ADAP" ) :
 #
 # 7.1. ==> Le maillage
+#          On inhibe l'alarme MODELISA5_49 qui apparait car on fait VERIF=NON
 #
 #gn    print "args = ",args
     for dico in liste_maillages :
 #gn      print dico
       if ( dico["Action"] == "A_lire" ) :
+#
+        MasquerAlarme('MODELISA5_49')
+#
         self.DeclareOut("maillage_a_lire", dico["Nom_ASTER"])
         maillage_a_lire = LIRE_MAILLAGE ( UNITE = unite_fichier_homard_vers_aster,
                                        FORMAT = "MED",
                                        NOM_MED = dico["NOM_MED"],
-                                       VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
+                                       VERI_MAIL = _F(VERIF="NON"), INFO_MED = infocomm, INFO = infocomm )
+#
+        RetablirAlarme('MODELISA5_49')
+#
 #gn        print "MAILLAGE = ",maillage_a_lire
 #gn        print "NOM_MED = ",dico["NOM_MED"]
         if ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
@@ -803,12 +824,12 @@ def macr_adap_mail_ops ( self,
         champ_maj = LIRE_CHAMP ( UNITE = unite_fichier_homard_vers_aster, FORMAT = "MED",
                                  MAILLAGE = maillage_np1, NOM_MAIL_MED=maillage_np1_nom_med,
                                  NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
-                                 INFO = INFO, **motscsi )
+                                 INFO = infocomm, **motscsi )
 #
 #====================================================================
 # 8. Menage des fichiers devenus inutiles
 #    On doit imperativement garder le dernier fichier homard produit
-#    En mode d'information, on garde également les fichiers textes
+#    En mode d'information, on garde egalement les fichiers textes
 #====================================================================
 #
   liste_aux = [fichier_aster_vers_homard]
@@ -821,10 +842,11 @@ def macr_adap_mail_ops ( self,
     liste_aux.append(fichier_homard_vers_aster)
     fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niterp1)
     liste_aux_bis.append(fic)
+#gn  os.system("cp " + Rep_Calc_HOMARD_global + "/* $HOME/aster")
 #
   for fic in liste_aux :
     if fic not in liste_aux_bis :
-      if ( INFO > 1 ) :
+      if ( INFO >= 3 ) :
         print "Destruction du fichier ", fic
       if os.path.isfile(fic) :
         try :
@@ -832,19 +854,19 @@ def macr_adap_mail_ops ( self,
         except os.error,codret_partiel :
           self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
           UTMESS("F",'HOMARD0_5',valk=fic)
-#gn  print "Répertoire ",Rep_Calc_HOMARD_global
+#gn  print "Repertoire ",Rep_Calc_HOMARD_global
 #gn  os.system("ls -la "+Rep_Calc_HOMARD_global)
-#gn  print "Répertoire ",Rep_Calc_ASTER
+#gn  print "Repertoire ",Rep_Calc_ASTER
 #gn  os.system("ls -la "+Rep_Calc_ASTER)
 #gn  print os.listdir(Rep_Calc_HOMARD_global)
-#gn  print "glop :", Rep_Calc_HOMARD_global
 #
 #====================================================================
 #  C'est fini !
 #====================================================================
 #
-#gn  if ( mode_homard == "ADAP" ) :
-#gn    import time
-#gn    time.sleep(3600)
+###  if ( mode_homard == "ADAP" and niter == 3 ) :
+###  if ( niter == 2 ) :
+###    import time
+###    time.sleep(3600)
 #
   return
index 9415a2e9fe5fb04d2f564ed549b286fa52513c5c..30fc9ad8273eedd8299247692a5819935f930b13 100644 (file)
@@ -1,25 +1,25 @@
-#@ MODIF macr_cara_poutre_ops Macro  DATE 16/10/2007   AUTEUR REZETTE C.REZETTE 
+#@ MODIF macr_cara_poutre_ops Macro  DATE 30/06/2008   AUTEUR FLEJOU J-L.FLEJOU 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE JMBHH01 J.M.PROIX
 
-def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
+def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                               GROUP_MA,ORIG_INER,**args):
   """
      Ecriture de la macro MACR_CARA_POUTRE
@@ -55,15 +55,15 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
   # La macro compte pour 1 dans la numerotation des commandes
   self.set_icmd(1)
 
-  # Le concept sortant (de type table_sdaster) est nommé 'nomres' dans 
-  # le contexte de la macro
-  
+  # Le concept sortant (de type table_sdaster) est nommé 'nomres' dans le contexte de la macro
   self.DeclareOut('nomres',self.sd)
-
-#  if GROUP_MA_BORD and GROUP_MA:
-#     if not LIAISON:
-#
-  __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
+  #
+  if ( MAILLAGE != None ):
+      __nomlma=CREA_MAILLAGE(MAILLAGE=MAILLAGE)
+  elif ( args.has_key('UNITE') and args.has_key('FORMAT') ):
+      __nomlma=LIRE_MAILLAGE(UNITE=args['UNITE'],FORMAT=args['FORMAT'])
+  else:
+      assert False, "Erreur dans les options UNITE, FORMAT, MAILLAGE"
 
   __nomamo=AFFE_MODELE(MAILLAGE=__nomlma,
                        AFFE=_F(TOUT='OUI',
@@ -98,7 +98,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 # --- =     OU DU  CENTRE DE TORSION/CISAILLEMENT                      =
 # --- =        DES COEFFICIENTS DE CISAILLEMENT                        =
 # --- =     ET DE L INERTIE DE GAUCHISSEMENT                           =
-# --- =        DU RAYON DE TORSION SUR TOUT LE MAILLAGE 
+# --- =        DU RAYON DE TORSION SUR TOUT LE MAILLAGE
 # --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION    =
 # --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS=
 #     ==================================================================
@@ -118,7 +118,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
      __nomlma=DEFI_GROUP(reuse=__nomlma,
                          MAILLAGE=__nomlma,
                          **motscles)
-  
+
 
 
 # --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
@@ -194,7 +194,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 
            motscles={}
            motscles['FLUX_REP']=[]
-        
+
            if type(lgmaint)==types.StringType:
               motscles['FLUX_REP']=_F(GROUP_MA=args['GROUP_MA_INTE'],CARA_TORSION=__tbaire)
            else:
@@ -264,7 +264,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 
      __tempe2=THER_LINEAIRE(MODELE=__nomoth,
                             CHAM_MATER=__chmath,
-                            EXCIT=_F(CHARGE=__chart2,), 
+                            EXCIT=_F(CHARGE=__chart2,),
                             SOLVEUR=_F(STOP_SINGULIER='NON',),
                            )
 
@@ -305,7 +305,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 
      __tempe3=THER_LINEAIRE(MODELE=__nomoth,
                             CHAM_MATER=__chmath,
-                            EXCIT=_F(CHARGE=__chart3,), 
+                            EXCIT=_F(CHARGE=__chart3,),
                             SOLVEUR=_F(STOP_SINGULIER='NON',),
                            )
 
@@ -337,10 +337,10 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
      __m1=abs(__flun['TRAC_NOR',3])
      __m2=abs(__flun['TRAC_NOR',4])
      __rtext=max(__m1,__m2)
-     
+
  #    CALCUL DU RAYON DE TORSION : rt
  #    rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
+
      if args.has_key('GROUP_MA_INTE'):
        if args['GROUP_MA_INTE'] != None :
          if type(args['GROUP_MA_INTE'])==types.StringType :
@@ -363,7 +363,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
              __rtext=__m1
 
      __rt=__rtext
-         
+
 # --- CALCUL DE LA CONSTANTE DE TORSION :
 #     ---------------------------------
 
@@ -380,13 +380,13 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
         else:
            motscles['CARA_POUTRE']=_F(CARA_GEOM=__cageo,
                                     LAPL_PHI=__tempe1,
-                                    RT=__rt,  
+                                    RT=__rt,
                                     TOUT='OUI',
                                     OPTION='CARA_TORSION',      )
      __cator=POST_ELEM(MODELE=__nomoth,
                        CHAM_MATER=__chmath,
                        **motscles  )
+
 
 # --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
 # --- CENTRE DE CISAILLEMENT/TORSION :
@@ -399,7 +399,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                                       LAPL_PHI_Z=__tempe3,
                                       TOUT='OUI',
                                       OPTION='CARA_CISAILLEMENT',),  )
-     
+
 
 #
 #     ------------------------------------------------------------
@@ -552,7 +552,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                             SOLVEUR=_F(METHODE='LDLT',
                                        RENUM='SANS',
                                        STOP_SINGULIER='NON',),   )
-    
+
 # --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
 #     -------------------------------------
 
@@ -563,7 +563,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                                      TOUT='OUI',
                                      OPTION='CARA_GAUCHI'),  )
 
-     
+
 #
 #     ==================================================================
 # --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE            =
@@ -755,7 +755,7 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                                CHAM_MATER=__chmath,
                                EXCIT=_F(CHARGE=__chart3, ),
                                SOLVEUR=_F(STOP_SINGULIER='NON',)         )
-        
+
 # --- CALCUL DU RAYON DE TORSION :
 #     --------------------------
 
@@ -804,16 +804,16 @@ def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
                                              NOM_CHAM='FLUX_ELNO_TEMP',
                                              TRAC_NOR='OUI',
                                              NOM_CMP=('FLUX','FLUY'),
-                                             OPERATION='MOYENNE'))        
+                                             OPERATION='MOYENNE'))
               __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
               if __m1 > __rtext :
                 __rtext=__m1
 
         __rt=__rtext
-                
+
 # --- CALCUL DE LA CONSTANTE DE TORSION :
 #     ---------------------------------
-             
+
         __catp1=POST_ELEM(MODELE=__nomoth,
                           CHAM_MATER=__chmath,
                           CARA_POUTRE=_F(CARA_GEOM=__catp2,
index 36c901abe1b9781a6f8f1d3d2c4528dcbeed24cb..fd7078e5f54da7f3e08f87823f8fffa193a83b7c 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_lign_coupe_ops Macro  DATE 07/04/2008   AUTEUR GALENNE E.GALENNE 
+#@ MODIF macr_lign_coupe_ops Macro  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -602,7 +602,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
   from Noyau.N_utils import AsType
   import aster,math
   from Utilitai.UniteAster import UniteAster
-  from Utilitai.Utmess import  UTMESS
+  from Utilitai.Utmess import  UTMESS, MasquerAlarme, RetablirAlarme
   ier=0
 
   # On importe les definitions des commandes a utiliser dans la macro
@@ -618,6 +618,11 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
   # La macro compte pour 1 dans la numerotation des commandes
   self.set_icmd(1)
 
+  #
+  MasquerAlarme('CALCULEL2_63')
+  MasquerAlarme('CALCULEL2_64')
+  MasquerAlarme('MODELISA5_53')
+
   mcORDR={}
 
   if RESULTAT != None:
@@ -635,8 +640,8 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
       mcORDR['TOUT_ORDRE']='OUI'
 
     nomresu=RESULTAT.nom
-    l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
-    n_modele=string.strip(l_modele[0])
+    iret,ibid,n_modele = aster.dismoi('F','MODELE',nomresu,'RESULTAT')
+    n_modele=n_modele.strip()
     if n_modele=='' :
       if MODELE==None:
         UTMESS('F','POST0_9',valk=nomresu)
@@ -943,4 +948,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
 
   nomres=CREA_TABLE(**dprod)
 
+  RetablirAlarme('CALCULEL2_63')
+  RetablirAlarme('CALCULEL2_64')
+  RetablirAlarme('MODELISA5_53')
   return ier
index e0fafb602ac447beab0b34646087dcd09d6c6ced..8edc4e4068a0790aa7e70048dad5da60623405ee 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_recal_ops Macro  DATE 19/11/2007   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF macr_recal_ops Macro  DATE 04/11/2008   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -142,6 +142,18 @@ def macr_recal_externe( RESU_EXP, LIST_PARA, RESU_CALC, UNITE_ESCL=3, POIDS=None
 
    return fonctionnelle, gradient
 
+# --------------------------------------------------------------------------------------------------
+def force_list(obj, typref=list):
+   """Retourne 'obj' sous forme d'une liste de 'typref'.
+   """
+   if type(obj) not in (list, tuple):
+      assert type(obj) == typref, '%s != %s' % (type(obj), typref)
+      obj = [obj,]
+   elif len(obj) > 0:
+      elt = obj[0]
+      if type(elt) != typref:
+         obj = [obj,]
+   return obj
 
 # --------------------------------------------------------------------------------------------------
 def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC, 
@@ -181,7 +193,7 @@ def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU
          self.current_context[k]= v
    self.current_context['_F']=cata.__dict__['_F']
 
-   macr_recal(UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC
+   macr_recal(UNITE_ESCL, force_list(RESU_EXP, Numeric.ArrayType), POIDS, force_list(LIST_PARA), LIST_DERIV, force_list(RESU_CALC)
              ITER_MAXI, ITER_FONC_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI,
              GRAPHIQUE, SUIVI_ESCLAVE, METHODE, INFO, **args)
 
index 276f086bcad86b1b5a9d6ec8be345b8a01c0685d..b0d92e23c4255875c402a34d4d082c0a966a6ad7 100644 (file)
@@ -1,21 +1,21 @@
-#@ MODIF macro_expans_ops Macro  DATE 26/03/2008   AUTEUR BODEL C.BODEL 
+#@ MODIF macro_expans_ops Macro  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 
 
@@ -45,17 +45,26 @@ def macro_expans_ops( self,
     import aster
     EXTR_MODE = self.get_cmd('EXTR_MODE')
     PROJ_MESU_MODAL = self.get_cmd('PROJ_MESU_MODAL')
-    REST_BASE_PHYS = self.get_cmd('REST_BASE_PHYS')
+    REST_GENE_PHYS = self.get_cmd('REST_GENE_PHYS')
     PROJ_CHAMP = self.get_cmd('PROJ_CHAMP')
     NORM_MODE = self.get_cmd('NORM_MODE')
-    
-    
+
+
     # La macro compte pour 1 dans la numerotation des commandes
     self.set_icmd(1)
 
-    NUME_MODE_NUM = MODELE_CALCUL['NUME_MODE']
-    NUME_MODE_EXP = MODELE_MESURE['NUME_MODE']
-    
+    is_nume_num = is_nume_exp = 0
+    if MODELE_CALCUL['NUME_MODE'] or  MODELE_CALCUL['NUME_ORDRE']:
+        # on cree un resultat RESU_NX par extraction de NUME_ORDREs
+        is_nume_num = 1
+    else:
+        if RESU_NX: UTMESS('A','MEIDEE0_6',valk=['MODELE_MESURE','RESU_EX'])
+    if MODELE_MESURE['NUME_MODE'] or  MODELE_MESURE['NUME_ORDRE']:
+        # On cree un RESU_EX par extraction de NUME_ORDREs
+        is_nume_exp = 1
+    else:
+        if RESU_EX: UTMESS('A','MEIDEE0_6',valk=['MODELE_CALCUL','RESU_NX'])
+
     RESU_NUM = MODELE_CALCUL['BASE']
     RESU_EXP = MODELE_MESURE['MESURE']
 
@@ -66,25 +75,35 @@ def macro_expans_ops( self,
 
     # Extraction des modes numériques
     # -------------------------------
-    self.DeclareOut( "RESU_NX", RESU_NX )
-    if not NUME_MODE_NUM:
+    if not is_nume_num:
         RESU_NX = RESU_NUM
     else:
-        RESU_NX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_NUM,
-                                             NUME_MODE=NUME_MODE_NUM ) )
+        self.DeclareOut( "RESU_NX", RESU_NX )
+        mfact = {'MODE':RESU_NUM}
+        if MODELE_CALCUL['NUME_MODE']:
+            mfact.update({'NUME_MODE':MODELE_CALCUL['NUME_MODE']})
+        elif MODELE_CALCUL['NUME_ORDRE']:
+            mfact.update({'NUME_ORDRE':MODELE_CALCUL['NUME_ORDRE']})
+
+        RESU_NX = EXTR_MODE( FILTRE_MODE = mfact )
+
 
-    
     # Extraction des modes expérimentaux
     # ----------------------------------
-    self.DeclareOut( "RESU_EX", RESU_EX )
-    if not NUME_MODE_EXP:
+    if not is_nume_exp:
         RESU_EX = RESU_EXP
     else:
-        RESU_EX = EXTR_MODE( FILTRE_MODE=_F( MODE=RESU_EXP,
-                                             NUME_MODE=NUME_MODE_EXP ) )
+        self.DeclareOut( "RESU_EX", RESU_EX )
+        mfact = {'MODE':RESU_EXP}
+        if MODELE_MESURE['NUME_MODE']:
+            mfact.update({'NUME_MODE':MODELE_MESURE['NUME_MODE']})
+        elif MODELE_MESURE['NUME_ORDRE']:
+            mfact.update({'NUME_ORDRE':MODELE_MESURE['NUME_ORDRE']})
+
+        RESU_EX = EXTR_MODE( FILTRE_MODE = mfact )
+
 
 
-    
     # Projection des modes experimentaux - on passe le mot-clef
     # RESOLUTION directement à PROJ_MESU_MODAL
     # ---------------------------------------------------------
@@ -113,8 +132,8 @@ def macro_expans_ops( self,
         paras = None
         #"LE MODELE MEDURE DOIT ETRE UN CONCEPT DE TYPE DYNA_HARMO OU MODE_MECA")
         UTMESS('A','MEIDEE0_1')
-            
-    
+
+
     try:
         __PROJ = PROJ_MESU_MODAL(MODELE_CALCUL = _F( BASE=RESU_NX,
                                                      MODELE=MOD_CALCUL,
@@ -128,30 +147,32 @@ def macro_expans_ops( self,
                                  );
     except Exception, err:
         raise Exception, err
-    
+
     # Phase de reconstruction des donnees mesurees sur le maillage
     # numerique
     # ------------------------------------------------------------
     self.DeclareOut( "RESU_ET", RESU_ET )
-    RESU_ET = REST_BASE_PHYS( RESU_GENE  = __PROJ,
+    RESU_ET = REST_GENE_PHYS( RESU_GENE  = __PROJ,
                               MODE_MECA   = RESU_NX,
                               TOUT_ORDRE  = 'OUI',
                               NOM_CHAM    = NOM_CHAM);
 
 
-    
+
     # Restriction des modes mesures etendus sur le maillage capteur
     # -------------------------------------------------------------
     self.DeclareOut( "RESU_RD", RESU_RD )
     refd1 = aster.getvectjev(RESU_EXP.nom.ljust(19)+".REFD")
     refd2 = aster.getvectjev(RESU_EX.nom.ljust(19)+".REFD")
 
+    nume=None
     if RESU_EX.REFD.get():
         tmp = RESU_EX.REFD.get()[3]
-        nume = self.jdc.sds_dict[tmp.strip()]
+        if tmp.strip() :
+            nume = self.jdc.sds_dict[tmp.strip()]
     elif NUME_DDL:
         nume = NUME_DDL
-    else:
+    if not nume :
         UTMESS('A','MEIDEE0_5')
     RESU_RD = PROJ_CHAMP( METHODE    = 'ELEM',
                           RESULTAT   = RESU_ET,
@@ -165,5 +186,5 @@ def macro_expans_ops( self,
                           NOM_PARA   = paras,
                         );
 
-   
+
     return ier
index 6bca7b13c95b43288f34433ec60b3af30418307d..a3089492471c4b21bbf785e79ebd4338e9d83fab 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_matr_asse_ops Macro  DATE 18/03/2008   AUTEUR BOYERE E.BOYERE 
+#@ MODIF macro_matr_asse_ops Macro  DATE 17/11/2008   AUTEUR DELMAS J.DELMAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -86,7 +86,7 @@ def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
           motscles['RIGI_MECA']   =rigel
           motscles['MASS_MECA']   =masel
     if CHARGE     != None:
-       if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
+       if option[0:9] not in ('MASS_THER','RIGI_GEOM'):
                            motscles['CHARGE']      =CHARGE
     if CHAM_MATER != None: motscles['CHAM_MATER']  =CHAM_MATER
     if CARA_ELEM  != None: motscles['CARA_ELEM']   =CARA_ELEM
diff --git a/Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py b/Aster/Cata/cataSTA9/Macro/macro_visu_meidee_ops.py
deleted file mode 100644 (file)
index 7d817d3..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-#@ MODIF macro_visu_meidee_ops Macro  DATE 14/05/2008   AUTEUR BODEL C.BODEL 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-## \package macro_visu_meidee_ops Implémentation de la macro MACRO_VISU_MEIDEE
-#
-# Ce module contient la partie controle de la macro MACRO_VISU_MEIDEE
-# l'implémetation de cette macro se trouve dans les modules
-# meidee_help, meidee_mac, meidee_massamor, meidee_turbulent
-# on utilise aussi une librairie de support
-# pour la gestion de l'interface graphique dans meidee_iface
-
-
-def macro_visu_meidee_ops( self,
-                           INTERACTIF         = None,
-                           UNITE_FIMEN        = None,
-                           UNITE_RESU         = None,
-                           EXPANSION          = None,
-                           FLUIDE_ELASTIQUE   = None,
-                           TURBULENT          = None,
-                           MODIFSTRUCT        = None,
-                           GROUP_NO_CAPTEURS  = None,
-                           GROUP_NO_EXTERIEUR = None,
-                           RESU_FLUDELA       = None,
-                           RESU_TURBULENT     = None,
-                           RESU_MODIFSTRU     = None,
-                           **args):
-    import aster
-    from Meidee.meidee_cata import MeideeObjects
-    ier = 0
-    
-    prev = aster.onFatalError()
-    aster.onFatalError("EXCEPTION")
-
-    # La macro compte pour 1 dans la numerotation des commandes
-    self.set_icmd(1)
-
-    
-    # gestion des concepts sortants de la macro, declares a priori
-    table = []
-    table_fonction = []
-
-    if not RESU_MODIFSTRU:
-        out_modifstru = {}
-    else:
-        out_modifstru = RESU_MODIFSTRU[0] # max=1 dans le capy
-
-
-    if not RESU_TURBULENT:
-        RESU_TURBULENT = []
-    else:
-        for res in RESU_TURBULENT:
-            table_fonction.append(res['TABLE'])
-    out_turbulent = {"DeclareOut" : self.DeclareOut,
-                     "TypeTables" : 'TABLE_FONCTION',
-                     "ComptTable" : 0,
-                     "TablesOut"  : table_fonction}
-
-    if not RESU_FLUDELA:
-        RESU_FLUDELA = []
-    else:
-        for res in RESU_FLUDELA:
-            table.append(res['TABLE'])
-    out_fludela = {"DeclareOut" : self.DeclareOut,
-                   "TypeTables" : 'TABLE',
-                   "ComptTable" : 0,
-                   "TablesOut" : table}
-
-    
-    # Mode interactif : ouverture d'une fenetre Tk
-    if INTERACTIF == "OUI":
-        create_interactive_window(self,
-                                  UNITE_FIMEN,
-                                  UNITE_RESU,
-                                  out_fludela,
-                                  out_turbulent,
-                                  out_modifstru)
-    else:
-        from Meidee.meidee_calcul import MessageBox
-        from Meidee.meidee_test import TestMeidee
-        mess = MessageBox(UNITE_RESU)
-        mess.disp_mess("Mode non intéractif")
-        
-        objects = MeideeObjects(self, mess)
-
-        # importation des concepts aster existants de la memoire jeveux
-        TestMeidee(self,
-                   mess,
-                   out_fludela,
-                   out_turbulent,
-                   out_modifstru,
-                   objects,
-                   EXPANSION,
-                   FLUIDE_ELASTIQUE,
-                   TURBULENT,
-                   MODIFSTRUCT,
-                   GROUP_NO_CAPTEURS,
-                   GROUP_NO_EXTERIEUR              
-                   )
-
-        mess.close_file()
-    aster.onFatalError(prev)
-    return ier
-
-
-
-def create_tab_mess_widgets(tk, UNITE_RESU):
-    """Construits les objects table et boîte à messages."""
-    try:
-        from Pmw import PanedWidget
-    except ImportError:
-        PanedWidget = None
-    
-    from Meidee.meidee_iface import MessageBoxInteractif, TabbedWindow
-    
-    if PanedWidget:
-        pw = PanedWidget(tk, orient='vertical',
-                         hull_borderwidth = 1,
-                         hull_relief = 'sunken',
-                         )
-        tabsw = pw.add("main", min=.1, max=.9)
-        msgw = pw.add("msg", min=.1, max=.2)
-        pw.grid(sticky='nsew')
-        tabsw.rowconfigure(0, weight=1)
-        tabsw.columnconfigure(0, weight=1)
-        msgw.rowconfigure(0, weight=1)
-        msgw.columnconfigure(0, weight=1)
-    else:
-        tabsw = tk
-        msgw = tk
-        tk.rowconfigure(1, weight=3)
-        tk.rowconfigure(1, weight=1)
-    
-    tabs = TabbedWindow(tabsw, ["Expansion de modeles",
-                                "Modification structurale",
-                                "MEIDEE mono-modal",
-                                "Identification de chargement"])
-
-    tabs.grid(row=0, column=0, sticky='nsew')
-    # pack(side='top',expand=1,fill='both')
-    
-    # ecriture des message dans un fichier message
-    mess = MessageBoxInteractif(msgw, UNITE_RESU)
-    if PanedWidget:
-        mess.grid(row=0, column=0, sticky='nsew')
-        #mess.pack(side='top',expand=1,fill='both')
-    else:
-        mess.grid(row=1, column=0, sticky='nsew')
-        #mess.pack(side='top',expand=1,fill='both')
-    
-    return tabs, mess
-
-def get_fimen_files(UNITE_FIMEN, FIMEN=None):
-    """Fichiers fimen éventuels associés aux unités logiques en entrée"""
-    # XXX FIMEN is not defined (should it be included in the macro)
-    from Utilitai.UniteAster import UniteAster
-    fichiers_fimen = []
-    print "FIMEN:", UNITE_FIMEN
-
-    if UNITE_FIMEN:
-        if type(FIMEN)==int:
-            UNITE_FIMEN= [ UNITE_FIMEN ]
-        for unit in UNITE_FIMEN:
-            UL = UniteAster()
-            fichiers_fimen.append( (unit, UL.Nom(unit)) )
-
-    return fichiers_fimen
-
-
-class FermetureCallback:
-    """Opérations à appliquer lors de la fermeture de la
-    fenêtre Tk.
-    """
-
-    def __init__(self, main_tk, turbulent):
-        self.main_tk = main_tk
-        self.turbulent = turbulent
-
-    def apply(self):
-        """Enlève les fichiers temporaires de Xmgrace"""
-        self.turbulent.xmgr_manager.fermer()
-        self.main_tk.quit()
-
-
-def create_interactive_window(macro,
-                              UNITE_FIMEN,
-                              UNITE_RESU,
-                              out_fludela,
-                              out_turbulent,
-                              out_modifstru):
-    """Construit la fenêtre interactive comprenant une table pour 
-    les 4 domaines de Meidee."""
-    from Tkinter import Tk
-    
-    from Meidee.meidee_cata import MeideeObjects
-    from Meidee.meidee_correlation import InterfaceCorrelation
-    from Meidee.meidee_modifstruct import InterfaceModifStruct
-    from Meidee.meidee_fludela import InterfaceFludela
-    from Meidee.meidee_turbulent import InterfaceTurbulent
-    
-    # fenetre principale
-    tk = Tk()
-    tk.rowconfigure(0, weight=1)
-    tk.columnconfigure(0,weight=1)
-    
-    tabs, mess = create_tab_mess_widgets(tk, UNITE_RESU)
-    main = tabs.root()
-    
-    # importation des concepts aster de la memoire jeveux    
-    objects = MeideeObjects(macro, mess)
-    tabs.set_objects(objects)
-    
-    iface = InterfaceCorrelation(main, objects, macro, mess)
-    imodifstruct = InterfaceModifStruct(main, objects, macro,
-                                        mess, out_modifstru)
-    fludela = InterfaceFludela(main, objects,
-                               get_fimen_files(UNITE_FIMEN), mess, out_fludela)
-    turbulent = InterfaceTurbulent(main, objects, mess, out_turbulent)
-    
-    tabs.set_tab("Expansion de modeles", iface.main)
-    tabs.set_tab("Modification structurale", imodifstruct.main)
-    tabs.set_tab("MEIDEE mono-modal", fludela )
-    tabs.set_tab("Identification de chargement", turbulent)
-    
-    #tabs.set_current_tab("Modifstruct")
-    tabs.set_current_tab("Identification de chargement")
-
-    tk.protocol("WM_DELETE_WINDOW", FermetureCallback(tk, turbulent).apply)
-    
-    try:
-        tk.mainloop()
-    except :
-        print "MEIDEE : *ERREUR*"
-
-    
index 348cb750fd458e5c5fde7937def47051a637c591..d8771a4121d49f591fbcb96ef7ce42477edbf21a 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF observation_ops Macro  DATE 26/03/2008   AUTEUR BODEL C.BODEL 
+#@ MODIF observation_ops Macro  DATE 14/10/2008   AUTEUR PELLET J.PELLET 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -108,29 +108,33 @@ def observation_ops(self,
 
     # cham_mater et cara_elem pour le resultat a projeter
     jdc = CONTEXT.get_current_step().jdc
-    nom_cara_elem = aster.getvectjev( RESULTAT.nom.ljust(19) +
-                                      '.CARA        ' )[0].strip()
-    if len(nom_cara_elem) > 0 :
-##        nom_cara_elem = nom_cara_elem[0].strip()
-        cara_elem = jdc.sds_dict[nom_cara_elem]
+    iret,ibid,nom_cara_elem = aster.dismoi('F','CARA_ELEM',RESULTAT.nom,'RESULTAT')
+    if len(nom_cara_elem) > 0    :
+        assert nom_cara_elem.strip() != "#PLUSIEURS" , nom_cara_elem
+        if nom_cara_elem.strip() == "#AUCUN" :
+            cara_elem = None
+        else :
+            cara_elem = jdc.sds_dict[nom_cara_elem.strip()]
     else:
         cara_elem = None
-    
-    nom_cham_mater = aster.getvectjev( RESULTAT.nom.ljust(19) +
-                                       '.MATE        ' )[0].strip()
+
+    iret,ibid,nom_cham_mater = aster.dismoi('F','CHAM_MATER',RESULTAT.nom,'RESULTAT')
     if len(nom_cham_mater) > 0 :
-##        nom_cham_mater = nom_cham_mater[0].strip()
-        cham_mater = jdc.sds_dict[nom_cham_mater]
+        assert nom_cham_mater.strip() != "#PLUSIEURS" , nom_cham_mater
+        if nom_cham_mater.strip() == "#AUCUN" :
+            cham_mater = None
+        else :
+            cham_mater = jdc.sds_dict[nom_cham_mater.strip()]
     else:
         cham_mater = None
 
     # recuperation du maillage associe au modele experimental
-    _maillag = aster.getvectjev( MODELE_2.nom.ljust(8) + '.MODELE    .LGRF        ' )
+    _maillag = aster.getvectjev( MODELE_2.nom.ljust(8) + '.MODELE    .LGRF' )
     maillage = _maillag[0].strip()
     jdc = CONTEXT.get_current_step().jdc
     mayaexp = jdc.sds_dict[maillage]
 
-    _maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE    .LGRF        ' )
+    _maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE    .LGRF' )
     maillage = _maillag[0].strip()
     jdc = CONTEXT.get_current_step().jdc
     mayanum = jdc.sds_dict[maillage]
@@ -325,7 +329,7 @@ def crea_normale(self, modele_1, modele_2,
     from Accas import _F
     # recherche du maillage associe au modele numerique
     nom_modele_num = modele_1.nom
-    _maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE    .LGRF        ' )
+    _maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE    .LGRF' )
     maillage = _maillag[0].strip()
     jdc = CONTEXT.get_current_step().jdc
     mayanum = jdc.sds_dict[maillage]
@@ -366,7 +370,7 @@ def crea_normale(self, modele_1, modele_2,
         affe_dct["CHAM_MATER"] = cham_mater
     if cara_elem is not None:
         affe_dct["CARA_ELEM"] = cara_elem
-    
+
     __norm3 = CREA_RESU( OPERATION = 'AFFE',
                          TYPE_RESU = 'EVOL_ELAS',
                          NOM_CHAM  = 'DEPL',
index 944f4395de7e5150d70e9f9d8dc0304264959cf7..481e9b790b6dd44072373efc5aeac135a71bb33e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_dyna_alea_ops Macro  DATE 25/04/2008   AUTEUR ZENTNER I.ZENTNER 
+#@ MODIF post_dyna_alea_ops Macro  DATE 06/10/2008   AUTEUR ZENTNER I.ZENTNER 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -59,9 +59,13 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args):
 #---------algorithme d'optimisation pour le  maximum de vraisemblance
    def vrais(x):
       am=x[0]
-      assert am >0.000, 'optimize.py: am negatif'
       beta=x[1]
-      assert am >0.000, 'optimize.py: beta negatif'
+#       assert am >0.000, 'optimize.py: beta negatif'
+#       assert am >0.000, 'optimize.py: am negatif'
+      if am <=0.000:
+          am=0.01
+      if beta <=0.000:
+          beta=0.001          
       res=1.0
       for k in range(Nbval):
          ai=liste_indic[k]
@@ -143,11 +147,10 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args):
       mcfact.append(_F(PARA= 'PARA_NOCI' ,LISTE_R =liste_a  ))
       mcfact.append(_F(PARA= 'PFA' ,LISTE_R = lpfa ))
 
-   #print 'fractiles a calculer par bootstrap : ', FRAGILITE['FRACTILE']
-
 
       # si calcul de fractiles (intervalles de confiance) par bootstrap
 
+      x0 = xopt
       if FRAGILITE['FRACTILE']!= None :
          if INFO==2 :
             texte='FRACTILES A CALCULER PAR BOOTSTRAP '+ str(FRAGILITE['FRACTILE']) +'\n'
@@ -177,7 +180,7 @@ def post_dyna_alea_ops(self,INTE_SPEC, FRAGILITE,TITRE,INFO,**args):
             if INFO==2 :
                texte1='BOOTSTRAP TIRAGE '+ str(kb+1)
                texte2='  PARAMETRES Am, beta ESTIMES : '+str(xopt)+'\n'
-               aster.affiche('MESSAGE',texte1) #print 'bootstrap tirage', kb+1, ', -  parametres Am, beta estimes: ', xopt
+               aster.affiche('MESSAGE',texte1) 
                aster.affiche('MESSAGE',texte2)
             vecval=(Numeric.log(vec_a/xopt[0]))/xopt[1]
             for m in range(Nba):
index 4222d3563ea2ce2cf6b4a4a0dd66d77b0b330751..38595c64717903bf225452895df69ca02cb9950c 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_k1_k2_k3_ops Macro  DATE 13/05/2008   AUTEUR GALENNE E.GALENNE 
+#@ MODIF post_k1_k2_k3_ops Macro  DATE 17/11/2008   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -50,6 +50,50 @@ def moy(t):
     for value in t :
       m += value
     return (m/len(t))
+
+def InterpolFondFiss(s0, Coorfo) :
+# Interpolation des points du fond de fissure (xfem)
+# s0     = abscisse curviligne du point considere 
+# Coorfo = Coordonnees du fond (extrait de la sd fiss_xfem)
+# en sortie : xyza = Coordonnees du point et abscisse
+   n = len(Coorfo) / 4
+   if ( s0 < Coorfo[3] )  :
+     xyz =  [Coorfo[0],Coorfo[1],Coorfo[2]]
+     return xyz
+   if ( s0 > Coorfo[-1]  ) :
+     xyz =  [Coorfo[-4],Coorfo[-3],Coorfo[-2]]
+     return xyz
+   i = 1
+   while s0 > Coorfo[4*i+3]:
+      i = i+1
+   xyz = [0.]*4
+   xyz[0] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+0]-Coorfo[4*(i-1)+0]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+0]
+   xyz[1] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+1]-Coorfo[4*(i-1)+1]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+1]
+   xyz[2] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+2]-Coorfo[4*(i-1)+2]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+2]
+   xyz[3] = s0
+   return xyz
+
+def InterpolBaseFiss(s0, Basefo, Coorfo) :
+# Interpolation de la base locale en fond de fissure
+# s0     = abscisse curviligne du point considere     
+# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz)
+# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem)
+# en sortie : VPVNi = base locale au point considere (6 coordonnes)
+   n = len(Coorfo) / 4
+   if ( s0 < Coorfo[3] )  :
+     VPVNi =  Basefo[0:6]
+     return VPVNi
+   if ( s0 > Coorfo[-1]  ) :
+     VPVNi = [Basefo[i] for i in range(-6,0)] 
+     return VPVNi
+   i = 1
+   while s0 > Coorfo[4*i+3]:
+      i = i+1
+   VPVNi = [0.]*6
+   for k in range(6) :
+      VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k]
+   return VPVNi
+    
      
 def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
                    TABL_DEPL_SUP,TABL_DEPL_INF,ABSC_CURV_MAXI,PREC_VIS_A_VIS,
@@ -255,6 +299,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
         Lnofon = Lnf1
         Nbnofo = Nbf1
         ListmaS = FOND_FISS.LEVRESUP___MAIL.get()
+        if ListmaS==None :  UTMESS('F','RUPTURE0_19')
         if SYME_CHAR=='SANS':
           ListmaI = FOND_FISS.LEVREINF___MAIL.get()
         __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond',
@@ -351,9 +396,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
         if NB_NOEUD_COUPE < 3 : 
           UTMESS('A','RUPTURE0_17')
           NB_NOEUD_COUPE = 5
-        MOD = aster.getvectjev(string.ljust(RESULTAT.nom,19)+'.MODL        ')
-        if MOD==None : UTMESS('F','RUPTURE0_18')
-        MODEL = self.jdc.sds_dict[MOD[0].rstrip()]
+        iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT')
+        n_modele=n_modele.rstrip()
+        if len(n_modele)==0 : UTMESS('F','RUPTURE0_18')
+        MODEL = self.jdc.sds_dict[n_modele]
         dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
         for i in range(Nbf1):
           Porig = array(d_coorf[Lnf1[i]] )
@@ -511,9 +557,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
      DTAN_EXTR = args['DTAN_EXTR']
      dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
 #Projection du resultat sur le maillage lineaire initial     
-     MOD = aster.getvectjev(string.ljust(RESULTAT.nom,19)+'.MODL        ')
-     if MOD==None : UTMESS('F','RUPTURE0_18')
-     MODEL = self.jdc.sds_dict[MOD[0].rstrip()]
+     iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT')
+     n_modele=n_modele.rstrip()
+     if len(n_modele)==0 : UTMESS('F','RUPTURE0_18')
+     MODEL = self.jdc.sds_dict[n_modele]
      xcont = MODEL.xfem.XFEM_CONT.get()
      if xcont[0] == 0 :
        __RESX = RESULTAT
@@ -529,12 +576,40 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
                      MODELE_2=__MODLINE, );   
 #Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv)
      Listfo = FISSURE.FONDFISS.get()
-     Nbfond = len(Listfo)/4
+     Basefo = FISSURE.BASEFOND.get()
+     NB_POINT_FOND = args['NB_POINT_FOND']
+#Traitement du cas fond multiple
+     Fissmult = FISSURE.FONDMULT.get()
+     Nbfiss = len(Fissmult)/2
+     Numfiss = args['NUME_FOND']
+     if  Numfiss <= Nbfiss and Nbfiss > 1 :
+       Ptinit = Fissmult[2*(Numfiss-1)]
+       Ptfin = Fissmult[2*(Numfiss-1)+1]
+       Listfo2 = Listfo[((Ptinit-1)*4):(Ptfin*4)]
+       Listfo = Listfo2
+       Basefo2 = Basefo[((Ptinit-1)*(2*ndim)):(Ptfin*(2*ndim))]
+       Basefo = Basefo2
+     elif  Numfiss > Nbfiss :
+       UTMESS('F','RUPTURE1_38',vali=[Nbfiss,Numfiss])
+####     
+     
+     if NB_POINT_FOND != None and MODELISATION=='3D' :
+       Nbfond = NB_POINT_FOND
+       absmax = Listfo[-1]
+       Coorfo = [None]*4*Nbfond
+       Vpropa = [None]*3*Nbfond
+       for i in range(0,Nbfond) :
+         absci = i*absmax/(Nbfond-1)
+         Coorfo[(4*i):(4*(i+1))] = InterpolFondFiss(absci, Listfo)
+         Vpropa[(6*i):(6*(i+1))] = InterpolBaseFiss(absci,Basefo, Listfo)
+     else :
+       Coorfo = Listfo
+       Vpropa = Basefo
+       Nbfond = len(Coorfo)/4
 # Calcul de la direction de propagation en chaque point du fond
      VP = [None]*Nbfond
      VN = [None]*Nbfond
      absfon = [0,]
-     Vpropa = FISSURE.BASEFOND.get()
 # Cas fissure non necessairement plane     
      if VECT_K1 == None :
        i = 0
@@ -550,9 +625,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
            VN[0] = array([Vpropa[0],Vpropa[1],Vpropa[2]])
            VP[0] = array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]])
          for i in range(1,Nbfond-1):
-           Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]])
-           Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
-           absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+           absf = Coorfo[4*i+3]
            absfon.append(absf)
            VN[i] = array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
            VP[i] = array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]])
@@ -560,9 +633,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
            if abs(verif) < 0.98:
              UTMESS('A','RUPTURE1_35',vali=[i-1,i])
          i = Nbfond-1
-         Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]])
-         Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
-         absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+         absf =  Coorfo[4*i+3]
          absfon.append(absf)
          if DTAN_EXTR != None :
            VP[i] = array(DTAN_EXTR)
@@ -596,8 +667,8 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
            if abs(verif) > 0.01:
              UTMESS('A','RUPTURE1_36')
          else :
-           Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
-           Pfon3 = array([Listfo[4*(i+1)],Listfo[4*(i+1)+1],Listfo[4*(i+1)+2]])
+           Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
+           Pfon3 = array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]])
            VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2))
            VP[0] = array(cross_product(VT,v1))
            VNi = array([Vpropa[3],Vpropa[4],Vpropa[5]])
@@ -606,10 +677,10 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
              vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
              UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
          for i in range(1,Nbfond-1):
-           Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]])
-           Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
-           Pfon3 = array([Listfo[4*(i+1)],Listfo[4*(i+1)+1],Listfo[4*(i+1)+2]])
-           absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+           Pfon1 = array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
+           Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
+           Pfon3 = array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]])
+           absf =  Coorfo[4*i+3]
            absfon.append(absf)
            VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2))
            VT = VT+(Pfon2 - Pfon1)/sqrt(dot(transpose(Pfon2-Pfon1),Pfon2-Pfon1))
@@ -621,9 +692,9 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
              vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
              UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
          i = Nbfond-1
-         Pfon1 = array([Listfo[4*(i-1)],Listfo[4*(i-1)+1],Listfo[4*(i-1)+2]])
-         Pfon2 = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
-         absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+         Pfon1 = array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
+         Pfon2 = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
+         absf =  Coorfo[4*i+3]
          absfon.append(absf)
          if DTAN_EXTR != None :
            VP[i] = array(DTAN_EXTR)
@@ -652,7 +723,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
 #Sens de la tangente   
      if MODELISATION=='3D' : i = Nbfond/2
      else : i = 0
-     Po =  array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
+     Po =  array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
      Porig = Po + ABSC_CURV_MAXI*VP[i]
      Pextr = Po - ABSC_CURV_MAXI*VP[i]
      __Tabg = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL',
@@ -660,7 +731,9 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
                                   TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),
                                   DISTANCE_MAX=dmax),);
      tmp=__Tabg.EXTR_TABLE()
+#     a sam
      test = getattr(tmp,'H1X').values()
+#     test = getattr(tmp,'E1X').values()
      if test==[None]*3 : 
         UTMESS('F','RUPTURE0_33')
      if test[0]!=None :
@@ -669,21 +742,24 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
        sens = -1
      DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1) 
 # Extraction des sauts sur la fissure          
-     TSaut = [None]*Nbfond    
      NB_NOEUD_COUPE = args['NB_NOEUD_COUPE']
      if NB_NOEUD_COUPE < 3 : 
        UTMESS('A','RUPTURE0_34')
        NB_NOEUD_COUPE = 5
+     mcfact=[]
      for i in range(Nbfond):
-        Porig = array([Listfo[4*i],Listfo[4*i+1],Listfo[4*i+2]])
+        Porig = array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
         if i==0 and DTAN_ORIG!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i]
         elif i==(Nbfond-1) and DTAN_EXTR!=None : Pextr = Porig - ABSC_CURV_MAXI*VP[i]
         else : Pextr = Porig + ABSC_CURV_MAXI*VP[i]*sens
-        TSaut[i] = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL',
-                         LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
-                                        TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),
-                                        DISTANCE_MAX=dmax),);
+        mcfact.append(_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
+                          TYPE='SEGMENT',COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),
+                          DISTANCE_MAX=dmax),)
+     TSo = MACR_LIGN_COUPE(RESULTAT=__RESX,NOM_CHAM='DEPL',
+                         LIGN_COUPE=mcfact);
 
+     TTSo = TSo.EXTR_TABLE()
+     DETRUIRE(CONCEPT=_F(NOM=TSo),INFO=1) 
      Nbnofo = Nbfond
      if xcont[0] != 0 :  
        DETRUIRE(CONCEPT=_F(NOM=__MODLINE),INFO=1) 
@@ -749,8 +825,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
             Ls = [string.ljust(Lnosup[ino][i],8) for i in range(len(Lnosup[ino]))]
             tabsup=tabsup.NOEUD==Ls
       elif FISSURE :
-         tabsup = TSaut[ino].EXTR_TABLE()
-         DETRUIRE(CONCEPT=_F(NOM=TSaut[ino]),INFO=1)
+         tabsup = TTSo.INTITULE=='l.coupe%i'%(ino+1)
       else :
          tabsup=TABL_DEPL_SUP.EXTR_TABLE()
          veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim)
@@ -839,7 +914,7 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
       for iord in range(len(l_inst)) :
         inst=l_inst[iord]
         if INFO==2 and inst!=None:
-            texte="#================================================================================\n"
+            texte="#=================================================================================\n"
             texte=texte+"==> INSTANT: %f"%inst
             aster.affiche('MESSAGE',texte)
         if inst!=None:
@@ -958,8 +1033,6 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
         if  FISSURE : 
            H1 = getattr(tabsupi,'H1X').values()
            nbval = len(H1)
-           if H1[-1]==None : 
-             UTMESS('F','RUPTURE0_33')
            H1 = complete(H1)
            E1 = getattr(tabsupi,'E1X').values()
            E1 = complete(E1)
@@ -976,13 +1049,6 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
            dzs = 2*(H1 + sqrt(abscs)*E1)
            abscs=array(abscs[:nbval])
 
-#     --- TESTS NOMBRE DE NOEUDS---
-        if nbval<3 :
-           UTMESS('F+','RUPTURE0_46')
-           if FOND_FISS :
-               UTMESS('F+','RUPTURE0_47',valk=Lnofon[ino])
-           UTMESS('F','RUPTURE0_25')
-           
 #   ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE -----------  
         if Tempe3D :
            tempeno=tabtemp.NOEUD==Lnofon[ino]
@@ -998,8 +1064,23 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
            coefg  = (1. - nu**2) / e
            coefg3 = (1. + nu)  / e
 
+#     --- TESTS NOMBRE DE NOEUDS---
+        if nbval<3 :
+           UTMESS('A+','RUPTURE0_46')
+           if FOND_FISS :
+               UTMESS('A+','RUPTURE0_47',valk=Lnofon[ino])
+           if FISSURE :
+               UTMESS('A+','RUPTURE0_99',vali=ino)
+           UTMESS('A','RUPTURE0_25')
+           kg1 = [0.]*8
+           kg2 =[0.]*8
+           kg3 =[0.]*8
+         
+        else :  
+#     SI NBVAL >= 3 : 
+
 #     ------------------------------------------------------------------
-#                           CHANGEMENT DE REPERE
+#                    CHANGEMENT DE REPERE
 #     ------------------------------------------------------------------
 #
 #       1 : VECTEUR NORMAL AU PLAN DE LA FISSURE
@@ -1007,139 +1088,139 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
 #       2 : VECTEUR NORMAL AU FOND DE FISSURE EN M
 #       3 : VECTEUR TANGENT AU FOND DE FISSURE EN M
 #
-        if FISSURE :
-           v2 = VP[ino]
-           v1 = VN[ino]
-        elif SYME_CHAR=='SANS' :
-           vo =  array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.])
-           ve =  array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.])
-           v2 =  ve-vo
-        else :
-           vo = array([ coxs[-1], coys[-1], cozs[-1]])
-           ve = array([ coxs[0], coys[0], cozs[0]])
-           v2 =  ve-vo
-        if not FISSURE :  v1 =  array(VECT_K1)
-        v2 =  v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
-        v1p = sum(v2*v1)
-        if SYME_CHAR=='SANS' : v1  = v1-v1p*v2
-        else : v2  = v2-v1p*v1 
-        v1  = v1/sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
-        v2 =  v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
-        v3  = array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]])
-        pgl  = asarray([v1,v2,v3])
-        dpls = asarray([dxs,dys,dzs])
-        dpls = matrixmultiply(pgl,dpls)
-        if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 :
-          UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR])
-        if FISSURE :
-           saut=dpls
-        elif SYME_CHAR=='SANS' :
-           dpli = asarray([dxi,dyi,dzi])
-           dpli = matrixmultiply(pgl,dpli)
-           saut=(dpls-dpli)
-        else :
-           dpli = [multiply(dpls[0],-1.),dpls[1],dpls[2]]
-           saut=(dpls-dpli)
-        if INFO==2 :
-          mcfact=[]
-          mcfact.append(_F(PARA='ABSC_CURV'  ,LISTE_R=abscs.tolist() ))
-          if not FISSURE :
-            mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() ))
-            mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() ))
-          mcfact.append(_F(PARA='SAUT_1'    ,LISTE_R=saut[0].tolist() ))
-          if not FISSURE :
-            mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() ))
-            mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() ))
-          mcfact.append(_F(PARA='SAUT_2'    ,LISTE_R=saut[1].tolist() ))
-          if ndim==3 :
-            if not FISSURE :
-              mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() ))
-              mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() ))
-            mcfact.append(_F(PARA='SAUT_3'    ,LISTE_R=saut[2].tolist() ))
-          __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS')
-          aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__())
-          DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1)
+         if FISSURE :
+            v2 = VP[ino]
+            v1 = VN[ino]
+         elif SYME_CHAR=='SANS' :
+            vo =  array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.])
+            ve =  array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.])
+            v2 =  ve-vo
+         else :
+            vo = array([ coxs[-1], coys[-1], cozs[-1]])
+            ve = array([ coxs[0], coys[0], cozs[0]])
+            v2 =  ve-vo
+         if not FISSURE :  v1 =  array(VECT_K1)
+         v2 =  v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
+         v1p = sum(v2*v1)
+         if SYME_CHAR=='SANS' : v1  = v1-v1p*v2
+         else : v2  = v2-v1p*v1 
+         v1  = v1/sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
+         v2 =  v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
+         v3  = array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]])
+         pgl  = asarray([v1,v2,v3])
+         dpls = asarray([dxs,dys,dzs])
+         dpls = matrixmultiply(pgl,dpls)
+         if SYME_CHAR!='SANS' and abs(dpls[0][0]) > 1.e-10 :
+           UTMESS('A','RUPTURE0_49',valk=[Lnofon[ino],SYME_CHAR])
+         if FISSURE :
+            saut=dpls
+         elif SYME_CHAR=='SANS' :
+            dpli = asarray([dxi,dyi,dzi])
+            dpli = matrixmultiply(pgl,dpli)
+            saut=(dpls-dpli)
+         else :
+            dpli = [multiply(dpls[0],-1.),dpls[1],dpls[2]]
+            saut=(dpls-dpli)
+         if INFO==2 :
+           mcfact=[]
+           mcfact.append(_F(PARA='ABSC_CURV'  ,LISTE_R=abscs.tolist() ))
+           if not FISSURE :
+             mcfact.append(_F(PARA='DEPL_SUP_1',LISTE_R=dpls[0].tolist() ))
+             mcfact.append(_F(PARA='DEPL_INF_1',LISTE_R=dpli[0].tolist() ))
+           mcfact.append(_F(PARA='SAUT_1'    ,LISTE_R=saut[0].tolist() ))
+           if not FISSURE :
+             mcfact.append(_F(PARA='DEPL_SUP_2',LISTE_R=dpls[1].tolist() ))
+             mcfact.append(_F(PARA='DEPL_INF_2',LISTE_R=dpli[1].tolist() ))
+           mcfact.append(_F(PARA='SAUT_2'    ,LISTE_R=saut[1].tolist() ))
+           if ndim==3 :
+             if not FISSURE :
+               mcfact.append(_F(PARA='DEPL_SUP_3',LISTE_R=dpls[2].tolist() ))
+               mcfact.append(_F(PARA='DEPL_INF_3',LISTE_R=dpli[2].tolist() ))
+             mcfact.append(_F(PARA='SAUT_3'    ,LISTE_R=saut[2].tolist() ))
+           __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS')
+           aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__())
+           DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1)
 #     ------------------------------------------------------------------
 #                           CALCUL DES K1, K2, K3
 #     ------------------------------------------------------------------
-        isig=sign(transpose(resize(saut[:,-1],(nbval-1,3))))
-        isig=sign(isig+0.001)
-        saut=saut*array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval])
-        saut=saut**2
-        ksig = isig[:,1]
-        ksig = array([ksig,ksig])
-        ksig = transpose(ksig)
-        kgsig=resize(ksig,(1,6))[0]
+         isig=sign(transpose(resize(saut[:,-1],(nbval-1,3))))
+         isig=sign(isig+0.001)
+         saut=saut*array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval])
+         saut=saut**2
+         ksig = isig[:,1]
+         ksig = array([ksig,ksig])
+         ksig = transpose(ksig)
+         kgsig=resize(ksig,(1,6))[0]
 #     ------------------------------------------------------------------
 #                           --- METHODE 1 ---
 #     ------------------------------------------------------------------
-        x1 = abscs[1:-1]
-        x2 = abscs[2:  ]
-        y1 = saut[:,1:-1]/x1
-        y2 = saut[:,2:  ]/x2
-        k  = abs(y1-x1*(y2-y1)/(x2-x1))
-        g  = coefg*(k[0]+k[1])+coefg3*k[2]
-        kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
-        kg1 = sqrt(kg1)*kgsig
-        kg1=Numeric.concatenate([kg1,[max(g),min(g)]])
-        vk  = sqrt(k)*isig[:,:-1]
-        if INFO==2 :
-          mcfact=[]
-          mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() ))
-          mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() ))
-          mcfact.append(_F(PARA='K1'          ,LISTE_R=vk[0].tolist() ))
-          mcfact.append(_F(PARA='K2'          ,LISTE_R=vk[1].tolist() ))
-          if ndim==3 :
-            mcfact.append(_F(PARA='K3'        ,LISTE_R=vk[2].tolist() ))
-          mcfact.append(_F(PARA='G'           ,LISTE_R=g.tolist() ))
-          __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1')
-          aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__())
-          DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1)
+         x1 = abscs[1:-1]
+         x2 = abscs[2:  ]
+         y1 = saut[:,1:-1]/x1
+         y2 = saut[:,2:  ]/x2
+         k  = abs(y1-x1*(y2-y1)/(x2-x1))
+         g  = coefg*(k[0]+k[1])+coefg3*k[2]
+         kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
+         kg1 = sqrt(kg1)*kgsig
+         kg1=Numeric.concatenate([kg1,[max(g),min(g)]])
+         vk  = sqrt(k)*isig[:,:-1]
+         if INFO==2 :
+           mcfact=[]
+           mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() ))
+           mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() ))
+           mcfact.append(_F(PARA='K1'          ,LISTE_R=vk[0].tolist() ))
+           mcfact.append(_F(PARA='K2'          ,LISTE_R=vk[1].tolist() ))
+           if ndim==3 :
+             mcfact.append(_F(PARA='K3'        ,LISTE_R=vk[2].tolist() ))
+           mcfact.append(_F(PARA='G'           ,LISTE_R=g.tolist() ))
+           __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1')
+           aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__())
+           DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1)
 #     ------------------------------------------------------------------
 #                           --- METHODE 2 ---
 #     ------------------------------------------------------------------
-        x1 = abscs[1: ]
-        y1 = saut[:,1:]
-        k  = abs(y1/x1)
-        g  = coefg*(k[0]+k[1])+coefg3*k[2]
-        kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
-        kg2 = sqrt(kg2)*kgsig
-        kg2=Numeric.concatenate([kg2,[max(g),min(g)]])
-        vk = sqrt(k)*isig
-        if INFO==2 :
-          mcfact=[]
-          mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() ))
-          mcfact.append(_F(PARA='K1'        ,LISTE_R=vk[0].tolist() ))
-          mcfact.append(_F(PARA='K2'        ,LISTE_R=vk[1].tolist() ))
-          if ndim==3 :
-            mcfact.append(_F(PARA='K3'      ,LISTE_R=vk[2].tolist() ))
-          mcfact.append(_F(PARA='G'         ,LISTE_R=g.tolist() ))
-          __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2')
-          aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__())
-          DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1)
+         x1 = abscs[1: ]
+         y1 = saut[:,1:]
+         k  = abs(y1/x1)
+         g  = coefg*(k[0]+k[1])+coefg3*k[2]
+         kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
+         kg2 = sqrt(kg2)*kgsig
+         kg2=Numeric.concatenate([kg2,[max(g),min(g)]])
+         vk = sqrt(k)*isig
+         if INFO==2 :
+           mcfact=[]
+           mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() ))
+           mcfact.append(_F(PARA='K1'        ,LISTE_R=vk[0].tolist() ))
+           mcfact.append(_F(PARA='K2'        ,LISTE_R=vk[1].tolist() ))
+           if ndim==3 :
+             mcfact.append(_F(PARA='K3'      ,LISTE_R=vk[2].tolist() ))
+           mcfact.append(_F(PARA='G'         ,LISTE_R=g.tolist() ))
+           __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2')
+           aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__())
+           DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1)
 #     ------------------------------------------------------------------
 #                           --- METHODE 3 ---
 #     ------------------------------------------------------------------
-        x1 = abscs[:-1]
-        x2 = abscs[1: ]
-        y1 = saut[:,:-1]
-        y2 = saut[:,1: ]
-        k  = (sqrt(y2)*sqrt(x2)+sqrt(y1)*sqrt(x1))*(x2-x1)
-        k  = Numeric.sum(transpose(k))
-        de = abscs[-1]
-        vk = (k/de**2)*isig[:,0]
-        g  = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2
-        kg3=Numeric.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2])
-        if INFO==2 :
-          mcfact=[]
-          mcfact.append(_F(PARA='K1'        ,LISTE_R=vk[0] ))
-          mcfact.append(_F(PARA='K2'        ,LISTE_R=vk[1] ))
-          if ndim==3 :
-            mcfact.append(_F(PARA='K3'      ,LISTE_R=vk[2] ))
-          mcfact.append(_F(PARA='G'         ,LISTE_R=g ))
-          __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3')
-          aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__())
-          DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1)
+         x1 = abscs[:-1]
+         x2 = abscs[1: ]
+         y1 = saut[:,:-1]
+         y2 = saut[:,1: ]
+         k  = (sqrt(y2)*sqrt(x2)+sqrt(y1)*sqrt(x1))*(x2-x1)
+         k  = Numeric.sum(transpose(k))
+         de = abscs[-1]
+         vk = (k/de**2)*isig[:,0]
+         g  = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2
+         kg3=Numeric.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2])
+         if INFO==2 :
+           mcfact=[]
+           mcfact.append(_F(PARA='K1'        ,LISTE_R=vk[0] ))
+           mcfact.append(_F(PARA='K2'        ,LISTE_R=vk[1] ))
+           if ndim==3 :
+             mcfact.append(_F(PARA='K3'      ,LISTE_R=vk[2] ))
+           mcfact.append(_F(PARA='G'         ,LISTE_R=g ))
+           __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3')
+           aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__())
+           DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1)
 #     ------------------------------------------------------------------
 #                           CREATION DE LA TABLE 
 #     ------------------------------------------------------------------
index 54b71a9716e379fa57fb11917cf813ec2656a00f..d0a3b8908b9722cd9022a995d3520597309fc477 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_k_trans_ops Macro  DATE 22/01/2008   AUTEUR REZETTE C.REZETTE 
+#@ MODIF post_k_trans_ops Macro  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -113,7 +113,7 @@ def post_k_trans_ops(self,RESU_TRANS,K_MODAL,TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE,
   if F3D : 
     n_mode = max((__kgtheta.EXTR_TABLE())['NUME_MODE'].values()['NUME_MODE'])
     nbno = max((__kgtheta.EXTR_TABLE())['NUM_PT'].values()['NUM_PT'])
-    labsc = (__kgtheta.EXTR_TABLE())['ABS_CURV'].values()['ABS_CURV'][0:nbno]
+    labsc = (__kgtheta.EXTR_TABLE())['ABSC_CURV'].values()['ABSC_CURV'][0:nbno]
       
   if nmodtr != n_mode : 
       n_mode = min(nmodtr,n_mode)
@@ -229,7 +229,7 @@ def post_k_trans_ops(self,RESU_TRANS,K_MODAL,TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE,
    tabout = CREA_TABLE(LISTE = (_F(LISTE_I =lo, PARA = 'NUME_ORDRE'),
                            _F(LISTE_R =li, PARA = 'INST'),
                            _F(LISTE_I =range(nbno)*nbarch, PARA ='NUM_PT' ),
-                           _F(LISTE_R =labsc*nbarch, PARA = 'ABS_CURV'),
+                           _F(LISTE_R =labsc*nbarch, PARA = 'ABSC_CURV'),
                            _F(LISTE_R =K1t, PARA = k1),
                            _F(LISTE_R =K2t, PARA = k2),
                            _F(LISTE_R =K3t, PARA = k3),),
diff --git a/Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py b/Aster/Cata/cataSTA9/Macro/propa_fiss_ops.py
new file mode 100644 (file)
index 0000000..2933aa8
--- /dev/null
@@ -0,0 +1,653 @@
+#@ MODIF propa_fiss_ops Macro  DATE 20/10/2008   AUTEUR GALENNE E.GALENNE 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+
+def InterpolationLineaire(x0, points) :
+   """
+       Interpolation Lineaire de x0 sur la fonction discrétisée yi=points(xi) i=1,..,n
+   """
+   # x0     = Une abscisse        (1 colonne, 1 ligne)
+   # points = Tableau de n points (2 colonnes, n lignes)
+   # on suppose qu'il existe au moins 2 points, 
+   # et que les points sont classés selon les abscisses croissantes
+
+   n = len(points)
+   if ( x0 < points[0][0] )  :
+     y0 =  points[0][1]
+     return y0
+   if ( x0 > points[n-1][0] ) :
+     y0 =  points[n-1][1]
+     return y0
+   i = 1
+   while x0 > points[i][0]:
+      i = i+1
+   y0 = (x0-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1]
+   return y0
+
+def InterpolFondFiss(s0, Coorfo) :
+   """
+       Interpolation des points du fond de fissure
+   """
+   # s0     = abscisse curviligne du point considéré      (0 < s0 > 1)
+   # Coorfo = Coordonnées du fond (extrait de la sd fiss_xfem)
+   # xyz = Coordonnées du point
+
+   n = len(Coorfo) / 4
+   if ( s0 < Coorfo[3] )  :
+     xyz =  [Coorfo[0],Coorfo[1],Coorfo[2]]
+     return xyz
+   if ( s0 > Coorfo[-1]  ) :
+     xyz =  [Coorfo[-4],Coorfo[-3],Coorfo[-2]]
+     return xyz
+   i = 1
+   while s0 > Coorfo[4*i+3]:
+      i = i+1
+   xyz = [0.]*3
+   xyz[0] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+0]-Coorfo[4*(i-1)+0]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+0]
+   xyz[1] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+1]-Coorfo[4*(i-1)+1]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+1]
+   xyz[2] = (s0-Coorfo[4*(i-1)+3]) * (Coorfo[4*i+2]-Coorfo[4*(i-1)+2]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Coorfo[4*(i-1)+2]
+   return xyz
+
+def InterpolBaseFiss(s0, Basefo, Coorfo) :
+# Interpolation de la base locale en fond de fissure
+# s0     = abscisse curviligne du point considere     
+# Basefo = base locale du fond (VNx,VNy,VNz,VPx,VPy,VPz)
+# Coorfo = Coordonnees et abscisses du fond (extrait de la sd fiss_xfem)
+# en sortie : VPVNi = base locale au point considere (6 coordonnes)
+   n = len(Coorfo) / 4
+   if ( s0 < Coorfo[3] )  :
+     VPVNi =  Basefo[0:6]
+     return VPVNi
+   if ( s0 > Coorfo[-1]  ) :
+     VPVNi = [Basefo[i] for i in range(-6,0)] 
+     return VPVNi
+   i = 1
+   while s0 > Coorfo[4*i+3]:
+      i = i+1
+   VPVNi = [0.]*6
+   for k in range(6) :
+      VPVNi[k] = (s0-Coorfo[4*(i-1)+3]) * (Basefo[6*i+k]-Basefo[6*(i-1)+k]) / (Coorfo[4*i+3]-Coorfo[4*(i-1)+3]) + Basefo[6*(i-1)+k]
+   return VPVNi
+
+
+def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
+  """
+  Macro PROPA_FISS
+  Propagation de fissure pour les modeles X-FEM : propagation par la methode de HAMILTON 
+  ou par projection sur un maillage
+  """
+  import aster
+  import string
+  import copy
+  from Accas import _F
+  from Utilitai.Utmess     import  UTMESS
+  from types import ListType, TupleType
+  from Utilitai.Table      import Table, merge
+  from Utilitai.partition import MAIL_PY
+  import Numeric
+  from Numeric import array,asarray,Float,concatenate,sqrt,sign,resize,dot,zeros
+  from math import atan, atan2, cos, sin
+
+
+  EnumTypes = (ListType, TupleType)
+  
+  macro = 'PROPA_FISS'
+  ier=0
+#------------------------------------------------------------------
+  # On importe les definitions des commandes a utiliser dans la macro
+  ASSE_MAILLAGE         =self.get_cmd('ASSE_MAILLAGE'  )
+  LIRE_MAILLAGE    =self.get_cmd('LIRE_MAILLAGE'  )
+  CREA_TABLE    =self.get_cmd('CREA_TABLE'  )
+  CALC_TABLE    =self.get_cmd('CALC_TABLE'  )
+  PROPA_XFEM = self.get_cmd('PROPA_XFEM'  )
+  DEFI_FISS_XFEM = self.get_cmd('DEFI_FISS_XFEM'  )
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+  
+#------------------------------------------------------------------
+# CAS 1 : METHODE_PROPA = 'HAMILTON'
+#
+  if METHODE_PROPA == 'HAMILTON' :
+    mod =  args['MODELE']
+    tabk = args['TABLE']
+    meth =  args['METHODE']
+    ray =  args['RAYON']
+    LOI_PROPA = args['LOI_PROPA']
+    if LOI_PROPA != None :
+      coefc =  LOI_PROPA['C']
+      coefm =  LOI_PROPA['M']
+    fiss =    args['FISSURE']
+    self.DeclareOut('nomfiss',fiss)
+    nomfiss = PROPA_XFEM(MODELE=mod,
+                         TABLE=tabk,
+                         METHODE=meth,
+                         LOI_PROPA=_F(LOI='PARIS',
+                                      C=coefc,
+                                      M=coefm),
+                         RAYON=ray,
+                         INFO=INFO,)
+
+#------------------------------------------------------------------
+# CAS 2 : METHODE_PROPA = 'MAILLAGE'
+#
+  ALPHABET=['A','B','C','D','E','F','G','H','I','J','K','L','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
+  
+  if METHODE_PROPA == 'MAILLAGE' :
+    fiss =    args['FISSURE1']
+    LOI_PROPA = args['LOI_PROPA']
+    MA_XFEM1 =  args['MA_XFEM1']
+    if LOI_PROPA != None :
+      coef_paris =  LOI_PROPA['M']
+      Damax = LOI_PROPA['DA_MAX']
+      coef_C =  LOI_PROPA['C']
+    it = args['ITERATION']
+    typmod= MA_XFEM1.DIME.get()
+    typmod = typmod[5]
+    
+#    Verification qu on a bien un fond unique
+    Fissmult = fiss.FONDMULT.get()
+    Nbfiss = len(Fissmult)/2
+    if Nbfiss >1 :
+       UTMESS('F','RUPTURE1_48',vali=Nbfiss)
+
+# Recuperation des K et calcul de DeltaK
+    Nmeth = args['METHODE_POSTK']
+    SIF = args['TABLE']
+    hypo = args['HYPOTHESE']
+    nbinst = 1
+# A- TABLEAU ISSSU DE POST_K1_K2_K3    
+    if  (Nmeth != None) :
+       __TABN = CALC_TABLE(TABLE=SIF,ACTION=_F(OPERATION='FILTRE',
+                                           NOM_PARA='METHODE',VALE_I=Nmeth),);
+       __tabp = __TABN.EXTR_TABLE()
+       if ('K1_MAX' not in __tabp.para) or ('G_MAX' not in __tabp.para):
+          UTMESS('F','RUPTURE1_44')
+       __tab1 = __tabp.values()
+       if 'INST' in __tabp.para : 
+         l_inst_tab=__tabp['INST'].values()['INST']
+         l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys()
+         nbinst = len(l_inst_tab)
+       if nbinst > 1 :
+          nbfis = len(__tab1['K1_MAX']) / nbinst
+          DK1 = [None]*nbfis
+          DKmax = 0.
+          for k in range(nbfis) :
+             DK1[k]=[0.]*2
+             __tmp = __tabp.PT_FOND==(k+1)
+             if (typmod == 3) : DK1[k][0]=__tmp.values()['ABSC_CURV'][0]
+             DK1[k][1]=max(__tmp.values()['K1_MAX'])-min(__tmp.values()['K1_MAX'])
+             DKmax = max(DKmax,DK1[k][1])
+       else :
+          nbfis = len(__tab1['K1_MAX'])
+          if hypo == 'NON_PLAN' :
+             BETA = [None]*nbfis
+             if (min(__tab1['G_MAX']) < 0.) :
+               UTMESS('F','RUPTURE1_46')
+             DKmax = max(sqrt(__tab1['G_MAX']))
+             BETA = [0.]*nbfis
+             absc = [0.]*nbfis
+             for i in range(nbfis) :
+                k1 = __tab1['K1_MAX'][i]
+                k2 = __tab1['K2_MAX'][i]
+                if (typmod == 3) : absc[i]=__tab1['ABSC_CURV'][i]
+                BETA[i] = [absc[i] , 2*atan(0.25*(k1/k2-abs(k2)/k2*sqrt((k1/k2)**2+8)))]
+             DK1 = [[absc[i],sqrt(__tab1['G_MAX'][i])] for i in range(nbfis)]
+          else :
+             DKmax = max(__tab1['K1_MAX'])
+             if (typmod == 3) :
+               DK1 = [[__tab1['ABSC_CURV'][i],__tab1['K1_MAX'][i]] for i in range(nbfis)]
+             else :
+               DK1 = [[0.,__tab1['K1_MAX'][i]] for i in range(nbfis)]
+             if (min(__tab1['K1_MAX']) < 0.) :
+               UTMESS('F','RUPTURE1_49')
+# B- TABLEAU ISSSU DE CALC_G (option CALC_K_G)
+    else :
+       __tabp = SIF.EXTR_TABLE()
+       if (typmod == 3) and (('K1_LOCAL' not in __tabp.para) or ('G_LOCAL' not in __tabp.para) or ('BETA_LOCAL' not in __tabp.para)):
+          UTMESS('F','RUPTURE1_45')
+       if (typmod == 2) and (('K1' not in __tabp.para) or ('G' not in __tabp.para)) :
+          UTMESS('F','RUPTURE1_45')
+       __tab1= __tabp.values()
+       if 'INST' in __tabp.para : 
+         l_inst_tab=__tabp['INST'].values()['INST']
+         l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys()
+         nbinst = len(l_inst_tab)
+       if nbinst > 1 :
+          nbfiss = 1
+          if (typmod == 3) : nbfis = len(__tab1['K1_LOCAL']) / nbinst
+          DK1 = [None]*nbfis
+          DKmax = 0.
+          for k in range(nbfis) :
+             DK1[k]=[None]*2
+             __tmp = __tabp.NUM_PT==(k+1)
+             if (typmod == 3) : 
+               DK1[k][0]=__tmp.values()['ABSC_CURV'][0]
+               DK1[k][1]=max(__tmp.values()['K1_LOCAL'])-min(__tmp.values()['K1_LOCAL'])
+             else :
+               DK1[k][0]=0.
+               DK1[k][1]=max(__tmp.values()['K1'])-min(__tmp.values()['K1'])
+             DKmax = max(DKmax,DK1[k][1])
+       elif typmod == 3 :
+          nbfis = len(__tab1['K1_LOCAL'])
+          if hypo == 'NON_PLAN' :
+             if (min(__tab1['G_LOCAL']) < 0.) :
+               UTMESS('F','RUPTURE1_46')
+             DKmax = max(sqrt(__tab1['G_LOCAL']))
+             DK1 = [[__tab1['ABSC_CURV'][i],sqrt(__tab1['G_LOCAL'][i])] for i in range(nbfis)]
+             BETA = [[__tab1['ABSC_CURV'][i],__tab1['BETA_LOCAL'][i]] for i in range(nbfis)]
+          else :
+             DKmax = max(__tab1['K1_LOCAL'])
+             DK1 = [[__tab1['ABSC_CURV'][i],__tab1['K1_LOCAL'][i]] for i in range(nbfis)]
+             if (min(__tab1['K1_LOCAL']) < 0.) :
+               UTMESS('F','RUPTURE1_49')
+       else :
+          nbfis = 1
+          if hypo == 'NON_PLAN' :
+             if (min(__tab1['G']) < 0.) :
+               UTMESS('F','RUPTURE1_46')
+             DKmax = max(sqrt(__tab1['G']))
+             DK1 = [[0.,DKmax],]
+             k1 = __tab1['K1'][0]
+             k2 = __tab1['K2'][0]
+             beta = 2*atan(0.25*(k1/k2-abs(k2)/k2*sqrt((k1/k2)**2+8)))
+             BETA = [[0.,beta] ]
+          else :
+             DKmax = max(__tab1['K1'])
+             DK1 = [[0.,DKmax ] ,]
+             if (min(__tab1['K1']) < 0.) :
+               UTMESS('F','RUPTURE1_49')
+
+    if hypo == 'NON_PLAN'  and nbinst > 1 :
+       UTMESS('F','RUPTURE1_47')
+
+#------------------------------------------------------------------
+# CAS 2a : MODELE 3D
+#
+    if typmod == 3 :
+      mm = MAIL_PY()
+      mm.FromAster(MA_XFEM1)
+
+# Recuperation des informations sur le maillage
+      nbno = mm.dime_maillage[0]
+      nbma = mm.dime_maillage[2]
+      collgrma = mm.gma
+      nbnofo = len(collgrma['FOND_0'])+1
+
+# Correction de la position des noeuds (equirepartition)
+      Coorfo = fiss.FONDFISS.get()
+      absmax = Coorfo[-1]
+      abscf = [0.]*nbnofo
+      for i in range(nbnofo) :
+        abscf[i] = i * absmax / (nbnofo-1)
+        xyzi = InterpolFondFiss(abscf[i], Coorfo)
+        mm.cn[nbno-nbnofo+i][0] = xyzi[0]
+        mm.cn[nbno-nbnofo+i][1] = xyzi[1]
+        mm.cn[nbno-nbnofo+i][2] = xyzi[2]
+
+# Maillage apres correction
+      coord    = mm.cn
+      linomno  = list(mm.correspondance_noeuds)
+      linomno = map(string.rstrip,linomno)
+      l_coorf =  [[linomno[i],coord[i]] for i in range(0,nbno)]
+      d_coorf = dict(l_coorf)     
+      
+# Boucle sur le fond : coordonnees du point propage            
+      Basefo = fiss.BASEFOND.get()
+      Listfo = fiss.FONDFISS.get()
+      Vorig = args['DTAN_ORIG']
+      Vextr = args['DTAN_EXTR']
+      if (Damax ==None) :
+         DKmax = 1
+      if (coef_C ==None) :
+         coef_C = Damax
+      for ifond in range(nbnofo) :
+         Xf =  d_coorf['NX%s%i' %(ALPHABET[ifond],it)][0]   
+         Yf =  d_coorf['NX%s%i' %(ALPHABET[ifond],it)][1]     
+         Zf =  d_coorf['NX%s%i' %(ALPHABET[ifond],it)][2]  
+          
+         VPVNi = InterpolBaseFiss(abscf[ifond],Basefo, Listfo)
+        
+         k1 = InterpolationLineaire(abscf[ifond], DK1)
+         if k1<=0 :
+           UTMESS('F','RUPTURE1_49')
+
+# Correction pour reduire le risque de maille aplatie (pilotage par Damax uniquement)
+         if (Damax !=None) :
+            Damin = Damax /10.
+            if ((k1/DKmax)**coef_paris <= Damin )  :
+               k1 = Damin**(1/coef_paris)*DKmax
+
+# Tangentes aux extremites     
+         if (ifond == 0) and (Vorig != None) :
+           VPVNi[3] = Vorig[0]
+           VPVNi[4] = Vorig[1]
+           VPVNi[5] = Vorig[2]
+         if (ifond == nbnofo-1) and (Vextr != None) :
+           VPVNi[3] = Vextr[0]
+           VPVNi[4] = Vextr[1]
+           VPVNi[5] = Vextr[2]
+         
+         if hypo == 'NON_PLAN' :
+            beta = InterpolationLineaire(abscf[ifond], BETA)
+            Xf2 = Xf + coef_C*(VPVNi[3]*cos(beta)+VPVNi[0]*sin(beta))*(k1/DKmax)**coef_paris
+            Yf2 = Yf + coef_C*(VPVNi[4]*cos(beta)+VPVNi[1]*sin(beta))*(k1/DKmax)**coef_paris
+            Zf2 = Zf + coef_C*(VPVNi[5]*cos(beta)+VPVNi[2]*sin(beta))*(k1/DKmax)**coef_paris
+         else :
+            Xf2 = Xf + coef_C*VPVNi[3]*(k1/DKmax)**coef_paris
+            Yf2 = Yf + coef_C*VPVNi[4]*(k1/DKmax)**coef_paris
+            Zf2 = Zf + coef_C*VPVNi[5]*(k1/DKmax)**coef_paris
+         
+         LesNoeudsEnPlus = array([[Xf2,Yf2,Zf2]])
+         if ifond ==0 :
+            Pini = (Xf2,Yf2,Zf2)
+            vectorie = (VPVNi[0],VPVNi[1],VPVNi[2],)
+         NomNoeudsEnPlus =     ['NX%s%i' %(ALPHABET[ifond],it+1)]
+         mm.cn = concatenate((mm.cn,LesNoeudsEnPlus))
+         mm.correspondance_noeuds = tuple( list(mm.correspondance_noeuds) + NomNoeudsEnPlus )
+  
+# Ajout Maille lèvre (quad4)      
+      nbnotot = len(mm.correspondance_noeuds)
+      NomMaillesEnPlus = []
+      num_maille = []
+      NoeudsMailles = []
+      for ifond in range(nbnofo-1) :
+         NomMaillesEnPlus.append( 'MX%s%i' %(ALPHABET[ifond], it+1) )
+         num_maille.append( [ nbma + ifond +1 ] )
+         num_maille.append( nbma +ifond + 1 )
+         i1 = nbnotot - 2*nbnofo  + ifond
+         i2 = nbnotot - 2*nbnofo  + ifond +1
+         i3 = nbnotot - nbnofo  + ifond +1
+         i4 = nbnotot - nbnofo  + ifond 
+         NoeudsMailles.append( array([i1,i2,i3,i4]))
+
+      typ_maille = mm.dic['QUAD4']
+      NbMailleAjoute = nbnofo-1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      fsi = mm.gma['FISS_%i' %(it-1)]
+      for ifond in range(nbnofo-1) :
+        fsi = concatenate((fsi,array([nbma+ifond])))
+      mm.gma['FISS_%i' %it] = fsi
+     
+# Ajout Maille fond (SEG2)      
+      NomMaillesEnPlus = []
+      num_maille = []
+      NoeudsMailles = []
+      for ifond in range(nbnofo-1) :
+         NomMaillesEnPlus.append( 'MF%s%i' %(ALPHABET[ifond], it+1) )
+         num_maille.append( [ nbma + ifond +nbnofo ] )
+         num_maille.append( nbma + ifond + nbnofo )
+         i3 = nbnotot - nbnofo  + ifond 
+         i4 = nbnotot - nbnofo  + ifond +1
+         NoeudsMailles.append( array([i3,i4]))
+
+      typ_maille = mm.dic['SEG2']
+      NbMailleAjoute = nbnofo-1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      fsi = []
+      for ifond in range(nbnofo-1) :
+        fsi = concatenate((fsi,array([nbma+ifond+nbnofo-1])))
+      mm.gma['FOND_%i' %it] = fsi
+     
+#------------------------------------------------------------------
+# CAS 2b : MODELE 2D
+#
+    if typmod == 2 :
+      mm = MAIL_PY()
+      mm.FromAster(MA_XFEM1)
+      
+      (nno,ndim) = mm.cn.shape
+
+# Recuperation des informations sur le maillage
+      nbno = mm.dime_maillage[0]
+      nbma = mm.dime_maillage[2]
+      coord    = mm.cn
+      linomno  = list(mm.correspondance_noeuds)
+      linomno = map(string.rstrip,linomno)
+      l_coorf =  [[linomno[i],coord[i]] for i in range(0,nbno)]
+      d_coorf = dict(l_coorf) 
+      
+# Coordonnees du point propage       
+      Xf =  d_coorf['NXA%i' %(it)][0]    
+      Yf =  d_coorf['NXA%i' %(it)][1]
+      if (Damax ==None) :
+         DKmax = 1
+      if (coef_C ==None) :
+         coef_C = Damax
+
+      VPVNi = fiss.BASEFOND.get()
+      k1 = DK1[0][1]
+      if hypo == 'NON_PLAN' :
+         beta = BETA[0][1]
+         Xf2 = Xf + coef_C*(VPVNi[2]*cos(beta)+VPVNi[0]*sin(beta))*(k1/DKmax)**coef_paris
+         Yf2 = Yf + coef_C*(VPVNi[3]*cos(beta)+VPVNi[1]*sin(beta))*(k1/DKmax)**coef_paris
+      else :
+         Xf2 = Xf + coef_C*VPVNi[2]*(k1/DKmax)**coef_paris
+         Yf2 = Yf + coef_C*VPVNi[3]*(k1/DKmax)**coef_paris
+      
+      LesNoeudsEnPlus = array([[Xf2,Yf2]])
+      NomNoeudsEnPlus =     ['NXA%i' %(it+1)]
+      mm.cn = concatenate((mm.cn,LesNoeudsEnPlus))
+      mm.correspondance_noeuds = tuple(linomno + NomNoeudsEnPlus )
+      
+# Ajout Maille lèvre (SEG2)
+      NomMaillesEnPlus =     ['MX%s%i' %(ALPHABET[0], it+1)]
+      num_maille = [ nbma + 1 ]
+      num_maille.append( nbma + 1 )
+      NoeudsMailles = [array([nbno-1,nbno])]
+      typ_maille = mm.dic['SEG2']
+      NbMailleAjoute = 1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      fsi = mm.gma['FISS_%i' %(it-1)]
+      fsi = concatenate((fsi,array([nbma])))
+      mm.gma['FISS_%i' %it] = fsi
+
+# Ajout Maille fond (POI1)
+      NomMaillesEnPlus =     ['MF%s%i' %(ALPHABET[0], it+1)]
+      num_maille = [ nbma + 2 ]
+      NoeudsMailles = [array([nbno])]
+      typ_maille = mm.dic['POI1']
+      mm.tm = concatenate((mm.tm,array([typ_maille]*1)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      mm.gma['FOND_%i' %it] = array(nbma+1)
+
+# Fin du 2D      
+    if INFO==2 :
+      texte="Maillage produit par l operateur PROPA_FISS"
+      aster.affiche('MESSAGE',texte)
+      print mm
+           
+# Sauvegarde (maillage xfem et maillage concatene)
+    MA_XFEM2 = args['MA_XFEM2']
+    if MA_XFEM2 != None : self.DeclareOut('ma_xfem2',MA_XFEM2)
+    __MA = mm.ToAster(unite=39)
+    self.DeclareOut('ma_xfem2',MA_XFEM2)
+    ma_xfem2=LIRE_MAILLAGE(UNITE=39);
+
+    MA_TOT2 = args['MA_TOT2']
+    if MA_TOT2 != None : self.DeclareOut('ma_tot',MA_TOT2)
+    MA_STRUC = args['MA_STRUC']
+    ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MA_STRUC,
+                      MAILLAGE_2 = ma_xfem2,
+                      OPERATION='SUPERPOSE')
+
+#------------------------------------------------------------------
+# CAS 3 : METHODE_PROPA = 'INITIALISATION'
+#
+  if METHODE_PROPA == 'INITIALISATION' :
+    form = args['FORM_FISS']
+    
+# 3-a : demi-droite    
+    if form == 'DEMI_DROITE' :
+      PF = args['PFON']
+      DTAN = args['DTAN']
+      PI = array([[PF[0]-DTAN[0],PF[1]-DTAN[1]],])
+
+      ndim = 2
+      mm = MAIL_PY()
+      mm.__init__()
+     
+# Ajout des noeuds 
+      LesNoeudsEnPlus = concatenate((PI,array([PF[0:2]])))
+      NomNoeudsEnPlus =     ['NXA0','NXA1']
+      mm.cn = LesNoeudsEnPlus
+      mm.correspondance_noeuds = tuple( NomNoeudsEnPlus )
+
+# Ajout Maille lèvre (SEG2)
+      it = 1
+      nbma = 0
+      nbno = 0
+      NomMaillesEnPlus =     ['MX%s%i' %(ALPHABET[0], it)]
+      num_maille = [ nbma + 1 ]
+      num_maille.append( nbma + 1 )
+      NoeudsMailles = [array([nbno,nbno+1])]
+      typ_maille = mm.dic['SEG2']
+      NbMailleAjoute = 1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      mm.gma['FISS_0'] = array(nbma)
+
+# Ajout Maille fond (POI1)
+      NomMaillesEnPlus =     ['MF%s%i' %(ALPHABET[0], it)]
+      num_maille = [ nbma + 2 ]
+      NoeudsMailles = [array([nbno+1])]
+      typ_maille = mm.dic['POI1']
+      mm.tm = concatenate((mm.tm,array([typ_maille]*1)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      mm.gma['FOND_0'] = array(nbma+1)
+
+
+# 3-b : demi-plan    
+    if form == 'DEMI_PLAN' :
+      P0 = args['POINT_ORIG']
+      P1 = args['POINT_EXTR']
+      dpropa = args['DTAN']
+      nbpt = args['NB_POINT_FOND']
+      Q0 = array([[P0[0]-dpropa[0],P0[1]-dpropa[1],P0[2]-dpropa[2]]])
+      
+      mm = MAIL_PY()
+      mm.__init__()
+      x=[None]*nbpt
+      y=[None]*nbpt
+      z=[None]*nbpt
+      xx=[None]*nbpt
+      yy=[None]*nbpt
+      zz=[None]*nbpt
+      LesNoeudsEnPlus = Q0
+      NomNoeudsEnPlus =     ['NXA0']
+      mm.cn = LesNoeudsEnPlus
+      mm.correspondance_noeuds = tuple( NomNoeudsEnPlus )
+
+      for i in range(1,nbpt) :
+        x[i] = P0[0]+i*(P1[0]-P0[0])/(nbpt-1)
+        y[i] = P0[1]+i*(P1[1]-P0[1])/(nbpt-1)
+        z[i] = P0[2]+i*(P1[2]-P0[2])/(nbpt-1)
+        xx[i] = x[i] - dpropa[0]
+        yy[i] = y[i] - dpropa[1]
+        zz[i] = z[i] - dpropa[2]
+        LesNoeudsEnPlus = array([[xx[i],yy[i],zz[i]]])
+        NomNoeudsEnPlus =     ['NX%s0' %(ALPHABET[i]) ]
+        mm.cn = concatenate((mm.cn,LesNoeudsEnPlus))
+        mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds)  +NomNoeudsEnPlus )
+      LesNoeudsEnPlus = array([P0])
+      NomNoeudsEnPlus =     ['NXA1']
+      mm.cn = concatenate((mm.cn,LesNoeudsEnPlus))
+      mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds)  + NomNoeudsEnPlus )
+      for i in range(1,nbpt) :
+        LesNoeudsEnPlus = array([[x[i],y[i],z[i]]])
+        NomNoeudsEnPlus =     ['NX%s1' %(ALPHABET[i]) ]
+        mm.cn = concatenate((mm.cn,LesNoeudsEnPlus))
+        mm.correspondance_noeuds = tuple(list(mm.correspondance_noeuds)  +NomNoeudsEnPlus )
+
+# Ajout Maille lèvre (quad4)      
+      NomMaillesEnPlus = []
+      num_maille = []
+      NoeudsMailles = []
+      for ifond in range(nbpt-1) :
+         NomMaillesEnPlus.append( 'MX%s1' %(ALPHABET[ifond]) )
+         num_maille.append( [ ifond +1 ] )
+         num_maille.append( ifond + 1 )
+         i1 = ifond
+         i2 = ifond+1
+         i3 = nbpt+ifond
+         i4 = nbpt+ifond+1
+         NoeudsMailles.append( array([i1,i2,i4,i3]))
+
+      typ_maille = mm.dic['QUAD4']
+      NbMailleAjoute = nbpt-1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      fsi =[]
+      for ifond in range(nbpt-1) :
+        fsi = concatenate((fsi,array([ifond])))
+      mm.gma['FISS_0' ] = fsi
+    
+# Ajout Maille fond (SEG2)      
+      NomMaillesEnPlus = []
+      num_maille = []
+      NoeudsMailles = []
+      for ifond in range(nbpt-1) :
+         NomMaillesEnPlus.append( 'MF%s1' %(ALPHABET[ifond]) )
+         num_maille.append( [ ifond +nbpt ] )
+         num_maille.append( ifond + nbpt )
+         i3 = nbpt+ifond
+         i4 = nbpt+ifond+1
+         NoeudsMailles.append( array([i3,i4]))
+
+      typ_maille = mm.dic['SEG2']
+      NbMailleAjoute = nbpt-1
+      mm.tm = concatenate((mm.tm,array([typ_maille]*NbMailleAjoute)))
+      mm.correspondance_mailles += tuple(NomMaillesEnPlus)
+      mm.co += NoeudsMailles
+      fsi = []
+      for ifond in range(nbpt-1) :
+        fsi = concatenate((fsi,array([ifond+nbpt-1])))
+      mm.gma['FOND_0'] = fsi
+        
+    
+    if INFO==2 :
+      texte="Maillage produit par l operateur PROPA_FISS"
+      aster.affiche('MESSAGE',texte)
+      print mm
+           
+# Sauvegarde (maillage xfem et maillage concatene)
+    MA_XFEM2 = args['MA_XFEM2']
+    if MA_XFEM2 != None : self.DeclareOut('ma_xfem2',MA_XFEM2)
+    __MA = mm.ToAster(unite=39)
+    self.DeclareOut('ma_xfem2',MA_XFEM2)
+    ma_xfem2=LIRE_MAILLAGE(UNITE=39);
+
+    MA_TOT2 = args['MA_TOT2']
+    if MA_TOT2 != None : self.DeclareOut('ma_tot',MA_TOT2)
+    MA_STRUC = args['MA_STRUC']
+    ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MA_STRUC,
+                      MAILLAGE_2 = ma_xfem2,
+                      OPERATION='SUPERPOSE')
+                      
+  return                    
diff --git a/Aster/Cata/cataSTA9/Macro/reca_graphique.py b/Aster/Cata/cataSTA9/Macro/reca_graphique.py
deleted file mode 100644 (file)
index c3ce8c8..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#@ MODIF reca_graphique Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-import string, copy, Numeric, types
-import Cata
-from Cata.cata import DEFI_FICHIER, IMPR_FONCTION
-from Utilitai.Utmess import UTMESS
-from Accas import _F
-
-try:
-  import Gnuplot
-except:
-  pass
-
-
-#_____________________________________________
-#
-# IMPRESSIONS GRAPHIQUES
-#_____________________________________________
-
-def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif):
-
-   if FORMAT=='XMGRACE':
-       for i in range(len(L_F)):
-           _tmp = []
-           courbe1 = res_exp[i]
-           _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } )
-           courbe2 = L_F[i]
-           _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } )
-
-           motscle2= {'COURBE': _tmp }
-           if interactif: motscle2['PILOTE']= 'INTERACTIF'
-           else:          motscle2['PILOTE']= 'POSTSCRIPT'
-
-#           DEFI_FICHIER(UNITE=int(UL_out), ACCES='NEW',)
-
-           IMPR_FONCTION(FORMAT='XMGRACE',
-                         UNITE=int(UL_out),
-                         TITRE='Courbe de : ' + reponses[i][0],
-                         SOUS_TITRE='Iteration : ' + str(iter),
-                         LEGENDE_X=reponses[i][1],
-                         LEGENDE_Y=reponses[i][2],
-                         **motscle2
-                         );
-#           DEFI_FICHIER(ACTION='LIBERER',UNITE=int(UL_out),)
-
-   elif FORMAT=='GNUPLOT':
-       graphe=[]
-       impr=Gnuplot.Gnuplot()
-       Gnuplot.GnuplotOpts.prefer_inline_data=1
-       impr('set data style linespoints')
-       impr('set grid')
-       impr('set pointsize 2.')
-       impr('set terminal postscript color')
-       impr('set output "fort.'+str(UL_out)+'"')
-
-       for i in range(len(L_F)):
-             if interactif:
-                graphe.append(Gnuplot.Gnuplot(persist=0))
-                graphe[i]('set data style linespoints')
-                graphe[i]('set grid')
-                graphe[i]('set pointsize 2.')
-                graphe[i].xlabel(reponses[i][1])
-                graphe[i].ylabel(reponses[i][2])
-                graphe[i].title(reponses[i][0]+'  Iteration '+str(iter))
-                graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-                graphe[i]('pause 5')
-
-             impr.xlabel(reponses[i][1])
-             impr.ylabel(reponses[i][2])
-             impr.title(reponses[i][0]+'  Iteration '+str(iter))
-             impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-
-   else:
-     pass
index 3e6d69e047a5361664f68749a05b7251bb5f4682..09a27c57493b732dc53187d2cb274deb84a621d4 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF simu_point_mat_ops Macro  DATE 23/04/2007   AUTEUR PROIX J-M.PROIX 
+#@ MODIF simu_point_mat_ops Macro  DATE 07/10/2008   AUTEUR GENIAUT S.GENIAUT 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -485,6 +485,7 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,REC
   if   etatinit == 1  : 
 
       __EVOL = STAT_NON_LINE(
+        INFO = INFO,
         MODELE = __MO, 
         CHAM_MATER = __CHMAT,
         ETAT_INIT=init_dico,
@@ -494,6 +495,7 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,REC
   else:  
 
       __EVOL = STAT_NON_LINE(
+        INFO = INFO,
         MODELE = __MO, 
         CHAM_MATER = __CHMAT, 
         EXCIT = l_char,**motscles)
diff --git a/Aster/Cata/cataSTA9/Macro/test_temps_ops.py b/Aster/Cata/cataSTA9/Macro/test_temps_ops.py
new file mode 100644 (file)
index 0000000..0723b83
--- /dev/null
@@ -0,0 +1,251 @@
+#@ MODIF test_temps_ops Macro  DATE 05/09/2008   AUTEUR COURTOIS M.COURTOIS 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE COURTOIS M.COURTOIS
+
+"""
+for m in clpaster clp50a8 claut626 clau5aaa aster
+do
+   echo "------ $m   :  `ssh $m hostid` -------"
+   ssh $m cat /proc/cpuinfo > $m.cpuinfo
+   ssh $m python -c '"import os ; print os.uname()[-1]"'
+   grep 'cpu MHz' $m.cpuinfo | head -1
+   grep -i bogomips $m.cpuinfo | head -1
+done
+"""
+
+import sys
+import os
+import re
+from glob import glob
+
+#-------------------------------------------------------------------------------
+# formats
+tab_header = """
+   !--------------------------------------------------------------------------------------------------!
+   ! Commande               ! Ordre  ! Reference  ! Mesure     ! Difference ! Tolerance  ! Diagnostic !
+   !--------------------------------------------------------------------------------------------------!"""
+tab_line = """   ! %(cmde)-22s ! %(nume)6d ! %(refe)10.2f ! %(vale)10.2f ! %(diff)10.2f ! %(prec)10.2f !    %(diag)4s    !"""
+tab_footer = """   !--------------------------------------------------------------------------------------------------!
+"""
+
+#-------------------------------------------------------------------------------
+def get_idperf(conf):
+   """Retourne l'identifiant utilisé pour la mesure des performances.
+   Soit on le trouve dans le fichier config.txt de la version utilisée,
+   soit on le détermine à partir de : "kernel name - hardware name"
+   """
+   machine = ''
+   compiler = 'unknown'
+   if conf is not None:
+      machine = conf['ID_PERF'][0]
+      compiler = os.path.basename(conf['F77'][0].split()[0])
+   
+   if machine == '':
+      machine = '%s-%s-%s' %(os.uname()[0], os.uname()[4], compiler)
+   return machine
+
+#-------------------------------------------------------------------------------
+def as_list(value):
+   """Retourne 'value' si c'est une liste, sinon le singleton [value,]."""
+   if type(value) not in (list, tuple):
+      value = [value,]
+   return value
+
+#-------------------------------------------------------------------------------
+def test_temps_ops(self, RESU, INFO, **args):
+   """
+   Macro TEST_TEMPS permettant de vérifier le temps passé dans les commandes.
+   """
+   import aster
+   from Accas import _F
+   from Utilitai.Utmess import UTMESS, MessageLog
+   from Utilitai.System import ExecCommand
+
+   # On importe les definitions des commandes a utiliser dans la macro
+   # Le nom de la variable doit etre obligatoirement le nom de la commande
+   DETRUIRE        = self.get_cmd('DETRUIRE')
+   CREA_TABLE      = self.get_cmd('CREA_TABLE')
+   TEST_TABLE      = self.get_cmd('TEST_TABLE')
+   
+   #----------------------------------------------
+   ier = 0
+   # La macro compte pour 1 dans la numerotation des commandes
+   self.set_icmd(1)
+
+   # ----- récupération du fichier de config
+   ficconf = '?'
+   conf = None
+   try:
+      # recuperation de la variable ASTER_ROOT
+      aster_root = os.environ.get('ASTER_ROOT')
+      assert aster_root != None, "<TEST_TEMPS> Variable d'environnement ASTER_ROOT non definie."
+      sys.path.append(os.path.join(aster_root, 'ASTK', 'ASTK_SERV', 'lib'))
+      from as_profil import ASTER_PROFIL
+      from as_config import ASTER_CONFIG
+      
+      l_export = glob('*.export')
+      assert len(l_export) > 0, "<TEST_TEMPS> pas de fichier export dans le repertoire de travail."
+      
+      ficconf = 'config.txt'
+      if not os.path.isfile(ficconf):         # if as_run.__version__ < 1.6.3
+         prof = ASTER_PROFIL(l_export[0])
+         if prof.Get('D', typ='conf'):
+            print '<TEST_TEMPS> Surcharge du fichier config.txt non supportée.'
+         REPREF  = os.path.join(aster_root, prof['version'][0])
+         ficconf = os.path.join(REPREF, 'config.txt')
+      conf = ASTER_CONFIG(ficconf)
+   except Exception, err:
+      print err
+      
+   machine = get_idperf(conf)
+   
+   # liste des timers par ordre d'apparition : dict_cmde['commande'] = [timer1, timer2, ...]
+   dict_cmde = {}
+   for num, timer in self.jdc.timer.getsortedtimers():
+      cmde  = timer['name']
+      dict_cmde[cmde] = dict_cmde.get(cmde, [])
+      dict_cmde[cmde].append(timer)
+   
+   tab = get_cmde_timers(self.jdc)
+   if INFO == 2:
+      aster.affiche('MESSAGE', repr(tab))
+   
+   #----------------------------------------------
+   # boucle sur les commandes a tester
+   alarm9 = True
+   infos = []
+   for res_i in RESU:
+         dres = res_i.cree_dict_valeurs(res_i.mc_liste)
+         current = {
+            'cmde' : dres['COMMANDE'],
+            'nume' : dres['NUME_ORDRE'],
+            'refe' : 0.,
+            'vale' : 0.,
+            'diff' : 0.,
+            'prec' : 0.,
+            'diag' : 'NOOK',
+         }
+         error = False
+         l_mach = as_list(dres['MACHINE'])
+         l_vale = as_list(dres['VALE'])
+         if len(l_mach) != len(l_vale):
+            UTMESS('E', 'TEST0_10')
+            error = True
+
+         l_prec = as_list(dres['PRECISION'])
+         if len(l_prec) == 1:
+            l_prec = l_prec * len(l_vale)
+         if len(l_prec) != len(l_vale):
+            UTMESS('E', 'TEST0_8')
+            error = True
+
+         tres = (tab.COMMANDE == dres['COMMANDE']) & (tab.NUME_ORDRE == dres['NUME_ORDRE'])
+         if len(tres) != 1:
+            UTMESS('E', 'TEST0_7', valk=dres['COMMANDE'], vali=dres['NUME_ORDRE'])
+            error = True
+         
+         if error:
+            infos.append(current)
+            continue
+
+         # comparaison des valeurs
+         valtest = getattr(tres, dres['TYPE_TEST'])
+         assert len(valtest) == 1, 'TYPE_TEST invalide'
+         valtest = valtest[0]
+         
+         current['vale'] = valtest
+
+         # reference, precision
+         dref = {}
+         for mach, vale, precision in zip(l_mach, l_vale, l_prec):
+            if dres['CRITERE'] == 'RELATIF':
+               precision = precision * vale
+            dref[mach.upper()] = {
+               'vale'   : vale,
+               'prec'   : precision,
+               'valmin' : vale - precision,
+               'valmax' : vale + precision
+            }
+         dmach = dref.get(machine.upper())
+         # si on n'a pas de référence pour cette machine, on prend la première
+         if not dmach:
+            dmach = dref[l_mach[0].upper()]
+            if alarm9:
+               alarm9 = False
+               UTMESS('A', 'TEST0_9', valk=(machine, l_mach[0]))
+         current['refe'] = dmach['vale']
+         current['prec'] = dmach['prec']
+         current['diff'] = valtest - dmach['vale']
+         if dmach['valmin'] < valtest < dmach['valmax']:
+            current['diag'] = 'OK'
+         infos.append(current)
+   
+   # tableau de resultats
+   text_id = MessageLog.GetText('I', 'TEST0_5', valk=(ficconf, machine))
+   is_ok = 1
+   txt = [text_id, tab_header,]
+   for line in infos:
+      txt.append(tab_line % line)
+      if line['diag'] != 'OK':
+         is_ok = 0
+   txt.append(tab_footer)
+   for unit in ('MESSAGE', 'RESULTAT'):
+      aster.affiche(unit, os.linesep.join(txt))
+
+   # test_resu
+   tab1__ = CREA_TABLE(LISTE=(_F(PARA='DIAGNOSTIC',  LISTE_I=is_ok),),)
+   
+   TEST_TABLE(TABLE=tab1__,
+              NOM_PARA='DIAGNOSTIC',
+              VALE_I=1,
+              CRITERE='ABSOLU',
+              PRECISION=0,)
+
+   return ier
+
+
+#-------------------------------------------------------------------------------
+def get_cmde_timers(jdc):
+   """Retourne un objet Table contenant les mesures de temps pour
+   les commandes terminées.
+   """
+   from Utilitai.Table import Table
+   tab = Table()
+
+   # liste des timers par ordre d'apparition
+   dnum = {}
+   for num, timer in jdc.timer.getsortedtimers():
+      if timer['state'] != 'stop' \
+            or re.sub('[A-Z_]', '', timer['name']).strip() != '':  # timers superviseur
+         continue
+      line = {}
+      for k in ('name', 'cpu_dt', 'sys_dt', 'tot_dt'):
+         line[k] = timer[k]
+      line['USER+SYS'] = timer['cpu_dt'] + timer['sys_dt']
+      dnum[line['name']] = dnum.get(line['name'], 0) + 1
+      line['NUME_ORDRE'] = dnum[line['name']]
+      tab.append(line)
+   tab.Renomme('name',   'COMMANDE')
+   tab.Renomme('cpu_dt', 'USER')
+   tab.Renomme('sys_dt', 'SYSTEM')
+   tab.Renomme('tot_dt', 'ELAPSED')
+   tab = tab['NUME_ORDRE', 'COMMANDE', 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED']
+   return tab
+
index 74ed0fc54b8539ab2e59f53809097f214ea57ee5..c90f369ed18912c2771c0d42643bfd986da6ff6c 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_cara_elem SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF co_cara_elem SD  DATE 20/10/2008   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,4 +23,15 @@ from sd_cara_elem import sd_cara_elem
 
 # -----------------------------------------------------------------------------
 class cara_elem(ASSD, sd_cara_elem):
-   pass
+   def toEPX(self):
+      EPXnoeud = self.CARRIGXN.get()
+      EPXval   = self.CARRIGXV.get()
+      ressorts = {}
+      i=0
+      assert len(EPXval) == len(EPXnoeud)*6, 'donnees incorrectes'
+      for no in EPXnoeud :
+         ressorts[no] = EPXval[i:i+6]
+         i+=6
+      return ressorts
+
+
index dacbbbe50aa0e6ecea519dfd0f9c0f5f98c2ae12..ca6185887133ae02ee0af629b7751d187cf8f2b6 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_cara_elem SD  DATE 09/05/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_cara_elem SD  DATE 23/10/2008   AUTEUR TORKHANI M.TORKHANI 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -42,5 +42,11 @@ class sd_cara_elem(AsBase):
     CVENTCXF = Facultatif(sd_carte())
     CARPOUFL = Facultatif(sd_carte())
     CARGEOPO = Facultatif(sd_carte())
+    CARRIGXN = Facultatif(AsVK8())
+    CARRIGXV = Facultatif(AsVR())
+    CARDNSCK = Facultatif(sd_carte())
+    CARDNSCM = Facultatif(sd_carte())
+    CARDNSCA = Facultatif(sd_carte())
+    CARDINFO = Facultatif(sd_carte())
 
 
index d5fd1595e7b9213e1cbed1da2a65a57ae7f77f2b..7adc4980e2254f828dab5868ed4d2a07b9329c48 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_cham_elem SD  DATE 18/03/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_cham_elem SD  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -46,4 +46,48 @@ class sd_cham_elem(sd_titre):
         assert celk[5] != '' , celk
         assert celk[6] in ('MPI_COMPLET','MPI_INCOMPLET') , celk
 
+    def check_2(self, checker):
+        if not checker._profond : return
+        if not self.exists() : return
+        celd=self.CELD.get()
+        assert celd[0] > 0 , celd
+        ngrel= celd[1]
+        assert ngrel > 0 , celd
+        mxsp = celd[2]
+        assert mxsp > 0 , celd
+        mxcmp = celd[3]
+        lvari = mxcmp > 0
+        for kgrel in range(ngrel) :
+            debugr= celd[4+kgrel]-1
+            nbel  = celd[debugr+1]
+            modelo= celd[debugr+2]
+            lgcata= celd[debugr+3]
+            lggrel= celd[debugr+4]
+
+            assert nbel > 0 , (nbel,kgrel)
+            assert modelo >= 0 , (modelo,kgrel)
+            if modelo == 0 :
+                assert lgcata == 0 , (lgcata,kgrel)
+                assert lggrel == 0 , (lggrel,kgrel)
+                continue
+
+            assert lgcata > 0 , (lgcata,kgrel)
+            assert lggrel > 0 , (lggrel,kgrel)
+            assert lggrel >= nbel*lgcata , (lggrel,kgrel,nbel,lgcata)
+
+
+            for iel in range(nbel) :
+                nbsp  =celd[debugr+4+4*iel+1]
+                ncdyn =celd[debugr+4+4*iel+2]
+                lgchel=celd[debugr+4+4*iel+3]
+                adiel =celd[debugr+4+4*iel+4]
+                assert nbsp > 0 , (nbsp,kgrel,iel)
+                if lvari :
+                   assert ncdyn > 0 , (ncdyn,kgrel,iel)
+                   assert lgchel == lgcata*nbsp*ncdyn , (lgchel,lgcata,nbsp,ncdyn,kgrel,iel)
+                else :
+                   assert ncdyn == 0 , (ncdyn,kgrel,iel)
+                   assert lgchel == lgcata*nbsp , (lgchel,lgcata,nbsp,kgrel,iel)
+                assert adiel > 0 , (adiel,kgrel,iel)
+
 
index 42ed3f331a2e15df3504f403c3d6276bb94e7279..311e3400b5af63b14f9e105c1dd00f5d03f2265d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_cham_mater SD  DATE 28/01/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_cham_mater SD  DATE 30/06/2008   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -171,7 +171,7 @@ class sd_cham_mater(AsBase):
         for kedit in range(n_gd_edit):
             v1=vale[kedit*ncmp_max:(kedit+1)*ncmp_max]
             assert v1[3]=='COMP_INCR'   , v1
-            sd2=sd_compor(v1[5].split('.')[0].strip()) ; sd2.check(checker)
+            sd2=sd_compor(v1[6].split('.')[0].strip()) ; sd2.check(checker)
 
             for x1 in v1[7:] :
                 assert x1=='' , v1
index 7a1333dee3685a04cf9a9900de6e02b8ca966ffe..66e7c4e6b2e39d3fdf4ac4c301eb5701ebc7a23d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_cham_no SD  DATE 28/11/2007   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF sd_cham_no SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -21,7 +21,7 @@
 from SD import *
 from SD.sd_titre import sd_titre
 
-from SD.sd_nume_equa import sd_nume_equa
+from SD.sd_prof_chno import sd_prof_chno
 
 
 class sd_cham_no(sd_titre):
@@ -36,7 +36,6 @@ class sd_cham_no(sd_titre):
         # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre vérifiée)
         return self.REFE.exists
 
-    # indirection vers PROF_CHNO/NUME_EQUA :
     def check_cham_no_i_REFE(self, checker):
         if not self.exists() : return
         lnom = self.REFE.get()
@@ -48,9 +47,8 @@ class sd_cham_no(sd_titre):
         sd2 = sd_maillage(lnom[0])
         sd2.check(checker)
 
-        # j'aurai préféré : sd_prof_chno que sd_nume_equa (mais sslv111b !) AJACOT_PB :
         if lnom[1].strip() :
-            if checker.names.has_key(lnom[1][:14]+'.NUME.DEEQ'):  return
-            sd2 = sd_nume_equa(lnom[1]) ; sd2.check(checker)
+            if checker.names.has_key(lnom[1][:14]+'.NUME.PRNO'):  return
+            sd2 = sd_prof_chno(lnom[1]) ; sd2.check(checker)
 
 
index b480baab45e220081f00424360aee48e65ad72bd..62c02d31bd30e29685f820ed6d015b1015dd68c5 100644 (file)
@@ -1,27 +1,30 @@
-#@ MODIF sd_char_acou SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_char_acou SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 
 from SD import *
 
 from SD.sd_ligrel import sd_ligrel
 from SD.sd_carte import sd_carte
+from SD.sd_char_cine import sd_char_cine
+
+
 class sd_char_acou(AsBase):
     nomj = SDNom(fin=8)
     chac_vitfa = Facultatif(sd_carte(SDNom(nomj='.CHAC.VITFA', fin=19)))
@@ -30,6 +33,7 @@ class sd_char_acou(AsBase):
     chac_cimpo = Facultatif(sd_carte(SDNom(nomj='.CHAC.CIMPO', fin=19)))
     chac_imped = Facultatif(sd_carte(SDNom(nomj='.CHAC.IMPED', fin=19)))
     chac_ligre = Facultatif(sd_ligrel(SDNom(nomj='.CHAC.LIGRE', fin=19)))
+    ELIM = Facultatif(sd_char_cine())
     TYPE = AsVK8(lonmax=1, )
 
 
index 23f6964f94511ccce8a19607b1b00464594c01d4..56317c4008dbd14419974e5abce6f50239e9afc2 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_char_cine SD  DATE 08/10/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_char_cine SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -38,27 +38,30 @@ class sd_char_cine(AsBase):
         return self.AFCK.exists
 
 
-    def u_veri1(self):   # retourne (CIME/CITH/CIAC, RE/CX/FO/FT)
+    def u_veri1(self):   # retourne (CIME/CITH/CIAC, RE/CX/FT)
     #---------------------------------------------------------------
+        if not self.exists() : return
         afck=self.AFCK.get()
         l1=afck[0].strip().split('_') ; assert len(l1)==2 , afck
         phen, tsca= l1[0], l1[1]
         assert phen in ('CIME', 'CITH', 'CIAC'), afck
-        assert tsca in ('RE', 'CX', 'FO', 'FT'), tsca
+        assert tsca in ('RE', 'CX', 'FT'), tsca
         return phen, tsca
 
 
     def check_AFCK(self,checker):
     #---------------------------------------------
+        if not self.exists() : return
         phen, tsca = self.u_veri1()
         afck=self.AFCK.get()
         nomo=afck[1].strip()
         sd2=sd_modele(nomo); sd2.check(checker)
-        if afck[2].strip() != '' : assert phen=='CIME' and tsca=='FT', afck
+        if afck[2].strip() != '' : assert (phen=='CIME' or phen=='CITH') and tsca=='FT', afck
 
 
     def check_AFCI(self,checker):
     #---------------------------------------------
+        if not self.exists() : return
         phen, tsca = self.u_veri1()
         afci=self.AFCI.get()
         nbloc=afci[0]
@@ -73,6 +76,7 @@ class sd_char_cine(AsBase):
 
     def check_AFCV(self,checker):
     #-------------------------------------------------
+        if not self.exists() : return
         phen, tsca = self.u_veri1()
         afci=self.AFCI.get()
         nbloc=afci[0]
@@ -85,14 +89,14 @@ class sd_char_cine(AsBase):
             assert self.AFCV.lonmax == nbloc , (nbloc,self.AFCV.lonmax)
 
             if tsca == 'RE' :
-                assert tsca2=='R', tsca2
-            if tsca in ('FO', 'FT') :
-                assert tsca2=='K' , tsca2  # champ de fonctions
-            if tsca=='CX' :
-                assert tsca2=='C', tsca2
+                assert tsca2=='R', tsca2  # champ de réels
+            if tsca == 'FT' :
+                assert tsca2=='K', tsca2  # champ de fonctions
+            if tsca == 'CX' :
+                assert tsca2=='C', tsca2  # champ de complexes
 
             # vérification des fonctions :
-            if tsca in ( 'FO', 'FT')  :  # 'FO' : fonction ; 'FT' : il existe une fonction de 'INST'
+            if tsca == 'FT'  :
                 afcv  = self.AFCV.get()
                 for fonc in afcv :
                     sd2=sd_fonction(fonc); sd2.check(checker)
index 1048b1771b8f30ec678ec62a71d6cd612e27c1ca..7e5a1dc5910f9e1eeabe00aa660a2452ef63632d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_char_meca SD  DATE 01/04/2008   AUTEUR ABBAS M.ABBAS 
+#@ MODIF sd_char_meca SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -24,6 +24,7 @@ from SD.sd_ligrel import sd_ligrel
 from SD.sd_carte import sd_carte
 from SD.sd_char_unilate import sd_char_unilate
 from SD.sd_char_contact import sd_char_contact
+from SD.sd_char_cine import sd_char_cine
 
 
 class sd_char_gf_xx(AsBase):
@@ -96,6 +97,7 @@ class sd_char_meca(AsBase):
     TYPE            = AsVK8(lonmax=1)
 
     CHME = Facultatif(sd_char_chme())
+    ELIM = Facultatif(sd_char_cine())
 
     UNILATE = Facultatif(sd_char_unilate())
     CONTACT = Facultatif(sd_char_contact())
index 37cadd6d429f87f09bf17c56c9af84698f7b2ea1..38198e2c45f1057942639751df01b6603edd05a2 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_char_ther SD  DATE 17/07/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_char_ther SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -25,6 +25,7 @@ from SD.sd_cham_elem import sd_cham_elem
 from SD.sd_carte import sd_carte
 from SD.sd_champ import sd_champ
 from SD.sd_fonction import sd_fonction
+from SD.sd_char_cine import sd_char_cine
 
 
 class sd_char_chth(AsBase):
@@ -64,7 +65,8 @@ class sd_char_chth(AsBase):
 class sd_char_ther(AsBase):
 #--------------------------------
     nomj = SDNom(fin=8)
-    TYPE      = AsVK8(lonmax=1)
-    CHTH      = sd_char_chth()
+    TYPE = AsVK8(lonmax=1)
+    CHTH = sd_char_chth()
+    ELIM = Facultatif(sd_char_cine())
 
 
index b7ed032f56b5c96c312f2c637e41b3eee0398f7a..b283ec7324c0c375bf5fdd28c0467a8d61b0a9a5 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_compor SD  DATE 19/11/2007   AUTEUR PROIX J-M.PROIX 
+#@ MODIF sd_compor SD  DATE 30/06/2008   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
diff --git a/Aster/Cata/cataSTA9/SD/sd_compor1.py b/Aster/Cata/cataSTA9/SD/sd_compor1.py
deleted file mode 100644 (file)
index 651f4b0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#@ MODIF sd_compor1 SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-from SD import *
-from SD.sd_fonction import sd_fonction
-
-
-class sd_compor1(AsBase):
-#-----------------------
-    nomj = SDNom(fin=19)
-    VALC = AsVC(SDNom(debut=19), )
-    VALK = AsVK8(SDNom(debut=19), )
-    VALR = AsVR(SDNom(debut=19), )
-
-
-    # parfois, THER_NL crée une sd_fonction pour BETA
-    def check_compor1_i_VALK(self, checker):
-        nom= self.nomj().strip()
-        valk=list(self.VALK.get())
-        if not valk : return
-        if nom[8:16]=='.THER_NL' :
-           k=valk.index('BETA    ')
-           nomfon=valk[2*k+1]
-           sd2=sd_fonction(nomfon) ; sd2.check(checker)
diff --git a/Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py b/Aster/Cata/cataSTA9/SD/sd_fiss_xfem.py
deleted file mode 100644 (file)
index 3cad8b6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#@ MODIF sd_fiss_xfem SD  DATE 09/05/2007   AUTEUR PELLET J.PELLET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from SD import *
-
-from SD.sd_cham_no   import sd_cham_no
-from SD.sd_cham_elem import sd_cham_elem
-
-
-class sd_mailfiss_xfem(AsBase):
-#-------------------------------
-    nomj = SDNom(fin=19)
-    CTIP = AsVI(SDNom(nomj='.CTIP'))
-    HEAV = AsVI(SDNom(nomj='.HEAV'))
-    HECT = AsVI(SDNom(nomj='.HECT'))
-
-
-class sd_contact_xfem(AsBase):
-#-------------------------------
-    nomj = SDNom(fin=16)
-    CARACF  = AsVR(SDNom(nomj='.CARACF'))
-    ECPDON  = AsVI(SDNom(nomj='.ECPDON'))
-    LISCO   = AsVR(SDNom(nomj='.LISCO'))
-    LISEQ   = AsVI(SDNom(nomj='.LISEQ'))
-    LISRL   = AsVI(SDNom(nomj='.LISRL'))
-    METHCO  = AsVI(SDNom(nomj='.METHCO'))
-    XFEM    = AsVI(SDNom(nomj='.XFEM'))
-
-
-
-class sd_xfem_com1(AsBase):
-#-------------------------------
-#  champs communs aux sd_fiss_xfem et sd_modele :
-
-    nomj = SDNom(fin=8)
-
-    # cham_no :
-    BASLOC = sd_cham_no()
-    LNNO   = sd_cham_no()
-    LTNO   = sd_cham_no()
-    STNO   = sd_cham_no()
-
-    # cham_elem :
-    topose_pin  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.PIN')))
-    topose_cns  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CNS')))
-    topose_hea  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.HEA')))
-    topose_lon  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.LON')))
-    topofac_pi  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.PI')))
-    topofac_ai  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.AI')))
-    topofac_cf  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.CF')))
-    topofac_lo  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.LO')))
-    topofac_ba  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOFAC.BA')))
-
-
-
-class sd_fiss_xfem(AsBase):
-#-------------------------------
-    nomj = SDNom(fin=8)
-
-    CARAFOND        = AsVR()
-    FONDFISS        = AsVR()
-    GROUP_MA_ENRI   = AsVI()
-    GROUP_NO_ENRI   = AsVI()
-
-    FONDMULT        = Facultatif(AsVI())
-
-    CONTACT   = Facultatif(sd_contact_xfem())
-
-    mailfiss_indic = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, )
-    MAILFISS  = Facultatif(sd_mailfiss_xfem())
-
-
-    # sd_xfem_com1 (idem sd_modele) :
-    com1  = sd_xfem_com1(SDNom(nomj=''))
-
-    # cham_no :
-    BASCO  = Facultatif(sd_cham_no())
-    GRLNNO = sd_cham_no()
-    GRLTNO = sd_cham_no()
-    STNOR  = sd_cham_no()
-
-    # cham_elem :
-    topose_cri  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CRI')))
-    pro_mes_el  = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.MES_EL')))
-    pro_normal  = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.NORMAL')))
diff --git a/Aster/Cata/cataSTA9/SD/sd_formule.py b/Aster/Cata/cataSTA9/SD/sd_formule.py
deleted file mode 100644 (file)
index cea5820..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#@ MODIF sd_formule SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-from SD import *
-
-class sd_formule(AsBase):
-    nomj = SDNom(fin=19)
-    PROL = AsVK16(lonmax=6, )
-    NOVA = AsVK8()
-
-
index 05bbea0fb2ff5d2cb8bbbaa931f1040415b53900..3844fba781cb1d4eea86ff47ea07783b999a7713 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_macr_elem_dyna SD  DATE 24/09/2007   AUTEUR DEVESA G.DEVES
+#@ MODIF sd_macr_elem_dyna SD  DATE 22/09/2008   AUTEUR ANDRIAM H.ANDRIAMBOLOLON
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -28,7 +28,7 @@ class sd_macr_elem_dyna_m(AsBase):
     nomj = SDNom(fin=18)
     DESC = AsVI   (SDNom(nomj='_DESC'),lonmax=3)
     REFE = AsVK24 (SDNom(nomj='_REFE'),lonmax=2)
-    VALE = AsVR   (SDNom(nomj='_VALE'))
+    VALE = AsObject (SDNom(nomj='_VALE'),type=Parmi('C','R',),) 
 
     def check_macr_elem_dyna_m_1(self,checker):
         vale=self.VALE.get()
index 2aeadcdf872890b2d81be6075a37a2da6b3a5620..7bce4ec7dcda2c0f8efeb611ab8a1fda222a8c9c 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_matr_cine SD  DATE 14/01/2008   AUTEUR DESOZA T.DESOZA 
+#@ MODIF sd_matr_cine SD  DATE 22/09/2008   AUTEUR DESOZA T.DESOZA 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -26,7 +26,7 @@ class sd_matr_cine(AsBase):
     nomj = SDNom(fin=19)
 
     CCID = AsVI()
-    CCJJ = Facultatif(AsVI())
+    CCII = Facultatif(AsVI())
     CCLL = Facultatif(AsVI())
     CCVA = Facultatif(AsObject(genr='V', xous='S', type=Parmi('R','C')))
 
index 4ae31b93271974f935ef369860d52658fcaea28a..0e257c74e17a40107a4c3f77985dbd62591680fd 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_matr_elem SD  DATE 25/03/2008   AUTEUR REZETTE C.REZETTE 
+#@ MODIF sd_matr_elem SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -29,8 +29,9 @@ class sd_matr_elem(AsBase):
     nomj = SDNom(fin=19)
     RERR = AsVK24(lonmax=5, )
     RELR = Facultatif(AsVK24())
+    RECC = Facultatif(AsVK8())
     TITR = AsVK80(SDNom(debut=19), optional=True)
-    
+
     # indirection par RELR :
     def check_matr_elem_i_RELR(self, checker):
         if not self.RELR.exists : return
index 6d18fddd9ba861959aecd88a9de27a75bcb4588d..3dd3aad39107c4554b8616299cedc4c746499a21 100644 (file)
@@ -1,21 +1,21 @@
-#@ MODIF sd_nume_ddl_com SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_nume_ddl_com SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 
 from SD import *
@@ -25,7 +25,7 @@ from SD.sd_stockage import sd_stockage
 
 
 class sd_nume_ddl_com(sd_stockage):
-#--------------------------------
+#----------------------------------
     nomj = SDNom(fin=14)
     NSLV = AsVK24(lonmax=1, )
 
index 25f06ed523ec54efb54e20f0de47dc7ab4882109..88ed5120f844e2621b6e0a7afccfd9a00d16986d 100644 (file)
@@ -1,21 +1,21 @@
-#@ MODIF sd_nume_ddl_gene SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_nume_ddl_gene SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 
 from SD import *
@@ -25,7 +25,7 @@ from SD.sd_nume_eqge import sd_nume_eqge
 
 
 class sd_nume_ddl_gene(sd_nume_ddl_com):
-#--------------------------------
+#---------------------------------------
     nomj = SDNom(fin=14)
     nume = Facultatif(sd_nume_eqge(SDNom(nomj='.NUME'))) # n'existe pas toujours : CALC_MATR_AJOU/fdlv106a
 
index 42e3394a0676baf22253c1df066f59ef684066c8..e3656f512db0e2bb8a58e084426195a67a2a935a 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_nume_equa SD  DATE 11/02/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_nume_equa SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,8 +23,8 @@ from SD import *
 from SD.sd_prof_chno import sd_prof_chno
 class sd_nume_equa(sd_prof_chno):
     nomj = SDNom(fin=19)
-    NEQU = Facultatif(AsVI(SDNom(debut=19), lonmax=2, ))
-    DELG = Facultatif(AsVI(SDNom(debut=19), ))
-    REFN = Facultatif(AsVK24(SDNom(debut=19),lonmax=4,  ))
+    NEQU = AsVI(lonmax=2,)
+    DELG = AsVI( )
+    REFN = AsVK24(lonmax=4,)
 
 
diff --git a/Aster/Cata/cataSTA9/SD/sd_obstacle.py b/Aster/Cata/cataSTA9/SD/sd_obstacle.py
deleted file mode 100644 (file)
index 128c15f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#@ MODIF sd_obstacle SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-from SD import *
-
-class sd_obstacle(AsBase):
-    nomj = SDNom(fin=19)
-    VALR = Facultatif(AsVR(lonmax=19, ))
-    REFO = AsVK24(lonmax=1, )
-    VALT = Facultatif(AsVR(lonmax=19, ))
-
-
index 3d81d6d3c0a7d6cbc3bd21a213213fa6f1bce65c..fd7380a13564c8d7064ba34634a63fec1e63c20a 100644 (file)
@@ -1,31 +1,30 @@
-#@ MODIF sd_prof_chno SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_prof_chno SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 
 from SD import *
 
 class sd_prof_chno(AsBase):
     nomj = SDNom(fin=19)
-    LPRN = Facultatif(AsVI(SDNom(debut=19), ))
-    PRNO = AsColl(SDNom(debut=19), acces='NU', stockage='CONTIG', modelong=Parmi('CONSTANT', 'VARIABLE'), type='I', )
-    LILI = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=24, )
-    NUEQ = AsVI(SDNom(debut=19), )
-    DEEQ = AsVI(SDNom(debut=19), )
+    PRNO = AsColl( acces='NU', stockage='CONTIG', modelong=Parmi('CONSTANT', 'VARIABLE'), type='I', )
+    LILI = AsObject( genr='N', xous='S', type='K', ltyp=24, )
+    NUEQ = AsVI( )
+    DEEQ = AsVI( )
 
 
index 565f82a4feaadd2928283ef4c969924eceddbd38..95f8ab55c4520dd22f39a27bc9c0c28c78c7e289 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_resultat SD  DATE 22/10/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_resultat SD  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -38,6 +38,8 @@ class sd_resultat(sd_titre):
     ORDR = AsVI(SDNom(debut=19), )
     DESC = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=16, )
 
+    NOEU = Facultatif(AsVK16(SDNom(debut=19)))  # en attendant la correction de EL 12583
+
     # la déclaration suivante simplifie la fonction check_resultat_i_char
     CHAR = Facultatif(AsVK24(SDNom(debut=19),))
 
@@ -73,8 +75,8 @@ class sd_resultat(sd_titre):
                            ltyp=Parmi(4,8,16,24),) ; sd2.check(checker)
 
 
-    # indirection vers les sd_l_charges stockées comme paramètres dans l'objet .CHAR :
-    def check_resultat_i_CHAR(self, checker):
+    # indirection vers les sd_l_charges stockées comme paramètres sous le nom EXCIT :
+    def check_resultat_i_EXCIT(self, checker):
         lnom = self.CHAR.get()
         if not lnom: return
         S1=Set()
@@ -130,8 +132,8 @@ class sd_resultat(sd_titre):
             sdu_compare(sd2,checker,len(sd2.get()),'==',npara*nbmax_ordr,'Incohérence LONMAX / LONMAX(.ORDR)')
 
 
-    # vérification que les variables d'accès sont bien différentes :
-    def check_ACCES(self, checker):
+    # vérifications supplémentaires :
+    def check_veri1(self, checker):
         ordr = self.ORDR.get()
         nova = self.NOVA.get()
         tava = self.TAVA.get()
@@ -142,18 +144,20 @@ class sd_resultat(sd_titre):
 
         # objets trouvés dans .TAVA
         for knova in tava.keys():
-            nova1=nova[knova-1]
+            nova1=nova[knova-1].strip()
             suffix=tava[knova][0][:5]
             if not suffix.strip(): continue
 
             nupara=int(tava[knova][1])
             nbpara=int(tava[knova][2])
+            assert nupara <= nbpara, (nupara, nbpara)
             acces=tava[knova][3].strip()
             assert acces in ('PARA','ACCES') , acces
+
+            # on vérifie que les variables d'accès sont toutes différentes :
             if acces == 'ACCES' :
                 # pour l'instant, on ne vérifie que 'INST' car 'FREQ', 'NUME_MODE', 'NOEUD_CMP' ne semblent pas tous différents ...
-                if nova1.strip() != 'INST' : continue
-                sdu_compare(tava,checker,nupara,'<=',nbpara,'nupara <= nbpara')
+                if nova1 != 'INST' : continue
 
                 nom=self.nomj()[:19]+suffix
                 sd2 = AsObject(SDNom(nomj=nom,debut=0),)
@@ -164,4 +168,16 @@ class sd_resultat(sd_titre):
 
                 sdu_tous_differents(sd2,checker,seq,nova1)
 
+            # on vérifie les éventuelles sd_l_charge (EXCIT) :
+            if nova1=="EXCIT" :
+                nom=self.nomj()[:19]+suffix
+                sd2 = AsObject(SDNom(nomj=nom,debut=0),)
+                vect=sd2.get()
+                S1=Set()
+                for k in range(nbuti_ordr) :
+                    S1.add(vect[k*nbpara+nupara-1])
+                for nom in S1 :
+                    if nom.strip() != '' :
+                       sd2 = sd_l_charges(nomj=nom); sd2.check(checker)
+
 
index 6dab8958d8766e2bc96782d34964bd7c71c9dccf..07ac7c552865fe7520949f5b5ab607b529e9be6e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_resultat_dyn SD  DATE 11/02/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_resultat_dyn SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -30,8 +30,7 @@ from SD.sd_proj_mesu import sd_proj_mesu
 class sd_resultat_dyn(sd_resultat):
 #--------------------------------------------------
     nomj = SDNom(fin=8)
-    PROFC_NUME_REFN = Facultatif(AsVK24(SDNom(nomj='.PROFC.NUME.REFN'), lonmax=4, ))
-    REFD = Facultatif(AsVK24(SDNom(debut=19), lonmax=6, )) # n'existe pas dans sdll23a
+    REFD = AsVK24(SDNom(debut=19), lonmax=6, )
 
     # si utilisation de PROJ_MESU_MODAL :
     PROJM = Facultatif(sd_proj_mesu())
index 2d6782616fc80c079f73d5f1a88f4faf3e4c54c0..cbf779a06fc33e7ca2a9c82f00f0bd8c4f2d1199 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_solveur SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_solveur SD  DATE 22/07/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -27,3 +27,17 @@ class sd_solveur(AsBase):
     SLVI = AsVI(SDNom(debut=19), lonmax=6, )
 
 
+    def check_SLVK(self,checker):
+    #---------------------------------------------
+        slvk = self.SLVK.get_stripped()
+        method=slvk[0]
+        if method == 'MUMPS' :
+            assert slvk[1] in ('AUTO', 'SANS'), slvk
+            assert slvk[2] in ('NONSYM', 'SYMGEN', 'SYMDEF', 'AUTO'), slvk
+            assert slvk[3] in ('AMD','AMF','PORD','METIS','QAMD','AUTO'), slvk
+            assert slvk[4] in ('OUI', 'NON'), slvk
+            assert slvk[5] in ('OUI', 'NON'), slvk
+        else :
+            pass
+
+
index f3ba2aba16d0e935585ba24a4ce469c755f09e22..86e28fd2614d0c0037eebd0bf29c73f4685bf4fa 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_squelette SD  DATE 19/06/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_squelette SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -27,7 +27,7 @@ from SD.sd_util import *
 class sd_squelette(sd_maillage):
 #-------------------------------
     nomj = SDNom(fin=8)
-    inv_skeleton = AsVI(SDNom(nomj='.INV.SKELETON'), )
+    inv_skeleton = Facultatif(AsVI(SDNom(nomj='.INV.SKELETON'),))
 
     CORRES       = Facultatif(AsVI())
     NOMSST       = Facultatif(AsVK8(SDNom(debut=17),))
@@ -38,8 +38,9 @@ class sd_squelette(sd_maillage):
 
 
     def check_SKELETON(self,checker):
-        dime=self.DIME.get()
+        if not self.inv_skeleton.exists : return
         skeleton=self.inv_skeleton.get()
+        dime=self.DIME.get()
         nbno=dime[0]
         assert len(skeleton)==2*nbno, (dime,len(skeleton))
         for k in skeleton :
index 1afe1a1739824b5b1d9464856fbfd9e423da36ee..35360005b148c2c1e213d99fb383872b601340f4 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_table_container SD  DATE 12/02/2008   AUTEUR REZETTE C.REZETTE 
+#@ MODIF sd_table_container SD  DATE 21/10/2008   AUTEUR REZETTE C.REZETTE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -46,7 +46,7 @@ class sd_table_container(sd_table):
         # 'NOM_OBJET','TYPE_OBJET','NOM_SD'
         param=['NOM_OBJET','TYPE_OBJET','NOM_SD']
         shape = self.TBNP.get()
-        assert 3,shape[0] # la table a exactement 3 paramètres
+        assert shape[0]>2 # la table à au moins 3 paramètres
         for n in param:
           col=self.get_column_name(n)
           if col == None:
index a5c682f4817424b3fd4ac7f9826c87a4893ece20..bd46937538f9c73791e265e08aae433fdd91178a 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_tran_gene SD  DATE 27/11/2007   AUTEUR ANDRIAM H.ANDRIAMBOLOLONA 
+#@ MODIF sd_tran_gene SD  DATE 25/11/2008   AUTEUR BOYERE E.BOYERE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -108,8 +108,8 @@ class sd_tran_gene(sd_titre) :
         assert self.ORDR.lonmax == nbsauv
         assert self.INST.lonmax == nbsauv
         assert self.PTEM.lonmax in (1, nbsauv)
-        sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents"
-        sdu_tous_differents(self.INST,checker) #      mais il y a sdld102a  => fiche à émettre ?
+        sdu_tous_differents(self.ORDR,checker) # AJACOT_PB : j'aimerais bien "tous_différents"
+        sdu_tous_differents(self.INST,checker) #      mais il y a sdld102a  => fiche à émettre ?
 
 
     def check_DEPL_VITE_ACCE(self,checker):
index ef81e21ee2ee633e76112b9d9912eb23dee2ed64..b23e9075d36be2ab2e6e2aae91ac67ae6ecd373b 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_xfem SD  DATE 04/02/2008   AUTEUR GALENNE E.GALENNE 
+#@ MODIF sd_xfem SD  DATE 14/10/2008   AUTEUR GENIAUT S.GENIAUT 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -44,7 +44,7 @@ class sd_fiss_xfem(AsBase):
     FONDFISS        = Facultatif(AsVR())
     BASEFOND        = Facultatif(AsVR())
     FONDMULT        = Facultatif(AsVI())
-    CARAFOND        = AsVR()
+    CARAFOND        = AsVR(lonmax=12,)
 
 # I.2) objets relatifs à l'enrichissement
 
index 8e4980be6be5a34623adfeb828c6dfebe457ba77..e101a3be4bce547b786b8719305c7a5c8e97b0cc 100644 (file)
@@ -23,7 +23,7 @@
    Utilitaire sur le catalogue des structures de données.
 """
 
-__revision__ = "$Id: utilsd.py,v 1.2.6.3.4.2 2008-10-10 13:32:10 pnoyret Exp $"
+__revision__ = "$Id: utilsd.py,v 1.3.4.2 2008-11-28 16:53:33 pnoyret Exp $"
 
 import sys
 import os
index 9107d31ceb15ded94946f9a51b6acceb77b266d2..9984f964437f283e99c986ead9e6f997e682a4bb 100644 (file)
@@ -22,7 +22,7 @@
 from __future__ import division
 
 __version__ = "$Name:  $"
-__Id__ = "$Id: cata.py,v 1.2.6.5.4.3 2008-10-10 13:31:49 pnoyret Exp $"
+__Id__ = "$Id: cata.py,v 1.3.4.2 2008-11-28 16:53:32 pnoyret Exp $"
 
 import Accas
 from Accas import *
@@ -226,7 +226,7 @@ from SD.co_vect_elem import vect_elem, \
                             vect_elem_pres_r, vect_elem_pres_c, \
                             vect_elem_temp_r
 
-#& MODIF COMMUN  DATE 06/05/2008   AUTEUR MARKOVIC D.MARKOVIC 
+#& MODIF COMMUN  DATE 20/10/2008   AUTEUR MICHEL S.MICHEL 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -246,675 +246,241 @@ from SD.co_vect_elem import vect_elem, \
 # ======================================================================
 # RESPONSABLE PROIX J.M.PROIX
 def C_COMP_INCR() : return FACT(statut='f',min=1,max='**',  #COMMUN#
-           RELATION        =SIMP(statut='o',typ='TXM',defaut="VMIS_ISOT_TRAC",
-                                 into=( "ELAS",
-# Spécial Discrets : début
-                                        "DIS_VISC",        # RESP. : FLEJOU J.L.FLEJOU
-                                        "DIS_ECRO_CINE",   # RESP. : FLEJOU J.L.FLEJOU
+           RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
+                                 into=( "ELAS",            # RESP. : PROIX J.M.PROIX
+                                        "ARME",            # RESP. : PEYRARD C.PEYRARD
+                                        "ASSE_CORN",       # RESP. : PEYRARD C.PEYRARD
+                                        "BARCELONE",       # RESP. : ELGHARIB J.ELGHARIB
+                                        "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB
+                                        "BETON_REGLE_PR",  # RESP. : NECS
+                                        "BETON_UMLV_FP",   # RESP. : LEPAPE Y.LEPAPE
+                                        "CAM_CLAY",        # RESP. : ELGHARIB J.ELGHARIB
+                                        "CJS",             # RESP. : CHAVANT C.CHAVANT
+                                        "CORR_ACIER",      # RESP. : LEPAPE Y.LEPAPE
+                                        "CZM_EXP_REG",     # RESP. : LAVERNE J.LAVERNE
+                                        "CZM_EXP",         # RESP. : LAVERNE J.LAVERNE
+                                        "CZM_LIN_REG",     # RESP. : LAVERNE J.LAVERNE
+                                        "CZM_OUV_MIX",     # RESP. : LAVERNE J.LAVERNE
+                                        "CZM_TAC_MIX",     # RESP. : LAVERNE J.LAVERNE
                                         "DIS_BILI_ELAS",   # RESP. : FLEJOU J.L.FLEJOU
-# Spécial Discrets : fin
+                                        "DIS_CHOC",        # RESP. : DEVESA G.DEVESA
+                                        "DIS_ECRO_CINE",   # RESP. : FLEJOU J.L.FLEJOU
+                                        "DIS_GOUJ2E_ELAS", # RESP. : ANGLES J.ANGLES
+                                        "DIS_GOUJ2E_PLAS", # RESP. : ANGLES J.ANGLES
+                                        "DIS_GRICRA",      # RESP. : FERNANDES R.FERNANDES
+                                        "DIS_VISC",        # RESP. : FLEJOU J.L.FLEJOU
+                                        "DRUCK_PRAGER",    # RESP. : FERNANDES R.FERNANDES
+                                        "DRUCK_PRAG_N_A",  # RESP. : FERNANDES R.FERNANDES
+                                        "ELAS_GONF",       # RESP. : GRANET S.GRANET
                                         "ELAS_HYPER",      # RESP. : ABBAS M.ABBAS
-                                        "VMIS_ISOT_TRAC",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_ISOT_TRAC",  # RESP. : PROIX J.M.PROIX
-                                        "VMIS_ISOT_LINE",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_ISOT_LINE",  # RESP. : MICHEL S.MICHEL
-                                        "VMIS_ISOT_PUIS",  # RESP. : PROIX J.M.PROIX
-                                        "VMIS_ECMI_TRAC",  # RESP. : PROIX J.M.PROIX
-                                        "VMIS_ECMI_LINE",  # RESP. : PROIX J.M.PROIX
-                                        "LABORD_1D",       # RESP. : VOLDOIRE F.VOLDOIRE
                                         "ENDO_FRAGILE",    # RESP. : MICHEL S.MICHEL
                                         "ENDO_ISOT_BETON", # RESP. : MICHEL S.MICHEL
                                         "ENDO_ORTH_BETON", # RESP. : MICHEL S.MICHEL
-                                        "BETON_REGLE_PR",  # RESP. : NECS
-                                        "MAZARS",          # RESP. : MICHEL S.MICHEL
+                                        "GATT_MONERIE",    # RESP. : DEBONNIERES P.DEBONNIERES
+                                        "GLRC_DAMAGE",     # RESP. : MARKOVIC D.MARKOVIC
+                                        "GLRC_DM",         # RESP. : MARKOVIC D.MARKOVIC
+                                        "GRANGER_FP_INDT", # RESP. : ROSPARS C.ROSPARS
+                                        "GRANGER_FP",      # RESP. : ROSPARS C.ROSPARS
+                                        "GRANGER_FP_V",    # RESP. : ROSPARS C.ROSPARS
+                                        "GRAN_IRRA_LOG",   # RESP. : FERNANDES R.FERNANDES
+                                        "GRILLE_CINE_LINE",# RESP. : ROSPARS C.ROSPARS
+                                        "GRILLE_ISOT_LINE",# RESP. : ROSPARS C.ROSPARS
+                                        "GRILLE_PINTO_MEN",# RESP. : ROSPARS C.ROSPARS
+                                        "HOEK_BROWN_EFF",  # RESP. : CHAVANT C.CHAVANT
+                                        "HOEK_BROWN",      # RESP. : CHAVANT C.CHAVANT
+                                        "HOEK_BROWN_TOT",  # RESP. : CHAVANT C.CHAVANT
+                                        "HUJEUX",          # RESP. : FOUCAULT A.FOUCAULT
+                                        "IRRAD3M",         # RESP. : FLEJOU J.L.FLEJOU
                                         "JOINT_BA",        # RESP. : MICHEL S.MICHEL
-                                        "RUPT_FRAG",       # RESP. : LAVERNE J.LAVERNE
-                                        "CZM_EXP_REG",     # RESP. : LAVERNE J.LAVERNE
-                                        "CZM_LIN_REG",     # RESP. : LAVERNE J.LAVERNE
-                                        "CZM_EXP",         # RESP. : LAVERNE J.LAVERNE
-                                        "META_P_IL",       # RESP. : CANO V.CANO
+                                        "KIT_DDI",         # RESP. : CHAVANT C.CHAVANT
+                                        "KIT_HHM",         # RESP. : GRANET S.GRANET
+                                        "KIT_HH",          # RESP. : GRANET S.GRANET
+                                        "KIT_HM",          # RESP. : GRANET S.GRANET
+                                        "KIT_THHM",        # RESP. : GRANET S.GRANET
+                                        "KIT_THH",         # RESP. : GRANET S.GRANET
+                                        "KIT_THM",         # RESP. : GRANET S.GRANET
+                                        "KIT_THV",         # RESP. : GRANET S.GRANET
+                                        "LABORD_1D",       # RESP. : VOLDOIRE F.VOLDOIRE
+                                        "LAIGLE",          # RESP. : ELGHARIB J.ELGHARIB
+                                        "LEMAITRE_IRRA",   # RESP. : FERNANDES R.FERNANDES
+                                        "LEMAITRE",        # RESP. : DEBONNIERES P.DEBONNIERES
+                                        "LEMA_SEUIL",      # RESP. : LECLERC S.LECLERC
+                                        "LETK",            # RESP. : ELGHARIB J.ELGHARIB
+                                        "LMARC_IRRA",      # RESP. : FERNANDES R.FERNANDES
+                                        "LMARC",           # RESP. : None
+                                        "MAZARS",          # RESP. : MICHEL S.MICHEL
+                                        "META_LEMA_ANI",   # RESP. : CANO V.CANO
+                                        "META_P_CL_PT_RE", # RESP. : CANO V.CANO
+                                        "META_P_CL_PT",    # RESP. : CANO V.CANO
+                                        "META_P_CL_RE",    # RESP. : CANO V.CANO
+                                        "META_P_CL",       # RESP. : CANO V.CANO
+                                        "META_P_IL_PT_RE", # RESP. : CANO V.CANO
                                         "META_P_IL_PT",    # RESP. : CANO V.CANO
                                         "META_P_IL_RE",    # RESP. : CANO V.CANO
-                                        "META_P_IL_PT_RE", # RESP. : CANO V.CANO
-                                        "META_V_IL",       # RESP. : CANO V.CANO
-                                        "META_V_IL_PT",    # RESP. : CANO V.CANO
-                                        "META_V_IL_RE",    # RESP. : CANO V.CANO
-                                        "META_V_IL_PT_RE", # RESP. : CANO V.CANO
-                                        "META_P_INL",      # RESP. : CANO V.CANO
+                                        "META_P_IL",       # RESP. : CANO V.CANO
+                                        "META_P_INL_PT_RE",# RESP. : CANO V.CANO
                                         "META_P_INL_PT",   # RESP. : CANO V.CANO
                                         "META_P_INL_RE",   # RESP. : CANO V.CANO
-                                        "META_P_INL_PT_RE",# RESP. : CANO V.CANO
-                                        "META_V_INL",      # RESP. : CANO V.CANO
-                                        "META_V_INL_PT",   # RESP. : CANO V.CANO
-                                        "META_V_INL_RE",   # RESP. : CANO V.CANO
-                                        "META_V_INL_PT_RE",# RESP. : CANO V.CANO
-                                        "META_P_CL",       # RESP. : CANO V.CANO
-                                        "META_P_CL_PT",    # RESP. : CANO V.CANO
-                                        "META_P_CL_RE",    # RESP. : CANO V.CANO
-                                        "META_P_CL_PT_RE", # RESP. : CANO V.CANO
-                                        "META_V_CL",       # RESP. : CANO V.CANO
+                                        "META_P_INL",      # RESP. : CANO V.CANO
+                                        "META_V_CL_PT_RE", # RESP. : CANO V.CANO
                                         "META_V_CL_PT",    # RESP. : CANO V.CANO
                                         "META_V_CL_RE",    # RESP. : CANO V.CANO
-                                        "META_V_CL_PT_RE", # RESP. : CANO V.CANO
-                                        "META_LEMA_ANI",   # RESP. : CANO V.CANO                                     
-                                        "VMIS_CINE_LINE",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_TAHERI",     # RESP. : TAHERI S.TAHERI
+                                        "META_V_CL",       # RESP. : CANO V.CANO
+                                        "META_V_IL_PT_RE", # RESP. : CANO V.CANO
+                                        "META_V_IL_PT",    # RESP. : CANO V.CANO
+                                        "META_V_IL_RE",    # RESP. : CANO V.CANO
+                                        "META_V_IL",       # RESP. : CANO V.CANO
+                                        "META_V_INL_PT_RE",# RESP. : CANO V.CANO
+                                        "META_V_INL_PT",   # RESP. : CANO V.CANO
+                                        "META_V_INL_RE",   # RESP. : CANO V.CANO
+                                        "META_V_INL",      # RESP. : CANO V.CANO
+                                        "MONOCRISTAL",     # RESP. : PROIX J.M.PROIX
+                                        "MULTIFIBRE",      # RESP. : FLEJOU J.L.FLEJOU
+                                        "NADAI_B",         # RESP. : None
+                                        "NORTON_HOFF",     # RESP. : MICHEL S.MICHEL
+                                        "PINTO_MENEGOTTO", # RESP. : ROSPARS C.ROSPARS
+                                        "POLYCRISTAL",     # RESP. : PROIX J.M.PROIX
+                                        "ROUSSELIER",      # RESP. : CANO V.CANO
+                                        "ROUSS_PR",        # RESP. : PARROT A.PARROT
+                                        "ROUSS_VISC",      # RESP. : CANO V.CANO
+                                        "RUPT_FRAG",       # RESP. : LAVERNE J.LAVERNE
+                                        "SANS",            # RESP. : MICHEL S.MICHEL
+                                        "VENDOCHAB",       # RESP. : PROIX J.M.PROIX
+                                        "VISC_CIN1_CHAB",  # RESP. : PROIX J.M.PROIX
+                                        "VISC_CIN2_CHAB",  # RESP. : PROIX J.M.PROIX
+                                        "VISC_CIN2_MEMO",  # RESP. : PROIX J.M.PROIX
+                                        "VISC_IRRA_LOG",   # RESP. : FERNANDES R.FERNANDES
+                                        "VISC_ISOT_LINE",  # RESP. : MICHEL S.MICHEL
+                                        "VISC_ISOT_TRAC",  # RESP. : PROIX J.M.PROIX
                                         "VISCOCHAB",       # RESP. : None
+                                        "VISC_TAHERI",     # RESP. : TAHERI S.TAHERI
+                                        "VMIS_ASYM_LINE",  # RESP. : PROIX J.M.PROIX
                                         "VMIS_CIN1_CHAB",  # RESP. : PROIX J.M.PROIX
                                         "VMIS_CIN2_CHAB",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_CIN1_CHAB",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_CIN2_CHAB",  # RESP. : PROIX J.M.PROIX
                                         "VMIS_CIN2_MEMO",  # RESP. : PROIX J.M.PROIX
-                                        "VISC_CIN2_MEMO",  # RESP. : PROIX J.M.PROIX
-                                        "LMARC",           # RESP. : None
-                                        "LMARC_IRRA",      # RESP. : FERNANDES R.FERNANDES
-                                        "ROUSSELIER",      # RESP. : CANO V.CANO
-                                        "ROUSS_PR",        # RESP. : PARROT A.PARROT
-                                        "ROUSS_VISC",      # RESP. : CANO V.CANO
-                                        "VMIS_POU_LINE",   # RESP. : PROIX J.M.PROIX
+                                        "VMIS_CINE_LINE",  # RESP. : PROIX J.M.PROIX
+                                        "VMIS_ECMI_LINE",  # RESP. : PROIX J.M.PROIX
+                                        "VMIS_ECMI_TRAC",  # RESP. : PROIX J.M.PROIX
+                                        "VMIS_ISOT_LINE",  # RESP. : PROIX J.M.PROIX
+                                        "VMIS_ISOT_PUIS",  # RESP. : PROIX J.M.PROIX
+                                        "VMIS_ISOT_TRAC",  # RESP. : PROIX J.M.PROIX
                                         "VMIS_POU_FLEJOU", # RESP. : FLEJOU J.L.FLEJOU
-                                        "ARME",            # RESP. : PEYRARD C.PEYRARD
-                                        "ASSE_CORN",       # RESP. : PEYRARD C.PEYRARD
-                                        "NORTON_HOFF",     # RESP. : MICHEL S.MICHEL
-                                        "LEMAITRE",        # RESP. : DEBONNIERES P.DEBONNIERES
-                                        "LEMAITRE_IRRA",   # RESP. : FERNANDES R.FERNANDES
-                                        "LEMA_SEUIL",      # RESP. : LECLERC S.LECLERC
-                                        "IRRAD3M",         # RESP. : FLEJOU J.L.FLEJOU
-                                        "VISC_IRRA_LOG",   # RESP. : FERNANDES R.FERNANDES
-                                        "GRAN_IRRA_LOG",   # RESP. : FERNANDES R.FERNANDES
-                                        "VENDOCHAB",       # RESP. : None
-                                        "NADAI_B",         # RESP. : None
-                                        "DIS_CHOC",        # RESP. : DEVESA G.DEVESA
-                                        "DIS_GRICRA",      # RESP. : FERNANDES R.FERNANDES
-                                        "DIS_GOUJ2E_PLAS", # RESP. : ANGLES J.ANGLES
-                                        "DIS_GOUJ2E_ELAS", # RESP. : ANGLES J.ANGLES
-                                        "GRILLE_ISOT_LINE",# RESP. : ROSPARS C.ROSPARS
-                                        "GRILLE_CINE_LINE",# RESP. : ROSPARS C.ROSPARS
-                                        "GRILLE_PINTO_MEN",# RESP. : ROSPARS C.ROSPARS
-                                        "PINTO_MENEGOTTO", # RESP. : ROSPARS C.ROSPARS
-                                        "CJS",             # RESP. : CHAVANT C.CHAVANT
-                                        "HUJEUX",          # RESP. : FOUCAULT A.FOUCAULT
-                                        "CAM_CLAY",        # RESP. : ELGHARIB J.ELGHARIB
-                                        "BARCELONE",       # RESP. : ELGHARIB J.ELGHARIB
-                                        "LAIGLE",          # RESP. : ELGHARIB J.ELGHARIB
-                                        "LETK",            # RESP. : ELGHARIB J.ELGHARIB
-                                        "DRUCK_PRAGER",    # RESP. : FERNANDES R.FERNANDES
-                                        "DRUCK_PRAG_N_A",  # RESP. : FERNANDES R.FERNANDES
-                                        "HOEK_BROWN",      # RESP. : CHAVANT C.CHAVANT
-                                        "HOEK_BROWN_EFF",  # RESP. : CHAVANT C.CHAVANT
-                                        "HOEK_BROWN_TOT",  # RESP. : CHAVANT C.CHAVANT
-                                        "GRANGER_FP",      # RESP. : ROSPARS C.ROSPARS
-                                        "GRANGER_FP_INDT", # RESP. : ROSPARS C.ROSPARS
-                                        "GRANGER_FP_V",    # RESP. : ROSPARS C.ROSPARS
-                                        "BETON_UMLV_FP",   # RESP. : LEPAPE Y.LEPAPE
-                                        "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB
-                                        "KIT_HH",          # RESP. : GRANET S.GRANET
-                                        "KIT_HM",          # RESP. : GRANET S.GRANET
-                                        "KIT_HHM",         # RESP. : GRANET S.GRANET
-                                        "KIT_THH",         # RESP. : GRANET S.GRANET
-                                        "KIT_THV",         # RESP. : GRANET S.GRANET
-                                        "KIT_THM",         # RESP. : GRANET S.GRANET
-                                        "KIT_THHM",        # RESP. : GRANET S.GRANET
-                                        "VMIS_ASYM_LINE",  # RESP. : None
-                                        "KIT_DDI",         # RESP. : CHAVANT C.CHAVANT
-                                        "GLRC_DAMAGE",     # RESP. : MARKOVIC D.MARKOVIC
-                                        "GLRC_DM",         # RESP. : MARKOVIC D.MARKOVIC
-                                        "SANS",            # RESP. : None
-                                        "CORR_ACIER",      # RESP. : LEPAPE Y.LEPAPE
-                                        "MONOCRISTAL",     # RESP. : PROIX J.M.PROIX
-                                        "POLYCRISTAL",     # RESP. : PROIX J.M.PROIX
+                                        "VMIS_POU_LINE",   # RESP. : PROIX J.M.PROIX
                                         "ZMAT",            # RESP. : PROIX J.M.PROIX
-                                        "GATT_MONERIE",    # RESP. : DEBONNIERES P.DEBONNIERES
-                                        "MULTIFIBRE",      # RESP. : FLEJOU J.L.FLEJOU
                                      ) ),
-# Spécial discrets : début
-          DIS_VISC       =SIMP(statut='c',typ='I',defaut=12,into=(12,)),
-          DIS_ECRO_CINE  =SIMP(statut='c',typ='I',defaut=18,into=(18,)),
-          DIS_BILI_ELAS  =SIMP(statut='c',typ='I',defaut= 6,into=( 6,)),
-# Spécial discrets : fin
-          ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          SANS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          CORR_ACIER      =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          VMIS_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VISC_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VMIS_ISOT_LINE  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VISC_ISOT_LINE  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VMIS_ISOT_PUIS  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VMIS_ECMI_TRAC  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VMIS_ECMI_LINE  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          LABORD_1D       =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          ENDO_FRAGILE    =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          BETON_REGLE_PR  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          MAZARS          =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          JOINT_BA        =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          RUPT_FRAG       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          CZM_EXP_REG     =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          CZM_LIN_REG     =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          CZM_EXP         =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          META_P_IL       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_IL_PT    =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_IL_RE    =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_IL       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_IL_PT    =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_IL_RE    =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_INL      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_INL_PT   =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_INL_RE   =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_INL_PT_RE=SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_INL      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_INL_PT   =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_INL_RE   =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_V_INL_PT_RE=SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          META_P_CL       =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_P_CL_PT    =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_P_CL_RE    =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_P_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_V_CL       =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_V_CL_PT    =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_V_CL_RE    =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
-          META_LEMA_ANI   =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VMIS_CINE_LINE  =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          VISCOCHAB       =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
-          VMIS_CIN1_CHAB  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VMIS_CIN2_CHAB  =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
-          VISC_CIN1_CHAB  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VISC_CIN2_CHAB  =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
-          VMIS_CIN2_MEMO  =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
-          VISC_CIN2_MEMO  =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
-          LMARC           =SIMP(statut='c',typ='I',defaut=20,into=(20,)),
-          LMARC_IRRA      =SIMP(statut='c',typ='I',defaut=20,into=(20,)),
-          VISC_TAHERI     =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          ROUSSELIER      =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          ROUSS_PR        =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          ROUSS_VISC      =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          VMIS_POU_LINE   =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)),
-          ASSE_CORN       =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          ARME            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          NORTON_HOFF     =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          LEMAITRE        =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          LEMA_SEUIL      =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          IRRAD3M         =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          LEMAITRE_IRRA   =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VISC_IRRA_LOG   =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          GRAN_IRRA_LOG   =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          NADAI_B         =SIMP(statut='c',typ='I',defaut=34,into=(34,)),
-          VENDOCHAB       =SIMP(statut='c',typ='I',defaut=10,into=(10,)),
-          GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)),
-          DIS_CHOC        =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          DIS_GRICRA      =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          CJS             =SIMP(statut='c',typ='I',defaut=16,into=(16,)),
-          HUJEUX          =SIMP(statut='c',typ='I',defaut=35,into=(35,)),
-          CAM_CLAY        =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          BARCELONE       =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          LAIGLE          =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          LETK            =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          DRUCK_PRAGER    =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          DRUCK_PRAG_N_A  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN      =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN_EFF  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN_TOT  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          GRANGER_FP      =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          GRANGER_FP_V    =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          KIT_HH          =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_HM          =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_HHM         =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_THH         =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_THV         =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_THM         =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          KIT_THHM        =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
-          VMIS_ASYM_LINE  =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          BETON_UMLV_FP   =SIMP(statut='c',typ='I',defaut=21,into=(21,)),
-          GLRC_DAMAGE     =SIMP(statut='c',typ='I',defaut=19,into=(19,)),
-          GLRC_DM         =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          GATT_MONERIE    =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-
            b_monox     = BLOC(condition = "RELATION == 'MONOCRISTAL' ",
                                  fr="SD issue de DEFI_COMPOR",
                    COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
-#
            b_polyx     = BLOC(condition = "RELATION == 'POLYCRISTAL' ",
-                                 fr="SD issue de DEFI_COMPOR",
-                   COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
-#
-           b_zmat      = BLOC(condition = "RELATION == 'ZMAT' ",
-                                 fr="Comportement de la bibliotheque Zmat",
-                   NB_VARI =SIMP(statut='o',typ='I',max=1),
-                   UNITE =SIMP(statut='o',typ='I',max=1),),
-
-
-
-           RELATION_KIT    =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
-                                 into=(
-# MECA
-                                       "ELAS",
-                                       "CJS",
-                                       "HUJEUX",
-                                       "CAM_CLAY",
-                                       "BARCELONE",
-                                       "LAIGLE",
-                                       "LETK",
-                                       "DRUCK_PRAGER",
-                                       "DRUCK_PRAG_N_A",
-                                       "HOEK_BROWN_EFF",
-                                       "HOEK_BROWN_TOT",
-                                       "MAZARS",
-                                       "ENDO_ISOT_BETON",
-# THMC
-                                       "GAZ",
-                                       "LIQU_SATU",
-                                       "LIQU_GAZ_ATM",
-                                       "LIQU_VAPE_GAZ",
-                                       "LIQU_AD_GAZ_VAPE",
-                                       "LIQU_VAPE",
-                                       "LIQU_GAZ",
-# HYDR
-                                       "HYDR_UTIL",
-                                       "HYDR_VGM",
-                                       "HYDR",
-                                       "HYDR_ENDO",
-# MECA_META
-                                       "ACIER",
-                                       "ZIRC",
-# MECA KIT_DDI
-                                       "VMIS_CINE_LINE",
-                                       "VMIS_ISOT_TRAC",
-                                       "VMIS_ISOT_LINE",
-                                       "VMIS_ISOT_CINE",
-                                       "VMIS_ISOT_PUIS",
-                                       "GLRC_DM",
-                                       "GRANGER_FP",
-                                       "GRANGER_FP_INDT",
-                                       "GRANGER_FP_V",
-                                       "BETON_UMLV_FP",
-                                       "ROUSS_PR",
-                                       "NADAI_B",
-                                       "BETON_DOUBLE_DP",
-                                       ),),
-
-
-           GAZ             =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           LIQU_SATU       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           LIQU_GAZ_ATM    =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-           LIQU_VAPE_GAZ   =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-           LIQU_AD_GAZ_VAPE=SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-           LIQU_VAPE       =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-           LIQU_GAZ        =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-           HYDR_UTIL       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           HYDR_VGM        =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           HYDR            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           HYDR_ENDO       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ACIER           =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-           ZIRC            =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-
-           DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT",
-                             into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN","COROTATIONNEL",
-                                   "REAC_GEOM","EULER_ALMANSI")),
-           ALGO_C_PLAN     =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
-#           b_deborst      = BLOC(condition = " ALGO_C_PLAN == 'DEBORST' ",
-#                        fr="Tolérance relative sur la verification des contraintes planes",
-           RESI_DEBORST  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
-#                                ),
-           ALGO_1D         =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
-#           b_dbiter      = BLOC(condition = " (ALGO_C_PLAN == 'DEBORST') or (ALGO_1D == 'DEBORST')",
-#                        fr="Nombre d'iterations maximal pour la boucle pour les contraintes planes",
-           ITER_MAXI_DEBORST  =SIMP(statut='f',typ='I',defaut= 1),
-#                                ),
-      regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
-           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-           RESI_INTE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
-           ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
-           ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
-           RESO_INTE       =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
-                                 into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
-           TYPE_MATR_TANG  =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")),
-           b_perturb      = BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ",
-                        fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation",
-                 VALE_PERT_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-5),
-                                ),
-           b_tangsec      = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ",
-                        fr="Modification evolutive de la matrice tangente/secante",
-                 SEUIL        =SIMP(statut='f',typ='R',defaut= 3. ),
-                 AMPLITUDE    =SIMP(statut='f',typ='R',defaut= 1.5 ),
-                 TAUX_RETOUR  =SIMP(statut='f',typ='R',defaut= 0.05 ),
-                                ),
-           PARM_THETA      =SIMP(statut='f',typ='R',defaut= 1. ),
-         ) ;
-#& MODIF COMMUN  DATE 06/05/2008   AUTEUR CNGUYEN C.NGUYEN 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-def C_CONTACT() : return FACT(statut='f',max='**',
-           fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement",
-
-
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
-                                 into  =("VERIF","CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE","GCP","XFEM") ),
-#
-# OPTIONS D'APPARIEMENT
-#
-
-           APPARIEMENT     =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
-                                 into  =("NODAL","MAIT_ESCL")),
-
-           LISSAGE         =SIMP(statut='f',typ='TXM',defaut="NON",
-                                 into  =("OUI","NON")),          
-                             
-           NORMALE         =SIMP(statut='f',typ='TXM',defaut="MAIT",
-                                 into  =("MAIT","MAIT_ESCL","ESCL"),),
-                                 
-           VECT_MAIT       =SIMP(statut='f',typ='TXM',defaut="AUTO",
-                                 into  =("AUTO","FIXE","VECT_Y")),                      
-
-           b_nmait_fixe     =BLOC(condition = "VECT_MAIT == 'FIXE'",
-             MAIT_FIXE     =SIMP(statut='f',typ='R',min=3,max=3),
-           ),
-
-           b_nmait_vecty    =BLOC(condition = "VECT_MAIT == 'VECT_Y'",
-             MAIT_VECT_Y   =SIMP(statut='f',typ='R',min=3,max=3),
-           ),
-
-           VECT_ESCL       =SIMP(statut='f',typ='TXM',defaut="AUTO",
-                                 into  =("AUTO","FIXE","VECT_Y")),                      
-
-           b_nescl_fixe     =BLOC(condition = "VECT_ESCL == 'FIXE'",
-             ESCL_FIXE     =SIMP(statut='f',typ='R',min=3,max=3),
-           ),
-
-           b_nescl_vecty    =BLOC(condition = "VECT_ESCL == 'VECT_Y'",
-             ESCL_VECT_Y   =SIMP(statut='f',typ='R',min=3,max=3),
-           ),
-
-
-           TYPE_APPA       =SIMP(statut='f',typ='TXM',defaut="PROCHE",
-                                 into  =("PROCHE","FIXE")),  
-                                 
-           b_appa_fixe     =BLOC(condition = "TYPE_APPA == 'FIXE'",
-             DIRE_APPA     =SIMP(statut='f',typ='R',min=3,max=3),
-           ),
-           
-           b_dist_struct   =BLOC(condition = "METHODE != 'CONTINUE' and METHODE != 'XFEM' ",
-             DIST_POUTRE     =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
-             DIST_COQUE      =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
-             b_cara         =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'",
-               CARA_ELEM       =SIMP(statut='o',typ=(cara_elem) ),
-             ),
-           ),
-           
-           DIST_MAIT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-           DIST_ESCL       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-
-
-           TOLE_APPA       =SIMP(statut='f',typ='R'  ,defaut=-1.0), 
-           TOLE_PROJ_EXT   =SIMP(statut='f',typ='R'  ,defaut=0.50),  
-                
-                      
-           b_xfem         =BLOC(condition = "METHODE == 'XFEM' ",
-             FISS_MAIT      = SIMP(statut='o',typ=fiss_xfem,max=1),
-             FISS_ESCL      = SIMP(statut='f',typ=fiss_xfem,max=1),
-             SIGN_MAIT      = SIMP(statut='f',typ='TXM',into=("+","-",) ),
-             SIGN_ESCL      = SIMP(statut='f',typ='TXM',into=("+","-",) ),
-             INTEGRATION    = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG2","FPG3","FPG4","FPG6","FPG7","NOEUD",) ),
-             COEF_REGU_CONT = SIMP(statut='f',typ='R',defaut=100.E+0),
-             ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut=30),
-             ITER_GEOM_MAXI  =SIMP(statut='f',typ='I',defaut=0),
-
-             CONTACT_INIT   = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
-             ALGO_LAGR      = SIMP(statut='f',typ='TXM',defaut="VERSION1",into=("NON","VERSION1","VERSION2" , ) ),
-             COEF_ECHELLE   = SIMP(statut='f',typ='R',defaut=1.E+6),
-             FROTTEMENT     = SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
-             GLISSIERE      = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-             b_frotxfem    =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
-               COULOMB        = SIMP(statut='o',typ='R',),
-               ITER_FROT_MAXI = SIMP(statut='f',typ='I',defaut=2),
-               COEF_REGU_FROT = SIMP(statut='f',typ='R',defaut=100.E+0),
-               SEUIL_INIT     = SIMP(statut='f',typ='R',defaut=0.E+0),
-               ),
-           ),
-
-           b_notxfem         =BLOC(condition = "METHODE != 'XFEM' ",
-                                   regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
-             GROUP_MA_MAIT   =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
-             MAILLE_MAIT     =SIMP(statut='f',typ=ma   ,validators=NoRepeat(),max='**'),
-             GROUP_MA_ESCL   =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
-             MAILLE_ESCL     =SIMP(statut='f',typ=ma   ,validators=NoRepeat(),max='**'),
-           ),
-
-
-
-           b_verif         =BLOC(condition = "METHODE == 'VERIF' ",
-                                 fr="Paramètres de la méthode sans calcul de contact",
-                STOP_INTERP     =SIMP(statut='f',typ='TXM',defaut="NON",
-                                      into=("OUI","NON")),
-                TOLE_INTERP     =SIMP(statut='f',typ='R',defaut = 0.),
-
-                GROUP_MA_FOND   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           ),
-
-           b_active        =BLOC(condition = "METHODE == 'CONTRAINTE' ",
-                                 fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
-                GLISSIERE       =SIMP(statut='f',typ='TXM',defaut="NON",
-                                      into=("OUI","NON")),
-                b_glissiere     =BLOC(condition = "GLISSIERE == 'OUI' ",
-                      ALARME_JEU  =SIMP(statut='f',typ='R',defaut=0.),
-                                 ),
-
-                STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",
-                                      into=("OUI","NON")),
-                NB_RESOL        =SIMP(statut='f',typ='I', defaut=10 ),
-                REAC_GEOM       =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
-                        into=("AUTOMATIQUE","CONTROLE","SANS")),
-
-                b_reac_geom     =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
-                                 fr="Paramètre de la réactualisation géométrique",
-                      NB_REAC_GEOM   =SIMP(statut='o',typ='I'),
-                                 ),
-
-                SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
-
-           ),
-           b_lagrangien    =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
-                                 fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)",
-                FROTTEMENT      =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
-                STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",
-                                      into=("OUI","NON")),
-                NB_RESOL        =SIMP(statut='f',typ='I', defaut=10 ),
-                ITER_MULT_MAXI  =SIMP(statut='f',typ='I'  ,defaut=4),
-
-                REAC_GEOM       =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
-                                      into=("AUTOMATIQUE","CONTROLE","SANS")),
-
-                b_reac_geom     =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
-                      NB_REAC_GEOM   =SIMP(statut='o',typ='I'),
-
-                                 ),
-
-
-                SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-
-                b_frottement    =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
-                     COULOMB         =SIMP(statut='o',typ='R',),
-                     COEF_MATR_FROT  =SIMP(statut='f',typ='R',defaut=0.E+0),
-                     ),),
-
-           b_penalisation       =BLOC(condition = "METHODE == 'PENALISATION' ",
-                                      fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)",
-                E_N             =SIMP(statut='f',typ='R'),
-                FROTTEMENT      =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
-                STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",
-                                      into=("OUI","NON")),
-                NB_RESOL        =SIMP(statut='f',typ='I', defaut=10 ),
-                ITER_MULT_MAXI  =SIMP(statut='f',typ='I',defaut=4),
-
-                REAC_GEOM       =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
-                                      into=("AUTOMATIQUE","CONTROLE","SANS")),
-
-                b_reac_geom     =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
-                      NB_REAC_GEOM   =SIMP(statut='o',typ='I'),
-                                 ),
-
-                SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-                
-
-
-                b_frottement    =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
-                     COULOMB         =SIMP(statut='o',typ='R',),
-                     E_T             =SIMP(statut='f',typ='R',
-                                           fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"),
-                     COEF_MATR_FROT  =SIMP(statut='f',typ='R',defaut=0.E+0),
-                     ),),
-
-           b_continue      =BLOC(condition = "METHODE == 'CONTINUE' ",
-                                 fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
-#                regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),),
-
-# -------------------------------- CHOIX DE LA FORMULATION DE LA METHODE CONTINUE
-                ALGO_CONT   =SIMP(statut='f',typ='TXM',defaut="LAGRANGIEN",into=("LAGRANGIEN","AUGMENTE","STABILISE"),),
-                b_CONT_LAGR =BLOC(condition = "ALGO_CONT == 'LAGRANGIEN' ",fr="Parametres de la formulation Lagrangienne",
-                                  COEF_REGU_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-                b_CONT_STAB =BLOC(condition = "ALGO_CONT == 'STABILISE' ",fr="Parametres du Lagrangien stabilisé",
-                                  COEF_REGU_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                  COEF_STAB_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-                b_CONT_AUGM =BLOC(condition = "ALGO_CONT == 'AUGMENTE' ",fr="Parametres du Lagrangien augmenté",
-                                  COEF_REGU_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                  COEF_STAB_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                  COEF_PENA_CONT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-# --------------------------------
-                GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),
-                b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
-                                  ALARME_JEU  =SIMP(statut='f',typ='R',defaut=0.),),
-# --------------------------------
-                COMPLIANCE      =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
-                b_compliance    =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance",
-                                      ASPERITE =SIMP(statut='o',typ='R',),
-                                      E_N      =SIMP(statut='o',typ='R',),
-                                      E_V      =SIMP(statut='f',typ='R',defaut=0.E+0),),
-# --------------------------------
-                FOND_FISSURE    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
-                b_FOND_FISSURE  =BLOC(condition = "FOND_FISSURE == 'OUI' ",fr="TRAITEMENT EN FOND DE FISSURE",
-                                      regles=(UN_PARMI('NOEUD_FOND','GROUP_NO_FOND','MAILLE_FOND','GROUP_MA_FOND'),),
-                                      NOEUD_FOND    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                                      GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                                      MAILLE_FOND   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-                                      GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),),
-# --------------------------------
-                RACCORD_LINE_QUAD=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
-                b_RACCORD_SURF   =BLOC(condition = "RACCORD_LINE_QUAD == 'OUI' ",fr="TRAITEMENT DU RACCORD SURFACIQUE",
-                                       regles=(UN_PARMI('NOEUD_RACC','GROUP_NO_RACC'),),
-                                       NOEUD_RACC    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                                       GROUP_NO_RACC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),),
-# -------------------------------- MOTS-CLEF CONTACT
-                INTEGRATION      =SIMP(statut='f',typ='TXM',defaut="NOEUD",
-                                       into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
-                                             "NCOTES","NCOTES1","NCOTES2"),),
-                FORMULATION      =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE"),),
-
-                ITER_GEOM_MAXI   =SIMP(statut='f',typ='I',defaut=2),
-                ITER_CONT_MAXI   =SIMP(statut='f',typ='I',defaut=30),
-                CONTACT_INIT     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),),
-# -------------------------------- détection automatique et exclusion des noeuds impliqués dans le pivot nul
-                EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),),
-# -------------------------------- exclusion manuelle des noeuds impliqués dans le pivot nul;
-#                                  prévaut sur la fonctionnalité précédente sans pour autant interférer avec elle
-                SANS_NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                regles        =(EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
-# -------------------------------- MOTS-CLEF FROTTEMENT
-                FROTTEMENT      =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
-                b_frottement    =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
-                     ALGO_FROT       =SIMP(statut='f',typ='TXM',defaut="LAGRANGIEN",
-                                      into=("LAGRANGIEN","AUGMENTE","STABILISE") ),
-                     b_FROT_LAGR =BLOC(condition = "ALGO_FROT == 'LAGRANGIEN' ",fr="Parametres de la formulation Lagrangienne",
-                                       COEF_REGU_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-                     b_FROT_STAB =BLOC(condition = "ALGO_FROT == 'STABILISE' ",fr="Parametres du Lagrangien stabilisé",
-                                       COEF_REGU_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                       COEF_STAB_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-                     b_FROT_AUGM =BLOC(condition = "ALGO_FROT == 'AUGMENTE' ",fr="Parametres du Lagrangien augmenté",
-                                       COEF_REGU_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                       COEF_STAB_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),
-                                       COEF_PENA_FROT  =SIMP(statut='f',typ='R',defaut=100.E+0),),
-                     COULOMB            =SIMP(statut='o',typ='R',),
-                     SANS_NOEUD_FR    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                     SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                     regles             =(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),),
-                     b_sans_group_no_frot =BLOC(condition = "SANS_GROUP_NO_FR != None or SANS_NO_FR != None",
-                                                fr="Direction(s) de frottement à exclure",
-                                                EXCL_FROT_1 =SIMP(statut='f',typ='R',min=3,max=3),
-                                                EXCL_FROT_2 =SIMP(statut='f',typ='R',min=3,max=3),),
-                     ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
-                     SEUIL_INIT     =SIMP(statut='f',typ='R',defaut=0.E+0),
-                     USURE          =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","ARCHARD",),),
-                     b_usure        =BLOC(condition = "USURE == 'ARCHARD' ",fr="Parametres de la loi d'usure d'Archard",
-                                          K =SIMP(statut='o',typ='R',),
-                                          H =SIMP(statut='o',typ='R',),),),),
-
-           b_gcp        =BLOC(condition = "METHODE == 'GCP' ",
-                                 fr="Paramètres de la méthode du gradient conjugué projeté (contact uniquement)",
-                RESI_ABSO       =SIMP(statut='o',typ='R',
-                                      fr="Critère de convergence (niveau d'interpénétration autorisé)"),
-                REAC_ITER       =SIMP(statut='f',typ='I',defaut=3, fr="Fréquence de réinitialisation de la conjugaison"),
-                ITER_GCP_MAXI   =SIMP(statut='f',typ='I',defaut=0, fr="Nombre d'itérations maximal pour le GCP"),
-                STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",
-                                      into=("OUI","NON")),
-                REAC_GEOM       =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
-                                      into=("AUTOMATIQUE","CONTROLE","SANS")),
-
-                b_reac_geom     =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
-                      NB_REAC_GEOM   =SIMP(statut='o',typ='I'),
+                                 fr="SD issue de DEFI_COMPOR",
+                   COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
+           b_zmat      = BLOC(condition = "RELATION == 'ZMAT' ",
+                                 fr="Comportement de la bibliotheque Zmat",
+                   NB_VARI =SIMP(statut='o',typ='I',max=1),
+                   UNITE =SIMP(statut='o',typ='I',max=1),),
 
+# KITs
+           b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ",
+                            fr="relations de couplage fluage-plasticite",
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',min=2,max=2,validators=NoRepeat(),
+                                 into=(
+                                       "VMIS_CINE_LINE",
+                                       "VMIS_ISOT_TRAC",
+                                       "VMIS_ISOT_LINE",
+                                       "VMIS_ISOT_CINE",
+                                       "VMIS_ISOT_PUIS",
+                                       "GLRC_DM",
+                                       "GRANGER_FP",
+                                       "GRANGER_FP_INDT",
+                                       "GRANGER_FP_V",
+                                       "BETON_UMLV_FP",
+                                       "ROUSS_PR",
+                                       "NADAI_B",
+                                       "BETON_DOUBLE_DP",
+                                       "ENDO_ISOT_BETON",
+                                       "MAZARS"
+                                       ),),
+                   ),
+           b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_HM','KIT_THHM','KIT_THH','KIT_THM','KIT_THV']",
+                            fr="lois de comportements thermo-hydro-mecaniques",
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',max=9,validators=NoRepeat(),
+                                 into=(
+# MECA
+                                       "ELAS",
+                                       "CJS",
+                                       "HUJEUX",
+                                       "CAM_CLAY",
+                                       "BARCELONE",
+                                       "LAIGLE",
+                                       "LETK",
+                                       "DRUCK_PRAGER",
+                                       "DRUCK_PRAG_N_A",
+                                       "ELAS_GONF",
+                                       "HOEK_BROWN_EFF",
+                                       "HOEK_BROWN_TOT",
+                                       "MAZARS",
+                                       "ENDO_ISOT_BETON",
+# THMC
+                                       "GAZ",
+                                       "LIQU_SATU",
+                                       "LIQU_GAZ_ATM",
+                                       "LIQU_VAPE_GAZ",
+                                       "LIQU_AD_GAZ_VAPE",
+                                       "LIQU_VAPE",
+                                       "LIQU_GAZ",
+# HYDR
+                                       "HYDR_UTIL",
+                                       "HYDR_VGM",
+                                       "HYDR",
+                                       "HYDR_ENDO",
+                                       ),),
+                                       ),
+           b_kit_meta = BLOC(condition = "RELATION in ('META_LEMA_ANI','META_P_CL_PT_RE','META_P_CL_PT','META_P_CL_RE','META_P_CL',\
+       'META_P_IL_PT_RE','META_P_IL_PT','META_P_IL_RE','META_P_IL','META_P_INL_PT_RE','META_P_INL_PT','META_P_INL_RE','META_P_INL',\
+           'META_V_CL_PT_RE','META_V_CL_PT','META_V_CL_RE','META_V_CL','META_V_IL_PT_RE','META_V_IL_PT','META_V_IL_RE','META_V_IL',\
+           'META_V_INL_PT_RE','META_V_INL_PT','META_V_INL_RE','META_V_INL')",
+                            fr="nombre de phases metallurgiques",
+               RELATION_KIT    =SIMP(statut='o',typ='TXM',max=1,validators=NoRepeat(),
+                                 into=("ACIER","ZIRC"),),
                                  ),
-                PRE_COND         =SIMP(statut='f',typ='TXM',defaut="SANS",
-                      into=("DIRICHLET","SANS"),fr="Choix d'un préconditionneur (accélère la convergence)"),
-                ITER_PRE_MAXI   =SIMP(statut='f',typ='I',defaut=0, fr="Nombre d'itérations maximal pour le préconditionneur"),
-                COEF_RESI       =SIMP(statut='f',typ='R',defaut = 1.,
-                                        fr="Critère_Convergence_Préconditionneur = COEF_RESI*Critère_Convergence_GCP",),
-                RECH_LINEAIRE=SIMP(statut='f',typ='TXM',defaut="ADMISSIBLE",into=("ADMISSIBLE","NON_ADMISSIBLE"),
-                                        fr="Autorise-t-on de sortir du domaine admissible lors de la recherche linéaire",),
-                SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-                SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-           ),
-         );
 
+           DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT",
+                             into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN","COROTATIONNEL",
+                                   "REAC_GEOM","EULER_ALMANSI")),
+
+           ALGO_C_PLAN     =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
+           RESI_DEBORST  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+           ALGO_1D         =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
+           ITER_MAXI_DEBORST  =SIMP(statut='f',typ='I',defaut= 1),
+
+           RESI_INTE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+           ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
+           b_redec_local      = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GREEN')",
+                        fr="Nombre de redécoupages internes du pas de temps",
+               ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
+                   ),
+           RESO_INTE       =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+                                 into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+           TYPE_MATR_TANG  =SIMP(statut='f',typ='TXM',into=("PERTURBATION","VERIFICATION","TANGENTE_SECANTE")),
+           b_perturb      = BLOC(condition = " (TYPE_MATR_TANG != None) and (TYPE_MATR_TANG != 'TANGENTE_SECANTE') ",
+                        fr="Calcul de la matrice tangente par perturbation, valeur de la perturbation",
+                 VALE_PERT_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-5),
+                                ),
+           b_tangsec      = BLOC(condition = " TYPE_MATR_TANG == 'TANGENTE_SECANTE' ",
+                        fr="Modification evolutive de la matrice tangente/secante",
+                 SEUIL        =SIMP(statut='f',typ='R',defaut= 3. ),
+                 AMPLITUDE    =SIMP(statut='f',typ='R',defaut= 1.5 ),
+                 TAUX_RETOUR  =SIMP(statut='f',typ='R',defaut= 0.05 ),
+                                ),
+           PARM_THETA      =SIMP(statut='f',typ='R',defaut= 1. ),
 
+           regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
 
-#& MODIF COMMUN  DATE 22/04/2008   AUTEUR ABBAS M.ABBAS 
+         ) ;
+#& MODIF COMMUN  DATE 21/10/2008   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -932,8 +498,8 @@ def C_CONTACT() : return FACT(statut='f',max='**',
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
-
-def C_CONTACT_F() : return FACT(statut='f',max='**',
+# RESPONSABLE DESOZA T.DESOZA
+def C_CONTACT() : return FACT(statut='f',max='**',
            fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement",
 
 
@@ -981,17 +547,20 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
            b_appa_fixe     =BLOC(condition = "TYPE_APPA == 'FIXE'",
              DIRE_APPA     =SIMP(statut='f',typ='R',min=3,max=3),
            ),
-                                                                                         
-           DIST_POUTRE     =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
-           DIST_COQUE      =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
+           
+           b_dist_struct   =BLOC(condition = "METHODE != 'CONTINUE' and METHODE != 'XFEM' ",
+             DIST_POUTRE     =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
+             DIST_COQUE      =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
+             b_cara         =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'",
+               CARA_ELEM       =SIMP(statut='o',typ=(cara_elem) ),
+             ),
+           ),
+           
            DIST_MAIT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-           DIST_ESCL       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),                     
+           DIST_ESCL       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
 
-           b_cara         =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'",
-             CARA_ELEM       =SIMP(statut='o',typ=(cara_elem) ),
-           ),
 
-           TOLE_APPA       =SIMP(statut='f',typ='R'  ,defaut=-1.0),
+           TOLE_APPA       =SIMP(statut='f',typ='R'  ,defaut=-1.0), 
            TOLE_PROJ_EXT   =SIMP(statut='f',typ='R'  ,defaut=0.50),  
                 
                       
@@ -1000,7 +569,8 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
              FISS_ESCL      = SIMP(statut='f',typ=fiss_xfem,max=1),
              SIGN_MAIT      = SIMP(statut='f',typ='TXM',into=("+","-",) ),
              SIGN_ESCL      = SIMP(statut='f',typ='TXM',into=("+","-",) ),
-             INTEGRATION    = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG4","FPG6","FPG7",) ),
+             INTEGRATION    = SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG2","FPG3","FPG4","FPG6",
+                                               "FPG7","NOEUD","SIMPSON","SIMPSON1","NCOTES","NCOTES1","NCOTES2") ),
              COEF_REGU_CONT = SIMP(statut='f',typ='R',defaut=100.E+0),
              ITER_CONT_MAXI = SIMP(statut='f',typ='I',defaut=30),
              ITER_GEOM_MAXI  =SIMP(statut='f',typ='I',defaut=0),
@@ -1058,7 +628,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
 
                 SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                 SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
 
            ),
            b_lagrangien    =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
@@ -1080,7 +649,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
 
                 SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                 SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
 
                 b_frottement    =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
                      COULOMB         =SIMP(statut='o',typ='R',),
@@ -1105,7 +673,6 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
 
                 SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                 SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
                 
 
 
@@ -1224,13 +791,12 @@ def C_CONTACT_F() : return FACT(statut='f',max='**',
                                         fr="Autorise-t-on de sortir du domaine admissible lors de la recherche linéaire",),
                 SANS_NOEUD      =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                 SANS_GROUP_NO   =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
            ),
          );
 
 
 
-#& MODIF COMMUN  DATE 26/06/2007   AUTEUR REZETTE C.REZETTE 
+#& MODIF COMMUN  DATE 14/10/2008   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -1386,6 +952,7 @@ def C_NOM_CHAM_INTO() : return  ("ACCE",    #COMMUN#
                         "SIEF_ELNO_ELGA",
                         "SIEF_NOEU",
                         "SIEF_NOEU_ELGA",
+                        "SIEF_SENO_SEGA",
                         "SIEQ_ELNO_TUYO",
                         "SIGM_ELNO_CART",
                         "SIGM_ELNO_COQU",
@@ -1621,7 +1188,7 @@ def C_TYPE_CHAM_INTO() : #COMMUN#
              l.append(typ+"_"+gd)
    return tuple(l)
 
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 23/10/2008   AUTEUR TORKHANI M.TORKHANI 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -1775,6 +1342,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
          DISCRET         =FACT(statut='f',max='**',
            REPERE          =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
            AMOR_HYST       =SIMP(statut='f',typ='R' ),
+           SYME            =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            CARA            =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
           fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
                                  into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
@@ -1782,7 +1350,11 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                        "M_T_D_N","M_TR_D_N","M_T_N",
                                        "M_T_L",  "M_TR_N",  "M_TR_L",
                                        "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
-                                       "A_T_N",  "A_T_L",   "A_TR_N", "A_TR_L") ),
+                                       "A_T_N",  "A_T_L",   "A_TR_N", "A_TR_L",
+                                       "K_T_N_NS",  "K_T_L_NS",  "K_TR_N_NS",  "K_TR_L_NS",
+                                       "M_T_N_NS",
+                                       "M_T_L_NS",  "M_TR_N_NS",  "M_TR_L_NS",
+                                       "A_T_N_NS",  "A_T_L_NS",  "A_TR_N_NS",  "A_TR_L_NS") ),
 
 # affection des caractéristiques de RIGIDITE/AMORTISSEMENT
               b_K_T_D_N  =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
@@ -1849,6 +1421,38 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                                VALE =SIMP(statut='f',typ='R',min=78,max=78),
                                VALE_F =SIMP(statut='f',typ=(para_sensi,),min=78 ,max=78 ),),
+              b_K_T_N_NS    =BLOC(condition = "(CARA=='K_T_N_NS')or(CARA=='A_T_N_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),),
+              b_K_T_L_NS    =BLOC(condition = "(CARA=='K_T_L_NS')or(CARA=='A_T_L_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
+              b_K_TR_N_NS   =BLOC(condition = "(CARA=='K_TR_N_NS')or(CARA=='A_TR_N_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
+              b_K_TR_L_NS   =BLOC(condition = "(CARA=='K_TR_L_NS')or(CARA=='A_TR_L_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=144,max=144),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=144 ,max=144 ),),
 
 # affection des caractéristiques de MASSE
               b_M_T_D_N  =BLOC(condition = "CARA=='M_T_D_N'",
@@ -1907,12 +1511,49 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                                VALE =SIMP(statut='f',typ='R',min=78,max=78),
                                VALE_F =SIMP(statut='f',typ=(para_sensi,),min=78 ,max=78 ),),
+              b_M_T_N_NS    =BLOC(condition = "CARA=='M_T_N_NS'",
+          fr="NOEUD: 9 valeurs de masse (pleine)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),),
+              b_M_T_L_NS    =BLOC(condition = "CARA=='M_T_L_NS'",
+          fr="SEGMENT: 36 valeurs de masse (pleine)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
+              b_M_TR_N_NS   =BLOC(condition = "CARA=='M_TR_N_NS'",
+          fr="NOEUD: 36 valeurs de masse (pleine)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
+              b_M_TR_L_NS   =BLOC(condition = "CARA=='M_TR_L_NS'",
+          fr="SEGMENT: 144 valeurs de masse (pleine)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=144,max=144),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=144 ,max=144 ),),
          ),
 
 #============================================================================
          DISCRET_2D      =FACT(statut='f',max='**',
            REPERE          =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
            AMOR_HYST       =SIMP(statut='f',typ='R' ),
+           SYME            =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            CARA            =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
           fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
                                  into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
@@ -1920,7 +1561,10 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                        "M_T_D_N","M_T_N",  "M_TR_D_N",
                                        "M_T_L",  "M_TR_N",  "M_TR_L",
                                        "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
-                                       "A_T_N",  "A_T_L",   "A_TR_N", "A_TR_L") ),
+                                       "A_T_N",  "A_T_L",   "A_TR_N", "A_TR_L",
+                                       "K_T_N_NS",  "K_T_L_NS",  "K_TR_N_NS",  "K_TR_L_NS",
+                                       "M_T_N_NS",  "M_T_L_NS",  "M_TR_N_NS",  "M_TR_L_NS",
+                                       "A_T_N_NS",  "A_T_L_NS",   "A_TR_N_NS", "A_TR_L_NS") ),
 
 # affection des caractéristiques de RIGIDITE/AMORTISSEMENT
               b_K_T_D_N  =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
@@ -1987,6 +1631,39 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                                VALE =SIMP(statut='f',typ='R',min=21,max=21),
                                VALE_F =SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),),
+              
+              b_K_T_N_NS    =BLOC(condition = "(CARA=='K_T_N_NS')or(CARA=='A_T_N_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=4 ,max=4 ),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),),
+              b_K_T_L_NS    =BLOC(condition = "(CARA=='K_T_L_NS')or(CARA=='A_T_L_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=16,max=16),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=16 ,max=16 ),),
+              b_K_TR_N_NS   =BLOC(condition = "(CARA=='K_TR_N_NS')or(CARA=='A_TR_N_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=9 ,max=9),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),),
+              b_K_TR_L_NS   =BLOC(condition = "(CARA=='K_TR_L_NS')or(CARA=='A_TR_L_NS')",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
 
 # affection des caractéristiques de MASSE
               b_M_T_D_N  =BLOC(condition = "CARA=='M_T_D_N'",
@@ -2045,6 +1722,42 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
                                GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                                VALE =SIMP(statut='f',typ='R',min=21,max=21),
                                VALE_F =SIMP(statut='f',typ=(para_sensi,),min=21 ,max=21 ),),
+              b_M_T_N_NS    =BLOC(condition = "CARA=='M_T_N_NS'",
+          fr="NOEUD: 4 valeurs de masse (triangulaire supérieure par colonne)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=4 ,max=4 ),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=4 ,max=4 ),),
+              b_M_T_L_NS    =BLOC(condition = "CARA=='M_T_L_NS'",
+          fr="SEGMENT: 16 valeurs de masse (triangulaire supérieure par colonne)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=16,max=16),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=16 ,max=16 ),),
+              b_M_TR_N_NS   =BLOC(condition = "CARA=='M_TR_N_NS'",
+          fr="NOEUD: 9 valeurs de masse (triangulaire supérieure par colonne)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               NOEUD    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=9 ,max=9 ),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=9 ,max=9 ),),
+              b_M_TR_L_NS   =BLOC(condition = "CARA=='M_TR_L_NS'",
+          fr="SEGMENT: 36 valeurs de masse (triangulaire supérieure par colonne)",
+                               regles=(UN_PARMI('MAILLE','GROUP_MA'),
+                                       AU_MOINS_UN('VALE','VALE_F',),PRESENT_ABSENT('VALE','VALE_F',),),
+                               MAILLE   =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                               GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                               VALE =SIMP(statut='f',typ='R',min=36,max=36),
+                               VALE_F =SIMP(statut='f',typ=(para_sensi,),min=36 ,max=36 ),),
          ),
 
 #============================================================================
@@ -2160,6 +1873,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
             GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
             NOEUD_CENTRE    =SIMP(statut='f',typ=no),
             COOR_CENTRE     =SIMP(statut='f',typ='R',min=2,max=3),
+            UNITE_EUROPLEXUS=SIMP(statut='f',typ='I'),
          ),
 
 #============================================================================
@@ -2186,23 +1900,23 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
 
 
 ) ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE None
 AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op=  68,sd_prod=char_acou,
@@ -2212,6 +1926,9 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op=  68,sd_prod=char_acou,
          regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
          VERI_DDL        =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les pressions imposées",
+                               into=('DUALISATION',),defaut='DUALISATION',),
+                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
          PRES_IMPO       =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -2474,7 +2191,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -2514,6 +2231,9 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
                                typ=evol_char ),
 
          PESANTEUR       =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4),
+         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
+                               into=('DUALISATION',),defaut='DUALISATION',),
+                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
          ROTATION        =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4),
          b_rotation      =BLOC ( condition = "ROTATION != None",
            CENTRE          =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),),
@@ -2892,7 +2612,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          CONTACT         = C_CONTACT(),
 #
 # FORCES
-#         
+#
          FORCE_NODALE    =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**',
            regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
                    AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
@@ -3287,23 +3007,23 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
 )  ;
 
 
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE DESROCHES X.DESROCHES
 AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
@@ -3313,6 +3033,9 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
          regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),),
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
          VERI_DDL        =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
+                               into=('DUALISATION',),defaut='DUALISATION',),
+                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
          DDL_IMPO        =FACT(statut='f',max='**',
            fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
@@ -3322,7 +3045,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
            NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-           LIAISON         =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)), 
+           LIAISON         =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
            DX              =SIMP(statut='f',typ='C' ),
            DY              =SIMP(statut='f',typ='C' ),
            DZ              =SIMP(statut='f',typ='C' ),
@@ -3366,7 +3089,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op=   7,sd_prod=char_meca,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR CNGUYEN C.NGUYEN 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -3398,6 +3121,9 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
          VERI_DDL        =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          VERI_NORM       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          MODELE          =SIMP(statut='o',typ=modele_sdaster),
+         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les déplacements imposés",
+                               into=('DUALISATION',),defaut='DUALISATION',),
+                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
 
          DDL_IMPO        =FACT(statut='f',max='**',
            fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies"
@@ -3884,7 +3610,7 @@ AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -3911,6 +3637,9 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
                           'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP',
                           'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),),
          MODELE          =SIMP(statut='o',typ=(modele_sdaster) ),
+         METHODE         =SIMP(statut='c',typ='TXM',fr="Stratégie de résolution pour les températures imposées",
+                               into=('DUALISATION',),defaut='DUALISATION',),
+                               # METHODE='ELIMINATION' est traité dans le fortran mais dangereux actuellement
 
          TEMP_IMPO       =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
@@ -4089,23 +3818,23 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
 
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE DESROCHES X.DESROCHES
 AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
@@ -4120,20 +3849,18 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
 
          TEMP_IMPO       =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
-                   AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF','EVOL_THER'),
-                   PRESENT_ABSENT('EVOL_THER','TEMP','TEMP_INF','TEMP_SUP'),),
+                   AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
            NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-           EVOL_THER       =SIMP(statut='f',typ=(evol_ther) ),
            DDL             =SIMP(statut='f',typ='TXM',into=("TEMP",) ),
            TEMP            =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
            TEMP_INF        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
            TEMP_SUP        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
-         
+
          FLUX_REP        =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
@@ -4156,8 +3883,8 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
            FLUN            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         ), 
-         
+         ),
+
 
          RAYONNEMENT     =FACT(statut='f',max='**',
            fr="Attention, exprimer les températures en Celsius si rayonnement",
@@ -4170,7 +3897,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
            EPSILON         =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
            TEMP_EXT        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
-         
+
 
 
          ECHANGE         =FACT(statut='f',max='**',
@@ -4190,7 +3917,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
            COEF_H_SUP      =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
            TEMP_EXT_SUP    =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
-         
+
 
          SOURCE          =FACT(statut='f',max='**',
            regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
@@ -4199,7 +3926,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
            MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
            SOUR            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
-         
+
          GRAD_TEMP_INIT  =FACT(statut='f',max='**',
            regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
                    PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
@@ -4211,7 +3938,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
            FLUX_Y          =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
            FLUX_Z          =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
          ),
-         
+
          ECHANGE_PAROI   =FACT(statut='f',max='**',
            regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
                         UN_PARMI('GROUP_MA_2','MAILLE_2'),),
@@ -4285,7 +4012,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=34,sd_prod=char_ther,
 
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 22/07/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -4456,15 +4183,15 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
          VARC_M_ZIRC  =FACT(statut='d',
            NOM_VARC        =SIMP(statut='c',typ='TXM',defaut="M_ZIRC"),
            GRANDEUR        =SIMP(statut='c',typ='TXM',defaut="VARI_R"),
-           CMP_GD          =SIMP(statut='c',typ='TXM',max=3,min=3,defaut=("V1","V2","V3")),
-           CMP_VARC        =SIMP(statut='c',typ='TXM',max=3,min=3,defaut=("ALPHPUR","ALPHBETA","TZIRC",)),
+           CMP_GD          =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("V1","V2","V3","V4")),
+           CMP_VARC        =SIMP(statut='c',typ='TXM',max=4,min=4,defaut=("ALPHPUR","ALPHBETA","TZIRC","TEMPS")),
          ),
 
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )  ;
 
 
-#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 01/09/2008   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -4545,22 +4272,22 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "3D_GRAD_VARI",    # RESP. : MICHEL S.MICHEL
                                   "3D_XFEM_CONT",    # RESP. : GENIAUT S.GENIAUT
                                   "3D_JOINT",        # RESP. : LAVERNE J.LAVERNE
+                                  "3D_INTERFACE",    # RESP. : LAVERNE J.LAVERNE
                                   "AXIS",            # RESP. : LEFEBVRE J.P.LEFEBVRE
                                   "AXIS_FLUI_STRU",  # RESP. : GREFFET N.GREFFET
                                   "AXIS_FLUIDE",     # RESP. : GREFFET N.GREFFET
                                   "AXIS_FOURIER",    # RESP. : DESROCHES X.DESROCHES
                                   "AXIS_INCO",       # RESP. : MICHEL S.MICHEL
                                   "AXIS_INCO_GD",    # RESP. : MICHEL S.MICHEL
-                                  "AXIS_NS",         # RESP. : BADEL P.BADEL
                                   "AXIS_SI",         # RESP. : DESROCHES X.DESROCHES
                                   "AXIS_GRAD_VARI",  # RESP. : MICHEL S.MICHEL
                                   "AXIS_JOINT",      # RESP. : LAVERNE J.LAVERNE
+                                  "AXIS_INTERFACE",  # RESP. : LAVERNE J.LAVERNE
                                   "AXIS_ELDI",       # RESP. : LAVERNE J.LAVERNE
                                   "BARRE",           # RESP. : FLEJOU J.L.FLEJOU
                                   "2D_BARRE",        # RESP. : FLEJOU J.L.FLEJOU
                                   "C_PLAN",          # RESP. : LEFEBVRE J.P.LEFEBVRE
                                   "C_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT
-                                  "C_PLAN_NS",       # RESP. : BADEL P.BADEL
                                   "C_PLAN_SI",       # RESP. : DESROCHES X.DESROCHES
                                   "C_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL
                                   "CABLE",           # RESP. : FLEJOU J.L.FLEJOU
@@ -4573,8 +4300,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "D_PLAN_XFEM_CONT",# RESP. : GENIAUT S.GENIAUT
                                   "D_PLAN_GRAD_EPSI",# RESP. : MICHEL S.MICHEL
                                   "D_PLAN_GRAD_VARI",# RESP. : MICHEL S.MICHEL
-                                  "D_PLAN_NS",       # RESP. : BADEL P.BADEL
                                   "PLAN_JOINT",      # RESP. : LAVERNE J.LAVERNE
+                                  "PLAN_INTERFACE",  # RESP. : LAVERNE J.LAVERNE
                                   "PLAN_ELDI",       # RESP. : LAVERNE J.LAVERNE
                                   "D_PLAN_ABSO",     # RESP. : DEVESA G.DEVESA
                                   "D_PLAN_INCO",     # RESP. : MICHEL S.MICHEL
@@ -4710,6 +4437,9 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                                                        ), ),),
 
          ),
+
+         VERI_JACOBIEN  =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',
+                              fr ="Vérification de la forme des mailles (jacobiens tous de meme signe).",),
 ) ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -4812,7 +4542,7 @@ ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=asse_matr_gene_prod,
            OPTION          =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","RIGI_GENE_C","MASS_GENE","AMOR_GENE") ),
            ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 06/10/2008   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -4844,6 +4574,7 @@ ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
          MATR_ELEM       =SIMP(statut='o',
                                typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ),
          NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster),
+         SYME            =SIMP(statut='f',typ='TXM',into=("OUI",) ),         
          CHAR_CINE       =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
 )  ;
@@ -5099,7 +4830,7 @@ CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op=  92,sd_prod=calc_char_seisme_pr
          ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -5141,15 +4872,16 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
      NUME_MODE       =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
      NOEUD_CMP       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
      NOM_CAS         =SIMP(statut='f',typ='TXM' ),
-
      INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
      FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
      LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
      LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
-     PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
      CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+     b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+         PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6),),
+     b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+         PRECISION       =SIMP(statut='o',typ='R'),),
      LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
-
      TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
      GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
                            fr="le calcul ne sera effectué que sur ces mailles là"),
@@ -5231,8 +4963,11 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
 
                b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
                                (type(OPTION)==type(()) and  'SING_ELEM' in OPTION)",
-                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max= 1.,
-                                  fr="precision demandee pour calculer la carte de taille des elements"),),
+                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,
+                                  fr="precision demandee pour calculer la carte de taille des elements"),
+                    TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+                                                              "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",),
+                                   fr="choix de l'estimateur d'erreur"),),
 
                EXCIT           =FACT(statut='f',max='**',
                                      fr="Charges contenant les températures, les efforts répartis pour les poutres...",
@@ -5370,8 +5105,11 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_
 
                b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
                                (type(OPTION)==type(()) and  'SING_ELEM' in OPTION)",
-                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
-                                  fr="precision demandee pour calculer la carte de taille des elements" ),),
+                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,
+                                  fr="precision demandee pour calculer la carte de taille des elements" ),
+                    TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+                                                              "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",),
+                                   fr="choix de l'estimateur d'erreur"),),
 
                EXCIT           =FACT(statut='f',max='**',fr="charge contenant les temperatures",
                      CHARGE          =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
@@ -5425,8 +5163,11 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_
 
                b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
                                (type(OPTION)==type(()) and  'SING_ELEM' in OPTION)",
-                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
-                                  fr="precision demandee pour calculer la carte de taille des elements" ),),
+                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,
+                                  fr="precision demandee pour calculer la carte de taille des elements" ),
+                    TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+                                                              "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",),
+                                   fr="choix de l'estimateur d'erreur"),),
 
 
                b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')",
@@ -5502,98 +5243,446 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_
                     CHARGE          =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
                                  ),
 
-          b_crit         =BLOC( condition = "TYPE_OPTION=='CRIT'",
-               OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                           into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
-                                 "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
-                                 "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT",
-                                 "ENDO_ELGA","ENDO_ELNO_ELGA",
-                                 "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
-                                 ) ),
-                                 ),
+          b_crit         =BLOC( condition = "TYPE_OPTION=='CRIT'",
+               OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+                           into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
+                                 "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
+                                 "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT",
+                                 "ENDO_ELGA","ENDO_ELNO_ELGA",
+                                 "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
+                                 ) ),
+                                 ),
+
+          b_autres         =BLOC( condition = "TYPE_OPTION=='AUTRES'",
+                  OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+                           into=("VALE_NCOU_MAXI",) ),
+               b_maxi    =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
+                                (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
+                    NOM_CHAM  =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
+                    NOM_CMP   =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
+                                 ),
+
+          b_indi_erreur         =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'",
+               OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM",
+                           into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+                                 "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
+                                 "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
+                                 "SING_ELEM","SING_ELNO_ELEM",) ),
+
+               b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
+                                        (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
+                                        (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
+                                        (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
+                RESU_DUAL    =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")),
+
+               b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
+                               (type(OPTION)==type(()) and  'SING_ELEM' in OPTION)",
+                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,
+                                  fr="precision demandee pour calculer la carte de taille des elements" ),
+                    TYPE_ESTI=SIMP(statut='f',typ='TXM',into=("ERRE_ELEM_SIGM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+                                                              "QIRE_ELEM_SIGM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",),
+                                   fr="choix de l'estimateur d'erreur"),),
+
+               b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\
+                                            (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\
+                                            (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\
+                                            (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\
+                                            (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ",
+                    NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
+                                 into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ),
+                                 ),
+                                 ),
+                                 ),
+#          fin bloc evol_noli
+
+#           thermique : evol_ther, fourier_ther
+     b_ther          =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques",
+          OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+                           into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
+                                  "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META",
+                                  "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),),
+               EXCIT           =FACT(statut='f',max='**',
+                    regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+                    CHARGE          =SIMP(statut='o',typ=char_ther ),
+                    FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+                    FONC_MULT_C     =SIMP(statut='f',typ=fonction_c),
+                    COEF_MULT       =SIMP(statut='f',typ='R'),
+                    COEF_MULT_C     =SIMP(statut='f',typ='C'),
+                    PHAS_DEG        =SIMP(statut='f',typ='R'),
+                    PUIS_PULS       =SIMP(statut='f',typ='I'),
+                    TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),
+                                     ),
+                                 ),
+
+#    acoustique
+     b_acou          =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques",
+          OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+                           into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
+                                 "INTE_ELNO_ACTI","INTE_ELNO_REAC",
+                                 ),),
+          EXCIT           =FACT(statut='f',max='**',
+                regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+                CHARGE          =SIMP(statut='o',typ=char_acou ),
+                FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+                FONC_MULT_C     =SIMP(statut='f',typ=fonction_c),
+                COEF_MULT       =SIMP(statut='f',typ='R'),
+                COEF_MULT_C     =SIMP(statut='f',typ='C'),
+                PHAS_DEG        =SIMP(statut='f',typ='R'),
+                PUIS_PULS       =SIMP(statut='f',typ='I'),
+                TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
+                                 ),
+
+
+#    Choix du solveur (utilisé actuellement pour estimateur d'erreur ZZ1) :
+     SOLVEUR         =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires",
+     METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("LDLT","MUMPS","MULT_FRONT",) ),
+
+
+       b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+         RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+         NPREC           =SIMP(statut='f',typ='I',defaut=8),
+         STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+       ),
+
+       b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+         RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+         NPREC           =SIMP(statut='f',typ='I',defaut=8),
+         STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+       ),
+
+
+       b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+         TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+         PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+         RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+         ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+         PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+         RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
+         PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                               into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+         PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+         CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+         CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+         OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+         ),
+     ),
+
+
+
+     SENSIBILITE     =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+                           fr="Liste des paramètres de sensibilité.",
+                           ang="List of sensitivity parameters"),
+     INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+     TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# RESPONSABLE NISTOR I.NISTOR
+
+from Macro.calc_essai_ops import calc_essai_ops
+
+def calc_essai_prod(self,RESU_FLUDELA,RESU_IDENTIFICATION,RESU_TURBULENT, RESU_MODIFSTRU,**args):
+
+    if RESU_FLUDELA != None:
+        for res in RESU_FLUDELA:
+            self.type_sdprod(res['TABLE'],table_sdaster)
+    if RESU_IDENTIFICATION != None:
+        for res in RESU_IDENTIFICATION:
+            self.type_sdprod(res['TABLE'],table_fonction)
+    if RESU_TURBULENT != None:
+        for res in RESU_TURBULENT:
+            self.type_sdprod(res['FONCTION'],fonction_sdaster)
+
+
+    MTYPES = {
+        'MODELE'    : modele_sdaster,
+        'MODE_MECA' : mode_meca,
+        'NUME_DDL'  : nume_ddl_sdaster,
+        'MAILLAGE'  : maillage_sdaster,
+        'MASS_MECA' : matr_asse_depl_r,
+        'RIGI_MECA' : matr_asse_depl_r,
+        'AMOR_MECA' : matr_asse_depl_r,
+        'MACR_ELEM' : macr_elem_stat,
+        'PROJ_MESU' : mode_gene,
+        'BASE_ES' : base_modale,
+        'BASE_LMME' : mode_meca,
+        'MODE_STA' : mode_stat_forc,
+              }
+    if RESU_MODIFSTRU != None:
+        for res in RESU_MODIFSTRU:
+            for mc, typ in MTYPES.items():
+                if res[mc]:
+                    self.type_sdprod(res[mc], typ)
+    return None
+
+
+CALC_ESSAI = MACRO(nom       = 'CALC_ESSAI',
+                   op        = calc_essai_ops,
+                   sd_prod   = calc_essai_prod,
+                   reentrant = 'n',
+                   UIinfo    = {"groupes":("Outils métier",)},
+                   fr        = "Outil de post-traitement interactif pour Meidee ",
+                   UNITE_FIMEN = SIMP( statut='f',typ='I',max='**' ),
+                   INTERACTIF  = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ),
+                   RESU_FLUDELA        = FACT( statut='f',max='**',
+                                               TABLE = SIMP(statut='f', typ=CO),
+                                             ),
+                   RESU_TURBULENT      = FACT( statut='f',max=1,
+                                               FONCTION = SIMP(statut='f', typ=CO),
+                                             ),
+                   RESU_IDENTIFICATION = FACT( statut='f',max='**',
+                                               TABLE = SIMP(statut='f', typ=CO),
+                                             ),
+                   RESU_MODIFSTRU = FACT( statut='f', max=1,
+                                          MODELE=SIMP(statut='f',typ=CO,defaut=None),
+                                          MODE_MECA=SIMP(statut='f',typ=CO,defaut=None),
+                                          MAILLAGE=SIMP(statut='f',typ=CO,defaut=None),
+                                          NUME_DDL=SIMP(statut='f',typ=CO,defaut=None),
+                                          MASS_MECA=SIMP(statut='f',typ=CO,defaut=None),
+                                          RIGI_MECA=SIMP(statut='f',typ=CO,defaut=None),
+                                          AMOR_MECA=SIMP(statut='f',typ=CO,defaut=None),
+                                          MACR_ELEM=SIMP(statut='f',typ=CO,defaut=None),
+                                          PROJ_MESU=SIMP(statut='f',typ=CO,defaut=None),
+                                          BASE_ES=SIMP(statut='f',typ=CO,defaut=None),
+                                          BASE_LMME=SIMP(statut='f',typ=CO,defaut=None),
+                                          MODE_STA=SIMP(statut='f',typ=CO,defaut=None),
+                                         ),
+                   UNITE_RESU = SIMP( statut='f',typ='I'),
+
+                   b_inter    = BLOC( condition="INTERACTIF=='NON'",
+
+                             EXPANSION        = FACT( statut='f',max='**',
+                                                      CALCUL           = SIMP(statut='o',typ=mode_meca),
+                                                      NUME_MODE_CALCUL = SIMP(statut='f',typ='I',validators=NoRepeat(),
+                                                                              max='**',defaut=0),
+                                                      MESURE           = SIMP(statut='o',typ=mode_meca),
+                                                      NUME_MODE_MESURE = SIMP(statut='f',typ='I',validators=NoRepeat(),
+                                                                              max='**',defaut=0),
+                                                      RESOLUTION       = SIMP(statut='f',typ='TXM',defaut='SVD',into=('SVD','LU')),
+                                                      b_reso           = BLOC(condition = "RESOLUTION=='SVD'",
+                                                                              EPS = SIMP(statut='f',typ='R', defaut = 0.)
+                                                                       )
+                                                    ),
+                             MEIDEE_FLUDELA   = FACT( statut='f', max='**',
+                                                      MESURE1 = SIMP(statut='o',typ=mode_meca),
+                                                      MESURE2 = SIMP(statut='o',typ=mode_meca),
+                                                      MESURE3 = SIMP(statut='o',typ=mode_meca),
+                                                      BASE    = SIMP(statut='o',typ=mode_meca),
+                                                    ),
+                             MEIDEE_TURBULENT = FACT( statut='f', max='**',
+                                                      INTE_SPEC      = SIMP(statut='o',typ=table_sdaster),
+                                                      NUME_MODE_DECONV = SIMP(statut='f',typ='I',validators=NoRepeat(),
+                                                                              max=1,defaut=0),
+                                                      NUME_MODE_LOCAL  = SIMP(statut='f',typ='I',validators=NoRepeat(),
+                                                                              max='**',defaut=0),
+                                                      BASE = SIMP(statut='o',typ=mode_meca),
+                                                      MESURE = SIMP(statut='o',typ=(mode_meca,base_modale)),
+                                                    ),
+                             IDENTIFICATION   = FACT( statut='f',max='**',   
+                                                      ALPHA   = SIMP(statut='f',typ='R', defaut = 0.),
+                                                      EPS     = SIMP(statut='f',typ='R', defaut = 0.),
+                                                      OBSERVABILITE  = SIMP(statut='o',typ=(mode_meca, base_modale)),
+                                                      COMMANDABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)),
+                                                      INTE_SPEC      = SIMP(statut='o',typ=table_sdaster),
+                                                      RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
+                                                      BASE           = SIMP(statut='o',typ=mode_meca),
+                                                     ),
+                             MODIFSTRUCT = FACT( statut='f', max=1,
+                                                 MESURE = SIMP(statut='o', typ=mode_meca),
+                                                 MODELE_SUP = SIMP(statut='o', typ=modele_sdaster),
+                                                 MATR_RIGI = SIMP(statut='o', typ=matr_asse_depl_r),
+                                                 RESOLUTION = SIMP(statut='o', typ='TXM',
+                                                               into=('ES', 'LMME')),
+                                                 b_resol = BLOC( condition = "RESOLUTION=='LMME'",
+                                                                 MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r),
+                                                                ),
+                                                 NUME_MODE_MESU   = SIMP(statut='o', typ='I',max='**'),
+                                                 NUME_MODE_CALCUL = SIMP(statut='o', typ='I',max='**'),
+                                                 MODELE_MODIF = SIMP(statut='o', typ=modele_sdaster),
+                                               ),
+
+                             # Si on realise une modification structurale, on donne les DDL capteurs et interface
+                             b_inter    = BLOC( condition="MODIFSTRUCT!=None",
+                                   GROUP_NO_CAPTEURS  = FACT( statut='f', max='**',
+                                                              GROUP_NO = SIMP(statut='f',typ='TXM', max='**'),
+                                                              NOM_CMP  = SIMP(statut='f',typ='TXM', max='**'),
+                                                            ),
+                                   GROUP_NO_EXTERIEUR = FACT( statut='f', max='**',
+                                                              GROUP_NO = SIMP(statut='f',typ='TXM', max='**'),
+                                                              NOM_CMP  = SIMP(statut='f',typ='TXM', max='**'),
+                                                            ),
+                                               ),
+                                          ),
+                        );
+
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR ASSIRE A.ASSIRE 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+from Macro.calc_europlexus_ops import calc_europlexus_ops
+
+import types
+
+def calc_europlexus_prod(self,COURBE=None,**args):
+  if COURBE is not None:
+      self.type_sdprod(args['TABLE_COURBE'],table_sdaster) 
+  return evol_noli
+
+CALC_EUROPLEXUS = MACRO(nom="CALC_EUROPLEXUS",op=calc_europlexus_ops,sd_prod=calc_europlexus_prod,
+        reentrant='n',
+        #UIinfo={"groupes":("Dynamique rapide",)},
+        fr="Chainage Code_Aster-Europlexus",
+
+        LOGICIEL = SIMP(statut='f', typ='TXM', defaut='/home/europlex/EPXD/EUROPLEXUS_GESTION/runepx_d'),
+
+        MODELE     = SIMP(statut='o',typ=modele_sdaster),
+        CARA_ELEM  = SIMP(statut='o',typ=cara_elem),
+
+        FONC_PARASOL = FACT(statut='f',
+           NFKT       = SIMP(statut='o',typ=(fonction_sdaster,)),
+           NFKR       = SIMP(statut='o',typ=(fonction_sdaster,)),
+           GROUP_MA   = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           ),
+
 
-          b_autres         =BLOC( condition = "TYPE_OPTION=='AUTRES'",
-                  OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                           into=("VALE_NCOU_MAXI",) ),
-               b_maxi    =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
-                                (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
-                    NOM_CHAM  =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
-                    NOM_CMP   =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
-                                 ),
+        CHAM_MATER = SIMP(statut='o',typ=cham_mater),
 
-          b_indi_erreur         =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'",
-               OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM",
-                           into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
-                                 "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
-                                 "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
-                                 "SING_ELEM","SING_ELNO_ELEM",) ),
+        EXCIT      = FACT(statut='o',max='**',
+           CHARGE         = SIMP(statut='o',typ=(char_meca,)),
+           FONC_MULT      = SIMP(statut='o',typ=(fonction_sdaster,)),
+          ),
 
-               b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
-                                        (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
-                                        (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
-                                        (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
-                RESU_DUAL    =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")),
+        DIME = FACT(statut='o', regles=(AU_MOINS_UN('UNITE_DIME','Q4GS','FORCE',
+                                                    'PT6L','ZONE','POUT','ECRO',
+                                                    'APPU','BLOQ','PRESS','PMAT',
+                                                    'DKT3','DEPL','FNOM','TABLE','FTAB',
+                                                    'MTTI','NEPE','LIAI',), ),                   
+           UNITE_DIME=SIMP(statut='f',typ='I'),
+
+           Q4GS  = SIMP(statut='f',typ='I'),
+           FORCE = SIMP(statut='f',typ='I'),
+           PT6L  = SIMP(statut='f',typ='I'),
+           ZONE  = SIMP(statut='f',typ='I'),
+           POUT  = SIMP(statut='f',typ='I'),
+           ECRO  = SIMP(statut='f',typ='I'),
+           APPU  = SIMP(statut='f',typ='I'),
+           BLOQ  = SIMP(statut='f',typ='I'),
+           PRESS = SIMP(statut='f',typ='I',min=2,max=2,),
+           PMAT  = SIMP(statut='f',typ='I'),
+           DKT3  = SIMP(statut='f',typ='I'),
+           DEPL  = SIMP(statut='f',typ='I'),
+           FNOM  = SIMP(statut='f',typ='I'),
+           TABLE = SIMP(statut='f',typ='I',min=2,max=2,),
+           FTAB  = SIMP(statut='f',typ='I'),
+           MTTI  = SIMP(statut='f',typ='I'),
+           NEPE  = SIMP(statut='f',typ='I'),
+           LIAI  = SIMP(statut='f',typ='I'),
+             ),
 
-               b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
-                               (type(OPTION)==type(()) and  'SING_ELEM' in OPTION)",
-                    PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
-                                  fr="precision demandee pour calculer la carte de taille des elements" ),),
+        CALCUL = FACT(statut='o',
+           TYPE_DISCRETISATION  = SIMP(statut='o',typ='TXM',defaut='AUTO',into=('AUTO','UTIL')),
+           INST_FIN             = SIMP(statut='o',typ='R'),
+           INST_INIT            = SIMP(statut='o',typ='R'),
+           NMAX                 = SIMP(statut='f',typ='R'),
 
-               b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\
-                                            (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\
-                                            (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\
-                                            (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\
-                                            (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ",
-                    NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
-                                 into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ),
-                                 ),
-                                 ),
-                                 ),
-#          fin bloc evol_noli
+           b_auto =BLOC( condition = "TYPE_DISCRETISATION=='AUTO'",
+              CSTAB  = SIMP(statut='o',typ='R',max='**',defaut=0.3),
+#              DTMAX  = SIMP(statut='f',typ='R',max='**'),
+                       ),
 
-#           thermique : evol_ther, fourier_ther
-     b_ther          =BLOC( condition = "AsType(RESULTAT) in (evol_ther,fourier_ther,)" ,fr="options thermiques",
-          OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                           into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
-                                  "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META",
-                                  "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),),
-               EXCIT           =FACT(statut='f',max='**',
-                    regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
-                    CHARGE          =SIMP(statut='o',typ=char_ther ),
-                    FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-                    FONC_MULT_C     =SIMP(statut='f',typ=fonction_c),
-                    COEF_MULT       =SIMP(statut='f',typ='R'),
-                    COEF_MULT_C     =SIMP(statut='f',typ='C'),
-                    PHAS_DEG        =SIMP(statut='f',typ='R'),
-                    PUIS_PULS       =SIMP(statut='f',typ='I'),
-                    TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),
-                                     ),
-                                 ),
+           b_util =BLOC( condition = "TYPE_DISCRETISATION=='UTIL'",
+              PASFIX   = SIMP(statut='o',typ='R',max='**'),
+                       ),
+           ),
 
-#    acoustique
-     b_acou          =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques",
-          OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-                           into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
-                                 "INTE_ELNO_ACTI","INTE_ELNO_REAC",
-                                 ),),
-          EXCIT           =FACT(statut='f',max='**',
-                regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
-                CHARGE          =SIMP(statut='o',typ=char_acou ),
-                FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-                FONC_MULT_C     =SIMP(statut='f',typ=fonction_c),
-                COEF_MULT       =SIMP(statut='f',typ='R'),
-                COEF_MULT_C     =SIMP(statut='f',typ='C'),
-                PHAS_DEG        =SIMP(statut='f',typ='R'),
-                PUIS_PULS       =SIMP(statut='f',typ='I'),
-                TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
-                                 ),
 
-     SENSIBILITE     =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
-                           fr="Liste des paramètres de sensibilité.",
-                           ang="List of sensitivity parameters"),
-     INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-     TITRE           =SIMP(statut='f',typ='TXM',max='**'),
-) ;
+        OBSERVATION     =FACT(statut='f',max='**',
+           SUIVI_DDL       = SIMP(statut='o',typ='TXM',defaut="OUI",max=1,into=("OUI","NON")),
+        b_suivi          =BLOC(condition = "SUIVI_DDL == 'OUI' ",
+                               regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), 
+                                        EXCLUS('PAS_NBRE','PAS_INST',), 
+                                        EXCLUS('GROUP_NO','TOUT_GROUP_NO',), 
+                                        EXCLUS('GROUP_MA','TOUT_GROUP_MA',), ),
+           NOM_CHAM        = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**', defaut = ('DEPL',), 
+                                  into=('DEPL','VITE','ACCE','SIEF_ELGA','EPSI_ELGA','VARI_ELGA'),),
+           PAS_INST        = SIMP(statut='f',typ='R'),
+           PAS_NBRE        = SIMP(statut='f',typ='I'),
+           GROUP_NO        = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+           GROUP_MA        = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           TOUT_GROUP_NO   = SIMP(statut='f',typ='TXM',into=('OUI',),),
+           TOUT_GROUP_MA   = SIMP(statut='f',typ='TXM',into=('OUI',),),
+                             ),
+        ),
+
+
+        ARCHIVAGE        =FACT(statut='f', regles=( AU_MOINS_UN('PAS_NBRE','PAS_INST',), EXCLUS('PAS_NBRE','PAS_INST',), ),
+           PAS_INST     = SIMP(statut='f',typ='R'),
+           PAS_NBRE     = SIMP(statut='f',typ='I'),
+           CONT_GENER   = SIMP(statut='o',typ='TXM',defaut="NON",max=1,into=("OUI","NON")),
+                             ),                
+        COURBE  =  FACT(statut='f',max='**', regles=(EXCLUS('GROUP_NO','GROUP_MA')),
+           UNITE_ALIT = SIMP(statut='f',typ='I'),
+            NOM_CHAM   = SIMP(statut='f',typ='TXM'),
+            NOM_CMP    = SIMP(statut='f',typ='TXM'),
+#             NOEUD      = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+#             MAILLE     = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+            GROUP_NO   = SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+            GROUP_MA   = SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1),
+
+            b_maille = BLOC(condition = "MAILLE != None", regles=(AU_MOINS_UN('NUM_GAUSS')),
+              NUM_GAUSS = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),),
+         ),
+        b_courbe = BLOC(condition = "COURBE != None",
+                        regles=(AU_MOINS_UN('PAS_NBRE_COURBE','PAS_INST_COURBE',),
+                                AU_MOINS_UN('TABLE_COURBE',)),          
+          PAS_INST_COURBE      = SIMP(statut='f',typ='R'),
+          PAS_NBRE_COURBE       = SIMP(statut='f',typ='I'),
+                  TABLE_COURBE      = SIMP(statut='f', typ=CO),
+          ),
+        DOMAINES = FACT(statut='f',max='**',
+             GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+             IDENTIFIANT =  SIMP(statut='f',typ='I'),), 
+        INTERFACES = FACT(statut='f',max='**',
+             GROUP_MA_1 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+             GROUP_MA_2 = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+             TOLE        =  SIMP(statut='f',typ='R'),
+             IDENT_DOMAINE_1  = SIMP(statut='f',typ='I'), 
+             IDENT_DOMAINE_2  = SIMP(statut='f',typ='I'),),
+
+         INFO            =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ),
+        ) ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -5945,7 +6034,7 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti
          PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -5997,7 +6086,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
 
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
            b_mult_front    = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -6015,11 +6104,37 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
              RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
+           ),
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
                            ),
 
            ) ;
-#& MODIF COMMANDE  DATE 13/05/2008   AUTEUR GALENNE E.GALENNE 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR GALENNE E.GALENNE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6054,7 +6169,9 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
            FISSURE         =SIMP(statut='f',typ=fiss_xfem,max=1),
            DTAN_ORIG       =SIMP(statut='f',typ='R',max='**'),
            DTAN_EXTR       =SIMP(statut='f',typ='R',max='**'),
+           NB_POINT_FOND   =SIMP(statut='f',typ='I',val_min=2),
            regles=(EXCLUS('FOND_FISS','FISSURE'),
+                 EXCLUS('FOND_FISS','NB_POINT_FOND'),
                  EXCLUS('FOND_FISS','DTAN_ORIG'),
                  EXCLUS('FOND_FISS','DTAN_EXTR'),),
           b_theta        =BLOC(condition="THETA == None",fr="calcul de theta",
@@ -6066,7 +6183,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
              R_SUP           =SIMP(statut='f',typ='R'),
              MODULE          =SIMP(statut='f',typ='R',defaut=1.),
              DIRE_THETA      =SIMP(statut='f',typ=cham_no_sdaster ),
-             DIRECTION       =SIMP(statut='f',typ='R',max='**'),
+             DIRECTION       =SIMP(statut='f',typ='R',max=3,min=3),
              R_INF_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
              R_SUP_FO        =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),             
              MODULE_FO       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -6091,8 +6208,11 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
             FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
        
            b_acce_reel     =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
-              PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),
               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                      PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                      PRECISION       =SIMP(statut='o',typ='R'),),
             ),
          ),
 
@@ -6111,10 +6231,7 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
          COMP_ELAS       =FACT(statut='f',
                RELATION        =SIMP(statut='f',typ='TXM',defaut="ELAS",
                                      into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS") ),
-               ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,) ),
-               ELAS_VMIS_LINE  =SIMP(statut='c',typ='I',defaut=1,into=(1,) ),
-               ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut=1,into=(1,) ),
-               ELAS_VMIS_PUIS  =SIMP(statut='c',typ='I',defaut=1,into=(1,) ),
+               CALCUL_CONTRAINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
                DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
       regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
                TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -6124,9 +6241,6 @@ CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
          COMP_INCR       =FACT(statut='f',
                RELATION        =SIMP(statut='f',typ='TXM',defaut="ELAS",
                                      into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE","ELAS_VMIS_PUIS") ),
-               ELAS            =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
-               VMIS_ISOT_TRAC  =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
-               VMIS_ISOT_LINE  =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
                DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
       regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
                TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -6202,7 +6316,7 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_fonction,
          TITRE           =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6245,7 +6359,7 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
 
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
            b_mult_front    = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -6264,9 +6378,35 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
              RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),       
+             ),
+
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 17/11/2008   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6288,10 +6428,6 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
 def calc_matr_elem_prod(OPTION,**args):
   if OPTION == "RIGI_MECA"        : return matr_elem_depl_r
   if OPTION == "RIGI_FLUI_STRU"   : return matr_elem_depl_r
-  if OPTION == "MASS_ID_MDEP_R"   : return matr_elem_depl_r
-  if OPTION == "MASS_ID_MDNS_R"   : return matr_elem_depl_r
-  if OPTION == "MASS_ID_MTEM_R"   : return matr_elem_temp_r
-  if OPTION == "MASS_ID_MTNS_R"   : return matr_elem_temp_r
   if OPTION == "MASS_MECA"        : return matr_elem_depl_r
   if OPTION == "MASS_FLUI_STRU"   : return matr_elem_depl_r
   if OPTION == "RIGI_GEOM"        : return matr_elem_depl_r
@@ -6319,8 +6455,8 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
                                      "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA",
                                      "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU",
                                      "RIGI_ROTA","MECA_GYRO","MASS_MECA_DIAG","RIGI_ACOU",
-                                     "MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R",
                                      "MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST") ),
+         MODELE            =SIMP(statut='o',typ=modele_sdaster ),
 
          # mots clés facultatifs que l'on a du mal à mettre dans les blocs
          # sans gener MACRO_MATR_ASSE :
@@ -6329,48 +6465,30 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
 
 
          b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
-           regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
-           MODELE          =SIMP(statut='f',typ=modele_sdaster ),
-           b_modele        =BLOC(condition = "MODELE != None",
-             CHAM_MATER      =SIMP(statut='f',typ=cham_mater ),
-             CARA_ELEM       =SIMP(statut='f',typ=cara_elem ),
-             MODE_FOURIER    =SIMP(statut='f',typ='I',defaut= 0 ),
-           ),
+           CHAM_MATER      =SIMP(statut='f',typ=cham_mater ),
+           CARA_ELEM       =SIMP(statut='f',typ=cara_elem ),
+           MODE_FOURIER    =SIMP(statut='f',typ='I',defaut= 0 ),
            CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
          ),
 
-         b_mass_meca       =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')",
-           regles=(AU_MOINS_UN('MODELE','CHARGE'),),
-           MODELE          =SIMP(statut='f',typ=modele_sdaster ),
-           b_modele          =BLOC(condition = "MODELE != None",
-             CHAM_MATER        =SIMP(statut='f',typ=cham_mater ),
-             CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
-           ),
+         b_mass_meca   =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')",
+           CHAM_MATER      =SIMP(statut='f',typ=cham_mater ),
+           CARA_ELEM       =SIMP(statut='f',typ=cara_elem ),
            CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
          ),
 
-         b_mass_identite   =BLOC(condition = "(OPTION in ('MASS_ID_MDEP_R','MASS_ID_MTEM_R','MASS_ID_MDNS_R','MASS_ID_MTNS_R')) ",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
-           # j'ajoute ces 2 mot clés inutiles à cause de l'alarme pas assez subtile de MEDOME
-           CHAM_MATER        =SIMP(statut='f',typ=cham_mater ),
-           CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
-         ),
-
          b_rigi_geom       =BLOC(condition = "OPTION=='RIGI_GEOM'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
            SIEF_ELGA         =SIMP(statut='o',typ=cham_elem ),
            MODE_FOURIER      =SIMP(statut='f',typ='I',defaut= 0 ),
          ),
 
          b_rigi_rota       =BLOC(condition = "OPTION=='RIGI_ROTA'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
          ),
 
          b_meca_gyro = BLOC( condition = "OPTION=='MECA_GYRO'",
-           MODELE          =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER      =SIMP(statut='o',typ=cham_mater ),
            CARA_ELEM       =SIMP(statut='o',typ=cara_elem ),
            CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
@@ -6379,27 +6497,24 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
          b_amor_meca       =BLOC(condition = "OPTION=='AMOR_MECA'",
            regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
                    ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
            CHAM_MATER        =SIMP(statut='f',typ=cham_mater ),
            RIGI_MECA         =SIMP(statut='f',typ=matr_elem_depl_r ),
            MASS_MECA         =SIMP(statut='f',typ=matr_elem_depl_r ),
            CHARGE            =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
          ),
-         
+
          b_amor_meca_abso  =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'",
            regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
                    ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            RIGI_MECA         =SIMP(statut='f',typ=matr_elem_depl_r ),
            MASS_MECA         =SIMP(statut='f',typ=matr_elem_depl_r ),
            CHARGE            =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
          ),
-         
+
          b_rigi_meca_hyst  =BLOC( condition = "OPTION=='RIGI_MECA_HYST'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHARGE            =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ),
            CHAM_MATER        =SIMP(statut='f',typ=cham_mater ),
            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
@@ -6407,56 +6522,46 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op=   9,sd_prod=calc_matr_elem_prod
          ),
 
          b_rigi_ther       =BLOC(condition = "OPTION=='RIGI_THER'",
-           regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
-           MODELE            =SIMP(statut='f',typ=modele_sdaster ),
-           b_modele          =BLOC(condition = "MODELE != None",
-             CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
-             CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
-             MODE_FOURIER      =SIMP(statut='f',typ='I',defaut= 0 ),
-           ),
+           CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
+           CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
+           MODE_FOURIER      =SIMP(statut='f',typ='I',defaut= 0 ),
            CHARGE            =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**' ),
          ),
 
          b_mass_ther       =BLOC(condition = "OPTION=='MASS_THER'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CARA_ELEM         =SIMP(statut='f',typ=cara_elem ),
            CHARGE            =SIMP(statut='f',typ=char_ther ,validators=NoRepeat(),max='**' ),
          ),
 
          b_rigi_acou       =BLOC(condition = "OPTION=='RIGI_ACOU'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
          ),
 
          b_mass_acou       =BLOC(condition = "(OPTION=='MASS_ACOU') or (OPTION=='AMOR_ACOU')",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
          ),
 
          b_rigi_flui       =BLOC(condition = "OPTION=='RIGI_FLUI_STRU'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CARA_ELEM         =SIMP(statut='o',typ=cara_elem ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**' ),
          ),
 
          b_mass_flui       =BLOC(condition = "OPTION=='MASS_FLUI_STRU'",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CARA_ELEM         =SIMP(statut='o',typ=cara_elem ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**'),
          ),
 
          b_impe_meca       =BLOC(condition = "(OPTION=='IMPE_MECA') or (OPTION=='ONDE_FLUI')",
-           MODELE            =SIMP(statut='o',typ=modele_sdaster ),
            CHAM_MATER        =SIMP(statut='o',typ=cham_mater ),
            CHARGE            =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6490,24 +6595,139 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
                NUME_INIT       =SIMP(statut='f',typ='I'),
                INST_INIT       =SIMP(statut='f',typ='R'),
                b_inst     =BLOC(condition="INST_INIT != None",
-                  PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3),
-                  CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") )
+                  CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                      PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                      PRECISION       =SIMP(statut='o',typ='R',),),
                ),
             ),
          ),
-         COMP_INCR       =FACT(statut='o',max='**',
+         COMP_INCR       =FACT(statut='o',max=1,
            RELATION        =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ),
            ACIER           =SIMP(statut='c',typ='I',defaut=7,into=(7,) ),
-           ZIRC            =SIMP(statut='c',typ='I',defaut=3,into=(3,) ),
+           ZIRC            =SIMP(statut='c',typ='I',defaut=4,into=(4,) ),
       regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           GROUP_MA        =SIMP(statut='f',typ=grma),
-           MAILLE          =SIMP(statut='f',typ=ma),
+           GROUP_MA        =SIMP(statut='f',typ=grma, validators=NoRepeat(), max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma, validators=NoRepeat(), max='**'),
          ),
          OPTION          =SIMP(statut='f',typ='TXM'     
                              ,into=("META_ELNO_TEMP",) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 14/10/2008   AUTEUR NISTOR I.NISTOR 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# RESPONSABLE NISTOR I.NISTOR
+
+from Macro.calc_modal_ops import calc_modal_ops
+
+def calc_modal_prod(self,AMORTISEMENT,**args):
+  if AMORTISEMENT=="NON": return mode_meca
+  if AMORTISEMENT=="OUI": return mode_meca_c
+  raise AsException("type de concept resultat non prevu")
+
+
+CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops,
+            UIinfo={"groupes":("Résolution",)},
+                      sd_prod=calc_modal_prod,
+                    fr="Calcul des modes propres reels ou complexes dans une seule commande",
+         MODELE          =SIMP(statut='o',typ=modele_sdaster),
+         AMORTISEMENT    =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
+         CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
+         INST            =SIMP(statut='f',typ='R',defaut=0.),
+         CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
+         CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),  
+         SOLVEUR         =FACT(statut='d',
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ),
+         b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale",
+           RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
+         ),
+         b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT",
+           RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
+         ),),
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
+                               into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ),
+         b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
+           PREC_ORTHO      =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
+           NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+           PREC_LANCZOS    =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
+           NMAX_ITER_QR    =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), 
+         ),
+         b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
+           PREC_BATHE      =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
+           NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
+           PREC_JACOBI     =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+           NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
+         ),
+         b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
+           PREC_SOREN      =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),  
+           NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),  
+           PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ),
+         ),
+         b_qz =BLOC(condition = "METHODE == 'QZ'",
+           TYPE_QZ      =SIMP(statut='f',typ='TXM',defaut="QZ_SIMPLE",into=("QZ_QR","QZ_SIMPLE","QZ_EQUI") ),  
+         ), 
+         MODE_RIGIDE          =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+                               fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ),
+         CALC_FREQ       =FACT(statut='d',min=0,
+             OPTION      =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE","TOUT"),
+                                   fr="Choix de l option et par conséquent du shift du problème modal" ),
+             b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+             ),
+             b_centre       =BLOC(condition = "OPTION == 'CENTRE'",
+                                  fr="Recherche des valeurs propres les plus proches d une valeur donnée",
+               FREQ            =SIMP(statut='o',typ='R',
+                                     fr="Fréquence autour de laquelle on cherche les fréquences propres"),
+               AMOR_REDUIT     =SIMP(statut='f',typ='R',),
+               NMAX_FREQ       =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+             ),
+             b_bande         =BLOC(condition = "(OPTION == 'BANDE')",
+                                   fr="Recherche des valeurs propres dans une bande donnée",
+               FREQ            =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
+                                     fr="Valeur des deux fréquences délimitant la bande de recherche"),
+             ),           
+             APPROCHE        =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
+                                   fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),           
+             regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
+             DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
+             COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
+             NPREC_SOLVEUR   =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
+             NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+             PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
+             SEUIL_FREQ      =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+             STOP_FREQ_VIDE  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+
+        VERI_MODE       =FACT(statut='d',min=0,
+           STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
+           SEUIL           =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0,
+                                 fr="Valeur limite admise pour l ereur a posteriori des modes" ),
+           STURM           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+         ),
+
+         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+)  ;
+#& MODIF COMMANDE  DATE 06/10/2008   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6530,7 +6750,7 @@ def calc_no_prod(RESULTAT,**args):
    if AsType(RESULTAT) != None : return AsType(RESULTAT)
    raise AsException("type de concept resultat non prevu")
 
-CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
+CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f',
             fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds",
             UIinfo={"groupes":("Post traitements",)},
          RESULTAT        =SIMP(statut='o',typ=resultat_sdaster),
@@ -6551,12 +6771,15 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
          FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
          LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
          LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
-         PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
-         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
          LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
-
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
          OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
                                into=("FORC_NODA","REAC_NODA",
+                                     "FORC_NODA_NONL",
                                      "DCHA_NOEU_SIGM",
                                      "DEGE_NOEU_DEPL",
                                      "DETE_NOEU_DLTE",
@@ -6593,7 +6816,11 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
  (OPTION == 'REAC_NODA') or (type(OPTION) == type(()) and 'REAC_NODA' in OPTION)""",
              MODELE          =SIMP(statut='f',typ=modele_sdaster),
          ),
-
+         b_forc_nonl     =BLOC(condition = """(OPTION == 'FORC_NODA_NONL')""",
+             MODELE          =SIMP(statut='f',typ=modele_sdaster),
+             COMP_INCR       =C_COMP_INCR(),
+         ),
+         
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
          EXCIT           =FACT(statut='f',max='**',
@@ -6610,7 +6837,7 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
          GROUP_NO_RESU   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
          NOEUD_RESU      =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6654,7 +6881,7 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
            INST_INIT       =SIMP(statut='f',typ='R'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
@@ -6725,13 +6952,16 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
             EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
             NUME_ORDRE      =SIMP(statut='f',typ='I'),
             INST            =SIMP(statut='f',typ='R'),
-            PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+            b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+            b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R',),),
             NUME_DIDI       =SIMP(statut='f',typ='I'),
             INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
           ),
           SOLVEUR         =FACT(statut='d',
-            METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+            METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
             b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
               RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
             ),
@@ -6750,6 +6980,32 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
               RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
               NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
             ),
+            b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+              TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+              PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+              RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+              ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+              PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+              RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+              PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                    into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+              OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+              ),
+
+            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+              ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+              PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+              b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+                NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+                REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+              ),
+              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+              RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+            ),
             SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
           ),
           INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
@@ -6761,6 +7017,69 @@ CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
 
          COMP_INCR       =C_COMP_INCR(),
   )  ;
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR CORUS M.CORUS 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# RESPONSABLE CORUS M.CORUS
+
+from Macro.calc_spec_ops import calc_spec_ops
+
+CALC_SPEC=MACRO(nom="CALC_SPEC",op= calc_spec_ops,sd_prod=table_fonction,
+                     reentrant='n',
+                     fr="Calcule une matrice interspectrale ou des fonctions de transferts",
+                     UIinfo={"groupes":("Fonction",)},
+         TAB_ECHANT      =FACT(statut='f',
+           NOM_TAB         =SIMP(statut='o',typ=table_sdaster),
+           LONGUEUR_ECH    =FACT(statut='f',
+             DUREE           =SIMP(statut='f',typ='R'),
+             POURCENT        =SIMP(statut='f',typ='R'),
+             NB_PTS          =SIMP(statut='f',typ='I'),
+                              ),
+           RECOUVREMENT  =FACT(statut='f',
+             DUREE           =SIMP(statut='f',typ='R'),
+             POURCENT        =SIMP(statut='f',typ='R'),
+             NB_PTS          =SIMP(statut='f',typ='I'),
+                                ),
+                              ),
+         ECHANT          =FACT(statut='f',max='**',
+           NUME_ORDRE_I    =SIMP(statut='o',typ='I' ),
+           NUME_MES        =SIMP(statut='o',typ='I' ),
+           FONCTION        =SIMP(statut='o',typ=fonction_sdaster),
+                              ),
+#-- Cas de la matrice interspectrale --#
+         INTERSPE        =FACT(statut='f',
+           FENETRE         =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)),
+           BLOC_DEFI_FENE  =BLOC(condition = "FENETRE == 'EXPO' or FENETRE == 'PART' ", 
+#             DEFI_FENE       =SIMP(statut='f',typ='R',max='**'),
+                                 ),
+                              ),
+#-- Cas des transferts - estimateurs H1 / H2 / Hv + Coherence --#
+         TRANSFERT       =FACT(statut='f',
+           ESTIM           =SIMP(statut='f',typ='TXM',defaut="H1",into=("H1","H2","CO",)),
+           REFER           =SIMP(statut='o',typ='I',max='**'),
+           FENETRE         =SIMP(statut='f',typ='TXM',defaut="RECT",into=("RECT","HAMM","HANN","EXPO","PART",)),
+           DEFI_FENE       =SIMP(statut='f',typ='R',max='**'),
+
+                              ),
+         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+         INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+);
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -6948,7 +7267,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
            FORMAT          =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6968,7 +7287,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
 # ======================================================================
 # RESPONSABLE ABBAS M.ABBAS
 
-CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n',
+CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='f',
             UIinfo={"groupes":("Résolution",)},
             fr="Calculer des objets élémentaires comme une matrice tangente, intégrer une loi de comportement, etc...",
      OPTION          =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="COMPORTEMENT",
@@ -6976,6 +7295,7 @@ CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n',
      MODELE          =SIMP(statut='o',typ=modele_sdaster),
      CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
      CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
+     TABLE           =SIMP(statut='f',typ=table_container),
      EXCIT           =FACT(statut='o',max='**',
        CHARGE          =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
        FONC_MULT       =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -6999,12 +7319,6 @@ CALCUL=OPER(nom="CALCUL",op=26,sd_prod=table_container,reentrant='n',
           RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
                                 into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
                                      "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
-          ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_VMIS_LINE  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_POUTRE_GR  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          CABLE           =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
           DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),),
      INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 ) ;
@@ -7284,7 +7598,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat,
          ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -7319,7 +7633,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
             UIinfo={"groupes":("Résultats et champs",)},
          TYPE_CHAM       =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
       # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx
-      # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs 
+      # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs
 #        SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS :
 #        ------------------------------------------------------------------
          regles=(EXCLUS('NUME_DDL','CHAM_NO',)),
@@ -7397,7 +7711,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
 #        ------------------------------------------------------------------
          b_c2r           =BLOC(condition = "OPERATION == 'C2R'",
              CHAM_GD          =SIMP(statut='o',typ=cham_gd_sdaster),
-             PARTIE           =SIMP(statut='o',typ='TXM',into=('REEL','IMAG'),),
+             PARTIE           =SIMP(statut='o',typ='TXM',into=('REEL','IMAG','MODULE','PHASE'),),
                              ),
 #        ------------------------------------------------------------------
          b_disc          =BLOC(condition = "OPERATION == 'DISC'",
@@ -7466,8 +7780,11 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
                       INTERPOL        =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ),
                  ),
 
-                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
                  CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+                 b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                     PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                 b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                     PRECISION       =SIMP(statut='o',typ='R',),),
 
          ),  # fin bloc b_extr
 
@@ -7478,7 +7795,7 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
 )  ;
-#& MODIF COMMANDE  DATE 19/05/2008   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 30/06/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -7541,7 +7858,9 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
                                  fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit",  ),
          ),
          RESTREINT   =FACT(statut='f',fr="Restreindre un maillage à des groupes de mailles",max=1,
-           GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+           regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
            TOUT_GROUP_MA   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
            TOUT_GROUP_NO   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
@@ -7562,8 +7881,8 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
          MODI_MAILLE     =FACT(statut='f',max='**',fr="Modification du type de mailles",
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           MAILLE          =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           GROUP_MA        =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
            OPTION          =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"),
                                  fr="Choix de la transformation" ),
            b_NOS =BLOC(condition = "OPTION == 'TRIA6_7'  or  OPTION == 'QUAD8_9'  or  OPTION == 'SEG3_4'",
@@ -7585,24 +7904,24 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
          LINE_QUAD     =FACT(statut='f',fr="Passage linéaire -> quadratique",
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           MAILLE          =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           GROUP_MA        =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
          HEXA20_27     =FACT(statut='f',fr="Passage HEXA20 -> HEXA27",
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           MAILLE          =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           GROUP_MA        =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
          QUAD_LINE     =FACT(statut='f',fr="Passage quadratique -> linéaire",
            regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-           MAILLE          =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-           GROUP_MA        =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           GROUP_MA        =SIMP(statut='f',typ=grma  ,validators=NoRepeat(),max='**'),
          ),
          REPERE          =FACT(statut='f',max='**',
                                fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre",
@@ -7629,7 +7948,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
 #
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -7653,6 +7972,7 @@ def crea_resu_prod(TYPE_RESU,**args):
   if TYPE_RESU == "EVOL_NOLI"    : return evol_noli
   if TYPE_RESU == "EVOL_THER"    : return evol_ther
   if TYPE_RESU == "MULT_ELAS"    : return mult_elas
+  if TYPE_RESU == "MODE_MECA"    : return mode_meca
   if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas
   if TYPE_RESU == "FOURIER_THER" : return fourier_ther
   if TYPE_RESU == "EVOL_VARC"    : return evol_varc
@@ -7671,10 +7991,15 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
          #-------------------------------------
          b_affe       =BLOC(condition = "OPERATION == 'AFFE'",
 
-           TYPE_RESU    =SIMP(statut='o',position='global',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
-                                                                           "EVOL_THER","EVOL_VARC","EVOL_CHAR","FOURIER_THER") ),
+           TYPE_RESU    =SIMP(statut='o',position='global',typ='TXM',into=("MODE_MECA","MULT_ELAS","EVOL_ELAS","EVOL_NOLI",
+                                                        "FOURIER_ELAS","EVOL_THER","EVOL_VARC","EVOL_CHAR","FOURIER_THER") ),
            NOM_CHAM     =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
 
+           b_mode       =BLOC(condition = "TYPE_RESU == 'MODE_MECA'",
+             MATR_A         =SIMP(statut='f',typ=matr_asse_depl_r,),
+             MATR_B         =SIMP(statut='f',typ=matr_asse_depl_r,),
+           ),
+
            AFFE         =FACT(statut='o',max='**',
              CHAM_GD       =SIMP(statut='o',typ=(cham_gd_sdaster)),
              MODELE        =SIMP(statut='f',typ=modele_sdaster),
@@ -7691,13 +8016,17 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
                 LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
                 NUME_INIT       =SIMP(statut='f',typ='I', val_min=1),
                 NUME_FIN        =SIMP(statut='f',typ='I', val_min=1),
-                PRECISION       =SIMP(statut='f',typ='R',defaut= 0. ),
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 0.0 ),
                 CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
              ),
              b_fourier       =BLOC(condition = "((TYPE_RESU == 'FOURIER_ELAS') or (TYPE_RESU == 'FOURIER_THER')) ",
                 NUME_MODE       =SIMP(statut='f',typ='I'),
                 TYPE_MODE       =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
              ),
+             b_mode       =BLOC(condition = "TYPE_RESU == 'MODE_MECA'",
+                NUME_MODE       =SIMP(statut='f',typ='I'),
+                FREQ            =SIMP(statut='f',typ='R'),
+             ),
            ),
          ),
 
@@ -7731,8 +8060,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
              LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
              INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
            ),
          ),
 
@@ -7743,8 +8075,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
            NOM_CHAM        =SIMP(statut='f',typ='TXM',into=("DEPL","SIEF_ELGA","VARI_ELGA",),validators=NoRepeat(),max='**' ),
            RESU_INIT       =SIMP(statut='o',typ=evol_noli),
            INST_INIT       =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3),
-           CRITERE         =SIMP(statut='f',typ='TXM',into=('RELATIF','ABSOLU'),defaut='RELATIF'),
+           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+               PRECISION       =SIMP(statut='o',typ='R',),),
            MAILLAGE_INIT   =SIMP(statut='o',typ=maillage_sdaster,),
            RESU_FINAL      =SIMP(statut='o',typ=evol_noli,),
            MAILLAGE_FINAL  =SIMP(statut='o',typ=maillage_sdaster,),
@@ -7767,8 +8102,11 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
               INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
               LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
               b_acce_reel     =BLOC(condition="(INST != None)or(LIST_INST != None)",
-                 PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),
-                 CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+                 CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                 b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                     PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                 b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                     PRECISION       =SIMP(statut='o',typ='R',),),
               ),
               PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
               PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
@@ -7903,7 +8241,7 @@ DEBUG=PROC(nom="DEBUG",op=137,
      IMPR_MACRO      =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
                            statut='f',typ='TXM',into=("OUI","NON")),
  );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 07/10/2008   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -7963,7 +8301,7 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
          ),
 
          ERREUR          =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
-           ERREUR_F        =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
+           ERREUR_F        =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),),
          ),
 
          DEBUG           =FACT(fr="option de déboggage reservée aux développeurs",
@@ -7978,13 +8316,13 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
                                  statut='f',typ='TXM',into=('TEST',)),
          ),
 
-         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
+         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1,
            GESTION         =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
            TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
            TAILLE          =SIMP(statut='f',typ='I'),
            TAILLE_BLOC     =SIMP(statut='f',typ='R',defaut=800.),
            PARTITION       =SIMP(statut='f',typ='R'),
-           DYNAMIQUE       =SIMP(statut='f',typ='I'),
+           DYNAMIQUE       =SIMP(statut='f',typ='I',defaut=1),
          ),
  
          RESERVE_CPU     =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1,
@@ -7999,23 +8337,23 @@ DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
          IGNORE_ALARM = SIMP(statut='f', typ='TXM', max='**', fr="Alarmes que l'utilisateur souhaite délibérément ignorer"),
 
 );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 22/07/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE NISTOR I.NISTOR
 DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op=  99,sd_prod=base_modale,
@@ -8053,6 +8391,27 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op=  99,sd_prod=base_modale,
            BASE       =SIMP(statut='o',typ=(mode_meca,mode_stat_depl,mode_stat_acce,mode_stat_forc,mult_elas,base_modale)),
            MATRICE    =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
          ),
+
+
+         SOLVEUR         =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires",
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("LDLT","MULT_FRONT",) ),
+         # remarque : on ne peut pas utiliser MUMPS tant qu'il ne sait pas faire STOP_SINGULIER="NON"
+
+           b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+           ),
+
+           b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+           ),
+         ),
+
+
+
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
@@ -8182,7 +8541,7 @@ DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n
            PRESENT           =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 30/06/2008   AUTEUR PROIX J-M.PROIX 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -8302,54 +8661,6 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
                                         "ZMAT",
                                         "GRAN_IRRA_LOG",
                                      ) ),
-          ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          SANS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          CORR_ACIER      =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          VMIS_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VISC_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          VMIS_ISOT_LINE  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VISC_ISOT_LINE  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          VMIS_ISOT_PUIS  =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VMIS_ECMI_TRAC  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VMIS_ECMI_LINE  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          LABORD_1D       =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
-          ENDO_FRAGILE    =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          BETON_REGLE_PR  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          MAZARS          =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          RUPT_FRAG       =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          VMIS_CINE_LINE  =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          VISCOCHAB       =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
-          VMIS_CIN1_CHAB  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VMIS_CIN2_CHAB  =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
-          VISC_CIN1_CHAB  =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
-          VISC_CIN2_CHAB  =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
-          VISC_TAHERI     =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          ROUSSELIER      =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          ROUSS_PR        =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          ROUSS_VISC      =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          VMIS_POU_LINE   =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
-          VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)),
-          ASSE_CORN       =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
-          ARME            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          NORTON_HOFF     =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-          LEMAITRE        =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-          VENDOCHAB       =SIMP(statut='c',typ='I',defaut=10,into=(10,)),
-          GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          DRUCK_PRAGER  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          DRUCK_PRAG_N_A  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN      =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN_EFF  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          HOEK_BROWN_TOT  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-          GRANGER_FP      =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          GRANGER_FP_V    =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
-          BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-          BETON_UMLV_FP   =SIMP(statut='c',typ='I',defaut=21,into=(21,)),
-          GRAN_IRRA_LOG   =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
-
            RELATION_KIT    =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
                                  into=(
 # MECA KIT_DDI
@@ -8365,7 +8676,6 @@ DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
                                        "NADAI_B",
                                        "BETON_DOUBLE_DP",
                                        ),),
-
 # on pourrait ajouter TOUT_GROUP_FIBRE
 
                                 ) );
@@ -8499,7 +8809,7 @@ DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_pr
 
            INFO          =SIMP(statut='f',typ='I',into=(1,2) ),           
            )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 14/10/2008   AUTEUR GENIAUT S.GENIAUT 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -8532,21 +8842,55 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
       FONC_LN             =SIMP(statut='f',typ=(fonction_sdaster,formule) ),
       GROUP_MA_FISS       =SIMP(statut='f',typ=grma,max=01),
       GROUP_MA_FOND       =SIMP(statut='f',typ=grma),
-      FORM_FISS           =SIMP(statut='f',typ='TXM',into=("ELLIPSE",) ),
-      b_ellipse           =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramères de la fissure elliptique",           
+      FORM_FISS           =SIMP(statut='f',typ='TXM',into=("ELLIPSE","CYLINDRE","DEMI_PLAN","SEGMENT","DEMI_DROITE") ),
+      b_ellipse           =BLOC(condition = "FORM_FISS == 'ELLIPSE' ",fr="Paramètres de la fissure elliptique",           
            DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
            DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
            CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
            VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),
            COTE_FISS      =SIMP(statut='f',typ='TXM',defaut="IN",into=("IN","OUT",) ),    ),
+      b_cylindre          =BLOC(condition = "FORM_FISS == 'CYLINDRE' ",fr="Paramètres de la fissure cylindrique",
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
+           CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
+           VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
+           VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),),
+      b_demiplan         =BLOC(condition = "FORM_FISS == 'DEMI_PLAN' ",fr="Paramètres de la fissure plane à front droit", 
+           PFON           =SIMP(statut='o',typ='R',min=3,max=3),
+           NORMALE        =SIMP(statut='o',typ='R',min=3,max=3),
+           DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
+      b_segment           =BLOC(condition = "FORM_FISS == 'SEGMENT' ",fr="Paramètres de la fissure 2D segment",
+           PFON_ORIG      =SIMP(statut='o',typ='R',min=3,max=3),
+           PFON_EXTR      =SIMP(statut='o',typ='R',min=3,max=3),),
+      b_demidroite         =BLOC(condition = "FORM_FISS == 'DEMI_DROITE' ",fr="Paramètres de la fissure 2D demi-droite",
+           PFON           =SIMP(statut='o',typ='R',min=3,max=3),
+           DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
+      b_droite            =BLOC(condition = "FORM_FISS == 'DROITE' ",fr="Paramètres de l'interface 2D (fissure traversante)",
+           POINT          =SIMP(statut='o',typ='R',min=3,max=3),
+           DTAN           =SIMP(statut='o',typ='R',min=3,max=3),),
+      b_inclusion         =BLOC(condition = "FORM_FISS == 'INCLUSION' ",fr="Paramètres de l'interface 2D (inclusion)",
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.E+0),
+           CENTRE         =SIMP(statut='o',typ='R',min=3,max=3),
+           VECT_X         =SIMP(statut='o',typ='R',min=3,max=3),
+           VECT_Y         =SIMP(statut='o',typ='R',min=3,max=3),),
     ),
     GROUP_MA_ENRI         =SIMP(statut='o',typ=grma,max=01),
-    RAYON_ENRI            =SIMP(statut='f',typ='R',defaut=0.E+0),
+    TYPE_ENRI_FOND        =SIMP(statut='f',typ='TXM',into=("TOPOLOGIQUE","GEOMETRIQUE"),defaut="TOPOLOGIQUE" ),
+      b_enri_geom         =BLOC(condition = "TYPE_ENRI_FOND == 'GEOMETRIQUE' ",fr="Paramètres de l enrichissement geometrique",
+           RAYON_ENRI     =SIMP(statut='f',typ='R',val_min=0.E+0),
+
+        b_enri_couches    =BLOC(condition = "(RAYON_ENRI == None) ",fr="Paramètres de l enrichissement à n couches",
+           NB_COUCHES     =SIMP(statut='f',typ='I',defaut=4,val_min=1),
+                          ),
+                        
+                          ),
+
     ORIE_FOND             =FACT(statut='f',max=01,
       PFON_INI            =SIMP(statut='o',typ='R',max=03),
       VECT_ORIE           =SIMP(statut='o',typ='R',max=03),
-      PT_ORIGIN           =SIMP(statut='o',typ='R',max=03),
+      POINT_ORIG          =SIMP(statut='o',typ='R',max=03),
     ),
     INFO                  =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ),
 )  ;
@@ -8982,7 +9326,7 @@ DEFI_GEOM_FIBRE=OPER(nom="DEFI_GEOM_FIBRE",op=  119, sd_prod=gfibre_sdaster,
 
 
 ) ;
-#& MODIF COMMANDE  DATE 19/05/2008   AUTEUR MARKOVIC D.MARKOVIC 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR ASSIRE A.ASSIRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -9029,6 +9373,11 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
            C2M1            =SIMP(statut='o',typ='R',val_min=0.E+0),
            C2M2            =SIMP(statut='o',typ='R',val_min=0.E+0),
            C2M3            =SIMP(statut='o',typ='R',val_min=0.E+0),
+           
+           MP1X            =SIMP(statut='f',typ=('R',listr8_sdaster)), 
+           MP2X            =SIMP(statut='f',typ=('R',listr8_sdaster)), 
+           MP1Y            =SIMP(statut='f',typ=('R',listr8_sdaster)), 
+           MP2Y            =SIMP(statut='f',typ=('R',listr8_sdaster)), 
          ),
          NAPPE     =FACT(statut='o',max=10,
            MATER           =SIMP(statut='o',typ=(mater_sdaster) ),
@@ -9036,6 +9385,7 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
            OMY             =SIMP(statut='o',typ='R',val_min=0.E+0), 
            RX              =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), 
            RY              =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=1.E+0), 
+           FS              =SIMP(statut='f',typ='R',val_min=0.E+0),
          ),
          CABLE_PREC   =FACT(statut='f',max=1,
            MATER           =SIMP(statut='o',typ=(mater_sdaster) ),
@@ -9531,7 +9881,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
            GROUP_NO_FIN    =SIMP(statut='f',typ=grno),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR MARKOVIC D.MARKOVIC 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR MICHEL S.MICHEL 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -9576,10 +9926,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                PRESENT_PRESENT('BPEL_ACIER','ELAS'),
                EXCLUS('RCCM','RCCM_FO'),
                EXCLUS('WEIBULL','WEIBULL_FO'),
-               PRESENT_PRESENT('BARCELONE','CAM_CLAY'),
                PRESENT_PRESENT('LAIGLE','ELAS'),
                PRESENT_PRESENT('LETK','ELAS'),
                PRESENT_PRESENT('DRUCK_PRAGER','ELAS'),
+               PRESENT_PRESENT('ELAS_GONF','ELAS'),
                PRESENT_PRESENT('HOEK_BROWN','ELAS'),
                EXCLUS('MAZARS','MAZARS_FO'),
                PRESENT_PRESENT('JOINT_BA','ELAS'),
@@ -10273,7 +10623,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              C_MRZ_RZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              F_MTZ_TZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              C_MTZ_TZ        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-           ), 
+           ),
            VMIS_POUTRE     =FACT(statut='f',
              NP              =SIMP(statut='o',typ='R'),
              MEY             =SIMP(statut='o',typ='R'),
@@ -10399,6 +10749,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              BC              =SIMP(statut='o',typ='R'),
              AT              =SIMP(statut='o',typ='R'),
              BT              =SIMP(statut='o',typ='R'),
+             CHI             =SIMP(statut='f',typ='R',val_min=0.0E+0,val_max=1.0E+0),
            ),
          MAZARS_FO=FACT(statut='f',min=0 ,
              EPSD0           =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -10408,6 +10759,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              AT              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              BT              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              VERI_P          =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","SECH","HYDR") ),
+             CHI             =SIMP(statut='f',typ='R'),
            ),
          JOINT_BA=FACT(statut='f',min=0 ,max=1,
              HPEN            =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=0.E+0),
@@ -10426,23 +10778,23 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              BDN             =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1),
            ),
           VENDOCHAB       =FACT(statut='f',
-             S_VP            =SIMP(statut='o',typ='R'),
-             SEDVP1          =SIMP(statut='o',typ='R'),
-             SEDVP2          =SIMP(statut='o',typ='R'),
-             N_VP            =SIMP(statut='o',typ='R'),
-             M_VP            =SIMP(statut='o',typ='R'),
-             K_VP            =SIMP(statut='o',typ='R'),
+             S               =SIMP(statut='o',typ='R',defaut= 0.E+0),
+             ALPHA_D         =SIMP(statut='o',typ='R',defaut= 0.E+0),
+             BETA_D          =SIMP(statut='o',typ='R',defaut= 0.E+0),
+             N               =SIMP(statut='o',typ='R'),
+             UN_SUR_M        =SIMP(statut='o',typ='R',defaut= 0.E+0),
+             UN_SUR_K        =SIMP(statut='o',typ='R'),
              R_D             =SIMP(statut='o',typ='R'),
              A_D             =SIMP(statut='o',typ='R'),
              K_D             =SIMP(statut='o',typ='R'),
            ),
            VENDOCHAB_FO    =FACT(statut='f',
-             S_VP            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             SEDVP1          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             SEDVP2          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N_VP            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M_VP            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             K_VP            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             S               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             ALPHA_D         =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             BETA_D          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             N               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             UN_SUR_M        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+             UN_SUR_K        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              R_D             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              A_D             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              K_D             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -10482,9 +10834,18 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              KAPA            =SIMP(statut='o',typ='R'),
              M               =SIMP(statut='o',typ='R'),
              PRES_CRIT       =SIMP(statut='o',typ='R'),
-             PA              =SIMP(statut='o',typ='R'),
+             KCAM            =SIMP(statut='f',typ='R',val_min=0.E+0),
+             PTRAC           =SIMP(statut='f',typ='R',val_max=0.E+0),
+               regles=(PRESENT_PRESENT('PTRAC','KCAM',),),
            ),
            BARCELONE      =FACT(statut='f',
+             MU              =SIMP(statut='o',typ='R'),
+             PORO            =SIMP(statut='o',typ='R'),
+             LAMBDA          =SIMP(statut='o',typ='R'),
+             KAPA            =SIMP(statut='o',typ='R'),
+             M               =SIMP(statut='o',typ='R'),
+             PRES_CRIT       =SIMP(statut='o',typ='R'),
+             PA            =SIMP(statut='o',typ='R'),
              R             =SIMP(statut='o',typ='R'),
              BETA          =SIMP(statut='o',typ='R'),
              KC            =SIMP(statut='o',typ='R'),
@@ -10839,11 +11200,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              TDEQ            =SIMP(statut='o',typ='R'),
              N               =SIMP(statut='o',typ='R'),
              K               =SIMP(statut='o',typ='R'),
-             TDC             =SIMP(statut='o',typ='R'),
+             T1C             =SIMP(statut='o',typ='R'),
+             T2C             =SIMP(statut='o',typ='R'),
              AC              =SIMP(statut='o',typ='R'),
              M               =SIMP(statut='o',typ='R'),
-             QSR_K           =SIMP(statut='f',typ='R'),
-             TDR             =SIMP(statut='o',typ='R'),
+             QSR_K           =SIMP(statut='o',typ='R'),
+             T1R             =SIMP(statut='o',typ='R'),
+             T2R             =SIMP(statut='o',typ='R'),
              AR              =SIMP(statut='o',typ='R'),
              BR              =SIMP(statut='o',typ='R'),
            ),
@@ -12159,8 +12522,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
            RUPT_FRAG       =FACT(statut='f',
              GC              =SIMP(statut='o',typ='R'),
              SIGM_C          =SIMP(statut='f',typ='R'),
-             PENA_ADHERENCE  =SIMP(statut='f',typ='R'),
+             PENA_ADHERENCE  =SIMP(statut='f',typ='R',val_min=1.E-12,val_max=1.E+0),
              PENA_CONTACT    =SIMP(statut='f',typ='R',defaut=1.),
+             PENA_LAGR       =SIMP(statut='f',typ='R',defaut=1.0E2,val_min=1.01E+0),
+             RIGI_GLIS       =SIMP(statut='f',typ='R',defaut=1.0E1),
            ),
            RUPT_FRAG_FO   =FACT(statut='f',
              GC              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -12258,7 +12623,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                     TYPE_DP         =SIMP(statut='c',typ='R',defaut= 2.0,),
              ),
              DILAT           =SIMP(statut='f',typ='R',defaut=0.0),
-           ),           
+           ),
              HOEK_BROWN          =FACT(statut='f',
              GAMMA_RUP       =SIMP(statut='o',typ='R'),
              GAMMA_RES       =SIMP(statut='o',typ='R'),
@@ -12272,6 +12637,10 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              PHI_RES         =SIMP(statut='o',typ='R'),
              PHI_END         =SIMP(statut='f',typ='R'),
            ),
+             ELAS_GONF             =FACT(statut='f',
+             BETAM           =SIMP(statut='o',typ='R'),
+             PREF            =SIMP(statut='o',typ='R'),
+           ),
 ####  MONOCRISTAL
 
            ECOU_VISC1      =FACT(statut='f',
@@ -12952,7 +13321,7 @@ DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n',
            A              =SIMP(statut='f',typ='R'),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -12977,13 +13346,14 @@ def depl_interne_prod(DEPL_GLOBAL,**args ):
     if AsType(DEPL_GLOBAL)     == dyna_trans     : return dyna_trans
     if AsType(DEPL_GLOBAL)     == dyna_harmo     : return dyna_harmo
     if AsType(DEPL_GLOBAL)     == mode_meca      : return mode_meca
+    if AsType(DEPL_GLOBAL)     == mode_meca_c    : return mode_meca_c
     if AsType(DEPL_GLOBAL)     == base_modale    : return base_modale
     raise AsException("type de concept resultat non prevu")
 
 DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=depl_interne_prod,reentrant='n',
             UIinfo={"groupes":("Matrices/vecteurs",)},
                   fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique",
-         DEPL_GLOBAL     =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,base_modale,evol_elas,dyna_trans,dyna_harmo),),
+         DEPL_GLOBAL     =SIMP(statut='o',typ=(cham_no_sdaster,mode_meca,mode_meca_c,base_modale,evol_elas,dyna_trans,dyna_harmo),),
          SUPER_MAILLE    =SIMP(statut='o',typ=ma,),
          NOM_CAS         =SIMP(statut='f',typ='TXM',defaut=" "),
 )  ;
@@ -13183,7 +13553,7 @@ DYNA_ISS_VARI=MACRO(nom="DYNA_ISS_VARI",op=dyna_iss_vari_ops ,sd_prod=table_fonc
 #             
          INFO           =SIMP(statut='f',typ='I' ,defaut=1,into=( 1 , 2)),
          )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 06/10/2008   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -13219,7 +13589,6 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
                  PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'),
                  UN_PARMI('FREQ','LIST_FREQ'),
                  CONCEPT_SENSIBLE('ENSEMBLE'),),
-         MODELE          =SIMP(statut='f',typ=modele_sdaster ),
          CHAM_MATER      =SIMP(statut='f',typ=cham_mater ),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem ),
          MATR_MASS       =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ),
@@ -13240,8 +13609,8 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
            regles=(UN_PARMI('VECT_ASSE','CHARGE'),
                    UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),
                   ),
-           VECT_ASSE       =SIMP(statut='f',typ=(cham_no_sdaster,vect_asse_gene) ),
-           CHARGE          =SIMP(statut='f',typ=char_meca ),
+           VECT_ASSE       =SIMP(statut='f',position='global',typ=(cham_no_sdaster,vect_asse_gene) ),
+           CHARGE          =SIMP(statut='f',position='global', typ=char_meca ),
            TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
            FONC_MULT_C     =SIMP(statut='f',typ=(fonction_c,formule_c) ),
            COEF_MULT_C     =SIMP(statut='f',typ='C' ),
@@ -13250,7 +13619,16 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
            PHAS_DEG        =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
            PUIS_PULS       =SIMP(statut='f',typ='I',defaut= 0 ),
          ),
-
+         b_modele_char =BLOC(condition = " CHARGE != None ",
+                       MODELE    =SIMP(statut='o',typ=modele_sdaster ),
+                       ),
+         b_modele_vect =BLOC(condition = " VECT_ASSE != None ",
+                       MODELE    =SIMP(statut='f',typ=modele_sdaster ),
+                       ),
+         EXCIT_RESU      =FACT(statut='f',max='**',
+           RESULTAT        =SIMP(statut='o',typ=(dyna_harmo,harm_gene)),
+           COEF_MULT_C     =SIMP(statut='o',typ='C' ),
+         ),
          b_matr_gene =BLOC(condition = "AsType(MATR_MASS) in (matr_asse_gene_r,)",
                            fr="Methode de resolution matrice generalisee",
           SOLVEUR         =FACT(statut='d',
@@ -13274,6 +13652,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=0,min=0),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
            ),
           ),
          ),
@@ -13307,6 +13686,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=0,min=0),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE      =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
           ),
          ),
@@ -13319,7 +13699,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op=  60,sd_prod=dyna_line_harm_prod,
 # Rajouter test icompatibilite vect_asse et sensibilite
 # Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation 
 #  presents dans le Fortran          
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 06/10/2008   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -13372,8 +13752,11 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
              NUME_INIT       =SIMP(statut='f',typ='I' ),
              INST_INIT       =SIMP(statut='f',typ='R' ),
              b_inst_init     =BLOC(condition = "INST_INIT != None",
-               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
                CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+               b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+               b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                   PRECISION       =SIMP(statut='o',typ='R',),),
              ),
            ),
            DEPL_INIT       =SIMP(statut='f',typ=cham_no_sdaster),
@@ -13402,6 +13785,10 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
            NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
          ),
+         EXCIT_RESU      =FACT(statut='f',max='**',
+           RESULTAT        =SIMP(statut='o',typ=dyna_trans ),
+           COEF_MULT       =SIMP(statut='o',typ='R' ),
+         ),
          AMOR_MODAL      =FACT(statut='f',
            MODE_MECA       =SIMP(statut='f',typ=mode_meca ),
            AMOR_REDUIT     =SIMP(statut='f',typ='R',max='**'),
@@ -13440,13 +13827,18 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
              PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
              RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
              PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",into=("CENTRALISE","CENTRALISE")),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
 
            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
          ),
@@ -13486,7 +13878,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 18/11/2008   AUTEUR ABBAS M.ABBAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -13505,6 +13897,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE GREFFET N.GREFFET
+#
 DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
             fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire",
             UIinfo={"groupes":("Résolution",)},
@@ -13552,7 +13945,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            REAC_VITE       =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          ),
          PROJ_MODAL      =FACT(statut='f',max='**',
-           MODE_MECA       =SIMP(statut='o',typ=mode_meca),
+           MODE_MECA       =SIMP(statut='o',typ=(mode_meca,base_modale)),
            NB_MODE         =SIMP(statut='f',typ='I',defaut= 9999 ),
            regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),),
            MASS_GENE       =SIMP(statut='f',typ=matr_asse_gene_r),
@@ -13565,12 +13958,6 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                                  into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS",
                                       "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
            ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_LINE  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_PUIS  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_POUTRE_GR  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-           CABLE           =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
            DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
       regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -13600,8 +13987,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
            NUME_ORDRE      =SIMP(statut='f',typ='I'),
            INST            =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+               PRECISION       =SIMP(statut='o',typ='R',),),
            NUME_DIDI       =SIMP(statut='f',typ='I'),
            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),),
@@ -13622,8 +14012,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
            NUME_ORDRE      =SIMP(statut='f',typ='I'),
            INST            =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+               PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+               PRECISION       =SIMP(statut='o',typ='R',),),
            NUME_DIDI       =SIMP(statut='f',typ='I'),
            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),),
@@ -13632,17 +14025,15 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
-              defaut="AUCUNE",
+              defaut="UNIFORME",
               fr="Méthode de subdivision des pas de temps en cas de non-convergence"
            ),
            b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'",
@@ -13651,7 +14042,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                 fr="Coefficient multiplicateur de la 1ère subdivision"),
              SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,
                 fr="Nombre de subdivision d'un pas de temps"),
-             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
+             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3,
                 fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
              SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
                 fr="Pas de temps en dessous duquel on ne subdivise plus"),
@@ -13676,10 +14067,6 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                 fr="% itération autorisée en plus"),
            ),
            # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
-           OPTI_LIST_INST  =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
-           NOM_CHAM        =SIMP(statut='f',typ='TXM',),
-           NOM_CMP         =SIMP(statut='f',typ='TXM',),
-           VALE            =SIMP(statut='f',typ='R'),
          ),
 #-------------------------------------------------------------------
          SCHEMA_TEMPS     =FACT(statut='o',
@@ -13687,30 +14074,35 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                                   into=("DIFF_CENT","TCHAMWA","NEWMARK","HHT","THETA_METHODE"),),
             b_tchamwa = BLOC(condition="SCHEMA=='TCHAMWA'",
                PHI          =SIMP(statut='f',typ='R',defaut= 1.05),),
+               
             b_newmark = BLOC(condition="SCHEMA=='NEWMARK'",
-               ALPHA        =SIMP(statut='f',typ='R',defaut= 0.25),
-               DELTA        =SIMP(statut='f',typ='R',defaut= 0.5),),
+               BETA         =SIMP(statut='f',typ='R',defaut= 0.25),
+               GAMMA        =SIMP(statut='f',typ='R',defaut= 0.5),),
+               
             b_hht     = BLOC(condition="SCHEMA=='HHT'",
                ALPHA        =SIMP(statut='f',typ='R',defaut= -0.3 ),
                MODI_EQUI    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),),
+               
             b_theta   = BLOC(condition="SCHEMA=='THETA_METHODE'",
                THETA         =SIMP(statut='f',typ='R',defaut= 1.,val_min=0.5,val_max=1. ),),
+               
             b_explicit= BLOC(condition="SCHEMA=='TCHAMWA'or SCHEMA=='DIFF_CENT'",
                STOP_CFL     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),),
                FORMULATION  =SIMP(statut='o',typ='TXM',into=("ACCELERATION",),),),
+               
             b_implicit= BLOC(condition="SCHEMA!='TCHAMWA'and SCHEMA!='DIFF_CENT'",
-               FORMULATION  =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE",),),),
+               FORMULATION  =SIMP(statut='o',max=1,typ='TXM',into=("DEPLACEMENT","VITESSE","ACCELERATION"),),),
          ),
          NEWTON          =FACT(statut='d',
-           REAC_INCR       =SIMP(statut='f',typ='I',defaut= 1 ),
+           REAC_INCR       =SIMP(statut='f',typ='I',defaut= 1,val_min=0 ),
            PREDICTION      =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
            MATRICE         =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
-           REAC_ITER       =SIMP(statut='f',typ='I',defaut= 0),
-           REAC_ITER_ELAS  =SIMP(statut='f',typ='I',defaut=0),
+           REAC_ITER       =SIMP(statut='f',typ='I',defaut= 0,val_min=0),
+           REAC_ITER_ELAS  =SIMP(statut='f',typ='I',defaut=0,val_min=0),
            PAS_MINI_ELAS   =SIMP(statut='f',typ='R',defaut=0.0E+0),
          ),
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
+           METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ),
            b_mult_front    =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -13734,6 +14126,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
            b_gcpc          =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué",
              PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
@@ -13743,12 +14136,16 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+              NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+              REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),            
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
-           ),
+           ),           
            SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
          ),
 #-------------------------------------------------------------------
@@ -13762,14 +14159,21 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
              FLUX_THER_REFE  =SIMP(statut='f',typ='R'),
              FLUX_HYD1_REFE  =SIMP(statut='f',typ='R'),
              FLUX_HYD2_REFE  =SIMP(statut='f',typ='R'),
-             VARI_REFE       =SIMP(statut='f',typ='R'),                     
+             VARI_REFE       =SIMP(statut='f',typ='R'),
            ),
            RESI_REFE_RELA  =SIMP(statut='f',typ='R'),
            RESI_GLOB_MAXI  =SIMP(statut='f',typ='R'),
            RESI_GLOB_RELA  =SIMP(statut='f',typ='R'),
            ITER_GLOB_MAXI  =SIMP(statut='f',typ='I',defaut=10),
            ITER_GLOB_ELAS  =SIMP(statut='f',typ='I',defaut=25),
+           TYPE            =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")),
+           b_plateau    =BLOC(condition = "TYPE == 'PLATEAU' ",
+             
+             PLATEAU_ITER    =SIMP(statut='f',typ='I',defaut=3, val_min =2),
+             PLATEAU_RELA    =SIMP(statut='f',typ='R',defaut=1E-3),                   
+           ),
            ARRET           =SIMP(statut='f',typ='TXM',defaut="OUI"),
+           
          ),
 #-------------------------------------------------------------------
          OBSERVATION     =FACT(statut='f',max='**',
@@ -13801,8 +14205,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
              PAS_OBSE        =SIMP(statut='f',typ='I'),
              LIST_ARCH       =SIMP(statut='f',typ=listis_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R',),),),
          ),
 
          AFFICHAGE      = FACT(statut='f',max=16,
@@ -13825,7 +14232,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                                       "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
                                       "MATR_ASSE",
                                       "ITER_DEBO",
-                                      "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
+                                      "CTCD_ITER","CTCD_GEOM","CTCD_NOEU",
                                       "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
                                       "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
                                      ),
@@ -13845,7 +14252,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
            PAS_ARCH        =SIMP(statut='f',typ='I' ),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ARCH_ETAT_INIT  =SIMP(statut='f',typ='TXM',into=("OUI",)),
            NUME_INIT       =SIMP(statut='f',typ='I'),
            DETR_NUME_SUIV  =SIMP(statut='f',typ='TXM',into=("OUI",)),
@@ -13906,23 +14313,23 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_fonction,
          OPTION          =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE BOYERE E.BOYERE
 DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
@@ -13930,7 +14337,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
                         +" par superposition modale ou par sous structuration",
                      reentrant='f',
             UIinfo={"groupes":("Résolution",)},
-      regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'), 
+      regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'),
               PRESENT_ABSENT('MODE_STAT','MODE_CORR'),),
          METHODE         =SIMP(statut='f',typ='TXM',defaut="EULER",
                                into=("EULER","NEWMARK","DEVOGE","ADAPT","ITMI") ),
@@ -13941,15 +14348,18 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
          LIST_AMOR       =SIMP(statut='f',typ=listr8_sdaster ),
          MODE_STAT       =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc) ),
          MODE_CORR       =SIMP(statut='f',typ=(mult_elas,mode_stat_acce) ,),
-         
+
          ETAT_INIT       =FACT(statut='f',
            regles=(EXCLUS('RESU_GENE','DEPL_INIT_GENE'),
                    EXCLUS('RESU_GENE','VITE_INIT_GENE'),),
            RESU_GENE       =SIMP(statut='f',typ=tran_gene ),
            b_resu_gene     =BLOC(condition = "RESU_GENE != None",
              INST_INIT       =SIMP(statut='f',typ='R' ),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R',),),
            ),
            DEPL_INIT_GENE  =SIMP(statut='f',typ=vect_asse_gene ),
            VITE_INIT_GENE  =SIMP(statut='f',typ=vect_asse_gene ),
@@ -13971,11 +14381,11 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
            LIST_ARCH       =SIMP(statut='f',typ=listis_sdaster ),
            PAS_ARCH        =SIMP(statut='f',typ='I' ),
          ),
-         
+
          NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 20 ),
          RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
          LAMBDA          =SIMP(statut='f',typ='R',defaut= 10. ),
-         
+
          EXCIT           =FACT(statut='f',max='**',
            regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'),
                    PRESENT_PRESENT('ACCE','VITE','DEPL'),
@@ -14113,6 +14523,42 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
            INST_INIT       =SIMP(statut='f',typ='R' ),
            INST_FIN        =SIMP(statut='f',typ='R' ),
          ),
+
+
+         SOLVEUR         =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires",
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="LDLT",into=("LDLT","MUMPS","MULT_FRONT",) ),
+
+
+           b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+
+           b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+
+
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+         ),
+
+
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
  )  ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
@@ -14262,7 +14708,7 @@ EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod,
            CRIT_EXTR       =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14319,8 +14765,11 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
                      EXCLUS( 'CHAM_EXCLU','NOM_CHAM' ),   ),
            CHAM_EXCLU      =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.E-3 ),
-           CRITERE         =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),defaut="RELATIF"),
+           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+              PRECISION       =SIMP(statut='o',typ='R',),),
            LIST_ARCH       =SIMP(statut='f',typ=listis_sdaster),
            PAS_ARCH        =SIMP(statut='f',typ='I'),
            NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
@@ -14390,7 +14839,7 @@ EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n',
 
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14443,10 +14892,14 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod,
          PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
          PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
          ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
-
-         # mots clés pour solveur GCPC :
-         PRE_COND        =SIMP(statut='f',typ='TXM',defaut="LDLT_INC",into=("LDLT_INC",) ),
-         NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),  
+         OUT_OF_CORE  =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+         
+         # mots clés pour solveur GCPC et PETSc :
+         PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+         b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+           NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+           REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+         ),
 
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
@@ -14682,32 +15135,6 @@ GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA",
              ),
    INIT_ALEA       =SIMP(statut='f',typ='I'),
 )
-#& MODIF COMMANDE  DATE 23/08/2004   AUTEUR CIBHHLV L.VIVAN 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-# ======================================================================
-IMPR_CHARGE=PROC(nom="IMPR_CHARGE",op= 158,
-                 fr="Impression des charges mécaniques de type ddl imposés et relations linéaires entre les ddl",
-                 UIinfo={"groupes":("Fonction",)},
-         UNITE           =SIMP(statut='f',typ='I',defaut=30),  
-         FORMAT          =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",) ),
-         VERSION         =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
-         CHARGE          =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**', ),
-)  ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -14884,7 +15311,7 @@ IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14930,9 +15357,11 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
            LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
            TOUT_MODE       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
            NUME_MODE       =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",
-                                   into=("RELATIF","ABSOLU") ),
+           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+              PRECISION       =SIMP(statut='o',typ='R',),),
            TOUT_CMP_GENE   =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
            NUME_CMP_GENE   =SIMP(statut='f',typ='I',max='**'),
            TOUT_CHAM       =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
@@ -15226,7 +15655,7 @@ IMPR_OAR =MACRO(nom="IMPR_OAR",op= impr_oar_ops, sd_prod=None,
    UNITE = SIMP(statut='f',typ='I',defaut=38),
    AJOUT = SIMP(statut='f', typ='TXM', defaut='NON', into=('OUI', 'NON')),
    );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15254,36 +15683,47 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
                                  into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ),
 
          b_format_resultat  =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
-           UNITE           =SIMP(statut='f',typ='I',defaut=8),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=8),
          ),
 
          b_format_ideas  =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
-           UNITE           =SIMP(statut='f',typ='I',defaut=30),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=30),
            VERSION         =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
          ),
 
          b_format_aster  =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER",
-           UNITE           =SIMP(statut='f',typ='I',defaut=26),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=26),
          ),
 
          b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM",
-           UNITE           =SIMP(statut='f',typ='I',defaut=37),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=37),
            NIVE_GIBI       =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
          ),
 
          b_format_ensight  =BLOC(condition="FORMAT=='ENSIGHT'",fr="unité logique d'impression au format ENSIGHT",
-           UNITE           =SIMP(statut='f',typ='I',defaut=31),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=31),
          ),
 
          b_format_med  =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED",
-           UNITE           =SIMP(statut='f',typ='I',defaut=80),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=80),
          ),
 
          b_format_gmsh  =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH",
-           UNITE           =SIMP(statut='f',typ='I',defaut=37),  
+           UNITE           =SIMP(statut='f',typ='I',defaut=37),
            VERSION         =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)),
          ),
 
+         RESTREINT   =FACT(statut='f',fr="Réduire le maillage et les champs imprimés sur un ensemble de mailles",max=1,
+           regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),),
+           GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+           MAILLE          =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+           TOUT_GROUP_MA   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
+           GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+           TOUT_GROUP_NO   =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON'),),
+           MODELE          =SIMP(statut='f',typ=modele_sdaster,
+                                 fr="Nécessaire s'il y a des cham_elem dans la sd_resultat à imprimer."),
+         ),
+
          RESU            =FACT(statut='o',max='**',
 
            regles=(AU_MOINS_UN('CHAM_GD','RESULTAT','MAILLAGE'),
@@ -15304,7 +15744,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
                                    fr="Liste des paramètres de sensibilité.",
                                    ang="List of sensitivity parameters"),),
 
-           b_partie        =BLOC(condition="""(AsType(RESULTAT) in (dyna_harmo, acou_harmo) or  
+           b_partie        =BLOC(condition="""(AsType(RESULTAT) in (dyna_harmo, acou_harmo) or
                           AsType(CHAM_GD) != carte_sdaster) and FORMAT in ('CASTEM', 'GMSH', 'MED')""",
              PARTIE          =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
            ),
@@ -15329,8 +15769,11 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
 
              b_acce_reel     =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)",
-               PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3),
-               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+                CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                     PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                     PRECISION       =SIMP(statut='o',typ='R',),),
              ),
            ),
 ###
@@ -15659,7 +16102,7 @@ INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster,
          TITRE          =SIMP(statut='f',typ='TXM',max='**'),
          INFO           =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15697,8 +16140,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
            INST_INIT       =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
            INST_FIN        =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
-           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ),
+           CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+              PRECISION       =SIMP(statut='o',typ='R'),),
          ),
          NOCI_SEISME     =FACT(statut='f',
            regles=(UN_PARMI('FONCTION','SPEC_OSCI',),),
@@ -15728,8 +16174,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti
            BORNE_INF       =SIMP(statut='f',typ='R',defaut= 0.05E+0 ),
            BORNE_SUP       =SIMP(statut='f',typ='R',defaut= 0.95E+0 ),
            b_acce_reel     =BLOC(condition="(INST_INIT != None)or(INST_FIN != None)or(FREQ_INIT != None)or(FREQ_FIN != None)",
-             PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3,val_min=0.E+0),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+                  CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                      PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                      PRECISION       =SIMP(statut='o',typ='R'),),
            ),
          ),
          MAX             =FACT(statut='f',fr="Extrémas locaux d'une fonction",
@@ -15743,8 +16192,11 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti
             FONCTION      =SIMP(statut='o',typ=fonction_sdaster),
             INST_INIT     =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
             INST_FIN      =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
-            CRITERE       =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
-            PRECISION     =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ),
+            CRITERE       =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+            b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0),),
+            b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R'),),
          ),     
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )
@@ -15869,7 +16321,7 @@ INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster,
          PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),  
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15920,11 +16372,15 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
             INST         =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ),
 #
             b_precision     =BLOC(condition="(INST != None)",
-              PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3,
-              fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),
-              CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
-              fr="Critère de précision sur le choix de l'instant associé",
-              ang="Accuracy criterium over instant choice" ),),
+                  CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),
+                  fr="Critère de précision sur le choix de l'instant associé",
+                  ang="Accuracy criterium over instant choice" ),
+                  b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                      PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
+                      fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),
+                  b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                      PRECISION       =SIMP(statut='o',typ='R',
+                      fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),),),
 #
             NOM_MAIL_MED =SIMP(statut='f',typ='TXM',),
                   ),
@@ -16198,7 +16654,7 @@ LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod,
          TYPE_RESU       =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16234,13 +16690,14 @@ LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
          INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
          LIST_INST       =SIMP(statut='f',typ=listr8_sdaster ),
          b_prec_crit     =BLOC(condition = "LIST_INST != None or INST != None",
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",
-                                   into=("RELATIF","ABSOLU") ),
-         ),
+               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+               b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+               b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                   PRECISION       =SIMP(statut='o',typ='R',),),),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 02/06/2008   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16385,6 +16842,8 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
            UNITE           =SIMP(statut='f',typ='I',defaut= 19 ),
 #           TEST            =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
            NOM_CHAM        =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
+           PROL_ZERO       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),
+             fr="Affecte des valeurs nulles la ou le champ n'est pas defini"),
            FORMAT_IDEAS    =FACT(statut='f',max='**',
              regles=(UN_PARMI('POSI_INST','POSI_FREQ'),),
              NOM_CHAM        =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()),
@@ -16400,6 +16859,12 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
              POSI_FREQ       =SIMP(statut='f',typ='I',min=2,max=2),
              NOM_CMP         =SIMP(statut='o',typ='TXM',max='**'),),
          ),
+             
+         b_mode   =BLOC(condition="((TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C') )and (FORMAT=='IDEAS')",
+             NUME_DDL        =SIMP(statut='f',typ=(nume_ddl_sdaster),max=1,
+                fr="Utile en dynamique pour pouvoir imposer la numérotation des cham_no."),     
+         ),
+
 # 1-3 ensight :
 # -------------
          b_ensight       =BLOC(condition="FORMAT=='ENSIGHT'",
@@ -16443,8 +16908,11 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
            LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
 
            b_acce_reel     =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
-             PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
            ),
          ),
 )  ;
@@ -16481,7 +16949,7 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster,
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          )  ;
 
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16502,16 +16970,18 @@ LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster,
 # RESPONSABLE ANDRIAM H.ANDRIAMBOLOLONA
 
 MAC_MODES=OPER(nom="MAC_MODES",op=  141,sd_prod=table_sdaster,
-               fr="Normalisation de modes propres",
+               fr="Critere orthogonalite de modes propres",
                reentrant='n',
-            UIinfo={"groupes":("Résolution",)},
-         BASE_1       =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
-         BASE_2       =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
-         MATR_ASSE       =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
+               UIinfo={"groupes":("Résolution",)},
+               regles=(PRESENT_PRESENT('IERI','MATR_ASSE'),),
+         BASE_1     =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb,base_modale) ),
+         BASE_2     =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_flamb,base_modale) ),
+         MATR_ASSE  =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
+         IERI       =SIMP(statut='f',typ='TXM',into=("OUI",),),
          TITRE      =SIMP(statut='f',typ='TXM',max='**'),
          INFO       =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16561,12 +17031,12 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
 #
 # 1. Le niveau d'information
 #
-  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)),
 #
 # 2. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_11",
-                        into=("V8_11", "V8_N", "V8_N_PERSO"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_5",
+                        into=("V9_5", "V9_N", "V9_N_PERSO"),
                         fr="Version de HOMARD",
                         ang="HOMARD release"),
 #
@@ -16692,12 +17162,17 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
       b_precision = BLOC(condition="(INST != None)",
                          fr="Choix de la précision du choix de l'instant",
                          ang="Selection for instant choice",
-        PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
-                         fr="Précision sur le choix de l'instant associé",
-                         ang="Accuracy over instant choice" ),
-        CRITERE   = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+        CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),
                          fr="Critère de précision sur le choix de l'instant associé",
-                         ang="Accuracy criterium over instant choice" ),
+                         ang="Accuracy criterium over instant choice"),
+        b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+            PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
+                             fr="Précision relative sur le choix de l'instant associé",
+                             ang="Relative accuracy over instant choice"),),
+        b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+            PRECISION       =SIMP(statut='o',typ='R',
+                             fr="Précision absolue sur le choix de l'instant associé",
+                             ang="Absolute accuracy over instant choice"),),
       ),
 #
     ),
@@ -16969,13 +17444,17 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
                          fr="Choix de la précision du choix de l'instant",
                          ang="Selection for instant choice",
 #
-        PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
-                         fr="Précision sur le choix de l'instant associé",
-                         ang="Accuracy over instant choice" ),
-#
-        CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
-                       fr="Critère de précision sur le choix de l'instant associé",
-                       ang="Accuracy criterium over instant choice" ),
+        CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),
+                         fr="Critère de précision sur le choix de l'instant associé",
+                         ang="Accuracy criterium over instant choice"),
+        b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+            PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,
+                             fr="Précision relative sur le choix de l'instant associé",
+                             ang="Relative accuracy over instant choice"),),
+        b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+            PRECISION       =SIMP(statut='o',typ='R',
+                             fr="Précision absolue sur le choix de l'instant associé",
+                             ang="Absolute accuracy over instant choice"),),
 #
       ),
 #
@@ -17022,7 +17501,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
                              ang="Incompatible elements for HOMARD" ),
 #
 ) ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17110,7 +17589,6 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma
 
          COMP_INCR       =FACT(statut='f',
            RELATION        =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
-           VMIS_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
            RESI_INTE_RELA  =SIMP(statut='f',typ='R'
                                 ,defaut= 1.0E-6),
            ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
@@ -17121,8 +17599,6 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma
 
          COMP_ELAS       =FACT(statut='f',
            RELATION        =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
-           ELAS            =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
-           ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
            RESI_INTE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
            ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
@@ -17131,7 +17607,33 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma
          ),
 
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+          METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
+          b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+            TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+            PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+            RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+            ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+            PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+            RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+            PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                  into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+            PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+            CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+            CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+            OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+            ),
+
+          b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+            ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+            PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+            b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+              NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+              REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+            ),
+            RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+            RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+            NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+          ),
            b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -17177,13 +17679,11 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=ma
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
@@ -17415,7 +17915,7 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=ma
 
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17519,7 +18019,6 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_
 
          COMP_INCR       =FACT(statut='f',
            RELATION        =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
-           VMIS_ISOT_TRAC  =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
            RESI_INTE_RELA  =SIMP(statut='f',typ='R',defaut=1.0E-6),
            ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut=10),
            ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut=0),
@@ -17529,8 +18028,6 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_
 
          COMP_ELAS       =FACT(statut='f',
            RELATION        =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
-           ELAS            =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
-           ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
            RESI_INTE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ITER_INTE_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
            ITER_INTE_PAS   =SIMP(statut='f',typ='I',defaut= 0 ),
@@ -17551,7 +18048,33 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_
          ),
 
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+  
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),
            b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -17596,13 +18119,11 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
@@ -17769,23 +18290,23 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=mail
 
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 30/06/2008   AUTEUR FLEJOU J-L.FLEJOU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE FLEJOU J.L.FLEJOU
 
@@ -17793,47 +18314,60 @@ from Macro.macr_cara_poutre_ops import macr_cara_poutre_ops
 
 MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=table_sdaster,
                        reentrant='n',
-          UIinfo={"groupes":("Modélisation",)},
-          fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section",
-          regles=(EXCLUS('SYME_X','GROUP_MA_BORD'),
-                  EXCLUS('SYME_Y','GROUP_MA_BORD'),),
-                 
-          UNITE_MAILLAGE  =SIMP(statut='f',typ='I',defaut= 20 ),  
-          ORIG_INER       =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0),
-                                fr="Point par rapport auquel sont calculées les inerties"),  
-          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-         
-          SYME_X          =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a x=0"),
-          SYME_Y          =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a y=0"),
-         
-          GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-          fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"),
-          
-          GROUP_MA_BORD   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                               fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"),
-         
-               b_gma_bord = BLOC( condition = "GROUP_MA_BORD != None",
-                            fr=" calcul des carac. mecaniques",
-                            regles=(UN_PARMI('NOEUD','GROUP_NO')),
-
-                    NOEUD           =SIMP(statut='f',typ=no,  max='**',
-                    fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
-                    GROUP_NO        =SIMP(statut='f',typ=grno,max='**',
-                    fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
-                    GROUP_MA_INTE   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                    fr="groupes de mailles linéiques bordant des trous dans la section"),
-                    ),
-                    
-               b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""",
-                           fr=" calcul des coef de cisaillement équivalents a un reseau de poutres",
-                            regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,),
-                            LONGUEUR        =SIMP(statut='f',typ='R',fr="Longueur du réseau de poutres"),  
-                            MATERIAU        =SIMP(statut='f',typ=mater_sdaster,fr="Materiau elastique lineaire du reseau"),
-                            LIAISON         =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"),
-                            fr="type de conditions aux limites sur le plancher supérieur" ),
-                              ), 
-                    )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+         UIinfo={"groupes":("Modélisation",)},
+         fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section",
+         regles=( EXCLUS('SYME_X','GROUP_MA_BORD'),
+                  EXCLUS('SYME_Y','GROUP_MA_BORD'),
+                ),
+
+         MAILLAGE       =SIMP(statut='f',typ=maillage_sdaster,
+                           fr="Nom du concept maillage"),
+         b_maillage=BLOC( condition = "MAILLAGE == None",
+            regles=( PRESENT_PRESENT('FORMAT','UNITE') ),
+            FORMAT         =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
+                              fr="Format du fichier"),
+            UNITE          =SIMP(statut='f',typ='I',defaut= 20,
+                              fr="Unite correspondant au format du fichier maillage"),
+         ),
+
+         ORIG_INER      =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0),
+                           fr="Point par rapport auquel sont calculées les inerties"),
+         INFO           =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+         SYME_X         =SIMP(statut='f',typ='TXM',into=("OUI",),
+                           fr="demi maillage par rapport a x=0"),
+         SYME_Y         =SIMP(statut='f',typ='TXM',into=("OUI",),
+                           fr="demi maillage par rapport a y=0"),
+
+         GROUP_MA       =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                           fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"),
+
+         GROUP_MA_BORD  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                           fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"),
+
+            b_gma_bord  =BLOC( condition = "GROUP_MA_BORD != None",
+               fr=" calcul des carac. mecaniques",
+               regles=(UN_PARMI('NOEUD','GROUP_NO')),
+               NOEUD           =SIMP(statut='f',typ=no,  max='**',
+                                 fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
+               GROUP_NO        =SIMP(statut='f',typ=grno,max='**',
+                                 fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
+               GROUP_MA_INTE   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                                 fr="groupes de mailles linéiques bordant des trous dans la section"),
+            ),
+
+            b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""",
+               fr=" calcul des coef de cisaillement équivalents a un reseau de poutres",
+               regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,),
+               LONGUEUR        =SIMP(statut='f',typ='R',
+                                 fr="Longueur du réseau de poutres"),
+               MATERIAU        =SIMP(statut='f',typ=mater_sdaster,
+                                 fr="Materiau elastique lineaire du reseau"),
+               LIAISON         =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"),
+                                 fr="type de conditions aux limites sur le plancher supérieur" ),
+            ),
+)
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17891,8 +18425,11 @@ MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_p
              LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
              INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
             )
 #& MODIF COMMANDE  DATE 06/05/2008   AUTEUR CORUS M.CORUS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -17936,7 +18473,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op=  81,sd_prod=macr_elem_dyna,
            VECT_ASSE_GENE  =SIMP(statut='o',typ=vect_asse_gene ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17981,6 +18518,8 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant=
          ),
          MASS_MECA       =FACT(statut='f',
          ),
+         AMOR_MECA       =FACT(statut='f',
+         ),
          CAS_CHARGE      =FACT(statut='f',max='**',
            NOM_CAS         =SIMP(statut='o',typ='TXM'),
            SUIV            =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
@@ -18438,7 +18977,7 @@ MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
          ),
 #
 );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18467,12 +19006,12 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
 #
 # 1. Le niveau d'information
 #
-  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+  INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4)),
 #
 # 2. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_11",
-                        into=("V8_11", "V8_N", "V8_N_PERSO"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_5",
+                        into=("V9_5", "V9_N", "V9_N_PERSO"),
                         fr="Version de HOMARD",
                         ang="HOMARD release"),
 #
@@ -18499,9 +19038,9 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
                       fr="Information complémentaire sur la frontière",
                       ang="Further information about boundary",
 #
-    GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                    fr="Groupes de mailles définissant la frontière",
-                    ang="Mesh groups which define the boundary" ),
+    GROUP_MA_FRONT = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                          fr="Groupes de mailles définissant la frontière",
+                          ang="Mesh groups which define the boundary" ),
 #
                     ) ,
 #
@@ -18544,7 +19083,7 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
                              fr="Acceptation d'éléments incompatibles avec HOMARD",
                              ang="Incompatible elements for HOMARD" ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18582,8 +19121,11 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table
              LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
              INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
            ),
 
 # extraction des résultats
@@ -18664,10 +19206,6 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table
 )  ;
 
 
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
-#MACRO_BASCULE_SCHEMA = MACRO(nom="MACRO_BASCULE_SCHEMA", op=macro_bascule_schema_ops, sd_prod=evol_noli,reentrant='f',
-
-
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -18753,7 +19291,7 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18777,7 +19315,8 @@ from Macro.macro_expans_ops import macro_expans_ops
 
 def macro_expans_prod(self, MODELE_MESURE, RESU_NX, RESU_EX, RESU_ET, RESU_RD, **args):
     RESU_EXP = MODELE_MESURE['MESURE']
-    for res in (RESU_NX, RESU_EX, RESU_ET, RESU_RD):
+    self.type_sdprod(RESU_NX, mode_meca)
+    for res in (RESU_EX, RESU_ET, RESU_RD):
         if isinstance(res, CO):
             if AsType(RESU_EXP) == mode_meca:
                 self.type_sdprod(res, mode_meca)
@@ -18797,6 +19336,8 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS",
                            MODELE          = SIMP(statut='o',typ=(modele_sdaster) ),
                            BASE            = SIMP(statut='o',typ=(mode_meca,base_modale,) ), 
                            NUME_MODE       = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0),
+                           NUME_ORDRE      = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0),
+
                                              ),
                         MODELE_MESURE   = FACT(statut='o',
                            MODELE          = SIMP(statut='o',typ=(modele_sdaster) ),
@@ -18804,6 +19345,8 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS",
                            NOM_CHAM        = SIMP(statut='f',typ='TXM',defaut="DEPL",
                                                   into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ),
                            NUME_MODE       = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0),
+                           NUME_ORDRE      = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**',defaut=0),
+
                                              ),
                         NUME_DDL       = SIMP(statut='f',typ=(nume_ddl_sdaster)),
                         RESU_NX        = SIMP(statut='f',typ=(mode_meca,dyna_harmo, CO)),
@@ -18823,7 +19366,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS",
                                         ),
                                              ),
                    )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18906,7 +19449,7 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro
            VECTEUR       =SIMP(statut='o',typ=CO),
          ),
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
            b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -18925,12 +19468,38 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro
              RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),
          ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
          NOEUD_DOUBLE    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
          AVEC_MODE_STAT  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
 )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 17/11/2008   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18964,13 +19533,13 @@ def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args):
 
     if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" ,
        "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA",
-       "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R",
+       "AMOR_MECA","IMPE_MECA",
        "ONDE_FLUI","MASS_MECA_DIAG","MECA_GYRO" ) : t=matr_asse_depl_r
 
     if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c
 
     if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" ,
-       "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r
+       "RIGI_THER_CONV_D",) : t=matr_asse_temp_r
 
     if opti == "RIGI_MECA_HYST"   : t= matr_asse_depl_c
 
@@ -18989,19 +19558,23 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,
          CHAR_CINE       =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ),
          NUME_DDL        =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)),
          SOLVEUR         =FACT(statut='d',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
          b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="Paramètres associés à la méthode multifrontale",
            RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
          ),
          b_ldlt          =BLOC(condition="METHODE=='LDLT'",fr="Paramètres associés à la méthode LDLT",
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
-         b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
-           RENUM         =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+         b_mumps         =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+           RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+           OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
          ),
          b_gcpc          =BLOC(condition="METHODE=='GCPC'",fr="Paramètres associés à la méthode gradient conjugué",
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
+         b_petsc         =BLOC(condition = "METHODE == 'PETSC'",fr="Paramètres de la méthode PETSC",
+           RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+         ),
          ),
 
          MATR_ASSE       =FACT(statut='o',max='**',
@@ -19012,8 +19585,7 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,
                                          "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU",
                                          "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR","MECA_GYRO",
                                          "RIGI_THER","MASS_THER",
-                                         "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",
-                                         "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",)
+                                         "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",)
                                    ),
 
              b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
@@ -19252,146 +19824,6 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 03/06/2008   AUTEUR BODEL C.BODEL 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-# RESPONSABLE BODEL C.BODEL
-
-from Macro.macro_visu_meidee_ops import macro_visu_meidee_ops
-
-def macro_visu_meidee_prod(self,RESU_FLUDELA,RESU_TURBULENT,RESU_MODIFSTRU,**args):
-
-    if RESU_FLUDELA != None:
-        for res in RESU_FLUDELA:
-            self.type_sdprod(res['TABLE'],table_sdaster)
-    if RESU_TURBULENT != None:
-        for res in RESU_TURBULENT:
-            self.type_sdprod(res['TABLE'],table_fonction)
-
-    MTYPES = {
-        'MODELE'    : modele_sdaster,
-        'MODE_MECA' : mode_meca,
-        'NUME_DDL'  : nume_ddl_sdaster,
-        'MAILLAGE'  : maillage_sdaster,
-        'MASS_MECA' : matr_asse_depl_r,
-        'RIGI_MECA' : matr_asse_depl_r,
-        'AMOR_MECA' : matr_asse_depl_r,
-        'MACR_ELEM' : macr_elem_stat,
-        'PROJ_MESU' : mode_gene,
-              }
-    if RESU_MODIFSTRU != None:
-        for res in RESU_MODIFSTRU:
-            for mc, typ in MTYPES.items():
-                if res[mc]:
-                    self.type_sdprod(res[mc], typ)
-    return None
-
-
-MACRO_VISU_MEIDEE=MACRO(nom       = 'MACRO_VISU_MEIDEE',
-                        op        = macro_visu_meidee_ops,
-                        sd_prod   = macro_visu_meidee_prod,
-                        reentrant = 'n',
-                        UIinfo    = {"groupes":("Outils métier",)},
-                        fr        = "Outil de post-traitement interactif pour Meidee ",
-                        UNITE_FIMEN = SIMP( statut='f',typ='I',max='**' ),
-                        INTERACTIF  = SIMP( statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ),
-                        RESU_FLUDELA     = FACT( statut='f',max='**',
-                                                 TABLE = SIMP(statut='f', typ=CO),
-                                                ),
-                        RESU_TURBULENT   = FACT( statut='f',max='**',
-                                                 TABLE = SIMP(statut='f', typ=CO),
-                                                ),
-                        RESU_MODIFSTRU = FACT( statut='f', max=1,
-                                               MODELE=SIMP(statut='f',typ=CO,defaut=None),
-                                               MODE_MECA=SIMP(statut='f',typ=CO,defaut=None),
-                                               MAILLAGE=SIMP(statut='f',typ=CO,defaut=None),
-                                               NUME_DDL=SIMP(statut='f',typ=CO,defaut=None),
-                                               MASS_MECA=SIMP(statut='f',typ=CO,defaut=None),
-                                               RIGI_MECA=SIMP(statut='f',typ=CO,defaut=None),
-                                               AMOR_MECA=SIMP(statut='f',typ=CO,defaut=None),
-                                               MACR_ELEM=SIMP(statut='f',typ=CO,defaut=None),
-                                               PROJ_MESU=SIMP(statut='f',typ=CO,defaut=None),
-                                             ),
-                        UNITE_RESU = SIMP( statut='f',typ='I'),
-
-                        b_inter    = BLOC( condition="INTERACTIF=='NON'",
-
-                             EXPANSION        = FACT( statut='f',max='**',
-                                                      CALCUL           = SIMP(statut='o',typ=mode_meca),
-                                                      NUME_MODE_CALCUL = SIMP(statut='f',typ='I',validators=NoRepeat(),
-                                                                              max='**',defaut=0),
-                                                      MESURE           = SIMP(statut='o',typ=mode_meca),
-                                                      NUME_MODE_MESURE = SIMP(statut='f',typ='I',validators=NoRepeat(),
-                                                                              max='**',defaut=0),
-                                                      RESOLUTION       = SIMP(statut='f',typ='TXM',defaut='SVD',into=('SVD','LU')),
-                                                      b_reso           = BLOC(condition = "RESOLUTION=='SVD'",
-                                                                              EPS = SIMP(statut='f',typ='R', defaut = 0.)
-                                                                       )
-                                                    ),
-                             FLUIDE_ELASTIQUE = FACT( statut='f', max='**',
-                                                      MESURE1 = SIMP(statut='o',typ=mode_meca),
-                                                      MESURE2 = SIMP(statut='o',typ=mode_meca),
-                                                      MESURE3 = SIMP(statut='o',typ=mode_meca),
-                                                      RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
-                                                      b_base   = BLOC(condition = "RESU_EXPANSION=='NON'",
-                                                                      BASE = SIMP(statut='o',typ=mode_meca),
-                                                                     ) 
-                                                    ),
-                             TURBULENT        = FACT( statut='f',max='**',   
-                                                      ALPHA   = SIMP(statut='f',typ='R', defaut = 0.),
-                                                      EPS     = SIMP(statut='f',typ='R', defaut = 0.),
-                                                      OBSERVABILITE  = SIMP(statut='o',typ=(mode_meca, base_modale)),
-                                                      COMMANDABILITE = SIMP(statut='o',typ=(mode_meca, base_modale)),
-                                                      INTE_SPEC      = SIMP(statut='o',typ=table_sdaster),
-                                                      RESU_EXPANSION = SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
-                                                      b_base         = BLOC(condition = "RESU_EXPANSION=='NON'",
-                                                                            BASE = SIMP(statut='o',typ=mode_meca),
-                                                                           ),
-                                                     ),
-                             MODIFSTRUCT = FACT( statut='f', max=1,
-                                                 MESURE = SIMP(statut='o', typ=mode_meca),
-                                                 MODELE_SUP = SIMP(statut='o', typ=modele_sdaster),
-                                                 MATR_RIGI = SIMP(statut='o', typ=matr_asse_depl_r),
-                                                 RESOLUTION = SIMP(statut='o', typ='TXM',
-                                                               into=('ES', 'LMME')),
-                                                 b_resol = BLOC( condition = "RESOLUTION=='LMME'",
-                                                                 MATR_MASS = SIMP(statut='o', typ=matr_asse_depl_r),
-                                                                ),
-                                                 NUME_MODE_MESU   = SIMP(statut='o', typ='I',max='**'),
-                                                 NUME_MODE_CALCUL = SIMP(statut='o', typ='I',max='**'),
-                                                 MAILLE_MODIF = SIMP(statut='o', typ=maillage_sdaster),
-                                                 MODELE_MODIF = SIMP(statut='o', typ=modele_sdaster),
-                                               ),
-
-                            # Si on realise une modification structurale, on donne les DDL capteurs et interface
-                            b_inter    = BLOC( condition="MODIFSTRUCT!=None",
-                                GROUP_NO_CAPTEURS  = FACT( statut='f', max='**',
-                                                           GROUP_NO = SIMP(statut='f',typ='TXM', max='**'),
-                                                           NOM_CMP  = SIMP(statut='f',typ='TXM', max='**'),
-                                                         ),
-                                GROUP_NO_EXTERIEUR = FACT( statut='f', max='**',
-                                                           GROUP_NO = SIMP(statut='f',typ='TXM', max='**'),
-                                                           NOM_CMP  = SIMP(statut='f',typ='TXM', max='**'),
-                                                         ),
-                                              ),
-                                          ),
-                        );
-
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -19560,7 +19992,7 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
          ELEMENT         =FACT(statut='f',),
 
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -19658,19 +20090,24 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
              RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
              ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
              PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
              PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
                                    into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
 
            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
          ),
@@ -19980,23 +20417,23 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45,sd_prod=mode_iter_simult_pr
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),        
 )  ;
-#& MODIF COMMANDE  DATE 05/05/2008   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE NISTOR I.NISTOR
 
@@ -20045,9 +20482,66 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod,
              regles=(UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
              TOUT_CMP        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              AVEC_CMP        =SIMP(statut='f',typ='TXM',max='**'),
-             SANS_CMP        =SIMP(statut='f',typ='TXM',max='**'), 
-        ),
+             SANS_CMP        =SIMP(statut='f',typ='TXM',max='**'),
+           ),
+         ),
+
+
+         SOLVEUR         =FACT(statut='d', fr="Méthode de résolution des systèmes linéaires",
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","PETSC") ),
+
+
+           b_ldlt          =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+
+           b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+             NPREC           =SIMP(statut='f',typ='I',defaut=8),
+             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+           ),
+
+
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),
+
+           b_gcpc         =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+             NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.E-6),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
+           ),
          ),
+
+
+
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
 )  ;
@@ -20085,23 +20579,23 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR KHAM M.KHAM 
+#& MODIF COMMANDE  DATE 14/10/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE PELLET J.PELLET
 MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
@@ -20111,7 +20605,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
             UIinfo={"groupes":("Maillage",)},
       regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
                        'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
-                       'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB8','SYMETRIE',
+                       'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB','SYMETRIE',
                        'ORIE_LIGNE',),
               PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
                        'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
@@ -20150,7 +20644,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
          DEFORME         =FACT(statut='f',
            OPTION          =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ),
            DEPL            =SIMP(statut='o',typ=cham_no_sdaster ),
-        b_deform        =BLOC(condition = "OPTION=='TRAN_APPUI'", 
+        b_deform        =BLOC(condition = "OPTION=='TRAN_APPUI'",
            GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),
            GROUP_NO_STRU  = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),),
          ),
@@ -20173,31 +20667,32 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
          ),
          ORIE_PEAU_2D    =FACT(statut='f',max='**',
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+           GROUP_MA_SURF   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
          ),
          ORIE_PEAU_3D    =FACT(statut='f',max='**',
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            GROUP_MA_VOLU   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
          ),
-         ORIE_SHB8       =FACT(statut='f',max=1,
+         ORIE_SHB       =FACT(statut='f',max=1,
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
          ),
          ORIE_NORM_COQUE =FACT(statut='f',max='**',
-           regles=(EXCLUS('NOEUD','GROUP_NO'),
-                   PRESENT_PRESENT('NOEUD','VECT_NORM'),
-                   PRESENT_PRESENT('GROUP_NO','VECT_NORM'),),
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            VECT_NORM       =SIMP(statut='f',typ='R',max=3),
-           NOEUD           =SIMP(statut='f',typ=no),
-           GROUP_NO        =SIMP(statut='f',typ=grno),
+           b_vect_norm     =BLOC(condition = "VECT_NORM != None",
+             regles=UN_PARMI('NOEUD','GROUP_NO'),
+             NOEUD           =SIMP(statut='f',typ=no),
+             GROUP_NO        =SIMP(statut='f',typ=grno),
+           ),
          ),
          ORIE_LIGNE =FACT(statut='f',max='**',
-           regles=(EXCLUS('NOEUD','GROUP_NO'),
-                   PRESENT_PRESENT('NOEUD','VECT_TANG'),
-                   PRESENT_PRESENT('GROUP_NO','VECT_TANG'),),
            GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
            VECT_TANG       =SIMP(statut='f',typ='R',max=3),
-           NOEUD           =SIMP(statut='f',typ=no),
-           GROUP_NO        =SIMP(statut='f',typ=grno),
+           b_vect_tang     =BLOC(condition = "VECT_TANG != None",
+             regles=UN_PARMI('NOEUD','GROUP_NO'),
+             NOEUD           =SIMP(statut='f',typ=no),
+             GROUP_NO        =SIMP(statut='f',typ=grno),
+           ),
          ),
          PLAQ_TUBE       =FACT(statut='f',
            DEXT            =SIMP(statut='o',typ='R' ),
@@ -20223,7 +20718,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
            VECT_X          =SIMP(statut='o',typ='R',min=2,max=3),
            VECT_Y          =SIMP(statut='f',typ='R',min=2,max=3),
          ),
-         ECHELLE         =SIMP(statut='f',typ='R',),        
+         ECHELLE         =SIMP(statut='f',typ='R',),
          TRANSLATION     =SIMP(statut='f',typ='R',min=2,max=3),
          ROTATION        =FACT(statut='f',max='**',
            POIN_1           =SIMP(statut='o',typ='R',min=2,max=3),
@@ -20309,7 +20804,7 @@ MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=table_fonction,
          V_USUR_OBST     =SIMP(statut='f',typ='R',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20349,8 +20844,11 @@ MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n'
          LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
          LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
 
-         PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
          CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
 
          MODI_CHAM       =FACT(statut='o',max='**',
            GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
@@ -20443,7 +20941,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op=  37,sd_prod=norm_mode_prod,
          TITRE      =SIMP(statut='f',typ='TXM',max='**'),
          INFO       =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 08/08/2008   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20472,7 +20970,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
          b_modele        =BLOC(condition = "MODELE != None",
            CHARGE     =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),),
          ),
-         METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","PETSC","MUMPS") ),
          b_mult_front    =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale",
            RENUM           =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
          ),
@@ -20482,7 +20980,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
          b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
            RENUM         =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
          ),
-         b_gcpc          =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué",
+         b_gcpc          =BLOC(condition="METHODE=='GCPC' or METHODE=='PETSC'",fr="paramètres associés à la GCPC ou PETSc",
            RENUM           =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK"  ),
          ),
          INFO            =SIMP(statut='f',typ='I',into=(1,2)),
@@ -20806,23 +21304,23 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster,
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
-#& MODIF COMMANDE  DATE 20/05/2008   AUTEUR MAHFOUZ D.MAHFOUZ 
+#& MODIF COMMANDE  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE DESROCHES X.DESROCHES
 POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
@@ -20859,8 +21357,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        RESULTAT       = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas,
                                                              fourier_elas,dyna_trans) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -20895,8 +21396,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        RESULTAT       = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -20934,8 +21438,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        RESULTAT       = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -20966,8 +21473,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        RESULTAT       = SIMP(statut='o',typ=(evol_noli) ),
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -20993,8 +21503,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        RESULTAT       = SIMP(statut='o',typ=(evol_noli) ),
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21007,16 +21520,20 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                TOUT         = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                                MAILLE       = SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
                                GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-                               NOM_CHAM       = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
-                               NOM_CMP        = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+                               NOM_CHAM     = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+                               NOM_CMP      = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+                               DEJA_INTEGRE = SIMP(statut='f',typ='TXM',into=("OUI","NON",),),
                               ),
          b_integrale = BLOC(condition = "( INTEGRALE != None )",
                        fr="calcul de la moyenne d'une composante",
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
-                       RESULTAT       = SIMP(statut='o',typ=(evol_noli,evol_ther,evol_elas) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       RESULTAT       = SIMP(statut='o',typ=(evol_noli,evol_ther,evol_elas,evol_char) ),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21031,17 +21548,20 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                                PRESENT_PRESENT('CHAM_GD','MODELE'),
                                PRESENT_PRESENT('RESULTAT','NOM_CHAM'),
                                AU_MOINS_UN('TOUT','GROUP_MA'),),
-                       TOUT         = SIMP(statut='f',typ='TXM',into=("OUI",) ),                          
-                       GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),           
+                       TOUT         = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                       GROUP_MA     = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
                        RESULTAT       = SIMP(statut='f',typ=(evol_noli,evol_ther,evol_elas) ),
-                       NOM_CHAM       = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),                
+                       NOM_CHAM       = SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        MODELE         = SIMP(statut='f',typ=modele_sdaster),
-                       NOM_CMP        = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),        
+                       NOM_CMP        = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
               b_minmax = BLOC(condition = "( RESULTAT != None )",
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                              PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                              CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                              CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                              b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                                  PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                              b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                                  PRECISION       =SIMP(statut='o',typ='R',),),
                               TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                               NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                               LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21075,8 +21595,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        RESULTAT       = SIMP(statut='f',typ=(evol_noli) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21108,8 +21631,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        CHAM_GD        = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
                        RESULTAT       = SIMP(statut='f',typ=(evol_noli) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21132,8 +21658,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        RESULTAT       = SIMP(statut='o',typ=(evol_noli) ),
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                           PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21156,8 +21685,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        RESULTAT       = SIMP(statut='o',typ=(evol_noli) ),
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21178,8 +21710,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
                        MODE_FOURIER   = SIMP(statut='f',typ='I',defaut=0),
                        RESULTAT       = SIMP(statut='o',typ=(evol_noli) ),
                        regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                          PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                          PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                        NUME_ORDRE     = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
                        LIST_ORDRE     = SIMP(statut='f',typ=listis_sdaster),
@@ -21243,8 +21778,11 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
          b_trav_ext = BLOC(condition = "( TRAV_EXT != None )",
                        fr="calcul du travail des efforts extérieurs",
                        RESULTAT       = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ),
-                       PRECISION      = SIMP(statut='f',typ='R',defaut= 1.0E-3),
-                       CRITERE        = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+                       CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+                       b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+                       b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                           PRECISION       =SIMP(statut='o',typ='R',),),
                        TOUT_ORDRE     = SIMP(statut='f',typ='TXM',into=("OUI",) ),
          ),
 
@@ -21486,7 +22024,7 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
       
       INFO         = SIMP(statut='f', typ='I', defaut=1, into=(1, 2),),
 )
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR GALENNE E.GALENN
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21539,6 +22077,8 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
          b_fissure   =BLOC (condition="(FISSURE!= None)",
                          MAILLAGE       = SIMP(statut='o',typ=maillage_sdaster),
                          NB_NOEUD_COUPE = SIMP(statut='f',typ='I' ,defaut=5 ),
+                         NB_POINT_FOND  = SIMP(statut='f',typ='I' ,),
+                         NUME_FOND      = SIMP(statut='f',typ='I',defaut=1),
                          DTAN_ORIG      = SIMP(statut='f',typ='R',max='**'),
                          DTAN_EXTR      = SIMP(statut='f',typ='R',max='**'),
                          ),
@@ -21550,7 +22090,7 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
                              fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"),
          TABL_DEPL_INF =SIMP(statut='f',typ=table_sdaster,
                              fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"),
-         ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
+         ABSC_CURV_MAXI=SIMP(statut='o',typ='R',
                              fr="Distance maximum à partir du fond de fissure à utiliser pour le calcul"),  
          PREC_VIS_A_VIS= SIMP(statut='f',typ='R',defaut=0.1),
          TOUT_ORDRE    =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -21559,12 +22099,15 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
          INST          =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
          LIST_INST     =SIMP(statut='f',typ=listr8_sdaster),
              b_acce_reel     =BLOC(condition="(INST != None)or(LIST_INST != None)",
-               PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),
                CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+               b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+               b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                   PRECISION       =SIMP(statut='o',typ='R',),),
              ),
          SYME_CHAR       =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS") ),
          INFO          =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-         VECT_K1       =SIMP(statut='f',typ='R',max=3,
+         VECT_K1       =SIMP(statut='f',typ='R',max=3,min=3,
                              fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"),  
          TITRE         =SIMP(statut='f',typ='TXM',max='**'),  
 )  ;
@@ -21610,7 +22153,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster,
          ),
          TITRE         = SIMP(statut='f',typ='TXM',max='**'),  
 );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21667,9 +22210,11 @@ POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster,
         LIST_ORDRE      =SIMP(statut='f',typ=listis_sdaster),
         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
         LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-        PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
-
+        b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6),),
+        b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+           PRECISION       =SIMP(statut='o',typ='R'),),
         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
         TITRE           =SIMP(statut='f',typ='TXM'),
 )
@@ -21706,7 +22251,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
     INFO           =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
 
 );                     
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 03/11/2008   AUTEUR MACOCCO K.MACOCCO 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21759,10 +22304,12 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
            LIST_INST       =SIMP(statut='f',typ=listr8_sdaster ),
            b_inst          =BLOC(condition = "(INST != None) or (LIST_INST != None)" ,
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
-                                 ), 
-                             ),
+               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+               b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+               b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                   PRECISION       =SIMP(statut='o',typ='R',),),),
+           ),
          ),
 
 # ======================================================================
@@ -21779,7 +22326,6 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                            regles=(UN_PARMI('MX','MX_TUBU'),),
            NUME_CHAR     =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
            NOM_CHAR      =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
-           TYPE_CHAR     =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
            MX            =SIMP(statut='f',typ='R',fr="moment suivant x", ),
            MX_TUBU       =SIMP(statut='f',typ='R',fr="moment suivant x, tubulure", ),
            b_1_tenseur     =BLOC( condition = "MX != None",
@@ -21855,15 +22401,25 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
            TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
                               fr="table relevé des contraintes sous chargement thermique seul" ),
                            ),
+         SEISME         =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang",
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
+              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
+              NUME_GROUPE      =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ),
+              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
+              NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
+                               ),
          SITUATION         =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
               NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NB_CYCL_SEISME   =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
               NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
               NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
               COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
-              NUME_GROUPE      =SIMP(statut='f',typ='I',max=2,
-                 fr="numéro du groupe de la situation,si 2 numéros cette situation est une situation de passage" ),
-              NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
+              NUME_GROUPE      =SIMP(statut='f',typ='I',
+                                     fr="numéros des groupes de la situation" ),
+              NUME_PASSAGE     =SIMP(statut='f',typ='I',min=2,max=2,
+                                     fr="numéro des situations de passage" ),
+              NUME_RESU_THER   =SIMP(statut='f',typ='I',max=1,fr="numeros de transitoires thermiques" ),
               CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
               CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
               PRES_A           =SIMP(statut='o',typ='R',fr="pression etat A"),
@@ -21891,7 +22447,6 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
            regles=(UN_PARMI('CHAM_GD','RESULTAT'),),
            NUME_CHAR     =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
            NOM_CHAR      =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
-           TYPE_CHAR     =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
            CHAM_GD         =SIMP(statut='f',typ=cham_gd_sdaster),
            RESULTAT        =SIMP(statut='f',typ=resultat_sdaster),
            b_extrac        =BLOC(condition="RESULTAT != None",
@@ -21903,8 +22458,11 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
              INST            =SIMP(statut='f',typ='R',),
              NOEUD_CMP       =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
              b_acce_reel     =BLOC(condition="(INST != None)",
-               PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3),
-               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), ),
+               CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+               b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                   PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+               b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                   PRECISION       =SIMP(statut='o',typ='R',),),
              ),
            ),
                           ),
@@ -21943,14 +22501,25 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
             ),
                            ),
+         SEISME         =FACT(statut='f',max='**',fr="Situation séisme",ang="situation_ang",
+              NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
+              NB_CYCL_SEISME   =SIMP(statut='o',typ='I',fr="nombre de cycles associé au séisme" ),
+              NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
+              NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
+              NUME_GROUPE      =SIMP(statut='o',typ='I',fr="numéros du groupe de la situation" ),
+              CHAR_ETAT        =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
+              NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
+              TEMP_REF         =SIMP(statut='f',typ='R',fr="temperature référence"),
+                               ),
          SITUATION         =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
               NB_OCCUR         =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
-              NB_CYCL_SEISME   =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
               NUME_SITU        =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
               NOM_SITU         =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
               COMBINABLE       =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
-              NUME_GROUPE      =SIMP(statut='f',typ='I',max=2,
-                 fr="numéro du groupe de la situation,si 2 numéros cette situation est une situation de passage" ),
+              NUME_GROUPE      =SIMP(statut='f',typ='I',
+                                     fr="numéros des groupes de la situation" ),
+              NUME_PASSAGE     =SIMP(statut='f',typ='I',min=2,max=2,
+                                     fr="numéro des situations de passage" ),
               NUME_RESU_THER   =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
               CHAR_ETAT_A      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
               CHAR_ETAT_B      =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
@@ -21961,7 +22530,7 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
                                ),
                ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 # ======================================================================
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22049,8 +22618,11 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f'
              LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
              INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),  
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6),  
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
            ),
 
            b_extrema   =BLOC(condition="OPERATION == 'EXTREMA'",
@@ -22235,7 +22807,7 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f',
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22277,11 +22849,13 @@ POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,reentrant='n',
          b_evol_noli     =BLOC(condition="EVOL_NOLI != None",
            INST_MAX        =SIMP(statut='o',typ='R'),  
          ),
-         PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),  
-         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
-
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 16/09/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22344,13 +22918,13 @@ POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',
            ENVIMA          =SIMP(fr="imprime les valeurs définies dans ENVIMA",
                                  statut='f',typ='TXM',into=('TEST',)),
          ),
-         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
+         MEMOIRE         =FACT(fr="mode de gestion mémoire utilisé",statut='d',min=1,max=1,
            GESTION         =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
            TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
            TAILLE          =SIMP(statut='f',typ='I'),
            TAILLE_BLOC     =SIMP(statut='f',typ='R',defaut=800.),
            PARTITION       =SIMP(statut='f',typ='R' ),
-           DYNAMIQUE       =SIMP(statut='f',typ='I'),
+           DYNAMIQUE       =SIMP(statut='f',typ='I',defaut=1),
          ),
  
          RESERVE_CPU     =FACT(fr="reserve de temps pour terminer une execution",statut='d',max=1,
@@ -22637,7 +23211,7 @@ PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op=  71,sd_prod=matr_asse_gene_prod,
          MATR_ASSE_GENE  =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ),
 )  ;
 
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22661,7 +23235,7 @@ def proj_mesu_modal_prod(MODELE_MESURE,**args):
      if  AsType(vale) == dyna_trans   : return tran_gene
      if  AsType(vale) == dyna_harmo   : return harm_gene
      if  AsType(vale) == mode_meca    : return mode_gene
-#     if  AsType(vale) == mode_meca_c  : return mode_gene_c
+     if  AsType(vale) == mode_meca_c  : return mode_gene
      if  AsType(vale) == base_modale  : return mode_gene
      raise AsException("type de concept resultat non prevu")
 
@@ -22771,6 +23345,97 @@ PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op=  72,sd_prod=vect_asse_gene,
          VECT_ASSE       =SIMP(statut='f',typ=cham_no_sdaster),
          VECT_ASSE_GENE  =SIMP(statut='f',typ=vect_asse_gene ),
 )  ;
+#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR GALENNE E.GALENNE 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE GALENNE E.GALENNE
+
+
+from Macro.propa_fiss_ops import propa_fiss_ops
+
+def propa_fiss_prod(self,**args):
+  if  args.has_key('MA_TOT2')  : 
+      MA_TOT2 = args['MA_TOT2']
+      self.type_sdprod(MA_TOT2,maillage_sdaster)
+  if args.has_key('MA_XFEM2')  :
+      MA_XFEM2 = args['MA_XFEM2']
+      self.type_sdprod(MA_XFEM2,maillage_sdaster)
+  if args.has_key('FISSURE')  :
+      FISSURE = args['FISSURE']
+      self.type_sdprod(FISSURE,fiss_xfem)
+  return None
+
+PROPA_FISS=MACRO(nom="PROPA_FISS",op=propa_fiss_ops,sd_prod=propa_fiss_prod,
+            fr="Propagation de fissure avec X-FEM",reentrant='n',
+            UIinfo={"groupes":("Post traitements",)},
+
+        METHODE_PROPA = SIMP(statut='o',typ='TXM',
+                               into=("HAMILTON","MAILLAGE","INITIALISATION") ),
+            
+        b_hamilton    =BLOC(condition="(METHODE_PROPA=='HAMILTON')",
+              MODELE        =SIMP(statut='o',typ=modele_sdaster),
+              RAYON          =SIMP(statut='o',typ='R',),
+              METHODE =SIMP(statut='f',typ='TXM',into=("SIMPLEXE","UPWIND",),defaut="SIMPLEXE"),
+              FISSURE =  SIMP(statut='o',typ=CO),
+              TABLE   =       SIMP(statut='o',typ=table_sdaster),
+                                ),          
+
+        b_maillage    =BLOC(condition="(METHODE_PROPA=='MAILLAGE')",
+               MA_STRUC       = SIMP(statut='o',typ=maillage_sdaster), 
+               MA_XFEM1       = SIMP(statut='o',typ=maillage_sdaster), 
+               FISSURE1       = SIMP(statut='o',typ=fiss_xfem),
+               DTAN_ORIG      = SIMP(statut='f',typ='R',max=3),
+               DTAN_EXTR      = SIMP(statut='f',typ='R',max=3),
+               METHODE_POSTK  = SIMP(statut='f',typ='I',into=(1,2,3),max=1),
+               ITERATION      = SIMP(statut='o',typ='I',max=1),
+               HYPOTHESE      = SIMP(statut='f',typ='TXM',into=("PLAN","NON_PLAN"),defaut="NON_PLAN"),
+               MA_XFEM2       = SIMP(statut='f',typ=CO), 
+               MA_TOT2        = SIMP(statut='o',typ=CO), 
+               TABLE          = SIMP(statut='o',typ=table_sdaster),
+                                ),      
+                                    
+        b_init    =BLOC(condition="(METHODE_PROPA=='INITIALISATION')",
+               MA_STRUC    = SIMP(statut='o',typ=maillage_sdaster), 
+               FORM_FISS   = SIMP(statut='o',typ='TXM', into=("DEMI_DROITE","DEMI_PLAN"), ),
+               PFON        = SIMP(statut='f',typ='R',max=3),
+               DTAN        = SIMP(statut='o',typ='R',min=3,max=3),
+               POINT_ORIG        = SIMP(statut='f',typ='R',min=3,max=3),
+               POINT_EXTR        = SIMP(statut='f',typ='R',min=3,max=3),
+               NB_POINT_FOND   = SIMP(statut='f',typ='I',),
+               regles=(PRESENT_PRESENT('POINT_ORIG','POINT_EXTR',),
+                       UN_PARMI('PFON','POINT_ORIG'),),
+               MA_TOT2     = SIMP(statut='o',typ=CO), 
+               MA_XFEM2       = SIMP(statut='f',typ=CO), 
+                                ),          
+       
+        LOI_PROPA     =FACT(statut='f',max=1,
+               LOI =SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"),
+               b_paris  =BLOC( condition = "LOI=='PARIS'",
+                     C        = SIMP(statut='f',typ='R',),
+                     M        = SIMP(statut='o',typ='R',),
+                     DA_MAX   = SIMP(statut='f',typ='R',max=1),
+                     regles=(UN_PARMI('C','DA_MAX'),),
+                     ),
+            ),
+            
+        INFO          = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+)
+
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22861,7 +23526,7 @@ RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster,
          ITER_GLOB_MAXI  =SIMP(statut='f',typ='I',defaut= 10 ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
                        )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22926,8 +23591,11 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
            LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
            NUME_MODE       =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
            b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
              INTERP_NUME     =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
            ),
          ),
@@ -23091,7 +23759,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23118,8 +23786,11 @@ RECU_GENE=OPER(nom="RECU_GENE",op=  76,sd_prod=vect_asse_gene,reentrant='n',
          INST            =SIMP(statut='o',typ='R' ),
          NOM_CHAM        =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ),
          INTERPOL        =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
-         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ),
-         PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
 )  ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -23150,10 +23821,189 @@ RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
          NOM_PARA        =SIMP(statut='f',typ='TXM',max='**'),  
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),  
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 08/08/2008   AUTEUR DESOZA T.DESOZA 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE PELLET J.PELLET
+
+RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f',
+               fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+
+                  "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné",
+               UIinfo={"groupes":("Résolution",)},
+         MATR           =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
+                                               matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
+         CHAM_NO         =SIMP(statut='o',typ=cham_no_sdaster),
+         CHAM_CINE       =SIMP(statut='f',typ=cham_no_sdaster),
+
+         # mot-clé commun aux solveurs MUMPS, GCPC et PETSc:
+         RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.E-6),
+
+         # mot-clé commun aux solveurs GCPC et PETSc:
+         NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
+         MATR_PREC       =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+
+         # mots-clés pour solveur PETSc:
+         ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+
+         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+         INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
+)  ;
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE DEVESA G.DEVESA
+def rest_cond_tran_prod(RESULTAT,**args ):
+  if AsType(RESULTAT) == evol_noli  : return dyna_trans
+  if AsType(RESULTAT) == dyna_trans : return dyna_trans
+
+  raise AsException("type de concept resultat non prevu")
+
+REST_COND_TRAN=OPER(nom="REST_COND_TRAN",op=  78,sd_prod=rest_cond_tran_prod,
+                    fr="Restituer dans la base physique des résultats issus d'un calcul" 
+                        +"non-lineaire avec projection modale ou d'un calcul transitoire linear"
+                        +"avec condensation dynamique",
+                    reentrant='n',
+            UIinfo={"groupes":("Matrices/vecteurs",)},
+        regles=(
+                EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'),          
+                EXCLUS('NOEUD','GROUP_NO'),
+                EXCLUS('MAILLE','GROUP_MA'),
+                EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'),),
+         RESULTAT        =SIMP(statut='f',typ=(evol_noli,dyna_trans) ),
+         BASE_MODALE     =SIMP(statut='f',typ=(base_modale,mode_meca) ),
+         NUME_DDL        =SIMP(statut='f',typ=nume_ddl_sdaster ),
+         MACR_ELEM_DYNA  =SIMP(statut='f',typ=macr_elem_dyna),
+         TOUT_INST       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),  
+         LIST_INST       =SIMP(statut='f',typ=listr8_sdaster ),
+         TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
+         INTERPOL        =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
+         NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",   
+                               into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL",                 
+                                     "SIGM_ELNO_DEPL","FORC_NODA",) ),
+         TOUT_CHAM       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+         NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+         GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+         MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+         TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
+)  ;
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+# RESPONSABLE BOYERE E.BOYERE
+
+def rest_gene_phys_prod(RESU_GENE,**args ):
+  if AsType(RESU_GENE) == tran_gene : return dyna_trans
+  if AsType(RESU_GENE) == mode_gene : return mode_meca
+  if AsType(RESU_GENE) == harm_gene : return dyna_harmo
+  
+  raise AsException("type de concept resultat non prevu")
+
+REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op=  75,sd_prod=rest_gene_phys_prod,
+                    fr="Restituer dans la base physique des résultats en coordonnées généralisées",
+                    reentrant='n',
+            UIinfo={"groupes":("Matrices/vecteurs",)},
+        regles=(
+                EXCLUS('INST','LIST_INST','TOUT_INST'),
+                EXCLUS('TOUT_ORDRE','NUME_ORDRE','NUME_MODE'),
+                EXCLUS('FREQ','LIST_FREQ'),  
+                EXCLUS('MULT_APPUI','CORR_STAT'),
+                EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'),
+                EXCLUS('CORR_STAT','NOEUD','GROUP_NO'),             
+                EXCLUS('NOEUD','GROUP_NO'),
+                EXCLUS('MAILLE','GROUP_MA'),
+                PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
+         RESU_GENE       =SIMP(statut='f',typ=(tran_gene,mode_gene,harm_gene) ), 
+         MODE_MECA       =SIMP(statut='f',typ=mode_meca ),
+         BASE_MODALE     =SIMP(statut='f',typ=(base_modale,mode_meca) ),
+         NUME_DDL        =SIMP(statut='f',typ=nume_ddl_sdaster ),
+         TOUT_INST       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ), 
+         LIST_INST       =SIMP(statut='f',typ=listr8_sdaster ),
+         TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),  
+         NUME_MODE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ), 
+         FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),  
+         LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
+         CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
+         INTERPOL        =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
+         MULT_APPUI      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         CORR_STAT       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",   
+                               into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL",                 
+                                     "SIGM_ELNO_DEPL","FORC_NODA",) ),
+         TOUT_CHAM       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+         GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+         NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+         GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+         MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+         ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+         DIRECTION       =SIMP(statut='f',typ='R',min=3,max=3 ),
+         TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
+)  ;
+#& MODIF COMMANDE  DATE 21/10/2008   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
@@ -23168,85 +24018,37 @@ RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
-# RESPONSABLE PELLET J.PELLET
-
-RESOUDRE=OPER(nom="RESOUDRE",op=15,sd_prod=cham_no_sdaster,reentrant='f',
-               fr="Résolution par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT"+
-                  "ou Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné",
-               UIinfo={"groupes":("Résolution",)},
-         MATR           =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
-                                               matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
-         CHAM_NO         =SIMP(statut='o',typ=cham_no_sdaster),
-         CHAM_CINE       =SIMP(statut='f',typ=cham_no_sdaster),
-
-         # mot-clé commun aux solveurs MUMPS et GCPC:
-         RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.E-6),
 
-         # mots-clés pour solver GCPC:
-         MATR_PREC       =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
-         NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),  
-         REPRISE         =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
-
-         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
-         INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
-)  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-# ======================================================================
-# RESPONSABLE BOYERE E.BOYERE
-def rest_base_phys_prod(RESU_GENE,RESU_PHYS,RESULTAT,**args ):
+# RESPONSABLE CORUS M.CORUS
+def rest_sous_struc_prod(RESU_GENE,RESULTAT,**args ):
   if AsType(RESU_GENE) == tran_gene : return dyna_trans
   if AsType(RESU_GENE) == mode_gene : return mode_meca
   if AsType(RESU_GENE) == mode_cycl : return mode_meca
   if AsType(RESU_GENE) == harm_gene : return dyna_harmo
-  if AsType(RESU_PHYS) == evol_noli : return dyna_trans
-  if AsType(RESULTAT)  == evol_elas      : return evol_elas
   if AsType(RESULTAT)  == evol_noli      : return evol_noli
-  if AsType(RESULTAT)  == evol_char      : return evol_char
   if AsType(RESULTAT)  == dyna_trans     : return dyna_trans
   if AsType(RESULTAT)  == mode_meca      : return mode_meca
-  if AsType(RESULTAT)  == mode_stat_depl : return mode_stat_depl
   if AsType(RESULTAT)  == base_modale    : return base_modale
   raise AsException("type de concept resultat non prevu")
 
-REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op=  75,sd_prod=rest_base_phys_prod,
-                    fr="Restituer dans la base physique des résultats en coordonnées généralisées",
+REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op=  77,sd_prod=rest_sous_struc_prod,
+          fr="Restituer dans la base physique des résultats obtenus par sous-structuration",
                     reentrant='n',
             UIinfo={"groupes":("Matrices/vecteurs",)},
-        regles=(UN_PARMI('RESU_GENE','RESU_PHYS','RESULTAT'),
+        regles=(UN_PARMI('RESU_GENE','RESULTAT'),
                 EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'),
                 EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'),
 #  Doc U à revoir
-                EXCLUS('MULT_APPUI','CORR_STAT'),
-                EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'),
-                EXCLUS('CORR_STAT','NOEUD','GROUP_NO'),             
-                EXCLUS('NOEUD','GROUP_NO'),
-                EXCLUS('MACR_ELEM_DYNA','BASE_MODALE'),
+                 EXCLUS('NOEUD','GROUP_NO'),
+                 EXCLUS('MAILLE','GROUP_MA'),
                 PRESENT_PRESENT('RESULTAT','SQUELETTE'),
-                PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
-         RESULTAT        =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,evol_char,
-                                               mode_meca,mode_stat_depl,base_modale) ),
-         
+
+                ),
+         RESULTAT        =SIMP(statut='f',typ=(evol_noli,dyna_trans,
+                                            mode_meca,base_modale) ),
          RESU_GENE       =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene) ),
-         RESU_PHYS       =SIMP(statut='f',typ=evol_noli ),
          BASE_MODALE     =SIMP(statut='f',typ=(base_modale,mode_meca) ),
          NUME_DDL        =SIMP(statut='f',typ=nume_ddl_sdaster ),
-         MACR_ELEM_DYNA  =SIMP(statut='f',typ=macr_elem_dyna),
          MODE_MECA       =SIMP(statut='f',typ=mode_meca ),
          TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
          NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),  
@@ -23257,10 +24059,11 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op=  75,sd_prod=rest_base_phys_prod,
          FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),  
          LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster ),
          CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
-         PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-3 ),  
+         b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+         b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+             PRECISION       =SIMP(statut='o',typ='R',),),
          INTERPOL        =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
-         MULT_APPUI      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
-         CORR_STAT       =SIMP(statut='f',typ='TXM',into=("OUI",) ),
          NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",   
                                into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL",                 
                                      "SIGM_ELNO_DEPL","FORC_NODA",) ),
@@ -23269,10 +24072,6 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op=  75,sd_prod=rest_base_phys_prod,
          NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
          GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
          MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-         ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-         DIRECTION       =SIMP(statut='f',typ='R',min=3,max=3 ),
-
          CYCLIQUE    =FACT(statut='f',max='**',
            NB_SECTEUR      =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ),
            NUME_DIAMETRE    =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ),
@@ -23331,7 +24130,46 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_fonction,
                                into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 06/10/2008   AUTEUR DEVESA G.DEVESA 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# RESPONSABLE DEVESA G.DEVESA
+def rest_spec_temp_prod(RESU_GENE,RESULTAT,**args):
+  if AsType(RESULTAT) == dyna_harmo    : return dyna_trans
+  if AsType(RESU_GENE) == harm_gene    : return tran_gene
+  if AsType(RESULTAT) == dyna_trans    : return dyna_harmo
+  if AsType(RESU_GENE) == tran_gene    : return harm_gene
+  raise AsException("type de concept resultat non prevu")
+
+
+REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod,
+              fr="Transformée de Fourier d'un résultat",
+              reentrant='n',
+            UIinfo={"groupes":("Matrices/vecteurs",)},
+         regles=UN_PARMI('RESU_GENE','RESULTAT'),
+         RESU_GENE       =SIMP(statut='f',typ=(harm_gene,tran_gene,) ),
+         RESULTAT        =SIMP(statut='f',typ=(dyna_harmo,dyna_trans,) ),
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ),
+         SYMETRIE        =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+         TOUT_CHAM       =SIMP(statut='f',typ='TXM',into=("OUI",)),
+         NOM_CHAM        =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ),
+);
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23365,10 +24203,6 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s
            RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
                                  into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
                                       "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
-           ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_LINE  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
            DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
          ),
    MATER           =SIMP(statut='o',typ=mater_sdaster,max=30),
@@ -23378,7 +24212,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
@@ -23456,7 +24290,7 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s
      LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),                                                 
      INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
      PAS_ARCH        =SIMP(statut='f',typ='I' ),
-     PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+     PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6),
      ARCH_ETAT_INIT  =SIMP(statut='f',typ='TXM',into=("OUI",)),
      NUME_INIT       =SIMP(statut='f',typ='I'),
      DETR_NUME_SUIV  =SIMP(statut='f',typ='TXM',into=("OUI",)),
@@ -23578,7 +24412,7 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None,
                                fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"),
 
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 18/11/2008   AUTEUR ABBAS M.ABBAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23597,6 +24431,7 @@ STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None,
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 # ======================================================================
 # RESPONSABLE ABBAS M.ABBAS
+#
 STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                    fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique,"
                       +" d'une structure en non linéaire",
@@ -23630,13 +24465,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
                                  into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC","ELAS_VMIS_PUIS",
                                       "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
-           ELAS            =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_TRAC  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_LINE  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_VMIS_PUIS  =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_HYPER      =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
-           ELAS_POUTRE_GR  =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-           CABLE           =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+          
            DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
       regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
            TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
@@ -23656,8 +24485,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
              EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
              NUME_ORDRE      =SIMP(statut='f',typ='I'),
              INST            =SIMP(statut='f',typ='R'),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
              CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
              NUME_DIDI       =SIMP(statut='f',typ='I'),
              INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),),
@@ -23674,8 +24506,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
              EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
              NUME_ORDRE      =SIMP(statut='f',typ='I'),
              INST            =SIMP(statut='f',typ='R'),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
              CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                 PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                 PRECISION       =SIMP(statut='o',typ='R',),),
              NUME_DIDI       =SIMP(statut='f',typ='I'),
              INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),),
@@ -23683,8 +24518,6 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
@@ -23692,11 +24525,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            ERRE_TEMPS      =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
                                  fr="Adaptation temporelle pour les modélisations HM instationnaires",
                                  ang="Time adaptation for unstationary HM models"),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
            # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
            SUBD_METHODE    =SIMP( statut='f',typ='TXM',
               into =("AUCUNE","UNIFORME","EXTRAPOLE"),
-              defaut="AUCUNE",
+              defaut="UNIFORME",
               fr="Méthode de subdivision des pas de temps en cas de non-convergence"
            ),
            b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'",
@@ -23705,7 +24538,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                 fr="Coefficient multiplicateur de la 1ère subdivision"),
              SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,
                 fr="Nombre de subdivision d'un pas de temps"),
-             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
+             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3,
                 fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
              SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
                 fr="Pas de temps en dessous duquel on ne subdivise plus"),
@@ -23730,24 +24563,20 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                 fr="% itération autorisée en plus"),
            ),
            # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
-           OPTI_LIST_INST  =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
-           NOM_CHAM        =SIMP(statut='f',typ='TXM',),
-           NOM_CMP         =SIMP(statut='f',typ='TXM',),
-           VALE            =SIMP(statut='f',typ='R'),
          ),
          NEWTON          =FACT(statut='d',
-           REAC_INCR       =SIMP(statut='f',typ='I',defaut= 1 ),
+           REAC_INCR       =SIMP(statut='f',typ='I',defaut= 1,val_min=0),
            PREDICTION      =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
            MATRICE         =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
-           PAS_MINI_ELAS   =SIMP(statut='f',typ='R',defaut=0.0E+0),
-           REAC_ITER       =SIMP(statut='f',typ='I',defaut=0),
-           REAC_ITER_ELAS  =SIMP(statut='f',typ='I',defaut=0),
+           PAS_MINI_ELAS   =SIMP(statut='f',typ='R',val_min=0.0),
+           REAC_ITER       =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+           REAC_ITER_ELAS  =SIMP(statut='f',typ='I',defaut=0,val_min=0),
            EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
          ),
          RECH_LINEAIRE   =FACT(statut='f',
            METHODE         =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE") ),
            RESI_LINE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
-           ITER_LINE_MAXI  =SIMP(statut='f',typ='I',defaut= 3),
+           ITER_LINE_MAXI  =SIMP(statut='f',typ='I',defaut= 3,val_max=999),
            ITER_LINE_CRIT  =SIMP(statut='f',typ='I',defaut= 20),
            PAS_MINI_CRIT   =SIMP(statut='f',typ='R',defaut=0.0E+0),
            RHO_MIN         =SIMP(statut='f',typ='R',defaut=1.0E-2),
@@ -23775,29 +24604,34 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
            b_refe_rela    =BLOC(condition = "RESI_REFE_RELA != None",
              regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE','FORC_REFE',
-                                  'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE'),),
+                                  'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE','DEPL_REFE'),),
              FORC_REFE       =SIMP(statut='f',typ='R',min=2,max=2,
                 fr="Force et Moment de référence pour les éléments de structure."),
              SIGM_REFE       =SIMP(statut='f',typ='R'),
+             DEPL_REFE       =SIMP(statut='f',typ='R'),
              EPSI_REFE       =SIMP(statut='f',typ='R'),
              FLUX_THER_REFE  =SIMP(statut='f',typ='R'),
              FLUX_HYD1_REFE  =SIMP(statut='f',typ='R'),
              FLUX_HYD2_REFE  =SIMP(statut='f',typ='R'),
              VARI_REFE       =SIMP(statut='f',typ='R'),
            ),
-
-
-
            RESI_REFE_RELA  =SIMP(statut='f',typ='R'),
            RESI_GLOB_MAXI  =SIMP(statut='f',typ='R'),
            RESI_GLOB_RELA  =SIMP(statut='f',typ='R'),
            ITER_GLOB_MAXI  =SIMP(statut='f',typ='I',defaut=10),
            ITER_GLOB_ELAS  =SIMP(statut='f',typ='I',defaut=25),
+           TYPE            =SIMP(statut='f',typ='TXM',defaut="PIC",into=("PIC","PLATEAU")),
+           b_plateau    =BLOC(condition = "TYPE == 'PLATEAU' ",
+             
+             PLATEAU_ITER    =SIMP(statut='f',typ='I',defaut=3, val_min =2),
+             PLATEAU_RELA    =SIMP(statut='f',typ='R',defaut=1E-3),                   
+           ),           
+           
+           
            ARRET           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
          ),
          SOLVEUR         =FACT(statut='d',
            METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI","PETSC") ),
-          
            b_mult_front    =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
            ),
@@ -23828,14 +24662,8 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
-           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
-             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
-             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
-           ),
            b_feti          =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1",
              PARTITION       =SIMP(statut='o',typ=sd_feti_sdaster),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
@@ -23854,6 +24682,18 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
              NB_SD_PROC0     =SIMP(statut='f',typ='I',defaut=0,val_min=0),
              ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
            ),
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),           
+           
+           
            SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
          ),
          ARCHIVAGE       =FACT(statut='f',
@@ -23862,7 +24702,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
            LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
            PAS_ARCH        =SIMP(statut='f',typ='I' ),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ARCH_ETAT_INIT  =SIMP(statut='f',typ='TXM',into=("OUI",)),
            NUME_INIT       =SIMP(statut='f',typ='I'),
            DETR_NUME_SUIV  =SIMP(statut='f',typ='TXM',into=("OUI",)),
@@ -23898,8 +24738,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
              PAS_OBSE        =SIMP(statut='f',typ='I'),
              LIST_ARCH       =SIMP(statut='f',typ=listis_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R',),),),
          ),
 
          AFFICHAGE      = FACT(statut='f',max=16,
@@ -23922,7 +24765,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                                       "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
                                       "MATR_ASSE",
                                       "ITER_DEBO",
-                                      "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
+                                      "CTCD_ITER","CTCD_GEOM","CTCD_NOEU",
                                       "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
                                       "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI",
                                      ),
@@ -24315,7 +25158,55 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177,
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 05/09/2008   AUTEUR COURTOIS M.COURTOIS 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+# -*- coding: iso-8859-1 -*-
+# RESPONSABLE COURTOIS M.COURTOIS
+
+
+from Macro.test_temps_ops import test_temps_ops
+
+TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None,
+                 fr="Permet de vérifier le temps passé dans les commandes",
+                 reentrant='n',
+
+   RESU = FACT(statut='o',max='**',
+      COMMANDE   = SIMP(statut='o', typ='TXM',
+            fr="Nom de la commande testee"),
+      NUME_ORDRE = SIMP(statut='f', typ='I', defaut=1, val_min=1,
+            fr="Numero de l'occurrence de la commande testee"),
+      MACHINE    = SIMP(statut='o', typ='TXM', max='**',
+            fr="Liste des machines dont on a la référence"),
+      VALE       = SIMP(statut='o', typ='R', max='**',
+            fr="Temps CPU sur les machines listees en secondes"),
+      CRITERE    = SIMP(statut='f', typ='TXM', defaut='RELATIF', into=('ABSOLU', 'RELATIF')),
+      PRECISION  = SIMP(statut='f', typ='R', defaut=0.01, max='**',
+            fr="Ecart admissible pour chaque machine"),
+      TYPE_TEST  = SIMP(statut='o', typ='TXM', into=('USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'),
+            defaut='USER+SYS',
+            fr="Valeur testee parmi 'USER', 'SYSTEM', 'USER+SYS', 'ELAPSED'"),
+   ),
+
+   INFO  = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+)
+
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -24349,13 +25240,11 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
          ),
          ETAT_INIT       =FACT(statut='f',
            regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
@@ -24365,8 +25254,11 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
            VALE            =SIMP(statut='f',typ='R'),
            NUME_ORDRE      =SIMP(statut='f',typ='I'),
            INST            =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+              PRECISION       =SIMP(statut='o',typ='R',),),
            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),
          SENSIBILITE     =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
@@ -24411,13 +25303,18 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),       
              ),
 
            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),            
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
          ),
@@ -24428,7 +25325,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
            LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
            PAS_ARCH        =SIMP(statut='f',typ='I' ),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ARCH_ETAT_INIT  =SIMP(statut='f',typ='TXM',into=("OUI",)),
            NUME_INIT       =SIMP(statut='f',typ='I'),
            DETR_NUME_SUIV  =SIMP(statut='f',typ='TXM',into=("OUI",)),
@@ -24438,7 +25335,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -24488,50 +25385,11 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
            regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
                    EXCLUS('NUME_INST_FIN','INST_FIN'),),
            LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-           EVOLUTION       =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
-                                 into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
            NUME_INST_INIT  =SIMP(statut='f',typ='I'),
            INST_INIT       =SIMP(statut='f',typ='R'),
            NUME_INST_FIN   =SIMP(statut='f',typ='I'),
            INST_FIN        =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
-           # DEBUT DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
-           SUBD_METHODE    =SIMP( statut='f',typ='TXM',
-              into =("AUCUNE","UNIFORME","EXTRAPOLE"),
-              defaut="AUCUNE",
-              fr="Méthode de subdivision des pas de temps en cas de non-convergence"
-           ),
-           b_subd_unif=BLOC(condition = "SUBD_METHODE == 'UNIFORME'",
-             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
-             SUBD_COEF_PAS_1=SIMP(statut='f',typ='R',defaut=1.0,val_min=0.0,
-                fr="Coefficient multiplicateur de la 1ère subdivision"),
-             SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,
-                fr="Nombre de subdivision d'un pas de temps"),
-             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
-                fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
-             SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
-                fr="Pas de temps en dessous duquel on ne subdivise plus"),
-           ),
-           b_subd_extr=BLOC(condition = "SUBD_METHODE == 'EXTRAPOLE'",
-             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
-             SUBD_OPTION    =SIMP(statut='f',typ='TXM',
-                into =("IGNORE_PREMIERES","GARDE_DERNIERES",),
-                defaut="IGNORE_PREMIERES",
-                fr="Technique d'extrapolation : les 1ere itérations sont ignorées ou les dernières sont gardées"),
-             SUBD_ITER_IGNO =SIMP(statut='c',typ='I',defaut=3,val_min=0,
-                fr="Les n premières itérations sont ignorées pour l'extrapolation"),
-             SUBD_ITER_FIN  =SIMP(statut='c',typ='I',defaut=8,val_min=3,
-                fr="Seules les n dernières itérations sont prises pour l'extrapolation"),
-             SUBD_PAS       =SIMP(statut='c',typ='I',defaut=4,val_min=2,
-                fr="Nombre de subdivision d'un pas de temps en cas divergence"),
-             SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,
-                fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
-             SUBD_PAS_MINI=SIMP(statut='f',typ='R',val_min=0.0,
-                fr="Pas de temps en dessous duquel on ne subdivise plus"),
-             SUBD_ITER_PLUS =SIMP(statut='c',typ='I',defaut=50,val_min=20,
-                fr="% itération autorisée en plus"),
-           ),
-           # FIN DE BLOC POUR LA SUBDIVISION DES PAS DE TEMPS
+           PRECISION       =SIMP(statut='f',typ='R',defaut=1.0E-6 ),
          ),
          ETAT_INIT       =FACT(statut='f',
            regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
@@ -24541,12 +25399,15 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
            VALE            =SIMP(statut='f',typ='R'),
            NUME_ORDRE      =SIMP(statut='f',typ='I'),
            INST            =SIMP(statut='f',typ='R'),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
            CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+           b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+              PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+           b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+              PRECISION       =SIMP(statut='o',typ='R',),),
            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),
          NEWTON          =FACT(statut='d',
-           REAC_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
+           REAC_ITER       =SIMP(statut='f',typ='I',defaut= 0 ,val_min=0),
            RESI_LINE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
            ITER_LINE_MAXI  =SIMP(statut='f',typ='I',defaut= 0 ),
          ),
@@ -24591,13 +25452,18 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
              PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
              CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
              CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
 
            b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
-             VARIANTE        =SIMP(statut='f',typ='TXM',into=("GMRES","BCGS","CR","CG","BICG","CHEBYCHEV",),defaut="GMRES" ),
-             PRE_COND        =SIMP(statut='f',typ='TXM',into=("ILU","SOR","BJACOBI"),defaut="ILU" ),
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
              RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-8),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
            SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
@@ -24609,7 +25475,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
            LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
            INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
            PAS_ARCH        =SIMP(statut='f',typ='I' ),
-           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+           PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-6),
            ARCH_ETAT_INIT  =SIMP(statut='f',typ='TXM',into=("OUI",)),
            NUME_INIT       =SIMP(statut='f',typ='I'),
            DETR_NUME_SUIV  =SIMP(statut='f',typ='TXM',into=("OUI",)),
@@ -24628,8 +25494,11 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
              LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
              PAS_OBSE        =SIMP(statut='f',typ='I'),
              LIST_ARCH       =SIMP(statut='f',typ=listis_sdaster),
-             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
-             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),),
+             CRITERE         =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+             b_prec_rela=BLOC(condition="(CRITERE=='RELATIF')",
+                PRECISION       =SIMP(statut='f',typ='R',defaut= 1.E-6,),),
+             b_prec_abso=BLOC(condition="(CRITERE=='ABSOLU')",
+                PRECISION       =SIMP(statut='o',typ='R',),),),
          ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          OPTION          =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,
@@ -24637,7 +25506,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
 
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVR
+#& MODIF COMMANDE  DATE 30/09/2008   AUTEUR REZETTE C.REZETT
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -24698,6 +25567,31 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
              RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
+           b_mumps        =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+             TYPE_RESOL      =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("NONSYM","SYMGEN","SYMDEF","AUTO")),
+             PRETRAITEMENTS  =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO")),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("AMD","AMF","PORD","METIS","QAMD","AUTO")),
+             ELIM_LAGR2      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+             PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut=-1.0,),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="CENTRALISE",
+                                   into=("CENTRALISE","DISTRIBUE_MC","DISTRIBUE_MD","DISTRIBUE_SD")),
+             PARTITION       =SIMP(statut='f',typ=sd_feti_sdaster),
+             CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,min=0,max=100),
+             CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,min=0),
+             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),       
+             ),
+           b_petsc          =BLOC(condition = "METHODE == 'PETSC' ",fr="Paramètres de la méthode PETSC",
+             ALGORITHME      =SIMP(statut='f',typ='TXM',into=("BCGS","BICG","CG","CR","GMRES","TFQMR",),defaut="CG" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR"),defaut="LDLT_INC" ),
+             b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",
+               NIVE_REMPLISSAGE = SIMP(statut='f',typ='I',defaut= 0 ),
+               REMPLISSAGE      = SIMP(statut='f',typ='R',defaut= 1.0),
+             ),
+             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
+           ),
            SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
          ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
index 90a38f53e0adb593e6b24af8ba871f6ac52b8865..6ee01171af3f0b752d76ef2597c48d94ab9a3a33 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF ops Cata  DATE 02/06/2008   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF ops Cata  DATE 01/12/2008   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -60,7 +60,7 @@ def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM):
       # en POURSUITE, ne pas écraser la mémorisation existante.
       if not hasattr(jdc, 'memo_sensi'):
          jdc.memo_sensi = MEMORISATION_SENSIBILITE()
-         jdc.memo_sensi.reparent(jdc)
+      jdc.memo_sensi.reparent(jdc)
 
       if hasattr(jdc, 'msg_init') and jdc.msg_init == 1:
          # messages d'alarmes désactivés
@@ -69,6 +69,12 @@ def commun_DEBUT_POURSUITE(jdc, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM):
                IGNORE_ALARM = [IGNORE_ALARM]
             for idmess in IGNORE_ALARM:
                MessageLog.disable_alarm(idmess)
+               
+      # en POURSUITE, conserver le catalogue de comportement picklé
+      if not hasattr(jdc, 'catalc'):
+         from Comportement import catalc
+         jdc.catalc = catalc
+
       jdc.msg_init = True
 
 
@@ -171,6 +177,8 @@ def POURSUITE(self, PAR_LOT, IMPR_MACRO, CODE, DEBUG, IGNORE_ALARM, **args):
             # on rattache chaque assd au nouveau jdc courant (en poursuite)
             pickle_context[elem].jdc=self.jdc
             pickle_context[elem].parent=self.jdc
+            # le marquer comme 'executed'
+            pickle_context[elem].executed = 1
             # pour que sds_dict soit cohérent avec g_context
             self.jdc.sds_dict[elem] = pickle_context[elem]
             assert elem == pickle_context[elem].nom
diff --git a/Aster/configuration.py b/Aster/configuration.py
new file mode 100644 (file)
index 0000000..d357d23
--- /dev/null
@@ -0,0 +1,369 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module sert pour charger les paramètres de configuration d'EFICAS
+"""
+# Modules Python
+import os, sys, string, types, re
+import traceback
+
+# Modules Eficas
+from Editeur import utils
+
+class CONFIGbase:
+
+  #-----------------------------------
+  def __init__(self,appli):
+  #-----------------------------------
+
+  # Classe de base permettant de lire, afficher
+  # et sauvegarder les fichiers utilisateurs editeur.ini
+  # et style.py
+  # Classe Mere de : class CONFIG(CONFIGbase)
+  #                  class CONFIGStyle(CONFIGbase):
+      self.appli = appli  
+      self.salome = appli.salome
+      self.dRepMat={}
+      if self.appli:
+         self.parent=appli.top
+      else:
+         self.parent=None
+      self.rep_user = utils.get_rep_user()
+      self.lecture_fichier_ini_standard()
+      self.lecture_catalogues_standard()
+      self.lecture_fichier_ini_utilisateur()
+      self.init_liste_param()
+
+  #--------------------------------------
+  def lecture_fichier_ini_standard(self):
+  #--------------------------------------
+  # Verifie l'existence du fichier "standard"
+  # appelle la lecture de ce fichier
+      if not os.path.isfile(self.fic_ini):
+          if self.appli.ihm=="TK" :
+              from widgets import showerror
+              showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n")
+          print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini
+          sys.exit(0)
+      self.lecture_fichier(self.fic_ini)
+
+  #-----------------------------
+  def lecture_fichier(self,fic):
+  #------------------------------
+  # lit les paramètres du fichier eficas.ini ou style.py
+  # les transforme en attribut de l 'objet  
+  # utilisation du dictionnaire local pour récuperer style
+      txt = utils.read_file(fic)
+      from styles import style
+      d=locals()
+      try:
+         exec txt in d
+      except:
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         if self.appli.ihm=="TK" :
+              from widgets import showerror
+              showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n")
+         print "Erreur à la lecture du fichier de configuration : %s" % fic
+         sys.exit()
+
+      for k in d.keys() :
+          if  k in self.labels.keys()  :
+             setattr(self,k,d[k])
+    # Glut horrible pour les repertoires materiau...
+          elif k[0:9]=="rep_mat_v" :
+             setattr(self,k,d[k])
+      
+      for k in d['style'].__dict__.keys() :
+          setattr(self,k,d['style'].__dict__[k])
+
+      if hasattr(self,"catalogues") :
+         for ligne in self.catalogues :
+            version=ligne[1]
+            codeSansPoint=re.sub("\.","",version)
+            chaine="rep_mat_"+codeSansPoint
+            if hasattr(self,chaine):
+               rep_mat=getattr(self,chaine)
+               self.dRepMat[version]=str(rep_mat)
+
+
+  #--------------------------------------
+  def lecture_fichier_ini_utilisateur(self):
+  #--------------------------------------
+  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier)
+      if not os.path.isfile(self.fic_ini_utilisateur):
+          return
+      self.lecture_fichier(self.fic_ini_utilisateur)
+
+  #--------------------------------------
+  def lecture_catalogues_standard(self):
+  #--------------------------------------
+      # repertoires Materiau
+      if hasattr(self,"catalogues") :
+         for ligne in self.catalogues :
+            version=ligne[1]
+            cata=ligne[2]
+            self.dRepMat[version]=os.path.join(cata,'materiau')
+
+  #--------------------------------------
+  def affichage_fichier_ini(self):
+  #--------------------------------------
+      """
+      Affichage des valeurs des paramètres relus par Eficas
+      """
+      import widgets
+      result = widgets.Formulaire(self.parent,
+                                  obj_pere = self,
+                                  titre = self.titre,
+                                  texte = self.texte_ini,
+                                  items = self.l_param,
+                                  mode='display',
+                                  commande=('Modifier',self.commande))
+      if result.resultat :
+          #print 'on sauvegarde les nouveaux paramètres :',result.resultat
+          self.save_param_ini(result.resultat)
+
+  #--------------------------------------
+  def save_param_ini(self,dico):
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
+      f=open(self.fic_ini_utilisateur,'w+')
+      for k,v in dico.items():
+         if self.types[k] in ('mot2','mot3','mot4'): 
+            v1=v[1:-1]
+            val=v1.split(",")
+            p = "(" 
+            listeval=""
+            for valeur in val:
+              listeval = listeval+ p + str(valeur) 
+              p=" , "
+            listeval = listeval + ")"
+            f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n') 
+         elif k == 'catalogues' :
+            f.write(k + '\t=\t' + str(v) + '\n')
+         else:
+            f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n')
+      f.close()
+      self.lecture_fichier_ini_utilisateur()
+
+  #-------------------------------------------
+  def creation_fichier_ini_si_possible(self):
+  #-------------------------------------------
+      return self.creation_fichier_ini(mode='ignorer_annuler')
+
+  #--------------------------------------------------------
+  def creation_fichier_ini(self,mode='considerer_annuler'):
+  #---------------------------------------------------------
+  # Récupération des valeurs des paramétres requis pour la création du fichier
+  # eficas.ini
+  #
+      import widgets
+      items = self.l_param
+      result = widgets.Formulaire(self.parent,
+                                  obj_pere = self,
+                                  titre = "Saisie des données indispensables à la configuration d'EFICAS",
+                                  texte = self.texte,
+                                  items = items,
+                                  mode='query')
+      if not result.resultat :
+          if mode == 'considerer_annuler':
+             test=0
+             if self.appli.ihm=="TK" :
+                from widgets import showerror,askretrycancel
+                test = askretrycancel("Erreur","Données incorrectes !")
+             if not test:
+                 # XXX On sort d'EFICAS, je suppose
+                 self.appli.exitEFICAS()
+             else:
+                 self.creation_fichier_ini()
+          else:
+              return None
+      else :
+          self.save_param_ini(result.resultat)
+          return result.resultat
+
+  #--------------------------
+  def init_liste_param (self):
+  #--------------------------
+  # construit self.l_param 
+  # a partir de self.labels et des attributs 
+  # de l objet (mis a jour lors de la lecture du fichier)
+  # l_param est une liste de tuples où chaque tuple est de la forme :
+  #           (label,nature,nom_var,defaut)
+
+      self.l_param=[]
+      for k in self.labels.keys()  :
+          if hasattr(self,k) :
+             if k in self.YesNo.keys():
+                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k],
+                                     self.YesNo[k][0],self.YesNo[k][1]))
+             else :
+                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k]))
+      self.l_param = tuple(self.l_param)
+
+
+class CONFIG(CONFIGbase):
+  def __init__(self,appli,repIni):
+
+      self.dFichierEditeur={"ASTER"                    : "editeur.ini", 
+                           "ASTER_SALOME"             : "editeur_salome.ini"}
+      self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
+              "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
+              "Si vous annulez, EFICAS ne se lancera pas !!"
+
+      self.salome=appli.salome
+      self.code=appli.code
+      clef=self.code
+      if self.salome != 0 :
+         clef = clef + "_SALOME"
+      self.fichier=self.dFichierEditeur[clef]
+      self.repIni = repIni
+      self.rep_ini = repIni
+      self.fic_ini = os.path.join(self.repIni,self.fichier)
+      self.titre = "Paramètres nécessaires à la configuration d'EFICAS"
+      self.texte_ini = "Voici les paramètres que requiert Eficas"
+      self.commande = self.creation_fichier_ini_si_possible
+      self.labels={"savedir"       : "Répertoire initial pour Open/Save des fichiers",
+                   "rep_travail"   : "Répertoire de travail",
+                   "rep_mat"       : "Répertoire materiaux",
+                   "path_doc"      : "Chemin d'accès à la doc Aster",
+                   "exec_acrobat"  : "Ligne de commande Acrobat Reader",
+                   "catalogues"    : "Versions du code ",
+                   "isdeveloppeur" : "Niveau de message ",
+                   "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"}
+
+                   
+      self.types ={"savedir":"rep", "rep_travail":"rep","rep_mat":"rep",
+                   "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file",
+                   "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep",
+                  "DTDDirectory":"rep"}
+
+      self.YesNo={}
+      self.YesNo['isdeveloppeur']=('Deboggage','Utilisation')
+
+      # Valeurs par defaut
+      self.rep_user = utils.get_rep_user()
+      self.initialdir=self.rep_user
+      self.savedir = os.environ['HOME']
+      self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas')
+      self.rep_mat=""
+      self.path_doc=self.rep_user
+      self.exec_acrobat=self.rep_user
+      self.catalogues= os.path.join(self.repIni,'..','Cata/cata.py')
+      self.isdeveloppeur='NON'
+      self.path_cata_dev=os.path.join(self.rep_user,'cata')
+      CONFIGbase.__init__ (self,appli)
+      self.pref=""
+
+  #--------------------------------------
+  def save_params(self):
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
+      l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc','savedir')
+      texte=""
+      for clef in l_param :
+          if hasattr(self,clef):
+             valeur=getattr(self,clef)
+             texte= texte + clef+"     = " + repr(valeur) +"\n"
+
+
+      # recuperation des repertoires materiaux
+      try :
+          for item in self.catalogues :
+              try :
+                  (code,version,cata,format,defaut)=item
+              except :
+                  (code,version,cata,format)=item
+              codeSansPoint=re.sub("\.","",version)
+              chaine="rep_mat_"+codeSansPoint
+              if hasattr(self,chaine):
+                 valeur=getattr(self,chaine)
+                 texte= texte + chaine+"       = '" + str(valeur) +"'\n"
+      except :
+             pass
+
+      f=open(self.fic_ini_utilisateur,'w+')
+      f.write(texte) 
+      f.close()
+
+
+class CONFIGStyle(CONFIGbase):
+  def __init__(self,appli,repIni):
+      self.salome=appli.salome
+      self.texte = "Pour prendre en compte les modifications \n"+\
+                   "     RELANCER EFICAS"
+      self.fichier="style.py"
+      self.repIni = repIni
+      self.rep_ini = repIni
+      self.fic_ini = os.path.join(self.repIni,self.fichier)
+      self.titre = "Paramètres d affichage"
+      self.texte_ini = "Voici les paramètres configurables :  "
+      self.commande = self.creation_fichier_ini_si_possible
+      self.labels={"background":"couleur du fonds", 
+                   "foreground":"couleur de la police standard" ,
+                   "standard":" police et taille standard",
+                   "standard_italique":"police utilisée pour l'arbre ",
+                   "standard_gras_souligne":"police utilisée pour le gras souligné",
+                   "canvas_italique":"police italique",
+                   "standard_gras":"gras",
+                   #"canvas":"police",
+                   #"canvas_gras":"police gras",
+                   #"canvas_gras_italique":"police gras italique",
+                   #"standard12":"police 12",
+                   #"standard12_gras":"police 12 gras",
+                   #"standard12_gras_italique":"police 12 gras italique",
+                   #"standardcourier10":"courrier "
+                   "statusfont":"police utilisée dans la status Bar",
+                  }
+      self.types ={"background":"mot", 
+                   "foreground":"mot" ,
+                   "standard":"mot2",
+                   "standard_italique":"mot3",
+                   "standard_gras":"mot3",
+                   "standard_gras_souligne":"mot4",
+                   "canvas":"mot2",
+                   "canvas_italique":"mot3",
+                   "canvas_gras":"mot3",
+                   "canvas_gras_italique":"mot4",
+                   "standard12":"mot2",
+                   "standard12_gras":"mot3",
+                   "standard12_gras_italique":"mot4",
+                   "statusfont":"mot2",
+                   "standardcourier10":"mot2"}
+      self.YesNo={}
+      self.l_param=[]
+      CONFIGbase.__init__ (self,appli)
+      self.pref="style."
+
+  def affichage_style_ini(self):
+      self.affichage_fichier_ini()
+
+def make_config(appli,rep):
+    return CONFIG(appli,rep)
+
+def make_config_style(appli,rep):
+    return CONFIGStyle(appli,rep)
+
+
index 5f4979171b98b67522031fad4cb8ba08434ff7af..418bd663be15d529bf7202cb31177d574651557f 100644 (file)
@@ -37,12 +37,12 @@ rep_travail     =   "/tmp"
 initialdir=os.curdir
 
 # Choix des catalogues
-rep_mat_v85=os.path.join(rep_cata,'cataSTA8','materiau')
-rep_mat_v91=os.path.join(rep_cata,'cataSTA9','materiau')
+rep_mat_v88=os.path.join(rep_cata,'cataSTA8','materiau')
+rep_mat_v94=os.path.join(rep_cata,'cataSTA9','materiau')
 
 catalogues = (
               ('ASTER','v7.8',os.path.join(rep_cata,'cataSTA7'),'python'),
-              ('ASTER','v8.7',os.path.join(rep_cata,'cataSTA8'),'python'),
-              ('ASTER','v9.3',os.path.join(rep_cata,'cataSTA9'),'python','defaut'),
+              ('ASTER','v8.8',os.path.join(rep_cata,'cataSTA8'),'python'),
+              ('ASTER','v9.4',os.path.join(rep_cata,'cataSTA9'),'python','defaut'),
              )
 
index d0881d54a74135a88d641a9528206fc36922f63e..9805411b1368a0e42a6d0638a8b5728e1bcde539 100644 (file)
@@ -27,7 +27,8 @@ rep_Pmw = os.path.join(prefs.REPINI,'../Pmw')
 
 # Accès à la documentation Aster
 path_doc              = os.path.join(rep_cata,'..','Doc')
-exec_acrobat    =       "acroread"
+#exec_acrobat    =       "acroread"
+exec_acrobat    =       "/local01/assire/v0.5/SALOME-MECA-2008.2/SALOME-MECA/prerequis/xpdf-3.02-linux/xpdf"
 # Utilisateur/Développeur
 isdeveloppeur   =       "NON"
 path_cata_dev   =       "/tmp/cata"
@@ -42,7 +43,7 @@ rep_mat_v91=os.path.join(rep_cata,'cataSTA9','materiau')
 
 catalogues = (
               ('ASTER','v7.8',os.path.join(rep_cata,'cataSTA7'),'python'),
-              ('ASTER','v8.5',os.path.join(rep_cata,'cataSTA8'),'python'),
-              ('ASTER','v9.1',os.path.join(rep_cata,'cataSTA9'),'python','defaut'),
+              ('ASTER','v8.7',os.path.join(rep_cata,'cataSTA8'),'python'),
+              ('ASTER','v9.3',os.path.join(rep_cata,'cataSTA9'),'python','defaut'),
              )
 
index 5fc73e58bd4c2ec9e1fc5caabbc639939aff61ba..5786a287f5e5f1b3902dabe416da84c7c761d265 100644 (file)
@@ -24,6 +24,7 @@ import os,sys
 # REPINI sert à localiser le fichier editeur.ini
 # Obligatoire
 REPINI=os.path.dirname(os.path.abspath(__file__))
+repIni=REPINI
 
 # INSTALLDIR sert à localiser l'installation d'Eficas
 # Obligatoire
@@ -54,7 +55,7 @@ ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
 if os.name == 'nt':
    userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
 else :
-   userprefs=os.path.expanduser("~/Eficas_install/prefs.py")
+   userprefs=os.path.expanduser("~/.Eficas_install/prefs.py")
 
 if os.path.isfile(userprefs):
    try:
@@ -102,7 +103,8 @@ menu_defs={ 'bureau': [
                                   ]
               ),
               ('Traduction',[
-               ('Traduction v7 en v8','TraduitFichier','<Control-t>','Ctrl+T'),
+               ('Traduction v7 en v8','TraduitFichier7'),
+               ('Traduction v8 en v9','TraduitFichier8','<Control-t>','Ctrl+T'),
                             ]
               ),
               ('Aide',[
index 726077224eefd159bcc6d2ef68b3e267e7b00bce..fc860fafd40a9c5ae3a0886040dc4645456be4bc 100644 (file)
@@ -1,5 +1,4 @@
-#@ MODIF properties Accas DATE 04/04/2007 AUTEUR aster M.ADMINISTRATEUR
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
+#@ MODIF properties Accas DATE 11/06/2008 AUTEUR aster M.ADMINISTRATEUR
 # RESPONSABLE D6BHHHH J-P.LEFEBVRE
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20,6 +19,6 @@
 #     IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
 #     DE LA VERSION DU CODE_ASTER ASSOCIE
 #----------------------------------------------------------------------
-version = "9.1.15"
-date = "17/10/2007"
+version = "9.3.0"
+date = "11/06/2008"
 exploit = False
index 9b0f3af71107d1f0b6653931f2214e0a09826c54..ba37e082d46a157ac8a6b47c5174cb37f371cf59 100644 (file)
@@ -55,6 +55,8 @@ def main():
                                                             'editeur.ini',
                                                             'editeur_salome.ini',
                                                             'eficas_aster.py',
+                                                            'qtEficas_aster.py',
+                                                            'configuration.py',
                                                            'test_eficas.py',
                                                            'style.py',
                                                             '__init__.py'
index 70d449bbb9082bb3f5365c6e15f24399d7074008..ede006198d4ba73a422eb0b76d239f6ded1afabe 100644 (file)
@@ -24,7 +24,7 @@ import re,string,cPickle,os
 from Noyau.N_CR import CR
 
 #
-__Id__="$Id: analyse_catalogue.py,v 1.6.6.1.4.1 2008-10-10 13:22:15 pnoyret Exp $"
+__Id__="$Id: analyse_catalogue.py,v 1.7.4.1 2008-11-13 10:35:11 cchris Exp $"
 __version__="$Name:  $"
 #
 l_noms_commandes = ['OPER','PROC','MACRO','FORM']
diff --git a/Editeur/basestyle.py b/Editeur/basestyle.py
new file mode 100644 (file)
index 0000000..e4287b7
--- /dev/null
@@ -0,0 +1,27 @@
+class STYLE:
+    background='gray90'
+    foreground='black'
+    entry_background='white'
+    list_background='white'
+    list_select_background='#00008b'
+    list_select_foreground='grey'
+    tooltip_background="yellow"
+
+    standard = ("Helvetica",12)
+    standard_italique = ("Helvetica",12,'italic')
+    standard_gras = ("Helvetica",12,'bold')
+    standard_gras_souligne = ("Helvetica",12,'bold','underline')
+
+    canvas = ('Helvetica',10)
+    canvas_italique = ('Helvetica',10,'italic')
+    canvas_gras = ("Helvetica",10,'bold')
+    canvas_gras_italique = ("Helvetica",12,'bold','italic')
+
+    standard12 = ("Helvetica",14)
+    standard12_gras = ("Helvetica",14,'bold')
+    standard12_gras_italique = ( "Helvetica",14,'bold','italic')
+
+    standardcourier10 = ("Courier",14)
+    statusfont = ("Helvetica",16)
+
+style=STYLE()
diff --git a/Editeur/comploaderqt4.py b/Editeur/comploaderqt4.py
new file mode 100644 (file)
index 0000000..e75d492
--- /dev/null
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+   Module de chargement des composants et de mapping des objets du noyau
+   Accas vers les items d'EFICAS
+
+     - composants : dictionnaire de stockage des relations entre types
+       d'objet du noyau et types d'item
+     - charger_composants() : fonction de chargement des composants. Retourne
+       le dictionnaire composants.
+     - gettreeitem(object) -> type d'item : fonction qui retourne un type
+       d'item correspondant au type de l'objet noyau fourni.
+     - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item
+       correspondant à l'objet noyau fourni.
+"""
+# import généraux
+import os,glob,types
+
+# Dictionnaire {object : item} permettant d'associer un item à un object
+# Ce dictionnaire est renseigné par la méthode charger_composants 
+composants = {}
+
+def charger_composants(Ihm="TK"):
+    """
+        Cette fonction a pour but de charger tous les modules composants graphiques
+        (fichiers compo*.py dans le même répertoire que ce module )
+        et de remplir le dictionnaire composants utilisé par make_objecttreeitem
+    """
+    reper=os.path.dirname(__file__)
+    if Ihm == "TK" :
+       repertoire=reper+"/../InterfaceTK"
+       package="InterfaceTK"
+    else :
+       repertoire=reper+"/../InterfaceQT4"
+       package="InterfaceQT4"
+    listfich=glob.glob(os.path.join(repertoire, "compo*.py"))
+    for fichier in listfich:
+        m= os.path.basename(fichier)[:-3]
+        module=__import__(package,globals(),locals(),[m])
+        module = getattr(module, m)
+        composants[module.objet]=module.treeitem
+    return composants
+
+def gettreeitem(object):
+    """
+      Cette fonction retourne la classe item associée à l'objet object.
+      Cette classe item dépend bien sûr de la nature de object, d'où
+      l'interrogation du dictionnaire composants
+    """
+    # Si la definition de l'objet a un attribut itemeditor, il indique 
+    # la classe a utiliser pour l'item
+    try:
+       return object.definition.itemeditor
+    except:
+       pass
+
+    # On cherche ensuite dans les composants (plugins)
+    try:
+       itemtype= composants[object.__class__]
+       return itemtype
+    except:
+       pass
+
+    # Puis une eventuelle classe heritee (aleatoire car sans ordre)
+    for e in composants.keys():
+        if e and isinstance(object,e):
+           itemtype= composants[e]
+           return itemtype
+
+    # Si on n'a rien trouve dans les composants on utilise l'objet par defaut
+    itemtype=composants[None]
+    return itemtype
+
+def make_objecttreeitem(appli,labeltext, object, setfunction=None):
+    """
+       Cette fonction permet de construire et de retourner un objet
+       de type item associé à l'object passé en argument.
+    """
+    c = gettreeitem(object)
+    return c(appli,labeltext, object, setfunction)
+
diff --git a/Editeur/configuration.py b/Editeur/configuration.py
deleted file mode 100644 (file)
index f0cd647..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-# -*- coding: utf-8 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-"""
-    Ce module sert pour charger les paramètres de configuration d'EFICAS
-"""
-# Modules Python
-import os, sys, string, types, re
-import traceback
-
-# Modules Eficas
-from Editeur import utils
-
-class CONFIGbase:
-
-  #-----------------------------------
-  def __init__(self,appli):
-  #-----------------------------------
-
-  # Classe de base permettant de lire, afficher
-  # et sauvegarder les fichiers utilisateurs editeur.ini
-  # et style.py
-  # Classe Mere de : class CONFIG(CONFIGbase)
-  #                  class CONFIGStyle(CONFIGbase):
-
-      self.appli = appli  
-      self.salome = appli.salome
-      self.dRepMat={}
-      if self.appli:
-         self.parent=appli.top
-      else:
-         self.parent=None
-      self.rep_user = utils.get_rep_user()
-      self.lecture_fichier_ini_standard()
-      self.lecture_catalogues_standard()
-      self.lecture_fichier_ini_utilisateur()
-      self.init_liste_param()
-
-  #--------------------------------------
-  def lecture_fichier_ini_standard(self):
-  #--------------------------------------
-  # Verifie l'existence du fichier "standard"
-  # appelle la lecture de ce fichier
-      if not os.path.isfile(self.fic_ini):
-          if self.appli.ihm=="TK" :
-              from widgets import showerror
-              showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n")
-          print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini
-          sys.exit(0)
-      self.lecture_fichier(self.fic_ini)
-
-  #-----------------------------
-  def lecture_fichier(self,fic):
-  #------------------------------
-  # lit les paramètres du fichier eficas.ini ou style.py
-  # les transforme en attribut de l 'objet  
-  # utilisation du dictionnaire local pour récuperer style
-      txt = utils.read_file(fic)
-      from InterfaceTK.styles import style
-      d=locals()
-      try:
-         exec txt in d
-      except:
-         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
-         if self.appli.ihm=="TK" :
-              from widgets import showerror
-              showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n")
-         print "Erreur à la lecture du fichier de configuration : %s" % fic
-         sys.exit()
-
-      for k in d.keys() :
-          if  k in self.labels.keys()  :
-             setattr(self,k,d[k])
-    # Glut horrible pour les repertoires materiau...
-          elif k[0:9]=="rep_mat_v" :
-             setattr(self,k,d[k])
-      
-      for k in d['style'].__dict__.keys() :
-          setattr(self,k,d['style'].__dict__[k])
-
-      if hasattr(self,"catalogues") :
-         for ligne in self.catalogues :
-            version=ligne[1]
-            codeSansPoint=re.sub("\.","",version)
-            chaine="rep_mat_"+codeSansPoint
-            if hasattr(self,chaine):
-               rep_mat=getattr(self,chaine)
-               self.dRepMat[version]=str(rep_mat)
-
-  #--------------------------------------
-  def lecture_fichier_ini_utilisateur(self):
-  #--------------------------------------
-  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
-      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier)
-      if not os.path.isfile(self.fic_ini_utilisateur):
-          return
-      self.lecture_fichier(self.fic_ini_utilisateur)
-
-  #--------------------------------------
-  def lecture_catalogues_standard(self):
-  #--------------------------------------
-      # repertoires Materiau
-      if hasattr(self,"catalogues") :
-         for ligne in self.catalogues :
-            version=ligne[1]
-            cata=ligne[2]
-            self.dRepMat[version]=os.path.join(cata,'materiau')
-
-  #--------------------------------------
-  def affichage_fichier_ini(self):
-  #--------------------------------------
-      """
-      Affichage des valeurs des paramètres relus par Eficas
-      """
-      import widgets
-      result = widgets.Formulaire(self.parent,
-                                  obj_pere = self,
-                                  titre = self.titre,
-                                  texte = self.texte_ini,
-                                  items = self.l_param,
-                                  mode='display',
-                                  commande=('Modifier',self.commande))
-      if result.resultat :
-          #print 'on sauvegarde les nouveaux paramètres :',result.resultat
-          self.save_param_ini(result.resultat)
-
-  #--------------------------------------
-  def save_param_ini(self,dico):
-  #--------------------------------------
-  # sauvegarde
-  # les nouveaux paramètres dans le fichier de configuration utilisateur
-  #
-      f=open(self.fic_ini_utilisateur,'w+')
-      for k,v in dico.items():
-         if self.types[k] in ('mot2','mot3','mot4'): 
-            v1=v[1:-1]
-            val=v1.split(",")
-            p = "(" 
-            listeval=""
-            for valeur in val:
-              listeval = listeval+ p + str(valeur) 
-              p=" , "
-            listeval = listeval + ")"
-            f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n') 
-         elif k == 'catalogues' :
-            f.write(k + '\t=\t' + str(v) + '\n')
-         else:
-            f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n')
-      f.close()
-      self.lecture_fichier_ini_utilisateur()
-
-  #-------------------------------------------
-  def creation_fichier_ini_si_possible(self):
-  #-------------------------------------------
-      return self.creation_fichier_ini(mode='ignorer_annuler')
-
-  #--------------------------------------------------------
-  def creation_fichier_ini(self,mode='considerer_annuler'):
-  #---------------------------------------------------------
-  # Récupération des valeurs des paramétres requis pour la création du fichier
-  # eficas.ini
-  #
-      import widgets
-      items = self.l_param
-      result = widgets.Formulaire(self.parent,
-                                  obj_pere = self,
-                                  titre = "Saisie des données indispensables à la configuration d'EFICAS",
-                                  texte = self.texte,
-                                  items = items,
-                                  mode='query')
-      if not result.resultat :
-          if mode == 'considerer_annuler':
-             test=0
-             if self.appli.ihm=="TK" :
-                from widgets import showerror,askretrycancel
-                test = askretrycancel("Erreur","Données incorrectes !")
-             if not test:
-                 # XXX On sort d'EFICAS, je suppose
-                 self.appli.exitEFICAS()
-             else:
-                 self.creation_fichier_ini()
-          else:
-              return None
-      else :
-          self.save_param_ini(result.resultat)
-          return result.resultat
-
-  #--------------------------
-  def init_liste_param (self):
-  #--------------------------
-  # construit self.l_param 
-  # a partir de self.labels et des attributs 
-  # de l objet (mis a jour lors de la lecture du fichier)
-  # l_param est une liste de tuples où chaque tuple est de la forme :
-  #           (label,nature,nom_var,defaut)
-
-      self.l_param=[]
-      for k in self.labels.keys()  :
-          if hasattr(self,k) :
-             if k in self.YesNo.keys():
-                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k],
-                                     self.YesNo[k][0],self.YesNo[k][1]))
-             else :
-                self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k]))
-      self.l_param = tuple(self.l_param)
-
-
-class CONFIG(CONFIGbase):
-  def __init__(self,appli,rep_ini):
-      self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
-              "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
-              "Si vous annulez, EFICAS ne se lancera pas !!"
-      self.salome=appli.salome
-      self.code=appli.code
-      if self.salome == 0 :
-         self.fichier="editeur.ini"
-      else :
-         self.fichier="editeur_salome.ini"
-      self.rep_ini = rep_ini
-      self.fic_ini = os.path.join(self.rep_ini,self.fichier)
-      self.titre = "Paramètres nécessaires à la configuration d'EFICAS"
-      self.texte_ini = "Voici les paramètres que requiert Eficas"
-      self.commande = self.creation_fichier_ini_si_possible
-      self.labels={"initialdir"    : "Répertoire initial pour Open/Save des fichiers",
-                   "rep_travail"   : "Répertoire de travail",
-                   "rep_mat"       : "Répertoire materiaux",
-                   "path_doc"      : "Chemin d'accès à la doc Aster",
-                   "exec_acrobat"  : "Ligne de commande Acrobat Reader",
-                   "catalogues"    : "Versions du code ",
-                   "isdeveloppeur" : "Niveau de message ",
-                   "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"}
-
-      if self.code == "OPENTURNS" :
-         self.labels["DTDDirectory"]="Chemin d'accès au wraper"
-                   
-      self.types ={"initialdir":"rep", "rep_travail":"rep","rep_mat":"rep",
-                   "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file",
-                   "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep",
-                  "DTDDirectory":"rep"}
-
-      self.YesNo={}
-      self.YesNo['isdeveloppeur']=('Deboggage','Utilisation')
-
-      # Valeurs par defaut
-      self.rep_user = utils.get_rep_user()
-      self.initialdir=self.rep_user
-      self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas')
-      self.rep_mat=""
-      self.path_doc=self.rep_user
-      self.exec_acrobat=self.rep_user
-      self.catalogues= os.path.join(self.rep_ini,'..','Cata/cata.py')
-      self.isdeveloppeur='NON'
-      self.path_cata_dev=os.path.join(self.rep_user,'cata')
-      CONFIGbase.__init__ (self,appli)
-      self.pref=""
-
-  #--------------------------------------
-  def save_params(self):
-  #--------------------------------------
-  # sauvegarde
-  # les nouveaux paramètres dans le fichier de configuration utilisateur
-  #
-      l_param=('exec_acrobat', 'rep_ini','catalogues','rep_travail','rep_mat','path_doc')
-      texte=""
-      for clef in l_param :
-          if hasattr(self,clef):
-             valeur=getattr(self,clef)
-             texte= texte + clef+"     = " + repr(valeur) +"\n"
-
-
-      # recuperation des repertoires materiaux
-      try :
-          for item in self.catalogues :
-              try :
-                  (code,version,cata,format,defaut)=item
-              except :
-                  (code,version,cata,format)=item
-              codeSansPoint=re.sub("\.","",version)
-              chaine="rep_mat_"+codeSansPoint
-              if hasattr(self,chaine):
-                 valeur=getattr(self,chaine)
-                 texte= texte + chaine+"       = '" + str(valeur) +"'\n"
-      except :
-             pass
-
-      f=open(self.fic_ini_utilisateur,'w+')
-      f.write(texte) 
-      f.close()
-
-
-class CONFIGStyle(CONFIGbase):
-  def __init__(self,appli,rep_ini):
-      self.salome=appli.salome
-      self.texte = "Pour prendre en compte les modifications \n"+\
-                   "     RELANCER EFICAS"
-      self.fichier="style.py"
-      self.rep_ini = rep_ini
-      self.fic_ini = os.path.join(self.rep_ini,self.fichier)
-      self.titre = "Paramètres d affichage"
-      self.texte_ini = "Voici les paramètres configurables :  "
-      self.commande = self.creation_fichier_ini_si_possible
-      self.labels={"background":"couleur du fonds", 
-                   "foreground":"couleur de la police standard" ,
-                   "standard":" police et taille standard",
-                   "standard_italique":"police utilisée pour l'arbre ",
-                   "standard_gras_souligne":"police utilisée pour le gras souligné",
-                   "canvas_italique":"police italique",
-                   "standard_gras":"gras",
-                   #"canvas":"police",
-                   #"canvas_gras":"police gras",
-                   #"canvas_gras_italique":"police gras italique",
-                   #"standard12":"police 12",
-                   #"standard12_gras":"police 12 gras",
-                   #"standard12_gras_italique":"police 12 gras italique",
-                   #"standardcourier10":"courrier "
-                   "statusfont":"police utilisée dans la status Bar",
-                  }
-      self.types ={"background":"mot", 
-                   "foreground":"mot" ,
-                   "standard":"mot2",
-                   "standard_italique":"mot3",
-                   "standard_gras":"mot3",
-                   "standard_gras_souligne":"mot4",
-                   "canvas":"mot2",
-                   "canvas_italique":"mot3",
-                   "canvas_gras":"mot3",
-                   "canvas_gras_italique":"mot4",
-                   "standard12":"mot2",
-                   "standard12_gras":"mot3",
-                   "standard12_gras_italique":"mot4",
-                   "statusfont":"mot2",
-                   "standardcourier10":"mot2"}
-      self.YesNo={}
-      self.l_param=[]
-      CONFIGbase.__init__ (self,appli)
-      self.pref="style."
-
-  def affichage_style_ini(self):
-      self.affichage_fichier_ini()
-
-def make_config(appli,rep):
-    return CONFIG(appli,rep)
-
-def make_config_style(appli,rep):
-    return CONFIGStyle(appli,rep)
-
-
diff --git a/Editeur/fontes.py b/Editeur/fontes.py
new file mode 100644 (file)
index 0000000..8e15892
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+standard = ("Times",10)
+standard_italique = ("Times",10,'italic')
+standard_gras = ("Times",10,'bold')
+standard_gras_souligne = ("Times",10,'bold','underline')
+
+canvas = ('times',8)
+canvas_italique = ('times',8,'italic')
+canvas_gras = ("Times",8,'bold')
+canvas_gras_italique = ("Times",10,'bold','italic')
+
+standard12 = ("Times",12)
+standard12_gras = ("Times",12,'bold')
+standard12_gras_italique = ( "times",12,'bold','italic')
+
+standardcourier10 = ("Courier",10)
+
index 9dec4a20d55e63df256a994154c3866deea002b1..3d34eaa677d1bca46d63280c557c790d74c6149f 100644 (file)
     les imports de modules Python
 """
 import sys
+import os
+
 import prefs
 
+INSTALLDIR=prefs.INSTALLDIR
+sys.path.append(INSTALLDIR)
+sys.path.append(INSTALLDIR+"/Ui")
+sys.path.append(INSTALLDIR+"/InterfaceQT")
+sys.path.append(INSTALLDIR+"/Editeur")
+
 # Ce chemin permet d'importer les modules Noyau et Validation
 # représentant le code utilisé (si fourni)
-if prefs.CODE_PATH:
-   sys.path[:0]=[prefs.CODE_PATH]
-   import Noyau,Validation
-   del sys.path[0]
-
 # Ensuite on utilise les packages de l'intallation
+if hasattr(prefs,'CODE_PATH'):
+   if prefs.CODE_PATH:
+      sys.path[:0]=[prefs.CODE_PATH]
+      import Noyau,Validation
+      del sys.path[0]
 sys.path[:0]=[prefs.INSTALLDIR]
+
+# Ensuite on surcharge eventuellement
+#if hasattr(prefs,'CODE_PATH_SURCHARGE'):
+#   if prefs.CODE_PATH_SURCHARGE:
+#       sys.path.insert(0,prefs.CODE_PATH_SURCHARGE)
+
 import Accas
index fe54d8547b001051aadcb8b1c093d76cc4c7f358..d6dbe89bedf81a02ee1fdf760eb6a30b0e77bbe1 100644 (file)
@@ -2,7 +2,8 @@ import os
 import re
 
 sous_menus={"ASTER" : {0:{"3D":"3D.comm"},1:{"poutre":"pou.comm"},2:{"salome":"salome.comm"},3:{"divers":"comm"}},
-           "OPENTURNS" : {0:{"Anne":"Anne.comm"}}
+           "OPENTURNS_STUDY" : {0:{"Anne":"Std.comm"}},
+            "OPENTURNS_WRAPPER" : {0:{"Anne":"wrapper_exemple.comm"}}
            }
 
 class listePatrons :
@@ -16,6 +17,7 @@ class listePatrons :
        self.traite_liste()
 
     def traite_liste(self):
+        if not (os.path.exists(self.rep_patrons)) : return
         for file in os.listdir(self.rep_patrons):
             for i in range(len(self.sous_menu)):
                 clef=self.sous_menu[i].keys()[0]
diff --git a/Editeur/styles.py b/Editeur/styles.py
new file mode 100644 (file)
index 0000000..2d5fc4a
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+import os
+import prefs
+import basestyle
+from basestyle import STYLE,style
+
+inistylefile=os.path.join(prefs.REPINI,"style.py")
+if os.path.isfile(inistylefile):
+   execfile(inistylefile)
+
+userstylefile=os.path.expanduser("~/Eficas_install/style.py")
+if os.path.isfile(userstylefile):
+   execfile(userstylefile)
+
+import fontes
+for attr in dir(style):
+   if attr[0]=='_':continue
+   if not hasattr(fontes,attr):continue
+   setattr(fontes,attr,getattr(style,attr))
+
+
index ecb01bb33b82c5ea5fc25c85af75381d86cf021f..ca20260a900c3ed0b278bca1769f25a4bff15fa0 100644 (file)
@@ -54,7 +54,7 @@ def get_rep_user():
     except:
       rep_user_eficas = os.path.join('C:','Eficas_install')
   else :
-    rep_user_eficas = os.path.join(os.environ['HOME'],'Eficas_install')
+    rep_user_eficas= os.path.join(os.environ['HOME'],'.Eficas_install')
   if os.path.exists(rep_user_eficas):
     if os.path.isfile(rep_user_eficas) :
       print "Un fichier de nom %s existe déjà : impossible de créer un répertoire de même nom" %rep_user_eficas
index 70b26efd4644ef14101b29355bc6c79b7fce7101..2b39f2a444d2250267ef4b40e1bb74e975e06bf6 100644 (file)
@@ -723,20 +723,20 @@ class JDC(I_OBJECT.OBJECT):
    def supprime(self):
       #print "supprime",self
       Noyau.N_JDC.JDC.supprime(self)
-   #   self.appli=None
-   #   self.g_context={}
-   #   self.const_context={}
-   #   self.sds=[]
-   #   self.sds_dict={}
-   #   self.mc_globaux={}
-   #   self.current_context={}
-   #   self.condition_context={}
-   #   self.etapes_niveaux=[]
-   #   self.niveau=None
-   #   self.params=[]
-   #   self.fonctions=[]
-   #   self._etape_context=None
-   #   self.etapes=[]
+      self.appli=None
+      self.g_context={}
+      self.const_context={}
+      self.sds=[]
+      self.sds_dict={}
+      self.mc_globaux={}
+      self.current_context={}
+      self.condition_context={}
+      self.etapes_niveaux=[]
+      self.niveau=None
+      self.params=[]
+      self.fonctions=[]
+      self._etape_context=None
+      self.etapes=[]
        
 #ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau
    def register(self,etape):
index 7e58aa0382e47413e2ccb7055ebe1d43bc0f1501..5aab780a56cbf12a21d90d904109ed0d4a5d3f94 100644 (file)
@@ -111,7 +111,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.text_error=""
        if self.nom != "INCLUDE_MATERIAU":
           if self.parent.appli.ihm == "QT" :
-              format=self.jdc.appli.format_fichier
+              format=self.parent.appli.appliEficas.format_fichier
           else :
               format=self.jdc.appli.format_fichier.get()
           if convert.plugins.has_key(format):
@@ -127,6 +127,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
               else:
                   self.text_converted=1
 
+
        j=self.JdC_aux( procedure=text, nom=fichier,
                                 appli=self.jdc.appli,
                                 cata=self.jdc.cata,
@@ -758,6 +759,91 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          f,text=None,None
       return f,text
 
+
+  def make_include2(self,fichier=None):
+      # gestion de l unicite SVP
+      unite=999
+      if hasattr(self,'fichier_ini') : return
+      #print "je passe le if"
+      if fichier == None :
+         fichier=str(self.jdc.appli.get_file_variable())
+         #print fichier
+         if fichier  == str("") : 
+           self.fichier_ini="badfile"
+           self.fichier_text=""
+          self.fichier_err="Le fichier INCLUDE n est pas defini"
+           self.parent.record_unit(999,self)
+           try :
+              MCFils=self.get_child('FICHIER')
+              MCFils.set_valeur(None)
+           except :
+              pass
+           raise Exception(self.fichier_err)
+
+         # On memorise le fichier retourne
+      self.fichier_ini  = fichier
+      self.fichier_text = ""
+      self.contexte_fichier_init={}
+      self.fichier_unite=999
+      self.fichier_err=None
+      try :
+         from openturns import WrapperFile
+         monWrapper=WrapperFile(fichier)
+         data=monWrapper.getWrapperData()
+         maVariableListe=data.getVariableList()
+         nbVariables=maVariableListe.getSize()
+         for i in range(nbVariables) :
+             nom=maVariableListe[i].id_
+             type=maVariableListe[i].type_
+             if type :
+               ligneTexte=nom+"=VARI(type='IN',);\n"
+             else :
+              ligneTexte=nom+"=VARI(type='OUT',);\n"
+             self.fichier_text = self.fichier_text + ligneTexte
+      except:
+         self.make_incl2_except()
+         raise
+
+      try:
+         import Extensions.jdc_include
+      except:
+         traceback.print_exc()
+         self.make_incl2_except()
+         raise
+      self.JdC_aux=Extensions.jdc_include.JdC_include
+      
+      try:
+         self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+         self.parent.record_unit(unite,self)
+         try :
+            MCFils=self.get_child('FICHIER')
+            MCFils.set_valeur(fichier)
+         except :
+            pass
+      except:
+         self.make_incl2_except()
+         raise
+
+  def make_incl2_except(self):
+         #print "make_incl2_except"
+         l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
+         if self.jdc.appli:
+             self.jdc.appli.affiche_alerte("Erreur lors de l'evaluation du fichier inclus",
+                                            message="Le contenu de ce fichier ne sera pas pris en compte\n"+string.join(l)
+                                           )
+         self.parent.record_unit(unite,self)
+         self.g_context={}
+         self.etapes=[]
+         self.jdc_aux=None
+         self.fichier_err = string.join(l)
+         self.contexte_fichier_init={}
+         try :
+            MCFils=self.get_child('FICHIER')
+            MCFils.set_valeur(None)
+         except :
+            pass
+
+
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
   def make_include(self,unite=None):
       """
@@ -798,7 +884,6 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          try:
            self.make_contexte_include(self.fichier_ini ,self.fichier_text)
            self.parent.record_unit(unite,self)
-           #print "make_include.context_ini",self.jdc_aux.context_ini
          except:
            l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
            if self.jdc.appli:
index e149adc59415c735fef7ed691f25d7d89cf50bfb..2b11541e5f8e83e652439709233dbc63bfdd37a5 100644 (file)
@@ -22,7 +22,7 @@ class JDCTree( QListView ):
         self.addColumn(self.trUtf8('Commande'))
         self.addColumn(self.trUtf8('Concept/Valeur'))
                 
-        self.setMinimumSize(QSize(400,500))
+        #self.setMinimumSize(QSize(400,500))
         self.connect(self,SIGNAL('contextMenuRequested(QListViewItem *, const QPoint &, int)'),
                      self.handleContextMenu)
 
index 3e2823000bae7d7542ec0132712a8b5b0d5660e3..b2391368c5aaf2aa932e63f83354ac022a24217c 100644 (file)
@@ -18,7 +18,7 @@ import readercata
 import prefs
 import qtCommun
 
-VERSION_EFICAS  = "EFICAS v1.14"
+VERSION_EFICAS  = "EFICAS v1.15"
 
 
 # -------------------------- #
@@ -52,7 +52,7 @@ class JDCEditor(QSplitter):
        self.jdc_openturn_std=""
         self.ihm="QT"
         
-        from Editeur import configuration
+        import configuration
         self.CONFIGURATION = self.appliEficas.CONFIGURATION
         self.CONFIGStyle = self.appliEficas.CONFIGStyle
         self.test=0
@@ -267,15 +267,15 @@ class JDCEditor(QSplitter):
         if unite :
             titre = "Choix unite %d " %unite
             texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
-            texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
+            texte = texte+'Donnez le nom du fichier correspondant à l unité logique %d' % unite
             labeltexte = 'Fichier pour unite %d :' % unite
         else:
             titre = "Choix d'un fichier de poursuite"
             texte = "Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
-            texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
+            texte = texte+'Donnez le nom du fichier dont vous  voulez faire une poursuite'
                                         
         QMessageBox.information( self, titre,texte)
-        fn = QFileDialog.getOpenFileName( None, "", self, None, titre )
+        fn = QFileDialog.getOpenFileName( self.CONFIGURATION.savedir,"", self, titre, "" )
         
         if fn.isNull():
             return
@@ -644,25 +644,25 @@ class JDCEditor(QSplitter):
         if saveas or self.fileName is None:
             if path is None and self.fileName is not None:
                 path = os.path.dirname(unicode(self.fileName))
-            selectedFilter = QString('')
+            else :
+                path=self.CONFIGURATION.savedir
             fn = QFileDialog.getSaveFileName(path,
-                self.trUtf8("JDC (*.comm);;"
-                    "All Files (*)"), self, None,
-                self.trUtf8("Save File"), selectedFilter, 0)
-                
+                self.trUtf8("JDC (*.comm);;" "All Files (*)"),self, None,
+                self.trUtf8("Save File"), '', 0)
+
             if not fn.isNull():
                 ext = QFileInfo(fn).extension()
                 if ext.isEmpty():
-                    ex = selectedFilter.section('(*',1,1).section(')',0,0)
-                    if not ex.isEmpty():
-                        fn.append(ex)
+                    ex =  ".comm"
+                    fn.append(ex)
                 if QFileInfo(fn).exists():
-                    abort = QMessageBox.warning(self,
+                    abort = QMessageBox.warning(
+                       self,
                         self.trUtf8("Save File"),
-                        self.trUtf8("The file <b>%1</b> already exists.")
-                            .arg(fn),
+                        self.trUtf8("The file <b>%1</b> already exists.").arg(fn),
                         self.trUtf8("&Overwrite"),
-                        self.trUtf8("&Abort"), None, 1)
+                        self.trUtf8("&Abort") )
+                    print abort
                     if abort:
                         return (0, None)
                 fn = unicode(QDir.convertSeparators(fn))
index b69d38191102c237a2531bf2049d29b62eb03fce..e38ed07bcd11ec0730afc0df17a7361c1974b4b9 100644 (file)
@@ -52,8 +52,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         l_valeurs=[]
         if (len(liste)% self.nbValeurs != 0):
             message="La cardinalité n'est pas correcte, la dernière valeur est ignorée"
-            #self.Commentaire.setText(QString(commentaire)) 
-            self.editor.affiche_infos(commentaire)
+            self.editor.affiche_infos(message)
         for i in range(len(liste)/ self.nbValeurs) :
             if (self.nbValeurs==2):
               t=(liste[i*self.nbValeurs], liste[i*self.nbValeurs+1])
@@ -66,12 +65,22 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         self.LBValeurs.clear()
         listeValeurs=self.node.item.GetListeValeurs()
         for valeur in self.DecoupeListeValeurs(listeValeurs):
-            self.LBValeurs.insertItem(str(valeur))
+            if type(valeur) == types.TupleType:
+               TupleEnTexte="("
+               for val in valeur :
+                      TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+               TupleEnTexte = TupleEnTexte[0:-2] +")"
+               self.LBValeurs.insertItem(TupleEnTexte)
+            else :
+                  self.LBValeurs.insertItem(QString(str(valeur)))
 
   def  Ajout1Valeur(self,liste=[]):
         # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
         if liste == [] :
-           liste,validite=SaisieValeur.TraiteLEValeur(self)
+           liste,validite,texteBrut=SaisieValeur.TraiteLEValeur(self)
+           if validite :
+              for val in texteBrut.split(',') :
+                  self.politique.AjoutDsDictReel(val)
         else :
            validite=1
         if validite == 0 : return
@@ -90,12 +99,12 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         index=self.LBValeurs.currentItem() +1
         indexListe=index*self.nbValeurs
         if index == 0 : 
-           index = -1
+           index = len(self.listeValeursCourantes)
            indexListe=len(self.listeValeursCourantes)
         listeVal=[]
         for valeur in self.listeValeursCourantes :
                 listeVal.append(valeur)
-        validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
+        validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index+1,listeVal)
         self.Commentaire.setText(comm2)
         if not validite :
                 self.editor.affiche_infos(comm)
@@ -104,7 +113,14 @@ class MonFonctionPanel(MonPlusieursBasePanel):
            l1=self.listeValeursCourantes[:indexListe]
            l3=self.listeValeursCourantes[indexListe:]
            for valeur in self.DecoupeListeValeurs(listeRetour):
-               self.LBValeurs.insertItem(QString(str(valeur)),index)
+               if type(valeur) == types.TupleType:
+                  TupleEnTexte="("
+                  for val in valeur :
+                      TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+                  TupleEnTexte = TupleEnTexte[0:-2] +")"
+                  self.LBValeurs.insertItem(TupleEnTexte,index)
+               else :
+                  self.LBValeurs.insertItem(QString(str(valeur)),index)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
 
index b2e925bd6b53462bc61b29786c81c26cb9d42793..cec4661c25ee488f919e012e3fdc87d7b47ead84 100644 (file)
@@ -41,7 +41,7 @@ class MonIncludePanel(MonMacroPanel):
         MonMacroPanel.__init__(self,node,parent,name,fl)
         #Version TK ??
         #if not hasattr(self.node.item.object,'fichier_ini'):
-        if not hasattr(self.node.item.object,'fichier_unite'):
+        if not hasattr(self.node.item.object,'fichier_ini'):
            self.ajoutPageBad()
         else:
            self.ajoutPageOk()
@@ -68,7 +68,7 @@ class MonIncludePanel(MonMacroPanel):
 
         self.BChangeFile = QPushButton(self.TabPage,"BChangeFile")
         self.BChangeFile.setGeometry(QRect(290,350,161,41))
-        self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth()))
+        #self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth()))
         self.BChangeFile.setText(self._DMacro__tr("Autre Fichier"))
 
         self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
index 89c4510c3da29d7e3ffb35b7da3bb4747c022a5f..70c0dbdb5d2ee3898874ef0bab7dd2df5f260d41 100644 (file)
@@ -124,13 +124,13 @@ class Options(desOptions):
        if res == 1 : return 
 
        appli=self.configuration.appli
-       rep_ini=self.configuration.rep_ini
+       repIni=self.configuration.repIni
        fic_ini_util=self.configuration.fic_ini_utilisateur
        old_fic_ini_util=fic_ini_util+"_old"
        commande="mv "+fic_ini_util+" "+old_fic_ini_util
        os.system(commande)
-       from Editeur import configuration
-       configNew=configuration.CONFIG(appli,rep_ini)
+       import configuration
+       configNew=configuration.CONFIG(appli,repIni)
        self.configuration=configNew
        appli.CONFIGURATION=configNew
        self.configuration.save_params()
index 0907cbed73b56467e54de92ca99414200b42caa1..f10f1e76240215a3bba54f1019b7e2010bc47927 100644 (file)
@@ -51,7 +51,6 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
   def detruitBouton(self):
         mc = self.node.item.get_definition()
         type = mc.type[0]
-        print self.editor.salome
         if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
            self.BSalome.close()
            self.BView2D.close()
@@ -61,7 +60,7 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
 
   def BuildLBValeurs(self):
        # redefinit en raison de l heritage par monFonctionPanel
-        SaisieValeur.BuildLBValeurs(self)
+        SaisieValeur.BuildLBValeurs(self,politique=self.politique)
 
   def BOkPourListePressed(self):
         if self.listeValeursCourantes == [] :
@@ -92,9 +91,11 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
           
 
   def Ajout1Valeur(self,valeur=None):
-        liste,validite=SaisieValeur.TraiteLEValeur(self,valeur)
+        liste,validite,texteBrut=SaisieValeur.TraiteLEValeur(self,valeur)
         if validite == 0 : return
         if liste ==[]    : return
+        for val in texteBrut.split(',') :
+             self.politique.AjoutDsDictReel(val)
 
         index=self.LBValeurs.currentItem() + 1
         listeVal=[]
@@ -110,11 +111,13 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
            l3=self.listeValeursCourantes[index:]
            for valeur in listeRetour:
                self.LBValeurs.insertItem(QString(str(valeur)),index)
+               self.LBValeurs.setCurrentItem(index)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
+        self.editor.modified=1
 
   def BImportPressed(self):
-        init=QString( self.editor.CONFIGURATION.rep_user)
+        init=QString( self.editor.CONFIGURATION.savedir)
         fn = QFileDialog.getOpenFileName(init, self.trUtf8('All Files (*)',))
         if fn == None : return
         if fn == "" : return
index 80fa423558403d8eb94b44fddb59a8e2b43b122b..4a738c7f6f27e38b59bb08cddf5fa9f8ee494ecd 100644 (file)
@@ -91,6 +91,7 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
            l3=self.listeValeursCourantes[index:]
            for valeur in listeRetour:
                self.LBValeurs.insertItem(QString(str(valeur)),index)
+               self.LBValeurs.setCurrentItem(index)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
index bf8f3a8e649fed306f88509ba0c22f585bc393ca..678fc089ce90d429d8b2355535b80a5f7da1b7eb 100644 (file)
@@ -40,6 +40,7 @@ class MonRacinePanel(DRac,QTPanelTBW2):
         DRac.__init__(self,parent,name,fl)
         QTPanel.__init__(self,node,parent)
         QTPanelTBW2.__init__(self,node,parent,racine=1)
+        self.setMinimumSize(0,0)
 
   def BSupPressed(self):
       QTPanel.BSupPressed(self)
index c3c641488b368b0e61f53cb67816c378a1eb8754..d0f03f8eb5f28856332ef05e662b8320f686ec76 100644 (file)
@@ -44,6 +44,7 @@ class MonSelectVal(DSelVal):
         self.initVal()
 
   def readVal(self):
+        if self.file == "" : return
         f = open(self.file, "rb")
         self.texte = f.read()
         f.close()
@@ -62,6 +63,7 @@ class MonSelectVal(DSelVal):
   def BImportSelPressed(self):
         text=str(self.TBtext.selectedText())
         self.textTraite=text
+        if self.textTraite == "" : return
         self.Traitement()
         
   def BImportToutPressed(self):
@@ -75,10 +77,11 @@ class MonSelectVal(DSelVal):
         liste1=self.textTraite.split(self.separateur)
         liste=[]
         for val in liste1 :
-            val=str(val)
-            try :
-              val=eval(val,{})
-            except :
-              pass
-            liste.append(val)
+            if val != '' and val != ' ' and val != self.separateur :
+               val=str(val)
+               try :
+                 val2=eval(val,{})
+                 liste.append(val)
+               except :
+                 pass
         self.FonctPanel.AjoutNValeur(liste) 
index 539f61134439c21f66d96f92bf45509cc53a4660..65e9df1810f9d57a7c6d5d0c3e58aa13128b87d8 100644 (file)
@@ -59,7 +59,7 @@ class Validation  :
   def SetValeurTexte(self,texteValeur) :
          try :
                   if "R" in self.node.item.object.definition.type:
-                     if texteValeur[0] != "'":
+                     if str(texteValeur)[0] != "'":
                         clef=eval(texteValeur)
                         if str(clef) != str(texteValeur) :
                            self.node.item.object.init_modif()
@@ -72,6 +72,23 @@ class Validation  :
          except:
             pass
 
+  def AjoutDsDictReel(self,texteValeur):
+         try :
+         #if 1 :
+                  if "R" in self.node.item.object.definition.type:
+                     if str(texteValeur)[0] != "'":
+                        clef=eval(texteValeur)
+                        if str(clef) != str(texteValeur) :
+                           clefobj=self.node.item.object.GetNomConcept()
+                           if not self.parent.dict_reels.has_key(clefobj):
+                              self.parent.dict_reels[clefobj] = {}
+                           self.parent.dict_reels[clefobj][clef]=texteValeur
+                           self.parent.dict_reels[clefobj]
+         except:
+         #else:
+            #print "pb ds try de AjoutDsDictReel"
+            pass
+
   def GetValeurTexte(self,valeur) :
          valeurTexte=valeur
          if "R" in self.node.item.object.definition.type:
@@ -106,9 +123,9 @@ class PolitiqueUnique(Validation) :
          return validite, commentaire 
 
  
-#------------------------
-class PolitiquePlusieurs:
-#------------------------
+#-------------------------------------
+class PolitiquePlusieurs (Validation):
+#-------------------------------------
   """
   classe servant pour les entrees ne demandant qu un mot clef
   """
@@ -127,11 +144,10 @@ class PolitiquePlusieurs:
          if not( type(listevaleur)  in (types.ListType,types.TupleType)) :
             listevaleur=tuple(listevaleur)
          for valeur in listevaleur :
+             valeurScientifique=valeur
              # On teste le type de la valeur
              valide=self.node.item.valide_item(valeur)
              if not valide :
-                #print self.__class__
-                #if not testtype :
                 try :
                    valeur,valide=self.node.item.eval_valeur(valeur)
                    valide,commentaire = self.node.item.object.verif_type(valeur)
@@ -153,8 +169,10 @@ class PolitiquePlusieurs:
                    commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
                    return valide,commentaire,commentaire2,listeRetour
                 if len(listecourante) + 1 > min :
+                   commentaire=""
                    return valide,commentaire,commentaire2,listeRetour
              # On ajoute la valeur testee a la liste courante et a la liste acceptee
+             self.AjoutDsDictReel(valeurScientifique)
              listecourante.insert(index,valeur)
              index=index+1
              listeRetour.append(valeur)
index e89ffc22fd07970a57efeff2e586a3c9fe466f26..99a9afca1ee3af86f57eaed2ee9cce61c5970abe 100644 (file)
@@ -311,7 +311,7 @@ class ViewText(QDialog):
         
     def saveFile(self):
         #recuperation du nom du fichier
-        fn = QFileDialog.getSaveFileName(None,
+        fn = QFileDialog.getSaveFileName("",
                 self.trUtf8("All Files (*)"), self, None,
                 self.trUtf8("Save File"), '', 0)                
         if not fn.isNull():                
index 0e537d87f4508ae8293beb8885ef3e43a77066c1..df16582af833674544c8e91302d18b1ba166f406 100644 (file)
@@ -3,15 +3,13 @@
 import os, sys
 REPINI=os.path.dirname(os.path.abspath(__file__))
 INSTALLDIR=os.path.join(REPINI,'..')
-sys.path.append(INSTALLDIR)
-sys.path.append(INSTALLDIR+"/Ui")
-sys.path.append(INSTALLDIR+"/InterfaceQT")
+from Editeur import import_code
 
 from qt import *
 from myMain import Eficas
 from viewManager import MyTabview
 
-from Editeur import configuration
+import configuration
 from Editeur import session
 
 import utilIcons
@@ -132,7 +130,7 @@ class Appli(Eficas):
         titre = "version "
         monVisu=DVisu(parent=self.viewmanager,fl=Qt.WType_Dialog)
         monVisu.setCaption(titre)
-        monVisu.TB.setText("Eficas V1.14")
+        monVisu.TB.setText("Eficas V1.15")
         monVisu.adjustSize()
         monVisu.show()
 
index 7c3c86e6b5bca775f2758e9b3c048cf291e34114..938ff0772857f5d34a8ab773f3d4108c9806e21c 100644 (file)
@@ -45,11 +45,14 @@ class SaisieValeur:
                self.listBoxASSD.setCurrentItem(0)
 
 
-  def BuildLBValeurs(self):
+  def BuildLBValeurs(self,politique=None):
         self.LBValeurs.clear()
         listeValeurs=self.node.item.GetListeValeurs()
         for valeur in listeValeurs:
-            self.LBValeurs.insertItem(str(valeur))
+            if politique :
+              self.LBValeurs.insertItem(str(self.politique.GetValeurTexte(valeur)))
+            else :
+              self.LBValeurs.insertItem(str(valeur))
         if listeValeurs != None and listeValeurs != [] :
             self.LBValeurs.setCurrentItem(len(listeValeurs) - 1)
        
@@ -116,7 +119,7 @@ class SaisieValeur:
            valeurBrute=str(self.LEValeur.text())
         else :
            valeurBrute=valeurTraitee
-        if valeurBrute == str("") : return 1, listeValeurs
+        if valeurBrute == str("") : return  listeValeurs,1,valeurBrute
         try :
            valeur=eval(valeurBrute,{})        
         except :
@@ -134,7 +137,7 @@ class SaisieValeur:
                     except :
                        commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
                        self.editor.affiche_infos(commentaire)
-                       return listeValeurs,0
+                       return listeValeurs,0,valeurBrute
                        
 
                  else :     # ce n'est pas un tuple à la mode aster
@@ -150,7 +153,7 @@ class SaisieValeur:
         else:
           listeValeurs.append(valeur)
 
-        return listeValeurs,1
+        return listeValeurs,1,valeurBrute
 
 
 class SaisieSDCO :
index 1f2dac873585a0fb69fef963038dc578a83b20e6..b6f4c53550c7ca909f81591d82b172bbd86ef8a9 100644 (file)
@@ -42,7 +42,7 @@ from monChoixCata import MonChoixCata
 
 from qt import *
 
-version="14"
+version="15"
 
 class READERCATA:
 
@@ -51,6 +51,7 @@ class READERCATA:
       self.parent=parent
       self.code=self.appli.code
       self.appli.format_fichier='python'
+      self.appli.appliEficas.format_fichier='python'
       self.version_code=self.appli.version_code
       self.version_cata=None
       self.fic_cata=None
@@ -81,10 +82,12 @@ class READERCATA:
              if self.version_code == cata[1]:
                 self.fic_cata = cata[2]
                 self.appli.format_fichier=cata[3]
+                self.appli.appliEficas.format_fichier=cata[3]
       elif len(liste_cata_possibles)==1:
           self.fic_cata = liste_cata_possibles[0][2]
           self.version_code = liste_cata_possibles[0][1]
           self.appli.format_fichier=liste_cata_possibles[0][3] 
+          self.appli.appliEficas.format_fichier=liste_cata_possibles[0][3] 
           lab=QString("Eficas V1.") 
           lab+=QString(version) 
           lab+=QString(" pour ")
@@ -326,6 +329,7 @@ class READERCATA:
           self.fic_cata = self.dico_catalogues[self.version_cata][2]
           self.version_code = self.version_cata
           self.appli.format_fichier = self.dico_catalogues[self.version_cata][3]
+          self.appli.appliEficas.format_fichier = self.dico_catalogues[self.version_cata][3]
           lab+=self.version_cata
           self.appli.parent.ui.setCaption(lab)
           #qApp.mainWidget().setCaption(lab)
index c4542f100fbe27c888b3ab8bbc15d870b63fc88b..01938695b4561a94cdbf76a60839011cab509b87 100644 (file)
@@ -2482,10 +2482,13 @@ class MyTabview(Tabview):
         else:
             # None will cause open dialog to start with cwd
             try :
-               userDir=os.path.expanduser("~/Eficas_install/")
-               return userDir
-            except :
-               return ""        
+               userDir=self.appli.CONFIGURATION.savedir
+            except  :
+               try :
+                  userDir=os.path.expanduser("~")
+               except :
+                  userDir=""
+            return userDir
 
 
     def handleEditorOpened(self):
index 8d2c165faf736c4e61b146084c81a69b5e53cc3a..dc260e10a71c1d28b94a401ab25e9263313961a2 100644 (file)
@@ -29,7 +29,9 @@ from PyQt4.QtCore import *
 class JDCTree( QTreeWidget ):
     def __init__( self, jdc_item, QWParent):        
         QListView.__init__( self, QWParent )
+        print QWParent.__class__
         
+        print "je suis dans JDCTree et voilà ", jdc_item
         self.item          = jdc_item
         self.tree          = self        
         self.editor       = QWParent
index 66bd646fe7dd1131aa2af4ba959350116b184f99..14d05da758790f4816df9bc8f3d099e8dcad0499 100644 (file)
@@ -51,7 +51,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
         return child
 
     def view3D(self) :
-        import TroisDPal
+        from Editeur import TroisDPal
         troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas)
         troisD.envoievisu()
 
index 2d7364fdde2347cfdcbd81421ee532f2ef7b7b55..d1422bf5af062de41d04db858dbb72f6355c2c55 100644 (file)
@@ -10,8 +10,6 @@ from Editeur import Objecttreeitem
 import browser
 from Noyau.N_CR   import justify_text
     
-import prefs
-
 class Node(browser.JDCNode):    
     def getPanel(self):
         """        
index 7b8c937b296b0dc196e099b64c0b4726734bd6e3..7ab8dc62797164419a18aa4d11aa7f948a1af16e 100644 (file)
@@ -18,6 +18,7 @@
 #
 # ======================================================================
 
+print "INTERFACEQT4"
 import types,sys,os
 import traceback
 from PyQt4 import *
@@ -30,14 +31,12 @@ import convert,generator
 from Editeur     import session
 from Editeur     import comploader
 from Editeur     import Objecttreeitem
-#import panelsQT
 import browser
 import readercata
 import qtCommun
 
-import prefs
 
-VERSION_EFICAS  = "EFICAS v1.14"
+VERSION_EFICAS  = "EFICAS v1.15"
 
 
 class JDCEditor(QSplitter):
@@ -46,11 +45,10 @@ class JDCEditor(QSplitter):
        Editeur de jdc
     """        
 
-    def __init__ (self,fichier = None, jdc = None, QWParent=None, units = None, include=0 ,appli=None, vm=None):          
+    def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):          
     #----------------------------------------------------------------------------------------------------------#
 
-        #print "debut JDCEditor __init__"
-        print "fichier", fichier,"jdc",jdc,"units",units,"include",include
+        #print "fichier", fichier,"jdc",jdc,"units",units,"include",include
         QSplitter.__init__(self, QWParent)
        self.appliEficas = appli
        self.appli       = appli  #---- attendu par IHM
@@ -63,21 +61,20 @@ class JDCEditor(QSplitter):
         VERSION_CODE    = session.d_env.cata
         if appli != None :
            self.salome =  self.appliEficas.salome
+           self.format =  self.appliEficas.format_fichier
         else :
            self.salome=0
+           print "dans JDC pas d appli ????????"
 
-        self.code = prefs.code
+        self.code = self.appliEficas.CONFIGURATION.code
         self.version_code = VERSION_CODE
         self.titre=VERSION_EFICAS + ' pour '+ self.code
 
         self.dict_reels={}
         self.liste_simp_reel=[]        
-        self.format_fichier='python' # par defaut
-       self.jdc_openturn_xml=""
-       self.jdc_openturn_std=""
         self.ihm="QT"
         
-        from Editeur import configuration
+        import configuration
         self.CONFIGURATION = self.appliEficas.CONFIGURATION
         self.CONFIGStyle =   self.appliEficas.CONFIGStyle
 
@@ -167,7 +164,6 @@ class JDCEditor(QSplitter):
         """
         import Extensions.jdc_include
         JdC_aux=Extensions.jdc_include.JdC_include
-        print JdC_aux
         CONTEXT.unset_current_step()        
 
         jaux=self.readercata.cata[0].JdC( procedure="",
@@ -206,17 +202,20 @@ class JDCEditor(QSplitter):
         
         jdcName=os.path.basename(fn)
         # Il faut convertir le contenu du fichier en fonction du format
-        if convert.plugins.has_key( self.format_fichier ):
+        if convert.plugins.has_key( self.appliEficas.format_fichier ):
              # Le convertisseur existe on l'utilise
              appli = self 
-             p=convert.plugins[self.format_fichier]()
+             p=convert.plugins[self.appliEficas.format_fichier]()
              p.readfile(fn)         
              text=p.convert('exec',appli)
              if not p.cr.estvide():                 
                 self.affiche_infos("Erreur à la conversion")
+        else :
+            self.affiche_infos("Type de fichier non reconnu")
+            QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")            
+            return None
         
         CONTEXT.unset_current_step()
-        ##   os.chdir(self.initialdir)
         jdc=self.readercata.cata[0].JdC(procedure=text,
                                     appli=self,
                                     cata=self.readercata.cata,
@@ -236,10 +235,11 @@ class JDCEditor(QSplitter):
            self.lastModified = 1
         return jdc
         
+
     #-----------------------#
     def get_source(self,file):
     #-----------------------#
-        format=self.format_fichier
+        format=self.appliEficas.format_fichier
 
         # Il faut convertir le contenu du fichier en fonction du format
         if convert.plugins.has_key(format):
@@ -267,7 +267,7 @@ class JDCEditor(QSplitter):
     #-----------------------#
     def viewJdcSource(self):        
     #-----------------------#
-        format = self.format_fichier
+        format = self.appliEficas.format_fichier
         f=open(self.fichier,'r')
         texteSource=f.read()
         f.close()
@@ -276,7 +276,7 @@ class JDCEditor(QSplitter):
     #-----------------------#
     def viewJdcPy(self):        
     #-----------------------#
-        format = self.format_fichier
+        format = self.appliEficas.format_fichier
         strSource = str( self.get_text_JDC(format) )       
         self._viewText(strSource, "JDC_RESULTAT")
                  
@@ -299,6 +299,16 @@ class JDCEditor(QSplitter):
     #------------------------------#
     def affiche_infos(self,message):
     #------------------------------#
+        if self.salome :
+          if not hasattr(self.appliEficas,'MessageLabel') :
+              self.appliEficas.leLayout=QDockWindow(self.appliEficas)
+             self.appliEficas.MessageLabel = QLabel(self.appliEficas.leLayout,"MessageLabel")
+             self.appliEficas.MessageLabel.setAlignment(Qt.AlignBottom)
+              self.appliEficas.leLayout.setWidget(self.appliEficas.MessageLabel)
+              self.appliEficas.moveDockWindow(self.appliEficas.leLayout,Qt.DockBottom)
+          self.appliEficas.MessageLabel.setText(message)
+          self.appliEficas.MessageLabel.show()
+          self.appliEficas.leLayout.show()
         if self.sb:
             self.sb.showMessage(message)#,2000)
 
@@ -368,8 +378,7 @@ class JDCEditor(QSplitter):
       Ne permet que la copie d'objets de type Commande ou MCF
       """
       self.chercheNoeudSelectionne()
-      print "noeud a copier", self.node_selected.item.GetLabelText()[0]
-      print "noued apres " ,self.QWParent.noeud_a_editer.item.GetLabelText()[0]
+      index_noeud_a_couper=self.QWParent.noeud_a_editer.treeParent.children.index(self.QWParent.noeud_a_editer)
       if self.QWParent.noeud_a_editer == None :
           QMessageBox.information( self, 
                       "Copie impossible",
@@ -398,10 +407,13 @@ class JDCEditor(QSplitter):
       # si possible on renomme l objet comme le noeud couper
 
       if self.QWParent.edit == "couper":
-         #nom = self.QWParent.noeud_a_editer.item.object.sd.nom
-         print self.QWParent.noeud_a_editer.item.object.sd.nom
+         print self.QWParent.noeud_a_editer.child
+         index_ajoute=child.treeParent.children.index(child)
+         if index_ajoute <= index_noeud_a_couper :
+            index_noeud_a_couper=index_noeud_a_couper + 1
          item=self.QWParent.noeud_a_editer.item
-         self.QWParent.noeud_a_editer.delete()
+         noeud_a_supprimer=self.QWParent.noeud_a_editer.treeParent.children[index_noeud_a_couper]
+         noeud_a_supprimer.delete()
          child.item.update(item)
          #test,mess = child.item.nomme_sd(nom)
          child.select()
@@ -413,10 +425,25 @@ class JDCEditor(QSplitter):
     def getFileName(self):
     #---------------------#
       return self.fichier
-      
+
     #---------------------------#
+    def get_file_variable(self) :
+    #---------------------------#
+     titre = "Choix d'un fichier XML"
+     texte = "Le fichier contient une commande INCLUDE\n"
+     texte = texte+'Donnez le nom du fichier XML qui contient la description des variables'
+     QMessageBox.information( self, titre,texte)
+                                        
+     fichier = QFileDialog.getOpenFileName(self.appliEficas,
+                   self.appliEficas.trUtf8('Ouvrir Fichier'),
+                   self.appliEficas.CONFIGURATION.savedir,
+                   self.appliEficas.trUtf8('Wrapper Files (*.xml);;''All Files (*)'))
+     print fichier
+     return  fichier
+      
+    #----------------------------------#
     def writeFile(self, fn, txt = None):
-    #------------------------------#
+    #----------------------------------#
         """
         Public slot to write the text to a file.
         
@@ -427,14 +454,13 @@ class JDCEditor(QSplitter):
         fn = unicode(fn)
 
         if txt == None :
-            txt = self.get_text_JDC(self.format_fichier)
+            txt = self.get_text_JDC(self.appliEficas.format_fichier)
             eol = '\n'        
             if len(txt) >= len(eol):
                if txt[-len(eol):] != eol:
                   txt += eol
             else:
                 txt += eol        
-
         try:
             f = open(fn, 'wb')
             f.write(txt)
@@ -446,37 +472,24 @@ class JDCEditor(QSplitter):
                     .arg(unicode(fn)).arg(str(why)))
             return 0
 
-#    #------------------------------------ 
-#    def writeFilesOpenturns(self,fn) :
-#    #------------------------------------ 
-#      base=fn[:fn.rfind(".")]
-#      fileXML=base + '.xml'
-#      fileSTD=base + '_std.py'
-#        self.writeFile(fileXML,self.jdc_openturn_xml)
-#        self.writeFile(fileSTD,self.jdc_openturn_std)
-#
-#
     #-----------------------------#
     def get_text_JDC(self,format):
     #-----------------------------#
       if generator.plugins.has_key(format):
          # Le generateur existe on l'utilise
-         g=generator.plugins[format]()
-         jdc_formate=g.gener(self.jdc,format='beautifie')
-        if format == "openturns" :
-           self.jdc_openturn_xml=g.getOpenturnsXML()
-           self.jdc_openturn_std=g.getOpenturnsSTD()
-         if not g.cr.estvide():            
+         self.generator=generator.plugins[format]()
+         jdc_formate=self.generator.gener(self.jdc,format='beautifie')
+         if not self.generator.cr.estvide():            
             self.affiche_infos("Erreur à la generation")
             QMessageBox.critical( self, "Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
-            return
+            return ""
          else:
             return jdc_formate
       else:         
          # Il n'existe pas c'est une erreur
          self.affiche_infos("Format %s non reconnu" % format)
-         QMessageBox.critical( self, "Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
-         return
+         QMessageBox.critical( self, "Format "+format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+format)
+         return ""
       
       
     #-----------------------------------------#
@@ -496,8 +509,7 @@ class JDCEditor(QSplitter):
         newName = None
         if self.fichier is None or saveas:
           if path is None: 
-             #PN --> modifier selon les prefs
-             path="/tmp"
+             path=self.CONFIGURATION.savedir
           selectedFilter = QString('')
           fn = QFileDialog.getSaveFileName( self,
                self.trUtf8("sauvegarde"), path,
@@ -533,8 +545,22 @@ class JDCEditor(QSplitter):
                 self.appliEficas.addToRecentList(newName)
                 self.tree.racine.item.getObject().nom=os.path.basename(newName)
                 self.tree.racine.update_node_label()
-#          if self.code == "OPENTURNS" :
-#             self.writeFilesOpenturns(fn)
+               
+            try : 
+            #if 1 :
+               fileXML = fn[:fn.rfind(".")] + '.xml'
+               self.generator.writeOpenturnsXML( fileXML )
+            except :
+            #else :
+               pass
+               
+            #PNPNPNPN A ecrire
+            try : 
+               fileSTD = fn[:fn.rfind(".")] + '.py'
+               self.generator.writeOpenturnsSTD( fileSTD )
+            except :
+               pass
+
 #            if self.salome : 
 #               self.QWParent.appli.addJdcInSalome( self.fichier)
 #               if self.code == 'ASTER':
@@ -579,8 +605,8 @@ class JDCEditor(QSplitter):
             texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
                                         
         QMessageBox.information( self, titre,texte)
-        #PN --> les prefs
-        fn = QFileDialog.getOpenFileName( self, titre)
+        path=self.CONFIGURATION.savedir
+        fn = QFileDialog.getOpenFileName( self, titre,path)
         
         if fn.isNull(): 
         # ce retour est impose par le get_file d'I_JDC
@@ -596,8 +622,10 @@ class JDCEditor(QSplitter):
             # Une erreur a été rencontrée
             jdcText = ''
         return ulfile, jdcText
+
         
 if __name__=='__main__':    
+    import prefs # dans main
     if hasattr(prefs,'encoding'):
        # Hack pour changer le codage par defaut des strings
        import sys
@@ -616,7 +644,7 @@ if __name__=='__main__':
 #    code=options.code
 #        
     app = QApplication(sys.argv)    
-    mw = JDCEditor('azAster.comm')
+    mw = JDCEditor(None,'azAster.comm')
     app.setMainWidget(mw)
     app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
     mw.show()
index daaf8bf783d14f2a7c9c0893e6ac57435e27dfd1..e79bea8b0439c9ab756fe213a5b6b4d36aa51d46 100644 (file)
 """
 # Modules Python
 import sys
-from qt import *
+from PyQt4.QtGui import *
 
-# Modules Eficas
-import prefs
-if hasattr(prefs,'encoding'):
-   # Hack pour changer le codage par defaut des strings
-   import sys
-   reload(sys)
-   sys.setdefaultencoding(prefs.encoding)
-   del sys.setdefaultencoding
-   # Fin hack
-
-from Editeur import import_code
-from Editeur import session
+from Editeur  import import_code
+from Editeur  import session
+from qtEficas import Appli
 
 def lance_eficas(code=None,fichier=None):
     """
         Lance l'appli EFICAS
     """
     # Analyse des arguments de la ligne de commande
-    if code !=None : prefs.code=code
-    import qtEficas
     options=session.parse(sys.argv)
     code=options.code
 
     app = QApplication(sys.argv)
-    mw = qtEficas.Appli(code=code)
-    app.setMainWidget(mw)
-    app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
-    mw.show()
-    mw.ouvreFichiers()
-    res = app.exec_loop()
-    sys.exit(res)
+    Eficas=Appli(code=code)
+    Eficas.show()
 
 
+    res=app.exec_()
+    sys.exit(res)
+
index 15a0408c0061a89dbbc2f6c74d07a6bda11fe284..4d78b8d6f85735223473c0b2e307b82da4526a3c 100644 (file)
@@ -83,7 +83,6 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
         self.TWChoix.setCurrentIndex(2)
 
   def BBrowsePressed(self):
-      print self.node.makeEdit
       self.node.makeEdit()
 
   def BOkIncPressed (self):
@@ -103,6 +102,8 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
         if not text:
            return
 
+        self.editor.init_modif()
+
         try :
            self.node.item.object.change_fichier_init(nomFichier,text)
            commentaire = "Fichier modifie  : " + self.node.item.get_nom()
@@ -121,7 +122,7 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
        """
          Methode pour convertir le fichier file dans le format courant
        """
-       format=self.editor.format_fichier
+       format=self.editor.format
        text=None
        if convert.plugins.has_key(format):
           # Le convertisseur existe on l'utilise
@@ -136,9 +137,10 @@ class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
 
 
   def BChangeFilePressed(self):
-      userDir=os.path.expanduser("~/Eficas_install/")
+      userDir=self.node.appliEficas.CONFIGURATION.savedir
       fn = QFileDialog.getOpenFileName(self.node.appliEficas,
                 self.node.appliEficas.trUtf8('Fichier Include'),
+                userDir,
                 self.node.appliEficas.trUtf8('All Files (*);;''JDC Files (*.comm);;'))
 
       if fn.isNull():
index e307158bff3403263d10f67324e1ae926d070ab6..d5542a1ac3c3a2a7ebc4bb1e65dc0af7491c5668 100644 (file)
@@ -149,13 +149,13 @@ class Options(desOptions):
        if res == 1 : return 
 
        appli=self.configuration.appli
-       rep_ini=self.configuration.rep_ini
+       repIni=self.configuration.REPINI
        fic_ini_util=self.configuration.fic_ini_utilisateur
        old_fic_ini_util=fic_ini_util+"_old"
        commande="mv "+fic_ini_util+" "+old_fic_ini_util
        os.system(commande)
-       from Editeur import configuration
-       configNew=configuration.CONFIG(appli,rep_ini)
+       import configuration
+       configNew=configuration.CONFIG(appli,repIni)
        self.configuration=configNew
        appli.CONFIGURATION=configNew
        self.configuration.save_params()
index a77f9439e3cf83afb775bf1227ca70633869765b..ccc25e7a99af02cde82905812a46918940223b51 100644 (file)
@@ -22,7 +22,6 @@
 import string,types,os,re
 
 # Modules Eficas
-import prefs 
 
 from PyQt4 import *
 from PyQt4.QtGui import *
index 48942483a891c8dc7750c962c4521ebe46190f04..3af461a812c6ffe4dad0b4f7ed1caef8e0cc26a8 100644 (file)
 # Modules Python
 import string,types,os
 
-# Modules Eficas
-import prefs 
-
 from PyQt4 import *
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
+
+# Modules Eficas
 from monPlusieursIntoPanel import MonPlusieursIntoPanel
 from monPlusieursIntoPanel import DPlusInto
 from qtCommun              import QTPanel
 from politiquesValidation  import PolitiquePlusieurs
-# Import des panels
 
 class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
   """
index 4a67d9473f7168707b05d527286c93ac693ebda6..6dd3588a1c9fb02189c57a6586a2ba09e0375e45 100644 (file)
@@ -156,10 +156,10 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
           self.editor.affiche_infos("Valeurs Ajoutées")
 
   def BImportPressed(self):
-        init=QString( self.editor.CONFIGURATION.rep_user)
+        init=QString( self.editor.CONFIGURATION.savedir)
         fn = QFileDialog.getOpenFileName(self.node.appliEficas, 
                                          self.node.appliEficas.trUtf8('Fichier de données'), 
-                                         QString(),
+                                         init,
                                          self.trUtf8('All Files (*)',))
         if fn == None : return
         if fn == "" : return
index 5b9fa79ba70405bc0895cc8a1abadd9b36da7baa..2e542999d00efdf3ba246af4301f4896bd98a642 100644 (file)
@@ -107,8 +107,6 @@ class MonRacinePanel(DRac,QTPanelTBW2):
       name=str(self.LBNouvCommande.currentItem().text())
       if name==QString(" "): return
       if name.find("GROUPE :")==0 : return
-      print self.editor
-      print self.editor.__class__
       self.editor.init_modif()
       print self.node.__class__
       new_node = self.node.append_child(name,'first')
index 24792e45ccc6ed9aa412b34c9b93b4a91922cb32..b53c79cbbd77aea36beba4d9c1a1e76466be7339 100644 (file)
@@ -80,7 +80,8 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur):
   def detruitBouton(self):
         mc = self.node.item.get_definition()
         type = mc.type[0]
-        if not('grma' in repr(type)) or not(self.editor.salome) :
+        #if not('grma' in repr(type)) or not(self.editor.salome) :
+        if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
            self.BSalome.close()
            self.BView2D.close()
 
@@ -111,12 +112,18 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur):
 
   def BOk2Pressed(self):
         SaisieValeur.BOk2Pressed(self)
+        if self.node.item.parent.nom == "FICXML" : 
+               self.node.item.parent.change_fichier="1"
+                self.node.item.parent.build_include(None,"")
 
   def BSupPressed(self):
         QTPanel.BSupPressed(self)
 
   def LEValeurPressed(self):
         SaisieValeur.LEValeurPressed(self)
+        if self.node.item.parent.nom == "FICXML" : 
+               self.node.item.parent.change_fichier="1"
+                self.node.item.parent.build_include(None,"")
 
   def BParametresPressed(self):
         QTPanel.BParametresPressed(self)
index c968b0f719cde86d9307213cf11fa10cff18b08f..8c5e45dc2ee3763f0638abe6910ab42e43587451 100644 (file)
@@ -22,8 +22,6 @@
 import string,types,os
 
 # Modules Eficas
-import prefs 
-
 from PyQt4 import *
 from PyQt4.QtGui import *
 
diff --git a/InterfaceQT4/prefsQT.py b/InterfaceQT4/prefsQT.py
deleted file mode 100644 (file)
index ef1aa89..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# ======================================================================
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-
-lang='fr'
-
index 5a9ed1671ac7c893c0c4df9f6b92789ddb2bacef..ad7b6df291a3609034afcf3f1497b331a5d03f66 100644 (file)
@@ -25,7 +25,6 @@ import traceback
 from PyQt4 import *
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
-import prefsQT
 
 # Import des panels
 
@@ -281,6 +280,7 @@ class ViewText(Ui_dView,QDialog):
     """
     def __init__(self,parent):
         QDialog.__init__(self,parent)
+        self.parent=parent
         self.setupUi(self)
 
         self.resize( QSize(600,507).expandedTo(self.minimumSizeHint()) )
@@ -292,25 +292,10 @@ class ViewText(Ui_dView,QDialog):
         
     def saveFile(self):
         #recuperation du nom du fichier
+        userDir=os.path.expanduser("~/.Eficas_install/")
         fn = QFileDialog.getSaveFileName(None,
                 self.trUtf8("Save File"),
-                self.trUtf8("/tmp"))
-        #if not fn.isNull():                
-        #   print "hhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkk"
-        #   if QFileInfo(fn).exists():
-        #      abort = QMessageBox.warning(self,
-        #                self.trUtf8("Save File"),
-        #                self.trUtf8("The file <b>%1</b> already exists.")
-        #                    .arg(fn),
-        #                self.trUtf8("&Overwrite"),
-        #                self.trUtf8("&Abort"))
-        #      if abort:
-        #         return
-        #   fn = unicode(QDir.convertSeparators(fn))                
-        #else:
-        #   return
-
-        #ecriture du fichier
+                self.trUtf8(userDir))
         if fn.isNull() : return
         try:
            f = open(fn, 'wb')
index 5f633e6e2971b9281e1daac349b76f78d7039fe0..54921093cc1261e2608a467f276d39f97b9fc1fc 100644 (file)
@@ -1,11 +1,6 @@
 # -*- coding: iso-8859-1 -*-
 
 import os, sys
-REPINI=os.path.dirname(os.path.abspath(__file__))
-INSTALLDIR=os.path.join(REPINI,'..')
-sys.path.append(INSTALLDIR)
-sys.path.append(INSTALLDIR+"/UiQT4")
-sys.path.append(INSTALLDIR+"/InterfaceQT4")
 
 from PyQt4.QtGui  import *
 from PyQt4.QtCore import *
@@ -13,9 +8,9 @@ from PyQt4.QtAssistant import *
 from myMain import Ui_Eficas
 from viewManager import MyTabview
 
-from Editeur import configuration
 from Editeur import session
 
+dirCode={"ASTER":"Aster","OPENTURNS_WRAPPER":"Openturns_Wrapper"}
 
 
 class Appli(Ui_Eficas,QMainWindow):    
@@ -29,11 +24,18 @@ class Appli(Ui_Eficas,QMainWindow):
         self.ihm="QT"
         self.code=code
         self.salome=salome
+        self.format_fichier="python"   #par defaut
        self.top = self #(pour CONFIGURATION)
 
-        self.initPrefs()
+        import prefs
+        self.REPINI=prefs.REPINI
+        import configuration
         self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
         self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
+        if hasattr(prefs,'encoding'):
+           import sys
+           reload(sys)
+           sys.setdefaultencoding(prefs.encoding)
 
         QMainWindow.__init__(self)
         Ui_Eficas.__init__(self)
@@ -44,19 +46,17 @@ class Appli(Ui_Eficas,QMainWindow):
 
 
         #self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
-        
         #if self.salome :
         #   from Editeur import session
         #   self.ouvreFichiers()
-        from Editeur import session
-        self.ouvreFichiers()
 
+        self.recent =  QStringList()
         self.ficPatrons={}
         self.initPatrons()
-
-        self.recent =  QStringList()
         self.ficRecents={}
         self.initRecents()
+
+        self.ouvreFichiers()
         
     def OPENTURNS(self) :
         self.MenuBar.removeItem(5)
@@ -130,8 +130,7 @@ class Appli(Ui_Eficas,QMainWindow):
                idx=idx+1
 
     def initRecents(self):
-       #try :
-       if 1 :
+       try :
            rep=self.CONFIGURATION.rep_user
            monFichier=rep+"/listefichiers_"+self.code
            index=0
@@ -142,8 +141,7 @@ class Appli(Ui_Eficas,QMainWindow):
                  l=(ligne.split("\n"))[0]
                  self.recent.append(l)
               index=index+1
-       #except : pass
-       else :
+       except :
            pass
 
        try    : f.close()
@@ -227,7 +225,7 @@ class Appli(Ui_Eficas,QMainWindow):
         
     def handleOpenPatrons(self):
         idx=self.sender()
-        fichier=REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
+        fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
         self.viewmanager.handleOpen(fichier=fichier, patron = 1)
 
     def handleOpenRecent(self):
@@ -289,23 +287,6 @@ class Appli(Ui_Eficas,QMainWindow):
     def NewInclude(self):
         self.viewmanager.newIncludeEditor()
 
-    def initPrefs(self):
-        if code == "ASTER" : 
-           from Aster import prefs
-           import sys
-           sys.path.append(INSTALLDIR+"/Aster")
-       else :
-          import prefs 
-           #try :
-           if 1 :
-             apply(Appli.__dict__[code],(self,))
-           #except :
-           else:
-             pass
-        if hasattr(prefs,'encoding'):
-           import sys
-           reload(sys)
-           sys.setdefaultencoding(prefs.encoding)
 
 if __name__=='__main__':
 
index 531447212262896aebfe004acbb5d4884b976695..c0fd8a43694696918f85a5c24929fc471c705db7 100644 (file)
@@ -44,7 +44,7 @@ class SaisieValeur:
        
        if (min == 1 and min == max and len(listeNomsSD)==1 and (l==[] or l==None)):
             if ('R' not in self.node.item.get_type()) :
-               self.listBoxASSD.setCurrentItem(0)
+               self.listBoxASSD.setCurrentRow(0)
 
 
   def BuildLBValeurs(self):
index 052d2f1d26d135918e93a15256630393e42b7813..8a2f645ca2bed6dd89fe1285f8b036dfb6647c57 100644 (file)
@@ -31,20 +31,19 @@ import cPickle
 import re
 
 # Modules Eficas
-import prefs
 from Noyau.N_CR import CR
 from Editeur.utils  import init_rep_cata_dev
 
-from Editeur    import analyse_catalogue
-from Editeur    import autre_analyse_cata
-from Editeur    import uiinfo
+import analyse_catalogue
+import autre_analyse_cata
+import uiinfo
 from monChoixCata import MonChoixCata
 
 from PyQt4 import *
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 
-version="14"
+VERSION_EFICAS="Eficas V1.15"
 
 class READERCATA:
 
@@ -52,7 +51,7 @@ class READERCATA:
       self.QWParent=QWParent
       self.appliEficas=self.QWParent.appliEficas
       self.code=self.QWParent.code
-      self.QWParent.format_fichier='python'
+      self.appliEficas.format_fichier='python'
       self.version_code=self.QWParent.version_code
       self.version_cata=None
       self.fic_cata=None
@@ -85,9 +84,9 @@ class READERCATA:
       elif len(liste_cata_possibles)==1:
           self.fic_cata = liste_cata_possibles[0][2]
           self.version_code = liste_cata_possibles[0][1]
-          self.QWParent.format_fichier=liste_cata_possibles[0][3] 
+          self.appliEficas.format_fichier=liste_cata_possibles[0][3] 
           lab=QString("Eficas V1.") 
-          lab+=QString(version
+          lab+=QString(VERSION_EFICAS
           lab+=QString(" pour ")
           lab+=QString(self.code) 
           lab+=QString(" avec le catalogue ")
@@ -136,29 +135,8 @@ class READERCATA:
       # traitement des clefs documentaires
       #
       self.traite_clefs_documentaires()
-
-      # chargement et analyse des catalogues développeur (le cas échéant)
-      #
-      if self.appliEficas.CONFIGURATION.isdeveloppeur == 'OUI' :
-          init_rep_cata_dev(self.fic_cata,self.appliEficas.CONFIGURATION.path_cata_dev)
-          fic_cata_dev = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
-          if os.path.isfile(fic_cata_dev):
-              # il y a bien un catalogue développeur : il faut récupérer le module_object associé ...
-              test = self.compile_cata(fic_cata_dev,fic_cata_dev+'c')
-              if not test :
-                  showinfo("Compilation catalogue développeur",
-                           "Erreur dans la compilation du catalogue développeur")
-                  self.cata = (self.cata,)
-              else:
-                  self.cata_dev =self.import_cata(fic_cata_dev)
-                  #self.Retrouve_Ordre_Cata_Developpeur()
-                  self.Retrouve_Ordre_Cata_Developpeur_autre()
-                  self.cata = (self.cata,self.cata_dev)
-          else:
-              self.cata = (self.cata,)
-      else:
-          self.cata = (self.cata,)
-      titre="Eficas V1.14 avec le catalogue " + os.path.basename(self.fic_cata)
+      self.cata=(self.cata,)
+      titre=VERSION_EFICAS + " avec le catalogue " + os.path.basename(self.fic_cata)
       if self.appliEficas.top:
         self.appliEficas.setWindowTitle(titre)
       self.appliEficas.titre=titre
@@ -181,7 +159,7 @@ class READERCATA:
 
    def import_cata(self,cata):
       """ 
-          Réalise l'import du catalogue dont le chemin d'accs est donné par cata
+          Réalise l'import du catalogue dont le chemin d'acces est donné par cata
       """
       nom_cata = os.path.splitext(os.path.basename(cata))[0]
       rep_cata = os.path.dirname(cata)
@@ -223,34 +201,6 @@ class READERCATA:
           self.Get_Ordre_Cata(mode='cata')
       self.appliEficas.affiche_infos("Catalogue standard chargé")
 
-   def Retrouve_Ordre_Cata_Developpeur(self):
-      """ 
-          Retrouve l'ordre des mots-clés dans le catalogue, cad :
-          - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
-            l'ordre des mots-clés dans le catalogue
-          - s'il n'a pas été modifié, relie le fichier pickle 
-      """
-      if self.code != 'ASTER' : return
-      fic_cata = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
-      message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev
-      cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata)
-      self.cata_dev_ordonne_cr = cata_dev_ordonne.cr
-      cata_dev_ordonne_dico = cata_dev_ordonne.entites
-      self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
-      self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
-
-   def Retrouve_Ordre_Cata_Developpeur_autre(self):
-      """
-          Retrouve l'ordre des mots-clés dans le catalogue, cad :
-          - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
-            l'ordre des mots-clés dans le catalogue
-          - s'il n'a pas été modifié, relie le fichier pickle
-      """
-      if self.code != 'ASTER' : return
-      message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev
-      cata_dev_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata)
-      self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
-      self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
 
    def Get_Ordre_Cata(self,mode='pickle'):
       """ 
index 52650ead67fdf481aed2c014ad19243e10ac5ca6..12a9f825f1d77d3079025bc396d42c24f2106b3c 100644 (file)
@@ -44,16 +44,16 @@ class MyTabview:
        if fichier is None:
             fichier = QFileDialog.getOpenFileName(self.appliEficas,
                         self.appliEficas.trUtf8('Ouvrir Fichier'),
-                        self.getOpenStartDir(),
+                        self.appliEficas.CONFIGURATION.savedir,
                         self.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)'))
             if fichier.isNull(): return
-       from utilitaires import normabspath
-       fichier = normabspath(unicode(fichier))
+       fichier = os.path.abspath(unicode(fichier))
+       self.appliEficas.addToRecentList(fichier)
        maPage=self.getEditor( fichier,units=units)
 
    def handleClose(self,doitSauverRecent = 1):
-       print "passage dans handleClose"
-       print self.dict_editors
+       #print "passage dans handleClose"
+       #print self.dict_editors
        if doitSauverRecent : self.appliEficas.sauveRecents()
        index=self.myQtab.currentIndex()
        if index < 0 : return
@@ -165,8 +165,7 @@ class MyTabview:
        indexEditor=0
        for indexEditor in self.dict_editors.keys():
            editor=self.dict_editors[indexEditor]
-           from utilitaires import samepath
-           if samepath(fichier, editor.getFileName()):
+           if self.samepath(fichier, editor.getFileName()):
               abort = QMessageBox.warning(self.appliEficas,
                         self.appliEficas.trUtf8("Fichier"),
                         self.appliEficas.trUtf8("Le fichier <b>%1</b> est deja ouvert.").arg(fichier),
@@ -176,8 +175,8 @@ class MyTabview:
               double=editor
        else :
             from editor import JDCEditor
-            editor = JDCEditor(fichier, jdc, self.myQtab,units=units,appli=self.appliEficas,vm = self,include=include)
-            if double != None :
+            editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,vm = self,include=include)
+            if double != None : 
                self.doubles[editor]=double
             if editor.jdc: # le fichier est bien un jdc
                 self.editors.append(editor)
@@ -217,6 +216,14 @@ class MyTabview:
         except :
             return ""
 
+   def samepath(self,f1, f2):
+    """
+    compare two paths.
+    """
+    if f1 is None or f2 is None: return 0
+    if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
+    return 0
+
 
    def checkDirty(self, editor):
         """
index 147a560f2ef77815c98e90f55997e8e0b51da3d1..f08b160d8fa2ddaab47b3c9c4bc7a1f5ef52c398 100644 (file)
@@ -55,7 +55,7 @@ import listePatronsTK
 REPTK=os.path.dirname(os.path.abspath(__file__))
 sys.path[:0]=[REPTK]
 
-VERSION="EFICAS v1.14"
+VERSION="EFICAS v1.15"
 
 class APPLI: 
   def __init__ (self,master,code=prefs.code,fichier=None,test=0,ihm="TK",salome=0) :
@@ -137,7 +137,7 @@ class APPLI:
       """
       if (self.test == 0):
          splash._splash.configure(text = "Chargement des paramètres utilisateur")
-      from Editeur import configuration
+      import configuration
       self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
       self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
 
index 5921a2d5d32d5aa672f28be0527878b8405755fe..59b0ab86fe2df7f475163d0a0a6c38478058738b 100644 (file)
@@ -42,6 +42,7 @@ from fenetre_mc_inconnus import fenetre_mc_inconnus
 from Ihm import CONNECTOR
 try :
    from Traducteur import traduitV7V8 
+   from Traducteur import traduitV8V9 
 except :
    pass
 
@@ -122,7 +123,7 @@ class BUREAU:
       self.charger_composants()
       self.cree_cataitem()
       self.text_reel=""
-      self.initialdir = self.appli.CONFIGURATION.initialdir
+      self.savedir = self.appli.CONFIGURATION.savedir
 
    def charger_composants(self):
       comploader.charger_composants()
@@ -225,7 +226,7 @@ class BUREAU:
       if enregistre != "non" :
          self.JDCDisplay_courant.fichier=self.fileName
       else :
-         self.initialdir = self.appli.CONFIGURATION.rep_user
+         self.savedir = self.appli.CONFIGURATION.rep_user
       self.nb.selectpage(label_onglet)
       self.nb.setnaturalsize()
       self.nb.bind_all("<Key-Next>",lambda e,s=self:s.selectArbreDown())
@@ -340,19 +341,19 @@ class BUREAU:
           filetypes = ( ("format "+self.appli.format_fichier.get(), ".com*"),("Tous",'*'))
       else:
           filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
-      if not hasattr(self,'initialdir'):
-         self.initialdir = self.appli.CONFIGURATION.initialdir
+      if not hasattr(self,'savedir'):
+         self.savedir = self.appli.CONFIGURATION.savedir
 
       if not file :
           file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
                                  defaultextension=".comm",
                                  filetypes = filetypes,
-                                 initialdir = self.initialdir)
+                                 initialdir = self.savedir)
       if file :
           self.fileName = file
           e=extension_fichier(file)
           self.JDCName=stripPath(file)
-          self.initialdir = os.path.dirname(os.path.abspath(file))
+          self.savedir = os.path.dirname(os.path.abspath(file))
       else :
           return
 
@@ -380,7 +381,7 @@ class BUREAU:
       # On se met dans le repertoire ou se trouve le fichier de commandes
       # pour trouver les eventuels fichiers include ou autres
       # localises a cote du fichier de commandes
-      os.chdir(self.initialdir)
+      os.chdir(self.savedir)
       CONTEXT.unset_current_step()
       J=self.cata[0].JdC(procedure=text,appli=self.appli,
                          cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
@@ -504,7 +505,7 @@ class BUREAU:
          from panelsSalome import SALOME_UNIQUE_BASE_Panel
          if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
             print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????'
-            self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
+            self.appli.creeConfigTxt( self.appli.CONFIGURATION.savedir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
 
          #3)creation/mise a jours d'un maillage dans Salome
         if self.code == 'ASTER':
@@ -523,9 +524,7 @@ class BUREAU:
       sauvegarde = asksaveasfilename(title=titre,
                                      defaultextension=defext,
                                      filetypes = filtyp,
-                                     initialdir = self.initialdir)
-                            #initialdir = self.appli.CONFIGURATION.initialdir)
-                            #initialdir = self.appli.CONFIGURATION.rep_user)
+                                     initialdir = self.savedir)
       if sauvegarde :
           if not save_in_file(sauvegarde,self.jdc_fini,None) :
               showinfo("Erreur","Probleme a la sauvegarde du fichier "+`sauvegarde`)
@@ -781,21 +780,29 @@ class BUREAU:
    def update_jdc_courant(self):
       self.JDCDisplay_courant.update()
 
-   def TraduitFichier(self,event=None):
-      directory = self.appli.CONFIGURATION.rep_user
+   def TraduitFichier7(self,event=None):
+       self.TraduitFichier(7)
+
+   def TraduitFichier8(self,event=None):
+       self.TraduitFichier(8)
+
+   def TraduitFichier(self,version):
       FichieraTraduire = askopenfilename(title="Nom du  Fichier a Traduire",
                                  defaultextension=".comm",
-                                 initialdir = directory 
+                                 initialdir = self.savedir 
                                  )
       if (FichieraTraduire == "" or FichieraTraduire == () ) : return
       i=FichieraTraduire.rfind(".")
       Feuille=FichieraTraduire[0:i]
       FichierTraduit=Feuille+"v8.comm"
-      log=self.initialdir+"/convert.log"
+      log=self.savedir+"/convert.log"
       os.system("rm -rf "+log)
       os.system("rm -rf "+FichierTraduit)
       Pmw.showbusycursor()
-      traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log)
+      if version == 7 :
+         traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log)
+      else :
+         traduitV8V9.traduc(FichieraTraduire,FichierTraduit,log)
       Pmw.hidebusycursor()
       Entete="Fichier Traduit : "+FichierTraduit +"\n\n"
       titre = "conversion de "+ FichieraTraduire
index 7ce303edbdb38867a2a22d1ee028f032af40eefb..cfa2d9c69abbf06404fb55fd02cbdffc9efdcad2 100644 (file)
@@ -36,8 +36,8 @@ from Accas import OPER,PROC,MACRO,FORM
 from Accas import FACT,BLOC,SIMP
 
 #
-__version__="$Name: V1_14 $"
-__Id__="$Id: catabrowser.py,v 1.1.4.3.4.1 2008-10-10 13:46:35 pnoyret Exp $"
+__version__="$Name:  $"
+__Id__="$Id: catabrowser.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $"
 #
 class Tableau:
   incr = 10
index e7e4499e7c41fb751d4916e623fc021c4018e42a..31d15b0351a0c98eef9c2e8ba2bcd7a83e7634c6 100644 (file)
@@ -39,8 +39,8 @@ from Accas import ASSD,GEOM
 import definition_cata
 
 #
-__version__="$Name: V1_14 $"
-__Id__="$Id: cataediteur.py,v 1.1.4.3.4.1 2008-10-10 13:47:11 pnoyret Exp $"
+__version__="$Name:  $"
+__Id__="$Id: cataediteur.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $"
 #
 
 Fonte_Niveau = fontes.canvas_gras_italique
index 5fb532264a2d30543f960375da09837370057542..ab125f95ae855d6ba782ec8929209a9dfe072f75 100755 (executable)
@@ -46,7 +46,7 @@ class DUP :
 
        self.top=None
        self.test=2
-       from Editeur import configuration
+       import configuration
        self.CONFIGURATION=configuration.make_config(self,prefs.REPINI)
 
        self.load_readercata()
@@ -69,7 +69,7 @@ class DUP :
           self.fichier = fichier
           e=extension_fichier(fichier)
           self.JDCName=stripPath(fichier)
-          self.initialdir = os.path.dirname(os.path.abspath(fichier))
+          self.savedir = os.path.dirname(os.path.abspath(fichier))
       else :
           return
 
@@ -88,7 +88,7 @@ class DUP :
       # On se met dans le repertoire ou se trouve le fichier de commandes
       # pour trouver les eventuels fichiers include ou autres
       # localises a cote du fichier de commandes
-      os.chdir(self.initialdir)
+      os.chdir(self.savedir)
       CONTEXT.unset_current_step()
       J=self.cata[0].JdC(procedure=text,appli=self,
                          cata=self.cata,cata_ord_dico=self.readercata.cata_ordonne_dico,
index e8f050536c3ce60449453d6bf6ca445c09cbab8a..61ab20c91cc39d65bfab4003a87326c29144dc34 100644 (file)
@@ -36,8 +36,8 @@ from widgets import Fenetre,FenetreYesNo
 from widgets import showinfo,showerror
 
 #
-__version__="$Name: V1_14 $"
-__Id__="$Id: compomacro.py,v 1.1.4.4.4.1 2008-10-10 13:47:11 pnoyret Exp $"
+__version__="$Name:  $"
+__Id__="$Id: compomacro.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $"
 #
 
 class MACROPanel(panels.OngletPanel):
index 474b643ecaa6ffc2b8b80a6def0225ce5023d2fe..1ed92b6efdccca849f9cca4cb0830175803d4d26 100644 (file)
@@ -30,8 +30,8 @@ from Editeur import Objecttreeitem
 import panels
 
 #
-__version__="$Name: V1_14 $"
-__Id__="$Id: componuplet.py,v 1.1.4.2.4.1 2008-10-10 13:47:11 pnoyret Exp $"
+__version__="$Name:  $"
+__Id__="$Id: componuplet.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $"
 #
 
 myrepr = Repr()
index 9768ada62aff709f7a459c18d6cae2b8fd5d16de..55dd6ceab7bd1ef4b773cecc26ba1443dff62ecb 100644 (file)
@@ -27,8 +27,8 @@ import images
 from Ihm import CONNECTOR
 
 #
-__version__="$Name: V1_14 $"
-__Id__="$Id: treewidget.py,v 1.1.4.4.4.1 2008-10-10 13:47:11 pnoyret Exp $"
+__version__="$Name:  $"
+__Id__="$Id: treewidget.py,v 1.2.4.1 2008-11-13 10:35:11 cchris Exp $"
 #
 
 Fonte_Standard = fontes.standard
index c0dda7772edb85742ebb267bf2b688bca92d65a8..e978db2a67c92d8e8d20bdaba09440afa18d9e9e 100644 (file)
@@ -146,7 +146,7 @@ class Fenetre :
         à l'utilisateur """
         file = asksaveasfilename(parent=self.fenetre,defaultextension = '.comm',
                                #initialdir = self.appli.CONFIGURATION.rep_user,
-                               initialdir = self.appli.CONFIGURATION.initialdir,
+                               initialdir = self.appli.CONFIGURATION.savedir,
                                title="Sauvegarde du "+self.titre)
         if file :
             if not save_in_file(file,self.texte,None) :
index 2f42ae93066f15d50551d8198f1a75c790c67e98..5a4093f7102030f6ac7ddefed96081060acce4f5 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF N_MCSIMP Noyau  DATE 30/11/2007   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_MCSIMP Noyau  DATE 13/10/2008   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -88,7 +88,13 @@ class MCSIMP(N_OBJECT.OBJECT):
           Cette valeur est utilisée lors de la création d'un contexte 
           d'évaluation d'expressions à l'aide d'un interpréteur Python
       """
-      return self.valeur
+      v = self.valeur
+      # Singleton : on retourne l'element
+      # Permet aussi d'ignorer l'erreur : concept=COMMANDE(),
+      # ou 'concept' est un tuple de longueur 1 a cause de la virgule.
+      if type(v) in (list, tuple) and len(v) == 1:
+         v = v[0]
+      return v
 
    def get_val(self):
       """
index 0f1912467250483ff0252ee044a8db02883e15ec..9f7799faf65d2870960bebfdd71e21434ef50578 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF ascheckers Noyau  DATE 28/11/2007   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF ascheckers Noyau  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -44,13 +44,16 @@ class CheckLog(object):
     à la celle de la dernière vérification.
     Si on incrémentait "marq" à chaque étape, on revérifie à chaque fois.
     """
+
     def __init__(self):
         self.msg       = []
         self.names     = {}
+        self.cksums    = {}
         self.optional  = False
         self._marq     = 1
         self._lastmarq = self._marq
         self._debug    = False
+        self._profond  = False # True pour forcer des vérifications plus profondes
 
     def log(self, level, obj, msg ):
         if obj :
@@ -68,6 +71,29 @@ class CheckLog(object):
         key = obj.nomj()
         self.names[key] = self._marq
 
+    def checkSumOJB(self, obj, sd, maj='non'):
+        # vérifie que le checksum de obj n'a pas changé
+        # sd : concept qui contient obj
+        # maj='maj', l'opérateur a le droit de modifier ojb
+        if obj.exists :
+            import md5
+            m=md5.new()
+            m.update(str(obj.get()))
+            cksum=m.digest()
+            nom=obj.nomj()
+            if not self.cksums.has_key(nom) :
+                self.cksums[nom]=cksum
+            else :
+                if self.cksums[nom] != cksum :
+                    self.cksums[nom] = cksum
+                    #if maj.strip()=='maj' and nom[0:8].strip()==sd.nomj.nomj[0:8].strip() :
+                    # Remarque : ne pas tester 'maj' premet de résoudre (un peu) le problème
+                    #            posé par la commande DETRUIRE
+                    if nom[0:8].strip()==sd.nomj.nomj[0:8].strip() :
+                        pass
+                    else :
+                        self.err(obj,'Le checksum a changé')
+
     def visitAsBase(self, obj):
         key = (obj.nomj(), obj.__class__.__name__)
         self.names[key] = self._marq
index adc4b85ea8de928d87237aa07b263ed5a5f3af20..8d2820cae69767f64ab18e9e9d218da2df49c16f 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF asojb Noyau  DATE 07/04/2008   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF asojb Noyau  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -75,10 +75,10 @@ class AsBase(Type):
                     try :
                         v( checker )
                     except :
-                        UTMESS("E", 'SDVERI_45')  # AJACOT NON
-                        print 40*'-'
-                        traceback.print_exc(file=sys.stdout)
-                        print self
+                        mess=60*'-'+'\n'
+                        mess=mess+'Erreur SDVERI_45 (Attention : vérification incomplète)'+'\n'
+                        mess=mess.join(traceback.format_tb(sys.exc_traceback))
+                        checker.err(self,mess)
 
         checker.optional = optional
         return checker
index bec8321984b6ee21d48f36041d06c6eff3ae595f..7ce9db7da4b14ad04c342b64c21d1d94d6be75bc 100644 (file)
@@ -32,6 +32,7 @@ def set_current_step(step):
    global _root
    if _root : raise "Impossible d'affecter _root. Il devrait valoir None"
    _root=step
+   #print "dans set_current_step", step
 
 def get_current_step():
    """
diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V1.py b/Openturns_Study/OpenTURNS_Cata_Study_V1.py
new file mode 100644 (file)
index 0000000..2ce3bf4
--- /dev/null
@@ -0,0 +1,1436 @@
+# -*- coding: utf-8 -*-
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+class loi ( ASSD ) : pass
+class variable ( ASSD ) : pass
+
+
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'OPENTURNS_STUDY',
+                 execmodul = None,
+                 regles = ( AU_MOINS_UN ( 'CRITERIA' ), ),
+                 ) # Fin JDC_CATA
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+
+
+
+
+
+#================================
+# 1. Definition des LOIS
+#================================
+
+# Nota : les variables de type OPER doivent etre en majuscules !
+# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type)
+DISTRIBUTION = OPER ( nom = "DISTRIBUTION",
+                      sd_prod = loi,
+                      op = 68,
+                      fr = "Definitions des lois marginales utilisees par les variables d'entree", 
+                      
+                      
+#====
+# Type de distribution
+#====
+
+  Kind = SIMP ( statut = "o", typ = "TXM",
+                into = ( "Beta",
+                         "Exponential",
+                         "Gamma",
+                         "Geometric",
+                         "Gumbel",
+                         "Histogram",
+                         "Logistic",
+                         "LogNormal",
+                         "MultiNomial",
+                         "Normal",
+                         "TruncatedNormal",
+                         "Poisson",
+                         "Student",
+                         "Triangular",
+                         "Uniform",
+                         "UserDefined",
+                         "Weibull",
+                         ),
+                fr = "Choix du type de la loi marginale",
+                ang = "1D marginal distribution",
+                ),
+
+#====
+# Definition des parametres selon le type de la loi
+#====
+
+  BETA = BLOC ( condition = " Kind in ( 'Beta', ) ",
+
+                  Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "RT", "MuSigma" ),
+                                       defaut = "RT",
+                                       fr = "Parametrage de la loi beta",
+                                       ang = "Beta distribution parameter set",
+                                       ),
+
+                  RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ",
+
+                                      R = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre R de la loi",
+                                                 ang = "R parameter",
+                                                 ),
+
+                                      # T > R
+                                      T = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre T de la loi | T > R",
+                                                 ang = "T parameter | T > R",
+                                                 ),
+
+                                      ), # Fin BLOC RT_Parameters
+
+
+                  MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                      Mu = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  fr = "Parametre Mu de la loi",
+                                                  ang = "Mu parameter",
+                                                  ),
+
+                                      Sigma = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     val_min = 0.,
+                                                     fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                     ang = "Sigma parameter | Sigma > 0",
+                                                     ),
+
+                                      ), # Fin BLOC MuSigma_Parameters
+
+
+                  A = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre A de la loi",
+                             ang = "A parameter",
+                             ),
+
+                  # B > A
+                  B = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre B de la loi | B > A",
+                             ang = "B parameter | B > A",
+                             ),
+
+  ), # Fin BLOC BETA
+
+
+
+  EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ",
+
+                         Lambda = SIMP ( statut = "o",
+                                         typ = "R",
+                                         max = 1,
+                                         val_min = 0.,
+                                         fr = "Parametre Lambda | Lambda > 0",
+                                         ang = "Lambda parameter | Lambda > 0",
+                                         ),
+
+                         Gamma = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Parametre Gamma",
+                                        ang = "Gamma parameter",
+                                        ),
+
+  ), # Fin BLOC EXPONENTIAL
+
+
+
+  GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ",
+
+                   Settings = SIMP ( statut = "o",
+                                        typ = "TXM",
+                                        max = 1,
+                                        into = ( "KLambda", "MuSigma" ),
+                                        defaut = "KLambda",
+                                        fr = "Parametrage de la loi gamma",
+                                        ang = "Gamma distribution parameter set",
+                                        ),
+
+                   KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ",
+
+                                       K = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  val_min = 0.,
+                                                  fr = "Parametre K de la loi | K > 0",
+                                                  ang = "K parameter | K > 0",
+                                                  ),
+
+                                       Lambda = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Lambda de la loi | Lambda > 0",
+                                                       ang = "Lambda parameter | Lambda > 0",
+                                                       ),
+
+                                       ), # Fin BLOC KLambda_Parameters
+
+
+                   MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                       Mu = SIMP ( statut = "o",
+                                                   typ = "R",
+                                                   max = 1,
+                                                   defaut = 0.0,
+                                                   fr = "Parametre Mu de la loi",
+                                                   ang = "Mu parameter",
+                                                   ),
+
+                                       Sigma = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 1.0,
+                                                      val_min = 0.,
+                                                      fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                      ang = "Sigma parameter | Sigma > 0",
+                                                      ),
+
+                                       ), # Fin BLOC MuSigma_Parameters
+
+                   Gamma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  fr = "Parametre Gamma",
+                                  ang = "Gamma parameter",
+                                  ),
+
+
+  ), # Fin BLOC GAMMA
+
+
+
+  GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ",
+
+                       P = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  val_max = 1.,
+                                  fr = "Parametre P | 0 < P < 1",
+                                  ang = "P parameter | 0 < P < 1",
+                                  ),
+
+  ), # Fin BLOC GEOMETRIC
+
+
+
+  GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ",
+
+                    Settings = SIMP ( statut = "o",
+                                         typ = "TXM",
+                                         max = 1,
+                                         into = ( "AlphaBeta", "MuSigma" ),
+                                         defaut = "AlphaBeta",
+                                         fr = "Parametrage de la loi gumbel",
+                                         ang = "Gumbel distribution parameter set",
+                                         ),
+
+                    AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                        Alpha = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                       ang = "Alpha parameter | Alpha > 0",
+                                                       ),
+
+                                        Beta = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      fr = "Parametre Beta de la loi",
+                                                      ang = "Beta parameter",
+                                                      ),
+
+                                        ), # Fin BLOC AlphaBeta_Parameters
+
+
+                    MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                        Mu = SIMP ( statut = "o",
+                                                    typ = "R",
+                                                    max = 1,
+                                                    fr = "Parametre Mu de la loi",
+                                                    ang = "Mu parameter",
+                                                    ),
+
+                                        Sigma = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                       ang = "Sigma parameter | Sigma > 0",
+                                                       ),
+
+                                        ), # Fin BLOC MuSigma_Parameters
+
+  ), # Fin BLOC GUMBEL
+
+
+
+  HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ",
+
+                       Sup = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la distribution",
+                                    ang = "Upper bound",
+                                    ),
+
+                       # Il faut definir une collection de couples ( x,p ) 
+                       Values = SIMP ( statut = 'o',
+                                       typ = 'R',
+                                       max = '**',
+                                       ),
+
+  ), # Fin BLOC HISTOGRAM
+
+
+
+  LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ),
+                                       defaut = "MuSigmaLog",
+                                       fr = "Parametrage de la loi lognormale",
+                                       ang = "Lognormal distribution parameter set",
+                                       ),
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 Sigma = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                                ang = "Sigma parameter | Sigma > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigma_Parameters
+
+                     MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 SigmaOverMu = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0",
+                                                                ang = "SigmaOverMu parameter | SigmaOverMu > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigmaOverMu_Parameters
+
+                     MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ",
+
+                                                    MuLog = SIMP ( statut = "o",
+                                                                   typ = "R",
+                                                                   max = 1,
+                                                                   fr = "Parametre Mu log de la loi",
+                                                                   ang = "Mu log parameter",
+                                                                   ),
+
+                                                    SigmaLog = SIMP ( statut = "o",
+                                                                      typ = "R",
+                                                                      max = 1,
+                                                                      val_min = 0.,
+                                                                      fr = "Parametre Sigma log de la loi | SigmaLog > 0",
+                                                                      ang = "Sigma log parameter | SigmaLog > 0",
+                                                                      ),
+                                            
+                                                    ), # Fin BLOC MuSigmaLog_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+   ), # Fin BLOC LOGNORMAL
+
+
+
+   LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ",
+
+                       Alpha = SIMP ( statut = "o",
+                                      typ = "R",
+                                      max = 1,
+                                      fr = "Parametre Alpha de la loi",
+                                      ang = "Alpha parameter",
+                                      ),
+
+                       Beta = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Beta de la loi | Beta > = 0",
+                                     ang = "Beta parameter | Beta > = 0",
+                                     ),
+
+   ), # Fin BLOC LOGISTIC
+
+
+
+   MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ",
+                         
+                         N = SIMP ( statut = "o",
+                                    typ = "I",
+                                    max = 1,
+                                    fr = "Dimension de la loi",
+                                    ang = "Distribution dimension",
+                                    ),
+
+                         # Il faut un vecteur P de taille N
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC MULTINOMIAL
+
+
+
+   NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ",
+
+                    Mu = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Parametre Mu de la loi",
+                                ang = "Mu parameter",
+                                ),
+
+                   Sigma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  fr = "Parametre Sigma de la loi | Sigma > 0",
+                                  ang = "Sigma parameter | Sigma > 0",
+                                  ),
+
+   ), # Fin BLOC NORMAL
+
+
+
+   POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ",
+
+                     Lambda = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Lambda de la loi | Lambda > 0",
+                                     ang = "Lambda parameter | Lambda > 0",
+                                     ),
+
+   ), # Fin BLOC POISSON
+
+
+
+   STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ",
+
+                     Mu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 fr = "Parametre Mu de la loi",
+                                 ang = "Mu parameter",
+                                 ),
+
+                     Nu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 val_min = 2.,
+                                 fr = "Parametre Nu de la loi | V > = 2",
+                                 ang = "Nu parameter | V > = 2",
+                                 ),
+
+   ), # Fin BLOC STUDENT
+
+
+
+   TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ",
+
+                         A = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne inferieure de la loi | A < = M < = B",
+                                    ang = "Lower bound | A < = M < = B",
+                                    ),
+
+                         M = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Mode de la loi | A < = M < = B",
+                                    ang = "Mode | A < = M < = B",
+                                    ),
+
+                         B = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la loi | A < = M < = B",
+                                    ang = "Upper bound | A < = M < = B",
+                                    ),
+
+   ), # Fin BLOC TRIANGULAR
+
+
+
+   TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ",
+
+                             MuN = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = 1,
+                                          fr = "Parametre Mu de la loi",
+                                          ang = "Mu parameter",
+                                          ),
+
+                             SigmaN = SIMP ( statut = "o",
+                                             typ = "R",
+                                             max = 1,
+                                             val_min = 0.,
+                                             fr = "Parametre SigmaN de la loi | SigmaN > 0",
+                                             ang = "SigmaN parameter | SigmaN> 0",
+                                             ),
+
+                             A = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne inferieure de la loi | A < = B",
+                                        ang = "Lower bound | A < = B",
+                                        ),
+
+                             B = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne superieure de la loi | A < = B",
+                                        ang = "Upper bound | A < = B",
+                                        ),
+
+   ), # Fin BLOC TRUNCATEDNORMAL
+
+
+
+   UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ",
+
+                     A = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne inferieure de la loi | A < = B",
+                                ang = "Lower bound | A < = B",
+                                ),
+
+                     B = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne superieure de la loi | A < = B",
+                                ang = "Upper bound | A < = B",
+                                ),
+
+   ), # Fin BLOC UNIFORM
+
+
+
+   USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ",
+
+                           # Il faut definir une collection de couples ( x,p ) 
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC USERDEFINED
+
+
+
+   WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                          typ = "TXM",
+                                          max = 1,
+                                          into = ( "AlphaBeta", "MuSigma" ),
+                                          defaut = "AlphaBeta",
+                                          fr = "Parametrage de la loi weibull",
+                                          ang = "Weibull distribution parameter set",
+                                          ),
+
+                     AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                         Alpha = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                        ang = "Alpha parameter | Alpha > 0",
+                                                        ),
+
+                                         Beta = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Beta de la loi | Beta > 0",
+                                                       ang = "Beta parameter | Beta > 0",
+                                                       ),
+
+                                         ), # Fin BLOC AlphaBeta_Parameters
+
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                         Mu = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     fr = "Parametre Mu de la loi",
+                                                     ang = "Mu parameter",
+                                                     ),
+
+                                         Sigma = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                        ang = "Sigma parameter | Sigma > 0",
+                                                        ),
+
+                                         ), # Fin BLOC MuSigma_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+    ), # Fin BLOC WEIBULL
+
+) # Fin OPER DISTRIBUTION
+
+
+
+
+
+
+#================================
+# 3. Definition de l'etude
+#================================
+
+# Nota : les variables de type PROC doivent etre en majuscules !
+CRITERIA = PROC ( nom = "CRITERIA",
+                  op = None,
+                  docu = "",
+                  fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.",
+                  ang = "Writes the configuration file for OPENTURNS.",
+
+
+
+  Type = SIMP ( statut = "o",
+                typ = "TXM",
+                into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ),
+                fr = "Type d'Analyse",
+                ang = "Analysis",
+                ),
+
+
+
+
+  MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Experiment Plane", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                  # UC 3.1.1
+                  ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ",
+
+                          ExperimentPlane = SIMP ( statut = "o",
+                                                   typ = "TXM",
+                                                   into = ( "Axial", "Factorial", "Composite", ),
+                                                   fr = "Methode",
+                                                   ang = "Method",
+                                                   ),
+
+                          Levels = SIMP ( statut = "o",
+                                          typ = "R",
+                                          val_min = 0.0,
+                                          max = '**',    
+                                          fr = "Nombre de niveaux dans chaque direction",
+                                          ang = "Levels in each direction",
+                                          ),
+
+                          # Scaled Vector
+                          UnitsPerDimension = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension (autant que de variables declarees)",
+                                          ang = "Units per dimension (as much as declared variables)",
+                                          ),
+
+                          # Translation Vector
+                          Center = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension",
+                                          ang = "Units per dimension",
+                                          ),
+
+                    ), # Fin BLOC ExperimentPlaneSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                    ), # Fin BLOC RandomSamplingSettings
+
+                  Result = SIMP (  statut = "o",
+                                   typ = "TXM",
+                                   into = ( "Min/Max", ),
+                                   defaut = "Min/Max",
+                                   fr = "Le minimum et le maximum",
+                                   ang = "The min and max values",
+                                   ),
+
+
+  ), # Fin BLOC MinMax
+
+
+
+
+  CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Taylor Variance Decomposition", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                              
+                  # UC 3.2.
+                  TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ",
+
+                      Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              MeanFirstOrder = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Moyenne au premier ordre",
+                                                ang = "MeanFirstOrder",
+                                                ),
+
+                              StandardDeviationFirstOrder = SIMP ( statut = "o",
+                                                                   typ = 'TXM',
+                                                                   into = ( 'yes', 'no' ),
+                                                                   defaut = 'yes',
+                                                                   max = 1,
+                                                                   fr = "Ecart-type au premier ordre",
+                                                                   ang = "StandardDeviationFirstOrder",
+                                                                   ),
+
+                              MeanSecondOrder = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Moyenne au second ordre",
+                                                       ang = "MeanSecondOrder",
+                                                       ),
+
+                              ImportanceFactor = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Facteur d'importance pour variable de sortie scalaire",
+                                                        ang = "ImportanceFactor",
+                                                        ),
+
+                             ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC ImportanceFactorSettings
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC TaylorVarianceDecompositionSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                       Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              EmpiricalMean = SIMP ( statut = "o",
+                                                     typ = 'TXM',
+                                                     into = ( 'yes', 'no' ),
+                                                     defaut = 'yes',
+                                                     max = 1,
+                                                     fr = "Moyenne empirique",
+                                                     ang = "Empirical mean",
+                                                     ),
+
+                              EmpiricalStandardDeviation = SIMP ( statut = "o",
+                                                                  typ = 'TXM',
+                                                                  into = ( 'yes', 'no' ),
+                                                                  defaut = 'yes',
+                                                                  max = 1,
+                                                                  fr = "Ecart-type empirique",
+                                                                  ang = "Empirical standard deviation",
+                                                                  ),
+
+                              EmpiricalQuantile = SIMP ( statut = "o",
+                                                         typ = 'R',
+                                                         defaut = 0.0,
+                                                         max = 1,
+                                                         val_min = 0.0,
+                                                         val_max = 1.0,
+                                                         fr = "Quantile empirique",
+                                                         ang = "Empirical quantile",
+                                                         ),
+
+                              AnalysedCorrelations = SIMP ( statut = "o",
+                                                            typ = 'TXM',
+                                                            into = ( 'yes', 'no' ),
+                                                            defaut = 'no',
+                                                            max = 1,
+                                                            fr = "Correlations analysees",
+                                                            ang = "Analysed correlations",
+                                                            ),
+
+                              KernelSmoothing = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Kernel smoothing de l'echantillon",
+                                                       ang = "Kernel smoothing of the sample",
+                                                       ),
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC RandomSamplingSettings
+
+  ), # Fin BLOC CentralUncertainty
+
+
+
+
+  ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ",
+
+         Event =  FACT ( statut = "o",
+                         min = 1,
+                         max = 1,
+
+                         Threshold = SIMP ( statut = "o",
+                                            typ = "R",
+                                            max = 1,
+                                            fr = "Le seuil de defaillance",
+                                            ang = "Failure threshold",
+                                            ),
+
+                         ComparisonOperator = SIMP ( statut = "o",
+                                                     typ = "TXM",
+                                                     max = 1,
+                                                     into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ),
+                                                     fr = "Que faut-il ne pas depasser : un maximum ou un minimum",
+                                                     ang = "What is the failure threshold : maximum or minimum",
+                                                     ),
+         ), # Fin FACT Event
+                         
+
+         Method = SIMP ( statut = "o",
+                         typ = "TXM",
+                         into = ( "Simulation", "Analytical" ),
+                         fr = "Methode",
+                         ang = "Method",
+                         ),
+
+         SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ",
+
+               Algorithm = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "MonteCarlo", "LHS", "ImportanceSampling" ),
+                                  fr = "Algorithme de simulation",
+                                  ang = "Simulation algorithm",
+                                  ),
+
+                                 
+               RandomGenerator = FACT ( statut = "o",
+                                        min = 1,
+                                        max = 1,
+
+                           SeedToBeSet = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "La racine du generateur aleatoire doit-elle etre positionnee ?",
+                                                ang = "Does the random generator seed need to be set ?",
+                                                ),
+
+                           SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ",
+
+                                                 RandomGeneratorSeed = SIMP ( statut = "o",
+                                                                              typ = "I",
+                                                                              max = 1,
+                                                                              fr = "Racine du generateur aleatoire",
+                                                                              ang = "Random generator seed",
+                                                                              ),
+
+                                               ), # Fin BLOC SeedSettings
+
+               ), # Fin FACT RandomGenerator
+
+
+               BlockSize = SIMP ( statut = "f",
+                                  typ = "I",
+                                  max = 1,
+                                  val_min = 1,
+                                  defaut = 1,
+                                  fr = "Nombre de calculs realises en bloc",
+                                  ang = "Number of computations as a block",
+                                  ),
+
+               MaximumOuterSampling = SIMP ( statut = "o",
+                                             typ = "I",
+                                             max = 1,
+                                             val_min = 1,
+                                             fr = "Maximum d'iterations externes",
+                                             ang = "Maximum outer Sampling value",
+                                             ),
+
+               MaximumCoefficientOfVariation = SIMP ( statut = "f",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 0.1,
+                                                      val_min = 0.0,
+                                                      fr = " maximum ...",
+                                                      ang = "Absolute maximum ...."
+                                                      ),
+
+               ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ",
+
+                            MeanVector = SIMP ( statut = "o",
+                                                typ = "R",
+                                                max = "**",
+                                                fr = "Moyenne",
+                                                ang = "Mean vector",
+                                                ),
+
+                            Correlation = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'Independent', 'Linear' ),
+                                                 defaut = 'Linear',
+                                                 max = 1,
+                                                 fr = "Le type de correlation entre les variables",
+                                                 ang = "Correlation between variables",
+                                                 ),
+
+               ), # Fin BLOC ImportanceSamplingSettings
+
+               Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    ConfidenceInterval = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Ecart-type empirique",
+                                                ang = "Empirical standard deviation",
+                                                ),
+
+                    ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ",
+
+                          Level = SIMP ( statut = "o",
+                                         typ = 'R',
+                                         defaut = 0.0,
+                                         max = 1,
+                                         val_min = 0.0,
+                                         val_max = 1.0,
+                                         fr = "Niveau de confiance",
+                                         ang = "Confidence level",
+                                         ),
+                                                     
+                    ), # Fin BLOC ConfidenceIntervalSettings
+                               
+                    VariationCoefficient = SIMP ( statut = "o",
+                                                  typ = 'TXM',
+                                                  into = ( 'yes', 'no' ),
+                                                  defaut = 'yes',
+                                                  max = 1,
+                                                  fr = "Coefficient de variation",
+                                                  ang = "VariationCoefficient",
+                                                  ),
+
+                    IterationNumber = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Nombre d'iterations",
+                                             ang = "Iteration number",
+                                             ),
+
+                    ConvergenceGraph = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Graphe de convergence",
+                                             ang = "Convergence graph",
+                                             ),
+
+               ), # Fin FACT Result
+                                                               
+
+
+         ), # Fin BLOC SimulationSettings
+
+
+                               
+         AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ",
+
+                Approximation = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       into = ( "FORM", "SORM" ),
+                                       fr = "Approximation",
+                                       ang = "Approximation",
+                                       ),
+
+                OptimizationAlgorithm = SIMP ( statut = "o",
+                                               typ = "TXM",
+                                               into = ( "Cobyla", "AbdoRackwitz" ),
+                                               fr = "Methode d'optimisation",
+                                               ang = "Optimisation method",
+                                               ),
+
+                                     
+                PhysicalStartingPoint = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = "**",
+                                               fr = "Point de demarrage de l'algorithme iteratif",
+                                               ang = "Initial point for iterative process",
+                                               ),
+
+                MaximumIterationsNumber = SIMP ( statut = "f",
+                                                 typ = "I",
+                                                 max = 1,
+                                                 val_min = 1,
+                                                 fr = "Nombre maximum d iterations",
+                                                 ang = "Maximum number of iterations",
+                                                 ),
+
+                regles = ( EXCLUS ( "MaximumAbsoluteError", "RelativeAbsoluteError" ),  ),
+                                     
+                MaximumAbsoluteError = SIMP ( statut = "f",
+                                              typ = "R",
+                                              max = 1,
+                                              defaut = 1E-6,
+                                              val_min = 0.0,
+                                              fr = "Distance maximum absolue entre 2 iterations successifs",
+                                              ang = "Absolute maximum distance between 2 successive iterates",
+                                              ),
+
+                RelativeAbsoluteError = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = 1,
+                                               defaut = 1E-6,
+                                               val_min = 0.0,
+                                               fr = "Distance maximum relative entre 2 iterations successives",
+                                               ang = "Relative maximum distance between 2 successive iterates",
+                                               ),
+                                     
+                MaximumConstraintError = SIMP ( statut = "f",
+                                                typ = "R",
+                                                max = 1,
+                                                val_min = 0.0,
+                                                fr = "Valeur maximum absolue de la fonction moins la valeur du niveau",
+                                                ang = "Maximum absolute value of the constraint function minus the level value",
+                                                ),
+
+                ImportanceSampling = SIMP ( statut = "o",
+                                            typ = 'TXM',
+                                            into = ( 'yes', 'no' ),
+                                            defaut = 'no',
+                                            max = 1,
+                                            fr = "Tirage d'importance au point de conception",
+                                            ang = "Importance sampling at design point",
+                                            ),
+
+                FORM = BLOC ( condition = " Approximation in ( 'FORM', ) ",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    HasReliabilityIndex = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'yes',
+                                                 max = 1,
+                                                 fr = "Indice de fiabilite",
+                                                 ang = "Reliability index",
+                                                 ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            NumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             GraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            HasoferReliabilityIndex = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ",
+        
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC FORM
+
+
+                SORM = BLOC ( condition = " Approximation in ( 'SORM', ) ",
+
+
+                    TvedtApproximation = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "Approximation de Tvedt",
+                                                ang = "Tvedt approximation",
+                                                ),
+
+                    HohenBichlerApproximation = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Approximation de HohenBichler",
+                                                       ang = "HohenBichler approximation",
+                                                       ),
+
+                    BreitungApproximation = SIMP ( statut = "o",
+                                                   typ = 'TXM',
+                                                   into = ( 'yes', 'no' ),
+                                                   defaut = 'no',
+                                                   max = 1,
+                                                   fr = "Approximation de Breitung",
+                                                   ang = "Breitung approximation",
+                                                   ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            NumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             GraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            HasoferReliabilityIndex = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ",
+        
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC SORM
+
+
+                                     
+        ), # Fin BLOC AnalyticalSettings
+
+
+                               
+  ), # Fin BLOC ThresholdExceedence
+
+
+
+) # Fin PROC CRITERIA
+
+
+#===============================
+# 5. Definition des parametres
+#===============================
+VARI = OPER ( nom = "VARI",
+                      sd_prod = variable,
+                      op = None,
+                      fr = "Definitions des lois marginales utilisees par les variables d'entree", 
+                      type=SIMP(statut='f',defaut="IN",into=("IN","OUT"), typ = "TXM",)
+              )
+
+AAA=PROC(nom="AAA",
+       op=None,
+       fr="Essai",
+       ang = "Test",
+       
+       MALOI       = SIMP(statut='o',typ=(loi,),),
+       MAVARIABLE  = SIMP(statut='o',typ=(variable,),),
+) ;
+
+                     
+
+import ops
+FICXML=MACRO(nom="FICXML",
+            op=None,
+            UIinfo={"groupes":("Gestion du travail",)},
+            fr="Débranchement vers un fichier de commandes secondaires",
+            sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1,
+            FICHIER  = SIMP(statut='o',typ='TXM',),
+);
+
diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V2.py b/Openturns_Study/OpenTURNS_Cata_Study_V2.py
new file mode 100644 (file)
index 0000000..58128f1
--- /dev/null
@@ -0,0 +1,1486 @@
+# -*- coding: utf-8 -*-
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+class loi ( ASSD ) : pass
+
+
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'OPENTURNS_STUDY',
+                 execmodul = None,
+                 regles = ( AU_MOINS_UN ( 'CRITERIA' ), AU_MOINS_UN ( 'MODEL' ), ),
+                 ) # Fin JDC_CATA
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+LOG = PROC ( nom = "LOG",
+             op = None,
+             docu = "",
+               
+  DebugMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de debug de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library debug level print",
+                 ),
+               
+  WrapperMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library debug level print",
+                 ),
+               
+  UserMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de user de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library user level print",
+                 ),
+               
+  InfoMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de info de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library info level print",
+                 ),
+               
+  WarningMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de warning de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library warning level print",
+                 ),
+               
+  ErrorMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de error de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library error level print",
+                 ),
+               
+) # Fin PROC LOG
+
+
+
+
+#================================
+# 0. Definition du modele physique
+#================================
+
+MODEL = PROC ( nom = "MODEL",
+               op = None,
+               docu = "",
+               
+  Name = SIMP ( statut = "o",
+                typ = "TXM",
+                fr = "Nom du modele physique",
+                ang = "Physical model identifier",
+                ),
+               
+) # Fin PROC MODEL
+
+
+
+
+
+
+#================================
+# 1. Definition des LOIS
+#================================
+
+# Nota : les variables de type OPER doivent etre en majuscules !
+# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type)
+DISTRIBUTION = OPER ( nom = "DISTRIBUTION",
+                      sd_prod = loi,
+                      op = 68,
+                      fr = "Definitions des lois marginales utilisees par les variables d'entree", 
+                      
+                      
+#====
+# Type de distribution
+#====
+
+  Kind = SIMP ( statut = "o", typ = "TXM",
+                into = ( "Beta",
+                         "Exponential",
+                         "Gamma",
+                         "Geometric",
+                         "Gumbel",
+                         "Histogram",
+                         "Logistic",
+                         "LogNormal",
+                         "MultiNomial",
+                         "Normal",
+                         "TruncatedNormal",
+                         "Poisson",
+                         "Student",
+                         "Triangular",
+                         "Uniform",
+                         "UserDefined",
+                         "Weibull",
+                         ),
+                fr = "Choix du type de la loi marginale",
+                ang = "1D marginal distribution",
+                ),
+
+#====
+# Definition des parametres selon le type de la loi
+#====
+
+  BETA = BLOC ( condition = " Kind in ( 'Beta', ) ",
+
+                  Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "RT", "MuSigma" ),
+                                       defaut = "RT",
+                                       fr = "Parametrage de la loi beta",
+                                       ang = "Beta distribution parameter set",
+                                       ),
+
+                  RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ",
+
+                                      R = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre R de la loi",
+                                                 ang = "R parameter",
+                                                 ),
+
+                                      # T > R
+                                      T = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre T de la loi | T > R",
+                                                 ang = "T parameter | T > R",
+                                                 ),
+
+                                      ), # Fin BLOC RT_Parameters
+
+
+                  MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                      Mu = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  fr = "Parametre Mu de la loi",
+                                                  ang = "Mu parameter",
+                                                  ),
+
+                                      Sigma = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     val_min = 0.,
+                                                     fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                     ang = "Sigma parameter | Sigma > 0",
+                                                     ),
+
+                                      ), # Fin BLOC MuSigma_Parameters
+
+
+                  A = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre A de la loi",
+                             ang = "A parameter",
+                             ),
+
+                  # B > A
+                  B = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre B de la loi | B > A",
+                             ang = "B parameter | B > A",
+                             ),
+
+  ), # Fin BLOC BETA
+
+
+
+  EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ",
+
+                         Lambda = SIMP ( statut = "o",
+                                         typ = "R",
+                                         max = 1,
+                                         val_min = 0.,
+                                         fr = "Parametre Lambda | Lambda > 0",
+                                         ang = "Lambda parameter | Lambda > 0",
+                                         ),
+
+                         Gamma = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Parametre Gamma",
+                                        ang = "Gamma parameter",
+                                        ),
+
+  ), # Fin BLOC EXPONENTIAL
+
+
+
+  GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ",
+
+                   Settings = SIMP ( statut = "o",
+                                        typ = "TXM",
+                                        max = 1,
+                                        into = ( "KLambda", "MuSigma" ),
+                                        defaut = "KLambda",
+                                        fr = "Parametrage de la loi gamma",
+                                        ang = "Gamma distribution parameter set",
+                                        ),
+
+                   KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ",
+
+                                       K = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  val_min = 0.,
+                                                  fr = "Parametre K de la loi | K > 0",
+                                                  ang = "K parameter | K > 0",
+                                                  ),
+
+                                       Lambda = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Lambda de la loi | Lambda > 0",
+                                                       ang = "Lambda parameter | Lambda > 0",
+                                                       ),
+
+                                       ), # Fin BLOC KLambda_Parameters
+
+
+                   MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                       Mu = SIMP ( statut = "o",
+                                                   typ = "R",
+                                                   max = 1,
+                                                   defaut = 0.0,
+                                                   fr = "Parametre Mu de la loi",
+                                                   ang = "Mu parameter",
+                                                   ),
+
+                                       Sigma = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 1.0,
+                                                      val_min = 0.,
+                                                      fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                      ang = "Sigma parameter | Sigma > 0",
+                                                      ),
+
+                                       ), # Fin BLOC MuSigma_Parameters
+
+                   Gamma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  fr = "Parametre Gamma",
+                                  ang = "Gamma parameter",
+                                  ),
+
+
+  ), # Fin BLOC GAMMA
+
+
+
+  GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ",
+
+                       P = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  val_max = 1.,
+                                  fr = "Parametre P | 0 < P < 1",
+                                  ang = "P parameter | 0 < P < 1",
+                                  ),
+
+  ), # Fin BLOC GEOMETRIC
+
+
+
+  GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ",
+
+                    Settings = SIMP ( statut = "o",
+                                         typ = "TXM",
+                                         max = 1,
+                                         into = ( "AlphaBeta", "MuSigma" ),
+                                         defaut = "AlphaBeta",
+                                         fr = "Parametrage de la loi gumbel",
+                                         ang = "Gumbel distribution parameter set",
+                                         ),
+
+                    AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                        Alpha = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                       ang = "Alpha parameter | Alpha > 0",
+                                                       ),
+
+                                        Beta = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      fr = "Parametre Beta de la loi",
+                                                      ang = "Beta parameter",
+                                                      ),
+
+                                        ), # Fin BLOC AlphaBeta_Parameters
+
+
+                    MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                        Mu = SIMP ( statut = "o",
+                                                    typ = "R",
+                                                    max = 1,
+                                                    fr = "Parametre Mu de la loi",
+                                                    ang = "Mu parameter",
+                                                    ),
+
+                                        Sigma = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                       ang = "Sigma parameter | Sigma > 0",
+                                                       ),
+
+                                        ), # Fin BLOC MuSigma_Parameters
+
+  ), # Fin BLOC GUMBEL
+
+
+
+  HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ",
+
+                       Sup = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la distribution",
+                                    ang = "Upper bound",
+                                    ),
+
+                       # Il faut definir une collection de couples ( x,p ) 
+                       Values = SIMP ( statut = 'o',
+                                       typ = 'R',
+                                       max = '**',
+                                       ),
+
+  ), # Fin BLOC HISTOGRAM
+
+
+
+  LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ),
+                                       defaut = "MuSigmaLog",
+                                       fr = "Parametrage de la loi lognormale",
+                                       ang = "Lognormal distribution parameter set",
+                                       ),
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 Sigma = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                                ang = "Sigma parameter | Sigma > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigma_Parameters
+
+                     MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 SigmaOverMu = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0",
+                                                                ang = "SigmaOverMu parameter | SigmaOverMu > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigmaOverMu_Parameters
+
+                     MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ",
+
+                                                    MuLog = SIMP ( statut = "o",
+                                                                   typ = "R",
+                                                                   max = 1,
+                                                                   fr = "Parametre Mu log de la loi",
+                                                                   ang = "Mu log parameter",
+                                                                   ),
+
+                                                    SigmaLog = SIMP ( statut = "o",
+                                                                      typ = "R",
+                                                                      max = 1,
+                                                                      val_min = 0.,
+                                                                      fr = "Parametre Sigma log de la loi | SigmaLog > 0",
+                                                                      ang = "Sigma log parameter | SigmaLog > 0",
+                                                                      ),
+                                            
+                                                    ), # Fin BLOC MuSigmaLog_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+   ), # Fin BLOC LOGNORMAL
+
+
+
+   LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ",
+
+                       Alpha = SIMP ( statut = "o",
+                                      typ = "R",
+                                      max = 1,
+                                      fr = "Parametre Alpha de la loi",
+                                      ang = "Alpha parameter",
+                                      ),
+
+                       Beta = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Beta de la loi | Beta > = 0",
+                                     ang = "Beta parameter | Beta > = 0",
+                                     ),
+
+   ), # Fin BLOC LOGISTIC
+
+
+
+   MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ",
+                         
+                         N = SIMP ( statut = "o",
+                                    typ = "I",
+                                    max = 1,
+                                    fr = "Dimension de la loi",
+                                    ang = "Distribution dimension",
+                                    ),
+
+                         # Il faut un vecteur P de taille N
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC MULTINOMIAL
+
+
+
+   NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ",
+
+                    Mu = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Parametre Mu de la loi",
+                                ang = "Mu parameter",
+                                ),
+
+                   Sigma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  fr = "Parametre Sigma de la loi | Sigma > 0",
+                                  ang = "Sigma parameter | Sigma > 0",
+                                  ),
+
+   ), # Fin BLOC NORMAL
+
+
+
+   POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ",
+
+                     Lambda = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Lambda de la loi | Lambda > 0",
+                                     ang = "Lambda parameter | Lambda > 0",
+                                     ),
+
+   ), # Fin BLOC POISSON
+
+
+
+   STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ",
+
+                     Mu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 fr = "Parametre Mu de la loi",
+                                 ang = "Mu parameter",
+                                 ),
+
+                     Nu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 val_min = 2.,
+                                 fr = "Parametre Nu de la loi | V > = 2",
+                                 ang = "Nu parameter | V > = 2",
+                                 ),
+
+   ), # Fin BLOC STUDENT
+
+
+
+   TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ",
+
+                         A = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne inferieure de la loi | A < = M < = B",
+                                    ang = "Lower bound | A < = M < = B",
+                                    ),
+
+                         M = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Mode de la loi | A < = M < = B",
+                                    ang = "Mode | A < = M < = B",
+                                    ),
+
+                         B = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la loi | A < = M < = B",
+                                    ang = "Upper bound | A < = M < = B",
+                                    ),
+
+   ), # Fin BLOC TRIANGULAR
+
+
+
+   TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ",
+
+                             MuN = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = 1,
+                                          fr = "Parametre Mu de la loi",
+                                          ang = "Mu parameter",
+                                          ),
+
+                             SigmaN = SIMP ( statut = "o",
+                                             typ = "R",
+                                             max = 1,
+                                             val_min = 0.,
+                                             fr = "Parametre SigmaN de la loi | SigmaN > 0",
+                                             ang = "SigmaN parameter | SigmaN> 0",
+                                             ),
+
+                             A = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne inferieure de la loi | A < = B",
+                                        ang = "Lower bound | A < = B",
+                                        ),
+
+                             B = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne superieure de la loi | A < = B",
+                                        ang = "Upper bound | A < = B",
+                                        ),
+
+   ), # Fin BLOC TRUNCATEDNORMAL
+
+
+
+   UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ",
+
+                     A = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne inferieure de la loi | A < = B",
+                                ang = "Lower bound | A < = B",
+                                ),
+
+                     B = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne superieure de la loi | A < = B",
+                                ang = "Upper bound | A < = B",
+                                ),
+
+   ), # Fin BLOC UNIFORM
+
+
+
+   USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ",
+
+                           # Il faut definir une collection de couples ( x,p ) 
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC USERDEFINED
+
+
+
+   WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                          typ = "TXM",
+                                          max = 1,
+                                          into = ( "AlphaBeta", "MuSigma" ),
+                                          defaut = "AlphaBeta",
+                                          fr = "Parametrage de la loi weibull",
+                                          ang = "Weibull distribution parameter set",
+                                          ),
+
+                     AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                         Alpha = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                        ang = "Alpha parameter | Alpha > 0",
+                                                        ),
+
+                                         Beta = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Beta de la loi | Beta > 0",
+                                                       ang = "Beta parameter | Beta > 0",
+                                                       ),
+
+                                         ), # Fin BLOC AlphaBeta_Parameters
+
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                         Mu = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     fr = "Parametre Mu de la loi",
+                                                     ang = "Mu parameter",
+                                                     ),
+
+                                         Sigma = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                        ang = "Sigma parameter | Sigma > 0",
+                                                        ),
+
+                                         ), # Fin BLOC MuSigma_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+    ), # Fin BLOC WEIBULL
+
+) # Fin OPER DISTRIBUTION
+
+
+
+
+
+
+#================================
+# 3. Definition de l'etude
+#================================
+
+# Nota : les variables de type PROC doivent etre en majuscules !
+CRITERIA = PROC ( nom = "CRITERIA",
+                  op = None,
+                  docu = "",
+                  fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.",
+                  ang = "Writes the configuration file for OPENTURNS.",
+
+
+
+  Type = SIMP ( statut = "o",
+                typ = "TXM",
+                into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ),
+                fr = "Type d'Analyse",
+                ang = "Analysis",
+                ),
+
+
+
+
+
+
+
+  MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Experiment Plane", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                  # UC 3.1.1
+                  ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ",
+
+                          ExperimentPlane = SIMP ( statut = "o",
+                                                   typ = "TXM",
+                                                   into = ( "Axial", "Factorial", "Composite", ),
+                                                   fr = "Methode",
+                                                   ang = "Method",
+                                                   ),
+
+                          Levels = SIMP ( statut = "o",
+                                          typ = "R",
+                                          val_min = 0.0,
+                                          max = '**',    
+                                          fr = "Nombre de niveaux dans chaque direction",
+                                          ang = "Levels in each direction",
+                                          ),
+
+                          # Scaled Vector
+                          UnitsPerDimension = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension (autant que de variables declarees)",
+                                          ang = "Units per dimension (as much as declared variables)",
+                                          ),
+
+                          # Translation Vector
+                          Center = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension",
+                                          ang = "Units per dimension",
+                                          ),
+
+                    ), # Fin BLOC ExperimentPlaneSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                    ), # Fin BLOC RandomSamplingSettings
+
+                  Result = SIMP (  statut = "o",
+                                   typ = "TXM",
+                                   into = ( "Min/Max", ),
+                                   defaut = "Min/Max",
+                                   fr = "Le minimum et le maximum",
+                                   ang = "The min and max values",
+                                   ),
+
+
+  ), # Fin BLOC MinMax
+
+
+
+
+  CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Taylor Variance Decomposition", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                              
+                  # UC 3.2.
+                  TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ",
+
+                      Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              MeanFirstOrder = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Moyenne au premier ordre",
+                                                ang = "MeanFirstOrder",
+                                                ),
+
+                              StandardDeviationFirstOrder = SIMP ( statut = "o",
+                                                                   typ = 'TXM',
+                                                                   into = ( 'yes', 'no' ),
+                                                                   defaut = 'yes',
+                                                                   max = 1,
+                                                                   fr = "Ecart-type au premier ordre",
+                                                                   ang = "StandardDeviationFirstOrder",
+                                                                   ),
+
+                              MeanSecondOrder = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Moyenne au second ordre",
+                                                       ang = "MeanSecondOrder",
+                                                       ),
+
+                              ImportanceFactor = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Facteur d'importance pour variable de sortie scalaire",
+                                                        ang = "ImportanceFactor",
+                                                        ),
+
+                             ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC ImportanceFactorSettings
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC TaylorVarianceDecompositionSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                       Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              EmpiricalMean = SIMP ( statut = "o",
+                                                     typ = 'TXM',
+                                                     into = ( 'yes', 'no' ),
+                                                     defaut = 'yes',
+                                                     max = 1,
+                                                     fr = "Moyenne empirique",
+                                                     ang = "Empirical mean",
+                                                     ),
+
+                              EmpiricalStandardDeviation = SIMP ( statut = "o",
+                                                                  typ = 'TXM',
+                                                                  into = ( 'yes', 'no' ),
+                                                                  defaut = 'yes',
+                                                                  max = 1,
+                                                                  fr = "Ecart-type empirique",
+                                                                  ang = "Empirical standard deviation",
+                                                                  ),
+
+                              EmpiricalQuantile = SIMP ( statut = "o",
+                                                         typ = 'R',
+                                                         defaut = 0.0,
+                                                         max = 1,
+                                                         val_min = 0.0,
+                                                         val_max = 1.0,
+                                                         fr = "Quantile empirique",
+                                                         ang = "Empirical quantile",
+                                                         ),
+
+                              AnalysedCorrelations = SIMP ( statut = "o",
+                                                            typ = 'TXM',
+                                                            into = ( 'yes', 'no' ),
+                                                            defaut = 'no',
+                                                            max = 1,
+                                                            fr = "Correlations analysees",
+                                                            ang = "Analysed correlations",
+                                                            ),
+
+                              KernelSmoothing = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Kernel smoothing de l'echantillon",
+                                                       ang = "Kernel smoothing of the sample",
+                                                       ),
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC RandomSamplingSettings
+
+  ), # Fin BLOC CentralUncertainty
+
+
+
+
+  ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ",
+
+         Event =  FACT ( statut = "o",
+                         min = 1,
+                         max = 1,
+
+                         Threshold = SIMP ( statut = "o",
+                                            typ = "R",
+                                            max = 1,
+                                            fr = "Le seuil de defaillance",
+                                            ang = "Failure threshold",
+                                            ),
+
+                         ComparisonOperator = SIMP ( statut = "o",
+                                                     typ = "TXM",
+                                                     max = 1,
+                                                     into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ),
+                                                     fr = "Que faut-il ne pas depasser : un maximum ou un minimum",
+                                                     ang = "What is the failure threshold : maximum or minimum",
+                                                     ),
+         ), # Fin FACT Event
+                         
+
+         Method = SIMP ( statut = "o",
+                         typ = "TXM",
+                         into = ( "Simulation", "Analytical" ),
+                         fr = "Methode",
+                         ang = "Method",
+                         ),
+
+         SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ",
+
+               Algorithm = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "MonteCarlo", "LHS", "ImportanceSampling" ),
+                                  fr = "Algorithme de simulation",
+                                  ang = "Simulation algorithm",
+                                  ),
+
+                                 
+               RandomGenerator = FACT ( statut = "o",
+                                        min = 1,
+                                        max = 1,
+
+                           SeedToBeSet = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "La racine du generateur aleatoire doit-elle etre positionnee ?",
+                                                ang = "Does the random generator seed need to be set ?",
+                                                ),
+
+                           SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ",
+
+                                                 RandomGeneratorSeed = SIMP ( statut = "o",
+                                                                              typ = "I",
+                                                                              max = 1,
+                                                                              fr = "Racine du generateur aleatoire",
+                                                                              ang = "Random generator seed",
+                                                                              ),
+
+                                               ), # Fin BLOC SeedSettings
+
+               ), # Fin FACT RandomGenerator
+
+
+               BlockSize = SIMP ( statut = "f",
+                                  typ = "I",
+                                  max = 1,
+                                  val_min = 1,
+                                  defaut = 1,
+                                  fr = "Nombre de calculs realises en bloc",
+                                  ang = "Number of computations as a block",
+                                  ),
+
+               MaximumOuterSampling = SIMP ( statut = "o",
+                                             typ = "I",
+                                             max = 1,
+                                             val_min = 1,
+                                             fr = "Maximum d'iterations externes",
+                                             ang = "Maximum outer Sampling value",
+                                             ),
+
+               MaximumCoefficientOfVariation = SIMP ( statut = "f",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 0.1,
+                                                      val_min = 0.0,
+                                                      fr = " maximum ...",
+                                                      ang = "Absolute maximum ...."
+                                                      ),
+
+               ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ",
+
+                            MeanVector = SIMP ( statut = "o",
+                                                typ = "R",
+                                                max = "**",
+                                                fr = "Moyenne",
+                                                ang = "Mean vector",
+                                                ),
+
+                            Correlation = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'Independent', 'Linear' ),
+                                                 defaut = 'Linear',
+                                                 max = 1,
+                                                 fr = "Le type de correlation entre les variables",
+                                                 ang = "Correlation between variables",
+                                                 ),
+
+               ), # Fin BLOC ImportanceSamplingSettings
+
+               Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    ConfidenceInterval = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Ecart-type empirique",
+                                                ang = "Empirical standard deviation",
+                                                ),
+
+                    ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ",
+
+                          Level = SIMP ( statut = "o",
+                                         typ = 'R',
+                                         defaut = 0.0,
+                                         max = 1,
+                                         val_min = 0.0,
+                                         val_max = 1.0,
+                                         fr = "Niveau de confiance",
+                                         ang = "Confidence level",
+                                         ),
+                                                     
+                    ), # Fin BLOC ConfidenceIntervalSettings
+                               
+                    VariationCoefficient = SIMP ( statut = "o",
+                                                  typ = 'TXM',
+                                                  into = ( 'yes', 'no' ),
+                                                  defaut = 'yes',
+                                                  max = 1,
+                                                  fr = "Coefficient de variation",
+                                                  ang = "VariationCoefficient",
+                                                  ),
+
+                    IterationNumber = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Nombre d'iterations",
+                                             ang = "Iteration number",
+                                             ),
+
+                    ConvergenceGraph = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Graphe de convergence",
+                                             ang = "Convergence graph",
+                                             ),
+
+               ), # Fin FACT Result
+                                                               
+
+
+         ), # Fin BLOC SimulationSettings
+
+
+                               
+         AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ",
+
+                Approximation = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       into = ( "FORM", "SORM" ),
+                                       fr = "Approximation",
+                                       ang = "Approximation",
+                                       ),
+
+                OptimizationAlgorithm = SIMP ( statut = "o",
+                                               typ = "TXM",
+                                               into = ( "Cobyla", "AbdoRackwitz" ),
+                                               fr = "Methode d'optimisation",
+                                               ang = "Optimisation method",
+                                               ),
+
+                                     
+                PhysicalStartingPoint = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = "**",
+                                               fr = "Point de demarrage de l'algorithme iteratif",
+                                               ang = "Initial point for iterative process",
+                                               ),
+
+                MaximumIterationsNumber = SIMP ( statut = "f",
+                                                 typ = "I",
+                                                 max = 1,
+                                                 val_min = 1,
+                                                 fr = "Nombre maximum d iterations",
+                                                 ang = "Maximum number of iterations",
+                                                 ),
+
+                regles = ( EXCLUS ( "MaximumAbsoluteError", "RelativeAbsoluteError" ),  ),
+                                     
+                MaximumAbsoluteError = SIMP ( statut = "f",
+                                              typ = "R",
+                                              max = 1,
+                                              defaut = 1E-6,
+                                              val_min = 0.0,
+                                              fr = "Distance maximum absolue entre 2 iterations successifs",
+                                              ang = "Absolute maximum distance between 2 successive iterates",
+                                              ),
+
+                RelativeAbsoluteError = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = 1,
+                                               defaut = 1E-6,
+                                               val_min = 0.0,
+                                               fr = "Distance maximum relative entre 2 iterations successives",
+                                               ang = "Relative maximum distance between 2 successive iterates",
+                                               ),
+                                     
+                MaximumConstraintError = SIMP ( statut = "f",
+                                                typ = "R",
+                                                max = 1,
+                                                val_min = 0.0,
+                                                fr = "Valeur maximum absolue de la fonction moins la valeur du niveau",
+                                                ang = "Maximum absolute value of the constraint function minus the level value",
+                                                ),
+
+                ImportanceSampling = SIMP ( statut = "o",
+                                            typ = 'TXM',
+                                            into = ( 'yes', 'no' ),
+                                            defaut = 'no',
+                                            max = 1,
+                                            fr = "Tirage d'importance au point de conception",
+                                            ang = "Importance sampling at design point",
+                                            ),
+
+                FORM = BLOC ( condition = " Approximation in ( 'FORM', ) ",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    HasReliabilityIndex = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'yes',
+                                                 max = 1,
+                                                 fr = "Indice de fiabilite",
+                                                 ang = "Reliability index",
+                                                 ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            NumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             GraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            HasoferReliabilityIndex = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ",
+        
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC FORM
+
+
+                SORM = BLOC ( condition = " Approximation in ( 'SORM', ) ",
+
+
+                    TvedtApproximation = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "Approximation de Tvedt",
+                                                ang = "Tvedt approximation",
+                                                ),
+
+                    HohenBichlerApproximation = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Approximation de HohenBichler",
+                                                       ang = "HohenBichler approximation",
+                                                       ),
+
+                    BreitungApproximation = SIMP ( statut = "o",
+                                                   typ = 'TXM',
+                                                   into = ( 'yes', 'no' ),
+                                                   defaut = 'no',
+                                                   max = 1,
+                                                   fr = "Approximation de Breitung",
+                                                   ang = "Breitung approximation",
+                                                   ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            NumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             GraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            HasoferReliabilityIndex = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSettings = BLOC ( condition = " HasoferReliabilityIndex in ( 'yes', ) ",
+        
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC SORM
+
+
+                                     
+        ), # Fin BLOC AnalyticalSettings
+
+
+                               
+  ), # Fin BLOC ThresholdExceedence
+
+
+
+) # Fin PROC CRITERIA
+
+
+
+
+
+
+
diff --git a/Openturns_Study/OpenTURNS_Cata_Study_V3.py b/Openturns_Study/OpenTURNS_Cata_Study_V3.py
new file mode 100644 (file)
index 0000000..80dbe83
--- /dev/null
@@ -0,0 +1,1598 @@
+# -*- coding: utf-8 -*-
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+from Accas import ASSD, JDC_CATA, AU_MOINS_UN, PROC, SIMP, FACT, OPER, MACRO, BLOC
+
+class loi      ( ASSD ) : pass
+class variable ( ASSD ) : pass
+
+
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'OPENTURNS_STUDY',
+                 execmodul = None,
+                 regles = ( AU_MOINS_UN ( 'CRITERIA' ), AU_MOINS_UN ( 'MODEL' ), ),
+                 ) # Fin JDC_CATA
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+LOG = PROC ( nom = "LOG",
+             op = None,
+             docu = "",
+               
+  DebugMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de debug de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library debug level print",
+                 ),
+               
+  WrapperMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library debug level print",
+                 ),
+               
+  UserMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'no',
+                 fr = "Affichage du niveau de user de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library user level print",
+                 ),
+               
+  InfoMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de info de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library info level print",
+                 ),
+               
+  WarningMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de warning de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library warning level print",
+                 ),
+               
+  ErrorMessages = SIMP ( statut = "o",
+                 typ = "TXM",
+                 into = ( 'yes', 'no' ),
+                 defaut = 'yes',
+                 fr = "Affichage du niveau de error de la bibliotheque Open TURNS",
+                 ang = "Open TURNS library error level print",
+                 ),
+               
+) # Fin PROC LOG
+
+
+
+
+#================================
+# 0. Definition du modele physique
+#================================
+
+
+DETERMINISTICVARIABLE = OPER ( nom = "DETERMINISTICVARIABLE",
+            sd_prod = variable,
+            op = None,
+            fr = "Variable deterministe",
+            ang = "Deterministic variable",
+            
+  N = SIMP ( statut = 'o',
+             typ = "TXM",
+             fr = "Nom",
+             ang = "Name",
+             ),
+            
+  T = SIMP ( statut = 'o',
+             defaut = "in",
+             into = ( "in" , "out", ),
+             typ = "TXM",
+             fr = "Type",
+             ang = "Type",
+             ),
+            
+  R = SIMP ( statut = 'o',
+             defaut = 0,
+             typ = "I",
+             fr = "Rang",
+             ang = "Rank",
+             ),
+            
+) # Fin OPER DETERMINISTICVARIABLE
+
+
+
+import ops
+MODEL = MACRO ( nom = "MODEL",
+                op = None,
+                UIinfo = { "groupes" : ( "Gestion du travail", ) },
+                fr = "Chargement du wrapper du modele physique",
+                ang = "Physical model wrapper load",
+                sd_prod = ops.INCLUDE,
+                op_init = ops.INCLUDE_context,
+                fichier_ini = 1,
+               
+  FileName = SIMP ( statut = "o",
+                    typ = "TXM",
+                    fr = "Nom du modele physique",
+                    ang = "Physical model identifier",
+                    ),
+               
+) # Fin PROC MODEL
+
+
+
+
+VARIABLE = PROC ( nom = "VARIABLE",
+                  op = None,
+                  docu = "",
+                  fr = "Variable probabiliste",
+                  ang = "Probabilistic variable",
+
+  ModelVariable = SIMP ( statut = "o",
+                         typ = ( variable, ),
+                         ),
+
+  Distribution = SIMP ( statut = "o",
+                        typ = ( loi, ),
+                        ),
+                  
+) # Fin PROC VARIABLE
+
+
+
+
+#================================
+# 1. Definition des LOIS
+#================================
+
+# Nota : les variables de type OPER doivent etre en majuscules !
+# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type)
+DISTRIBUTION = OPER ( nom = "DISTRIBUTION",
+                      sd_prod = loi,
+                      op = 68,
+                      fr = "Definitions des lois marginales utilisees par les variables d'entree", 
+                      
+                      
+#====
+# Type de distribution
+#====
+
+  Kind = SIMP ( statut = "o", typ = "TXM",
+                into = ( "Beta",
+                         "Exponential",
+                         "Gamma",
+                         "Geometric",
+                         "Gumbel",
+                         "Histogram",
+                         "Logistic",
+                         "LogNormal",
+                         "MultiNomial",
+                         "Normal",
+                         "TruncatedNormal",
+                         "Poisson",
+                         "Student",
+                         "Triangular",
+                         "Uniform",
+                         "UserDefined",
+                         "Weibull",
+                         ),
+                fr = "Choix du type de la loi marginale",
+                ang = "1D marginal distribution",
+                ),
+
+#====
+# Definition des parametres selon le type de la loi
+#====
+
+  BETA = BLOC ( condition = " Kind in ( 'Beta', ) ",
+
+                  Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "RT", "MuSigma" ),
+                                       defaut = "RT",
+                                       fr = "Parametrage de la loi beta",
+                                       ang = "Beta distribution parameter set",
+                                       ),
+
+                  RT_Parameters = BLOC ( condition = " Settings in ( 'RT', ) ",
+
+                                      R = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre R de la loi",
+                                                 ang = "R parameter",
+                                                 ),
+
+                                      # T > R
+                                      T = SIMP ( statut = "o",
+                                                 typ = "R",
+                                                 max = 1,
+                                                 val_min = 0.,
+                                                 fr = "Parametre T de la loi | T > R",
+                                                 ang = "T parameter | T > R",
+                                                 ),
+
+                                      ), # Fin BLOC RT_Parameters
+
+
+                  MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                      Mu = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  fr = "Parametre Mu de la loi",
+                                                  ang = "Mu parameter",
+                                                  ),
+
+                                      Sigma = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     val_min = 0.,
+                                                     fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                     ang = "Sigma parameter | Sigma > 0",
+                                                     ),
+
+                                      ), # Fin BLOC MuSigma_Parameters
+
+
+                  A = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre A de la loi",
+                             ang = "A parameter",
+                             ),
+
+                  # B > A
+                  B = SIMP ( statut = "o",
+                             typ = "R",
+                             max = 1,
+                             fr = "Parametre B de la loi | B > A",
+                             ang = "B parameter | B > A",
+                             ),
+
+  ), # Fin BLOC BETA
+
+
+
+  EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ",
+
+                         Lambda = SIMP ( statut = "o",
+                                         typ = "R",
+                                         max = 1,
+                                         val_min = 0.,
+                                         fr = "Parametre Lambda | Lambda > 0",
+                                         ang = "Lambda parameter | Lambda > 0",
+                                         ),
+
+                         Gamma = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Parametre Gamma",
+                                        ang = "Gamma parameter",
+                                        ),
+
+  ), # Fin BLOC EXPONENTIAL
+
+
+
+  GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ",
+
+                   Settings = SIMP ( statut = "o",
+                                        typ = "TXM",
+                                        max = 1,
+                                        into = ( "KLambda", "MuSigma" ),
+                                        defaut = "KLambda",
+                                        fr = "Parametrage de la loi gamma",
+                                        ang = "Gamma distribution parameter set",
+                                        ),
+
+                   KLambda_Parameters = BLOC ( condition = " Settings in ( 'KLambda', ) ",
+
+                                       K = SIMP ( statut = "o",
+                                                  typ = "R",
+                                                  max = 1,
+                                                  val_min = 0.,
+                                                  fr = "Parametre K de la loi | K > 0",
+                                                  ang = "K parameter | K > 0",
+                                                  ),
+
+                                       Lambda = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Lambda de la loi | Lambda > 0",
+                                                       ang = "Lambda parameter | Lambda > 0",
+                                                       ),
+
+                                       ), # Fin BLOC KLambda_Parameters
+
+
+                   MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                       Mu = SIMP ( statut = "o",
+                                                   typ = "R",
+                                                   max = 1,
+                                                   defaut = 0.0,
+                                                   fr = "Parametre Mu de la loi",
+                                                   ang = "Mu parameter",
+                                                   ),
+
+                                       Sigma = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 1.0,
+                                                      val_min = 0.,
+                                                      fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                      ang = "Sigma parameter | Sigma > 0",
+                                                      ),
+
+                                       ), # Fin BLOC MuSigma_Parameters
+
+                   Gamma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  fr = "Parametre Gamma",
+                                  ang = "Gamma parameter",
+                                  ),
+
+
+  ), # Fin BLOC GAMMA
+
+
+
+  GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ",
+
+                       P = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  val_max = 1.,
+                                  fr = "Parametre P | 0 < P < 1",
+                                  ang = "P parameter | 0 < P < 1",
+                                  ),
+
+  ), # Fin BLOC GEOMETRIC
+
+
+
+  GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ",
+
+                    Settings = SIMP ( statut = "o",
+                                         typ = "TXM",
+                                         max = 1,
+                                         into = ( "AlphaBeta", "MuSigma" ),
+                                         defaut = "AlphaBeta",
+                                         fr = "Parametrage de la loi gumbel",
+                                         ang = "Gumbel distribution parameter set",
+                                         ),
+
+                    AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                        Alpha = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                       ang = "Alpha parameter | Alpha > 0",
+                                                       ),
+
+                                        Beta = SIMP ( statut = "o",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      fr = "Parametre Beta de la loi",
+                                                      ang = "Beta parameter",
+                                                      ),
+
+                                        ), # Fin BLOC AlphaBeta_Parameters
+
+
+                    MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                        Mu = SIMP ( statut = "o",
+                                                    typ = "R",
+                                                    max = 1,
+                                                    fr = "Parametre Mu de la loi",
+                                                    ang = "Mu parameter",
+                                                    ),
+
+                                        Sigma = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                       ang = "Sigma parameter | Sigma > 0",
+                                                       ),
+
+                                        ), # Fin BLOC MuSigma_Parameters
+
+  ), # Fin BLOC GUMBEL
+
+
+
+  HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ",
+
+                       Sup = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la distribution",
+                                    ang = "Upper bound",
+                                    ),
+
+                       # Il faut definir une collection de couples ( x,p ) 
+                       Values = SIMP ( statut = 'o',
+                                       typ = 'R',
+                                       max = '**',
+                                       ),
+
+  ), # Fin BLOC HISTOGRAM
+
+
+
+  LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       max = 1,
+                                       into = ( "MuSigmaLog", "MuSigma", "MuSigmaOverMu" ),
+                                       defaut = "MuSigmaLog",
+                                       fr = "Parametrage de la loi lognormale",
+                                       ang = "Lognormal distribution parameter set",
+                                       ),
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 Sigma = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                                ang = "Sigma parameter | Sigma > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigma_Parameters
+
+                     MuSigmaOverMu_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaOverMu', ) ",
+
+                                                 Mu = SIMP ( statut = "o",
+                                                             typ = "R",
+                                                             max = 1,
+                                                             fr = "Parametre Mu de la loi | Mu > Gamma",
+                                                             ang = "Mu parameter | Mu > Gamma",
+                                                             ),
+
+                                                 SigmaOverMu = SIMP ( statut = "o",
+                                                                typ = "R",
+                                                                max = 1,
+                                                                val_min = 0.,
+                                                                fr = "Parametre SigmaOverMu de la loi | SigmaOverMu > 0",
+                                                                ang = "SigmaOverMu parameter | SigmaOverMu > 0",
+                                                                ),
+
+                                                 ), # Fin BLOC MuSigmaOverMu_Parameters
+
+                     MuSigmaLog_Parameters = BLOC ( condition = " Settings in ( 'MuSigmaLog', ) ",
+
+                                                    MuLog = SIMP ( statut = "o",
+                                                                   typ = "R",
+                                                                   max = 1,
+                                                                   fr = "Parametre Mu log de la loi",
+                                                                   ang = "Mu log parameter",
+                                                                   ),
+
+                                                    SigmaLog = SIMP ( statut = "o",
+                                                                      typ = "R",
+                                                                      max = 1,
+                                                                      val_min = 0.,
+                                                                      fr = "Parametre Sigma log de la loi | SigmaLog > 0",
+                                                                      ang = "Sigma log parameter | SigmaLog > 0",
+                                                                      ),
+                                            
+                                                    ), # Fin BLOC MuSigmaLog_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+   ), # Fin BLOC LOGNORMAL
+
+
+
+   LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ",
+
+                       Alpha = SIMP ( statut = "o",
+                                      typ = "R",
+                                      max = 1,
+                                      fr = "Parametre Alpha de la loi",
+                                      ang = "Alpha parameter",
+                                      ),
+
+                       Beta = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Beta de la loi | Beta > = 0",
+                                     ang = "Beta parameter | Beta > = 0",
+                                     ),
+
+   ), # Fin BLOC LOGISTIC
+
+
+
+   MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ",
+                         
+                         N = SIMP ( statut = "o",
+                                    typ = "I",
+                                    max = 1,
+                                    fr = "Dimension de la loi",
+                                    ang = "Distribution dimension",
+                                    ),
+
+                         # Il faut un vecteur P de taille N
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC MULTINOMIAL
+
+
+
+   NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ",
+
+                    Mu = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Parametre Mu de la loi",
+                                ang = "Mu parameter",
+                                ),
+
+                   Sigma = SIMP ( statut = "o",
+                                  typ = "R",
+                                  max = 1,
+                                  val_min = 0.,
+                                  fr = "Parametre Sigma de la loi | Sigma > 0",
+                                  ang = "Sigma parameter | Sigma > 0",
+                                  ),
+
+   ), # Fin BLOC NORMAL
+
+
+
+   POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ",
+
+                     Lambda = SIMP ( statut = "o",
+                                     typ = "R",
+                                     max = 1,
+                                     val_min = 0.,
+                                     fr = "Parametre Lambda de la loi | Lambda > 0",
+                                     ang = "Lambda parameter | Lambda > 0",
+                                     ),
+
+   ), # Fin BLOC POISSON
+
+
+
+   STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ",
+
+                     Mu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 fr = "Parametre Mu de la loi",
+                                 ang = "Mu parameter",
+                                 ),
+
+                     Nu = SIMP ( statut = "o",
+                                 typ = "R",
+                                 max = 1,
+                                 val_min = 2.,
+                                 fr = "Parametre Nu de la loi | V > = 2",
+                                 ang = "Nu parameter | V > = 2",
+                                 ),
+
+   ), # Fin BLOC STUDENT
+
+
+
+   TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ",
+
+                         A = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne inferieure de la loi | A < = M < = B",
+                                    ang = "Lower bound | A < = M < = B",
+                                    ),
+
+                         M = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Mode de la loi | A < = M < = B",
+                                    ang = "Mode | A < = M < = B",
+                                    ),
+
+                         B = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Borne superieure de la loi | A < = M < = B",
+                                    ang = "Upper bound | A < = M < = B",
+                                    ),
+
+   ), # Fin BLOC TRIANGULAR
+
+
+
+   TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ",
+
+                             MuN = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = 1,
+                                          fr = "Parametre Mu de la loi",
+                                          ang = "Mu parameter",
+                                          ),
+
+                             SigmaN = SIMP ( statut = "o",
+                                             typ = "R",
+                                             max = 1,
+                                             val_min = 0.,
+                                             fr = "Parametre SigmaN de la loi | SigmaN > 0",
+                                             ang = "SigmaN parameter | SigmaN> 0",
+                                             ),
+
+                             A = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne inferieure de la loi | A < = B",
+                                        ang = "Lower bound | A < = B",
+                                        ),
+
+                             B = SIMP ( statut = "o",
+                                        typ = "R",
+                                        max = 1,
+                                        fr = "Borne superieure de la loi | A < = B",
+                                        ang = "Upper bound | A < = B",
+                                        ),
+
+   ), # Fin BLOC TRUNCATEDNORMAL
+
+
+
+   UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ",
+
+                     A = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne inferieure de la loi | A < = B",
+                                ang = "Lower bound | A < = B",
+                                ),
+
+                     B = SIMP ( statut = "o",
+                                typ = "R",
+                                max = 1,
+                                fr = "Borne superieure de la loi | A < = B",
+                                ang = "Upper bound | A < = B",
+                                ),
+
+   ), # Fin BLOC UNIFORM
+
+
+
+   USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ",
+
+                           # Il faut definir une collection de couples ( x,p ) 
+                         Values = SIMP ( statut = 'o',
+                                         typ = 'R',
+                                         max = '**',
+                                         ),
+
+   ), # Fin BLOC USERDEFINED
+
+
+
+   WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ",
+
+                     Settings = SIMP ( statut = "o",
+                                          typ = "TXM",
+                                          max = 1,
+                                          into = ( "AlphaBeta", "MuSigma" ),
+                                          defaut = "AlphaBeta",
+                                          fr = "Parametrage de la loi weibull",
+                                          ang = "Weibull distribution parameter set",
+                                          ),
+
+                     AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ",
+
+                                         Alpha = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Alpha de la loi | Alpha > 0",
+                                                        ang = "Alpha parameter | Alpha > 0",
+                                                        ),
+
+                                         Beta = SIMP ( statut = "o",
+                                                       typ = "R",
+                                                       max = 1,
+                                                       val_min = 0.,
+                                                       fr = "Parametre Beta de la loi | Beta > 0",
+                                                       ang = "Beta parameter | Beta > 0",
+                                                       ),
+
+                                         ), # Fin BLOC AlphaBeta_Parameters
+
+
+                     MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ",
+
+                                         Mu = SIMP ( statut = "o",
+                                                     typ = "R",
+                                                     max = 1,
+                                                     fr = "Parametre Mu de la loi",
+                                                     ang = "Mu parameter",
+                                                     ),
+
+                                         Sigma = SIMP ( statut = "o",
+                                                        typ = "R",
+                                                        max = 1,
+                                                        val_min = 0.,
+                                                        fr = "Parametre Sigma de la loi | Sigma > 0",
+                                                        ang = "Sigma parameter | Sigma > 0",
+                                                        ),
+
+                                         ), # Fin BLOC MuSigma_Parameters
+
+                     Gamma = SIMP ( statut = "o",
+                                    typ = "R",
+                                    max = 1,
+                                    fr = "Parametre Gamma",
+                                    ang = "Gamma parameter",
+                                    ),
+
+    ), # Fin BLOC WEIBULL
+
+) # Fin OPER DISTRIBUTION
+
+
+
+
+
+
+
+#================================
+# 3. Definition de l'etude
+#================================
+
+# Nota : les variables de type PROC doivent etre en majuscules !
+CRITERIA = PROC ( nom = "CRITERIA",
+                  op = None,
+                  docu = "",
+                  fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.",
+                  ang = "Writes the configuration file for OPENTURNS.",
+
+
+
+  Type = SIMP ( statut = "o",
+                typ = "TXM",
+                into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ),
+                fr = "Type d'Analyse",
+                ang = "Analysis",
+                ),
+
+
+
+
+
+
+
+  MinMax = BLOC ( condition = " Type in ( 'Min/Max', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Experiment Plane", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                  # UC 3.1.1
+                  ExperimentPlaneSettings = BLOC ( condition = " Method in ( 'Experiment Plane', ) ",
+
+                          ExperimentPlane = SIMP ( statut = "o",
+                                                   typ = "TXM",
+                                                   into = ( "Axial", "Factorial", "Composite", ),
+                                                   fr = "Methode",
+                                                   ang = "Method",
+                                                   ),
+
+                          Levels = SIMP ( statut = "o",
+                                          typ = "R",
+                                          val_min = 0.0,
+                                          max = '**',    
+                                          fr = "Nombre de niveaux dans chaque direction",
+                                          ang = "Levels in each direction",
+                                          ),
+
+                          # Scaled Vector
+                          UnitsPerDimension = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension (autant que de variables declarees)",
+                                          ang = "Units per dimension (as much as declared variables)",
+                                          ),
+
+                          # Translation Vector
+                          Center = SIMP ( statut = "o",
+                                          typ = "R",
+                                          max = '**',    
+                                          fr = "Unite par dimension",
+                                          ang = "Units per dimension",
+                                          ),
+
+                    ), # Fin BLOC ExperimentPlaneSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                    ), # Fin BLOC RandomSamplingSettings
+
+                  Result = SIMP (  statut = "o",
+                                   typ = "TXM",
+                                   into = ( "Min/Max", ),
+                                   defaut = "Min/Max",
+                                   fr = "Le minimum et le maximum",
+                                   ang = "The min and max values",
+                                   ),
+
+
+  ), # Fin BLOC MinMax
+
+
+
+
+  CentralUncertainty = BLOC ( condition = " Type in ( 'Central Uncertainty', ) ",
+
+                  Method = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "Taylor Variance Decomposition", "Random Sampling" ),
+                                  fr = "Methode",
+                                  ang = "Method",
+                                  ),
+                              
+                  # UC 3.2.
+                  TaylorVarianceDecompositionSettings = BLOC ( condition = " Method in ( 'Taylor Variance Decomposition', ) ",
+
+                      Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              MeanFirstOrder = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Moyenne au premier ordre",
+                                                ang = "MeanFirstOrder",
+                                                ),
+
+                              StandardDeviationFirstOrder = SIMP ( statut = "o",
+                                                                   typ = 'TXM',
+                                                                   into = ( 'yes', 'no' ),
+                                                                   defaut = 'yes',
+                                                                   max = 1,
+                                                                   fr = "Ecart-type au premier ordre",
+                                                                   ang = "StandardDeviationFirstOrder",
+                                                                   ),
+
+                              MeanSecondOrder = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Moyenne au second ordre",
+                                                       ang = "MeanSecondOrder",
+                                                       ),
+
+                              ImportanceFactor = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Facteur d'importance pour variable de sortie scalaire",
+                                                        ang = "ImportanceFactor",
+                                                        ),
+
+                             ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                                    NumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+
+                                     GraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC ImportanceFactorSettings
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC TaylorVarianceDecompositionSettings
+
+
+
+                  RandomSamplingSettings = BLOC ( condition = " Method in ( 'Random Sampling', ) ",
+
+                          PointsNumber = SIMP ( statut = "o",
+                                                typ = "I",
+                                                val_min = 1,
+                                                fr = "Nombre de points",
+                                                ang = "Points number",
+                                                ),
+
+                       Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                              EmpiricalMean = SIMP ( statut = "o",
+                                                     typ = 'TXM',
+                                                     into = ( 'yes', 'no' ),
+                                                     defaut = 'yes',
+                                                     max = 1,
+                                                     fr = "Moyenne empirique",
+                                                     ang = "Empirical mean",
+                                                     ),
+
+                              EmpiricalStandardDeviation = SIMP ( statut = "o",
+                                                                  typ = 'TXM',
+                                                                  into = ( 'yes', 'no' ),
+                                                                  defaut = 'yes',
+                                                                  max = 1,
+                                                                  fr = "Ecart-type empirique",
+                                                                  ang = "Empirical standard deviation",
+                                                                  ),
+
+                              EmpiricalQuantile = SIMP ( statut = "o",
+                                                         typ = 'TXM',
+                                                         into = ( 'yes', 'no' ),
+                                                         defaut = 'yes',
+                                                         max = 1,
+                                                         fr = "Quantile empirique",
+                                                         ang = "Empirical quantile",
+                                                         ),
+
+                              EmpiricalQuantileSettings = BLOC ( condition = " EmpiricalQuantile in ( 'yes', ) ",
+
+                                  EmpiricalQuantile_Order = SIMP ( statut = "o",
+                                                                   typ = 'R',
+                                                                   defaut = 0.95,
+                                                                   max = 1,
+                                                                   val_min = 0.0,
+                                                                   val_max = 1.0,
+                                                                   fr = "Ordre du quantile empirique",
+                                                                   ang = "Empirical quantile order",
+                                                                   ),
+
+                              ), # Fin BLOC EmpiricalQuantileSettings
+
+                              AnalysedCorrelations = SIMP ( statut = "o",
+                                                            typ = 'TXM',
+                                                            into = ( 'yes', 'no' ),
+                                                            defaut = 'no',
+                                                            max = 1,
+                                                            fr = "Correlations analysees",
+                                                            ang = "Analysed correlations",
+                                                            ),
+
+                              KernelSmoothing = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Kernel smoothing de l'echantillon",
+                                                       ang = "Kernel smoothing of the sample",
+                                                       ),
+
+                      ), # Fin FACT Result
+                                                               
+                  ), # Fin BLOC RandomSamplingSettings
+
+  ), # Fin BLOC CentralUncertainty
+
+
+
+
+  ThresholdExceedence = BLOC ( condition = " Type in ( 'Threshold Exceedence', ) ",
+
+         Event =  FACT ( statut = "o",
+                         min = 1,
+                         max = 1,
+
+                         Threshold = SIMP ( statut = "o",
+                                            typ = "R",
+                                            max = 1,
+                                            fr = "Le seuil de defaillance",
+                                            ang = "Failure threshold",
+                                            ),
+
+                         ComparisonOperator = SIMP ( statut = "o",
+                                                     typ = "TXM",
+                                                     max = 1,
+                                                     into = ( "Less", "LessOrEqual", "Equal", "GreaterOrEqual", "Greater" ),
+                                                     fr = "Que faut-il ne pas depasser : un maximum ou un minimum",
+                                                     ang = "What is the failure threshold : maximum or minimum",
+                                                     ),
+         ), # Fin FACT Event
+                         
+
+         Method = SIMP ( statut = "o",
+                         typ = "TXM",
+                         into = ( "Simulation", "Analytical" ),
+                         fr = "Methode",
+                         ang = "Method",
+                         ),
+
+         SimulationSettings = BLOC ( condition = " Method in ( 'Simulation', ) ",
+
+               Algorithm = SIMP ( statut = "o",
+                                  typ = "TXM",
+                                  into = ( "MonteCarlo", "LHS", "ImportanceSampling" ),
+                                  fr = "Algorithme de simulation",
+                                  ang = "Simulation algorithm",
+                                  ),
+
+                                 
+               RandomGenerator = FACT ( statut = "o",
+                                        min = 1,
+                                        max = 1,
+
+                           SeedToBeSet = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "La racine du generateur aleatoire doit-elle etre positionnee ?",
+                                                ang = "Does the random generator seed need to be set ?",
+                                                ),
+
+                           SeedSettings = BLOC ( condition = " SeedToBeSet in ( 'yes', ) ",
+
+                                                 RandomGeneratorSeed = SIMP ( statut = "o",
+                                                                              typ = "I",
+                                                                              max = 1,
+                                                                              fr = "Racine du generateur aleatoire",
+                                                                              ang = "Random generator seed",
+                                                                              ),
+
+                                               ), # Fin BLOC SeedSettings
+
+               ), # Fin FACT RandomGenerator
+
+
+               BlockSize = SIMP ( statut = "f",
+                                  typ = "I",
+                                  max = 1,
+                                  val_min = 1,
+                                  defaut = 1,
+                                  fr = "Nombre de calculs realises en bloc",
+                                  ang = "Number of computations as a block",
+                                  ),
+
+               MaximumOuterSampling = SIMP ( statut = "o",
+                                             typ = "I",
+                                             max = 1,
+                                             val_min = 1,
+                                             fr = "Maximum d'iterations externes",
+                                             ang = "Maximum outer Sampling value",
+                                             ),
+
+               MaximumCoefficientOfVariation = SIMP ( statut = "f",
+                                                      typ = "R",
+                                                      max = 1,
+                                                      defaut = 0.1,
+                                                      val_min = 0.0,
+                                                      fr = " maximum ...",
+                                                      ang = "Absolute maximum ...."
+                                                      ),
+
+               ImportanceSamplingSettings = BLOC ( condition = " Algorithm in ( 'ImportanceSampling', ) ",
+
+                            MeanVector = SIMP ( statut = "o",
+                                                typ = "R",
+                                                max = "**",
+                                                fr = "Moyenne",
+                                                ang = "Mean vector",
+                                                ),
+
+                            Correlation = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'Independent', 'Linear' ),
+                                                 defaut = 'Linear',
+                                                 max = 1,
+                                                 fr = "Le type de correlation entre les variables",
+                                                 ang = "Correlation between variables",
+                                                 ),
+
+               ), # Fin BLOC ImportanceSamplingSettings
+
+               Result = FACT ( statut = "o",
+                                      min = 1,
+                                      max = "**",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    StandardDeviation = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Ecart type",
+                                         ang = "Standard deviation",
+                                         ),
+
+                    ConfidenceInterval = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'yes',
+                                                max = 1,
+                                                fr = "Ecart-type empirique",
+                                                ang = "Empirical standard deviation",
+                                                ),
+
+                    ConfidenceIntervalSettings = BLOC ( condition = " ConfidenceInterval in ( 'yes', ) ",
+
+                          Level = SIMP ( statut = "o",
+                                         typ = 'R',
+                                         defaut = 0.9,
+                                         max = 1,
+                                         val_min = 0.0,
+                                         val_max = 1.0,
+                                         fr = "Niveau de confiance",
+                                         ang = "Confidence level",
+                                         ),
+                                                     
+                    ), # Fin BLOC ConfidenceIntervalSettings
+                               
+                    VariationCoefficient = SIMP ( statut = "o",
+                                                  typ = 'TXM',
+                                                  into = ( 'yes', 'no' ),
+                                                  defaut = 'yes',
+                                                  max = 1,
+                                                  fr = "Coefficient de variation",
+                                                  ang = "VariationCoefficient",
+                                                  ),
+
+                    IterationNumber = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Nombre d'iterations",
+                                             ang = "Iteration number",
+                                             ),
+
+                    ConvergenceGraph = SIMP ( statut = "o",
+                                             typ = 'TXM',
+                                             into = ( 'yes', 'no' ),
+                                             defaut = 'yes',
+                                             max = 1,
+                                             fr = "Graphe de convergence",
+                                             ang = "Convergence graph",
+                                             ),
+
+               ), # Fin FACT Result
+                                                               
+
+
+         ), # Fin BLOC SimulationSettings
+
+
+                               
+         AnalyticalSettings = BLOC ( condition = " Method in ( 'Analytical', ) ",
+
+                Approximation = SIMP ( statut = "o",
+                                       typ = "TXM",
+                                       defaut = "FirstOrder",
+                                       into = ( "FirstOrder", "SecondOrder" ),
+                                       max = 1,
+                                       fr = "Approximation",
+                                       ang = "Approximation",
+                                       ),
+
+                OptimizationAlgorithm = SIMP ( statut = "o",
+                                               typ = "TXM",
+                                               defaut = "Cobyla",
+                                               into = ( "Cobyla", "AbdoRackwitz" ),
+                                               max = 1,
+                                               fr = "Methode d'optimisation",
+                                               ang = "Optimisation method",
+                                               ),
+
+                                     
+                PhysicalStartingPoint = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = "**",
+                                               fr = "Point de demarrage de l'algorithme iteratif",
+                                               ang = "Initial point for iterative process",
+                                               ),
+
+                MaximumIterationsNumber = SIMP ( statut = "f",
+                                                 typ = "I",
+                                                 max = 1,
+                                                 val_min = 1,
+                                                 fr = "Nombre maximum d iterations",
+                                                 ang = "Maximum number of iterations",
+                                                 ),
+
+                                     
+                MaximumAbsoluteError = SIMP ( statut = "f",
+                                              typ = "R",
+                                              max = 1,
+                                              defaut = 1E-4,
+                                              val_min = 0.0,
+                                              fr = "Distance maximum absolue entre 2 iterations successifs",
+                                              ang = "Absolute maximum distance between 2 successive iterates",
+                                              ),
+
+                MaximumRelativeError = SIMP ( statut = "f",
+                                               typ = "R",
+                                               max = 1,
+                                               defaut = 1E-4,
+                                               val_min = 0.0,
+                                               fr = "Distance maximum relative entre 2 iterations successives",
+                                               ang = "Relative maximum distance between 2 successive iterates",
+                                               ),
+                                     
+                MaximumConstraintError = SIMP ( statut = "f",
+                                                typ = "R",
+                                                max = 1,
+                                                defaut = 1E-4,
+                                                val_min = 0.0,
+                                                fr = "Valeur maximum absolue de la fonction moins la valeur du niveau",
+                                                ang = "Maximum absolute value of the constraint function minus the level value",
+                                                ),
+
+                ImportanceSampling = SIMP ( statut = "o",
+                                            typ = 'TXM',
+                                            into = ( 'yes', 'no' ),
+                                            defaut = 'no',
+                                            max = 1,
+                                            fr = "Tirage d'importance au point de conception",
+                                            ang = "Importance sampling at design point",
+                                            ),
+
+                FirstOrder = BLOC ( condition = " Approximation in ( 'FirstOrder', ) ",
+
+                    Probability = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Probabiblite",
+                                         ang = "Probability",
+                                         ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    HasoferReliabilityIndex = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'yes',
+                                                 max = 1,
+                                                 fr = "Indice de fiabilite",
+                                                 ang = "Reliability index",
+                                                 ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            ImportanceFactorNumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             ImportanceFactorGraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            FORMEventProbabilitySensitivity = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            FORMEventProbabilitySensitivitySettings = BLOC ( condition = " FORMEventProbabilitySensitivity in ( 'yes', ) ",
+        
+                                    FORMEventProbabilitySensitivityNumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     FORMEventProbabilitySensitivityGraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC FORMEventProbabilitySensitivitySettings
+                                                         
+                            HasoferReliabilityIndexSensitivity = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSensitivitySettings = BLOC ( condition = " HasoferReliabilityIndexSensitivity in ( 'yes', ) ",
+        
+                                    HasoferReliabilityIndexSensitivityNumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     HasoferReliabilityIndexSensitivityGraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC FirstOrder
+
+
+                SecondOrder = BLOC ( condition = " Approximation in ( 'SecondOrder', ) ",
+
+
+                    TvedtApproximation = SIMP ( statut = "o",
+                                                typ = 'TXM',
+                                                into = ( 'yes', 'no' ),
+                                                defaut = 'no',
+                                                max = 1,
+                                                fr = "Approximation de Tvedt",
+                                                ang = "Tvedt approximation",
+                                                ),
+
+                    HohenBichlerApproximation = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'no',
+                                                       max = 1,
+                                                       fr = "Approximation de HohenBichler",
+                                                       ang = "HohenBichler approximation",
+                                                       ),
+
+                    BreitungApproximation = SIMP ( statut = "o",
+                                                   typ = 'TXM',
+                                                   into = ( 'yes', 'no' ),
+                                                   defaut = 'no',
+                                                   max = 1,
+                                                   fr = "Approximation de Breitung",
+                                                   ang = "Breitung approximation",
+                                                   ),
+
+                    DesignPoint = SIMP ( statut = "o",
+                                         typ = 'TXM',
+                                         into = ( 'yes', 'no' ),
+                                         defaut = 'yes',
+                                         max = 1,
+                                         fr = "Point de conception",
+                                         ang = "Design point",
+                                         ),
+
+                    ImportanceFactor = SIMP ( statut = "o",
+                                              typ = 'TXM',
+                                              into = ( 'yes', 'no' ),
+                                              defaut = 'no',
+                                              max = 1,
+                                              fr = "Facteur d'importance pour variable de sortie scalaire",
+                                              ang = "ImportanceFactor",
+                                              ),
+
+                    ImportanceFactorSettings = BLOC ( condition = " ImportanceFactor in ( 'yes', ) ",
+
+                            ImportanceFactorNumericalResults  = SIMP ( statut = "o",
+                                                       typ = 'TXM',
+                                                       into = ( 'yes', 'no' ),
+                                                       defaut = 'yes',
+                                                       max = 1,
+                                                       fr = "Resultats numeriques",
+                                                       ang = "NumericalResults",
+                                                       ),
+
+                             ImportanceFactorGraphicalResults  = SIMP ( statut = "o",
+                                                        typ = 'TXM',
+                                                        into = ( 'yes', 'no' ),
+                                                        defaut = 'no',
+                                                        max = 1,
+                                                        fr = "Resultats graphiques",
+                                                        ang = "GraphicalResults",
+                                                        ),
+
+                    ), # Fin BLOC ImportanceFactorSettings
+
+                    SensitivityAnalysis = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Analyse de sensibilite",
+                                                 ang = "Sensitivity analysis",
+                                                 ),
+
+                    SensitivityAnalysisSettings = BLOC ( condition = " SensitivityAnalysis in ( 'yes', ) ",
+
+                            HasoferReliabilityIndexSensitivity = SIMP ( statut = "o",
+                                                             typ = 'TXM',
+                                                             into = ( 'yes', 'no' ),
+                                                             defaut = 'no',
+                                                             max = 1,
+                                                             fr = "Indice de fiabilite de Hasofer",
+                                                             ang = "Hasofer reliability index",
+                                                             ),
+        
+                            HasoferReliabilityIndexSensitivitySettings = BLOC ( condition = " HasoferReliabilityIndexSensitivity in ( 'yes', ) ",
+        
+                                    HasoferReliabilityIndexSensitivityNumericalResults  = SIMP ( statut = "o",
+                                                               typ = 'TXM',
+                                                               into = ( 'yes', 'no' ),
+                                                               defaut = 'yes',
+                                                               max = 1,
+                                                               fr = "Resultats numeriques",
+                                                               ang = "NumericalResults",
+                                                               ),
+        
+                                     HasoferReliabilityIndexSensitivityGraphicalResults  = SIMP ( statut = "o",
+                                                                typ = 'TXM',
+                                                                into = ( 'yes', 'no' ),
+                                                                defaut = 'no',
+                                                                max = 1,
+                                                                fr = "Resultats graphiques",
+                                                                ang = "GraphicalResults",
+                                                                ),
+
+                            ), # Fin BLOC HasoferReliabilityIndexSettings
+                                                         
+                    ), # Fin BLOC SensitivityAnalysisSettings
+
+                    FunctionCallsNumber = SIMP ( statut = "o",
+                                                 typ = 'TXM',
+                                                 into = ( 'yes', 'no' ),
+                                                 defaut = 'no',
+                                                 max = 1,
+                                                 fr = "Nombre d'appels a la fonction",
+                                                 ang = "Function calls number",
+                                                 ),
+
+
+                ), # Fin BLOC SecondOrder
+
+
+                                     
+        ), # Fin BLOC AnalyticalSettings
+
+
+                               
+  ), # Fin BLOC ThresholdExceedence
+
+
+
+) # Fin PROC CRITERIA
+
+
+
+
+
+
+
diff --git a/Openturns_Study/catalogues_openturns.ini b/Openturns_Study/catalogues_openturns.ini
new file mode 100644 (file)
index 0000000..7cd5b3c
--- /dev/null
@@ -0,0 +1,12 @@
+# Choix des catalogues
+import os
+#rep_cata=os.path.dirname(os.path.abspath(__file__))
+rep_cata=os.getcwd()
+
+catalogues = (
+# (code,version,catalogue,formatIn,formatOut)
+  #('OPENTURNS_WRAPPER','V1',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns_wrapper','wrapper'),
+  ('OPENTURNS_STUDY','V3',os.path.join(rep_cata,'OpenTURNS_Cata_Study_V3.py'),'openturns_study','wrapper'),
+  #('OPENTURNS','Wrapper',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns'),
+)
+
diff --git a/Openturns_Study/configuration.py b/Openturns_Study/configuration.py
new file mode 100644 (file)
index 0000000..32d6ff7
--- /dev/null
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module sert pour charger les paramètres de configuration d'EFICAS
+"""
+# Modules Python
+print "passage dans la surcharge de configuration pour OTW"
+import os, sys, string, types, re
+import traceback
+from PyQt4.QtGui  import *
+
+# Modules Eficas
+from Editeur import utils
+
+class CONFIG:
+
+  #-----------------------------------
+  def __init__(self,appli,repIni):
+  #-----------------------------------
+
+  # Classe de base permettant de lire, afficher
+  # et sauvegarder les fichiers utilisateurs 
+  # On a deux directories : la directory generale (Repertoire d instal + Nom du code
+  #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
+  # et la directorie de l utilisateur 
+  #                      HOME/.Eficas_Openturns
+  # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement 
+  # par celui de l utilisateur
+  # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
+  # dans le fichier general sinon
+      self.appli   = appli  
+      self.code    = appli.code
+      self.salome  = appli.salome
+      self.repIni = repIni
+      self.fic_prefs ="prefs.py"
+
+      if self.appli: 
+         self.parent=appli.top
+         #self.appli.format_fichier="openturns_study"
+      else:         self.parent=None
+
+
+      self.labels=("OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir")
+
+      # Valeurs par defaut
+      self.rep_user     = os.path.join(os.environ['HOME'],'.Eficas_Openturns')
+      self.initialdir   = self.rep_user
+      self.path_doc     = self.rep_user
+      self.savedir      = self.rep_user
+      self.exec_acrobat = self.rep_user
+      #Lecture des fichiers utilisateurs
+      self.lecture_fichier_ini_standard()
+      self.lecture_fichier_ini_utilisateur()
+      self.lecture_catalogues()
+      print self.initialdir
+
+  #--------------------------------------
+  def lecture_fichier_ini_standard(self):
+  #--------------------------------------
+  # Verifie l'existence du fichier "standard"
+  # appelle la lecture de ce fichier
+      self.fic_ini = os.path.join(self.repIni,self.fic_prefs)
+      if not os.path.isfile(self.fic_ini):
+          QMessageBox.critical( None, "Import du fichier de Configuration", 
+                               "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" )
+          sys.exit(0)
+      import prefs
+      for k in self.labels :
+         try :
+            valeur=getattr(prefs,k)
+            setattr(self,k,valeur)
+         except :
+            pass
+              
+
+  #--------------------------------------
+  def lecture_fichier_ini_utilisateur(self):
+  #--------------------------------------
+  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs)
+      #if not os.path.isfile(self.fic_ini_utilisateur+".py"):
+      if not os.path.isfile(self.fic_ini_utilisateur):
+        return
+      from utils import read_file
+      txt = utils.read_file(self.fic_ini_utilisateur)
+      from styles import style
+      d=locals()
+      try:
+         exec txt in d
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )
+         sys.exit(0)
+      for k in self.labels :
+         try :
+            setattr(self,k,d[k])
+         except :
+            pass
+
+
+
+  #--------------------------------------
+  def lecture_catalogues(self):
+  #--------------------------------------
+      rep_mat=" " # Compatbilite Aster
+      fic_cata  ="catalogues_openturns.ini"
+      fic_ini = os.path.join(self.repIni,fic_cata)
+      fic_user= os.path.join(self.rep_user,fic_cata)
+      if  os.path.isfile(fic_user):
+          fichier = fic_user
+      else  :
+          fichier = fic_ini
+          if not os.path.isfile(fic_ini) :
+             QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", 
+                       "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )
+             sys.exit(0)
+
+      from utils import read_file
+      txt = utils.read_file(fichier)
+      d=locals()
+      try:
+         exec txt in d
+         self.catalogues=d["catalogues"]
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + fichier )
+         sys.exit(0)
+
+
+
+  #--------------------------------------
+  def save_params(self):
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
+       print "a ecrire PNPNPN"
+#      l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc')
+#      texte=""
+#      for clef in l_param :
+#          if hasattr(self,clef):
+#             valeur=getattr(self,clef)
+#             texte= texte + clef+"    = " + repr(valeur) +"\n"
+#
+#
+#      # recuperation des repertoires materiaux
+#      try :
+#          for item in self.catalogues :
+#              try :
+#                  (code,version,cata,format,defaut)=item
+#              except :
+#                  (code,version,cata,format)=item
+#              codeSansPoint=re.sub("\.","",version)
+#              chaine="rep_mat_"+codeSansPoint
+#              if hasattr(self,chaine):
+#                 valeur=getattr(self,chaine)
+#                 texte= texte + chaine+"      = '" + str(valeur) +"'\n"
+#      except :
+#             pass
+#
+#      f=open(self.fic_ini_utilisateur,'w+')
+#      f.write(texte) 
+#      f.close()
+#
+
+
+def make_config(appli,rep):
+    return CONFIG(appli,rep)
+
+def make_config_style(appli,rep):
+    return None
+
+
diff --git a/Openturns_Study/ops.py b/Openturns_Study/ops.py
new file mode 100644 (file)
index 0000000..28db9a9
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- coding: iso-8859-1 -*-
+
+def INCLUDE(self,FileName,**args):
+   """ 
+       Fonction sd_prod pour la macro INCLUDE
+   """
+   if hasattr(self,'change_fichier'):
+       delattr(self,'change_fichier')
+       delattr(self,'fichier_ini')
+
+   self.make_include2(fichier=FileName)
+
+def INCLUDE_context(self,d):
+   """ 
+       Fonction op_init pour macro INCLUDE
+   """
+   for k,v in self.g_context.items():
+      print "IDM: ops.py k=%s v=%s" % (k,v)
+      d[k]=v
+
+
diff --git a/Openturns_Study/prefs.py b/Openturns_Study/prefs.py
new file mode 100644 (file)
index 0000000..5fff47f
--- /dev/null
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os, sys
+# Les variables pouvant positionnees sont :
+# "CODE_PATH_SURCHARGE","DTDDirectory","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata"
+print "import des prefs de OPENTURNS_STUDY"
+
+code = "OPENTURNS_STUDY"
+
+# REPINI sert à localiser le fichier 
+# initialdir sert comme directory initial des QFileDialog
+# positionnee a repin au debut mise a jour dans configuration
+REPINI=os.path.dirname(os.path.abspath(__file__))
+initialdir=REPINI 
+
+# INSTALLDIR sert à localiser l'installation d'Eficas
+INSTALLDIR=os.path.join(REPINI,'..')
+
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+# lang indique la langue utilisée pour les chaines d'aide : fr ou ang
+lang='fr'
+encoding='iso-8859-1'
+
+# Acces a la documentation
+rep_cata        = INSTALLDIR
+path_doc        = os.path.join(rep_cata,'Doc')
+exec_acrobat    = "/usr/bin/xpdf"
+
+# Repertoire initial
+DTDDirectory="/local00/home/dutka/OpenTURNS/dutka/devel/build/install/share/openturns/wrappers/"
+
+# Choix des catalogues
+sys.path[:0]=[INSTALLDIR]
+
diff --git a/Openturns_Study/properties.py b/Openturns_Study/properties.py
new file mode 100644 (file)
index 0000000..8ba0ed7
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# RESPONSABLE D6BHHHH J-P.LEFEBVRE
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# ======================================================================
+#     IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
+#     DE LA VERSION DU CODE_ASTER ASSOCIE
+#----------------------------------------------------------------------
+version = "7.1.0"
+date = "23/04/2003"
diff --git a/Openturns_Study/qtEficas_openturns_study.py b/Openturns_Study/qtEficas_openturns_study.py
new file mode 100755 (executable)
index 0000000..76e0ad8
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+"""
+   Ce module sert à lancer EFICAS configuré pour Openturns
+"""
+# Modules Python
+
+# Modules Eficas
+import prefs
+prefs.code="OPENTURNS_STUDY"
+from InterfaceQT4 import eficas_go
+
+eficas_go.lance_eficas(code=prefs.code)
diff --git a/Openturns_Study/sdistOTqt.py b/Openturns_Study/sdistOTqt.py
new file mode 100644 (file)
index 0000000..acf75c2
--- /dev/null
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+"""
+     Ce module sert à construire les distributions d'EFICAS pour Openturns
+     en fonction du tag CVS courant
+     Les distributions sont :
+      - un tar.gz pour UNIX ne contenant pas mxTextTools
+     L'utilisation de ce module est la suivante :
+      1- Se mettre dans un répertoire de travail
+      2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
+      3- Exporter les sources d'EficasV1 par la commande :
+            cvs export -r TAG -d Eficas_export EficasV1
+         ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
+      5- Aller dans le répertoire Eficas_export
+      6- Executer le script sdist.py
+             python sdist.py
+         Ce qui a pour effet de creer un repertoire dist contenant la distribution
+         et de la copier dans le répertoire indiqué par dir_download s'il est accessible
+
+"""
+import os,shutil,glob,sys
+import types
+
+nom_distrib="QTEficasOpenturns_V1_0"
+path_distrib=os.path.join("dist",nom_distrib)
+path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
+dir_download= "/home/eficas/WWW/telechargement/eficas"
+
+def main():
+   if os.path.isdir('dist'):shutil.rmtree('dist')
+
+   copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS'])
+
+   copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
+   copyfiles('../InterfaceTK',os.path.join(path_distrib,'InterfaceTK'),['*.py','faqs.txt'])
+   copyfiles('../InterfaceQT',os.path.join(path_distrib,'InterfaceQT'),['*.py','faqs.txt'])
+   copyfiles('../Ui',os.path.join(path_distrib,'Ui'),['*.ui','makefile'])
+   copyfiles('../Openturns',os.path.join(path_distrib,'Openturns'),['*.py','*.ini'])
+   copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
+   copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
+   copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Validation'),['*.py'])
+   # AIDE
+   copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
+   copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
+   copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS'])
+   copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt'])
+   #                           ______________________
+
+   copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
+   copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
+   copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png'])
+   copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*'])
+   copyfiles('../Editeur/Patrons/OPENTURNS',os.path.join(path_distrib,'Editeur','Patrons','OPENTURNS'),['*.com*'])
+
+   copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py'])
+
+   
+   tarball= maketarball('dist',nom_distrib,nom_distrib)
+   try:
+      shutil.copy(tarball,dir_download)
+   except:
+      print "Repertoire de download inconnu : ",dir_download
+
+
+
+def make_dir(dir_cible):
+   if type(dir_cible) is not types.StringType:
+      raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
+   head,tail=os.path.split(dir_cible)
+   tails=[tail]
+   while head and tail and not os.path.isdir(head):
+      head,tail=os.path.split(head)
+      tails.insert(0, tail)
+
+   for d in tails:
+      head = os.path.join(head, d)
+      if not os.path.isdir(head):os.mkdir(head)
+
+
+def copyfiles(dir_origin,dir_cible,listfiles):
+   if not os.path.isdir(dir_cible):make_dir(dir_cible)
+   for glob_files in listfiles:
+      for file in glob.glob(os.path.join(dir_origin,glob_files)):
+         shutil.copy(file,dir_cible)
+
+
+def maketarball(dir_trav,dir_cible,nom_tar):
+   prev=os.getcwd()
+   print prev
+   os.chdir(dir_trav)
+   os.system("tar -cf "+nom_tar+".tar "+dir_cible)
+   os.system("gzip -f9 "+nom_tar+".tar ")
+   os.chdir(prev)
+   return os.path.join(dir_trav,nom_tar+".tar.gz")
+
+
+main()
+
diff --git a/Openturns_Study/style.py b/Openturns_Study/style.py
new file mode 100644 (file)
index 0000000..7da9d53
--- /dev/null
@@ -0,0 +1 @@
+# Necessaire pour compatibilite avec Aster
diff --git a/Openturns_Study/test/MinMax_ExpPlane.comm b/Openturns_Study/test/MinMax_ExpPlane.comm
new file mode 100644 (file)
index 0000000..6f671ab
--- /dev/null
@@ -0,0 +1,17 @@
+
+LOG(DebugMessages='no',
+    WrapperMessages='no',
+    UserMessages='no',
+    InfoMessages='yes',
+    WarningMessages='yes',
+    ErrorMessages='yes',);
+
+MODEL(Name='poutre',);
+
+CRITERIA(Type='Min/Max',
+         Method='Experiment Plane',
+         ExperimentPlane='Axial',
+         Levels=(1.0,2.0,5.0,),
+         UnitsPerDimension=(100.0,5.0,0.5,1e-07,),
+         Center=(3000000000.0,300.0,2.5,4e-06,),
+         Result='Min/Max',);
diff --git a/Openturns_Study/test/MinMax_ExpPlane.py b/Openturns_Study/test/MinMax_ExpPlane.py
new file mode 100644 (file)
index 0000000..098c853
--- /dev/null
@@ -0,0 +1,68 @@
+#! /usr/bin/env python
+
+# Chargement du module systeme
+import sys
+sys.path.append( '/local00/home/dutka/OpenTURNS/trunk/build/install/lib/python2.4/site-packages/openturns' )
+
+# Chargement du module Open TURNS
+from openturns import *
+
+# Definit le niveau d'affichage de la log
+flags = Log.NONE
+flags = flags + Log.WARN
+flags = flags + Log.ERROR
+flags = flags - Log.WRAPPER
+flags = flags + Log.INFO
+flags = flags - Log.USER
+flags = flags - Log.DBG
+Log.Show( flags )
+
+# Etude 'Min/Max'
+# Charge le modele physique
+model = NumericalMathFunction( 'poutre' )
+n = model.getInputNumericalPointDimension()
+
+# Etude par plan d'experience
+# Definit les niveaux de la structure de grille
+levels = NumericalPoint( 3 )
+levels[0] = 1
+levels[1] = 2
+levels[2] = 5
+
+# Cree le plan d'experience centre reduit
+myCenteredReductedGrid = Axial(n, levels)
+myExperimentPlane = myCenteredReductedGrid.generate()
+
+# Definit les facteurs d'echelle dans chaque direction
+scaledVector = NumericalPoint( n )
+scaledVector[0] = 100
+scaledVector[1] = 5
+scaledVector[2] = 0.5
+scaledVector[3] = 1e-07
+myExperimentPlane.scale( scaledVector )
+
+# Definit le vecteur de translation
+translationVector = NumericalPoint( n )
+translationVector[0] = 3e+09
+translationVector[1] = 300
+translationVector[2] = 2.5
+translationVector[3] = 4e-06
+myExperimentPlane.translate( translationVector )
+
+
+inputSample = myExperimentPlane
+
+# Calcul
+outputSample = model( inputSample )
+
+# Resultats
+minValue = outputSample.getMin()
+maxValue = outputSample.getMax()
+
+print 'minValue = ', minValue
+print 'maxValue = ', maxValue
+
+
+
+# Terminaison du fichier
+sys.exit( 0 )
diff --git a/Openturns_Study/test/MinMax_RandomSampling.comm b/Openturns_Study/test/MinMax_RandomSampling.comm
new file mode 100644 (file)
index 0000000..e9ed474
--- /dev/null
@@ -0,0 +1,30 @@
+
+LOG(DebugMessages='no',
+    WrapperMessages='no',
+    UserMessages='no',
+    InfoMessages='yes',
+    WarningMessages='yes',
+    ErrorMessages='yes',);
+
+MODEL(Name='poutre',);
+
+L_E=DISTRIBUTION(Kind='Normal',
+                 Mu=0.1,
+                 Sigma=0.1,);
+
+L_F=DISTRIBUTION(Kind='Exponential',
+                 Lambda=1.0,
+                 Gamma=2.0,);
+
+L_L=DISTRIBUTION(Kind='MultiNomial',
+                 N=1,
+                 Values=1.0,);
+
+L_I=DISTRIBUTION(Kind='Uniform',
+                 A=10.0,
+                 B=20.0,);
+
+CRITERIA(Type='Min/Max',
+         Method='Random Sampling',
+         PointsNumber=1000,
+         Result='Min/Max',);
diff --git a/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V1.py
new file mode 100644 (file)
index 0000000..7bad7c1
--- /dev/null
@@ -0,0 +1,216 @@
+# -*- coding: utf-8 -*-
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'OPENTURNS_WRAPPER',
+                 execmodul = None,
+                 regles = ( AU_MOINS_UN ( 'WRAPPER' ), ),
+                 ) # Fin JDC_CATA
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+
+#================================
+# 2. Definition des variables
+#================================
+
+VARIABLEPOOL = PROC ( nom = "VARIABLEPOOL",
+                       op = None,
+                       docu = "",
+                       fr = "L'ensemble des variables probabilistes",
+                       ang = "The pool of probabilistic variables",
+
+                       
+  Variables = FACT ( statut = "o",
+                     min = 1,
+                     max = "**",
+
+
+
+                     Name = SIMP ( statut = "o",
+                                   typ = "TXM",
+                                   max = 1,
+                                   fr = "Nom de la variable, identique au nom dans le solver.",
+                                   ang = "Name of the variable, identical to the name in solver."
+                                   ),
+
+                     Type = SIMP ( statut = "o",
+                                   typ = "TXM",
+                                   max = 1,
+                                   into = ( "in", "out", ),
+                                   defaut = "in",
+                                   fr = "variable d'entree ou de sortie du solver",
+                                   ang = "Input or Output variable",
+                                   ),
+
+                     Unit = SIMP ( statut = "f",
+                                   typ = "TXM",
+                                   max = 1,
+                                   fr = "Unite",
+                                   ang = "Unit",
+                                   ),
+
+                     Comment = SIMP ( statut = "f",
+                                      typ = "TXM",
+                                      max = 1,
+                                      fr = "Commentaire",
+                                      ang = "Comment",
+                                      ),
+
+                     Regexp = SIMP ( statut = "f",
+                                     typ = "TXM",
+                                     max = 1,
+                                     fr = "Expression reguliere",
+                                     ang = "Regular expression",
+                                     ),
+
+                     Format = SIMP ( statut = "f",
+                                     typ = "TXM",
+                                     max = 1,
+                                     fr = "Format d'ecriture",
+                                     ang = "Format",
+                                     ),
+
+
+                      ), # Fin FACT Variables
+
+) # Fin PROC VARIABLEPOOL
+
+
+#================================
+# Definition des parametres du wrapper
+#================================
+
+# Nota : les variables de type PROC doivent etre en majuscules !
+WRAPPER = PROC ( nom = "WRAPPER",
+                 op = None,
+                 docu = "",
+                 fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.",
+                 ang = "Writes the configuration file for OPENTURNS.",
+
+
+    WrapperPath = SIMP ( statut = "o",
+                         typ = "TXM",
+                         max = 1,
+                         fr = "Chemin d acces au wrapper",
+                         ang = "Wrapper library path",
+                         ),
+
+    FunctionName = SIMP ( statut = "o",
+                          typ = "TXM",
+                          max = 1,
+                          fr = "Nom de la fonction dans le wrapper",
+                          ang = "Function's name in wrapper",
+                          ),
+
+    GradientName = SIMP ( statut = "f",
+                          typ = "TXM",
+                          max = 1,
+                          fr = "Nom du gradient dans le wrapper",
+                          ang = "Gradient's name in wrapper",
+                          ),
+
+    HessianName = SIMP ( statut = "f",
+                         typ = "TXM",
+                         max = 1,
+                         fr = "Nom du hessian dans le wrapper",
+                         ang = "Hessian's name in wrapper",
+                         ),
+
+    WrapCouplingMode = SIMP ( statut = "o",
+                              typ = "TXM",
+                              max = 1,
+                              into = ( "static-link", "dynamic-link", "fork", ),
+                              fr = "Mode de couplage du solver",
+                              ang = "Solver coupling mode",
+                              ),
+
+    Fork = BLOC ( condition = " WrapCouplingMode in ( 'fork', ) ",
+                    
+                  Command = SIMP ( statut = "o",
+                                   max = 1,
+                                   typ = "TXM",
+                                   fr = "Chemin du solver",
+                                   ang = "solver path",
+                                   ),
+                  ), # Fin BLOC Fork
+
+    State = SIMP ( statut = "f",
+                   typ = "TXM",
+                   max = 1,
+                   into = ( "shared", "specific" ),
+                   fr = "Partage de l'etat interne entre les fonctions",
+                   ang = "Internal state sharing",
+                   ),
+
+    InDataTransfer = SIMP ( statut = "o",
+                            typ = "TXM",
+                            max = 1,
+                            into = ( "files", "arguments", ),
+                            fr = "Mode de transfert des donnees d'entree",
+                            ang = "Input transfering mode",
+                            ),
+
+    OutDataTransfer = SIMP ( statut = "o",
+                             typ = "TXM",
+                             max = 1,
+                             into = ( "files", "arguments",  ),
+                             fr = "Mode de transfert des donnees de sortie",
+                             ang = "Output transfering mode",
+                             ),
+
+
+
+
+  Files = FACT ( statut = "f",
+                 min = 1,
+                 max = "**",
+
+                 Id = SIMP ( statut = "o",
+                             typ = "TXM",
+                             max = 1,
+                             fr = "Identificateur du  fichier",
+                             ang = "File id",
+                             ),
+
+                 Type = SIMP ( statut = "o",
+                               typ = "TXM",
+                               max = 1,
+                               into = ( "in", "out", ),
+                               fr = "Fichier d entree ou de sortie du solveur ?",
+                               ang = "Input or Output file ?",
+                               ),
+
+                 Name = SIMP ( statut = "f",
+                               typ = "TXM",
+                               max = 1,
+                               fr = "Nom du fichier",
+                               ang = "File name",
+                               ),
+
+                 Path = SIMP ( statut = "o",
+                               typ = "TXM",
+                               max = 1,
+                               fr = "Chemin du fichier",
+                               ang = "Path file ",
+                               ),
+
+                 Subst = SIMP ( statut = "f",
+                                typ = "TXM",
+                                max = "**",
+                                fr = "Liste de variables",
+                                ang = "List",
+                                ),
+
+                 ), # Fin FACT Files
+
+) # Fin PROC WRAPPER
diff --git a/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py b/Openturns_Wrapper/OpenTURNS_Cata_Wrapper_V2.py
new file mode 100644 (file)
index 0000000..a3895d3
--- /dev/null
@@ -0,0 +1,206 @@
+# -*- coding: utf-8 -*-
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+class variable(ASSD ) : pass
+
+
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'OPENTURNS_WRAPPER',
+                 execmodul = None,
+                 regles = ( AU_MOINS_UN ( 'WRAPPER' ), ),
+                 ) # Fin JDC_CATA
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+
+#================================
+# 2. Definition des variables
+#================================
+
+
+                       
+VARIABLE = OPER ( nom = "VARIABLE",
+                      sd_prod = variable,
+                      op = None,
+                      fr = "Definitions des lois marginales utilisees par les variables d'entree",
+              
+
+                     Type = SIMP ( statut = "o",
+                                   typ = "TXM",
+                                   max = 1,
+                                   into = ( "in", "out", ),
+                                   defaut = "in",
+                                   fr = "variable d'entree ou de sortie du solver",
+                                   ang = "Input or Output variable",
+                                   ),
+
+                     Unit = SIMP ( statut = "f",
+                                   typ = "TXM",
+                                   max = 1,
+                                   fr = "Unite",
+                                   ang = "Unit",
+                                   ),
+
+                     Comment = SIMP ( statut = "f",
+                                      typ = "TXM",
+                                      max = 1,
+                                      fr = "Commentaire",
+                                      ang = "Comment",
+                                      ),
+
+                     Regexp = SIMP ( statut = "f",
+                                     typ = "TXM",
+                                     max = 1,
+                                     fr = "Expression reguliere",
+                                     ang = "Regular expression",
+                                     ),
+
+                     Format = SIMP ( statut = "f",
+                                     typ = "TXM",
+                                     max = 1,
+                                     fr = "Format d'ecriture",
+                                     ang = "Format",
+                                     ),
+
+
+             ) # Fin FACT Variables
+#
+
+
+#================================
+# Definition des parametres du wrapper
+#================================
+
+# Nota : les variables de type PROC doivent etre en majuscules !
+WRAPPER = PROC ( nom = "WRAPPER",
+                 op = None,
+                 docu = "",
+                 fr = "Mise en donnee pour le fichier de configuration de OPENTURNS.",
+                 ang = "Writes the configuration file for OPENTURNS.",
+
+
+    WrapperPath = SIMP ( statut = "o",
+                         typ = "TXM",
+                         max = 1,
+                         fr = "Chemin d acces au wrapper",
+                         ang = "Wrapper library path",
+                         ),
+
+    FunctionName = SIMP ( statut = "o",
+                          typ = "TXM",
+                          max = 1,
+                          fr = "Nom de la fonction dans le wrapper",
+                          ang = "Function's name in wrapper",
+                          ),
+
+    GradientName = SIMP ( statut = "f",
+                          typ = "TXM",
+                          max = 1,
+                          fr = "Nom du gradient dans le wrapper",
+                          ang = "Gradient's name in wrapper",
+                          ),
+
+    HessianName = SIMP ( statut = "f",
+                         typ = "TXM",
+                         max = 1,
+                         fr = "Nom du hessian dans le wrapper",
+                         ang = "Hessian's name in wrapper",
+                         ),
+
+    WrapCouplingMode = SIMP ( statut = "o",
+                              typ = "TXM",
+                              max = 1,
+                              into = ( "static-link", "dynamic-link", "fork", ),
+                              defaut = "fork",
+                              fr = "Mode de couplage du solver",
+                              ang = "Solver coupling mode",
+                              ),
+
+    Fork = BLOC ( condition = " WrapCouplingMode in ( 'fork', ) ",
+                    
+                  Command = SIMP ( statut = "o",
+                                   max = 1,
+                                   typ = "TXM",
+                                   fr = "Chemin du solver",
+                                   ang = "solver path",
+                                   ),
+                  ), # Fin BLOC Fork
+
+    State = SIMP ( statut = "f",
+                   typ = "TXM",
+                   max = 1,
+                   into = ( "shared", "specific" ),
+                   fr = "Partage de l'etat interne entre les fonctions",
+                   ang = "Internal state sharing",
+                   ),
+
+    InDataTransfer = SIMP ( statut = "o",
+                            typ = "TXM",
+                            max = 1,
+                            into = ( "files", "arguments", ),
+                            fr = "Mode de transfert des donnees d'entree",
+                            ang = "Input transfering mode",
+                            ),
+
+    OutDataTransfer = SIMP ( statut = "o",
+                             typ = "TXM",
+                             max = 1,
+                             into = ( "files", "arguments",  ),
+                             fr = "Mode de transfert des donnees de sortie",
+                             ang = "Output transfering mode",
+                             ),
+
+
+
+
+  Files = FACT ( statut = "f",
+                 min = 1,
+                 max = "**",
+
+                 Id = SIMP ( statut = "o",
+                             typ = "TXM",
+                             max = 1,
+                             fr = "Identificateur du  fichier",
+                             ang = "File id",
+                             ),
+
+                 Type = SIMP ( statut = "o",
+                               typ = "TXM",
+                               max = 1,
+                               into = ( "in", "out", ),
+                               fr = "Fichier d entree ou de sortie du solveur ?",
+                               ang = "Input or Output file ?",
+                               ),
+
+                 Name = SIMP ( statut = "f",
+                               typ = "TXM",
+                               max = 1,
+                               fr = "Nom du fichier",
+                               ang = "File name",
+                               ),
+
+                 Path = SIMP ( statut = "o",
+                               typ = "TXM",
+                               max = 1,
+                               fr = "Chemin du fichier",
+                               ang = "Path file ",
+                               ),
+
+                 Subst = SIMP ( statut = "f",
+                                typ = "TXM",
+                                max = "**",
+                                fr = "Liste de variables",
+                                ang = "List",
+                                ),
+
+                 ), # Fin FACT Files
+
+) # Fin PROC WRAPPER
diff --git a/Openturns_Wrapper/catalogues_openturns.ini b/Openturns_Wrapper/catalogues_openturns.ini
new file mode 100644 (file)
index 0000000..9593c04
--- /dev/null
@@ -0,0 +1,12 @@
+# Choix des catalogues
+import os
+#rep_cata=os.path.dirname(os.path.abspath(__file__))
+rep_cata=os.getcwd()
+
+catalogues = (
+# (code,version,catalogue,formatIn,formatOut)
+  #('OPENTURNS_WRAPPER','V1',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns_wrapper','wrapper'),
+  ('OPENTURNS_WRAPPER','V2',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V2.py'),'openturns_wrapper','wrapper'),
+  #('OPENTURNS','Wrapper',os.path.join(rep_cata,'OpenTURNS_Cata_Wrapper_V1.py'),'openturns'),
+)
+
diff --git a/Openturns_Wrapper/configuration.py b/Openturns_Wrapper/configuration.py
new file mode 100644 (file)
index 0000000..4fc3ef1
--- /dev/null
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module sert pour charger les paramètres de configuration d'EFICAS
+"""
+# Modules Python
+print "passage dans la surcharge de configuration pour OTW"
+import os, sys, string, types, re
+import traceback
+from PyQt4.QtGui  import *
+
+# Modules Eficas
+from Editeur import utils
+
+class CONFIG:
+
+  #-----------------------------------
+  def __init__(self,appli,repIni):
+  #-----------------------------------
+
+  # Classe de base permettant de lire, afficher
+  # et sauvegarder les fichiers utilisateurs 
+  # On a deux directories : la directory generale (Repertoire d instal + Nom du code
+  #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
+  # et la directorie de l utilisateur 
+  #                      HOME/.Eficas_Openturns
+  # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement 
+  # par celui de l utilisateur
+  # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
+  # dans le fichier general sinon
+      self.appli   = appli  
+      self.code    = appli.code
+      self.salome  = appli.salome
+      self.repIni = repIni
+      self.fic_prefs ="prefs.py"
+
+      if self.appli: 
+         self.parent=appli.top
+      else:         self.parent=None
+
+
+      self.labels=("OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir")
+
+      # Valeurs par defaut
+      self.rep_user     = os.path.join(os.environ['HOME'],'.Eficas_Openturns')
+      self.initialdir   = self.rep_user
+      self.path_doc     = self.rep_user
+      self.savedir      = self.rep_user
+      self.exec_acrobat = self.rep_user
+      #Lecture des fichiers utilisateurs
+      self.lecture_fichier_ini_standard()
+      self.lecture_fichier_ini_utilisateur()
+      self.lecture_catalogues()
+      print self.initialdir
+
+  #--------------------------------------
+  def lecture_fichier_ini_standard(self):
+  #--------------------------------------
+  # Verifie l'existence du fichier "standard"
+  # appelle la lecture de ce fichier
+      self.fic_ini = os.path.join(self.repIni,self.fic_prefs)
+      if not os.path.isfile(self.fic_ini):
+          QMessageBox.critical( None, "Import du fichier de Configuration", 
+                               "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" )
+          sys.exit(0)
+      import prefs
+      for k in self.labels :
+         try :
+            valeur=getattr(prefs,k)
+            setattr(self,k,valeur)
+         except :
+            pass
+              
+
+  #--------------------------------------
+  def lecture_fichier_ini_utilisateur(self):
+  #--------------------------------------
+  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs)
+      #if not os.path.isfile(self.fic_ini_utilisateur+".py"):
+      if not os.path.isfile(self.fic_ini_utilisateur):
+        return
+      from utils import read_file
+      txt = utils.read_file(self.fic_ini_utilisateur)
+      from styles import style
+      d=locals()
+      try:
+         exec txt in d
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )
+         sys.exit(0)
+      for k in self.labels :
+         try :
+            setattr(self,k,d[k])
+         except :
+            pass
+
+
+
+  #--------------------------------------
+  def lecture_catalogues(self):
+  #--------------------------------------
+      rep_mat=" " # Compatbilite Aster
+      fic_cata  ="catalogues_openturns.ini"
+      fic_ini = os.path.join(self.repIni,fic_cata)
+      fic_user= os.path.join(self.rep_user,fic_cata)
+      if  os.path.isfile(fic_user):
+          fichier = fic_user
+      else  :
+          fichier = fic_ini
+          if not os.path.isfile(fic_ini) :
+             QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", 
+                       "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )
+             sys.exit(0)
+
+      from utils import read_file
+      txt = utils.read_file(fichier)
+      d=locals()
+      try:
+         exec txt in d
+         self.catalogues=d["catalogues"]
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + fichier )
+         sys.exit(0)
+
+
+
+  #--------------------------------------
+  def save_params(self):
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
+       print "a ecrire PNPNPN"
+#      l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc')
+#      texte=""
+#      for clef in l_param :
+#          if hasattr(self,clef):
+#             valeur=getattr(self,clef)
+#             texte= texte + clef+"    = " + repr(valeur) +"\n"
+#
+#
+#      # recuperation des repertoires materiaux
+#      try :
+#          for item in self.catalogues :
+#              try :
+#                  (code,version,cata,format,defaut)=item
+#              except :
+#                  (code,version,cata,format)=item
+#              codeSansPoint=re.sub("\.","",version)
+#              chaine="rep_mat_"+codeSansPoint
+#              if hasattr(self,chaine):
+#                 valeur=getattr(self,chaine)
+#                 texte= texte + chaine+"      = '" + str(valeur) +"'\n"
+#      except :
+#             pass
+#
+#      f=open(self.fic_ini_utilisateur,'w+')
+#      f.write(texte) 
+#      f.close()
+#
+
+
+def make_config(appli,rep):
+    return CONFIG(appli,rep)
+
+def make_config_style(appli,rep):
+    return None
+
+
diff --git a/Openturns_Wrapper/prefs.py b/Openturns_Wrapper/prefs.py
new file mode 100644 (file)
index 0000000..e314185
--- /dev/null
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os, sys
+# Les variables pouvant positionnees sont :
+# "CODE_PATH_SURCHARGE","OpenTURNS_path","rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata"
+print "import des prefs de OPENTURNS_WRAPPER"
+
+code = "OPENTURNS_WRAPPER"
+
+# REPINI sert à localiser le fichier 
+# initialdir sert comme directory initial des QFileDialog
+# positionnee a repin au debut mise a jour dans configuration
+REPINI=os.path.dirname(os.path.abspath(__file__))
+initialdir=REPINI 
+
+# INSTALLDIR sert à localiser l'installation d'Eficas
+INSTALLDIR=os.path.join(REPINI,'..')
+
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+# lang indique la langue utilisée pour les chaines d'aide : fr ou ang
+lang='fr'
+encoding='iso-8859-1'
+
+# Acces a la documentation
+rep_cata        = INSTALLDIR
+path_doc        = os.path.join(rep_cata,'Doc')
+exec_acrobat    = "/usr/bin/xpdf"
+
+# OpenTURNS Python module
+OpenTURNS_path="/opt/OpenTURNS/install/lib/python2.4/site-packages"
+
+# Choix des catalogues
+sys.path[:0]=[INSTALLDIR]
+sys.path.append( OpenTURNS_path )
+
+
diff --git a/Openturns_Wrapper/properties.py b/Openturns_Wrapper/properties.py
new file mode 100644 (file)
index 0000000..8ba0ed7
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# RESPONSABLE D6BHHHH J-P.LEFEBVRE
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# ======================================================================
+#     IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
+#     DE LA VERSION DU CODE_ASTER ASSOCIE
+#----------------------------------------------------------------------
+version = "7.1.0"
+date = "23/04/2003"
diff --git a/Openturns_Wrapper/qtEficas_openturns_wrapper.py b/Openturns_Wrapper/qtEficas_openturns_wrapper.py
new file mode 100755 (executable)
index 0000000..8da1806
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+"""
+   Ce module sert à lancer EFICAS configuré pour Openturns
+"""
+# Modules Python
+
+# Modules Eficas
+import prefs
+prefs.code="OPENTURNS_WRAPPER"
+from InterfaceQT4 import eficas_go
+
+eficas_go.lance_eficas(code=prefs.code)
diff --git a/Openturns_Wrapper/sdistOTqt.py b/Openturns_Wrapper/sdistOTqt.py
new file mode 100644 (file)
index 0000000..acf75c2
--- /dev/null
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+"""
+     Ce module sert à construire les distributions d'EFICAS pour Openturns
+     en fonction du tag CVS courant
+     Les distributions sont :
+      - un tar.gz pour UNIX ne contenant pas mxTextTools
+     L'utilisation de ce module est la suivante :
+      1- Se mettre dans un répertoire de travail
+      2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
+      3- Exporter les sources d'EficasV1 par la commande :
+            cvs export -r TAG -d Eficas_export EficasV1
+         ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
+      5- Aller dans le répertoire Eficas_export
+      6- Executer le script sdist.py
+             python sdist.py
+         Ce qui a pour effet de creer un repertoire dist contenant la distribution
+         et de la copier dans le répertoire indiqué par dir_download s'il est accessible
+
+"""
+import os,shutil,glob,sys
+import types
+
+nom_distrib="QTEficasOpenturns_V1_0"
+path_distrib=os.path.join("dist",nom_distrib)
+path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
+dir_download= "/home/eficas/WWW/telechargement/eficas"
+
+def main():
+   if os.path.isdir('dist'):shutil.rmtree('dist')
+
+   copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS'])
+
+   copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
+   copyfiles('../InterfaceTK',os.path.join(path_distrib,'InterfaceTK'),['*.py','faqs.txt'])
+   copyfiles('../InterfaceQT',os.path.join(path_distrib,'InterfaceQT'),['*.py','faqs.txt'])
+   copyfiles('../Ui',os.path.join(path_distrib,'Ui'),['*.ui','makefile'])
+   copyfiles('../Openturns',os.path.join(path_distrib,'Openturns'),['*.py','*.ini'])
+   copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
+   copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
+   copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Validation'),['*.py'])
+   # AIDE
+   copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
+   copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
+   copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS'])
+   copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt'])
+   #                           ______________________
+
+   copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
+   copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
+   copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png'])
+   copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*'])
+   copyfiles('../Editeur/Patrons/OPENTURNS',os.path.join(path_distrib,'Editeur','Patrons','OPENTURNS'),['*.com*'])
+
+   copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py'])
+
+   
+   tarball= maketarball('dist',nom_distrib,nom_distrib)
+   try:
+      shutil.copy(tarball,dir_download)
+   except:
+      print "Repertoire de download inconnu : ",dir_download
+
+
+
+def make_dir(dir_cible):
+   if type(dir_cible) is not types.StringType:
+      raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
+   head,tail=os.path.split(dir_cible)
+   tails=[tail]
+   while head and tail and not os.path.isdir(head):
+      head,tail=os.path.split(head)
+      tails.insert(0, tail)
+
+   for d in tails:
+      head = os.path.join(head, d)
+      if not os.path.isdir(head):os.mkdir(head)
+
+
+def copyfiles(dir_origin,dir_cible,listfiles):
+   if not os.path.isdir(dir_cible):make_dir(dir_cible)
+   for glob_files in listfiles:
+      for file in glob.glob(os.path.join(dir_origin,glob_files)):
+         shutil.copy(file,dir_cible)
+
+
+def maketarball(dir_trav,dir_cible,nom_tar):
+   prev=os.getcwd()
+   print prev
+   os.chdir(dir_trav)
+   os.system("tar -cf "+nom_tar+".tar "+dir_cible)
+   os.system("gzip -f9 "+nom_tar+".tar ")
+   os.chdir(prev)
+   return os.path.join(dir_trav,nom_tar+".tar.gz")
+
+
+main()
+
diff --git a/Openturns_Wrapper/style.py b/Openturns_Wrapper/style.py
new file mode 100644 (file)
index 0000000..7da9d53
--- /dev/null
@@ -0,0 +1 @@
+# Necessaire pour compatibilite avec Aster
index ae0b62f673d2be16c7e831a58c570cd034ee80e8..3b28d765a68b13b226e1882b2b142a15b7277c86 100644 (file)
@@ -16,3 +16,22 @@ des limites actuelles d'Accas.
 
 Certains tests doivent etre exécutés séparément à cause d'un problème d'import de catalogue.
 En particulier, les tests d'ihm (testihm*.py) entrent dans cette catégorie.
+
+Par ordre de complexité :
+
+  - testelem7
+  - testelem
+
+  - testcomm7
+  - testcomm9
+  - testcomm
+
+  - testastest
+  - testastest9
+
+  - testihm9
+  - testihm
+  - testihm7
+
+Les tests suffixés 7 ou 9 sont spécifiques d'une version d'ASTER
+
index 28a5c8edaa797f7196e0314b4ec59140a8038eed..7f943db99eff4f9501834fa43b9dfa409ba51a40 100644 (file)
@@ -24,6 +24,7 @@ import os,sys
 # REPINI sert à localiser le fichier editeur.ini
 # Obligatoire
 REPINI=os.path.dirname(os.path.abspath(__file__))
+repIni=REPINI
 
 # INSTALLDIR sert à localiser l'installation d'Eficas
 # Obligatoire
@@ -34,29 +35,47 @@ INSTALLDIR=os.path.join(REPINI,'..')
 # Par défaut on utilise les modules de INSTALLDIR
 # Peut valoir None (defaut)
 CODE_PATH = None
-#CODE_PATH = os.path.join(REPINI,'../../Superv')
 
 # la variable code donne le nom du code a selectionner
 code="ASTER" 
 
-# ICONDIR sert à localiser le répertoire contenant les icones
-# Par défaut on utilise le répertoire icons dans Editeur
-ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
-
 # lang indique la langue utilisée pour les chaines d'aide : fr ou ang
 lang='fr'
 
 # Codage des strings qui accepte les accents (en remplacement de 'ascii')
 encoding='iso-8859-1'
 
+
+EditeurDir=INSTALLDIR+"/Editeur"
+sys.path[:0]=[INSTALLDIR]
+sys.path[:0]=[INSTALLDIR+"/Aster"]
+
+ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
+
+# Preference
+if os.name == 'nt':
+   userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
+else :
+   userprefs=os.path.expanduser("~/.Eficas_install/prefs.py")
+
+if os.path.isfile(userprefs):
+   try:
+      execfile(userprefs)
+   except:
+      pass
+
+
+#-------------------------------------------------------------------
+# Partie pour TK
+#-------------------------------------------------------------------
+
 labels= ('Fichier','Edition','Jeu de commandes',
-#               'Catalogue','Browsers',
                 'Options',
                 'Aide',
+                 'Traduction',
            )
 
 appli_composants=['readercata','bureau',
-#                  'browser',
                    'options',
            ]
 
@@ -84,21 +103,14 @@ menu_defs={ 'bureau': [
                #('Paramètres Eficas','affichage_fichier_ini'),
                                   ]
               ),
+              ('Traduction',[
+               ('Traduction v7 en v8','TraduitFichier7'),
+               ('Traduction v8 en v9','TraduitFichier8','<Control-t>','Ctrl+T'),
+                            ]
+              ),
               ('Aide',[
                         ('Aide EFICAS','aideEFICAS','<Control-a>','Ctrl+A'),
                       ]
               ),
              ]
            }
-
-if os.name == 'nt':
-   userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
-else :
-   userprefs=os.path.expanduser("~/Eficas_install/prefs.py")
-if os.path.isfile(userprefs):
-   try:
-      execfile(userprefs)
-   except:
-      pass
-
-sys.path[:0]=[INSTALLDIR]
index 34a71cc876b7a234f18a0dd0dbead535781641d2..35fe540405bef1e26b61a2ba2abe933504cd6330 100755 (executable)
@@ -39,7 +39,7 @@ TRAN_GE2=DYNA_TRAN_MODAL(  MASS_GENE=MGEN_BIC,   RIGI_GENE=RGEN_BIC,
 LISTIMP=DEFI_LIST_REEL(  DEBUT=0.,
                     INTERVALLE=_F(  JUSQU_A = 1.,  NOMBRE = 500))
 
-RESUA1=REST_BASE_PHYS(  RESU_GENE=TRAN_GE1,
+RESUA1=REST_GENE_PHYS(  RESU_GENE=TRAN_GE1,
                         LIST_INST=LISTIMP,
                         INTERPOL='LIN',
                         NOM_CHAM='DEPL',
index af7db1de3a305ac5878240be86c3e9c9a703f201..5e74e201fe317e85de6190b38d09a1055a3d262e 100755 (executable)
@@ -349,7 +349,7 @@ GSCR=DYNA_TRAN_MODAL(
 #--------------------------------------------------------------
 # RESTITUTION GLOBALE DU CHAMP DE DEPLACEMENT RELATIF A CHAQUE INSTANT 
 # DE LA LISTE L_RECU
-RGSCR=REST_BASE_PHYS(  
+RGSCR=REST_GENE_PHYS(  
                RESU_GENE=GSCR,
                INTERPOL='LIN',   
                LIST_INST=L_RECU,
@@ -533,7 +533,7 @@ GSCA=DYNA_TRAN_MODAL(
 # RESTITUTION GRANDEURS ABSOLUES
 #-------------------------------
 
-RGSCA=REST_BASE_PHYS(  
+RGSCA=REST_GENE_PHYS(  
                RESU_GENE=GSCA,
                INTERPOL='LIN',   
                LIST_INST=L_RECU,
@@ -612,7 +612,7 @@ IMPR_TABLE(
 
 # DEPLACEMENTS
 
-RGSCR2=REST_BASE_PHYS(  
+RGSCR2=REST_GENE_PHYS(  
                RESU_GENE=GSCA,
                INTERPOL='LIN',   
                LIST_INST=L_RECU,
index 80a2881f75662de84884d34c453f7501bc7bc217..da260a84c600ae90cf95874fcff041c0befed33c 100644 (file)
@@ -207,7 +207,7 @@ class TestValidCase(unittest.TestCase):
    def test016(self):
        """Test du validateur ET : pas de doublon ET valeur paire """
        cata=SIMP(statut='o',typ='I',min=1,max=6,validators=[NoRepeat(),PairVal()])
-       liste=( ((2,),1),(None,0),((1,3,5),0),
+       liste=( (2,1),(None,0),((1,3,5),0),
                ((2,4,6),1),
                ((1,3,5),0),
                ((2,4,4),0),
index e9b06022a40340d88ca82549f6568f419646f0e5..f78f84331910d6dc3a7a9aab82bc0311ee0e1af5 100644 (file)
@@ -72,10 +72,10 @@ Fin Mot-cl
               (("aaaa","aaaaa","axyzaa","bbbbaaa","zzz"),OK),
               (("aaaa","aaaa","axyz","bbbb","zzz"),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : aaaa est un doublon                    !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : aaaa est un doublon                      !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """),
               (("aaaa","axyz","bbbb","zzz"),OK),
@@ -84,19 +84,19 @@ Fin Mot-cl
               (("aaa",Variable('x',"bbb")),OK),
               (("aaa",Variable('x',"aaa")),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : aaa est un doublon                     !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : aaa est un doublon                       !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """),
               (Variable('x',("aaa","bbb")),OK),
               (Variable('x',("aaa","bbb","bbb")),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : bbb est un doublon                     !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : bbb est un doublon                       !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """),
              )
@@ -109,10 +109,10 @@ Fin Mot-cl
               (("TUTU","TATA","CCCC"),OK),
               (("TUTU","TATA","CCCC","TUTU","TATA","CCCC"),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : TUTU est un doublon                    !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : TUTU est un doublon                      !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """),
               (("TUTU","TATA","CCCC","TUTU","TATA","CCCC","TUTU","TATA","CCCC"),
@@ -142,7 +142,7 @@ Fin Mot-cl
 """Mot-clé simple : mcs
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ! Mot-clé mcs invalide : (1, 3, 5) contient des valeurs non paires !
-   ! Critere de validite: pas de présence de doublon dans la liste    !
+   ! Critere de validite: : pas de présence de doublon dans la liste  !
    !  et valeur paire                                                 !
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
@@ -150,11 +150,11 @@ Fin Mot-cl
                ((2,4,6),OK),
                ((2,4,4),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : 4 est un doublon                       !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !  et valeur paire                                              !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : 4 est un doublon                         !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !  et valeur paire                                                !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """),
              )
@@ -170,10 +170,10 @@ Fin Mot-cl
                ((i,1,i,i),OK),
                ((1,1,i,i),
 """Mot-clé simple : mcs
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-   ! Mot-clé mcs invalide : 1 est un doublon                       !
-   ! Critere de validite: pas de présence de doublon dans la liste !
-   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Mot-clé mcs invalide : 1 est un doublon                         !
+   ! Critere de validite: pas de présence de doublon dans la liste !
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """ ),
                )
@@ -241,7 +241,7 @@ Fin Mot-cl
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>) ne contient !
    ! pas les elements obligatoires : [6]                                           !
-   ! Critere de validite: pas de présence de doublon dans la liste                 !
+   ! Critere de validite: : pas de présence de doublon dans la liste               !
    !  et valeur (5, 6, 7) obligatoire                                              !
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
@@ -293,7 +293,7 @@ Fin Mot-cl
    ! pas les elements obligatoires : [6]                                           !
    ! Critere de validite: valeur (5, 6, 7) obligatoire                             !
    !  et liste croissant                                                           !
-   !  et pas de présence de doublon dans la liste                                  !
+   !  et : pas de présence de doublon dans la liste                                !
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """ ),
@@ -304,7 +304,7 @@ Fin Mot-cl
    ! par valeurs croissantes                                                        !
    ! Critere de validite: valeur (5, 6, 7) obligatoire                              !
    !  et liste croissant                                                            !
-   !  et pas de présence de doublon dans la liste                                   !
+   !  et : pas de présence de doublon dans la liste                                 !
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """ ),
@@ -314,7 +314,7 @@ Fin Mot-cl
    ! Mot-clé mcs invalide : 7 est un doublon           !
    ! Critere de validite: valeur (5, 6, 7) obligatoire !
    !  et liste croissant                               !
-   !  et pas de présence de doublon dans la liste      !
+   !  et : pas de présence de doublon dans la liste    !
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Fin Mot-clé simple : mcs
 """ ),
index f6d1d0c7a98ba147144fe6390da0f4e811da38ed..a66aa137b8e6c16a29bfa138c23b065389552a51 100644 (file)
@@ -65,6 +65,7 @@ dict_erreurs={
               "IMPR_FICO_HOMARD":"IMPR_FICO_HOMARD a ete integre dans MACR_ADPA_MAIL",
 # STA9.2
               "POST_RCCM_SITUATION_NUME_PASSAGE":"Utilisation de NUME_PASSAGE pour le type TUYAUTERIE impossible en 9.2. On ne traite pour le moment que les chemins de passage simples.",
+              "POST_RCCM_SITUATION_NB_CYCL_SEISME":"POST_RCCM : maintenant les SITUATIONS sismiques ont leur propre mot clef facteur SEISME, attention, traduction incomplete",
               "DEFI_MATERIAU_BAZANT_FD" : "le materiau BAZANT_FD a ete supprime",
               "DEFI_MATERIAU_APPUI_ELAS" : "le materiau APPUI_ELAS a ete supprime",
               "DEFI_MATERIAU_PORO_JOINT" : "le materiau PORO_JOINT a ete supprime",
@@ -75,6 +76,9 @@ dict_erreurs={
               "CALC_G_OPTION=G_LAGR" : "l'OPTION G_LAGR de CALC_G a ete supprimee",
               "CALC_G_OPTION=G_LAGR_GLOB" : "l'OPTION G_LAGR_GLOB de CALC_G a ete supprimee",
               "CALC_MATR_ELEM_THETA" : "l'OPTION RIGI_MECA_LAGR de CALC_MATR_ELEM a ete supprimee",
+              "TEST_FICHIER_NB_CHIFFRE" : "le fonctionnement de TEST_FICHIER a change entre la V8 et la V9, consultez la doc, en particulier pour entrer la bonne valeur de NB_VALE",
+              "DYNA_NON_LINE_PILOTAGE" : "le PILOTAGE n'est pas actif dans DYNA_NON_LINE ",
+              "DYNA_NON_LINE_RECH_LINEAIRE" : "la RECH_LINEAIRE n'est pas active dans DYNA_NON_LINE ",
              }
 
 def EcritErreur(listeGena,ligne=None) :
index 9cddcfda3f8a636beed8073255f41374b1dd1d2b..d07c7b9c076fe2739b6ddbc7a1376adf2af46137 100644 (file)
@@ -113,6 +113,27 @@ class existe :
       if bool == None : bool = 0
       return bool
 
+#-------------
+class nexistepas :
+#--------------
+   def __init__(self,list_arg):
+      self.genea=list_arg
+
+   def cherche_mot(self,niveau,commande):
+      if commande == None            : return 0
+      if niveau   == len(self.genea) : return 1
+      texte=self.genea[niveau]
+      for c in commande.childNodes :
+          if c.name == texte : 
+             niveau = niveau+1
+             return self.cherche_mot(niveau,c)
+      return None
+
+   def verif(self,commande):
+      bool=self.cherche_mot(0,commande)
+      if bool : return 0
+      return 1
+
 #-------------------------------
 class MCsousMCFaPourValeur :
 #------------------------------
@@ -156,5 +177,5 @@ class MCaPourValeur :
          bool=1
       return bool
 
-dictionnaire_regle={"existe":existe,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur}
+dictionnaire_regle={"existe":existe,"nexistepas":nexistepas,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur}
 SansRegle=pasDeRegle()
index 80d2ede45068a15f24c7ce0e79a90ae64943a255..13647f1e0aeeb3cc9aa514596f581ae1691b17ee 100644 (file)
@@ -23,7 +23,7 @@ from dictErreurs  import GenereErreurPourCommande
 import calcG
 
 
-atraiter=( "DEFI_MAILLAGE","CALC_VECT_ELEM","DYNA_NON_LINE","STAT_NON_LINE","FACT_LDLT","FACT_GRAD","RESO_LDLT","RESO_GRAD","DYNA_TRAN_MODAL","NORM_MODE","MACRO_MODE_MECA","POST_RCCM","THER_NON_LINE","THER_LINEAIRE","THER_NON_LINE_MO","DEFI_CABLE_BP","GENE_VARI_ALEA","DEFI_MATERIAU","IMPR_MATRICE","CALC_G","CALC_MATR_ELEM")
+atraiter=( "DEFI_MAILLAGE","CALC_VECT_ELEM","DYNA_TRAN_EXPLI","DYNA_NON_LINE","STAT_NON_LINE","FACT_LDLT","FACT_GRAD","RESO_LDLT","RESO_GRAD","DYNA_TRAN_MODAL","NORM_MODE","MACRO_MODE_MECA","POST_RCCM","THER_NON_LINE","THER_LINEAIRE","THER_NON_LINE_MO","DEFI_CABLE_BP","GENE_VARI_ALEA","DEFI_MATERIAU","IMPR_MATRICE","CALC_G","CALC_MATR_ELEM","MACR_ADAP_MAIL","MACR_INFO_MAIL","REST_BASE_PHYS","COMB_SISM_MODAL","TEST_FICHIER","MACR_ELEM_DYNA","CREA_CHAMP","AFFE_CHAR_MECA","AFE_CHAR_MECA_F")
 
 def traduc(infile,outfile,flog=None):
 
@@ -35,7 +35,7 @@ def traduc(infile,outfile,flog=None):
     parseKeywords(root)
     
     ####################### traitement erreurs ########################
-    GenereErreurPourCommande(jdc,("POST_RCCM"))
+    GenereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE"))
 
     ####################### traitement Sous-Structuration  #######################
     renameMotCleInFact(jdc,"DEFI_MAILLAGE","DEFI_SUPER_MAILLE","MACR_ELEM_STAT","MACR_ELEM")
@@ -44,6 +44,10 @@ def traduc(infile,outfile,flog=None):
     renameMotCleInFact(jdc,"CALC_VECT_ELEM","SOUS_STRUC","MAILLE","SUPER_MAILLE")
     #########################################################################
 
+    ####################### traitement MACR_ELEM_DYNA #######################
+    removeMotCle(jdc,"MACR_ELEM_DYNA","OPTION")
+    #########################################################################
+
     ####################### traitement Resolution lineaire ######################
     renameMotCle(jdc,"RESO_LDLT","MATR_FACT","MATR")
     renameMotCle(jdc,"RESO_GRAD","MATR_ASSE","MATR")
@@ -58,13 +62,21 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"DYNA_TRAN_MODAL","NB_MODE_DIAG")
     #########################################################################
 
-    ####################### traitement MASS_INER dans NORM_MODE ##########
-    removeMotCle(jdc,"NORM_MODE","MASSE_INER")
-    removeMotCleInFact(jdc,"MACRO_MODE_MECA","NORM_MODE","MASSE_INER")
+    ############# traitement MASS_INER dans NORM_MODE/MACRO_MODE_MECA ##########
+    removeMotCle(jdc,"NORM_MODE","MASS_INER")
+    removeMotCleInFact(jdc,"MACRO_MODE_MECA","NORM_MODE","MASS_INER")
     #########################################################################
 
     ####################### traitement POST_RCCM ############################
     removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NUME_PASSAGE",((("TYPE_RESU_MECA","TUYAUTERIE",jdc),"MCaPourValeur"),))
+    chercheOperInsereFacteurSiRegle(jdc,"POST_RCCM","SEISME", ((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+    moveMotCleFromFactToFact(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME","SEISME")
+#    AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+    AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+#    removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+    removeMotCleInFactSiRegle(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+    removeMotCleInFact(jdc,"POST_RCCM","CHAR_MECA","TYPE_CHAR",)
+    removeMotCleInFact(jdc,"POST_RCCM","RESU_MECA","TYPE_CHAR",)
     #########################################################################
 
     ####################### traitement THER_NON_LINE ############################
@@ -100,6 +112,33 @@ def traduc(infile,outfile,flog=None):
     removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","APPUI_ELAS")
     removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ZIRC_EPRI")
     removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ZIRC_CYRA2")
+    # BARCELONE
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","MU","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PORO","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","LAMBDA","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","KAPPA","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","M","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PRES_CRIT","BARCELONE")
+    moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","BARCELONE")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","KCAM")
+    # CAM_CLAY
+    AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
+    AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),))
+    # VENDOCHAB
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","S_VP","S")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","N_VP","N")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","M_VP","UN_SUR_M", erreur=1)
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","K_VP","UN_SUR_K")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","SEDVP1","ALPHA_D")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","SEDVP2","BETA_D")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","S_VP","S")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","N_VP","N")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","M_VP","UN_SUR_M", erreur=1)
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","K_VP","UN_SUR_K")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","SEDVP1","ALPHA_D")
+    renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB_FO","SEDVP2","BETA_D")
+    # GLRC 
+    renameCommandeSiRegle(jdc,"DEFI_MATERIAU","DEFI_GLRC", ((("GLRC_DAMAGE","GLRC_ACIER",),"existeMCFParmi"),))
     #########################################################################
 
     ####################### traitement IMPR_MATRICE ######################
@@ -107,6 +146,17 @@ def traduc(infile,outfile,flog=None):
     removeCommandeSiRegleAvecErreur(jdc,"IMPR_MATRICE",((("MATR_ASSE","FORMAT","RESULTAT",jdc),"MCsousMCFaPourValeur"),))
     #########################################################################
 
+    ####################### traitement MACR_ADAP/INFO_MAIL ######################
+    dadap_mail={"V8_11":"V9_5", "V8_N":"V9_N", "V8_N_PERSO":"V9_N_PERSO"}
+    ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail)
+    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail)
+    #########################################################################
+
+    ####################### traitement REST_BASE_PHYS ######################
+    renameCommandeSiRegle(jdc,"REST_BASE_PHYS","REST_SOUS_STRUC", ((("RESULTAT","SQUELETTE","SOUS_STRUC","BASE_MODALE","CYCLIQUE","SECTEUR"),"existeMCFParmi"),))
+    renameCommandeSiRegle(jdc,"REST_BASE_PHYS","REST_COND_TRAN", ((("MACR_ELEM_DYNA","RESU_PHYS"),"existeMCFParmi"),))
+    renameCommande(jdc,"REST_BASE_PHYS","REST_GENE_PHYS", )
+    #########################################################################
 
     ####################### traitement CALC_G ######################
     removeMotCleSiRegleAvecErreur(jdc,"CALC_G","OPTION",((("OPTION","G_LAGR",jdc),"MCaPourValeur"),))
@@ -116,12 +166,58 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"CALC_G","DIRE_THETA_LAGR")
     #########################################################################
 
+    ####################### traitement COMB_SISM_MODAL ######################
+    AjouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),))
+    #########################################################################
+
+    ####################### traitement TEST_FICHIER ######################
+    renameMotCleAvecErreur(jdc,"TEST_FICHIER","NB_CHIFFRE","NB_VALE")
+    removeMotCle(jdc,"TEST_FICHIER","EPSILON")
+    #########################################################################
+
     ####################### traitement CALC_MATR_ELEM ######################
     removeMotCleSiRegle(jdc,"CALC_MATR_ELEM","OPTION",((("OPTION","RIGI_MECA_LAGR",jdc),"MCaPourValeur"),))
     removeMotCleAvecErreur(jdc,"CALC_MATR_ELEM","PROPAGATION")
     removeMotCle(jdc,"CALC_MATR_ELEM","THETA")
     #########################################################################
 
+    ####################### traitement ITER_INTE_PAS ######################
+    removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","COMP_INCR","ITER_INTE_PAS",((("COMP_INCR","DEFORMATION","SIMO_MIEHE",jdc),"MCsousMCFaPourValeur"),))
+    removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","COMP_INCR","ITER_INTE_PAS",((("COMP_INCR","DEFORMATION","SIMO_MIEHE",jdc),"MCsousMCFaPourValeur"),))
+    #########################################################################
+
+    ################## traitement RECH_LINEAIRE et PILOTAGE dans DYNA_NON_LINE #################
+    removeMotCleAvecErreur(jdc,"DYNA_NON_LINE","RECH_LINEAIRE")
+    removeMotCleAvecErreur(jdc,"DYNA_NON_LINE","PILOTAGE")
+    #########################################################################
+
+    ####################### traitement DYNA_TRAN_EXPLI ######################
+    renameOper(jdc,"DYNA_TRAN_EXPLI","DYNA_NON_LINE")
+    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'")
+    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'")
+    #########################################################################
+
+    ####################### traitement SCHEMA_TEMPS dans DYNA_NON_LINE ######################
+    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'")
+    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'")
+    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'")
+    renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","ALPHA","BETA",)
+    renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","DELTA","GAMMA",)
+    renameMotCleInFact(jdc,"DYNA_NON_LINE","TETA_METHODE","TETA","THETA",)
+    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
+    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),))
+    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),))
+    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),))
+    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),))
+    renameMotCle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA_TEMPS")
+    renameMotCle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA_TEMPS")
+    renameMotCle(jdc,"DYNA_NON_LINE","HHT","SCHEMA_TEMPS")
+    renameMotCle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA_TEMPS")
+    renameMotCle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA_TEMPS")
+    removeMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT","EVOLUTION")
+    moveMotClefInOperToFact(jdc,"DYNA_NON_LINE","STOP_CFL","SCHEMA_TEMPS")
+    #########################################################################
+
     ####################### traitement CONTACT ######################
     removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","KT_ULTM")
     removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","EFFO_N_INIT")
@@ -146,19 +242,19 @@ def traduc(infile,outfile,flog=None):
     ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles)
     ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles)
 
+    renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),))
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","RECHERCHE")
+    removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","PROJECTION")
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_Y")
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_ORIE_POU")
+    removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","MODL_AXIS")
+    dAppariement={"MAIT_ESCL_SYME":"MAIT_ESCL"}
+    ChangementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement)
 
-    renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),))
-    #########################################################################
-
-    ####################### traitement CAM_CLAY ######################
-    AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
     #########################################################################
 
-    ####################### traitement GLRC ######################
-    renameCommandeSiRegle(jdc,"DEFI_MATERIAU","DEFI_GLRC", ((("GLRC_DAMAGE","GLRC_ACIER",),"existeMCFParmi"),))
+    ####################### traitement CREA_CHAMP ######################
+    chercheOperInsereFacteurSiRegle(jdc,"CREA_CHAMP","PRECISION=1.E-3,", ((("PRECISION",),"nexistepas"),(("CRITERE",),"existe"),),0)
     #########################################################################
 
     f=open(outfile,'w')
diff --git a/Ui/OptionsEditeur.py b/Ui/OptionsEditeur.py
deleted file mode 100644 (file)
index f828bdf..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'OptionsEditeur.ui'
-#
-# Created: Tue Jun 10 18:23:53 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.16
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class desOptions(QDialog):
-    def __init__(self,parent = None,name = None,modal = 0,fl = 0):
-        QDialog.__init__(self,parent,name,modal,fl)
-
-        if not name:
-            self.setName("desOptions")
-
-
-
-        self.groupBox1 = QGroupBox(self,"groupBox1")
-        self.groupBox1.setGeometry(QRect(11,11,548,191))
-
-        self.textLabel1_3 = QLabel(self.groupBox1,"textLabel1_3")
-        self.textLabel1_3.setGeometry(QRect(30,60,280,20))
-
-        self.textLabel1_2_2 = QLabel(self.groupBox1,"textLabel1_2_2")
-        self.textLabel1_2_2.setGeometry(QRect(30,120,280,20))
-
-        self.CBVersions = QComboBox(0,self.groupBox1,"CBVersions")
-        self.CBVersions.setGeometry(QRect(30,20,90,30))
-
-        self.LERepMat = QLineEdit(self.groupBox1,"LERepMat")
-        self.LERepMat.setGeometry(QRect(30,140,501,31))
-
-        self.LERepCata = QLineEdit(self.groupBox1,"LERepCata")
-        self.LERepCata.setGeometry(QRect(30,80,501,31))
-
-        self.Bok = QPushButton(self.groupBox1,"Bok")
-        self.Bok.setGeometry(QRect(440,20,90,31))
-        self.Bok.setAutoDefault(0)
-
-        self.groupBox2 = QGroupBox(self,"groupBox2")
-        self.groupBox2.setGeometry(QRect(11,208,548,90))
-
-        self.LEVersionAjout = QLineEdit(self.groupBox2,"LEVersionAjout")
-        self.LEVersionAjout.setGeometry(QRect(120,31,101,30))
-
-        self.LEVersionSup = QLineEdit(self.groupBox2,"LEVersionSup")
-        self.LEVersionSup.setGeometry(QRect(410,30,101,30))
-
-        self.PBSup = QPushButton(self.groupBox2,"PBSup")
-        self.PBSup.setGeometry(QRect(300,20,101,41))
-
-        self.PBajout = QPushButton(self.groupBox2,"PBajout")
-        self.PBajout.setGeometry(QRect(10,20,101,41))
-
-        self.PBQuit = QPushButton(self,"PBQuit")
-        self.PBQuit.setGeometry(QRect(400,420,151,31))
-        self.PBQuit.setMinimumSize(QSize(0,30))
-
-        self.groupBox3 = QGroupBox(self,"groupBox3")
-        self.groupBox3.setGeometry(QRect(10,310,548,90))
-
-        self.LERepDoc = QLineEdit(self.groupBox3,"LERepDoc")
-        self.LERepDoc.setGeometry(QRect(20,50,520,31))
-
-        self.textLabel1 = QLabel(self.groupBox3,"textLabel1")
-        self.textLabel1.setGeometry(QRect(20,20,280,30))
-
-        self.Bdefaut = QCheckBox(self,"Bdefaut")
-        self.Bdefaut.setGeometry(QRect(10,430,340,20))
-        Bdefaut_font = QFont(self.Bdefaut.font())
-        Bdefaut_font.setPointSize(12)
-        self.Bdefaut.setFont(Bdefaut_font)
-
-        self.languageChange()
-
-        self.resize(QSize(570,474).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.CBVersions,SIGNAL("activated(int)"),self.VersionChoisie)
-        self.connect(self.Bdefaut,SIGNAL("clicked()"),self.BdefautChecked)
-        self.connect(self.LEVersionAjout,SIGNAL("returnPressed()"),self.AjoutVersion)
-        self.connect(self.LERepDoc,SIGNAL("returnPressed()"),self.ChangePathDoc)
-        self.connect(self.Bok,SIGNAL("clicked()"),self.BokClicked)
-        self.connect(self.LEVersionSup,SIGNAL("returnPressed()"),self.SupVersion)
-        self.connect(self.PBajout,SIGNAL("clicked()"),self.AjoutVersion)
-        self.connect(self.PBSup,SIGNAL("clicked()"),self.SupVersion)
-        self.connect(self.PBQuit,SIGNAL("clicked()"),self.close)
-        self.connect(self.LERepDoc,SIGNAL("textChanged(const QString&)"),self.ChangePathDoc)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Options Aster"))
-        self.groupBox1.setTitle(self.__tr("Configurer une Version"))
-        self.textLabel1_3.setText(self.__trUtf8("\x52\xc3\xa9\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\xc3\xa8\x73\x20\x61\x75\x20\x63\x61\x74\x61\x6c\x6f\x67\x75\x65\x20\x3a"))
-        self.textLabel1_2_2.setText(self.__trUtf8("\x52\xc3\xa9\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\xc3\xa8\x73\x20\x61\x75\x78\x20\x6d\x61\x74\xc3\xa9\x72\x69\x61\x75\x78\x20\x3a"))
-        self.LERepMat.setText(QString.null)
-        self.LERepCata.setText(QString.null)
-        self.Bok.setText(self.__tr("Valider"))
-        self.groupBox2.setTitle(self.__trUtf8("\x47\xc3\xa9\x72\x65\x72\x20\x6c\x65\x73\x20\x76\x65\x72\x73\x69\x6f\x6e\x73"))
-        self.PBSup.setText(self.__tr("Supprimer\n"
-"Version :"))
-        self.PBajout.setText(self.__tr("Ajouter\n"
-"Version :"))
-        self.PBQuit.setText(self.__tr("Quitter"))
-        self.groupBox3.setTitle(self.__tr("Doc"))
-        self.LERepDoc.setText(QString.null)
-        self.textLabel1.setText(self.__trUtf8("\x52\x65\x70\x65\x72\x74\x6f\x69\x72\x65\x20\x64\x27\x61\x63\x63\x65\x73\x20\xc3\xa0\x20\x6c\x61\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3a"))
-        self.Bdefaut.setText(self.__tr("Reinitialiser avec les valeurs par defaut"))
-
-
-    def VersionChoisie(self):
-        print "desOptions.VersionChoisie(): Not implemented yet"
-
-    def BdefautChecked(self):
-        print "desOptions.BdefautChecked(): Not implemented yet"
-
-    def AjoutVersion(self):
-        print "desOptions.AjoutVersion(): Not implemented yet"
-
-    def SupVersion(self):
-        print "desOptions.SupVersion(): Not implemented yet"
-
-    def ChangePathDoc(self):
-        print "desOptions.ChangePathDoc(): Not implemented yet"
-
-    def BokClicked(self):
-        print "desOptions.BokClicked(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("desOptions",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("desOptions",s,c,QApplication.UnicodeUTF8)
diff --git a/Ui/OptionsPdf.py b/Ui/OptionsPdf.py
deleted file mode 100644 (file)
index c5c3c89..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'OptionsPdf.ui'
-#
-# Created: lun avr 7 09:36:07 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class desPdf(QDialog):
-    def __init__(self,parent = None,name = None,modal = 0,fl = 0):
-        QDialog.__init__(self,parent,name,modal,fl)
-
-        if not name:
-            self.setName("desPdf")
-
-
-
-        self.textLabel1_2 = QLabel(self,"textLabel1_2")
-        self.textLabel1_2.setGeometry(QRect(20,10,280,20))
-
-        self.BCancel = QPushButton(self,"BCancel")
-        self.BCancel.setGeometry(QRect(450,90,70,31))
-
-        self.LERepPdf = QLineEdit(self,"LERepPdf")
-        self.LERepPdf.setGeometry(QRect(20,40,501,31))
-
-        self.Bok = QPushButton(self,"Bok")
-        self.Bok.setGeometry(QRect(350,90,70,31))
-
-        self.languageChange()
-
-        self.resize(QSize(538,142).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.BCancel,SIGNAL("clicked()"),self.reject)
-        self.connect(self.LERepPdf,SIGNAL("returnPressed()"),self.LeRepPdfPressed)
-        self.connect(self.Bok,SIGNAL("clicked()"),self.BokClicked)
-
-        self.setTabOrder(self.LERepPdf,self.Bok)
-        self.setTabOrder(self.Bok,self.BCancel)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("desPdf"))
-        self.textLabel1_2.setText(self.__tr("Lecteur Pdf"))
-        self.BCancel.setText(self.__tr("Cancel"))
-        self.LERepPdf.setText(self.__tr("acroread"))
-        self.Bok.setText(self.__tr("Ok"))
-
-
-    def LeRepPdfPressed(self):
-        print "desPdf.LeRepPdfPressed(): Not implemented yet"
-
-    def BokClicked(self):
-        print "desPdf.BokClicked(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("desPdf",s,c)
diff --git a/Ui/aideQT.py b/Ui/aideQT.py
deleted file mode 100644 (file)
index a60c760..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'aideQT.ui'
-#
-# Created: mar mar 25 10:05:07 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class Aide(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("Aide")
-
-
-        AideLayout = QGridLayout(self,1,1,11,6,"AideLayout")
-
-        layout2 = QHBoxLayout(None,0,6,"layout2")
-
-        self.PBIndex = QPushButton(self,"PBIndex")
-        self.PBIndex.setMinimumSize(QSize(0,30))
-        layout2.addWidget(self.PBIndex)
-
-        self.PBBack = QPushButton(self,"PBBack")
-        self.PBBack.setEnabled(1)
-        self.PBBack.setMinimumSize(QSize(0,30))
-        layout2.addWidget(self.PBBack)
-
-        self.PBForward = QPushButton(self,"PBForward")
-        self.PBForward.setEnabled(1)
-        self.PBForward.setMinimumSize(QSize(0,30))
-        layout2.addWidget(self.PBForward)
-
-        AideLayout.addLayout(layout2,1,0)
-
-        self.TB1 = QTextBrowser(self,"TB1")
-
-        AideLayout.addMultiCellWidget(self.TB1,0,0,0,1)
-        spacer1 = QSpacerItem(311,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        AideLayout.addItem(spacer1,1,1)
-
-        self.languageChange()
-
-        self.resize(QSize(602,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.PBBack,SIGNAL("clicked()"),self.TB1.backward)
-        self.connect(self.PBForward,SIGNAL("clicked()"),self.TB1.forward)
-        self.connect(self.PBIndex,SIGNAL("clicked()"),self.TB1.home)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Aide"))
-        self.PBIndex.setText(self.__tr("Index"))
-        self.PBBack.setText(self.__tr("Back"))
-        self.PBForward.setText(self.__tr("Forward"))
-
-
-    def PBIndexPushed(self):
-        print "Aide.PBIndexPushed(): Not implemented yet"
-
-    def PBBackPushed(self):
-        print "Aide.PBBackPushed(): Not implemented yet"
-
-    def PBForwardPushed(self):
-        print "Aide.PBForwardPushed(): Not implemented yet"
-
-    def SlotSourceChanged(self):
-        print "Aide.SlotSourceChanged(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("Aide",s,c)
diff --git a/Ui/desChoixCata.py b/Ui/desChoixCata.py
deleted file mode 100644 (file)
index 22e37b8..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desChoixCata.ui'
-#
-# Created: mar mar 25 10:05:07 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DChoixCata(QDialog):
-    def __init__(self,parent = None,name = None,modal = 0,fl = 0):
-        QDialog.__init__(self,parent,name,modal,fl)
-
-        if not name:
-            self.setName("DChoixCata")
-
-        self.setSizeGripEnabled(1)
-
-        DChoixCataLayout = QGridLayout(self,1,1,11,6,"DChoixCataLayout")
-
-        self.frame3 = QFrame(self,"frame3")
-        self.frame3.setFrameShape(QFrame.StyledPanel)
-        self.frame3.setFrameShadow(QFrame.Raised)
-
-        self.buttonCancel = QPushButton(self.frame3,"buttonCancel")
-        self.buttonCancel.setGeometry(QRect(380,6,90,30))
-        self.buttonCancel.setAutoDefault(1)
-
-        self.buttonOk = QPushButton(self.frame3,"buttonOk")
-        self.buttonOk.setGeometry(QRect(40,6,90,30))
-        self.buttonOk.setAutoDefault(1)
-        self.buttonOk.setDefault(1)
-
-        DChoixCataLayout.addMultiCellWidget(self.frame3,2,2,0,1)
-
-        self.TLNb = QLabel(self,"TLNb")
-        self.TLNb.setMinimumSize(QSize(30,0))
-
-        DChoixCataLayout.addWidget(self.TLNb,0,0)
-
-        self.CBChoixCata = QComboBox(0,self,"CBChoixCata")
-        self.CBChoixCata.setEnabled(1)
-
-        DChoixCataLayout.addWidget(self.CBChoixCata,1,1)
-
-        self.textLabel1_2 = QLabel(self,"textLabel1_2")
-        self.textLabel1_2.setMinimumSize(QSize(380,60))
-
-        DChoixCataLayout.addWidget(self.textLabel1_2,1,0)
-
-        self.languageChange()
-
-        self.resize(QSize(547,172).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.buttonOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.buttonCancel,SIGNAL("clicked()"),self.BCancelPressed)
-        self.connect(self.CBChoixCata,SIGNAL("activated(const QString&)"),self.CataChoisi)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Choix d'une version du code Aster"))
-        self.buttonCancel.setText(self.__tr("&Cancel"))
-        self.buttonCancel.setAccel(QString.null)
-        self.buttonOk.setText(self.__tr("&OK"))
-        self.buttonOk.setAccel(QString.null)
-        self.TLNb.setText(self.__tr("2"))
-        self.textLabel1_2.setText(self.__tr("<font size=\"+1\">Veuillez choisir celle avec laquelle vous souhaitez travailler</font>"))
-
-
-    def CataChoisi(self):
-        print "DChoixCata.CataChoisi(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DChoixCata.BOkPressed(): Not implemented yet"
-
-    def BCancelPressed(self):
-        print "DChoixCata.BCancelPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DChoixCata",s,c)
index 8f6eff5524a19a03d14ace485de8d3c55a276cb4..6239286629f14b63dbe512fdaad14166520a7a71 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>547</width>
+            <width>523</width>
             <height>172</height>
         </rect>
     </property>
                 <string>2</string>
             </property>
         </widget>
-        <widget class="QComboBox" row="1" column="1">
-            <property name="name">
-                <cstring>CBChoixCata</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-        </widget>
         <widget class="QLabel" row="1" column="0">
             <property name="name">
                 <cstring>textLabel1_2</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>2</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="minimumSize">
                 <size>
-                    <width>380</width>
+                    <width>30</width>
                     <height>60</height>
                 </size>
             </property>
                 <string>&lt;font size="+1"&gt;Veuillez choisir celle avec laquelle vous souhaitez travailler&lt;/font&gt;</string>
             </property>
         </widget>
+        <widget class="QComboBox" row="1" column="1">
+            <property name="name">
+                <cstring>CBChoixCata</cstring>
+            </property>
+            <property name="enabled">
+                <bool>true</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+        </widget>
     </grid>
 </widget>
 <connections>
diff --git a/Ui/desCommande.py b/Ui/desCommande.py
deleted file mode 100644 (file)
index 2a4cc27..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desCommande.ui'
-#
-# Created: ven mai 16 13:30:38 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DComm(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DComm")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DCommLayout = QGridLayout(self,1,1,11,6,"DCommLayout")
-
-        self.Commentaire = QLabel(self,"Commentaire")
-        self.Commentaire.setFrameShape(QLabel.NoFrame)
-        self.Commentaire.setFrameShadow(QLabel.Plain)
-
-        DCommLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DCommLayout.addWidget(self.bOk,2,1)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DCommLayout.addWidget(self.bSup,2,0)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DCommLayout.addWidget(self.bHelp,2,2)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.MotClef = QWidget(self.TWChoix,"MotClef")
-
-        self.textLabel1 = QLabel(self.MotClef,"textLabel1")
-        self.textLabel1.setGeometry(QRect(11,11,226,18))
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis")
-        self.LBMCPermis.setGeometry(QRect(11,35,226,342))
-        self.LBMCPermis.setMinimumSize(QSize(0,0))
-
-        self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2")
-        self.textLabel1_2.setGeometry(QRect(243,11,225,18))
-
-        self.LBRegles = QListBox(self.MotClef,"LBRegles")
-        self.LBRegles.setGeometry(QRect(243,35,225,342))
-        self.TWChoix.insertTab(self.MotClef,QString(""))
-
-        self.Concept = QWidget(self.TWChoix,"Concept")
-        ConceptLayout = QGridLayout(self.Concept,1,1,11,6,"ConceptLayout")
-
-        self.groupBox1 = QGroupBox(self.Concept,"groupBox1")
-
-        self.textLabel1_3 = QLabel(self.groupBox1,"textLabel1_3")
-        self.textLabel1_3.setGeometry(QRect(80,50,130,31))
-
-        self.textLabel1_3_2 = QLabel(self.groupBox1,"textLabel1_3_2")
-        self.textLabel1_3_2.setGeometry(QRect(80,170,150,31))
-
-        self.LENomConcept = QLineEdit(self.groupBox1,"LENomConcept")
-        self.LENomConcept.setGeometry(QRect(80,110,310,30))
-
-        self.textLabel3 = QLabel(self.groupBox1,"textLabel3")
-        self.textLabel3.setGeometry(QRect(10,200,290,31))
-
-        self.typeConcept = QLabel(self.groupBox1,"typeConcept")
-        self.typeConcept.setGeometry(QRect(310,200,130,31))
-
-        ConceptLayout.addWidget(self.groupBox1,0,0)
-        self.TWChoix.insertTab(self.Concept,QString(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,110,20))
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-        self.textLabel1_4.setMaximumSize(QSize(32767,20))
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,40))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(0,40))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(70,40))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-        self.TWChoix.insertTab(self.Commande,QString(""))
-
-        DCommLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.languageChange()
-
-        self.resize(QSize(505,483).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.LENomConcept,SIGNAL("returnPressed()"),self.LENomConceptReturnPressed)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed)
-
-        self.setTabOrder(self.LEFiltre,self.LBRegles)
-        self.setTabOrder(self.LBRegles,self.LENomConcept)
-        self.setTabOrder(self.LENomConcept,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.LBMCPermis)
-        self.setTabOrder(self.LBMCPermis,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.bOk)
-        self.setTabOrder(self.bOk,self.bSup)
-        self.setTabOrder(self.bSup,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DComm"))
-        self.Commentaire.setText(QString.null)
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Mots Clefs Permis</b></u></p></h3>"))
-        self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa8\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e"))
-        self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef"))
-        self.groupBox1.setTitle(self.__tr("Concept"))
-        self.textLabel1_3.setText(self.__tr("<u>Nom du concept :</u>"))
-        self.textLabel1_3_2.setText(self.__tr("<u>Type du concept :</u>"))
-        self.textLabel3.setText(self.__trUtf8("\x4c\x27\x6f\x70\xc3\xa9\x72\x61\x74\x65\x75\x72\x20\x72\x65\x74\x6f\x75\x72\x6e\x65\x20\x75\x6e\x20\x63\x6f\x6e\x63\x65\x70\x74\x20\x64\x65\x20\x74\x79\x70\x65\x20\x3a"))
-        self.typeConcept.setText(self.__tr("TypeDuConcept"))
-        self.TWChoix.changeTab(self.Concept,self.__tr("Nommer Concept"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DComm.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DComm.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DComm.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DComm.BSupPressed(): Not implemented yet"
-
-    def LENomConceptReturnPressed(self):
-        print "DComm.LENomConceptReturnPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DComm.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DComm.BuildTabCommand(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DComm.ViewDoc(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DComm.BNextPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DComm",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DComm",s,c,QApplication.UnicodeUTF8)
index 1ebda2c326182e6640511c05d86c43856d850f92..204e76ea084959d8bbb17b8cbf2084c9b90c3e4d 100644 (file)
@@ -8,13 +8,21 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>505</width>
+            <width>506</width>
             <height>483</height>
         </rect>
     </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>3</hsizetype>
+            <vsizetype>3</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
     <property name="minimumSize">
         <size>
-            <width>505</width>
+            <width>0</width>
             <height>0</height>
         </size>
     </property>
         <property name="name">
             <cstring>unnamed</cstring>
         </property>
-        <widget class="QLabel" row="1" column="0" rowspan="1" colspan="3">
+        <widget class="QLayoutWidget" row="2" column="0">
+            <property name="name">
+                <cstring>layout1</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bSup</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>2</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Supprimer</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+S</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>suppression du mot clef</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bOk</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>2</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Valider</string>
+                    </property>
+                    <property name="accel">
+                        <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>validation de la saisie</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bHelp</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>2</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Documentation</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+D</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>affichage documentation aster</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QLabel" row="1" column="0">
             <property name="name">
                 <cstring>Commentaire</cstring>
             </property>
                 <string></string>
             </property>
         </widget>
-        <widget class="QPushButton" row="2" column="1">
-            <property name="name">
-                <cstring>bOk</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Valider</string>
-            </property>
-            <property name="accel">
-                <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="default">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>validation de la saisie</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="0">
-            <property name="name">
-                <cstring>bSup</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Supprimer</string>
-            </property>
-            <property name="accel">
-                <string>Alt+S</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>suppression du mot clef</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="2">
-            <property name="name">
-                <cstring>bHelp</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Documentation</string>
-            </property>
-            <property name="accel">
-                <string>Alt+D</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>affichage documentation aster</string>
-            </property>
-        </widget>
-        <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="3">
+        <widget class="QTabWidget" row="0" column="0">
             <property name="name">
                 <cstring>TWChoix</cstring>
             </property>
                 <attribute name="title">
                     <string>Ajouter Mot-Clef</string>
                 </attribute>
-                <grid>
+                <widget class="QLabel">
                     <property name="name">
-                        <cstring>unnamed</cstring>
+                        <cstring>textLabel1</cstring>
                     </property>
-                    <widget class="QLabel" row="0" column="0">
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>226</width>
+                            <height>23</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Mots Clefs Permis&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>243</x>
+                            <y>11</y>
+                            <width>225</width>
+                            <height>23</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Règles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QListBox">
+                    <property name="name">
+                        <cstring>LBRegles</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>243</x>
+                            <y>40</y>
+                            <width>230</width>
+                            <height>318</height>
+                        </rect>
+                    </property>
+                </widget>
+                <widget class="QListBox">
+                    <property name="name">
+                        <cstring>LBMCPermis</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>40</y>
+                            <width>220</width>
+                            <height>318</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                </widget>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>Concept</cstring>
+                </property>
+                <attribute name="title">
+                    <string>Nommer Concept</string>
+                </attribute>
+                <widget class="QGroupBox">
+                    <property name="name">
+                        <cstring>groupBox1</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>460</width>
+                            <height>340</height>
+                        </rect>
+                    </property>
+                    <property name="title">
+                        <string>Concept</string>
+                    </property>
+                    <widget class="QLabel">
                         <property name="name">
-                            <cstring>textLabel1</cstring>
+                            <cstring>textLabel1_3</cstring>
                         </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
+                        <property name="geometry">
+                            <rect>
+                                <x>80</x>
+                                <y>50</y>
+                                <width>130</width>
+                                <height>31</height>
+                            </rect>
                         </property>
                         <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Mots Clefs Permis&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                            <string>&lt;u&gt;Nom du concept :&lt;/u&gt;</string>
                         </property>
                     </widget>
-                    <widget class="QListBox" row="1" column="1">
+                    <widget class="QLabel">
                         <property name="name">
-                            <cstring>LBRegles</cstring>
+                            <cstring>textLabel1_3_2</cstring>
+                        </property>
+                        <property name="geometry">
+                            <rect>
+                                <x>80</x>
+                                <y>170</y>
+                                <width>150</width>
+                                <height>31</height>
+                            </rect>
+                        </property>
+                        <property name="text">
+                            <string>&lt;u&gt;Type du concept :&lt;/u&gt;</string>
                         </property>
                     </widget>
-                    <widget class="QListBox" row="1" column="0">
+                    <widget class="QLabel">
                         <property name="name">
-                            <cstring>LBMCPermis</cstring>
+                            <cstring>typeConcept</cstring>
                         </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
+                        <property name="geometry">
+                            <rect>
+                                <x>310</x>
+                                <y>200</y>
+                                <width>130</width>
+                                <height>31</height>
+                            </rect>
+                        </property>
+                        <property name="text">
+                            <string>TypeDuConcept</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="0" column="1">
+                    <widget class="QLabel">
                         <property name="name">
-                            <cstring>textLabel1_2</cstring>
+                            <cstring>textLabel3</cstring>
+                        </property>
+                        <property name="geometry">
+                            <rect>
+                                <x>10</x>
+                                <y>200</y>
+                                <width>290</width>
+                                <height>31</height>
+                            </rect>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>2</hsizetype>
+                                <vsizetype>5</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
                         </property>
                         <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Règles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                            <string>L'opérateur retourne un concept de type :</string>
                         </property>
                     </widget>
-                </grid>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>Concept</cstring>
-                </property>
-                <attribute name="title">
-                    <string>Nommer Concept</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QGroupBox" row="0" column="0">
+                    <widget class="QLineEdit">
                         <property name="name">
-                            <cstring>groupBox1</cstring>
+                            <cstring>LENomConcept</cstring>
                         </property>
-                        <property name="title">
-                            <string>Concept</string>
+                        <property name="geometry">
+                            <rect>
+                                <x>80</x>
+                                <y>110</y>
+                                <width>310</width>
+                                <height>30</height>
+                            </rect>
                         </property>
-                        <widget class="QLabel">
-                            <property name="name">
-                                <cstring>textLabel1_3</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>80</x>
-                                    <y>50</y>
-                                    <width>130</width>
-                                    <height>31</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>&lt;u&gt;Nom du concept :&lt;/u&gt;</string>
-                            </property>
-                        </widget>
-                        <widget class="QLabel">
-                            <property name="name">
-                                <cstring>textLabel1_3_2</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>80</x>
-                                    <y>170</y>
-                                    <width>150</width>
-                                    <height>31</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>&lt;u&gt;Type du concept :&lt;/u&gt;</string>
-                            </property>
-                        </widget>
-                        <widget class="QLineEdit">
-                            <property name="name">
-                                <cstring>LENomConcept</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>80</x>
-                                    <y>110</y>
-                                    <width>310</width>
-                                    <height>30</height>
-                                </rect>
-                            </property>
-                        </widget>
-                        <widget class="QLabel">
-                            <property name="name">
-                                <cstring>textLabel3</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>10</x>
-                                    <y>200</y>
-                                    <width>290</width>
-                                    <height>31</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>L'opérateur retourne un concept de type :</string>
-                            </property>
-                        </widget>
-                        <widget class="QLabel">
-                            <property name="name">
-                                <cstring>typeConcept</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>310</x>
-                                    <y>200</y>
-                                    <width>130</width>
-                                    <height>31</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>TypeDuConcept</string>
-                            </property>
-                        </widget>
                     </widget>
-                </grid>
+                </widget>
             </widget>
             <widget class="QWidget">
                 <property name="name">
                         <property name="name">
                             <cstring>textLabel4</cstring>
                         </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>2</hsizetype>
+                                <vsizetype>5</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
                         <property name="text">
                             <string>La commande choisie sera ajoutée APRES la commande courante</string>
                         </property>
diff --git a/Ui/desCommentaire.py b/Ui/desCommentaire.py
deleted file mode 100644 (file)
index 2ad3717..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desCommentaire.ui'
-#
-# Created: Thu Jun 19 16:49:50 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.16
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DComment(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DComment")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DCommentLayout = QGridLayout(self,1,1,11,6,"DCommentLayout")
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.Valeur_Parametre = QWidget(self.TWChoix,"Valeur_Parametre")
-
-        self.textCommentaire = QTextEdit(self.Valeur_Parametre,"textCommentaire")
-        self.textCommentaire.setGeometry(QRect(0,0,480,390))
-        self.TWChoix.insertTab(self.Valeur_Parametre,QString.fromLatin1(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,101,20))
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,30))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,30))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(50,30))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-        self.TWChoix.insertTab(self.Commande,QString.fromLatin1(""))
-
-        DCommentLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DCommentLayout.addWidget(self.bOk,2,1)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DCommentLayout.addWidget(self.bSup,2,0)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DCommentLayout.addWidget(self.bHelp,2,2)
-
-        self.Commentaire = QLabel(self,"Commentaire")
-        self.Commentaire.setFrameShape(QLabel.NoFrame)
-        self.Commentaire.setFrameShadow(QLabel.Plain)
-
-        DCommentLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.languageChange()
-
-        self.resize(QSize(505,483).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed)
-        self.connect(self.textCommentaire,SIGNAL("textChanged()"),self.TexteCommentaireEntre)
-
-        self.setTabOrder(self.LEFiltre,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.textCommentaire)
-        self.setTabOrder(self.textCommentaire,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.bOk)
-        self.setTabOrder(self.bOk,self.bSup)
-        self.setTabOrder(self.bSup,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DComm"))
-        self.TWChoix.changeTab(self.Valeur_Parametre,self.__tr("Commentaire"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(QKeySequence(self.__tr("Alt+S")))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D")))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.Commentaire.setText(QString.null)
-
-
-    def LBNouvCommandeClicked(self):
-        print "DComment.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DComment.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DComment.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DComment.BSupPressed(): Not implemented yet"
-
-    def LENomConceptReturnPressed(self):
-        print "DComment.LENomConceptReturnPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DComment.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DComment.BuildTabCommand(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DComment.ViewDoc(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DComment.BNextPressed(): Not implemented yet"
-
-    def textCommentaireChanged(self):
-        print "DComment.textCommentaireChanged(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DComment",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DComment",s,c,QApplication.UnicodeUTF8)
index 632100824efd8148582cdb0e932e86d81d7ca249..5c1f0ea9846de3ed0702c3c352e2782444844e28 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>505</width>
+            <width>478</width>
             <height>483</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>505</width>
+            <width>0</width>
             <height>0</height>
         </size>
     </property>
         <property name="name">
             <cstring>unnamed</cstring>
         </property>
-        <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="3">
+        <widget class="QLayoutWidget" row="2" column="0">
+            <property name="name">
+                <cstring>layout3</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bSup</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Supprimer</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+S</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>suppression du mot cle30</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bOk</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Valider</string>
+                    </property>
+                    <property name="accel">
+                        <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>validation de la saisie</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bHelp</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Documentation</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+D</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>affichage documentation aster</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QLabel" row="1" column="0">
+            <property name="name">
+                <cstring>Commentaire</cstring>
+            </property>
+            <property name="frameShape">
+                <enum>NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+                <enum>Plain</enum>
+            </property>
+            <property name="text">
+                <string></string>
+            </property>
+        </widget>
+        <widget class="QTabWidget" row="0" column="0">
             <property name="name">
                 <cstring>TWChoix</cstring>
             </property>
                     </property>
                     <property name="geometry">
                         <rect>
-                            <x>0</x>
-                            <y>0</y>
-                            <width>480</width>
-                            <height>390</height>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>425</width>
+                            <height>347</height>
                         </rect>
                     </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>3</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
                 </widget>
             </widget>
             <widget class="QWidget">
                 <attribute name="title">
                     <string>Nouvelle Commande</string>
                 </attribute>
-                <grid>
+                <vbox>
                     <property name="name">
                         <cstring>unnamed</cstring>
                     </property>
-                    <widget class="QListBox" row="2" column="0" rowspan="1" colspan="4">
+                    <widget class="QLayoutWidget">
                         <property name="name">
-                            <cstring>LBNouvCommande</cstring>
+                            <cstring>layout2</cstring>
                         </property>
-                    </widget>
-                    <widget class="QButtonGroup" row="0" column="3" rowspan="2" colspan="1">
-                        <property name="name">
-                            <cstring>buttonGroup1</cstring>
-                        </property>
-                        <property name="title">
-                            <string>Affichage</string>
-                        </property>
-                        <widget class="QRadioButton">
-                            <property name="name">
-                                <cstring>RBGroupe</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>20</x>
-                                    <y>40</y>
-                                    <width>101</width>
-                                    <height>20</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>par groupe</string>
-                            </property>
-                        </widget>
-                        <widget class="QRadioButton">
+                        <hbox>
                             <property name="name">
-                                <cstring>RBalpha</cstring>
+                                <cstring>unnamed</cstring>
                             </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>20</x>
-                                    <y>20</y>
-                                    <width>120</width>
-                                    <height>20</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>alphabétique</string>
-                            </property>
-                            <property name="checked">
-                                <bool>true</bool>
-                            </property>
-                        </widget>
+                            <widget class="QLayoutWidget">
+                                <property name="name">
+                                    <cstring>layout1</cstring>
+                                </property>
+                                <grid>
+                                    <property name="name">
+                                        <cstring>unnamed</cstring>
+                                    </property>
+                                    <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
+                                        <property name="name">
+                                            <cstring>textLabel1_4</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>3</hsizetype>
+                                                <vsizetype>5</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="1" column="0">
+                                        <property name="name">
+                                            <cstring>textLabel6</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>5</hsizetype>
+                                                <vsizetype>5</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>50</width>
+                                                <height>30</height>
+                                            </size>
+                                        </property>
+                                        <property name="text">
+                                            <string>Filtre</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLineEdit" row="1" column="1">
+                                        <property name="name">
+                                            <cstring>LEFiltre</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>3</hsizetype>
+                                                <vsizetype>0</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>30</width>
+                                                <height>30</height>
+                                            </size>
+                                        </property>
+                                    </widget>
+                                    <widget class="QToolButton" row="1" column="2">
+                                        <property name="name">
+                                            <cstring>BNext</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>3</hsizetype>
+                                                <vsizetype>1</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="minimumSize">
+                                            <size>
+                                                <width>20</width>
+                                                <height>30</height>
+                                            </size>
+                                        </property>
+                                        <property name="text">
+                                            <string>Suivant</string>
+                                        </property>
+                                        <property name="iconSet">
+                                            <iconset></iconset>
+                                        </property>
+                                        <property name="toolTip" stdset="0">
+                                            <string>affiche la prochaine occurence</string>
+                                        </property>
+                                    </widget>
+                                </grid>
+                            </widget>
+                            <widget class="QButtonGroup">
+                                <property name="name">
+                                    <cstring>buttonGroup1</cstring>
+                                </property>
+                                <property name="title">
+                                    <string>Affichage</string>
+                                </property>
+                                <widget class="QRadioButton">
+                                    <property name="name">
+                                        <cstring>RBalpha</cstring>
+                                    </property>
+                                    <property name="geometry">
+                                        <rect>
+                                            <x>20</x>
+                                            <y>20</y>
+                                            <width>110</width>
+                                            <height>20</height>
+                                        </rect>
+                                    </property>
+                                    <property name="sizePolicy">
+                                        <sizepolicy>
+                                            <hsizetype>3</hsizetype>
+                                            <vsizetype>0</vsizetype>
+                                            <horstretch>0</horstretch>
+                                            <verstretch>0</verstretch>
+                                        </sizepolicy>
+                                    </property>
+                                    <property name="text">
+                                        <string>alphabétique</string>
+                                    </property>
+                                    <property name="checked">
+                                        <bool>true</bool>
+                                    </property>
+                                </widget>
+                                <widget class="QRadioButton">
+                                    <property name="name">
+                                        <cstring>RBGroupe</cstring>
+                                    </property>
+                                    <property name="geometry">
+                                        <rect>
+                                            <x>20</x>
+                                            <y>40</y>
+                                            <width>101</width>
+                                            <height>20</height>
+                                        </rect>
+                                    </property>
+                                    <property name="text">
+                                        <string>par groupe</string>
+                                    </property>
+                                </widget>
+                            </widget>
+                        </hbox>
                     </widget>
-                    <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
+                    <widget class="QListBox">
                         <property name="name">
-                            <cstring>textLabel1_4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
+                            <cstring>LBNouvCommande</cstring>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="3" column="0" rowspan="1" colspan="4">
+                    <widget class="QLabel">
                         <property name="name">
                             <cstring>textLabel4</cstring>
                         </property>
-                        <property name="text">
-                            <string>La commande choisie sera ajoutée APRES la commande courante</string>
-                        </property>
-                    </widget>
-                    <widget class="QLineEdit" row="1" column="1">
-                        <property name="name">
-                            <cstring>LEFiltre</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>160</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QToolButton" row="1" column="2">
-                        <property name="name">
-                            <cstring>BNext</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>60</width>
-                                <height>30</height>
-                            </size>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>2</hsizetype>
+                                <vsizetype>5</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
                         </property>
                         <property name="text">
-                            <string>Suivant</string>
-                        </property>
-                        <property name="iconSet">
-                            <iconset></iconset>
-                        </property>
-                        <property name="toolTip" stdset="0">
-                            <string>affiche la prochaine occurence</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="1" column="0">
-                        <property name="name">
-                            <cstring>textLabel6</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>50</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>Filtre</string>
+                            <string>La commande choisie sera ajoutée APRES la commande courante</string>
                         </property>
                     </widget>
-                </grid>
+                </vbox>
             </widget>
         </widget>
-        <widget class="QPushButton" row="2" column="1">
-            <property name="name">
-                <cstring>bOk</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Valider</string>
-            </property>
-            <property name="accel">
-                <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="default">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>validation de la saisie</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="0">
-            <property name="name">
-                <cstring>bSup</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Supprimer</string>
-            </property>
-            <property name="accel">
-                <string>Alt+S</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>suppression du mot clef</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="2">
-            <property name="name">
-                <cstring>bHelp</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Documentation</string>
-            </property>
-            <property name="accel">
-                <string>Alt+D</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>affichage documentation aster</string>
-            </property>
-        </widget>
-        <widget class="QLabel" row="1" column="0" rowspan="1" colspan="3">
-            <property name="name">
-                <cstring>Commentaire</cstring>
-            </property>
-            <property name="frameShape">
-                <enum>NoFrame</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Plain</enum>
-            </property>
-            <property name="text">
-                <string></string>
-            </property>
-        </widget>
     </grid>
 </widget>
 <connections>
         <receiver>DComment</receiver>
         <slot>BNextPressed()</slot>
     </connection>
-    <connection>
-        <sender>textCommentaire</sender>
-        <signal>textChanged()</signal>
-        <receiver>DComment</receiver>
-        <slot>TexteCommentaireEntre()</slot>
-    </connection>
 </connections>
 <tabstops>
     <tabstop>LEFiltre</tabstop>
diff --git a/Ui/desError.py b/Ui/desError.py
deleted file mode 100644 (file)
index b9c5979..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desError.ui'
-#
-# Created: mar mar 25 10:05:08 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DError(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DError")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DErrorLayout = QGridLayout(self,1,1,11,6,"DErrorLayout")
-
-        self.textLabel1_3 = QLabel(self,"textLabel1_3")
-
-        DErrorLayout.addWidget(self.textLabel1_3,0,0)
-
-        layout1 = QHBoxLayout(None,0,6,"layout1")
-        spacer1_2 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout1.addItem(spacer1_2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setAutoDefault(1)
-        layout1.addWidget(self.bSup)
-        spacer1 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout1.addItem(spacer1)
-
-        DErrorLayout.addLayout(layout1,1,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DInactif"))
-        self.textLabel1_3.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x34\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x65\x20\x6e\x6f\x65\x75\x64\x20\x73\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x20\x6e\x65\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x20\x70\x61\x73\x20\xc3\xa0\x20\x75\x6e\x20\x6f\x62\x6a\x65\x74\x20\x61\x63\x74\x69\x66\x2e\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-
-
-    def BSupPressed(self):
-        print "DError.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DError.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DError.BOkPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DError",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DError",s,c,QApplication.UnicodeUTF8)
index 9dd94bbd0a8853f58a5d754cfdfb4aa03a02dad9..0d524928a8d9e202e51355bed30ca51f5c597cfd 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>538</width>
             <height>480</height>
         </rect>
     </property>
             <property name="name">
                 <cstring>textLabel1_3</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>2</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&lt;font size="+4"&gt;&lt;p align="center"&gt;Le noeud sélectionné ne correspond pas à un objet actif.&lt;/p&gt;&lt;/font&gt;</string>
             </property>
diff --git a/Ui/desFormule.py b/Ui/desFormule.py
deleted file mode 100644 (file)
index 6d7b72c..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desFormule.ui'
-#
-# Created: ven mai 16 13:30:38 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DFormule(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DFormule")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DFormuleLayout = QGridLayout(self,1,1,11,6,"DFormuleLayout")
-
-        layout4 = QHBoxLayout(None,0,6,"layout4")
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-        layout4.addWidget(self.bSup)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-        layout4.addWidget(self.bOk)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-        layout4.addWidget(self.bHelp)
-
-        DFormuleLayout.addLayout(layout4,2,0)
-
-        self.Commentaire = QLabel(self,"Commentaire")
-
-        DFormuleLayout.addWidget(self.Commentaire,1,0)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.Formule = QWidget(self.TWChoix,"Formule")
-        FormuleLayout = QGridLayout(self.Formule,1,1,11,6,"FormuleLayout")
-
-        self.textLabel1 = QLabel(self.Formule,"textLabel1")
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        FormuleLayout.addWidget(self.textLabel1,0,0)
-
-        self.textLabel1_3 = QLabel(self.Formule,"textLabel1_3")
-
-        FormuleLayout.addMultiCellWidget(self.textLabel1_3,6,6,0,1)
-
-        layout6 = QHBoxLayout(None,0,6,"layout6")
-
-        self.LENomFormule = QLineEdit(self.Formule,"LENomFormule")
-        self.LENomFormule.setMinimumSize(QSize(0,40))
-        layout6.addWidget(self.LENomFormule)
-
-        layout4_2 = QHBoxLayout(None,0,6,"layout4_2")
-
-        self.textLabel1_6 = QLabel(self.Formule,"textLabel1_6")
-        layout4_2.addWidget(self.textLabel1_6)
-
-        self.LENomsArgs = QLineEdit(self.Formule,"LENomsArgs")
-        self.LENomsArgs.setMinimumSize(QSize(230,40))
-        layout4_2.addWidget(self.LENomsArgs)
-
-        self.textLabel1_6_2 = QLabel(self.Formule,"textLabel1_6_2")
-        layout4_2.addWidget(self.textLabel1_6_2)
-        layout6.addLayout(layout4_2)
-
-        FormuleLayout.addMultiCellLayout(layout6,2,2,0,1)
-
-        self.textLabel2 = QLabel(self.Formule,"textLabel2")
-
-        FormuleLayout.addWidget(self.textLabel2,1,1)
-
-        self.textLabel1_3_2 = QLabel(self.Formule,"textLabel1_3_2")
-
-        FormuleLayout.addMultiCellWidget(self.textLabel1_3_2,7,7,0,1)
-
-        self.textLabel2_2 = QLabel(self.Formule,"textLabel2_2")
-
-        FormuleLayout.addMultiCellWidget(self.textLabel2_2,3,3,0,1)
-
-        self.textLabel1_5 = QLabel(self.Formule,"textLabel1_5")
-        self.textLabel1_5.setMinimumSize(QSize(0,0))
-
-        FormuleLayout.addMultiCellWidget(self.textLabel1_5,4,4,0,1)
-
-        self.LECorpsFormule = QLineEdit(self.Formule,"LECorpsFormule")
-        self.LECorpsFormule.setMinimumSize(QSize(0,30))
-
-        FormuleLayout.addMultiCellWidget(self.LECorpsFormule,5,5,0,1)
-
-        self.textLabel1_2 = QLabel(self.Formule,"textLabel1_2")
-
-        FormuleLayout.addWidget(self.textLabel1_2,0,1)
-        self.TWChoix.insertTab(self.Formule,QString(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        LayoutWidget = QWidget(self.buttonGroup1,"layout1")
-        LayoutWidget.setGeometry(QRect(20,20,113,48))
-        layout1 = QVBoxLayout(LayoutWidget,11,6,"layout1")
-
-        self.RBalpha = QRadioButton(LayoutWidget,"RBalpha")
-        self.RBalpha.setChecked(1)
-        layout1.addWidget(self.RBalpha)
-
-        self.RBGroupe = QRadioButton(LayoutWidget,"RBGroupe")
-        layout1.addWidget(self.RBGroupe)
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,40))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,40))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-        self.TWChoix.insertTab(self.Commande,QString(""))
-
-        DFormuleLayout.addWidget(self.TWChoix,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(529,493).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed)
-        self.connect(self.LENomFormule,SIGNAL("returnPressed()"),self.NomFormuleSaisi)
-        self.connect(self.LENomsArgs,SIGNAL("returnPressed()"),self.argsSaisis)
-        self.connect(self.LECorpsFormule,SIGNAL("returnPressed()"),self.FormuleSaisie)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-        self.setTabOrder(self.LEFiltre,self.LENomFormule)
-        self.setTabOrder(self.LENomFormule,self.LENomsArgs)
-        self.setTabOrder(self.LENomsArgs,self.LECorpsFormule)
-        self.setTabOrder(self.LECorpsFormule,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-        self.setTabOrder(self.bHelp,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.RBGroupe)
-        self.setTabOrder(self.RBGroupe,self.LBNouvCommande)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Nom de la formule</b></u></p></h3>"))
-        self.textLabel1_3.setText(self.__trUtf8("\x52\x65\x74\x6f\x75\x72\x2d\x43\x68\x61\x72\x69\x6f\x74\x20\x70\x65\x72\x6d\x65\x74\x20\x64\x65\x20\x76\xc3\xa9\x72\x69\x66\x69\x65\x72\x20\x71\x75\x65\x20\x6c\x27\x65\x78\x70\x72\x65\x73\x73\x69\x6f\x6e\x20\x65\x73\x74\x20\x76\x61\x6c\x69\x64\x65\x2e"))
-        self.textLabel1_6.setText(self.__tr("<h1><b>(</b></h1>"))
-        self.textLabel1_6_2.setText(self.__tr("<h1><b>)</b></h1>"))
-        self.textLabel2.setText(self.__trUtf8("\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x73\xc3\xa9\x70\x61\x72\xc3\xa9\x65\x73\x20\x70\x61\x72\x20\x64\x65\x73\x20\x22\x2c\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x20\x65\x78\x2e\x20\x3a\x20\x78\x2c\x79\x2c\x7a"))
-        self.textLabel1_3_2.setText(self.__trUtf8("\x43\x65\x20\x6e\x27\x65\x73\x74\x20\x71\x75\x27\x61\x70\x72\xc3\xa8\x73\x20\x61\x76\x6f\x69\x72\x20\x61\x70\x70\x75\x79\xc3\xa9\x20\x73\x75\x72\x20\x6c\x65\x20\x62\x6f\x75\x74\x6f\x6e\x20\x56\x61\x6c\x69\x64\x65\x72\x20\x71\x75\x65\x20\x6c\x65\x73\x20\x6e\x6f\x75\x76\x65\x6c\x6c\x65\x73\x0a\x76\x61\x6c\x65\x75\x72\x73\x20\x73\x65\x72\x6f\x6e\x74\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x6d\x65\x6e\x74\x20\x70\x72\x69\x73\x65\x73\x20\x65\x6e\x20\x63\x6f\x6d\x70\x74\x65"))
-        self.textLabel2_2.setText(self.__tr("<font size=\"+4\" face=\"Helvetica\"><b>=</b></font>"))
-        self.textLabel1_5.setText(self.__tr("<h3><p align=\"center\"><u><b>Expression</b></u></p></h3>"))
-        self.textLabel1_2.setText(self.__tr("<h3><p align=\"center\"><u><b>Arguments</b></u></p></h3>"))
-        self.TWChoix.changeTab(self.Formule,self.__trUtf8("\x44\xc3\xa9\x66\x69\x6e\x69\x74\x69\x6f\x6e\x20\x46\x6f\x72\x6d\x75\x6c\x65"))
-        self.textLabel4.setText(self.__trUtf8("\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x6c\x65\x66\x74\x22\x3e\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65\x3c\x2f\x70\x3e"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DFormule.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DFormule.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DFormule.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DFormule.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DFormule.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DFormule.BuildTabCommand(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DFormule.BNextPressed(): Not implemented yet"
-
-    def NomFormuleSaisi(self):
-        print "DFormule.NomFormuleSaisi(): Not implemented yet"
-
-    def argsSaisis(self):
-        print "DFormule.argsSaisis(): Not implemented yet"
-
-    def FormuleSaisie(self):
-        print "DFormule.FormuleSaisie(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DFormule.ViewDoc(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DFormule",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DFormule",s,c,QApplication.UnicodeUTF8)
index 37d5e0a2a49a27c7123e4cbd92fdc903f9f94345..e9041bf1fc7393a2e504eb30a96ba200a226b935 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>529</width>
+            <width>537</width>
             <height>493</height>
         </rect>
     </property>
                 <attribute name="title">
                     <string>Définition Formule</string>
                 </attribute>
-                <grid>
+                <widget class="QLabel">
                     <property name="name">
-                        <cstring>unnamed</cstring>
+                        <cstring>textLabel1</cstring>
                     </property>
-                    <widget class="QLabel" row="0" column="0">
-                        <property name="name">
-                            <cstring>textLabel1</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Nom de la formule&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="6" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel1_3</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Retour-Chariot permet de vérifier que l'expression est valide.</string>
-                        </property>
-                    </widget>
-                    <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2">
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>242</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Nom de la formule&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QLayoutWidget">
+                    <property name="name">
+                        <cstring>layout6</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>103</y>
+                            <width>489</width>
+                            <height>44</height>
+                        </rect>
+                    </property>
+                    <hbox>
                         <property name="name">
-                            <cstring>layout6</cstring>
+                            <cstring>unnamed</cstring>
                         </property>
-                        <hbox>
+                        <widget class="QLineEdit">
                             <property name="name">
-                                <cstring>unnamed</cstring>
+                                <cstring>LENomFormule</cstring>
                             </property>
-                            <widget class="QLineEdit">
-                                <property name="name">
-                                    <cstring>LENomFormule</cstring>
-                                </property>
-                                <property name="minimumSize">
-                                    <size>
-                                        <width>0</width>
-                                        <height>40</height>
-                                    </size>
-                                </property>
-                            </widget>
-                            <widget class="QLayoutWidget">
+                            <property name="minimumSize">
+                                <size>
+                                    <width>0</width>
+                                    <height>40</height>
+                                </size>
+                            </property>
+                        </widget>
+                        <widget class="QLayoutWidget">
+                            <property name="name">
+                                <cstring>layout4</cstring>
+                            </property>
+                            <hbox>
                                 <property name="name">
-                                    <cstring>layout4</cstring>
+                                    <cstring>unnamed</cstring>
                                 </property>
-                                <hbox>
+                                <widget class="QLabel">
                                     <property name="name">
-                                        <cstring>unnamed</cstring>
+                                        <cstring>textLabel1_6</cstring>
                                     </property>
-                                    <widget class="QLabel">
-                                        <property name="name">
-                                            <cstring>textLabel1_6</cstring>
-                                        </property>
-                                        <property name="text">
-                                            <string>&lt;h1&gt;&lt;b&gt;(&lt;/b&gt;&lt;/h1&gt;</string>
-                                        </property>
-                                    </widget>
-                                    <widget class="QLineEdit">
-                                        <property name="name">
-                                            <cstring>LENomsArgs</cstring>
-                                        </property>
-                                        <property name="minimumSize">
-                                            <size>
-                                                <width>230</width>
-                                                <height>40</height>
-                                            </size>
-                                        </property>
-                                    </widget>
-                                    <widget class="QLabel">
-                                        <property name="name">
-                                            <cstring>textLabel1_6_2</cstring>
-                                        </property>
-                                        <property name="text">
-                                            <string>&lt;h1&gt;&lt;b&gt;)&lt;/b&gt;&lt;/h1&gt;</string>
-                                        </property>
-                                    </widget>
-                                </hbox>
-                            </widget>
-                        </hbox>
-                    </widget>
-                    <widget class="QLabel" row="1" column="1">
-                        <property name="name">
-                            <cstring>textLabel2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>variables séparées par des ","
+                                    <property name="text">
+                                        <string>&lt;h1&gt;&lt;b&gt;(&lt;/b&gt;&lt;/h1&gt;</string>
+                                    </property>
+                                </widget>
+                                <widget class="QLineEdit">
+                                    <property name="name">
+                                        <cstring>LENomsArgs</cstring>
+                                    </property>
+                                    <property name="minimumSize">
+                                        <size>
+                                            <width>230</width>
+                                            <height>40</height>
+                                        </size>
+                                    </property>
+                                </widget>
+                                <widget class="QLabel">
+                                    <property name="name">
+                                        <cstring>textLabel1_6_2</cstring>
+                                    </property>
+                                    <property name="text">
+                                        <string>&lt;h1&gt;&lt;b&gt;)&lt;/b&gt;&lt;/h1&gt;</string>
+                                    </property>
+                                </widget>
+                            </hbox>
+                        </widget>
+                    </hbox>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>259</x>
+                            <y>57</y>
+                            <width>241</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>variables séparées par des ","
           par ex. : x,y,z</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="7" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel1_3_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel2_2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>153</y>
+                            <width>489</width>
+                            <height>39</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>&lt;font size="+4" face="Helvetica"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_5</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>198</y>
+                            <width>489</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Expression&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit">
+                    <property name="name">
+                        <cstring>LECorpsFormule</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>244</y>
+                            <width>489</width>
+                            <height>30</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>259</x>
+                            <y>11</y>
+                            <width>241</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Arguments&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_3_2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>326</y>
+                            <width>470</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>Ce n'est qu'après avoir appuyé sur le bouton Valider que les nouvelles
 valeurs seront effectivement prises en compte</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="3" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel2_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;font size="+4" face="Helvetica"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="4" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel1_5</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Expression&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLineEdit" row="5" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>LECorpsFormule</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="1">
-                        <property name="name">
-                            <cstring>textLabel1_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Arguments&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                </grid>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_3</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>280</y>
+                            <width>460</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>2</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>Retour-Chariot permet de vérifier que l'expression est valide.</string>
+                    </property>
+                </widget>
             </widget>
             <widget class="QWidget">
                 <property name="name">
@@ -278,37 +361,143 @@ valeurs seront effectivement prises en compte</string>
                 <attribute name="title">
                     <string>Nouvelle Commande</string>
                 </attribute>
-                <grid>
+                <widget class="QLabel">
                     <property name="name">
-                        <cstring>unnamed</cstring>
+                        <cstring>textLabel6</cstring>
                     </property>
-                    <widget class="QLabel" row="3" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>textLabel4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;p align="left"&gt;La commande choisie sera ajoutée APRES la commande courante&lt;/p&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QButtonGroup" row="0" column="3" rowspan="2" colspan="1">
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>59</y>
+                            <width>40</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>40</width>
+                            <height>0</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>Filtre</string>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>BNext</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>249</x>
+                            <y>59</y>
+                            <width>60</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>60</width>
+                            <height>40</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>Suivant</string>
+                    </property>
+                    <property name="iconSet">
+                        <iconset></iconset>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>affiche la prochaine occurence</string>
+                    </property>
+                </widget>
+                <widget class="QListBox">
+                    <property name="name">
+                        <cstring>LBNouvCommande</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>105</y>
+                            <width>490</width>
+                            <height>234</height>
+                        </rect>
+                    </property>
+                </widget>
+                <widget class="QLineEdit">
+                    <property name="name">
+                        <cstring>LEFiltre</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>57</x>
+                            <y>59</y>
+                            <width>180</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>20</width>
+                            <height>40</height>
+                        </size>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_4</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>260</width>
+                            <height>42</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>2</hsizetype>
+                            <vsizetype>2</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QButtonGroup">
+                    <property name="name">
+                        <cstring>buttonGroup1</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>315</x>
+                            <y>11</y>
+                            <width>180</width>
+                            <height>86</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="title">
+                        <string>Affichage</string>
+                    </property>
+                    <grid>
                         <property name="name">
-                            <cstring>buttonGroup1</cstring>
-                        </property>
-                        <property name="title">
-                            <string>Affichage</string>
+                            <cstring>unnamed</cstring>
                         </property>
-                        <widget class="QLayoutWidget">
+                        <widget class="QLayoutWidget" row="0" column="0">
                             <property name="name">
                                 <cstring>layout1</cstring>
                             </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>20</x>
-                                    <y>20</y>
-                                    <width>113</width>
-                                    <height>48</height>
-                                </rect>
-                            </property>
                             <vbox>
                                 <property name="name">
                                     <cstring>unnamed</cstring>
@@ -334,66 +523,32 @@ valeurs seront effectivement prises en compte</string>
                                 </widget>
                             </vbox>
                         </widget>
-                    </widget>
-                    <widget class="QListBox" row="2" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>LBNouvCommande</cstring>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>textLabel1_4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="1" column="0">
-                        <property name="name">
-                            <cstring>textLabel6</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>40</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>Filtre</string>
-                        </property>
-                    </widget>
-                    <widget class="QLineEdit" row="1" column="1">
-                        <property name="name">
-                            <cstring>LEFiltre</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>160</width>
-                                <height>40</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QToolButton" row="1" column="2">
-                        <property name="name">
-                            <cstring>BNext</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>60</width>
-                                <height>40</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>Suivant</string>
-                        </property>
-                        <property name="iconSet">
-                            <iconset></iconset>
-                        </property>
-                        <property name="toolTip" stdset="0">
-                            <string>affiche la prochaine occurence</string>
-                        </property>
-                    </widget>
-                </grid>
+                    </grid>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel4</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>10</x>
+                            <y>340</y>
+                            <width>480</width>
+                            <height>21</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>&lt;p align="left"&gt;La commande choisie sera ajoutée APRES la commande courante&lt;/p&gt;</string>
+                    </property>
+                </widget>
             </widget>
         </widget>
     </grid>
diff --git a/Ui/desInactif.py b/Ui/desInactif.py
deleted file mode 100644 (file)
index 39e7cce..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desInactif.ui'
-#
-# Created: mar mar 25 10:05:08 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DInactif(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DInactif")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DInactifLayout = QGridLayout(self,1,1,11,6,"DInactifLayout")
-
-        self.textLabel1_3 = QLabel(self,"textLabel1_3")
-
-        DInactifLayout.addWidget(self.textLabel1_3,0,0)
-
-        self.textLabel1 = QLabel(self,"textLabel1")
-
-        DInactifLayout.addWidget(self.textLabel1,1,0)
-
-        layout1 = QHBoxLayout(None,0,6,"layout1")
-        spacer2 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout1.addItem(spacer2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setAutoDefault(1)
-        layout1.addWidget(self.bSup)
-        spacer1 = QSpacerItem(171,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout1.addItem(spacer1)
-
-        DInactifLayout.addLayout(layout1,2,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DInactif"))
-        self.textLabel1_3.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x32\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x65\x20\x6e\x6f\x65\x75\x64\x20\x73\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x20\x6e\x65\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x20\x70\x61\x73\x20\xc3\xa0\x20\x75\x6e\x20\x6f\x62\x6a\x65\x74\x20\x61\x63\x74\x69\x66\x2e\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.textLabel1.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x32\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x0a\x53\x65\x75\x6c\x65\x73\x20\x6c\x65\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x73\x20\x70\x6c\x61\x63\xc3\xa9\x65\x73\x20\x65\x6e\x74\x72\x65\x20\x3a\x0a\x0a\x44\x45\x42\x55\x54\x20\x2f\x20\x46\x49\x4e\x0a\x0a\x73\x6f\x6e\x74\x20\x61\x63\x74\x69\x76\x65\x73\x0a\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-
-
-    def BSupPressed(self):
-        print "DInactif.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DInactif.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DInactif.BOkPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DInactif",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DInactif",s,c,QApplication.UnicodeUTF8)
index 1b8f7f3206145ffb03434dff76f64cb4ba39ecaf..e9731e9a648ae3f7052bed1245ef7758951abff6 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>635</width>
             <height>480</height>
         </rect>
     </property>
             <property name="name">
                 <cstring>textLabel1_3</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>2</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&lt;font size="+2"&gt;&lt;p align="center"&gt;Le noeud sélectionné ne correspond pas à un objet actif.&lt;/p&gt;&lt;/font&gt;</string>
             </property>
             <property name="name">
                 <cstring>textLabel1</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>2</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&lt;font size="+2"&gt;&lt;p align="center"&gt;
 Seules les commandes placées entre :
diff --git a/Ui/desInclude.py b/Ui/desInclude.py
deleted file mode 100644 (file)
index dfe0d62..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desInclude.ui'
-#
-# Created: ven mai 16 13:30:38 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DInc1(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DInc1")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DInc1Layout = QGridLayout(self,1,1,11,6,"DInc1Layout")
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DInc1Layout.addWidget(self.bOk,2,1)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DInc1Layout.addWidget(self.bHelp,2,2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DInc1Layout.addWidget(self.bSup,2,0)
-
-        self.Commentaire = QLabel(self,"Commentaire")
-
-        DInc1Layout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.MotClef = QWidget(self.TWChoix,"MotClef")
-        MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout")
-
-        self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis")
-        self.LBMCPermis.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.LBMCPermis,1,0)
-
-        self.textLabel1 = QLabel(self.MotClef,"textLabel1")
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.textLabel1,0,0)
-
-        self.LBRegles = QListBox(self.MotClef,"LBRegles")
-
-        MotClefLayout.addWidget(self.LBRegles,1,1)
-
-        self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2")
-
-        MotClefLayout.addWidget(self.textLabel1_2,0,1)
-        self.TWChoix.insertTab(self.MotClef,QString(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,101,20))
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,2)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,40))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,0))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-        self.TWChoix.insertTab(self.Commande,QString(""))
-
-        self.TabPage = QWidget(self.TWChoix,"TabPage")
-
-        self.textLabel1_3 = QLabel(self.TabPage,"textLabel1_3")
-        self.textLabel1_3.setGeometry(QRect(30,40,440,41))
-
-        self.LENomFichier = QLineEdit(self.TabPage,"LENomFichier")
-        self.LENomFichier.setGeometry(QRect(18,117,450,40))
-        self.LENomFichier.setSizePolicy(QSizePolicy(0,0,0,0,self.LENomFichier.sizePolicy().hasHeightForWidth()))
-        self.LENomFichier.setMinimumSize(QSize(450,40))
-
-        self.BBrowse = QPushButton(self.TabPage,"BBrowse")
-        self.BBrowse.setGeometry(QRect(288,306,161,41))
-        self.BBrowse.setSizePolicy(QSizePolicy(0,0,0,0,self.BBrowse.sizePolicy().hasHeightForWidth()))
-
-        self.BChangeFile = QPushButton(self.TabPage,"BChangeFile")
-        self.BChangeFile.setGeometry(QRect(290,350,161,41))
-        self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth()))
-        self.TWChoix.insertTab(self.TabPage,QString(""))
-
-        self.TabPage_2 = QWidget(self.TWChoix,"TabPage_2")
-        TabPageLayout = QGridLayout(self.TabPage_2,1,1,11,6,"TabPageLayout")
-
-        self.textLabel1_5 = QLabel(self.TabPage_2,"textLabel1_5")
-
-        TabPageLayout.addWidget(self.textLabel1_5,0,0)
-        self.TWChoix.insertTab(self.TabPage_2,QString(""))
-
-        DInc1Layout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.languageChange()
-
-        self.resize(QSize(521,511).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed)
-        self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
-        self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-        self.setTabOrder(self.LEFiltre,self.LENomFichier)
-        self.setTabOrder(self.LENomFichier,self.bHelp)
-        self.setTabOrder(self.bHelp,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.LBMCPermis)
-        self.setTabOrder(self.LBMCPermis,self.LBRegles)
-        self.setTabOrder(self.LBRegles,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.BBrowse)
-        self.setTabOrder(self.BBrowse,self.BChangeFile)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Mots Clefs Permis</b></u></p></h3>"))
-        self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e"))
-        self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-        self.textLabel1_3.setText(self.__tr("<font size=\"+1\">La commande INCLUDE requiert un nom de Fichier :</font>"))
-        self.BBrowse.setText(self.__tr("Edit"))
-        self.BChangeFile.setText(self.__tr("Autre Fichier"))
-        self.TWChoix.changeTab(self.TabPage,self.__tr("Fichier Include"))
-        self.textLabel1_5.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x49\x4e\x43\x4c\x55\x44\x45\x20\x6e\x27\x61\x20\x70\x61\x73\x20\x64\x65\x20\x66\x69\x63\x68\x69\x65\x72\x20\x61\x73\x73\x6f\x63\x69\xc3\xa9\x2e\x0a\x49\x6c\x20\x66\x61\x75\x74\x20\x64\x27\x61\x62\x6f\x72\x64\x20\x63\x68\x6f\x69\x73\x69\x72\x20\x75\x6e\x20\x6e\x75\x6d\xc3\xa9\x72\x6f\x20\x64\x27\x75\x6e\x69\x74\xc3\xa9\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.TWChoix.changeTab(self.TabPage_2,self.__tr("Fichier Inc"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DInc1.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DInc1.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DInc1.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DInc1.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DInc1.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DInc1.BuildTabCommand(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DInc1.BNextPressed(): Not implemented yet"
-
-    def BBrowsePressed(self):
-        print "DInc1.BBrowsePressed(): Not implemented yet"
-
-    def LENomFichReturnPressed(self):
-        print "DInc1.LENomFichReturnPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DInc1.ViewDoc(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DInc1",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DInc1",s,c,QApplication.UnicodeUTF8)
index 9edfc3e74d93e54fb9cb4a254219bb9a9022c9e8..13a459b4d9ae3dbefe51b30e8834a408b2543a00 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>521</width>
+            <width>570</width>
             <height>511</height>
         </rect>
     </property>
     <property name="caption">
         <string>DMacro</string>
     </property>
-    <grid>
+    <widget class="QLayoutWidget">
         <property name="name">
-            <cstring>unnamed</cstring>
+            <cstring>layout1</cstring>
         </property>
-        <widget class="QPushButton" row="2" column="1">
-            <property name="name">
-                <cstring>bOk</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Valider</string>
-            </property>
-            <property name="accel">
-                <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="default">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>validation de la saisie</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="2">
-            <property name="name">
-                <cstring>bHelp</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Documentation</string>
-            </property>
-            <property name="accel">
-                <string>Alt+D</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>affichage documentation aster</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="2" column="0">
-            <property name="name">
-                <cstring>bSup</cstring>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>30</height>
-                </size>
-            </property>
-            <property name="text">
-                <string>&amp;Supprimer</string>
-            </property>
-            <property name="accel">
-                <string>Alt+S</string>
-            </property>
-            <property name="autoDefault">
-                <bool>true</bool>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>suppression du mot clef</string>
-            </property>
-        </widget>
-        <widget class="QLabel" row="1" column="0" rowspan="1" colspan="3">
+        <property name="geometry">
+            <rect>
+                <x>11</x>
+                <y>447</y>
+                <width>550</width>
+                <height>55</height>
+            </rect>
+        </property>
+        <grid>
             <property name="name">
-                <cstring>Commentaire</cstring>
+                <cstring>unnamed</cstring>
             </property>
-            <property name="text">
-                <string></string>
-            </property>
-        </widget>
-        <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="3">
+            <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
+                <property name="name">
+                    <cstring>Commentaire</cstring>
+                </property>
+                <property name="text">
+                    <string></string>
+                </property>
+            </widget>
+            <widget class="QPushButton" row="1" column="0">
+                <property name="name">
+                    <cstring>bSup</cstring>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>0</width>
+                        <height>30</height>
+                    </size>
+                </property>
+                <property name="text">
+                    <string>&amp;Supprimer</string>
+                </property>
+                <property name="accel">
+                    <string>Alt+S</string>
+                </property>
+                <property name="autoDefault">
+                    <bool>true</bool>
+                </property>
+                <property name="toolTip" stdset="0">
+                    <string>suppression du mot clef</string>
+                </property>
+            </widget>
+            <widget class="QPushButton" row="1" column="2">
+                <property name="name">
+                    <cstring>bHelp</cstring>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>0</width>
+                        <height>30</height>
+                    </size>
+                </property>
+                <property name="text">
+                    <string>&amp;Documentation</string>
+                </property>
+                <property name="accel">
+                    <string>Alt+D</string>
+                </property>
+                <property name="autoDefault">
+                    <bool>true</bool>
+                </property>
+                <property name="toolTip" stdset="0">
+                    <string>affichage documentation aster</string>
+                </property>
+            </widget>
+            <widget class="QPushButton" row="1" column="1">
+                <property name="name">
+                    <cstring>bOk</cstring>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>0</width>
+                        <height>30</height>
+                    </size>
+                </property>
+                <property name="text">
+                    <string>&amp;Valider</string>
+                </property>
+                <property name="accel">
+                    <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+                </property>
+                <property name="autoDefault">
+                    <bool>true</bool>
+                </property>
+                <property name="default">
+                    <bool>true</bool>
+                </property>
+                <property name="toolTip" stdset="0">
+                    <string>validation de la saisie</string>
+                </property>
+            </widget>
+        </grid>
+    </widget>
+    <widget class="QTabWidget">
+        <property name="name">
+            <cstring>TWChoix</cstring>
+        </property>
+        <property name="geometry">
+            <rect>
+                <x>10</x>
+                <y>10</y>
+                <width>550</width>
+                <height>430</height>
+            </rect>
+        </property>
+        <widget class="QWidget">
             <property name="name">
-                <cstring>TWChoix</cstring>
+                <cstring>MotClef</cstring>
             </property>
-            <widget class="QWidget">
+            <attribute name="title">
+                <string>Ajouter Mot-Clef</string>
+            </attribute>
+            <widget class="QLayoutWidget">
                 <property name="name">
-                    <cstring>MotClef</cstring>
+                    <cstring>layout2</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>11</x>
+                        <y>11</y>
+                        <width>520</width>
+                        <height>380</height>
+                    </rect>
                 </property>
-                <attribute name="title">
-                    <string>Ajouter Mot-Clef</string>
-                </attribute>
                 <grid>
                     <property name="name">
                         <cstring>unnamed</cstring>
                     </property>
-                    <widget class="QListBox" row="1" column="0">
+                    <widget class="QLabel" row="0" column="1">
                         <property name="name">
-                            <cstring>LBMCPermis</cstring>
+                            <cstring>textLabel1_2</cstring>
                         </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
+                        <property name="text">
+                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Régles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
                         </property>
                     </widget>
                     <widget class="QLabel" row="0" column="0">
                             <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Mots Clefs Permis&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
                         </property>
                     </widget>
-                    <widget class="QListBox" row="1" column="1">
-                        <property name="name">
-                            <cstring>LBRegles</cstring>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="1">
-                        <property name="name">
-                            <cstring>textLabel1_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Régles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                </grid>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>Commande</cstring>
-                </property>
-                <attribute name="title">
-                    <string>Nouvelle Commande</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QListBox" row="2" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>LBNouvCommande</cstring>
-                        </property>
-                    </widget>
-                    <widget class="QButtonGroup" row="0" column="3" rowspan="2" colspan="1">
-                        <property name="name">
-                            <cstring>buttonGroup1</cstring>
-                        </property>
-                        <property name="title">
-                            <string>Affichage</string>
-                        </property>
-                        <widget class="QRadioButton">
-                            <property name="name">
-                                <cstring>RBGroupe</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>20</x>
-                                    <y>40</y>
-                                    <width>101</width>
-                                    <height>20</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>par groupe</string>
-                            </property>
-                        </widget>
-                        <widget class="QRadioButton">
-                            <property name="name">
-                                <cstring>RBalpha</cstring>
-                            </property>
-                            <property name="geometry">
-                                <rect>
-                                    <x>20</x>
-                                    <y>20</y>
-                                    <width>120</width>
-                                    <height>20</height>
-                                </rect>
-                            </property>
-                            <property name="text">
-                                <string>alphabétique</string>
-                            </property>
-                            <property name="checked">
-                                <bool>true</bool>
-                            </property>
-                        </widget>
-                    </widget>
-                    <widget class="QLabel" row="3" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>textLabel4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>La commande choisie sera ajoutée APRES la commande courante</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>textLabel1_4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="1" column="0">
+                    <widget class="QListBox" row="1" column="0">
                         <property name="name">
-                            <cstring>textLabel6</cstring>
+                            <cstring>LBMCPermis</cstring>
                         </property>
                         <property name="minimumSize">
                             <size>
-                                <width>40</width>
+                                <width>0</width>
                                 <height>0</height>
                             </size>
                         </property>
-                        <property name="text">
-                            <string>Filtre</string>
-                        </property>
                     </widget>
-                    <widget class="QLineEdit" row="1" column="1">
-                        <property name="name">
-                            <cstring>LEFiltre</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>160</width>
-                                <height>40</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QToolButton" row="1" column="2">
+                    <widget class="QListBox" row="1" column="1">
                         <property name="name">
-                            <cstring>BNext</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>60</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>Suivant</string>
-                        </property>
-                        <property name="iconSet">
-                            <iconset></iconset>
+                            <cstring>LBRegles</cstring>
                         </property>
-                        <property name="toolTip" stdset="0">
-                            <string>affiche la prochaine occurence</string>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>3</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
                         </property>
                     </widget>
                 </grid>
             </widget>
-            <widget class="QWidget">
+        </widget>
+        <widget class="QWidget">
+            <property name="name">
+                <cstring>Commande</cstring>
+            </property>
+            <attribute name="title">
+                <string>Nouvelle Commande</string>
+            </attribute>
+            <widget class="QListBox">
+                <property name="name">
+                    <cstring>LBNouvCommande</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>11</x>
+                        <y>97</y>
+                        <width>524</width>
+                        <height>266</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>3</hsizetype>
+                        <vsizetype>7</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+            </widget>
+            <widget class="QButtonGroup">
                 <property name="name">
-                    <cstring>TabPage</cstring>
+                    <cstring>buttonGroup1</cstring>
                 </property>
-                <attribute name="title">
-                    <string>Fichier Include</string>
-                </attribute>
-                <widget class="QLabel">
+                <property name="geometry">
+                    <rect>
+                        <x>375</x>
+                        <y>11</y>
+                        <width>160</width>
+                        <height>80</height>
+                    </rect>
+                </property>
+                <property name="title">
+                    <string>Affichage</string>
+                </property>
+                <widget class="QRadioButton">
                     <property name="name">
-                        <cstring>textLabel1_3</cstring>
+                        <cstring>RBGroupe</cstring>
                     </property>
                     <property name="geometry">
                         <rect>
-                            <x>30</x>
+                            <x>20</x>
                             <y>40</y>
-                            <width>440</width>
-                            <height>41</height>
+                            <width>101</width>
+                            <height>20</height>
                         </rect>
                     </property>
                     <property name="text">
-                        <string>&lt;font size="+1"&gt;La commande INCLUDE requiert un nom de Fichier :&lt;/font&gt;</string>
-                    </property>
-                </widget>
-                <widget class="QLineEdit">
-                    <property name="name">
-                        <cstring>LENomFichier</cstring>
-                    </property>
-                    <property name="geometry">
-                        <rect>
-                            <x>18</x>
-                            <y>117</y>
-                            <width>450</width>
-                            <height>40</height>
-                        </rect>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="minimumSize">
-                        <size>
-                            <width>450</width>
-                            <height>40</height>
-                        </size>
+                        <string>par groupe</string>
                     </property>
                 </widget>
-                <widget class="QPushButton">
+                <widget class="QRadioButton">
                     <property name="name">
-                        <cstring>BBrowse</cstring>
+                        <cstring>RBalpha</cstring>
                     </property>
                     <property name="geometry">
                         <rect>
-                            <x>288</x>
-                            <y>306</y>
-                            <width>161</width>
-                            <height>41</height>
+                            <x>20</x>
+                            <y>20</y>
+                            <width>120</width>
+                            <height>20</height>
                         </rect>
                     </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
                     <property name="text">
-                        <string>Edit</string>
+                        <string>alphabétique</string>
+                    </property>
+                    <property name="checked">
+                        <bool>true</bool>
                     </property>
                 </widget>
-                <widget class="QPushButton">
+            </widget>
+            <widget class="QLabel">
+                <property name="name">
+                    <cstring>textLabel4</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>11</x>
+                        <y>369</y>
+                        <width>524</width>
+                        <height>17</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>2</hsizetype>
+                        <vsizetype>5</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="text">
+                    <string>La commande choisie sera ajoutée APRES la commande courante</string>
+                </property>
+            </widget>
+            <widget class="QToolButton">
+                <property name="name">
+                    <cstring>BNext</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>309</x>
+                        <y>51</y>
+                        <width>60</width>
+                        <height>40</height>
+                    </rect>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>60</width>
+                        <height>0</height>
+                    </size>
+                </property>
+                <property name="text">
+                    <string>Suivant</string>
+                </property>
+                <property name="iconSet">
+                    <iconset></iconset>
+                </property>
+                <property name="toolTip" stdset="0">
+                    <string>affiche la prochaine occurence</string>
+                </property>
+            </widget>
+            <widget class="QLineEdit">
+                <property name="name">
+                    <cstring>LEFiltre</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>57</x>
+                        <y>51</y>
+                        <width>240</width>
+                        <height>40</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>3</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>20</width>
+                        <height>40</height>
+                    </size>
+                </property>
+            </widget>
+            <widget class="QLabel">
+                <property name="name">
+                    <cstring>textLabel6</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>11</x>
+                        <y>51</y>
+                        <width>40</width>
+                        <height>40</height>
+                    </rect>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>40</width>
+                        <height>0</height>
+                    </size>
+                </property>
+                <property name="text">
+                    <string>Filtre</string>
+                </property>
+            </widget>
+            <widget class="QLabel">
+                <property name="name">
+                    <cstring>textLabel1_4</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>11</x>
+                        <y>11</y>
+                        <width>358</width>
+                        <height>34</height>
+                    </rect>
+                </property>
+                <property name="text">
+                    <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
+                </property>
+            </widget>
+        </widget>
+        <widget class="QWidget">
+            <property name="name">
+                <cstring>TabPage</cstring>
+            </property>
+            <attribute name="title">
+                <string>Fichier Include</string>
+            </attribute>
+            <widget class="QPushButton">
+                <property name="name">
+                    <cstring>BBrowse</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>288</x>
+                        <y>306</y>
+                        <width>161</width>
+                        <height>41</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>0</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="text">
+                    <string>Edit</string>
+                </property>
+            </widget>
+            <widget class="QPushButton">
+                <property name="name">
+                    <cstring>BChangeFile</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>290</x>
+                        <y>350</y>
+                        <width>161</width>
+                        <height>41</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>0</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="text">
+                    <string>Autre Fichier</string>
+                </property>
+            </widget>
+            <widget class="QLabel">
+                <property name="name">
+                    <cstring>textLabel1_3</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>30</x>
+                        <y>40</y>
+                        <width>440</width>
+                        <height>41</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>5</hsizetype>
+                        <vsizetype>2</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="text">
+                    <string>&lt;font size="+1"&gt;La commande INCLUDE requiert un nom de Fichier :&lt;/font&gt;</string>
+                </property>
+            </widget>
+            <widget class="QLineEdit">
+                <property name="name">
+                    <cstring>LENomFichier</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>18</x>
+                        <y>117</y>
+                        <width>500</width>
+                        <height>40</height>
+                    </rect>
+                </property>
+                <property name="sizePolicy">
+                    <sizepolicy>
+                        <hsizetype>3</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                    </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                    <size>
+                        <width>40</width>
+                        <height>40</height>
+                    </size>
+                </property>
+            </widget>
+        </widget>
+        <widget class="QWidget">
+            <property name="name">
+                <cstring>TabPage</cstring>
+            </property>
+            <attribute name="title">
+                <string>Fichier Inc</string>
+            </attribute>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QLabel" row="0" column="0">
                     <property name="name">
-                        <cstring>BChangeFile</cstring>
-                    </property>
-                    <property name="geometry">
-                        <rect>
-                            <x>290</x>
-                            <y>350</y>
-                            <width>161</width>
-                            <height>41</height>
-                        </rect>
+                        <cstring>textLabel1_5</cstring>
                     </property>
                     <property name="sizePolicy">
                         <sizepolicy>
-                            <hsizetype>0</hsizetype>
-                            <vsizetype>0</vsizetype>
+                            <hsizetype>3</hsizetype>
+                            <vsizetype>5</vsizetype>
                             <horstretch>0</horstretch>
                             <verstretch>0</verstretch>
                         </sizepolicy>
                     </property>
                     <property name="text">
-                        <string>Autre Fichier</string>
+                        <string>&lt;font size="+1"&gt;&lt;p align="center"&gt;La commande INCLUDE n'a pas de fichier associé.
+Il faut d'abord choisir un numéro d'unité&lt;/p&gt;&lt;/font&gt;</string>
                     </property>
                 </widget>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>TabPage</cstring>
-                </property>
-                <attribute name="title">
-                    <string>Fichier Inc</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QLabel" row="0" column="0">
-                        <property name="name">
-                            <cstring>textLabel1_5</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;font size="+1"&gt;&lt;p align="center"&gt;La commande INCLUDE n'a pas de fichier associé.
-Il faut d'abord choisir un numéro d'unité&lt;/p&gt;&lt;/font&gt;</string>
-                        </property>
-                    </widget>
-                </grid>
-            </widget>
+            </grid>
         </widget>
-    </grid>
+    </widget>
 </widget>
 <connections>
     <connection>
diff --git a/Ui/desListeParam.py b/Ui/desListeParam.py
deleted file mode 100644 (file)
index d832674..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desListeParam.ui'
-#
-# Created: mar mar 25 10:05:08 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DLisParam(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DLisParam")
-
-
-        DLisParamLayout = QGridLayout(self,1,1,11,6,"DLisParamLayout")
-
-        self.LBParam = QListBox(self,"LBParam")
-
-        DLisParamLayout.addWidget(self.LBParam,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(413,394).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBParam,SIGNAL("clicked(QListBoxItem*)"),self.LBParamItemPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__trUtf8("\x53\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x20\x64\x65\x20\x70\x61\x72\x61\x6d\xc3\xa9\x74\x72\x65\x73"))
-
-
-    def LBParamItemPressed(self):
-        print "DLisParam.LBParamItemPressed(): Not implemented yet"
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DLisParam",s,c,QApplication.UnicodeUTF8)
diff --git a/Ui/desMCFact.py b/Ui/desMCFact.py
deleted file mode 100644 (file)
index 50c7de5..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desMCFact.ui'
-#
-# Created: mar mar 25 10:05:08 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DMCFact(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DMCFact")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DMCFactLayout = QGridLayout(self,1,1,11,6,"DMCFactLayout")
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.MotClef = QWidget(self.TWChoix,"MotClef")
-        MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout")
-
-        self.textLabel1 = QLabel(self.MotClef,"textLabel1")
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.textLabel1,0,0)
-
-        self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis")
-        self.LBMCPermis.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.LBMCPermis,1,0)
-
-        self.LBRegles = QListBox(self.MotClef,"LBRegles")
-
-        MotClefLayout.addWidget(self.LBRegles,1,1)
-
-        self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2")
-
-        MotClefLayout.addWidget(self.textLabel1_2,0,1)
-        self.TWChoix.insertTab(self.MotClef,QString(""))
-
-        DMCFactLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setAutoDefault(1)
-
-        DMCFactLayout.addWidget(self.bSup,2,0)
-
-        self.Commentaire = QLabel(self,"Commentaire")
-
-        DMCFactLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setAutoDefault(1)
-
-        DMCFactLayout.addWidget(self.bHelp,2,2)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DMCFactLayout.addWidget(self.bOk,2,1)
-
-        self.languageChange()
-
-        self.resize(QSize(511,499).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Mots Clefs Permis</b></u></p></h3>"))
-        self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e"))
-        self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.Commentaire.setText(QString.null)
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-
-
-    def ViewDoc(self):
-        print "DMCFact.ViewDoc(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DMCFact.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DMCFact.BOkPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DMCFact",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DMCFact",s,c,QApplication.UnicodeUTF8)
index 433df5f9bdf39039e363005bc8be21bf4f2d0889..0656362575cfa27dd4601373381990115f553a9d 100644 (file)
@@ -8,7 +8,7 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>511</width>
+            <width>592</width>
             <height>499</height>
         </rect>
     </property>
             <property name="name">
                 <cstring>TWChoix</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <widget class="QWidget">
                 <property name="name">
                     <cstring>MotClef</cstring>
                 <attribute name="title">
                     <string>Ajouter Mot-Clef</string>
                 </attribute>
-                <grid>
+                <widget class="QLayoutWidget">
                     <property name="name">
-                        <cstring>unnamed</cstring>
+                        <cstring>layout1</cstring>
                     </property>
-                    <widget class="QLabel" row="0" column="0">
-                        <property name="name">
-                            <cstring>textLabel1</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Mots Clefs Permis&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QListBox" row="1" column="0">
-                        <property name="name">
-                            <cstring>LBMCPermis</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QListBox" row="1" column="1">
+                    <property name="geometry">
+                        <rect>
+                            <x>10</x>
+                            <y>40</y>
+                            <width>550</width>
+                            <height>330</height>
+                        </rect>
+                    </property>
+                    <hbox>
                         <property name="name">
-                            <cstring>LBRegles</cstring>
+                            <cstring>unnamed</cstring>
                         </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="1">
+                        <widget class="QListBox">
+                            <property name="name">
+                                <cstring>LBMCPermis</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>3</hsizetype>
+                                    <vsizetype>7</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="minimumSize">
+                                <size>
+                                    <width>0</width>
+                                    <height>0</height>
+                                </size>
+                            </property>
+                        </widget>
+                        <widget class="QListBox">
+                            <property name="name">
+                                <cstring>LBRegles</cstring>
+                            </property>
+                        </widget>
+                    </hbox>
+                </widget>
+                <widget class="QLayoutWidget">
+                    <property name="name">
+                        <cstring>layout2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>-4</y>
+                            <width>560</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <hbox>
                         <property name="name">
-                            <cstring>textLabel1_2</cstring>
+                            <cstring>unnamed</cstring>
                         </property>
-                        <property name="text">
-                            <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Régles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
-                        </property>
-                    </widget>
-                </grid>
+                        <widget class="QLabel">
+                            <property name="name">
+                                <cstring>textLabel1</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>3</hsizetype>
+                                    <vsizetype>5</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="minimumSize">
+                                <size>
+                                    <width>0</width>
+                                    <height>0</height>
+                                </size>
+                            </property>
+                            <property name="text">
+                                <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Mots Clefs Permis&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                            </property>
+                        </widget>
+                        <widget class="QLabel">
+                            <property name="name">
+                                <cstring>textLabel1_2</cstring>
+                            </property>
+                            <property name="sizePolicy">
+                                <sizepolicy>
+                                    <hsizetype>3</hsizetype>
+                                    <vsizetype>5</vsizetype>
+                                    <horstretch>0</horstretch>
+                                    <verstretch>0</verstretch>
+                                </sizepolicy>
+                            </property>
+                            <property name="text">
+                                <string>&lt;h3&gt;&lt;p align="center"&gt;&lt;u&gt;&lt;b&gt;Régles&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;/h3&gt;</string>
+                            </property>
+                        </widget>
+                    </hbox>
+                </widget>
             </widget>
         </widget>
         <widget class="QPushButton" row="2" column="0">
             <property name="name">
                 <cstring>bSup</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&amp;Supprimer</string>
             </property>
             <property name="name">
                 <cstring>bHelp</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&amp;Documentation</string>
             </property>
             <property name="name">
                 <cstring>bOk</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="text">
                 <string>&amp;Valider</string>
             </property>
diff --git a/Ui/desMCListAjout.py b/Ui/desMCListAjout.py
deleted file mode 100644 (file)
index bb0d598..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desMCListAjout.ui'
-#
-# Created: mar mar 25 10:05:08 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DMCListAjout(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DMCListAjout")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DMCListAjoutLayout = QGridLayout(self,1,1,11,6,"DMCListAjoutLayout")
-
-        self.textLabel1 = QLabel(self,"textLabel1")
-
-        DMCListAjoutLayout.addMultiCellWidget(self.textLabel1,1,1,0,2)
-
-        self.textLabel1_2 = QLabel(self,"textLabel1_2")
-
-        DMCListAjoutLayout.addMultiCellWidget(self.textLabel1_2,2,2,0,2)
-
-        layout9 = QHBoxLayout(None,0,6,"layout9")
-        spacer4 = QSpacerItem(60,21,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout9.addItem(spacer4)
-
-        self.bAjout = QPushButton(self,"bAjout")
-        self.bAjout.setAutoDefault(1)
-        self.bAjout.setDefault(1)
-        layout9.addWidget(self.bAjout)
-        spacer2 = QSpacerItem(80,21,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout9.addItem(spacer2)
-
-        DMCListAjoutLayout.addMultiCellLayout(layout9,8,8,0,2)
-        spacer1 = QSpacerItem(21,40,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        DMCListAjoutLayout.addItem(spacer1,9,1)
-
-        self.textLabel1_2_2 = QLabel(self,"textLabel1_2_2")
-
-        DMCListAjoutLayout.addMultiCellWidget(self.textLabel1_2_2,6,6,0,2)
-        spacer5 = QSpacerItem(20,20,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        DMCListAjoutLayout.addItem(spacer5,7,1)
-
-        self.MCFacteur = QLabel(self,"MCFacteur")
-
-        DMCListAjoutLayout.addMultiCellWidget(self.MCFacteur,4,4,0,2)
-        spacer6 = QSpacerItem(21,31,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        DMCListAjoutLayout.addItem(spacer6,5,1)
-        spacer7 = QSpacerItem(21,51,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        DMCListAjoutLayout.addItem(spacer7,3,1)
-        spacer8 = QSpacerItem(41,51,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        DMCListAjoutLayout.addItem(spacer8,0,1)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setAutoDefault(1)
-
-        DMCListAjoutLayout.addWidget(self.bSup,10,0)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DMCListAjoutLayout.addWidget(self.bOk,10,1)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setAutoDefault(1)
-
-        DMCListAjoutLayout.addWidget(self.bHelp,10,2)
-
-        self.languageChange()
-
-        self.resize(QSize(459,472).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BAjoutClicked)
-        self.connect(self.bAjout,SIGNAL("clicked()"),self.BAjoutClicked)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Form1"))
-        self.textLabel1.setText(self.__tr("<p align=\"center\"><font size=\"+1\">Pour ajouter une autre occurrence</font></p>"))
-        self.textLabel1_2.setText(self.__tr("<p align=\"center\"><font size=\"+1\">du mot clef-facteur</font> </p>"))
-        self.bAjout.setText(self.__tr("&Ajouter"))
-        self.bAjout.setAccel(self.__tr("Alt+A"))
-        QToolTip.add(self.bAjout,self.__tr("validation de la saisie"))
-        self.textLabel1_2_2.setText(self.__tr("<p align=\"center\"><font size=\"+1\">cliquez ci-dessous</font> </p>"))
-        self.MCFacteur.setText(self.__tr("<p align=\"center\">AFFE</p>"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-
-
-    def BAjoutClicked(self):
-        print "DMCListAjout.BAjoutClicked(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DMCListAjout.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DMCListAjout.ViewDoc(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DMCListAjout",s,c)
index ff58dbcd333f1eac0b32f4cd295fee00268bc7d9..6458e905030390213c10685e0aa0420a55bf09b7 100644 (file)
@@ -8,13 +8,21 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>459</width>
+            <width>509</width>
             <height>472</height>
         </rect>
     </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>3</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desMacro.py b/Ui/desMacro.py
deleted file mode 100644 (file)
index 4850e07..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desMacro.ui'
-#
-# Created: Mon Jun 2 15:35:12 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.16
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DMacro(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DMacro")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DMacroLayout = QGridLayout(self,1,1,11,6,"DMacroLayout")
-
-        self.Commentaire = QLabel(self,"Commentaire")
-
-        DMacroLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.MotClef = QWidget(self.TWChoix,"MotClef")
-        MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout")
-
-        self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis")
-        self.LBMCPermis.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.LBMCPermis,1,0)
-
-        self.LBRegles = QListBox(self.MotClef,"LBRegles")
-
-        MotClefLayout.addWidget(self.LBRegles,1,1)
-
-        self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2")
-
-        MotClefLayout.addWidget(self.textLabel1_2,0,1)
-
-        self.textLabel1 = QLabel(self.MotClef,"textLabel1")
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.textLabel1,0,0)
-        self.TWChoix.insertTab(self.MotClef,QString.fromLatin1(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,120,20))
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,0))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,30))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-        self.TWChoix.insertTab(self.Commande,QString.fromLatin1(""))
-
-        self.TabPage = QWidget(self.TWChoix,"TabPage")
-
-        self.groupBox1_2 = QGroupBox(self.TabPage,"groupBox1_2")
-        self.groupBox1_2.setGeometry(QRect(0,0,520,380))
-
-        self.textLabel3_2 = QLabel(self.groupBox1_2,"textLabel3_2")
-        self.textLabel3_2.setGeometry(QRect(10,230,320,31))
-
-        self.typeConcept = QLabel(self.groupBox1_2,"typeConcept")
-        self.typeConcept.setGeometry(QRect(360,230,130,31))
-
-        self.textLabel1_3_2_3 = QLabel(self.groupBox1_2,"textLabel1_3_2_3")
-        self.textLabel1_3_2_3.setGeometry(QRect(20,200,160,31))
-
-        self.textLabel1_3_3 = QLabel(self.groupBox1_2,"textLabel1_3_3")
-        self.textLabel1_3_3.setGeometry(QRect(20,50,150,31))
-
-        self.LENomConcept = QLineEdit(self.groupBox1_2,"LENomConcept")
-        self.LENomConcept.setGeometry(QRect(20,80,440,30))
-        self.TWChoix.insertTab(self.TabPage,QString.fromLatin1(""))
-
-        DMacroLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DMacroLayout.addWidget(self.bSup,2,0)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DMacroLayout.addWidget(self.bHelp,2,2)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DMacroLayout.addWidget(self.bOk,2,1)
-
-        self.languageChange()
-
-        self.resize(QSize(521,499).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed)
-        self.connect(self.LENomConcept,SIGNAL("returnPressed()"),self.LENomConceptReturnPressed)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-        self.setTabOrder(self.LEFiltre,self.LENomConcept)
-        self.setTabOrder(self.LENomConcept,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.LBMCPermis)
-        self.setTabOrder(self.LBMCPermis,self.LBRegles)
-        self.setTabOrder(self.LBRegles,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.bSup)
-        self.setTabOrder(self.bSup,self.bHelp)
-        self.setTabOrder(self.bHelp,self.bOk)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e"))
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Mots Clefs Permis</b></u></p></h3>"))
-        self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-        self.groupBox1_2.setTitle(self.__tr("Concept"))
-        self.textLabel3_2.setText(self.__trUtf8("\x4c\x27\x6f\x70\xc3\xa9\x72\x61\x74\x65\x75\x72\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x72\x65\x74\x6f\x75\x72\x6e\x65\x20\x75\x6e\x20\x63\x6f\x6e\x63\x65\x70\x74\x20\x64\x65\x20\x74\x79\x70\x65\x20\x3a"))
-        self.typeConcept.setText(self.__tr("TypeDuConcept"))
-        self.textLabel1_3_2_3.setText(self.__tr("<u>Type du concept :</u>"))
-        self.textLabel1_3_3.setText(self.__tr("<u>Nom du concept :</u>"))
-        self.TWChoix.changeTab(self.TabPage,self.__tr("Nommer Concept"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(QKeySequence(self.__tr("Alt+S")))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D")))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DMacro.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DMacro.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DMacro.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DMacro.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DMacro.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DMacro.BuildTabCommand(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DMacro.BNextPressed(): Not implemented yet"
-
-    def LENomConceptReturnPressed(self):
-        print "DMacro.LENomConceptReturnPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DMacro.ViewDoc(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DMacro",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DMacro",s,c,QApplication.UnicodeUTF8)
index d451544b4cbab09755b170bc229a6f5e96f8c3c2..1390f4f50fbe5a03a8ab8b7ff93b1952dd88328f 100644 (file)
@@ -8,13 +8,21 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>521</width>
+            <width>529</width>
             <height>499</height>
         </rect>
     </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>3</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
     <property name="minimumSize">
         <size>
-            <width>505</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desParam.py b/Ui/desParam.py
deleted file mode 100644 (file)
index bd88658..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desParam.ui'
-#
-# Created: ven mai 16 13:30:38 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DParam(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DParam")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DParamLayout = QGridLayout(self,1,1,11,6,"DParamLayout")
-
-        self.Commentaire = QLabel(self,"Commentaire")
-        self.Commentaire.setFrameShape(QLabel.NoFrame)
-        self.Commentaire.setFrameShadow(QLabel.Plain)
-
-        DParamLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.Valeur_Parametre = QWidget(self.TWChoix,"Valeur_Parametre")
-
-        self.textLabel2_2_2 = QLabel(self.Valeur_Parametre,"textLabel2_2_2")
-        self.textLabel2_2_2.setGeometry(QRect(80,11,231,89))
-
-        self.Commentaire_2 = QLabel(self.Valeur_Parametre,"Commentaire_2")
-        self.Commentaire_2.setGeometry(QRect(11,275,459,89))
-
-        self.lineEditNom = QLineEdit(self.Valeur_Parametre,"lineEditNom")
-        self.lineEditNom.setGeometry(QRect(80,106,231,31))
-        self.lineEditNom.setMinimumSize(QSize(231,31))
-
-        self.textLabel2_2 = QLabel(self.Valeur_Parametre,"textLabel2_2")
-        self.textLabel2_2.setGeometry(QRect(11,106,63,31))
-
-        self.textLabel2 = QLabel(self.Valeur_Parametre,"textLabel2")
-        self.textLabel2.setGeometry(QRect(11,143,63,31))
-
-        self.Commentaire2 = QLabel(self.Valeur_Parametre,"Commentaire2")
-        self.Commentaire2.setGeometry(QRect(11,180,459,89))
-
-        self.lineEditVal = QLineEdit(self.Valeur_Parametre,"lineEditVal")
-        self.lineEditVal.setGeometry(QRect(80,143,231,31))
-        self.lineEditVal.setMinimumSize(QSize(231,31))
-        self.TWChoix.insertTab(self.Valeur_Parametre,QString(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,101,20))
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,0))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,30))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-        self.TWChoix.insertTab(self.Commande,QString(""))
-
-        DParamLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DParamLayout.addWidget(self.bOk,2,1)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DParamLayout.addWidget(self.bSup,2,0)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DParamLayout.addWidget(self.bHelp,2,2)
-
-        self.languageChange()
-
-        self.resize(QSize(505,483).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed)
-        self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.BOkPressed)
-
-        self.setTabOrder(self.LEFiltre,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.lineEditNom)
-        self.setTabOrder(self.lineEditNom,self.lineEditVal)
-        self.setTabOrder(self.lineEditVal,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.bOk)
-        self.setTabOrder(self.bOk,self.bSup)
-        self.setTabOrder(self.bSup,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DComm"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel2_2_2.setText(self.__tr("<u><b><p align=\"center\">Parametre</p></b></u>"))
-        self.Commentaire_2.setText(QString.null)
-        self.textLabel2_2.setText(self.__tr("<b> Nom: </b>"))
-        self.textLabel2.setText(self.__tr("<b> Valeur: </b>"))
-        self.Commentaire2.setText(self.__trUtf8("\x52\x65\x74\x6f\x75\x72\x20\x43\x68\x61\x72\x69\x6f\x74\x20\x64\x61\x6e\x73\x20\x75\x6e\x65\x20\x73\x6f\x6e\x65\x20\x64\x65\x20\x73\x61\x69\x73\x69\x65\x20\x70\x65\x72\x6d\x65\x74\x20\x64\x65\x20\x76\xc3\xa9\x72\x69\x66\x69\x65\x72\x20\x6c\x61\x20\x0a\x76\x61\x6c\x69\x64\x69\x74\xc3\xa9\x20\x64\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x2e\x0a\x0a\x4c\x65\x73\x20\x6e\x6f\x75\x76\x65\x6c\x6c\x65\x73\x20\x76\x61\x6c\x65\x75\x72\x73\x20\x6e\x65\x20\x73\x65\x72\x6f\x6e\x74\x20\x70\x72\x69\x73\x65\x73\x20\x20\x65\x6e\x20\x63\x6f\x6d\x70\x74\x65\x20\x71\x75\x27\x61\x70\x72\xc3\xa8\x73\x20\x61\x76\x6f\x69\x72\x20\x0a\x61\x70\x70\x75\x79\xc3\xa9\x20\x73\x75\x72\x20\x20\x6c\x65\x20\x62\x6f\x75\x74\x6f\x6e\x20\x56\x61\x6c\x69\x64\x65\x72\x2e"))
-        self.TWChoix.changeTab(self.Valeur_Parametre,self.__tr("Valeur Parametre"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DParam.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DParam.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DParam.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DParam.BSupPressed(): Not implemented yet"
-
-    def LENomConceptReturnPressed(self):
-        print "DParam.LENomConceptReturnPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DParam.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DParam.BuildTabCommand(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DParam.ViewDoc(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DParam.BNextPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DParam",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DParam",s,c,QApplication.UnicodeUTF8)
index 7aa81f89d0dd2048a14e4c786657f638c294c88f..ccf3316b3a2a114f35dc42f2ded2ce545ecc4e71 100644 (file)
@@ -8,13 +8,21 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>505</width>
+            <width>517</width>
             <height>483</height>
         </rect>
     </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>3</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
     <property name="minimumSize">
         <size>
-            <width>505</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desPlusieursBase.py b/Ui/desPlusieursBase.py
deleted file mode 100644 (file)
index dc7ca0f..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desPlusieursBase.ui'
-#
-# Created: lun mai 5 17:43:44 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-image0_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x14\x00\x00\x00\x14" \
-    "\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\x00\x00\x00" \
-    "\x8d\x49\x44\x41\x54\x38\x8d\xb5\xd3\xdb\x0d\x80" \
-    "\x20\x0c\x05\xd0\x5b\xe3\x3a\x8e\xe2\x4c\x86\x99" \
-    "\x18\x85\x81\xea\x87\xc6\xc4\xd2\x56\x28\xd8\x84" \
-    "\x0f\x5e\x27\x17\x50\x02\x63\x6a\x2d\x73\xb9\x1f" \
-    "\xc0\xb5\x69\x15\x39\x17\xc3\xa0\x7e\xf0\xae\x9c" \
-    "\xca\xab\xbf\x1f\x5b\xb5\xa6\xed\xc8\x0c\x02\x83" \
-    "\x34\x20\x06\x02\x00\x81\x65\xc2\x38\x28\x30\x2f" \
-    "\xa9\x77\xdd\x36\xc6\xa0\x67\xa7\x78\x14\x3f\xa1" \
-    "\x85\xf9\x5b\xe6\x61\x76\xc2\x20\xa6\x83\x03\x58" \
-    "\x0d\x0e\x62\x7a\xc2\x01\xcc\x04\xa3\xd8\x55\x2c" \
-    "\x1a\xc0\x39\x95\xab\x27\xe7\x5a\x9a\x3e\x18\x47" \
-    "\xdd\xef\x30\x72\xec\xef\x5f\xaf\xb3\x4e\xcb\x01" \
-    "\x65\xf7\x82\x6b\x45\x7b\x00\x00\x00\x00\x49\x45" \
-    "\x4e\x44\xae\x42\x60\x82"
-image1_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \
-    "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \
-    "\xc7\x49\x44\x41\x54\x38\x8d\xcd\x94\x59\x0e\xc3" \
-    "\x20\x0c\x44\x71\xd5\x7b\xc7\x3d\xf9\xf4\x07\xd3" \
-    "\x31\xb1\x59\xa2\x28\xaa\x25\x44\x48\xbc\x3c\xc6" \
-    "\x81\x52\xfe\xc0\xe4\x42\x0c\xee\xce\xb9\x12\xe0" \
-    "\x8a\x02\x39\x83\x88\x48\xf5\xdf\x02\xc9\x9c\x11" \
-    "\xf8\x60\x04\x30\x01\x19\x05\x4a\xe8\x68\xc5\x6a" \
-    "\xc2\x06\xc0\x6b\x4b\x10\x91\x11\xc8\x02\x87\x4f" \
-    "\x3a\x52\xa5\x87\x75\x71\x23\x89\x7e\x40\x39\xc4" \
-    "\x6b\x50\xd8\x86\x5b\x07\xf5\x40\x0a\x45\x00\x53" \
-    "\x33\x08\x93\xcf\x86\x74\xa3\x00\x28\xd4\x92\xde" \
-    "\xef\x04\x62\x6b\x55\x9d\xfe\x48\xac\x84\x2b\x1a" \
-    "\x6d\xaa\xe6\x85\x01\x55\x03\x3b\x99\xc5\x00\x9f" \
-    "\x70\xce\xda\x11\x1a\xab\x41\x3b\x6f\x6a\x70\xd1" \
-    "\x18\xe0\x08\xe6\xfd\x8b\xc5\x1d\x5d\x00\xa0\xf6" \
-    "\x14\x55\x6d\x1f\xf9\xb9\xbe\x49\x52\xaa\xbc\x37" \
-    "\x21\xf8\xf8\xb6\xf6\x24\xc5\x57\xef\x89\x47\xaf" \
-    "\xed\xf4\x8c\x5e\x60\xb8\xdf\xbe\xb8\x1d\x6d\xab" \
-    "\x9a\xff\x99\x27\x00\x00\x00\x00\x49\x45\x4e\x44" \
-    "\xae\x42\x60\x82"
-image2_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \
-    "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \
-    "\xcf\x49\x44\x41\x54\x38\x8d\xd5\x94\xdb\x0e\xc3" \
-    "\x20\x0c\x43\xed\xfd\xf8\xd8\x97\xbb\x0f\x34\x5b" \
-    "\x48\x08\x45\xd5\x1e\xb6\x48\x88\xf4\x12\xe7\x60" \
-    "\x01\xc0\x0f\x04\x6f\xd6\xe9\x9b\xba\x77\x20\x04" \
-    "\x80\x92\x4a\x10\x32\xc9\x2e\xfb\xd8\xc7\xd5\xca" \
-    "\xbc\xc0\x25\x40\x00\x99\xe9\x57\x84\x95\x68\xfe" \
-    "\x7f\x06\xc0\xde\xd1\xde\xb3\x2b\x4a\x1e\xc4\xea" \
-    "\x82\x4b\x9e\x74\x09\x71\x65\xbd\x01\xf8\x55\x27" \
-    "\xf7\x8a\x72\x01\xe0\xa3\x12\x9f\x34\x5a\x01\x7c" \
-    "\x54\x3b\xaf\xdc\x98\x3d\x0f\x71\x09\xd1\x5a\x33" \
-    "\x1b\x47\x1f\x47\x07\x2c\x17\x49\x4a\x82\x33\x8f" \
-    "\x61\x78\x20\x3a\x88\x17\xe6\x73\x06\xb1\xf0\x8b" \
-    "\x07\xba\x03\xe6\x02\xc9\xb8\x31\x07\x7e\x37\xe0" \
-    "\x20\x9e\x67\xe3\x38\x67\x10\x97\x7b\x17\xde\x80" \
-    "\xc1\x85\xad\x38\x69\x5a\x51\xd5\x22\xc8\x2c\xe7" \
-    "\x79\x12\xe2\xfe\xd8\xbe\x83\x76\x20\x92\xf5\x2b" \
-    "\x18\x20\xdd\x11\xbb\x10\xe5\x65\xb5\x3a\x5a\x3b" \
-    "\xba\xff\x13\x07\x13\xd6\x6f\xa6\x98\x18\x57\x06" \
-    "\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82"
-
-class DPlusBase(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        self.image0 = QPixmap()
-        self.image0.loadFromData(image0_data,"PNG")
-        self.image1 = QPixmap()
-        self.image1.loadFromData(image1_data,"PNG")
-        self.image2 = QPixmap()
-        self.image2.loadFromData(image2_data,"PNG")
-        if not name:
-            self.setName("DPlusBase")
-
-        self.setMinimumSize(QSize(350,0))
-        self.setIcon(self.image0)
-
-        DPlusBaseLayout = QGridLayout(self,1,1,11,6,"DPlusBaseLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.textLabel1 = QLabel(self.Widget8,"textLabel1")
-
-        Widget8Layout.addWidget(self.textLabel1,0,0)
-
-        self.LBValeurs = QListBox(self.Widget8,"LBValeurs")
-        self.LBValeurs.setMinimumSize(QSize(200,0))
-
-        Widget8Layout.addMultiCellWidget(self.LBValeurs,1,9,0,0)
-        spacer4 = QSpacerItem(21,231,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addMultiCell(spacer4,5,9,1,2)
-        spacer3_3 = QSpacerItem(31,30,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addMultiCell(spacer3_3,0,0,1,2)
-
-        self.BAjout1Val = QToolButton(self.Widget8,"BAjout1Val")
-        self.BAjout1Val.setSizePolicy(QSizePolicy(0,0,0,0,self.BAjout1Val.sizePolicy().hasHeightForWidth()))
-        self.BAjout1Val.setMinimumSize(QSize(40,30))
-        self.BAjout1Val.setIconSet(QIconSet(self.image1))
-
-        Widget8Layout.addMultiCellWidget(self.BAjout1Val,2,2,1,2)
-        spacer5 = QSpacerItem(150,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        Widget8Layout.addMultiCell(spacer5,8,8,2,4)
-
-        layout7 = QVBoxLayout(None,0,6,"layout7")
-
-        self.bParam = QPushButton(self.Widget8,"bParam")
-        self.bParam.setMinimumSize(QSize(0,30))
-        self.bParam.setAutoDefault(1)
-        layout7.addWidget(self.bParam)
-
-        self.bImport = QPushButton(self.Widget8,"bImport")
-        self.bImport.setMinimumSize(QSize(0,30))
-        self.bImport.setAutoDefault(1)
-        layout7.addWidget(self.bImport)
-
-        Widget8Layout.addMultiCellLayout(layout7,7,8,5,5)
-        spacer3 = QSpacerItem(31,50,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer3,6,5)
-        spacer3_2 = QSpacerItem(31,50,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer3_2,9,5)
-
-        self.BSalome = QToolButton(self.Widget8,"BSalome")
-        self.BSalome.setSizePolicy(QSizePolicy(0,0,0,0,self.BSalome.sizePolicy().hasHeightForWidth()))
-        self.BSalome.setMinimumSize(QSize(40,30))
-        self.BSalome.setIconSet(QIconSet(self.image0))
-
-        Widget8Layout.addWidget(self.BSalome,4,3)
-
-        self.BView2D = QPushButton(self.Widget8,"BView2D")
-        self.BView2D.setMinimumSize(QSize(120,30))
-
-        Widget8Layout.addMultiCellWidget(self.BView2D,4,4,4,5)
-
-        layout12 = QHBoxLayout(None,0,6,"layout12")
-
-        self.textLabel1_2 = QLabel(self.Widget8,"textLabel1_2")
-        layout12.addWidget(self.textLabel1_2)
-        spacer6 = QSpacerItem(111,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout12.addItem(spacer6)
-
-        Widget8Layout.addMultiCellLayout(layout12,0,1,3,5)
-
-        self.LEValeur = QLineEdit(self.Widget8,"LEValeur")
-        self.LEValeur.setSizePolicy(QSizePolicy(1,1,0,0,self.LEValeur.sizePolicy().hasHeightForWidth()))
-        self.LEValeur.setMinimumSize(QSize(220,30))
-
-        Widget8Layout.addMultiCellWidget(self.LEValeur,2,3,3,5)
-
-        self.BSup1Val = QToolButton(self.Widget8,"BSup1Val")
-        self.BSup1Val.setSizePolicy(QSizePolicy(0,0,0,0,self.BSup1Val.sizePolicy().hasHeightForWidth()))
-        self.BSup1Val.setMinimumSize(QSize(40,30))
-        self.BSup1Val.setIconSet(QIconSet(self.image2))
-
-        Widget8Layout.addMultiCellWidget(self.BSup1Val,3,4,1,2)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(0,60))
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,5,5,3,5)
-
-        layout6 = QHBoxLayout(None,0,6,"layout6")
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-        layout6.addWidget(self.bSup)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-        layout6.addWidget(self.bOk)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-        layout6.addWidget(self.bHelp)
-
-        Widget8Layout.addMultiCellLayout(layout6,10,10,0,5)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DPlusBaseLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(552,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.bParam,SIGNAL("clicked()"),self.BParametresPressed)
-        self.connect(self.bImport,SIGNAL("clicked()"),self.BImportPressed)
-        self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
-        self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
-        self.connect(self.LEValeur,SIGNAL("returnPressed()"),self.LEValeurPressed)
-        self.connect(self.BSalome,SIGNAL("clicked()"),self.BSalomePressed)
-        self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
-
-        self.setTabOrder(self.LEValeur,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-        self.setTabOrder(self.bHelp,self.bParam)
-        self.setTabOrder(self.bParam,self.bImport)
-        self.setTabOrder(self.bImport,self.LBValeurs)
-        self.setTabOrder(self.LBValeurs,self.BView2D)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.textLabel1.setText(self.__tr("<u><font size=\"+1\">Valeur(s) actuelle(s)</font></u>"))
-        self.BAjout1Val.setText(QString.null)
-        QToolTip.add(self.BAjout1Val,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29"))
-        self.bParam.setText(self.__tr("&Parametres"))
-        self.bParam.setAccel(self.__tr("Alt+P"))
-        QToolTip.add(self.bParam,self.__tr("suppression du mot clef"))
-        self.bImport.setText(self.__tr("&Importer"))
-        self.bImport.setAccel(self.__tr("Alt+I"))
-        QToolTip.add(self.bImport,self.__tr("suppression du mot clef"))
-        self.BSalome.setText(QString.null)
-        QToolTip.add(self.BSalome,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29"))
-        self.BView2D.setText(self.__tr("Visualiser"))
-        self.textLabel1_2.setText(self.__tr("<font size=\"+1\">Valeur</font>"))
-        self.BSup1Val.setText(QString.null)
-        QToolTip.add(self.BSup1Val,self.__tr("enleve l occurence selectionnee"))
-        self.Commentaire.setText(QString.null)
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DPlusBase.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DPlusBase.ViewDoc(): Not implemented yet"
-
-    def BOkPourListePressed(self):
-        print "DPlusBase.BOkPourListePressed(): Not implemented yet"
-
-    def BParametresPressed(self):
-        print "DPlusBase.BParametresPressed(): Not implemented yet"
-
-    def LEValeurPressed(self):
-        print "DPlusBase.LEValeurPressed(): Not implemented yet"
-
-    def Ajout1Valeur(self):
-        print "DPlusBase.Ajout1Valeur(): Not implemented yet"
-
-    def Sup1Valeur(self):
-        print "DPlusBase.Sup1Valeur(): Not implemented yet"
-
-    def BImportPressed(self):
-        print "DPlusBase.BImportPressed(): Not implemented yet"
-
-    def BSalomePressed(self):
-        print "DPlusBase.BSalomePressed(): Not implemented yet"
-
-    def BView2DPressed(self):
-        print "DPlusBase.BView2DPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DPlusBase",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DPlusBase",s,c,QApplication.UnicodeUTF8)
index a6a4eb0c13e23411963fa70cd60fd1d52bad4542..5a97e371e238bdfa16ad5e19711d64762d6f2fad 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>552</width>
+            <width>581</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desPlusieursInto.py b/Ui/desPlusieursInto.py
deleted file mode 100644 (file)
index 224aa87..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desPlusieursInto.ui'
-#
-# Created: ven avr 4 11:27:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-image0_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \
-    "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \
-    "\xcf\x49\x44\x41\x54\x38\x8d\xd5\x94\xdb\x0e\xc3" \
-    "\x20\x0c\x43\xed\xfd\xf8\xd8\x97\xbb\x0f\x34\x5b" \
-    "\x48\x08\x45\xd5\x1e\xb6\x48\x88\xf4\x12\xe7\x60" \
-    "\x01\xc0\x0f\x04\x6f\xd6\xe9\x9b\xba\x77\x20\x04" \
-    "\x80\x92\x4a\x10\x32\xc9\x2e\xfb\xd8\xc7\xd5\xca" \
-    "\xbc\xc0\x25\x40\x00\x99\xe9\x57\x84\x95\x68\xfe" \
-    "\x7f\x06\xc0\xde\xd1\xde\xb3\x2b\x4a\x1e\xc4\xea" \
-    "\x82\x4b\x9e\x74\x09\x71\x65\xbd\x01\xf8\x55\x27" \
-    "\xf7\x8a\x72\x01\xe0\xa3\x12\x9f\x34\x5a\x01\x7c" \
-    "\x54\x3b\xaf\xdc\x98\x3d\x0f\x71\x09\xd1\x5a\x33" \
-    "\x1b\x47\x1f\x47\x07\x2c\x17\x49\x4a\x82\x33\x8f" \
-    "\x61\x78\x20\x3a\x88\x17\xe6\x73\x06\xb1\xf0\x8b" \
-    "\x07\xba\x03\xe6\x02\xc9\xb8\x31\x07\x7e\x37\xe0" \
-    "\x20\x9e\x67\xe3\x38\x67\x10\x97\x7b\x17\xde\x80" \
-    "\xc1\x85\xad\x38\x69\x5a\x51\xd5\x22\xc8\x2c\xe7" \
-    "\x79\x12\xe2\xfe\xd8\xbe\x83\x76\x20\x92\xf5\x2b" \
-    "\x18\x20\xdd\x11\xbb\x10\xe5\x65\xb5\x3a\x5a\x3b" \
-    "\xba\xff\x13\x07\x13\xd6\x6f\xa6\x98\x18\x57\x06" \
-    "\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82"
-image1_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x21\x00\x00\x00\x0e" \
-    "\x08\x06\x00\x00\x00\xa1\x1e\x75\x8c\x00\x00\x00" \
-    "\xc7\x49\x44\x41\x54\x38\x8d\xcd\x94\x59\x0e\xc3" \
-    "\x20\x0c\x44\x71\xd5\x7b\xc7\x3d\xf9\xf4\x07\xd3" \
-    "\x31\xb1\x59\xa2\x28\xaa\x25\x44\x48\xbc\x3c\xc6" \
-    "\x81\x52\xfe\xc0\xe4\x42\x0c\xee\xce\xb9\x12\xe0" \
-    "\x8a\x02\x39\x83\x88\x48\xf5\xdf\x02\xc9\x9c\x11" \
-    "\xf8\x60\x04\x30\x01\x19\x05\x4a\xe8\x68\xc5\x6a" \
-    "\xc2\x06\xc0\x6b\x4b\x10\x91\x11\xc8\x02\x87\x4f" \
-    "\x3a\x52\xa5\x87\x75\x71\x23\x89\x7e\x40\x39\xc4" \
-    "\x6b\x50\xd8\x86\x5b\x07\xf5\x40\x0a\x45\x00\x53" \
-    "\x33\x08\x93\xcf\x86\x74\xa3\x00\x28\xd4\x92\xde" \
-    "\xef\x04\x62\x6b\x55\x9d\xfe\x48\xac\x84\x2b\x1a" \
-    "\x6d\xaa\xe6\x85\x01\x55\x03\x3b\x99\xc5\x00\x9f" \
-    "\x70\xce\xda\x11\x1a\xab\x41\x3b\x6f\x6a\x70\xd1" \
-    "\x18\xe0\x08\xe6\xfd\x8b\xc5\x1d\x5d\x00\xa0\xf6" \
-    "\x14\x55\x6d\x1f\xf9\xb9\xbe\x49\x52\xaa\xbc\x37" \
-    "\x21\xf8\xf8\xb6\xf6\x24\xc5\x57\xef\x89\x47\xaf" \
-    "\xed\xf4\x8c\x5e\x60\xb8\xdf\xbe\xb8\x1d\x6d\xab" \
-    "\x9a\xff\x99\x27\x00\x00\x00\x00\x49\x45\x4e\x44" \
-    "\xae\x42\x60\x82"
-
-class DPlusInto(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        self.image0 = QPixmap()
-        self.image0.loadFromData(image0_data,"PNG")
-        self.image1 = QPixmap()
-        self.image1.loadFromData(image1_data,"PNG")
-        if not name:
-            self.setName("DPlusInto")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DPlusIntoLayout = QGridLayout(self,1,1,11,6,"DPlusIntoLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.textLabel1 = QLabel(self.Widget8,"textLabel1")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel1,0,0,0,1)
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(130,30))
-        self.bSup.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bSup,3,0)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(130,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        Widget8Layout.addMultiCellWidget(self.bOk,3,3,1,2)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setSizePolicy(QSizePolicy(1,0,150,0,self.bHelp.sizePolicy().hasHeightForWidth()))
-        self.bHelp.setMinimumSize(QSize(130,30))
-        self.bHelp.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bHelp,3,3)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(0,40))
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,2,2,0,3)
-
-        layout8 = QHBoxLayout(None,0,6,"layout8")
-
-        self.LBValeurs = QListBox(self.Widget8,"LBValeurs")
-        layout8.addWidget(self.LBValeurs)
-
-        layout5 = QVBoxLayout(None,0,6,"layout5")
-        spacer2 = QSpacerItem(21,44,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        layout5.addItem(spacer2)
-
-        layout2 = QVBoxLayout(None,0,6,"layout2")
-
-        self.BSup1Val = QToolButton(self.Widget8,"BSup1Val")
-        self.BSup1Val.setMinimumSize(QSize(40,31))
-        self.BSup1Val.setMaximumSize(QSize(40,31))
-        self.BSup1Val.setIconSet(QIconSet(self.image0))
-        layout2.addWidget(self.BSup1Val)
-
-        self.BAjout1Val = QToolButton(self.Widget8,"BAjout1Val")
-        self.BAjout1Val.setMinimumSize(QSize(40,31))
-        self.BAjout1Val.setMaximumSize(QSize(40,31))
-        self.BAjout1Val.setIconSet(QIconSet(self.image1))
-        layout2.addWidget(self.BAjout1Val)
-        spacer3 = QSpacerItem(21,176,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        layout2.addItem(spacer3)
-        layout5.addLayout(layout2)
-        layout8.addLayout(layout5)
-
-        self.listBoxVal = QListBox(self.Widget8,"listBoxVal")
-        layout8.addWidget(self.listBoxVal)
-
-        Widget8Layout.addMultiCellLayout(layout8,1,1,0,3)
-
-        self.textLabel1_2 = QLabel(self.Widget8,"textLabel1_2")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel1_2,0,0,2,3)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DPlusIntoLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.LBValeurs,SIGNAL("doubleClicked(QListBoxItem*)"),self.Sup1Valeur)
-        self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
-        self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
-
-        self.setTabOrder(self.listBoxVal,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-        self.setTabOrder(self.bHelp,self.LBValeurs)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.textLabel1.setText(self.__tr("<u><font size=\"+1\">Valeur(s) actuelle(s)</font></u>"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.Commentaire.setText(QString.null)
-        self.BSup1Val.setText(QString.null)
-        QToolTip.add(self.BSup1Val,self.__tr("enleve l occurence selectionnee"))
-        self.BAjout1Val.setText(QString.null)
-        QToolTip.add(self.BAjout1Val,self.__trUtf8("\x61\x6a\x6f\x75\x74\x65\x20\x6c\x61\x20\x76\x61\x6c\x65\x75\x72\x20\x73\x61\x69\x73\x69\x65\x20\x73\x6f\x75\x73\x20\x6c\x20\x6f\x63\x63\x75\x72\x65\x6e\x63\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x6e\xc3\xa9\x65\x20\x28\x65\x6e\x20\x66\x69\x6e\x20\x64\x65\x20\x6c\x69\x73\x74\x65\x20\x73\x69\x20\x69\x6c\x20\x6e\x20\x79\x20\x61\x20\x70\x61\x73\x20\x64\x65\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x29"))
-        self.textLabel1_2.setText(self.__tr("<u><font size=\"+1\">Valeur(s) possibles(s)</font></u>"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DPlusInto.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DPlusInto.ViewDoc(): Not implemented yet"
-
-    def BOkPourListePressed(self):
-        print "DPlusInto.BOkPourListePressed(): Not implemented yet"
-
-    def Ajout1Valeur(self):
-        print "DPlusInto.Ajout1Valeur(): Not implemented yet"
-
-    def Sup1Valeur(self):
-        print "DPlusInto.Sup1Valeur(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DPlusInto",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DPlusInto",s,c,QApplication.UnicodeUTF8)
index f53e25e1cfbb1e92085b944f5668e83defd1833b..efbf3c32e50606534e099501d922dde0862a3d12 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>528</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
                 <attribute name="title">
                     <string>Saisir Valeur</string>
                 </attribute>
-                <grid>
+                <widget class="QLabel">
                     <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel1</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;u&gt;&lt;font size="+1"&gt;Valeur(s) actuelle(s)&lt;/font&gt;&lt;/u&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QPushButton" row="3" column="0">
-                        <property name="name">
-                            <cstring>bSup</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>130</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&amp;Supprimer</string>
-                        </property>
-                        <property name="accel">
-                            <string>Alt+S</string>
-                        </property>
-                        <property name="autoDefault">
-                            <bool>true</bool>
-                        </property>
-                        <property name="toolTip" stdset="0">
-                            <string>suppression du mot clef</string>
-                        </property>
-                    </widget>
-                    <widget class="QPushButton" row="3" column="1" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>bOk</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>130</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&amp;Valider</string>
-                        </property>
-                        <property name="accel">
-                            <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-                        </property>
-                        <property name="autoDefault">
-                            <bool>true</bool>
-                        </property>
-                        <property name="default">
-                            <bool>true</bool>
-                        </property>
-                        <property name="toolTip" stdset="0">
-                            <string>validation de la saisie</string>
-                        </property>
-                    </widget>
-                    <widget class="QPushButton" row="3" column="3">
-                        <property name="name">
-                            <cstring>bHelp</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>1</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>150</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>130</width>
-                                <height>30</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string>&amp;Documentation</string>
-                        </property>
-                        <property name="accel">
-                            <string>Alt+D</string>
-                        </property>
-                        <property name="autoDefault">
-                            <bool>true</bool>
-                        </property>
-                        <property name="toolTip" stdset="0">
-                            <string>affichage documentation aster</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="2" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>Commentaire</cstring>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>0</width>
-                                <height>40</height>
-                            </size>
-                        </property>
-                        <property name="text">
-                            <string></string>
-                        </property>
-                    </widget>
-                    <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="4">
-                        <property name="name">
-                            <cstring>layout8</cstring>
-                        </property>
-                        <hbox>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <widget class="QListBox">
-                                <property name="name">
-                                    <cstring>LBValeurs</cstring>
-                                </property>
-                            </widget>
-                            <widget class="QLayoutWidget">
-                                <property name="name">
-                                    <cstring>layout5</cstring>
-                                </property>
-                                <vbox>
-                                    <property name="name">
-                                        <cstring>unnamed</cstring>
-                                    </property>
-                                    <spacer>
-                                        <property name="name">
-                                            <cstring>spacer2</cstring>
-                                        </property>
-                                        <property name="orientation">
-                                            <enum>Vertical</enum>
-                                        </property>
-                                        <property name="sizeType">
-                                            <enum>Expanding</enum>
-                                        </property>
-                                        <property name="sizeHint">
-                                            <size>
-                                                <width>21</width>
-                                                <height>44</height>
-                                            </size>
-                                        </property>
-                                    </spacer>
-                                    <widget class="QLayoutWidget">
-                                        <property name="name">
-                                            <cstring>layout2</cstring>
-                                        </property>
-                                        <vbox>
-                                            <property name="name">
-                                                <cstring>unnamed</cstring>
-                                            </property>
-                                            <widget class="QToolButton">
-                                                <property name="name">
-                                                    <cstring>BSup1Val</cstring>
-                                                </property>
-                                                <property name="minimumSize">
-                                                    <size>
-                                                        <width>40</width>
-                                                        <height>31</height>
-                                                    </size>
-                                                </property>
-                                                <property name="maximumSize">
-                                                    <size>
-                                                        <width>40</width>
-                                                        <height>31</height>
-                                                    </size>
-                                                </property>
-                                                <property name="text">
-                                                    <string></string>
-                                                </property>
-                                                <property name="iconSet">
-                                                    <iconset>image0</iconset>
-                                                </property>
-                                                <property name="toolTip" stdset="0">
-                                                    <string>enleve l occurence selectionnee</string>
-                                                </property>
-                                            </widget>
-                                            <widget class="QToolButton">
-                                                <property name="name">
-                                                    <cstring>BAjout1Val</cstring>
-                                                </property>
-                                                <property name="minimumSize">
-                                                    <size>
-                                                        <width>40</width>
-                                                        <height>31</height>
-                                                    </size>
-                                                </property>
-                                                <property name="maximumSize">
-                                                    <size>
-                                                        <width>40</width>
-                                                        <height>31</height>
-                                                    </size>
-                                                </property>
-                                                <property name="text">
-                                                    <string></string>
-                                                </property>
-                                                <property name="iconSet">
-                                                    <iconset>image1</iconset>
-                                                </property>
-                                                <property name="toolTip" stdset="0">
-                                                    <string>ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection)</string>
-                                                </property>
-                                            </widget>
-                                            <spacer>
-                                                <property name="name">
-                                                    <cstring>spacer3</cstring>
-                                                </property>
-                                                <property name="orientation">
-                                                    <enum>Vertical</enum>
-                                                </property>
-                                                <property name="sizeType">
-                                                    <enum>Expanding</enum>
-                                                </property>
-                                                <property name="sizeHint">
-                                                    <size>
-                                                        <width>21</width>
-                                                        <height>176</height>
-                                                    </size>
-                                                </property>
-                                            </spacer>
-                                        </vbox>
-                                    </widget>
-                                </vbox>
-                            </widget>
-                            <widget class="QListBox">
-                                <property name="name">
-                                    <cstring>listBoxVal</cstring>
-                                </property>
-                            </widget>
-                        </hbox>
-                    </widget>
-                    <widget class="QLabel" row="0" column="2" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>textLabel1_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>&lt;u&gt;&lt;font size="+1"&gt;Valeur(s) possibles(s)&lt;/font&gt;&lt;/u&gt;</string>
-                        </property>
-                    </widget>
-                </grid>
+                        <cstring>textLabel1</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>11</y>
+                            <width>198</width>
+                            <height>23</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>&lt;u&gt;&lt;font size="+1"&gt;Valeur(s) actuelle(s)&lt;/font&gt;&lt;/u&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bSup</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>384</y>
+                            <width>130</width>
+                            <height>30</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>130</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Supprimer</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+S</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>suppression du mot clef</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bOk</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>147</x>
+                            <y>384</y>
+                            <width>130</width>
+                            <height>30</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>130</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Valider</string>
+                    </property>
+                    <property name="accel">
+                        <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>validation de la saisie</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>bHelp</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>283</x>
+                            <y>384</y>
+                            <width>208</width>
+                            <height>30</height>
+                        </rect>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>150</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>130</width>
+                            <height>30</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Documentation</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+D</string>
+                    </property>
+                    <property name="autoDefault">
+                        <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>affichage documentation aster</string>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>Commentaire</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>11</x>
+                            <y>338</y>
+                            <width>480</width>
+                            <height>40</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>0</width>
+                            <height>40</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                </widget>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>textLabel1_2</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>215</x>
+                            <y>11</y>
+                            <width>276</width>
+                            <height>23</height>
+                        </rect>
+                    </property>
+                    <property name="text">
+                        <string>&lt;u&gt;&lt;font size="+1"&gt;Valeur(s) possibles(s)&lt;/font&gt;&lt;/u&gt;</string>
+                    </property>
+                </widget>
+                <widget class="QListBox">
+                    <property name="name">
+                        <cstring>LBValeurs</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>12</x>
+                            <y>41</y>
+                            <width>211</width>
+                            <height>290</height>
+                        </rect>
+                    </property>
+                </widget>
+                <widget class="QListBox">
+                    <property name="name">
+                        <cstring>listBoxVal</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>279</x>
+                            <y>41</y>
+                            <width>211</width>
+                            <height>290</height>
+                        </rect>
+                    </property>
+                </widget>
+                <spacer>
+                    <property name="name">
+                        <cstring>spacer2</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Vertical</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>21</width>
+                            <height>37</height>
+                        </size>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>240</x>
+                            <y>42</y>
+                            <width>21</width>
+                            <height>37</height>
+                        </rect>
+                    </property>
+                </spacer>
+                <spacer>
+                    <property name="name">
+                        <cstring>spacer3</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Vertical</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>21</width>
+                            <height>169</height>
+                        </size>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>240</x>
+                            <y>160</y>
+                            <width>21</width>
+                            <height>169</height>
+                        </rect>
+                    </property>
+                </spacer>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>BAjout1Val</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>230</x>
+                            <y>50</y>
+                            <width>40</width>
+                            <height>31</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>40</width>
+                            <height>31</height>
+                        </size>
+                    </property>
+                    <property name="maximumSize">
+                        <size>
+                            <width>40</width>
+                            <height>31</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="iconSet">
+                        <iconset>image0</iconset>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>ajoute la valeur saisie sous l occurence selectionnée (en fin de liste si il n y a pas de selection)</string>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>BSup1Val</cstring>
+                    </property>
+                    <property name="geometry">
+                        <rect>
+                            <x>230</x>
+                            <y>90</y>
+                            <width>40</width>
+                            <height>31</height>
+                        </rect>
+                    </property>
+                    <property name="minimumSize">
+                        <size>
+                            <width>40</width>
+                            <height>31</height>
+                        </size>
+                    </property>
+                    <property name="maximumSize">
+                        <size>
+                            <width>40</width>
+                            <height>31</height>
+                        </size>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="iconSet">
+                        <iconset>image1</iconset>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>enleve l occurence selectionnee</string>
+                    </property>
+                </widget>
             </widget>
         </widget>
     </grid>
 </widget>
 <images>
     <image name="image0">
-        <data format="PNG" length="264">89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000cf49444154388dd594db0ec3200c43edfdf8d897bb0f345b480845d51eb64888f412e76001c00f046fd6e99bba77200480924a1032c92efbd8c7d5cabcc025400099e957849568fe7f06c0ded1deb32b4a1ec4ea824b9e74097165bd01f85527f78a7201e0a3129f345a017c543bafdc983d0f7109d15a331b471f47072c17494a82338f6178203a8817e67306b1f08b07ba03e602c9b831077e37e0209e67e3386710977b17de80c185ad38695a51d522c82ce77912e2fed8be83762092f52b1820dd11bb10e565b53a5a3bbaff130713d66fa6981857060000000049454e44ae426082</data>
+        <data format="PNG" length="256">89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000c749444154388dcd94590ec3200c4471d57bc73df9f407d331b159a228aa254448bc3cc68152fec0e4420ceeceb912e08a0239838848f5df02c99c11f86004300119054ae868c56ac206c06b4b109111c802874f3a52a587757123897e4039c46b50d8865b07f5400a450053330893cf8674a30028d492deef04626b559dfe48ac842b1a6daae6850155033b99c5009f70ceda111aab413b6f6a70d118e008e6fd8bc51d5d00a0f614556d1ff9b9be4952aabc3721f8f8b6f624c557ef8947afedf48c5e60b8dfbeb81d6dab9aff99270000000049454e44ae426082</data>
     </image>
     <image name="image1">
-        <data format="PNG" length="256">89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000c749444154388dcd94590ec3200c4471d57bc73df9f407d331b159a228aa254448bc3cc68152fec0e4420ceeceb912e08a0239838848f5df02c99c11f86004300119054ae868c56ac206c06b4b109111c802874f3a52a587757123897e4039c46b50d8865b07f5400a450053330893cf8674a30028d492deef04626b559dfe48ac842b1a6daae6850155033b99c5009f70ceda111aab413b6f6a70d118e008e6fd8bc51d5d00a0f614556d1ff9b9be4952aabc3721f8f8b6f624c557ef8947afedf48c5e60b8dfbeb81d6dab9aff99270000000049454e44ae426082</data>
+        <data format="PNG" length="264">89504e470d0a1a0a0000000d49484452000000210000000e0806000000a11e758c000000cf49444154388dd594db0ec3200c43edfdf8d897bb0f345b480845d51eb64888f412e76001c00f046fd6e99bba77200480924a1032c92efbd8c7d5cabcc025400099e957849568fe7f06c0ded1deb32b4a1ec4ea824b9e74097165bd01f85527f78a7201e0a3129f345a017c543bafdc983d0f7109d15a331b471f47072c17494a82338f6178203a8817e67306b1f08b07ba03e602c9b831077e37e0209e67e3386710977b17de80c185ad38695a51d522c82ce77912e2fed8be83762092f52b1820dd11bb10e565b53a5a3bbaff130713d66fa6981857060000000049454e44ae426082</data>
     </image>
 </images>
 <connections>
diff --git a/Ui/desPoursuite.py b/Ui/desPoursuite.py
deleted file mode 100644 (file)
index 2db030c..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desPoursuite.ui'
-#
-# Created: ven mai 16 13:30:38 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DPour(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DPour")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DPourLayout = QGridLayout(self,1,1,11,6,"DPourLayout")
-
-        self.Commentaire = QLabel(self,"Commentaire")
-
-        DPourLayout.addMultiCellWidget(self.Commentaire,1,1,0,2)
-
-        self.TWChoix = QTabWidget(self,"TWChoix")
-
-        self.MotClef = QWidget(self.TWChoix,"MotClef")
-        MotClefLayout = QGridLayout(self.MotClef,1,1,11,6,"MotClefLayout")
-
-        self.textLabel1_2 = QLabel(self.MotClef,"textLabel1_2")
-
-        MotClefLayout.addWidget(self.textLabel1_2,0,1)
-
-        self.LBMCPermis = QListBox(self.MotClef,"LBMCPermis")
-        self.LBMCPermis.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.LBMCPermis,1,0)
-
-        self.LBRegles = QListBox(self.MotClef,"LBRegles")
-
-        MotClefLayout.addWidget(self.LBRegles,1,1)
-
-        self.textLabel1 = QLabel(self.MotClef,"textLabel1")
-        self.textLabel1.setMinimumSize(QSize(0,0))
-
-        MotClefLayout.addWidget(self.textLabel1,0,0)
-        self.TWChoix.insertTab(self.MotClef,QString(""))
-
-        self.Commande = QWidget(self.TWChoix,"Commande")
-        CommandeLayout = QGridLayout(self.Commande,1,1,11,6,"CommandeLayout")
-
-        self.LBNouvCommande = QListBox(self.Commande,"LBNouvCommande")
-
-        CommandeLayout.addMultiCellWidget(self.LBNouvCommande,2,2,0,3)
-
-        self.textLabel1_4 = QLabel(self.Commande,"textLabel1_4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1)
-
-        self.buttonGroup1 = QButtonGroup(self.Commande,"buttonGroup1")
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(20,40,101,20))
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(20,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        CommandeLayout.addMultiCellWidget(self.buttonGroup1,0,1,3,3)
-
-        self.textLabel4 = QLabel(self.Commande,"textLabel4")
-
-        CommandeLayout.addMultiCellWidget(self.textLabel4,3,3,0,3)
-
-        self.BNext = QToolButton(self.Commande,"BNext")
-        self.BNext.setMinimumSize(QSize(60,0))
-        self.BNext.setIconSet(QIconSet())
-
-        CommandeLayout.addWidget(self.BNext,1,2)
-
-        self.textLabel6 = QLabel(self.Commande,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        CommandeLayout.addWidget(self.textLabel6,1,0)
-
-        self.LEFiltre = QLineEdit(self.Commande,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(160,30))
-
-        CommandeLayout.addWidget(self.LEFiltre,1,1)
-        self.TWChoix.insertTab(self.Commande,QString(""))
-
-        self.TabPage = QWidget(self.TWChoix,"TabPage")
-
-        LayoutWidget = QWidget(self.TabPage,"layout4")
-        LayoutWidget.setGeometry(QRect(10,31,472,90))
-        layout4 = QVBoxLayout(LayoutWidget,11,6,"layout4")
-
-        self.textLabel1_3 = QLabel(LayoutWidget,"textLabel1_3")
-        layout4.addWidget(self.textLabel1_3)
-
-        self.LENomFichier = QLineEdit(LayoutWidget,"LENomFichier")
-        self.LENomFichier.setMinimumSize(QSize(470,40))
-        layout4.addWidget(self.LENomFichier)
-
-        LayoutWidget_2 = QWidget(self.TabPage,"layout5")
-        LayoutWidget_2.setGeometry(QRect(8,131,481,250))
-        layout5 = QGridLayout(LayoutWidget_2,1,1,11,6,"layout5")
-
-        layout3 = QHBoxLayout(None,0,6,"layout3")
-        spacer3 = QSpacerItem(331,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        layout3.addItem(spacer3)
-
-        self.BBrowse = QPushButton(LayoutWidget_2,"BBrowse")
-        self.BBrowse.setSizePolicy(QSizePolicy(0,0,0,0,self.BBrowse.sizePolicy().hasHeightForWidth()))
-        self.BBrowse.setMinimumSize(QSize(140,50))
-        layout3.addWidget(self.BBrowse)
-
-        layout5.addLayout(layout3,1,0)
-        spacer1 = QSpacerItem(21,190,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        layout5.addItem(spacer1,0,0)
-        self.TWChoix.insertTab(self.TabPage,QString(""))
-
-        DPourLayout.addMultiCellWidget(self.TWChoix,0,0,0,2)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        DPourLayout.addWidget(self.bSup,2,0)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DPourLayout.addWidget(self.bOk,2,1)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        DPourLayout.addWidget(self.bHelp,2,2)
-
-        self.languageChange()
-
-        self.resize(QSize(521,499).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed)
-        self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
-        self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed)
-
-        self.setTabOrder(self.LEFiltre,self.LENomFichier)
-        self.setTabOrder(self.LENomFichier,self.TWChoix)
-        self.setTabOrder(self.TWChoix,self.LBMCPermis)
-        self.setTabOrder(self.LBMCPermis,self.LBRegles)
-        self.setTabOrder(self.LBRegles,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.BBrowse)
-        self.setTabOrder(self.BBrowse,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel1_2.setText(self.__trUtf8("\x3c\x68\x33\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x75\x3e\x3c\x62\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x3c\x2f\x62\x3e\x3c\x2f\x75\x3e\x3c\x2f\x70\x3e\x3c\x2f\x68\x33\x3e"))
-        self.textLabel1.setText(self.__tr("<h3><p align=\"center\"><u><b>Mots Clefs Permis</b></u></p></h3>"))
-        self.TWChoix.changeTab(self.MotClef,self.__tr("Ajouter Mot-Clef"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.textLabel4.setText(self.__trUtf8("\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x68\x6f\x69\x73\x69\x65\x20\x73\x65\x72\x61\x20\x61\x6a\x6f\x75\x74\xc3\xa9\x65\x20\x41\x50\x52\x45\x53\x20\x6c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x63\x6f\x75\x72\x61\x6e\x74\x65"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-        self.TWChoix.changeTab(self.Commande,self.__tr("Nouvelle Commande"))
-        self.textLabel1_3.setText(self.__tr("<font size=\"+1\">La commande POURSUITE requiert un nom de Fichier :</font>"))
-        self.BBrowse.setText(self.__tr("Edit"))
-        self.TWChoix.changeTab(self.TabPage,self.__tr("Fichier Poursuite"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DPour.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DPour.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DPour.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DPour.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DPour.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DPour.BuildTabCommand(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DPour.BNextPressed(): Not implemented yet"
-
-    def BBrowsePressed(self):
-        print "DPour.BBrowsePressed(): Not implemented yet"
-
-    def LENomFichReturnPressed(self):
-        print "DPour.LENomFichReturnPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DPour",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DPour",s,c,QApplication.UnicodeUTF8)
index 17f7d6daf669051c3405e65cb96813e157ca1fa4..fb9c96bcd6ea9cf90c44d9a0c19679864eff8e29 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>521</width>
+            <width>546</width>
             <height>499</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>505</width>
+            <width>50</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desRacine.py b/Ui/desRacine.py
deleted file mode 100644 (file)
index 39382eb..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desRacine.ui'
-#
-# Created: Mon Jun 2 16:02:17 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.16
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DRac(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DRac")
-
-        self.setMinimumSize(QSize(505,0))
-
-        DRacLayout = QGridLayout(self,1,1,11,6,"DRacLayout")
-
-        self.textLabel1_4 = QLabel(self,"textLabel1_4")
-        self.textLabel1_4.setMinimumSize(QSize(291,21))
-
-        DRacLayout.addMultiCellWidget(self.textLabel1_4,0,0,0,1)
-
-        self.textLabel1_4_2 = QLabel(self,"textLabel1_4_2")
-
-        DRacLayout.addMultiCellWidget(self.textLabel1_4_2,0,1,2,3)
-
-        self.buttonGroup1 = QButtonGroup(self,"buttonGroup1")
-        self.buttonGroup1.setMinimumSize(QSize(0,60))
-
-        self.RBGroupe = QRadioButton(self.buttonGroup1,"RBGroupe")
-        self.RBGroupe.setGeometry(QRect(10,20,90,20))
-
-        self.RBalpha = QRadioButton(self.buttonGroup1,"RBalpha")
-        self.RBalpha.setGeometry(QRect(110,20,120,20))
-        self.RBalpha.setChecked(1)
-
-        DRacLayout.addMultiCellWidget(self.buttonGroup1,1,1,0,1)
-
-        self.bHelp = QPushButton(self,"bHelp")
-        self.bHelp.setMinimumSize(QSize(160,30))
-        self.bHelp.setAutoDefault(1)
-
-        DRacLayout.addWidget(self.bHelp,3,3)
-
-        self.bSup = QPushButton(self,"bSup")
-        self.bSup.setMinimumSize(QSize(160,30))
-        self.bSup.setAutoDefault(1)
-
-        DRacLayout.addWidget(self.bSup,3,0)
-
-        self.bOk = QPushButton(self,"bOk")
-        self.bOk.setMinimumSize(QSize(160,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        DRacLayout.addMultiCellWidget(self.bOk,3,3,1,2)
-
-        layout2 = QGridLayout(None,1,1,0,6,"layout2")
-
-        self.BNext = QToolButton(self,"BNext")
-        self.BNext.setMinimumSize(QSize(60,30))
-        self.BNext.setIconSet(QIconSet())
-
-        layout2.addWidget(self.BNext,0,2)
-
-        self.LEFiltre = QLineEdit(self,"LEFiltre")
-        self.LEFiltre.setMinimumSize(QSize(0,30))
-
-        layout2.addWidget(self.LEFiltre,0,1)
-
-        self.LBRegles = QListBox(self,"LBRegles")
-        self.LBRegles.setMinimumSize(QSize(240,350))
-
-        layout2.addMultiCellWidget(self.LBRegles,0,1,3,3)
-
-        self.textLabel6 = QLabel(self,"textLabel6")
-        self.textLabel6.setMinimumSize(QSize(40,0))
-
-        layout2.addWidget(self.textLabel6,0,0)
-
-        self.LBNouvCommande = QListBox(self,"LBNouvCommande")
-
-        layout2.addMultiCellWidget(self.LBNouvCommande,1,1,0,2)
-
-        DRacLayout.addMultiCellLayout(layout2,2,2,0,3)
-
-        self.languageChange()
-
-        self.resize(QSize(509,513).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
-        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
-        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
-        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
-        self.connect(self.BNext,SIGNAL("clicked()"),self.BNextPressed)
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-
-        self.setTabOrder(self.LEFiltre,self.LBNouvCommande)
-        self.setTabOrder(self.LBNouvCommande,self.RBalpha)
-        self.setTabOrder(self.RBalpha,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-        self.setTabOrder(self.bHelp,self.LBRegles)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DMacro"))
-        self.textLabel1_4.setText(self.__tr("<b><u>Commandes :</u></b>"))
-        self.textLabel1_4_2.setText(self.__trUtf8("\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x3c\x62\x3e\x3c\x75\x3e\x52\xc3\xa9\x67\x6c\x65\x73\x20\x3a\x3c\x2f\x75\x3e\x3c\x2f\x62\x3e\x3c\x2f\x70\x3e"))
-        self.buttonGroup1.setTitle(self.__tr("Affichage"))
-        self.RBGroupe.setText(self.__tr("par groupe"))
-        self.RBalpha.setText(self.__trUtf8("\x61\x6c\x70\x68\x61\x62\xc3\xa9\x74\x69\x71\x75\x65"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(QKeySequence(self.__tr("Alt+D")))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(QKeySequence(self.__tr("Alt+S")))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(QKeySequence(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A")))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.BNext.setText(self.__tr("Suivant"))
-        QToolTip.add(self.BNext,self.__tr("affiche la prochaine occurence"))
-        self.textLabel6.setText(self.__tr("Filtre"))
-
-
-    def LBNouvCommandeClicked(self):
-        print "DRac.LBNouvCommandeClicked(): Not implemented yet"
-
-    def LEFiltreTextChanged(self):
-        print "DRac.LEFiltreTextChanged(): Not implemented yet"
-
-    def LEfiltreReturnPressed(self):
-        print "DRac.LEfiltreReturnPressed(): Not implemented yet"
-
-    def BSupPressed(self):
-        print "DRac.BSupPressed(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DRac.BOkPressed(): Not implemented yet"
-
-    def BuildTabCommand(self):
-        print "DRac.BuildTabCommand(): Not implemented yet"
-
-    def BNextPressed(self):
-        print "DRac.BNextPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DRac.ViewDoc(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DRac",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DRac",s,c,QApplication.UnicodeUTF8)
index b4ee15d2d49c967cfe9a7c98561034db851a1b28..00a2f6348875649592fca7153db35e167da56037 100644 (file)
@@ -8,16 +8,10 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>509</width>
+            <width>523</width>
             <height>513</height>
         </rect>
     </property>
-    <property name="minimumSize">
-        <size>
-            <width>505</width>
-            <height>0</height>
-        </size>
-    </property>
     <property name="caption">
         <string>DMacro</string>
     </property>
             <property name="name">
                 <cstring>textLabel1_4</cstring>
             </property>
-            <property name="minimumSize">
-                <size>
-                    <width>291</width>
-                    <height>21</height>
-                </size>
-            </property>
             <property name="text">
                 <string>&lt;b&gt;&lt;u&gt;Commandes :&lt;/u&gt;&lt;/b&gt;</string>
             </property>
             <property name="name">
                 <cstring>buttonGroup1</cstring>
             </property>
-            <property name="minimumSize">
-                <size>
-                    <width>0</width>
-                    <height>60</height>
-                </size>
-            </property>
             <property name="title">
                 <string>Affichage</string>
             </property>
             <widget class="QRadioButton">
                 <property name="name">
-                    <cstring>RBGroupe</cstring>
+                    <cstring>RBalpha</cstring>
                 </property>
                 <property name="geometry">
                     <rect>
-                        <x>10</x>
+                        <x>120</x>
                         <y>20</y>
-                        <width>90</width>
+                        <width>120</width>
                         <height>20</height>
                     </rect>
                 </property>
                 <property name="text">
-                    <string>par groupe</string>
+                    <string>alphabétique</string>
+                </property>
+                <property name="checked">
+                    <bool>true</bool>
                 </property>
             </widget>
             <widget class="QRadioButton">
                 <property name="name">
-                    <cstring>RBalpha</cstring>
+                    <cstring>RBGroupe</cstring>
                 </property>
                 <property name="geometry">
                     <rect>
-                        <x>110</x>
+                        <x>10</x>
                         <y>20</y>
-                        <width>120</width>
+                        <width>100</width>
                         <height>20</height>
                     </rect>
                 </property>
                 <property name="text">
-                    <string>alphabétique</string>
-                </property>
-                <property name="checked">
-                    <bool>true</bool>
+                    <string>par groupe</string>
                 </property>
             </widget>
         </widget>
             <property name="name">
                 <cstring>bHelp</cstring>
             </property>
-            <property name="minimumSize">
-                <size>
-                    <width>160</width>
-                    <height>30</height>
-                </size>
-            </property>
             <property name="text">
                 <string>&amp;Documentation</string>
             </property>
             <property name="name">
                 <cstring>bSup</cstring>
             </property>
-            <property name="minimumSize">
-                <size>
-                    <width>160</width>
-                    <height>30</height>
-                </size>
-            </property>
             <property name="text">
                 <string>&amp;Supprimer</string>
             </property>
             <property name="name">
                 <cstring>bOk</cstring>
             </property>
-            <property name="minimumSize">
-                <size>
-                    <width>160</width>
-                    <height>30</height>
-                </size>
-            </property>
             <property name="text">
                 <string>&amp;Valider</string>
             </property>
                     <property name="name">
                         <cstring>BNext</cstring>
                     </property>
-                    <property name="minimumSize">
-                        <size>
-                            <width>60</width>
-                            <height>30</height>
-                        </size>
-                    </property>
                     <property name="text">
                         <string>Suivant</string>
                     </property>
                     <property name="name">
                         <cstring>LEFiltre</cstring>
                     </property>
-                    <property name="minimumSize">
-                        <size>
-                            <width>0</width>
-                            <height>30</height>
-                        </size>
-                    </property>
                 </widget>
                 <widget class="QListBox" row="0" column="3" rowspan="2" colspan="1">
                     <property name="name">
                         <cstring>LBRegles</cstring>
                     </property>
-                    <property name="minimumSize">
-                        <size>
-                            <width>240</width>
-                            <height>350</height>
-                        </size>
-                    </property>
                 </widget>
                 <widget class="QLabel" row="0" column="0">
                     <property name="name">
                         <cstring>textLabel6</cstring>
                     </property>
-                    <property name="minimumSize">
-                        <size>
-                            <width>40</width>
-                            <height>0</height>
-                        </size>
-                    </property>
                     <property name="text">
                         <string>Filtre</string>
                     </property>
diff --git a/Ui/desSelectVal.py b/Ui/desSelectVal.py
deleted file mode 100644 (file)
index f43b5d2..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desSelectVal.ui'
-#
-# Created: mar mar 25 10:05:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DSelVal(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DSelVal")
-
-
-        DSelValLayout = QGridLayout(self,1,1,11,6,"DSelValLayout")
-
-        self.TBtext = QTextBrowser(self,"TBtext")
-
-        DSelValLayout.addMultiCellWidget(self.TBtext,0,0,0,1)
-
-        self.BGSeparateur = QButtonGroup(self,"BGSeparateur")
-        self.BGSeparateur.setMinimumSize(QSize(180,100))
-
-        LayoutWidget = QWidget(self.BGSeparateur,"layout1")
-        LayoutWidget.setGeometry(QRect(17,20,150,74))
-        layout1 = QGridLayout(LayoutWidget,1,1,11,6,"layout1")
-
-        self.BpointVirgule = QRadioButton(LayoutWidget,"BpointVirgule")
-
-        layout1.addWidget(self.BpointVirgule,2,0)
-
-        self.Bespace = QRadioButton(LayoutWidget,"Bespace")
-        self.Bespace.setChecked(1)
-
-        layout1.addWidget(self.Bespace,0,0)
-
-        self.Bvirgule = QRadioButton(LayoutWidget,"Bvirgule")
-
-        layout1.addWidget(self.Bvirgule,1,0)
-
-        DSelValLayout.addMultiCellWidget(self.BGSeparateur,1,2,0,0)
-
-        self.BImportTout = QPushButton(self,"BImportTout")
-
-        DSelValLayout.addWidget(self.BImportTout,2,1)
-
-        self.BImportSel = QPushButton(self,"BImportSel")
-
-        DSelValLayout.addWidget(self.BImportSel,1,1)
-
-        self.languageChange()
-
-        self.resize(QSize(413,497).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.BGSeparateur,SIGNAL("clicked(int)"),self.SeparateurSelect)
-        self.connect(self.BImportSel,SIGNAL("clicked()"),self.BImportSelPressed)
-        self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__trUtf8("\x53\xc3\xa9\x6c\x65\x63\x74\x69\x6f\x6e\x20\x64\x65\x20\x76\x61\x6c\x65\x75\x72\x73"))
-        self.BGSeparateur.setTitle(self.__trUtf8("\x53\xc3\xa9\x70\x61\x72\x61\x74\x65\x75\x72"))
-        self.BpointVirgule.setText(self.__tr("point-virgule"))
-        self.Bespace.setText(self.__tr("espace"))
-        self.Bvirgule.setText(self.__tr("virgule"))
-        self.BImportTout.setText(self.__tr("Importer Tout"))
-        self.BImportSel.setText(self.__tr("Ajouter Selection"))
-
-
-    def SeparateurSelect(self):
-        print "DSelVal.SeparateurSelect(): Not implemented yet"
-
-    def BImportSelPressed(self):
-        print "DSelVal.BImportSelPressed(): Not implemented yet"
-
-    def BImportToutPressed(self):
-        print "DSelVal.BImportToutPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DSelVal",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DSelVal",s,c,QApplication.UnicodeUTF8)
index ae092f5669d21ad7e46b4715c3327e39a7cecda7..ef65ad34d82b378ce116c006a60d887ebe6d93ca 100644 (file)
@@ -8,8 +8,8 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>413</width>
-            <height>497</height>
+            <width>429</width>
+            <height>661</height>
         </rect>
     </property>
     <property name="caption">
                 <cstring>TBtext</cstring>
             </property>
         </widget>
+        <widget class="QPushButton" row="1" column="1">
+            <property name="name">
+                <cstring>BImportSel</cstring>
+            </property>
+            <property name="text">
+                <string>Ajouter Selection</string>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="2" column="1">
+            <property name="name">
+                <cstring>BImportTout</cstring>
+            </property>
+            <property name="text">
+                <string>Importer Tout</string>
+            </property>
+        </widget>
         <widget class="QButtonGroup" row="1" column="0" rowspan="2" colspan="1">
             <property name="name">
                 <cstring>BGSeparateur</cstring>
             </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>3</hsizetype>
+                    <vsizetype>5</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
             <property name="minimumSize">
                 <size>
-                    <width>180</width>
-                    <height>100</height>
+                    <width>20</width>
+                    <height>130</height>
                 </size>
             </property>
             <property name="title">
                 <string>Séparateur</string>
             </property>
-            <widget class="QLayoutWidget">
+            <widget class="QRadioButton">
                 <property name="name">
-                    <cstring>layout1</cstring>
+                    <cstring>Bvirgule</cstring>
                 </property>
                 <property name="geometry">
                     <rect>
-                        <x>17</x>
-                        <y>20</y>
-                        <width>150</width>
-                        <height>74</height>
+                        <x>12</x>
+                        <y>52</y>
+                        <width>104</width>
+                        <height>22</height>
                     </rect>
                 </property>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QRadioButton" row="2" column="0">
-                        <property name="name">
-                            <cstring>BpointVirgule</cstring>
-                        </property>
-                        <property name="text">
-                            <string>point-virgule</string>
-                        </property>
-                    </widget>
-                    <widget class="QRadioButton" row="0" column="0">
-                        <property name="name">
-                            <cstring>Bespace</cstring>
-                        </property>
-                        <property name="text">
-                            <string>espace</string>
-                        </property>
-                        <property name="checked">
-                            <bool>true</bool>
-                        </property>
-                    </widget>
-                    <widget class="QRadioButton" row="1" column="0">
-                        <property name="name">
-                            <cstring>Bvirgule</cstring>
-                        </property>
-                        <property name="text">
-                            <string>virgule</string>
-                        </property>
-                    </widget>
-                </grid>
+                <property name="text">
+                    <string>virgule</string>
+                </property>
+            </widget>
+            <widget class="QRadioButton">
+                <property name="name">
+                    <cstring>Bespace</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>12</x>
+                        <y>24</y>
+                        <width>104</width>
+                        <height>22</height>
+                    </rect>
+                </property>
+                <property name="text">
+                    <string>espace</string>
+                </property>
+                <property name="checked">
+                    <bool>true</bool>
+                </property>
+            </widget>
+            <widget class="QRadioButton">
+                <property name="name">
+                    <cstring>BpointVirgule</cstring>
+                </property>
+                <property name="geometry">
+                    <rect>
+                        <x>12</x>
+                        <y>80</y>
+                        <width>104</width>
+                        <height>22</height>
+                    </rect>
+                </property>
+                <property name="text">
+                    <string>point-virgule</string>
+                </property>
             </widget>
-        </widget>
-        <widget class="QPushButton" row="2" column="1">
-            <property name="name">
-                <cstring>BImportTout</cstring>
-            </property>
-            <property name="text">
-                <string>Importer Tout</string>
-            </property>
-        </widget>
-        <widget class="QPushButton" row="1" column="1">
-            <property name="name">
-                <cstring>BImportSel</cstring>
-            </property>
-            <property name="text">
-                <string>Ajouter Selection</string>
-            </property>
         </widget>
     </grid>
 </widget>
diff --git a/Ui/desUniqueASSD.py b/Ui/desUniqueASSD.py
deleted file mode 100644 (file)
index 12a7993..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueASSD.ui'
-#
-# Created: mar mar 25 10:05:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DUnASSD(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DUnASSD")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnASSDLayout = QGridLayout(self,1,1,11,6,"DUnASSDLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.textLabel2 = QLabel(self.Widget8,"textLabel2")
-        self.textLabel2.setMinimumSize(QSize(436,50))
-
-        Widget8Layout.addWidget(self.textLabel2,0,0)
-
-        self.listBoxASSD = QListBox(self.Widget8,"listBoxASSD")
-
-        Widget8Layout.addWidget(self.listBoxASSD,1,0)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(380,30))
-
-        Widget8Layout.addWidget(self.Commentaire,2,0)
-
-        layout2 = QHBoxLayout(None,0,6,"layout2")
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-        layout2.addWidget(self.bSup)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-        layout2.addWidget(self.bOk)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-        layout2.addWidget(self.bHelp)
-
-        Widget8Layout.addLayout(layout2,3,0)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnASSDLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.textLabel2.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x53\x74\x72\x75\x63\x74\x75\x72\x65\x73\x20\x64\x65\x20\x64\x6f\x6e\x6e\xc3\xa9\x65\x73\x20\x64\x75\x20\x74\x79\x70\x65\x0a\x72\x65\x71\x75\x69\x73\x20\x70\x61\x72\x20\x6c\x27\x6f\x62\x6a\x65\x74\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x3a\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.Commentaire.setText(QString.null)
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnASSD.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnASSD.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DUnASSD.BOkPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnASSD",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DUnASSD",s,c,QApplication.UnicodeUTF8)
index 819c9294c381f360608ae0dfdd7c84f0c52021a0..84426b39d64705409f13b3c4b01344687e860477 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>502</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>20</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desUniqueBase.py b/Ui/desUniqueBase.py
deleted file mode 100644 (file)
index ec1c516..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueBase.ui'
-#
-# Created: ven avr 4 11:27:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-image0_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x14\x00\x00\x00\x14" \
-    "\x08\x06\x00\x00\x00\x8d\x89\x1d\x0d\x00\x00\x00" \
-    "\x8d\x49\x44\x41\x54\x38\x8d\xb5\xd3\xdb\x0d\x80" \
-    "\x20\x0c\x05\xd0\x5b\xe3\x3a\x8e\xe2\x4c\x86\x99" \
-    "\x18\x85\x81\xea\x87\xc6\xc4\xd2\x56\x28\xd8\x84" \
-    "\x0f\x5e\x27\x17\x50\x02\x63\x6a\x2d\x73\xb9\x1f" \
-    "\xc0\xb5\x69\x15\x39\x17\xc3\xa0\x7e\xf0\xae\x9c" \
-    "\xca\xab\xbf\x1f\x5b\xb5\xa6\xed\xc8\x0c\x02\x83" \
-    "\x34\x20\x06\x02\x00\x81\x65\xc2\x38\x28\x30\x2f" \
-    "\xa9\x77\xdd\x36\xc6\xa0\x67\xa7\x78\x14\x3f\xa1" \
-    "\x85\xf9\x5b\xe6\x61\x76\xc2\x20\xa6\x83\x03\x58" \
-    "\x0d\x0e\x62\x7a\xc2\x01\xcc\x04\xa3\xd8\x55\x2c" \
-    "\x1a\xc0\x39\x95\xab\x27\xe7\x5a\x9a\x3e\x18\x47" \
-    "\xdd\xef\x30\x72\xec\xef\x5f\xaf\xb3\x4e\xcb\x01" \
-    "\x65\xf7\x82\x6b\x45\x7b\x00\x00\x00\x00\x49\x45" \
-    "\x4e\x44\xae\x42\x60\x82"
-
-class DUnBase(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        self.image0 = QPixmap()
-        self.image0.loadFromData(image0_data,"PNG")
-        if not name:
-            self.setName("DUnBase")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnBaseLayout = QGridLayout(self,1,1,11,6,"DUnBaseLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        layout2 = QHBoxLayout(None,0,6,"layout2")
-
-        self.textLabel2 = QLabel(self.Widget8,"textLabel2")
-        layout2.addWidget(self.textLabel2)
-
-        self.lineEditVal = QLineEdit(self.Widget8,"lineEditVal")
-        self.lineEditVal.setMinimumSize(QSize(290,50))
-        layout2.addWidget(self.lineEditVal)
-
-        Widget8Layout.addMultiCellLayout(layout2,1,1,0,2)
-        spacer1 = QSpacerItem(288,21,QSizePolicy.Expanding,QSizePolicy.Minimum)
-        Widget8Layout.addMultiCell(spacer1,0,0,0,1)
-
-        self.bParametres = QPushButton(self.Widget8,"bParametres")
-        self.bParametres.setSizePolicy(QSizePolicy(0,0,0,0,self.bParametres.sizePolicy().hasHeightForWidth()))
-        self.bParametres.setMinimumSize(QSize(140,30))
-
-        Widget8Layout.addWidget(self.bParametres,0,2)
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bSup,5,0)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        Widget8Layout.addWidget(self.bOk,5,1)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bHelp,5,2)
-        spacer4 = QSpacerItem(41,112,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer4,2,1)
-        spacer3 = QSpacerItem(21,112,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer3,4,1)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(430,40))
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,3,3,0,2)
-
-        self.BView2D = QPushButton(self.Widget8,"BView2D")
-        self.BView2D.setMinimumSize(QSize(110,40))
-
-        Widget8Layout.addWidget(self.BView2D,2,2)
-
-        self.BSalome = QPushButton(self.Widget8,"BSalome")
-        self.BSalome.setMinimumSize(QSize(50,40))
-        self.BSalome.setIconSet(QIconSet(self.image0))
-
-        Widget8Layout.addWidget(self.BSalome,2,0)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnBaseLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOk2Pressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed)
-        self.connect(self.bParametres,SIGNAL("pressed()"),self.BParametresPressed)
-        self.connect(self.BSalome,SIGNAL("pressed()"),self.BSalomePressed)
-        self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
-
-        self.setTabOrder(self.lineEditVal,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.bParametres)
-        self.setTabOrder(self.bParametres,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-        self.setTabOrder(self.bHelp,self.BView2D)
-        self.setTabOrder(self.BView2D,self.BSalome)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.textLabel2.setText(self.__tr("<b><u><p align=\"center\">Valeur: </p></u></b>"))
-        self.bParametres.setText(self.__tr("Parametres"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.Commentaire.setText(QString.null)
-        self.BView2D.setText(self.__tr("Visualiser"))
-        self.BSalome.setText(QString.null)
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnBase.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnBase.ViewDoc(): Not implemented yet"
-
-    def BOk2Pressed(self):
-        print "DUnBase.BOk2Pressed(): Not implemented yet"
-
-    def BParametresPressed(self):
-        print "DUnBase.BParametresPressed(): Not implemented yet"
-
-    def LEValeurPressed(self):
-        print "DUnBase.LEValeurPressed(): Not implemented yet"
-
-    def BSalomePressed(self):
-        print "DUnBase.BSalomePressed(): Not implemented yet"
-
-    def BView2DPressed(self):
-        print "DUnBase.BView2DPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnBase",s,c)
index 30eeab83b2d51ff993202dcdde1358a3782d1cb1..25759511a3e12586e49492af88371897470c2520 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>522</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>20</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desUniqueComp.py b/Ui/desUniqueComp.py
deleted file mode 100644 (file)
index 7b9af9d..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueComp.ui'
-#
-# Created: ven avr 4 11:27:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DUnComp(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DUnComp")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnCompLayout = QGridLayout(self,1,1,11,6,"DUnCompLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        layout3 = QVBoxLayout(None,0,6,"layout3")
-
-        self.textLabel1 = QLabel(self.Widget8,"textLabel1")
-        layout3.addWidget(self.textLabel1)
-
-        self.LEcomp = QLineEdit(self.Widget8,"LEcomp")
-        self.LEcomp.setMinimumSize(QSize(390,40))
-        layout3.addWidget(self.LEcomp)
-
-        Widget8Layout.addMultiCellLayout(layout3,0,0,0,1)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,5,5,0,1)
-
-        self.LEReel = QLineEdit(self.Widget8,"LEReel")
-        self.LEReel.setMinimumSize(QSize(190,40))
-
-        Widget8Layout.addWidget(self.LEReel,3,0)
-
-        self.LEImag = QLineEdit(self.Widget8,"LEImag")
-        self.LEImag.setMinimumSize(QSize(190,40))
-
-        Widget8Layout.addWidget(self.LEImag,3,1)
-
-        self.buttonGroup1 = QButtonGroup(self.Widget8,"buttonGroup1")
-
-        self.RBRI = QRadioButton(self.buttonGroup1,"RBRI")
-        self.RBRI.setGeometry(QRect(20,40,335,20))
-
-        self.RBMP = QRadioButton(self.buttonGroup1,"RBMP")
-        self.RBMP.setGeometry(QRect(20,20,335,20))
-
-        Widget8Layout.addMultiCellWidget(self.buttonGroup1,2,2,0,1)
-        spacer3 = QSpacerItem(20,41,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer3,1,0)
-        spacer4 = QSpacerItem(20,41,QSizePolicy.Minimum,QSizePolicy.Expanding)
-        Widget8Layout.addItem(spacer4,4,0)
-
-        layout2 = QHBoxLayout(None,0,6,"layout2")
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setAutoDefault(1)
-        layout2.addWidget(self.bSup)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-        layout2.addWidget(self.bOk)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setAutoDefault(1)
-        layout2.addWidget(self.bHelp)
-
-        Widget8Layout.addMultiCellLayout(layout2,6,6,0,1)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnCompLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(484,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.LEImag,SIGNAL("returnPressed()"),self.LEImagRPressed)
-        self.connect(self.LEReel,SIGNAL("returnPressed()"),self.LEReelRPressed)
-        self.connect(self.LEcomp,SIGNAL("returnPressed()"),self.LEcompRPressed)
-
-        self.setTabOrder(self.LEcomp,self.LEReel)
-        self.setTabOrder(self.LEReel,self.LEImag)
-        self.setTabOrder(self.LEImag,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.RBRI)
-        self.setTabOrder(self.RBRI,self.RBMP)
-        self.setTabOrder(self.RBMP,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnComp"))
-        self.textLabel1.setText(self.__tr("<font size=\"+2\">Complexe de la forme : a+bj</font>"))
-        self.Commentaire.setText(self.__tr("<font size=\"+2\">Un complexe est attendu</font>"))
-        self.buttonGroup1.setTitle(self.__tr("OU"))
-        self.RBRI.setText(self.__trUtf8("\x52\x49\x20\x20\x20\x3a\x20\x52\xc3\xa9\x65\x6c\x09\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\x61\x67\x69\x6e\x61\x69\x72\x65"))
-        self.RBMP.setText(self.__tr("MP        : Module                                                 Phase"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnComp.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnComp.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DUnComp.BOkPressed(): Not implemented yet"
-
-    def LEImagRPressed(self):
-        print "DUnComp.LEImagRPressed(): Not implemented yet"
-
-    def LEReelRPressed(self):
-        print "DUnComp.LEReelRPressed(): Not implemented yet"
-
-    def LEcompRPressed(self):
-        print "DUnComp.LEcompRPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnComp",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DUnComp",s,c,QApplication.UnicodeUTF8)
index ae0361d6488cd16d3796bc24d92b7212a757adbd..d31d50c99bdfc21bc2b9c392f33db4a4d951dc41 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>484</width>
+            <width>511</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>30</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desUniqueInto.py b/Ui/desUniqueInto.py
deleted file mode 100644 (file)
index 914a3d2..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueInto.ui'
-#
-# Created: mar mar 25 10:05:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DUnIn(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DUnIn")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnInLayout = QGridLayout(self,1,1,11,6,"DUnInLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(420,30))
-
-        Widget8Layout.addWidget(self.Commentaire,2,0)
-
-        layout2 = QHBoxLayout(None,0,6,"layout2")
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-        layout2.addWidget(self.bSup)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-        layout2.addWidget(self.bOk)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-        layout2.addWidget(self.bHelp)
-
-        Widget8Layout.addLayout(layout2,3,0)
-
-        self.listBoxVal = QListBox(self.Widget8,"listBoxVal")
-
-        Widget8Layout.addWidget(self.listBoxVal,1,0)
-
-        self.textLabel2 = QLabel(self.Widget8,"textLabel2")
-
-        Widget8Layout.addWidget(self.textLabel2,0,0)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnInLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.Commentaire.setText(QString.null)
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.textLabel2.setText(self.__tr("<b><u><p align=\"center\">Valeurs possibles</p></u></b>"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnIn.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnIn.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DUnIn.BOkPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnIn",s,c)
index 67f99a9888db11f110a466d1aefd034ee1dddb15..45b7e841954b925d0fe0bce64d35725df79f7863 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>502</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>30</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desUniqueSDCO.py b/Ui/desUniqueSDCO.py
deleted file mode 100644 (file)
index bd94a1d..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueSDCO.ui'
-#
-# Created: ven avr 4 11:27:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DUnSDCO(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DUnSDCO")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnSDCOLayout = QGridLayout(self,1,1,11,6,"DUnSDCOLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bSup,4,0)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        Widget8Layout.addWidget(self.bOk,4,1)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bHelp,4,2)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(311,30))
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,3,3,0,2)
-
-        self.textLabel2_2 = QLabel(self.Widget8,"textLabel2_2")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel2_2,0,0,0,2)
-
-        self.LESDCO = QLineEdit(self.Widget8,"LESDCO")
-        self.LESDCO.setMinimumSize(QSize(300,40))
-
-        Widget8Layout.addMultiCellWidget(self.LESDCO,1,1,0,2)
-
-        self.textLabel2 = QLabel(self.Widget8,"textLabel2")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel2,2,2,0,2)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnSDCOLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(461,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed)
-
-        self.setTabOrder(self.LESDCO,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel2_2.setText(self.__tr("<h1><font size=\"+2\">Nom du nouveau concept : </font></h1>"))
-        self.textLabel2.setText(self.__tr("<font size=\"+1\">Un objet de type CO est attendu</font>"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnSDCO.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnSDCO.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DUnSDCO.BOkPressed(): Not implemented yet"
-
-    def LESDCOReturnPressed(self):
-        print "DUnSDCO.LESDCOReturnPressed(): Not implemented yet"
-
-    def BOuiPressed(self):
-        print "DUnSDCO.BOuiPressed(): Not implemented yet"
-
-    def BNonPressed(self):
-        print "DUnSDCO.BNonPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnSDCO",s,c)
index f847c8b50619d5bbdacd9ef8701db75589fc1a05..e623d7841d180fcaed97dcdbe92446e0ea36c81e 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>461</width>
+            <width>473</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>20</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desUniqueSDCOInto.py b/Ui/desUniqueSDCOInto.py
deleted file mode 100644 (file)
index 4a7a9d2..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desUniqueSDCOInto.ui'
-#
-# Created: ven avr 4 11:27:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DUnSDCOInto(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DUnSDCOInto")
-
-        self.setMinimumSize(QSize(350,0))
-
-        DUnSDCOIntoLayout = QGridLayout(self,1,1,11,6,"DUnSDCOIntoLayout")
-
-        self.tabuniqueinto = QTabWidget(self,"tabuniqueinto")
-
-        self.Widget8 = QWidget(self.tabuniqueinto,"Widget8")
-        Widget8Layout = QGridLayout(self.Widget8,1,1,11,6,"Widget8Layout")
-
-        self.textLabel2 = QLabel(self.Widget8,"textLabel2")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel2,0,0,0,2)
-
-        self.LBSDCO = QListBox(self.Widget8,"LBSDCO")
-
-        Widget8Layout.addMultiCellWidget(self.LBSDCO,1,1,0,2)
-
-        self.textLabel2_3 = QLabel(self.Widget8,"textLabel2_3")
-
-        Widget8Layout.addMultiCellWidget(self.textLabel2_3,5,5,0,2)
-
-        self.Commentaire = QLabel(self.Widget8,"Commentaire")
-        self.Commentaire.setMinimumSize(QSize(420,30))
-
-        Widget8Layout.addMultiCellWidget(self.Commentaire,4,4,0,2)
-
-        layout3 = QGridLayout(None,1,1,0,6,"layout3")
-
-        Widget8Layout.addMultiCellLayout(layout3,2,2,0,2)
-
-        layout6 = QHBoxLayout(None,0,6,"layout6")
-
-        self.frame3 = QFrame(self.Widget8,"frame3")
-        self.frame3.setMinimumSize(QSize(190,50))
-        self.frame3.setFrameShape(QFrame.StyledPanel)
-        self.frame3.setFrameShadow(QFrame.Raised)
-
-        self.textLabel2_2 = QLabel(self.frame3,"textLabel2_2")
-        self.textLabel2_2.setGeometry(QRect(20,10,150,30))
-        layout6.addWidget(self.frame3)
-
-        self.LESDCO = QLineEdit(self.Widget8,"LESDCO")
-        self.LESDCO.setMinimumSize(QSize(220,40))
-        layout6.addWidget(self.LESDCO)
-
-        Widget8Layout.addMultiCellLayout(layout6,3,3,0,2)
-
-        self.bSup = QPushButton(self.Widget8,"bSup")
-        self.bSup.setMinimumSize(QSize(0,30))
-        self.bSup.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bSup,6,0)
-
-        self.bOk = QPushButton(self.Widget8,"bOk")
-        self.bOk.setMinimumSize(QSize(0,30))
-        self.bOk.setAutoDefault(1)
-        self.bOk.setDefault(1)
-
-        Widget8Layout.addWidget(self.bOk,6,1)
-
-        self.bHelp = QPushButton(self.Widget8,"bHelp")
-        self.bHelp.setMinimumSize(QSize(0,30))
-        self.bHelp.setAutoDefault(1)
-
-        Widget8Layout.addWidget(self.bHelp,6,2)
-        self.tabuniqueinto.insertTab(self.Widget8,QString(""))
-
-        DUnSDCOIntoLayout.addWidget(self.tabuniqueinto,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(482,480).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
-        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
-        self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.LBSDCO,SIGNAL("clicked(QListBoxItem*)"),self.LBSDCOReturnPressed)
-        self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed)
-
-        self.setTabOrder(self.LESDCO,self.LBSDCO)
-        self.setTabOrder(self.LBSDCO,self.tabuniqueinto)
-        self.setTabOrder(self.tabuniqueinto,self.bSup)
-        self.setTabOrder(self.bSup,self.bOk)
-        self.setTabOrder(self.bOk,self.bHelp)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("DUnIn"))
-        self.textLabel2.setText(self.__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x75\x3e\x53\x74\x72\x75\x63\x74\x75\x72\x65\x73\x20\x64\x65\x20\x64\x6f\x6e\x6e\xc3\xa9\x65\x73\x20\x64\x75\x20\x74\x79\x70\x65\x20\x72\x65\x71\x75\x69\x73\x20\x70\x61\x72\x20\x6c\x27\x6f\x62\x6a\x65\x74\x20\x63\x6f\x75\x72\x61\x6e\x74\x20\x3c\x2f\x75\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.textLabel2_3.setText(self.__tr("<font size=\"+1\">Un objet de type CO est attendu</font>"))
-        self.Commentaire.setText(QString.null)
-        self.textLabel2_2.setText(self.__tr("<font size=\"+1\"> Nom concept : </font>"))
-        self.bSup.setText(self.__tr("&Supprimer"))
-        self.bSup.setAccel(self.__tr("Alt+S"))
-        QToolTip.add(self.bSup,self.__tr("suppression du mot clef"))
-        self.bOk.setText(self.__tr("&Valider"))
-        self.bOk.setAccel(self.__tr("Shift+A, Alt+A, Alt+A, Alt+A"))
-        QToolTip.add(self.bOk,self.__tr("validation de la saisie"))
-        self.bHelp.setText(self.__tr("&Documentation"))
-        self.bHelp.setAccel(self.__tr("Alt+D"))
-        QToolTip.add(self.bHelp,self.__tr("affichage documentation aster"))
-        self.tabuniqueinto.changeTab(self.Widget8,self.__tr("Saisir Valeur"))
-
-
-    def BSupPressed(self):
-        print "DUnSDCOInto.BSupPressed(): Not implemented yet"
-
-    def ViewDoc(self):
-        print "DUnSDCOInto.ViewDoc(): Not implemented yet"
-
-    def BOkPressed(self):
-        print "DUnSDCOInto.BOkPressed(): Not implemented yet"
-
-    def LESDCOReturnPressed(self):
-        print "DUnSDCOInto.LESDCOReturnPressed(): Not implemented yet"
-
-    def BOuiPressed(self):
-        print "DUnSDCOInto.BOuiPressed(): Not implemented yet"
-
-    def BNonPressed(self):
-        print "DUnSDCOInto.BNonPressed(): Not implemented yet"
-
-    def LBSDCOReturnPressed(self):
-        print "DUnSDCOInto.LBSDCOReturnPressed(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DUnSDCOInto",s,c)
-
-    def __trUtf8(self,s,c = None):
-        return qApp.translate("DUnSDCOInto",s,c,QApplication.UnicodeUTF8)
index 3849072ffec0cd2ce5dadc02ccf578c84de74b9a..b52780aa2181334523acf78b09287c32fc37eaf8 100644 (file)
@@ -8,13 +8,13 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>482</width>
+            <width>541</width>
             <height>480</height>
         </rect>
     </property>
     <property name="minimumSize">
         <size>
-            <width>350</width>
+            <width>30</width>
             <height>0</height>
         </size>
     </property>
diff --git a/Ui/desVisu.py b/Ui/desVisu.py
deleted file mode 100644 (file)
index 0957153..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'desVisu.ui'
-#
-# Created: mar mar 25 10:05:09 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.13
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-
-class DVisu(QWidget):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QWidget.__init__(self,parent,name,fl)
-
-        if not name:
-            self.setName("DVisu")
-
-
-        DVisuLayout = QGridLayout(self,1,1,11,6,"DVisuLayout")
-
-        self.TB = QTextBrowser(self,"TB")
-
-        DVisuLayout.addWidget(self.TB,0,0)
-
-        self.languageChange()
-
-        self.resize(QSize(501,394).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Visualisation Include Materiau"))
-
-
-    def __tr(self,s,c = None):
-        return qApp.translate("DVisu",s,c)
diff --git a/Ui/myMain.py b/Ui/myMain.py
deleted file mode 100644 (file)
index c19f142..0000000
+++ /dev/null
@@ -1,553 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'myMain.ui'
-#
-# Created: Thu Jun 19 11:40:51 2008
-#      by: The PyQt User Interface Compiler (pyuic) 3.16
-#
-# WARNING! All changes made in this file will be lost!
-
-
-from qt import *
-
-image0_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\x74\x49\x44\x41\x54\x38\x8d\xed\xd5\xc1\x09\xc0" \
-    "\x20\x0c\x05\xd0\x6f\xe9\x36\x81\x2c\x10\xb2\xff" \
-    "\xdd\x85\xd2\x53\x85\xb6\xa9\x91\x48\x0f\x05\x3f" \
-    "\x08\x1a\xf0\x29\x12\x10\xf8\x28\xc5\xa9\xd9\xc4" \
-    "\xde\x96\xcd\x2b\x9a\xd9\xeb\x00\x00\x66\x0e\x2f" \
-    "\xe0\xc2\x51\x98\x39\xc4\xf7\x0c\x4c\x44\x6d\x5e" \
-    "\x6b\x35\x38\xcf\x92\x82\x45\xe4\xb2\xf6\xf0\x14" \
-    "\xac\xaa\x8f\xda\x1d\x4f\xc1\xa5\x74\x1b\x22\x07" \
-    "\x9f\x9d\x11\x1d\x96\xea\x8a\x91\x2c\x78\xc1\x0b" \
-    "\xee\x64\xe6\x07\x19\xf5\x7e\x92\x03\xad\x45\x2a" \
-    "\x04\xcc\x4e\x50\x20\x00\x00\x00\x00\x49\x45\x4e" \
-    "\x44\xae\x42\x60\x82"
-image1_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\x99\x49\x44\x41\x54\x38\x8d\xed\x94\x41\x0e\x85" \
-    "\x20\x0c\x44\x5f\x89\xc7\x36\x7f\x61\xbc\x77\x5d" \
-    "\x28\x48\xa4\x28\x60\xff\xce\xd9\x54\x8b\xbe\x8e" \
-    "\x13\x04\x3e\x1d\x92\x81\x77\xf4\x81\xa1\x23\xdc" \
-    "\x2b\x34\xf6\xf4\x7a\x3d\xe2\xb8\x65\xa8\x84\x3f" \
-    "\x40\x01\x98\x2a\x0b\x3d\x5f\x62\xc5\x83\x00\xaa" \
-    "\x1a\xd7\x05\x50\x44\x9a\xb9\xd5\x07\xa7\x73\xa8" \
-    "\xa4\xba\x4f\x92\xa2\xdf\x33\x3c\x64\xc6\x3b\xeb" \
-    "\xbd\x82\xe5\xb8\xad\xde\xcb\xcc\x78\x20\xeb\x42" \
-    "\x66\xc6\x39\x74\x5d\xfa\x80\xf3\x6f\xaf\x66\xc6" \
-    "\x6f\xa1\x9c\x3f\x88\x2f\xb4\x70\xec\x05\xcd\xc0" \
-    "\xbe\xd0\x78\x93\xf6\x8e\x17\x14\x92\x63\x5f\x68" \
-    "\x6c\x3e\xef\xf6\xba\x3c\x8f\xdd\x36\x6d\xc4\xc0" \
-    "\x45\x2c\x87\x81\xf8\x08\x00\x00\x00\x00\x49\x45" \
-    "\x4e\x44\xae\x42\x60\x82"
-image2_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\xa0\x49\x44\x41\x54\x38\x8d\xd5\x95\x4d\x0a\x80" \
-    "\x20\x10\x85\x9f\xd1\x46\x68\xe1\x8d\xe6\x62\xd2" \
-    "\x22\xbc\x98\x37\x6a\x21\xb4\xac\x45\x19\x92\xc6" \
-    "\x64\x69\xe0\xb7\xf1\x87\xf1\xf1\x1c\x47\x05\x2a" \
-    "\x21\x8e\x76\x2d\xad\xdb\xfb\x9e\x99\xf6\x56\x8f" \
-    "\x80\xb5\x36\x4b\x85\x88\xce\x35\x44\x04\x00\xe8" \
-    "\x0a\x39\x8c\xe8\xf9\x90\x34\xd2\x29\x2c\xc3\x7c" \
-    "\x8e\xbd\x53\x0f\xeb\x58\x3a\x05\xe9\x54\x34\x1f" \
-    "\x8a\x02\x7b\x2a\x7d\x3a\x1f\x09\xbf\x85\x4d\xc5" \
-    "\xd5\xd9\x53\xaa\x39\x6e\x4f\x38\xca\xb1\x99\xe2" \
-    "\xd2\xe1\x08\xab\xe1\x56\xf8\x2e\x30\x97\x7f\xcb" \
-    "\x4d\x8f\xf9\x42\xd7\x5d\xbe\xbe\xd2\xe1\x43\x95" \
-    "\x3a\x93\xf6\xca\xad\x3d\x61\x11\xf4\x4b\x7d\x4f" \
-    "\x82\x0f\xf9\xc0\x06\x9b\xb5\x1e\xcd\xed\x31\x8c" \
-    "\x5c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60" \
-    "\x82"
-image3_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\x73\x49\x44\x41\x54\x38\x8d\xed\x92\xc1\x0e\x80" \
-    "\x20\x08\x40\xb1\xef\x66\x1d\x1c\xff\x4d\x87\x6a" \
-    "\xa8\x88\xa1\x76\x69\xf9\x36\x0f\x28\x3e\xd8\x00" \
-    "\x60\xf1\x59\x42\x5f\x3a\x71\xf5\x36\x02\xe0\x8e" \
-    "\x99\x2b\x09\x88\x01\xd0\x28\x54\x17\x6a\xe4\x7f" \
-    "\x21\xce\x1f\xb5\xb0\x5d\x38\xed\xdc\x90\x60\xd0" \
-    "\xf1\x13\x79\x63\x5b\x3b\xc9\x2b\xd5\x18\xe2\x39" \
-    "\xa9\x43\xec\x1d\x5a\xb7\x78\x5c\xee\x10\x7b\xe4" \
-    "\xb2\x15\xaf\x40\x91\xf8\x94\xde\x47\x18\x1e\xce" \
-    "\xa5\x9e\xde\x9e\xc5\x9f\x38\x00\x62\xac\x28\xb1" \
-    "\xe3\xd7\x01\xd9\x00\x00\x00\x00\x49\x45\x4e\x44" \
-    "\xae\x42\x60\x82"
-image4_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\x74\x49\x44\x41\x54\x38\x8d\xed\x92\xc1\x0a\xc0" \
-    "\x20\x08\x40\x6d\xdf\x2d\x3b\x84\xff\xed\x0e\xa3" \
-    "\x58\x6a\x26\xd1\x65\xe0\x83\x0e\xa5\x3e\x85\x04" \
-    "\x48\x7e\x4b\x91\x0f\x54\x89\xf1\x9e\xa5\xa3\xca" \
-    "\x0f\x8a\x89\x63\x65\xb3\x06\xc4\x2d\xd6\x13\xc6" \
-    "\x49\xbd\xc2\x59\x83\x16\x13\x62\x19\xf0\xf9\x36" \
-    "\xc0\xa2\xef\x00\xd7\x5a\x62\x61\x4d\x3a\xb2\x29" \
-    "\x96\xf2\xa3\x62\xff\xa3\x37\xc5\xeb\xed\xe9\x62" \
-    "\xaa\xd1\xa2\xe8\x4a\xaa\xa2\xf7\x50\xdd\x12\x74" \
-    "\x8c\x0f\xd0\xab\x93\x24\x67\x78\x00\x59\x6e\x28" \
-    "\xb1\x74\x3f\x46\x86\x00\x00\x00\x00\x49\x45\x4e" \
-    "\x44\xae\x42\x60\x82"
-image5_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\x82\x49\x44\x41\x54\x38\x8d\xcd\xd3\x41\x12\x80" \
-    "\x20\x08\x05\x50\xe8\xe0\x2e\xbc\x38\xad\x32\x73" \
-    "\x50\x3e\x48\x53\x7f\xe3\xe4\x8c\x4f\x24\x25\xfa" \
-    "\x28\xe2\x9c\x6f\x39\x92\x0b\xf9\x27\x6c\xb6\x01" \
-    "\x85\x35\x88\x77\x61\x13\x88\xc2\x57\x64\x18\xcd" \
-    "\xa0\x15\xf5\x20\xb4\xe6\xb5\x5b\xe1\x09\xdc\x06" \
-    "\x22\xb8\xe2\x2a\xcf\x31\x05\x6e\x18\xdf\xdf\xf8" \
-    "\x06\x06\xaa\x55\x1c\xc6\x35\x64\xc4\xdc\xf8\x0c" \
-    "\xd0\x20\x1d\x57\x7a\x5c\x85\xa8\x84\x5f\xdc\x02" \
-    "\x5e\xa5\x30\x7a\xfc\xcd\x07\xe2\x3a\x1d\xf2\x83" \
-    "\xec\x2b\x37\xd9\xad\x5f\xb4\xdf\xef\xd4\x9c\xfb" \
-    "\xf7\x2f\xac\x98\xc8\xcc\x89\x00\x00\x00\x00\x49" \
-    "\x45\x4e\x44\xae\x42\x60\x82"
-image6_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\xbf\x49\x44\x41\x54\x38\x8d\xd5\x93\x41\x0a\x83" \
-    "\x30\x10\x45\xdf\x48\x8e\xe5\x1d\xbc\x8c\x3b\xa9" \
-    "\x8b\xf4\x6a\x9e\xab\xd3\x85\x35\x0d\x26\x63\x62" \
-    "\x44\x4a\x3f\x0c\x42\x66\xfc\xf3\xf8\x24\xf0\x6f" \
-    "\x12\x40\x2b\x66\xda\x8c\x55\xf3\xde\x22\x12\xcf" \
-    "\x9d\x92\xcb\x98\xc0\xba\x2d\x7c\x45\x44\xcf\x9a" \
-    "\x07\x63\x8b\xba\xd5\x3c\x44\x91\x23\x5e\xcf\x7c" \
-    "\xc1\x62\x36\x97\xa9\x25\x40\xc1\x1f\xf4\xfd\xa7" \
-    "\x52\x75\x01\x5d\x24\xa9\x38\x9e\x7d\x6f\x53\xdf" \
-    "\x4f\xe4\xcc\xab\x32\x3e\xea\x0f\x03\xc0\xc4\xb2" \
-    "\xa0\x71\x2c\xe6\xad\xd8\x9b\x59\xb7\x66\x1c\x3b" \
-    "\xe0\x95\x98\x5f\x26\x16\x79\xee\x4e\xbc\xc2\x2c" \
-    "\x97\x88\x55\x1f\xe6\xa2\xcb\xc4\x96\x9a\x89\x4b" \
-    "\xcb\x6f\x23\xee\x36\x1a\xab\x62\xe2\x52\xc5\x72" \
-    "\x94\xdf\xbf\xb6\x10\xbb\xf2\xc8\x97\xb8\xa4\x6c" \
-    "\xc6\x67\x7e\xaa\x51\x95\x71\xfa\x08\x7e\xa8\x37" \
-    "\x62\xda\x9a\xba\xcb\x20\x23\x5f\x00\x00\x00\x00" \
-    "\x49\x45\x4e\x44\xae\x42\x60\x82"
-image7_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x00" \
-    "\xd5\x49\x44\x41\x54\x38\x8d\xc5\x95\x5d\x0a\x84" \
-    "\x30\x0c\x84\x27\xe2\xa9\x0a\x9e\x6c\x8b\x0f\x4b" \
-    "\x3d\xd9\x82\xd7\xca\x3e\x58\xd7\xfe\x4c\xd0\xba" \
-    "\x5d\x76\x40\x02\x4d\xf2\x65\xda\x0a\x05\x7e\x24" \
-    "\x39\xc9\xeb\x8d\x9e\xaa\x88\x41\xa0\xc9\xaa\xd8" \
-    "\xc8\x2a\xb3\x2f\x9c\x42\x5b\xe1\xe3\x0e\x0d\xcf" \
-    "\x00\xc0\x03\x08\xf0\xb3\xa7\xa0\x74\x10\xa9\xd7" \
-    "\x14\x2e\x00\xb4\x2c\x5a\x5f\xab\x69\x6b\x97\x9b" \
-    "\x1c\x83\x7f\xc0\xc3\x16\xb6\xe4\x16\x5b\x64\xf7" \
-    "\x8d\x71\x63\x59\x91\x9b\xdc\x45\x70\xde\x47\xc0" \
-    "\x47\x32\xdd\x5e\x5b\xcc\x35\xf0\xc9\x77\x62\xae" \
-    "\x78\x79\x36\xdc\xcf\x75\x13\x57\x7e\x79\xf4\x8c" \
-    "\x4b\x27\xaa\x0f\x13\x27\xb2\x40\xf5\x11\x7f\xcb" \
-    "\xe3\x48\xaa\x33\xb6\xe0\x22\x4b\x05\x4d\x07\x46" \
-    "\xb8\x02\x5e\x2e\x3b\x3e\x73\xcd\xe0\xdd\x1c\x97" \
-    "\xf0\x2e\x8e\xd9\xd0\xaf\x1d\xb3\x81\x22\x4b\xdf" \
-    "\x33\xee\xe6\x98\xa9\x34\xa0\xf6\x17\xb4\x55\x40" \
-    "\xd0\x0b\xcf\x4c\xa0\x8f\xc0\xdf\xf4\x06\xe3\x25" \
-    "\xc1\x98\x1b\xc4\x18\x76\x00\x00\x00\x00\x49\x45" \
-    "\x4e\x44\xae\x42\x60\x82"
-image8_data = \
-    "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
-    "\x49\x48\x44\x52\x00\x00\x00\x16\x00\x00\x00\x16" \
-    "\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\x00\x00\x02" \
-    "\x5d\x49\x44\x41\x54\x38\x8d\xd5\x93\xa1\x72\xdb" \
-    "\x40\x10\x86\x3f\x67\x0a\x56\xec\xc4\x22\x78\xd0" \
-    "\x65\x36\x93\xa0\xc2\x1c\x68\xd6\xc2\xe6\x0d\xf2" \
-    "\x1a\x81\x81\x11\x34\x94\x99\xc2\x54\xa8\x32\x9b" \
-    "\x55\xf0\xe0\x89\xdd\xb1\x5b\xa6\x02\xb7\x9d\x66" \
-    "\x92\xd6\x99\xb6\xd3\x99\xfe\xe8\x6e\x67\xe7\xdb" \
-    "\x7f\x77\xef\xe0\x7f\xd3\xe2\xc7\x4b\xd7\x75\xb3" \
-    "\x73\x0e\xef\x3d\x51\x15\x00\x23\x82\xb5\x16\x6b" \
-    "\x2d\x57\x57\x57\x8b\x17\x29\xbf\x02\xb7\x6d\x3b" \
-    "\x0f\x87\x03\xb9\x2d\x58\xae\xd7\x60\x04\x00\xef" \
-    "\x1c\xe3\xc7\x03\x06\xa8\xaa\x8a\xeb\xeb\xeb\x57" \
-    "\xc1\x17\xdf\xa0\x6d\xdb\x52\x5d\xd7\x54\xef\xb6" \
-    "\x00\xa8\x2a\x49\x13\x8a\x12\x35\x32\xec\x3a\xc4" \
-    "\x2b\x9b\xcd\xe6\x55\xce\x2f\xfa\xbe\x9f\x87\xc3" \
-    "\x40\xfd\xe1\x3d\xcb\x4d\x8d\xaa\xa2\x4e\x48\xee" \
-    "\x12\xc6\x82\x38\x08\xc1\x07\x96\x9b\x1a\x8a\x9c" \
-    "\xe3\xf1\xf8\xaa\x51\x5c\x38\xe7\xc8\xad\xa5\xaa" \
-    "\x6b\x00\xc4\x5f\x12\x9c\x67\xd2\x23\x93\x8c\x88" \
-    "\xe6\xc8\x60\xd1\x18\xb1\xd5\x92\xd1\x39\xba\xae" \
-    "\x9b\xcf\x83\xa7\x89\x65\xb5\x46\x51\x34\x80\x1b" \
-    "\x1d\x2e\x1f\x49\x45\xc0\xe3\x50\x09\x64\x08\xea" \
-    "\x15\x44\x90\xc2\xe0\xbd\x3f\xef\x58\x53\xc2\xe4" \
-    "\x86\xa0\x01\x9f\x4d\x84\xf5\x84\x18\x41\x83\x62" \
-    "\xb0\x40\x8e\x8b\x23\xc9\x24\x50\x10\x93\x31\x4d" \
-    "\xd3\x59\xf0\x1b\x80\x98\x14\x11\x20\x25\x14\x40" \
-    "\x15\xf1\x96\x4c\x0b\xbc\x1b\x48\x4b\x07\xe4\x68" \
-    "\x88\x80\xc0\x29\xeb\xd7\x8e\x41\x41\xf5\xb4\x34" \
-    "\xfd\x76\x86\x4c\x05\x3f\x1e\x08\x4b\x0f\x85\x80" \
-    "\x26\x54\x40\x63\x40\x44\xce\x83\x8b\xbc\xc0\x39" \
-    "\x87\xa6\x13\x50\xa3\xa2\x28\x5e\x1d\x5a\x44\x14" \
-    "\xd0\x70\x8a\xa5\x98\x08\x21\x62\xad\x3d\x0f\xb6" \
-    "\xd6\xe2\x87\xcf\xa4\x98\x50\x8d\x27\x40\x50\x44" \
-    "\x73\x70\x42\x8c\x91\xaf\x8d\x10\xfd\x44\x81\x60" \
-    "\x8c\x39\x0b\x5e\x00\xdc\xdd\xdd\xcd\x8e\x80\xa9" \
-    "\xde\x42\x02\x48\xe8\x04\x84\x08\x56\xf0\x3e\x02" \
-    "\x90\x7d\x72\x94\x65\xc9\xba\x5a\xe3\x46\x87\x31" \
-    "\xe6\xa7\x9f\xe5\x02\x60\xb5\x5a\x61\x02\xc4\xee" \
-    "\x40\xa6\x89\x4c\x33\xf2\xcb\x0c\xb1\x06\x51\x28" \
-    "\x14\xf8\xf8\x99\xb2\x2c\xb9\xb9\xb9\x59\xb8\xd1" \
-    "\xf1\xf8\xf8\x48\xd3\x34\xb4\x6d\xfb\xe2\x9b\xfe" \
-    "\x5e\xad\xef\xfb\xf9\x78\x3c\x32\x3a\x87\x18\x81" \
-    "\xec\xb4\x20\x0d\x11\x51\xa8\xeb\x9a\xed\x76\xbb" \
-    "\x00\x18\x86\x61\xee\xba\x8e\xfd\x7e\x8f\x31\x86" \
-    "\xed\x76\xcb\x6a\xb5\x7a\xe2\xfe\x59\x1b\x5d\xd7" \
-    "\xcd\xde\x7b\x62\x8c\x88\x08\x79\x9e\x63\xad\xa5" \
-    "\xaa\xaa\x67\xb9\xbb\xdd\x6e\x6e\x9a\x06\xef\x3d" \
-    "\x75\x5d\x3f\x29\xfe\xc7\xea\xfb\x7e\xbe\xbd\xbd" \
-    "\x9d\xad\xb5\x73\x59\x96\xf3\xfd\xfd\xfd\xfc\xa2" \
-    "\xe3\xdf\xd5\xc3\xc3\xc3\xdc\x34\x0d\xd3\x34\xb1" \
-    "\xd9\x6c\xfe\x1e\x18\x4e\x63\xdc\xef\xf7\xa4\x94" \
-    "\xfe\x26\xf6\x1f\xe9\x0b\xbc\x4c\x5e\x59\xd6\x14" \
-    "\xca\xf4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42" \
-    "\x60\x82"
-
-class Eficas(QMainWindow):
-    def __init__(self,parent = None,name = None,fl = 0):
-        QMainWindow.__init__(self,parent,name,fl)
-        self.statusBar()
-
-        self.image0 = QPixmap()
-        self.image0.loadFromData(image0_data,"PNG")
-        self.image1 = QPixmap()
-        self.image1.loadFromData(image1_data,"PNG")
-        self.image2 = QPixmap()
-        self.image2.loadFromData(image2_data,"PNG")
-        self.image3 = QPixmap()
-        self.image3.loadFromData(image3_data,"PNG")
-        self.image4 = QPixmap()
-        self.image4.loadFromData(image4_data,"PNG")
-        self.image5 = QPixmap()
-        self.image5.loadFromData(image5_data,"PNG")
-        self.image6 = QPixmap()
-        self.image6.loadFromData(image6_data,"PNG")
-        self.image7 = QPixmap()
-        self.image7.loadFromData(image7_data,"PNG")
-        self.image8 = QPixmap()
-        self.image8.loadFromData(image8_data,"PNG")
-        if not name:
-            self.setName("Eficas")
-
-        self.setEnabled(1)
-        self.setSizePolicy(QSizePolicy(QSizePolicy.Minimum,QSizePolicy.Minimum,0,0,self.sizePolicy().hasHeightForWidth()))
-        self.setMinimumSize(QSize(21,336))
-        self.setBackgroundOrigin(QMainWindow.WidgetOrigin)
-        f = QFont(self.font())
-        self.setFont(f)
-
-        self.setCentralWidget(QWidget(self,"qt_central_widget"))
-
-        self.line1 = QFrame(self.centralWidget(),"line1")
-        self.line1.setGeometry(QRect(-30,-10,930,20))
-        self.line1.setFrameShape(QFrame.HLine)
-        self.line1.setFrameShadow(QFrame.Sunken)
-        self.line1.setFrameShape(QFrame.HLine)
-
-        self.fileNewAction = QAction(self,"fileNewAction")
-        self.fileNewAction.setIconSet(QIconSet(self.image0))
-        self.fileOpenAction = QAction(self,"fileOpenAction")
-        self.fileOpenAction.setIconSet(QIconSet(self.image1))
-        self.fileSaveAction = QAction(self,"fileSaveAction")
-        self.fileSaveAction.setIconSet(QIconSet(self.image2))
-        self.fileSaveAsAction = QAction(self,"fileSaveAsAction")
-        self.fileExitAction = QAction(self,"fileExitAction")
-        self.editUndoAction = QAction(self,"editUndoAction")
-        self.editUndoAction.setEnabled(0)
-        self.editUndoAction.setIconSet(QIconSet(self.image3))
-        self.editRedoAction = QAction(self,"editRedoAction")
-        self.editRedoAction.setEnabled(0)
-        self.editRedoAction.setIconSet(QIconSet(self.image4))
-        self.editCutAction = QAction(self,"editCutAction")
-        self.editCutAction.setIconSet(QIconSet(self.image5))
-        self.editCopyAction = QAction(self,"editCopyAction")
-        self.editCopyAction.setIconSet(QIconSet(self.image6))
-        self.editPasteAction = QAction(self,"editPasteAction")
-        self.editPasteAction.setIconSet(QIconSet(self.image7))
-        self.jdcFichierResultatAction = QAction(self,"jdcFichierResultatAction")
-        self.jdcFichierResultatAction.setEnabled(1)
-        self.jdcFichierResultatAction.setIconSet(QIconSet(self.image8))
-        self.helpContentsAction = QAction(self,"helpContentsAction")
-        self.helpIndexAction = QAction(self,"helpIndexAction")
-        self.helpAboutAction = QAction(self,"helpAboutAction")
-        self.helpAboutAction.setOn(0)
-        self.fileSaveCloseAction = QAction(self,"fileSaveCloseAction")
-        self.fileCloseAction = QAction(self,"fileCloseAction")
-        self.fileNewViewAction = QAction(self,"fileNewViewAction")
-        self.fileNewViewAction.setEnabled(0)
-        self.fileCloseAllAction = QAction(self,"fileCloseAllAction")
-        self.jdcRapportDeValidationAction = QAction(self,"jdcRapportDeValidationAction")
-        self.jdcFichierSourceAction = QAction(self,"jdcFichierSourceAction")
-        self.traduitV7V8Action = QAction(self,"traduitV7V8Action")
-        self.aidenew_itemAction = QAction(self,"aidenew_itemAction")
-        self.fileNewInclude = QAction(self,"fileNewInclude")
-        self.optionEditeurAction = QAction(self,"optionEditeurAction")
-        self.optionPdfAction = QAction(self,"optionPdfAction")
-
-
-        self.toolBar = QToolBar(QString(""),self,Qt.DockTop)
-
-        self.toolBar.setFrameShape(QToolBar.MenuBarPanel)
-        self.toolBar.setHorizontallyStretchable(0)
-        self.fileNewAction.addTo(self.toolBar)
-        self.fileSaveAction.addTo(self.toolBar)
-        self.fileOpenAction.addTo(self.toolBar)
-        self.fileSaveAsAction.addTo(self.toolBar)
-        self.editCutAction.addTo(self.toolBar)
-        self.editPasteAction.addTo(self.toolBar)
-        self.jdcFichierResultatAction.addTo(self.toolBar)
-        self.fileExitAction.addTo(self.toolBar)
-        self.toolBar.addSeparator()
-
-
-        self.MenuBar = QMenuBar(self,"MenuBar")
-
-        self.MenuBar.setMargin(2)
-
-        self.Fichier = QPopupMenu(self)
-        self.fileNewAction.addTo(self.Fichier)
-        self.fileNewInclude.addTo(self.Fichier)
-        self.fileOpenAction.addTo(self.Fichier)
-        self.fileSaveAction.addTo(self.Fichier)
-        self.fileSaveAsAction.addTo(self.Fichier)
-        self.fileCloseAction.addTo(self.Fichier)
-        self.fileCloseAllAction.addTo(self.Fichier)
-        self.Fichier.insertSeparator()
-        self.Fichier.insertSeparator()
-        self.fileExitAction.addTo(self.Fichier)
-        self.MenuBar.insertItem(QString(""),self.Fichier,2)
-
-        self.Edition = QPopupMenu(self)
-        self.Edition.insertSeparator()
-        self.editCutAction.addTo(self.Edition)
-        self.editCopyAction.addTo(self.Edition)
-        self.editPasteAction.addTo(self.Edition)
-        self.MenuBar.insertItem(QString(""),self.Edition,3)
-
-        self.JdC = QPopupMenu(self)
-        self.jdcRapportDeValidationAction.addTo(self.JdC)
-        self.jdcFichierSourceAction.addTo(self.JdC)
-        self.jdcFichierResultatAction.addTo(self.JdC)
-        self.MenuBar.insertItem(QString(""),self.JdC,4)
-
-        self.Aide = QPopupMenu(self)
-        self.aidenew_itemAction.addTo(self.Aide)
-        self.MenuBar.insertItem(QString(""),self.Aide,5)
-
-        self.Options = QPopupMenu(self)
-        self.optionEditeurAction.addTo(self.Options)
-        self.optionPdfAction.addTo(self.Options)
-        self.MenuBar.insertItem(QString(""),self.Options,6)
-
-        self.Traduction = QPopupMenu(self)
-        self.traduitV7V8Action.addTo(self.Traduction)
-        self.MenuBar.insertItem(QString(""),self.Traduction,7)
-
-        self.Patrons = QPopupMenu(self)
-        self.MenuBar.insertItem(QString(""),self.Patrons,8)
-
-
-        self.languageChange()
-
-        self.resize(QSize(902,594).expandedTo(self.minimumSizeHint()))
-        self.clearWState(Qt.WState_Polished)
-
-        self.connect(self.fileNewAction,SIGNAL("activated()"),self.fileNew)
-        self.connect(self.fileOpenAction,SIGNAL("activated()"),self.fileOpen)
-        self.connect(self.fileSaveAction,SIGNAL("activated()"),self.fileSave)
-        self.connect(self.fileSaveAsAction,SIGNAL("activated()"),self.fileSaveAs)
-        self.connect(self.fileExitAction,SIGNAL("activated()"),self.fileExit)
-        self.connect(self.editUndoAction,SIGNAL("activated()"),self.editUndo)
-        self.connect(self.editRedoAction,SIGNAL("activated()"),self.editRedo)
-        self.connect(self.editCutAction,SIGNAL("activated()"),self.editCut)
-        self.connect(self.editPasteAction,SIGNAL("activated()"),self.editPaste)
-        self.connect(self.jdcFichierResultatAction,SIGNAL("activated()"),self.visuJdcPy)
-        self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
-        self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
-        self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout)
-        self.connect(self.fileCloseAction,SIGNAL("activated()"),self.fileClose)
-        self.connect(self.fileNewViewAction,SIGNAL("activated()"),self.fileNewView)
-        self.connect(self.fileCloseAllAction,SIGNAL("activated()"),self.fileCloseAll)
-        self.connect(self.editCopyAction,SIGNAL("activated()"),self.editCopy)
-        self.connect(self.jdcRapportDeValidationAction,SIGNAL("activated()"),self.jdcRapport)
-        self.connect(self.jdcFichierSourceAction,SIGNAL("activated()"),self.jdcFichierSource)
-        self.connect(self.traduitV7V8Action,SIGNAL("activated()"),self.traductionV7V8)
-        self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout)
-        self.connect(self.fileNewInclude,SIGNAL("activated()"),self.NewInclude)
-        self.connect(self.optionEditeurAction,SIGNAL("activated()"),self.optionEditeur)
-        self.connect(self.optionPdfAction,SIGNAL("activated()"),self.optionPdf)
-
-
-    def languageChange(self):
-        self.setCaption(self.__tr("Eficas "))
-        self.fileNewAction.setText(self.__tr("Nouveau"))
-        self.fileNewAction.setMenuText(self.__tr("&Nouveau"))
-        self.fileNewAction.setAccel(self.__tr("Ctrl+N"))
-        self.fileOpenAction.setText(self.__tr("Ouvrir"))
-        self.fileOpenAction.setMenuText(self.__tr("&Ouvrir"))
-        self.fileOpenAction.setAccel(self.__tr("Ctrl+O"))
-        self.fileSaveAction.setText(self.__tr("Enregistrer"))
-        self.fileSaveAction.setMenuText(self.__tr("&Enregistrer"))
-        self.fileSaveAction.setAccel(self.__tr("Ctrl+E"))
-        self.fileSaveAsAction.setText(self.__tr("Enregistrer Sous"))
-        self.fileSaveAsAction.setMenuText(self.__tr("Enregistrer Sous"))
-        self.fileSaveAsAction.setAccel(QString.null)
-        self.fileExitAction.setText(self.__tr("Quitter"))
-        self.fileExitAction.setMenuText(self.__tr("Q&uitter"))
-        self.fileExitAction.setAccel(QString.null)
-        self.editUndoAction.setText(self.__tr("Undo"))
-        self.editUndoAction.setMenuText(self.__tr("&Undo"))
-        self.editUndoAction.setAccel(self.__tr("Ctrl+Z"))
-        self.editRedoAction.setText(self.__tr("Redo"))
-        self.editRedoAction.setMenuText(self.__tr("&Redo"))
-        self.editRedoAction.setAccel(self.__tr("Ctrl+Y"))
-        self.editCutAction.setText(self.__tr("Couper"))
-        self.editCutAction.setMenuText(self.__tr("C&ouper"))
-        self.editCutAction.setAccel(self.__tr("Ctrl+X"))
-        self.editCopyAction.setText(self.__tr("Copier"))
-        self.editCopyAction.setMenuText(self.__tr("&Copier"))
-        self.editCopyAction.setAccel(self.__tr("Ctrl+C"))
-        self.editPasteAction.setText(self.__tr("Coller"))
-        self.editPasteAction.setMenuText(self.__tr("&Coller"))
-        self.editPasteAction.setAccel(self.__tr("Ctrl+V"))
-        self.jdcFichierResultatAction.setText(self.__tr("Fichier Resultat"))
-        self.jdcFichierResultatAction.setMenuText(self.__tr("Fichier Resultat"))
-        self.jdcFichierResultatAction.setAccel(self.__tr("Ctrl+F"))
-        self.helpContentsAction.setText(self.__tr("Contents"))
-        self.helpContentsAction.setMenuText(self.__tr("&Contents..."))
-        self.helpContentsAction.setAccel(QString.null)
-        self.helpIndexAction.setText(self.__tr("Index"))
-        self.helpIndexAction.setMenuText(self.__tr("&Index..."))
-        self.helpIndexAction.setAccel(QString.null)
-        self.helpAboutAction.setText(self.__tr("About"))
-        self.helpAboutAction.setMenuText(self.__tr("&About"))
-        self.helpAboutAction.setAccel(QString.null)
-        self.fileSaveCloseAction.setText(self.__tr("Fermer"))
-        self.fileSaveCloseAction.setMenuText(self.__tr("Fermer"))
-        self.fileCloseAction.setText(self.__tr("Fermer"))
-        self.fileCloseAction.setMenuText(self.__tr("Fermer"))
-        self.fileCloseAction.setAccel(self.__tr("Ctrl+W"))
-        self.fileNewViewAction.setText(self.__tr("New view"))
-        self.fileCloseAllAction.setText(self.__tr("Tout Fermer"))
-        self.fileCloseAllAction.setMenuText(self.__tr("Tout Fermer"))
-        self.jdcRapportDeValidationAction.setText(self.__tr("Rapport de validation"))
-        self.jdcRapportDeValidationAction.setMenuText(self.__tr("Rapport de validation"))
-        self.jdcRapportDeValidationAction.setAccel(self.__tr("Ctrl+R"))
-        self.jdcFichierSourceAction.setText(self.__tr("Fichier source"))
-        self.jdcFichierSourceAction.setMenuText(self.__tr("Fichier source"))
-        self.jdcFichierSourceAction.setAccel(self.__tr("Ctrl+B"))
-        self.traduitV7V8Action.setText(self.__tr("traduitV7V8"))
-        self.traduitV7V8Action.setMenuText(self.__tr("traduitV7V8"))
-        self.aidenew_itemAction.setText(self.__tr("Eficas"))
-        self.fileNewInclude.setText(self.__tr("Nouvel Include"))
-        self.fileNewInclude.setMenuText(self.__tr("Nouvel Include"))
-        self.optionEditeurAction.setText(self.__tr("Parametres Eficas"))
-        self.optionEditeurAction.setMenuText(self.__tr("Parametres Eficas"))
-        self.optionPdfAction.setText(self.__tr("Lecteur Pdf"))
-        self.optionPdfAction.setMenuText(self.__tr("Lecteur Pdf"))
-        self.toolBar.setLabel(self.__tr("Tools"))
-        if self.MenuBar.findItem(2):
-            self.MenuBar.findItem(2).setText(self.__tr("&Fichier"))
-        if self.MenuBar.findItem(3):
-            self.MenuBar.findItem(3).setText(self.__tr("&Edition"))
-        if self.MenuBar.findItem(4):
-            self.MenuBar.findItem(4).setText(self.__tr("JdC"))
-        if self.MenuBar.findItem(5):
-            self.MenuBar.findItem(5).setText(self.__tr("&Aide"))
-        if self.MenuBar.findItem(6):
-            self.MenuBar.findItem(6).setText(self.__tr("Options"))
-        if self.MenuBar.findItem(7):
-            self.MenuBar.findItem(7).setText(self.__tr("Traduction"))
-        if self.MenuBar.findItem(8):
-            self.MenuBar.findItem(8).setText(self.__tr("Patrons"))
-
-
-    def fileNew(self):
-        print "Eficas.fileNew(): Not implemented yet"
-
-    def fileOpen(self):
-        print "Eficas.fileOpen(): Not implemented yet"
-
-    def fileSave(self):
-        print "Eficas.fileSave(): Not implemented yet"
-
-    def fileSaveAs(self):
-        print "Eficas.fileSaveAs(): Not implemented yet"
-
-    def filePrint(self):
-        print "Eficas.filePrint(): Not implemented yet"
-
-    def fileExit(self):
-        print "Eficas.fileExit(): Not implemented yet"
-
-    def editUndo(self):
-        print "Eficas.editUndo(): Not implemented yet"
-
-    def editRedo(self):
-        print "Eficas.editRedo(): Not implemented yet"
-
-    def jdcFichierSource(self):
-        print "Eficas.jdcFichierSource(): Not implemented yet"
-
-    def fileNewView(self):
-        print "Eficas.fileNewView(): Not implemented yet"
-
-    def editPaste(self):
-        print "Eficas.editPaste(): Not implemented yet"
-
-    def visuJdcPy(self):
-        print "Eficas.visuJdcPy(): Not implemented yet"
-
-    def helpIndex(self):
-        print "Eficas.helpIndex(): Not implemented yet"
-
-    def helpContents(self):
-        print "Eficas.helpContents(): Not implemented yet"
-
-    def helpAbout(self):
-        print "Eficas.helpAbout(): Not implemented yet"
-
-    def fileClose(self):
-        print "Eficas.fileClose(): Not implemented yet"
-
-    def fileCloseAll(self):
-        print "Eficas.fileCloseAll(): Not implemented yet"
-
-    def jdcRapport(self):
-        print "Eficas.jdcRapport(): Not implemented yet"
-
-    def editCut(self):
-        print "Eficas.editCut(): Not implemented yet"
-
-    def editCopy(self):
-        print "Eficas.editCopy(): Not implemented yet"
-
-    def traductionV7V8(self):
-        print "Eficas.traductionV7V8(): Not implemented yet"
-
-    def NewInclude(self):
-        print "Eficas.NewInclude(): Not implemented yet"
-
-    def optionEditeur(self):
-        print "Eficas.optionEditeur(): Not implemented yet"
-
-    def optionPdf(self):
-        print "Eficas.optionPdf(): Not implemented yet"
-
-    def __tr(self,s,c = None):
-        return qApp.translate("Eficas",s,c)
index 6435e88bf48e68c7415efcbe6886ddea96ec15a6..efd47e7feef4e1484ca7fa4b9869ccd5d7ec6bc6 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'OptionsEditeur.ui'
 #
-# Created: Wed Jul  9 10:12:47 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index d20115f7a75dba649577f987818ea98b06b54e90..6b8ac238241ffdd3a1654269f577f6701032e4cc 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'OptionsPdf.ui'
 #
-# Created: Wed Jul  9 10:12:47 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index d736e7ce03bb457034567f10509133b0f1024c18..42b7e751db31c41a35303cefa94caa7895b0f539 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'aideQT.ui'
 #
-# Created: Wed Jul  9 10:12:47 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index d35f39ff16f4826de07033e4ed35707a7e3db7ae..7da381db928c21bb4f8a33851b6723f623a555ce 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desChoixCata.ui'
 #
-# Created: Wed Jul 16 16:27:33 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 03e404f2dac9377116205c76a1fe5a2db711c84f..749cd0378b5dd970f3e2eb3f6e302221fcfb1dfd 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desCommande.ui'
 #
-# Created: Tue Sep 23 10:19:58 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index d4b7a5e4005adc60b636444473be5f38e30c9e3b..c89681d22fa36b0f8ac727ede172ac9c5538789c 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desCommentaire.ui'
 #
-# Created: Wed Jul 23 12:00:45 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 31da9ec1418ac6d106172a96ff283d0927dfc163..39e994fac77b87e82d4797ca1079bc1cd3681b18 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desError.ui'
 #
-# Created: Wed Jul  9 10:11:20 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 2ac2323d2563104608054e37a702bad872a2093f..95d721ae84f9c9642a443c0b50c3de7fbb6187da 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desFormule.ui'
 #
-# Created: Wed Jul 23 11:43:53 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 7a8ce1df83ef504611d81708484ddd0e846b8608..33790c95936437e20b113bc4df2bc5d7f70eeb45 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desInactif.ui'
 #
-# Created: Wed Jul  9 10:11:21 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 73a967c7819fdd12ee333365cda149a7ac4a1555..c78611d645a84d63602a48d2249f36b0bbd6803d 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desInclude.ui'
 #
-# Created: Tue Oct  7 16:59:34 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index ade7e63ba3135d0af15c3616d4c8d8130ba41722..43c5d350830cb6d915a787e96bc6dbd0532015ad 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desListeParam.ui'
 #
-# Created: Fri Jul 18 16:24:34 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index ede8054900aa6180ce80f88872d02ee0e548e360..ac6b782e4d3d9b1465d0fbc59e94845679efb2a5 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desMCFact.ui'
 #
-# Created: Fri Jul 18 16:24:34 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index f01c732545cfbe9ee79306a0ab52248092bea8cb..69cbc51aa70938df6df1e3dfbcf57b7e28fa89a8 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desMCListAjout.ui'
 #
-# Created: Wed Jul  9 10:11:21 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index cee894d99243d0b5c47562a455411fe1a2710597..c9b3bf3b0b871b8cb4d6fd060320dccba8b2178f 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desParam.ui'
 #
-# Created: Wed Sep 10 11:20:17 2008
+# Created: Tue Nov 18 17:37:24 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 54c612b3ffa773027a61768189622fa8057f19d8..a75ca407ce576e4f6fa6c9182a0f4cf0490d93c4 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desPlusieursBase.ui'
 #
-# Created: Fri Jul 18 16:24:35 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 0af9546faa998aeb74d73f9fed275e9cfa9aa490..5165f98eb78e8e6cbe32eaedee775eae5e959291 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desPlusieursInto.ui'
 #
-# Created: Fri Sep 26 11:16:49 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 3b36f1c5bebb82c9bc4cd18726b661330db64e77..d02e1fc30cd71d59b9d1f851b9134e881a693cd0 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desPoursuite.ui'
 #
-# Created: Fri Oct 10 11:42:29 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 19def6bc50fd68f1d394cf42279e46b8d517d389..297b9adf9166112aa6d08d21891640f797a8d3e4 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desRacine.ui'
 #
-# Created: Tue Sep 23 10:19:58 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 914a3fa2dc198ad3ff26b2b605c6cae2b44ce7c5..c42291946750ab6a39666611e129c98f535c44d8 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desSelectVal.ui'
 #
-# Created: Fri Sep 26 17:59:06 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 39863fbc0ad523b63e58b6b16864bc614bc930da..11130db36a443f312b1c559e5c6c0b44e02b8ad3 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueASSD.ui'
 #
-# Created: Fri Jul 18 16:24:35 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 265207970a1909d7629edae36e25289c2ade6ffe..6d2c6b3301472f297f6f1cc6a17ef30c872c3731 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueBase.ui'
 #
-# Created: Thu Jul 24 10:46:31 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 1edb0042ae8120e193a5308d18c098e0bcf603dc..77b18a589093231dfcc4cf26696cb9c5539aed33 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueComp.ui'
 #
-# Created: Wed Jul  9 10:31:14 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 5d9270f5095abca3fca8533ad3903080bac44873..9c2785c7865002e9a15ffcdaf60d0cb7e9359892 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueInto.ui'
 #
-# Created: Fri Jul 18 16:24:35 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index e1381af36709ba5d58c342dd811c2c7810835060..a65143e445b9bfeed3d3197748696656b86e011c 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueSDCO.ui'
 #
-# Created: Wed Jul  9 10:11:22 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 718c787b884f7ee135b3c29daf326987cec8d0e3..65367aaab80c1f2803d86fec992e4c3694562ba4 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desUniqueSDCOInto.ui'
 #
-# Created: Fri Jul 18 16:24:35 2008
+# Created: Tue Nov 18 17:37:25 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index dac56f763cd1de68895b6185ea1c7a79486b8362..43e63fd3e5b9957f0616fce5504395c0c4b4cbc1 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desViewTexte.ui'
 #
-# Created: Tue Sep  9 18:09:46 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 8a0e28953bd8abbc3861b317e25cbff09ccbdd13..687d2f4213379c865dcb61930ceff0a85090cfe6 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'desVisu.ui'
 #
-# Created: Wed Jul  9 10:11:22 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
index 604403a7e2e413152778a9f747c3956a46796f14..7720fb0c04a52c8d646075370a35a2d870520e1d 100644 (file)
@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'myMain.ui'
 #
-# Created: Wed Sep 10 09:57:04 2008
+# Created: Tue Nov 18 17:37:26 2008
 #      by: PyQt4 UI code generator 4.4.2
 #
 # WARNING! All changes made in this file will be lost!
@@ -66,25 +66,21 @@ class Ui_Eficas(object):
         self.actionFermer.setObjectName("actionFermer")
         self.actionFermer_tout = QtGui.QAction(Eficas)
         self.actionFermer_tout.setObjectName("actionFermer_tout")
-        self.actionCopier = QtGui.QAction(Eficas)
-        self.actionCopier.setObjectName("actionCopier")
         self.actionCouper = QtGui.QAction(Eficas)
         icon = QtGui.QIcon()
         icon.addPixmap(QtGui.QPixmap("icons/Cut24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off)
         self.actionCouper.setIcon(icon)
         self.actionCouper.setObjectName("actionCouper")
-        self.actionColler = QtGui.QAction(Eficas)
-        self.actionColler.setObjectName("actionColler")
-        self.actionCopier1 = QtGui.QAction(Eficas)
+        self.actionCopier = QtGui.QAction(Eficas)
         icon = QtGui.QIcon()
         icon.addPixmap(QtGui.QPixmap("icons/Copy24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off)
-        self.actionCopier1.setIcon(icon)
-        self.actionCopier1.setObjectName("actionCopier1")
-        self.actionColler1 = QtGui.QAction(Eficas)
+        self.actionCopier.setIcon(icon)
+        self.actionCopier.setObjectName("actionCopier")
+        self.actionColler = QtGui.QAction(Eficas)
         icon = QtGui.QIcon()
         icon.addPixmap(QtGui.QPixmap("icons/Paste24.gif"),QtGui.QIcon.Normal,QtGui.QIcon.Off)
-        self.actionColler1.setIcon(icon)
-        self.actionColler1.setObjectName("actionColler1")
+        self.actionColler.setIcon(icon)
+        self.actionColler.setObjectName("actionColler")
         self.actionQuitter = QtGui.QAction(Eficas)
         self.actionQuitter.setObjectName("actionQuitter")
         self.actionRapport_de_Validation = QtGui.QAction(Eficas)
@@ -155,17 +151,20 @@ class Ui_Eficas(object):
         self.action_Ouvrir.setText(QtGui.QApplication.translate("Eficas", "&Ouvrir", None, QtGui.QApplication.UnicodeUTF8))
         self.action_Ouvrir.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8))
         self.actionEnregistrer.setText(QtGui.QApplication.translate("Eficas", "Enregistrer", None, QtGui.QApplication.UnicodeUTF8))
-        self.actionEnregistrer.setShortcut(QtGui.QApplication.translate("Eficas", "Shift+E", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionEnregistrer.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+E", None, QtGui.QApplication.UnicodeUTF8))
         self.actionEnregistrer_sous.setText(QtGui.QApplication.translate("Eficas", "Enregistrer sous", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionEnregistrer_sous.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+Shift+E", None, QtGui.QApplication.UnicodeUTF8))
         self.actionFermer.setText(QtGui.QApplication.translate("Eficas", "Fermer ", None, QtGui.QApplication.UnicodeUTF8))
         self.actionFermer.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+W", None, QtGui.QApplication.UnicodeUTF8))
         self.actionFermer_tout.setText(QtGui.QApplication.translate("Eficas", "Fermer tout", None, QtGui.QApplication.UnicodeUTF8))
-        self.actionCopier.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8))
         self.actionCouper.setText(QtGui.QApplication.translate("Eficas", "Couper", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionCouper.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionCopier.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionCopier.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8))
         self.actionColler.setText(QtGui.QApplication.translate("Eficas", "Coller", None, QtGui.QApplication.UnicodeUTF8))
-        self.actionCopier1.setText(QtGui.QApplication.translate("Eficas", "Copier", None, QtGui.QApplication.UnicodeUTF8))
-        self.actionColler1.setText(QtGui.QApplication.translate("Eficas", "Coller", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionColler.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8))
         self.actionQuitter.setText(QtGui.QApplication.translate("Eficas", "Quitter", None, QtGui.QApplication.UnicodeUTF8))
+        self.actionQuitter.setShortcut(QtGui.QApplication.translate("Eficas", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8))
         self.actionRapport_de_Validation.setText(QtGui.QApplication.translate("Eficas", "Rapport de Validation", None, QtGui.QApplication.UnicodeUTF8))
         self.actionFichier_Source.setText(QtGui.QApplication.translate("Eficas", "Fichier Source", None, QtGui.QApplication.UnicodeUTF8))
         self.actionFichier_Resultat.setText(QtGui.QApplication.translate("Eficas", "Fichier Résultat", None, QtGui.QApplication.UnicodeUTF8))
index 0112d9c6117f29d16bf058225392450ccc483dd4..6025ed619b40ce0bb8e5038baaa385b4d38d3c23 100644 (file)
     <string>Enregistrer</string>
    </property>
    <property name="shortcut" >
-    <string>Shift+E</string>
+    <string>Ctrl+E</string>
    </property>
   </action>
   <action name="actionEnregistrer_sous" >
    <property name="text" >
     <string>Enregistrer sous</string>
    </property>
+   <property name="shortcut" >
+    <string>Ctrl+Shift+E</string>
+   </property>
   </action>
   <action name="actionFermer" >
    <property name="text" >
     <string>Fermer tout</string>
    </property>
   </action>
-  <action name="actionCopier" >
-   <property name="text" >
-    <string>Copier</string>
-   </property>
-  </action>
   <action name="actionCouper" >
    <property name="icon" >
     <iconset>
    <property name="text" >
     <string>Couper</string>
    </property>
-  </action>
-  <action name="actionColler" >
-   <property name="text" >
-    <string>Coller</string>
+   <property name="shortcut" >
+    <string>Ctrl+X</string>
    </property>
   </action>
   <action name="actionCopier" >
    <property name="text" >
     <string>Copier</string>
    </property>
+   <property name="shortcut" >
+    <string>Ctrl+C</string>
+   </property>
   </action>
   <action name="actionColler" >
    <property name="icon" >
    <property name="text" >
     <string>Coller</string>
    </property>
+   <property name="shortcut" >
+    <string>Ctrl+V</string>
+   </property>
   </action>
   <action name="actionQuitter" >
    <property name="text" >
     <string>Quitter</string>
    </property>
+   <property name="shortcut" >
+    <string>Ctrl+Q</string>
+   </property>
   </action>
   <action name="actionRapport_de_Validation" >
    <property name="text" >
index aab3a0348bb1cc24f478c7be2b9afdcca0390b5c..2f162976d5f5c4f3590bfa1b6c83f3a53d3782b1 100644 (file)
@@ -1,23 +1,23 @@
-#@ MODIF V_UN_PARMI Validation  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
+#@ MODIF V_UN_PARMI Validation  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-#                                                                       
-#                                                                       
 # ======================================================================
 
 
@@ -27,8 +27,8 @@ class UN_PARMI:
       La règle vérifie que l'on trouve un des mots-clés
       de la règle parmi les arguments d'un OBJECT.
 
-      Ces arguments sont transmis à la règle pour validation sous la forme 
-      d'une liste de noms de mots-clés ou d'un dictionnaire dont 
+      Ces arguments sont transmis à la règle pour validation sous la forme
+      d'une liste de noms de mots-clés ou d'un dictionnaire dont
       les clés sont des noms de mots-clés.
    """
    def verif(self,args):
@@ -46,7 +46,7 @@ class UN_PARMI:
       for mc in self.mcs:
         if args.has_key(mc):count=count+1
       if count != 1:
-          text = "- Il ne faut qu'un mot-clé parmi : "+`self.mcs`+'\n'
+          text = "- Il faut un et un seul mot-clé parmi : "+`self.mcs`+'\n'
           return text,0
       return text,1
 
diff --git a/convert/convert_openturns.py b/convert/convert_openturns.py
deleted file mode 100644 (file)
index 527e6f6..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-"""
-    Ce module contient le plugin convertisseur de fichier
-    au format python pour EFICAS.
-
-    Un plugin convertisseur doit fournir deux attributs de classe :
-    extensions et formats et deux méthodes : readfile,convert.
-
-    L'attribut de classe extensions est une liste d'extensions
-    de fichiers préconisées pour ce type de format. Cette information
-    est seulement indicative.
-
-    L'attribut de classe formats est une liste de formats de sortie
-    supportés par le convertisseur. Les formats possibles sont :
-    eval, dict ou exec.
-    Le format eval est un texte source Python qui peut etre evalué. Le
-    résultat de l'évaluation est un objet Python quelconque.
-    Le format dict est un dictionnaire Python.
-    Le format exec est un texte source Python qui peut etre executé. 
-
-    La méthode readfile a pour fonction de lire un fichier dont le
-    nom est passé en argument de la fonction.
-       - convertisseur.readfile(nom_fichier)
-
-    La méthode convert a pour fonction de convertir le fichier
-    préalablement lu dans un objet du format passé en argument.
-       - objet=convertisseur.convert(outformat)
-
-    Ce convertisseur supporte le format de sortie exec
-
-"""
-import sys,string,traceback
-
-import parseur_python
-from Noyau import N_CR
-
-def entryPoint():
-   """
-       Retourne les informations nécessaires pour le chargeur de plugins
-       Ces informations sont retournées dans un dictionnaire
-   """
-   return {
-        # Le nom du plugin
-          'name' : 'openturns',
-        # La factory pour créer une instance du plugin
-          'factory' : PythonParser,
-          }
-
-
-class PythonParser:
-   """
-       Ce convertisseur lit un fichier au format python avec la 
-       methode readfile : convertisseur.readfile(nom_fichier)
-       et retourne le texte au format outformat avec la 
-       methode convertisseur.convert(outformat)
-
-       Ses caractéristiques principales sont exposées dans 2 attributs 
-       de classe :
-          - extensions : qui donne une liste d'extensions de fichier préconisées
-          - formats : qui donne une liste de formats de sortie supportés
-   """
-   # Les extensions de fichier préconisées
-   extensions=('.py',)
-   # Les formats de sortie supportés (eval dict ou exec)
-   # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON
-   # Le format execnoparseur est du python executable (commande exec) non converti
-   formats=('exec','execnoparseur')
-
-   def __init__(self,cr=None):
-      # Si l'objet compte-rendu n'est pas fourni, on utilise le 
-      # compte-rendu standard
-      self.text=''
-      if cr :
-         self.cr=cr
-      else:
-         self.cr=N_CR.CR(debut='CR convertisseur format python',
-                         fin='fin CR format python')
-
-   def readfile(self,filename):
-      self.filename=filename
-      try:
-         self.text=open(filename).read()
-      except:
-         self.cr.fatal("Impossible ouvrir fichier %s" % filename)
-         return
-
-   def convert(self,outformat,appli=None):
-      if outformat == 'exec':
-         try:
-           #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
-           #print txt
-           #return txt
-            return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
-         except:
-            # Erreur lors de la conversion
-            l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
-                                         sys.exc_info()[2])
-            self.cr.exception("Impossible de convertir le fichier python \
-                               qui doit contenir des erreurs.\n \
-                               On retourne le fichier non converti \n \
-                               Prévenir la maintenance. \n" + string.join(l))
-            # On retourne néanmoins le source initial non converti (au cas où)
-            return self.text
-      elif outformat == 'execnoparseur':
-         return self.text
-      else:
-         raise "Format de sortie : %s, non supporté"
-         return None
-
diff --git a/convert/convert_openturns_study.py b/convert/convert_openturns_study.py
new file mode 100644 (file)
index 0000000..cc62f50
--- /dev/null
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module contient le plugin convertisseur de fichier
+    au format python pour EFICAS.
+
+    Un plugin convertisseur doit fournir deux attributs de classe :
+    extensions et formats et deux méthodes : readfile,convert.
+
+    L'attribut de classe extensions est une liste d'extensions
+    de fichiers préconisées pour ce type de format. Cette information
+    est seulement indicative.
+
+    L'attribut de classe formats est une liste de formats de sortie
+    supportés par le convertisseur. Les formats possibles sont :
+    eval, dict ou exec.
+    Le format eval est un texte source Python qui peut etre evalué. Le
+    résultat de l'évaluation est un objet Python quelconque.
+    Le format dict est un dictionnaire Python.
+    Le format exec est un texte source Python qui peut etre executé. 
+
+    La méthode readfile a pour fonction de lire un fichier dont le
+    nom est passé en argument de la fonction.
+       - convertisseur.readfile(nom_fichier)
+
+    La méthode convert a pour fonction de convertir le fichier
+    préalablement lu dans un objet du format passé en argument.
+       - objet=convertisseur.convert(outformat)
+
+    Ce convertisseur supporte le format de sortie exec
+
+"""
+import sys,string,traceback
+
+import parseur_python
+from Noyau import N_CR
+
+def entryPoint():
+   """
+       Retourne les informations nécessaires pour le chargeur de plugins
+       Ces informations sont retournées dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'openturns_study',
+        # La factory pour créer une instance du plugin
+          'factory' : PythonParser,
+          }
+
+
+class PythonParser:
+   """
+       Ce convertisseur lit un fichier au format python avec la 
+       methode readfile : convertisseur.readfile(nom_fichier)
+       et retourne le texte au format outformat avec la 
+       methode convertisseur.convert(outformat)
+
+       Ses caractéristiques principales sont exposées dans 2 attributs 
+       de classe :
+          - extensions : qui donne une liste d'extensions de fichier préconisées
+          - formats : qui donne une liste de formats de sortie supportés
+   """
+   # Les extensions de fichier préconisées
+   extensions=('.py',)
+   # Les formats de sortie supportés (eval dict ou exec)
+   # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON
+   # Le format execnoparseur est du python executable (commande exec) non converti
+   formats=('exec','execnoparseur')
+
+   def __init__(self,cr=None):
+      # Si l'objet compte-rendu n'est pas fourni, on utilise le 
+      # compte-rendu standard
+      self.text=''
+      if cr :
+         self.cr=cr
+      else:
+         self.cr=N_CR.CR(debut='CR convertisseur format python',
+                         fin='fin CR format python')
+
+   def readfile(self,filename):
+      self.filename=filename
+      try:
+         self.text=open(filename).read()
+      except:
+         self.cr.fatal("Impossible ouvrir fichier %s" % filename)
+         return
+
+   def convert(self,outformat,appli=None):
+      if outformat == 'exec':
+         try:
+           #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
+           #print txt
+           #return txt
+            return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
+         except:
+            # Erreur lors de la conversion
+            l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
+                                         sys.exc_info()[2])
+            self.cr.exception("Impossible de convertir le fichier python \
+                               qui doit contenir des erreurs.\n \
+                               On retourne le fichier non converti \n \
+                               Prévenir la maintenance. \n" + string.join(l))
+            # On retourne néanmoins le source initial non converti (au cas où)
+            return self.text
+      elif outformat == 'execnoparseur':
+         return self.text
+      else:
+         raise "Format de sortie : %s, non supporté"
+         return None
+
diff --git a/convert/convert_openturns_wrapper.py b/convert/convert_openturns_wrapper.py
new file mode 100644 (file)
index 0000000..0cc2ea1
--- /dev/null
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module contient le plugin convertisseur de fichier
+    au format python pour EFICAS.
+
+    Un plugin convertisseur doit fournir deux attributs de classe :
+    extensions et formats et deux méthodes : readfile,convert.
+
+    L'attribut de classe extensions est une liste d'extensions
+    de fichiers préconisées pour ce type de format. Cette information
+    est seulement indicative.
+
+    L'attribut de classe formats est une liste de formats de sortie
+    supportés par le convertisseur. Les formats possibles sont :
+    eval, dict ou exec.
+    Le format eval est un texte source Python qui peut etre evalué. Le
+    résultat de l'évaluation est un objet Python quelconque.
+    Le format dict est un dictionnaire Python.
+    Le format exec est un texte source Python qui peut etre executé. 
+
+    La méthode readfile a pour fonction de lire un fichier dont le
+    nom est passé en argument de la fonction.
+       - convertisseur.readfile(nom_fichier)
+
+    La méthode convert a pour fonction de convertir le fichier
+    préalablement lu dans un objet du format passé en argument.
+       - objet=convertisseur.convert(outformat)
+
+    Ce convertisseur supporte le format de sortie exec
+
+"""
+import sys,string,traceback
+
+import parseur_python
+from Noyau import N_CR
+
+def entryPoint():
+   """
+       Retourne les informations nécessaires pour le chargeur de plugins
+       Ces informations sont retournées dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'openturns_wrapper',
+        # La factory pour créer une instance du plugin
+          'factory' : PythonParser,
+          }
+
+
+class PythonParser:
+   """
+       Ce convertisseur lit un fichier au format python avec la 
+       methode readfile : convertisseur.readfile(nom_fichier)
+       et retourne le texte au format outformat avec la 
+       methode convertisseur.convert(outformat)
+
+       Ses caractéristiques principales sont exposées dans 2 attributs 
+       de classe :
+          - extensions : qui donne une liste d'extensions de fichier préconisées
+          - formats : qui donne une liste de formats de sortie supportés
+   """
+   # Les extensions de fichier préconisées
+   extensions=('.py',)
+   # Les formats de sortie supportés (eval dict ou exec)
+   # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON
+   # Le format execnoparseur est du python executable (commande exec) non converti
+   formats=('exec','execnoparseur')
+
+   def __init__(self,cr=None):
+      # Si l'objet compte-rendu n'est pas fourni, on utilise le 
+      # compte-rendu standard
+      self.text=''
+      if cr :
+         self.cr=cr
+      else:
+         self.cr=N_CR.CR(debut='CR convertisseur format python',
+                         fin='fin CR format python')
+
+   def readfile(self,filename):
+      self.filename=filename
+      try:
+         self.text=open(filename).read()
+      except:
+         self.cr.fatal("Impossible ouvrir fichier %s" % filename)
+         return
+
+   def convert(self,outformat,appli=None):
+      if outformat == 'exec':
+         try:
+           #txt=parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
+           #print txt
+           #return txt
+            return parseur_python.PARSEUR_PYTHON(self.text).get_texte(appli)
+         except:
+            # Erreur lors de la conversion
+            l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
+                                         sys.exc_info()[2])
+            self.cr.exception("Impossible de convertir le fichier python \
+                               qui doit contenir des erreurs.\n \
+                               On retourne le fichier non converti \n \
+                               Prévenir la maintenance. \n" + string.join(l))
+            # On retourne néanmoins le source initial non converti (au cas où)
+            return self.text
+      elif outformat == 'execnoparseur':
+         return self.text
+      else:
+         raise "Format de sortie : %s, non supporté"
+         return None
+
index 316a34ebe6c080a3eface529d1c0318261c3d8c0..2b9d900c69e112a004dedb1cdce7b84ef7ffb46a 100644 (file)
@@ -30,15 +30,17 @@ class Generateur :
   ListeVariables : chaque variable est decrite par un dictionnaire ; cette liste les regroupe
   DictLois : dictionnaires des lois
   '''
-  def __init__ (self, DictMCVal, ListeVariables, DictLois ) :
+  def __init__ (self, appli, DictMCVal = {}, ListeVariables = [], DictLois = {}, DictVariables = {} ) :
   #---------------------------------------------------------#
     self.ListeVariables = ListeVariables
     self.ListeVariablesIn = []
     self.DictLois = DictLois
+    self.DictVariables = DictVariables
     self.DictMCVal = DictMCVal
     self.DictTypeVar = {}
     self.nbVarIn = 0
     self.creeInfoVar()
+    self.appli = appli
     #
     # On charge eventuellement le Solver par defaut
     # et les valeurs par defaut du Solver (dans l init)
@@ -61,7 +63,7 @@ class Generateur :
        monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.DictLois )
     except :
         from OpenturnsSTD import STDGenerateur
-        monSTDGenerateur = STDGenerateur( self.DictMCVal, self.ListeVariablesIn, self.DictLois )
+        monSTDGenerateur = STDGenerateur( self.appli, self.DictMCVal, self.ListeVariablesIn, self.DictLois )
     return monSTDGenerateur
       
   def getXMLGenerateur(self) :
@@ -71,7 +73,7 @@ class Generateur :
        monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois )
     except :
         from OpenturnsXML import XMLGenerateur
-        monXMLGenerateur = XMLGenerateur( self.DictMCVal, self.ListeVariables, self.DictLois )
+        monXMLGenerateur = XMLGenerateur( self.appli, self.DictMCVal, self.DictVariables )
     return monXMLGenerateur
       
   def creeInfoVar (self) :
index 9fb4b234e64635d8db8a4fd7a6e45d81399bc083..09f6945cb579c23c70707f3f70ce44d932cca344 100644 (file)
@@ -10,7 +10,37 @@ __revision__ = "V1.0"
 
 import os
 
+defaultSTD = """#! /usr/bin/env python
 
+class StudyFileGenerationError:
+  def __init__ (self, st):
+    self.st = st
+  def __str__(self):
+    return "'%s'" % self.st
+
+raise StudyFileGenerationError, "The study file was not generated"
+"""
+
+headerSTD = """#! /usr/bin/env python
+
+# Chargement du module systeme
+import sys
+sys.path.append( '%s' )
+
+# Chargement du module math
+import math
+
+# Chargement du module Open TURNS
+from openturns import *
+from openturns_viewer import ViewImage,StopViewer,WaitForViewer
+
+"""
+
+footerSTD = """
+
+# Terminaison du fichier
+#sys.exit( 0 )
+"""
 
 #=============================================
 #  La classe de creation du fichier STD
@@ -19,401 +49,1135 @@ import os
 class STDGenerateur :
 
   '''
-  Generation du fichier pyhton
+  Generation du fichier python
   '''
-  def __init__ (self, DictMCVal, ListeVariables, DictLois ) :
-  #---------------------------------------------------------#
-
-    self.NomAlgo = "myAlgo"
+  def __init__ (self, appli, DictMCVal, ListeVariables, DictLois ) :
     self.DictMCVal = DictMCVal
     self.ListeVariables = ListeVariables
     self.DictLois = DictLois
-
-    self.ListeOrdreMCReliability = (
-      "MaximumIterationsNumber",
-      "MaximumAbsoluteError",
-      "RelativeAbsoluteError",
-      "MaximumConstraintError",
-      "MaximumResidualError",
-      )
-    self.ListeOrdreMCDirectionalSampling = (
-      "RootStrategy",
-      "SamplingStrategy",
-      )
-    self.ListeOrdreMCParametresAlgo = (
-      "BlockSize",
-      "MaximumCoefficientOfVariation",
-      ) 
-    self.ListeOrdreImportanceSampling = (
-      "ImportanceSampling_BlockSize",
-      "ImportanceSampling_MaximumCoefficientOfVariation",
-      "ImportanceSampling_MaximumOuterSampling",
-      ) 
-
-    # Ce dictionnaire contient la liste de tous les parametres possibles pour chaque loi
-    # Les parametres qui n'apparaissent pas ne pourront pas etre substitues dans le fichier
-    # produit (etude python), et donc n'apparaitront pas.
-    self.listeParamLoi = {
-      "Beta"            : ["Mu", "Sigma", "T", "R", "A", "B" ],
-      "Exponential"     : ["Lambda", "Gamma" ],
-      "Gamma"           : ["K", "Mu", "Sigma", "Lambda", "Gamma" ],
-      #"Geometric"       : ["P", ],
-      "Gumbel"          : ["Alpha","Beta","Mu","Sigma" ],
-      #"Histogram"       : ["Sup", "Values" ],
-      "LogNormal"       : ["MuLog", "SigmaLog", "Mu", "Sigma", "SigmaOverMu", "Gamma", ],
-      "Logistic"        : [ "Alpha", "Beta" ],
-      #"MultiNomial"     : [ "N", "Values" ],
-      "Normal"          : ["Mu", "Sigma" ],
-      "Poisson"         : [ "Lambda", ],
-      "Student"         : [ "Mu", "Nu" ],
-      "Triangular"      : [ "A", "M", "B" ],
-      "TruncatedNormal" : [ "MuN", "SigmaN", "A", "B" ],
-      "Uniform"         : [ "A", "B" ],
-      #"UserDefined"     : [ "Values", ],
-      "Weibull"         : [ "Alpha", "Beta", "Mu", "Sigma", "Gamma" ],
+    print "DictMCVal=", DictMCVal
+    print "ListeVariables=", ListeVariables
+    print "DictLois=", DictLois
+    self.texteSTD = defaultSTD
+    self.OpenTURNS_path = appli.CONFIGURATION.OpenTURNS_path
+
+    # Ce dictionnaire fait la correspondance entre le mot lu dans le dictionnaire des mots-clefs et la methode a appeler
+    self.traitement = {
+      "Min/Max" :
+      ( "MinMax",
+        { "Experiment Plane" : "ExperimentPlane",
+          "Random Sampling" : "MinMaxRandomSampling",
+          },
+        ),
+      "Central Uncertainty" :
+      ( "CentralUncertainty",
+        { "Taylor Variance Decomposition" : "TaylorVarianceDecomposition",
+          "Random Sampling" : "CentralUncertaintyRandomSampling",
+         },
+        ),
+      "Threshold Exceedence" :
+      ( "ThresholdExceedence",
+        { "Simulation" : "Simulation",
+          "Analytical" : "Analytical",
+          "MonteCarlo" : "MonteCarlo",
+          "LHS" : "LHS",
+          "ImportanceSampling" : "ImportanceSampling",
+          "FirstOrder" : "FORM",
+          "SecondOrder" : "SORM",
+          "Cobyla" : "Cobyla",
+          "AbdoRackwitz" : "AbdoRackwitz",
+          },
+        ),
       }
 
-    # Ce dictionnaire contient, pour chaque loi qui possede plusieurs parametrages possibles,
-    # la correspondance entre le parametrage et son "numero" pour Open TURNS.
-    self.listeParamLoiSettings = {
-      "Beta"      : { "RT"         : "0", "MuSigma" : "1" }, \
-      "Gamma"     : { "KLambda"    : "0", "MuSigma" : "1" }, \
-      "Gumbel"    : { "AlphaBeta"  : "0", "MuSigma" : "1" }, \
-      "LogNormal" : { "MuSigmaLog" : "0", "MuSigma" : "1", "MuSigmaOverMu" : "2" }, \
-      "Weibull"   : { "AlphaBeta"  : "0", "MuSigma" : "1" }, \
+    # Ce dictionnaire liste le nom des variables utilisees dans le script
+    # La clef est le nom attendu par les methodes, la valeur est le nom produit dans le fichier de sortie
+    # Le fait de passer par un dictionnaire permet de controler que les variables existent et sont correctement nommees
+    # meme si clef == valeur
+    self.variable = {
+      "n" : "n",
+      "p" : "p",
+      "model" : "model",
+      "scaledVector" : "scaledVector",
+      "translationVector" : "translationVector",
+      "levels" : "levels",
+      "myCenteredReductedGrid" : "myCenteredReductedGrid",
+      "myExperimentPlane" : "myExperimentPlane",
+      "inputSample" : "inputSample",
+      "outputSample" : "outputSample",
+      "minValue" : "minValue",
+      "maxValue" : "maxValue",
+      "flags" : "flags",
+      "inSize" : "inSize",
+      "distribution" : "distribution",
+      "marginal" : "marginal",
+      "collection" : "collection",
+      "copula" : "copula",
+      "inputRandomVector" : "inputRandomVector",
+      "outputRandomVector" : "outputRandomVector",
+      "myQuadraticCumul" : "myQuadraticCumul",
+      "meanFirstOrder" : "meanFirstOrder",
+      "meanSecondOrder" : "meanSecondOrder",
+      "standardDeviationFirstOrder" : "standardDeviationFirstOrder",
+      "importanceFactors" : "importanceFactors",
+      "importanceFactorsGraph" : "importanceFactorsGraph",
+      "importanceFactorsDrawing" : "importanceFactorsDrawing",
+      "empiricalMean" : "empiricalMean",
+      "empiricalStandardDeviation" : "empiricalStandardDeviation",
+      "empiricalQuantile" : "empiricalQuantile",
+      "alpha" : "alpha",
+      "beta" : "beta",
+      "PCCcoefficient" : "PCCcoefficient",
+      "PRCCcoefficient" : "PRCCcoefficient",
+      "SRCcoefficient" : "SRCcoefficient",
+      "SRRCcoefficient" : "SRRCcoefficient",
+      "kernel" : "kernel",
+      "kernelSmoothedDist" : "kernelSmoothedDist",
+      "kernelSmoothedPDF" : "kernelSmoothedPDF",
+      "myEvent" : "myEvent",
+      "myAlgo" : "myAlgo",
+      "myResult" : "myResult",
+      "probability" : "probability",
+      "standardDeviation" : "standardDeviation",
+      "level" : "level",
+      "length" : "length",
+      "coefficientOfVariation" : "coefficientOfVariation",
+      "convergenceGraph" : "convergenceGraph",
+      "iterations" : "iterations",
+      "myOptimizer" : "myOptimizer",
+      "specificParameters" : "specificParameters",
+      "startingPoint" : "startingPoint",
+      "hasoferReliabilityIndex" : "hasoferReliabilityIndex",
+      "standardSpaceDesignPoint" : "standardSpaceDesignPoint",
+      "physicalSpaceDesignPoint" : "physicalSpaceDesignPoint",
+      "eventProbabilitySensitivity" : "eventProbabilitySensitivity",
+      "hasoferReliabilityIndexSensitivity" : "hasoferReliabilityIndexSensitivity",
+      "eventProbabilitySensitivityGraph" : "eventProbabilitySensitivityGraph",
+      "hasoferReliabilityIndexSensitivityGraph" : "hasoferReliabilityIndexSensitivityGraph",
+      "modelEvaluationCalls" : "modelEvaluationCalls",
+      "modelGradientCalls" : "modelGradientCalls",
+      "modelHessianCalls" : "modelHessianCalls",
+      "tvedtApproximation" : "tvedtApproximation",
+      "hohenBichlerApproximation" : "hohenBichlerApproximation",
+      "breitungApproximation" : "breitungApproximation",
       }
 
-                
-
+    # Ce dictionnaire fait la correspondance entre le mot-clef du catalogue et le flag de la bibliotheque
+    self.logFlags = {
+      "DebugMessages"   : "Log.DBG",
+      "WrapperMessages" : "Log.WRAPPER",
+      "UserMessages"    : "Log.USER",
+      "InfoMessages"    : "Log.INFO",
+      "WarningMessages" : "Log.WARN",
+      "ErrorMessages"   : "Log.ERROR",
+      }
+    
   def CreeSTD (self) :
-  #------------------
     '''
     Pilotage de la creation du fichier python
     '''
-    self.texte  = self.CreeEntete() 
-    self.texte += self.CreeRandomGenerator() 
-    self.texte += self.CreeFunction() 
-    self.texte += self.CreeLois()
-    self.texte += self.CreeCopula() 
-    self.texte += self.CreeDistribution() 
-    self.texte += self.CreeRandomVector()
-    self.texte += self.CreeAnalyse()
-    self.texte += self.CreeResu()
-    self.texte += self.CreeTexteFin()
-    return self.texte
-
-#                      ______________________________________
-#
-#  Methodes liees a la creation de la partie Analayse
-#  Si le mot clef Analyse existe la methode portant le meme nom va etre appele
-#  Exple : si self.DictMCVal["Analysis"]=="Reliability" on appelle la methode Reliability(self)
-#
-  def CreeAnalyse (self) :
-  #----------------------
-  # Appelee  par CreeSTD
-    texte=""
-    if self.DictMCVal.has_key("Analysis"):
-       texte += apply( STDGenerateur.__dict__[self.DictMCVal["Analysis"]], (self,) )
-    return texte
-
-  def  Reliability (self) :
-  #------------------------
-  # Appelee eventuellement par CreeAnalyse
-    texte  = self.CreeEvent()
-    texte += "\n# La methode\n\n"
-    if not self.DictMCVal.has_key("Method"):
-       print 'Attention Mot Clef "Method" non renseigne'
-       return texte
-
-    texte += "   myMethod = "+ self.DictMCVal["Method"] + "()\n"
-    texte += "   myMethod.setSpecificParameters( " + self.DictMCVal["Method"] + "SpecificParameters() )\n"
-
-    for MC in self.ListeOrdreMCReliability :
-      if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None :
-          texte += "   myMethod.set"+ MC +"( " + str(self.DictMCVal[MC]) + " )\n\n "
-
-    texte  += "\n# L'algorithme\n\n"
-    if not self.DictMCVal.has_key("Algorithm"):
-       print 'Attention Mot Clef "Algorithm" non renseigne'
-       return texte
-    texte += "   " + self.NomAlgo + " = " + str (self.DictMCVal["Algorithm"]) 
-    texte += "( NearestPointAlgorithm(myMethod), myEvent, myPhysicalStartingPoint )\n"
-    texte += "   " + self.NomAlgo + ".run()\n "
+    TypeAnalyse = None
+    if ( self.DictMCVal.has_key( 'Type' ) ):
+      TypeAnalyse =  self.DictMCVal[ 'Type' ]
+
+    Traitement = None
+    subDict = {}
+    if ( self.traitement.has_key( TypeAnalyse ) ):
+      (Traitement, subDict) =  self.traitement[ TypeAnalyse ]
+
+    if ( Traitement is not None ):
+      self.texteSTD = apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
+    
+    return self.texteSTD
+
+  def Header (self) :
+    '''
+    Imprime l entete commun a tous les fichiers
+    '''
+    txt  = headerSTD % self.OpenTURNS_path
+    txt += "# Definit le niveau d'affichage de la log\n"
+    txt += "%s = Log.NONE\n" % self.variable["flags"]
+    for flag in self.logFlags.keys():
+      if ( self.DictMCVal.has_key( flag ) ):
+        val =  self.DictMCVal[ flag ]
+        op = "-"
+        if val == 'yes' :
+          op = "+"
+        txt += "%s = %s %s %s\n" % (self.variable["flags"], self.variable["flags"], op, self.logFlags[ flag ])
+    txt += "Log.Show( %s )\n" % self.variable["flags"]
+    txt += "\n"
+    return txt
+
+  def Footer (self) :
+    '''
+    Imprime le pied de page commun a tous les fichiers
+    '''
+    return footerSTD
+
+  def MinMax (self, subDict):
+    '''
+    Produit le fichier study correspondant a une analyse Min/Max
+    '''
+    txt  = self.Header()
+    txt += "# Etude 'Min/Max'\n"
+
+    txt += self.Model()
+    
+    Methode = None
+    if ( self.DictMCVal.has_key( 'Method' ) ):
+      Methode =  self.DictMCVal[ 'Method' ]
+
+    Traitement = None
+    if ( subDict.has_key( Methode ) ):
+      Traitement =  subDict[ Methode ]
+
+    if ( Traitement is not None ):
+      txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+    txt += self.MinMaxComputation()
+    txt += self.MinMaxResult()
+    
+    txt += self.Footer()
+    return txt
+
+  def Model (self):
+    '''
+    Importe le modele physique
+    '''
+    fonction = None
+    if ( self.DictMCVal.has_key( 'FileName' ) ):
+      name =  self.DictMCVal[ 'FileName' ]
+      fonction = name[name.rfind('/')+1:name.rfind('.xml')]
+      
+    txt  = "# Charge le modele physique\n"
+    txt += "%s = NumericalMathFunction( '%s' )\n" % (self.variable["model"], fonction)
+    txt += "%s = %s.getInputNumericalPointDimension()\n" % (self.variable["n"], self.variable["model"])
+    txt += "\n"
+    return txt
+
+  def ExperimentPlane (self):
+    '''
+    Etude par plan d experience
+    '''
+    txt  = "# Etude par plan d'experience\n"
+    txt += self.Levels()
+    txt += self.CenteredReductedGrid()
+    txt += self.ScaledVector()
+    txt += self.TranslationVector()
+    txt += "%s = %s\n" % (self.variable["inputSample"], self.variable["myExperimentPlane"])
+    txt += "\n"
+    return txt
+
+  def MinMaxRandomSampling (self):
+    '''
+    Etude par echantillonage aleatoire
+    '''
+    size = 0
+    if ( self.DictMCVal.has_key( 'PointsNumber' ) ):
+      size =  self.DictMCVal[ 'PointsNumber' ]
+
+    txt  = "# Etude par echantillonage aleatoire\n"
+    txt += self.InputDistribution()
+    txt += self.InputRandomVector()
+    txt += "%s = %d\n" % (self.variable["inSize"], size)
+    txt += "%s = %s.getNumericalSample( %s )\n" % (self.variable["inputSample"], self.variable["inputRandomVector"], self.variable["inSize"])
+    txt += "\n"
+    return txt
+
+  def InputDistribution (self):
+    '''
+    Cree la loi jointe des variables d entree
+    '''
+    txt  = "# Definit la loi jointe des variables d'entree\n"
+    txt += "%s = DistributionCollection( %d )\n" % (self.variable["collection"], len( self.ListeVariables ))
+    txt += "\n"
+
+    dictVariables = {}
+    for variable in self.ListeVariables:
+      nomVar = variable['ModelVariable'].get_name()
+      dictVariables[ nomVar ] = variable['Distribution']
+
+    i = 0
+    sortedVarNames = dictVariables.keys()
+    sortedVarNames.sort()
+    for variable in sortedVarNames:
+      conceptloi = dictVariables[ variable ]
+      loi = self.DictLois[ conceptloi ]
+      if loi.has_key( 'Kind' ):
+        marginale = "%s_%d" % (self.variable["marginal"], i)
+        txt += "# Definit la loi marginale de la composante %d\n" % i
+        txt += "%s = %s\n" % (marginale, apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi, i, self.variable["collection"]) ))
+        txt += "%s[ %d ] = Distribution( %s )\n" % (self.variable["collection"], i, marginale)
+        txt += "\n"
+        i += 1
+
+    txt += self.Copula( len( self.ListeVariables ) )
+
+    txt += "# Definit la loi jointe\n"
+    txt += "%s = ComposedDistribution( %s, Copula( %s ) )\n" % (self.variable["distribution"], self.variable["collection"], self.variable["copula"])
+    txt += "\n"
+    return txt
+
+  def Copula (self, dimension):
+    '''
+    Cree la copule de la loi jointe
+    '''
+    txt  = "# Definit la copule de la loi jointe\n"
+    txt += "%s = IndependentCopula( %d )\n" % (self.variable["copula"], dimension)
+    txt += "\n"
+    return txt
+
+  def InputRandomVector (self):
+    '''
+    Cree le vector aleatoire d entree
+    '''
+    txt  = "# Definit le vecteur aleatoire d'entree\n"
+    txt += "%s = RandomVector( %s )\n" % (self.variable["inputRandomVector"], self.variable["distribution"])
+    txt += "\n"
+    return txt
+
+  def OutputRandomVector (self):
+    '''
+    Cree le vector aleatoire de sortie
+    '''
+    txt  = "# Definit le vecteur aleatoire de sortie\n"
+    txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"])
+    txt += "\n"
+    return txt
+
+  def ScaledVector (self):
+    '''
+    Definit les coefficients multiplicateurs par composante du vecteur
+    '''
+    dimension = 0
+    if ( self.DictMCVal.has_key( 'UnitsPerDimension' ) ):
+      unitsPerDimension =  self.DictMCVal[ 'UnitsPerDimension' ]
+      dimension = len( unitsPerDimension )
+    
+    txt  = "# Definit les facteurs d'echelle dans chaque direction\n"
+    txt += "%s = NumericalPoint( %s )\n" % (self.variable["scaledVector"], self.variable["n"])
+    for i in range(dimension):
+      txt += "%s[%d] = %g\n" % (self.variable["scaledVector"], i, unitsPerDimension[i])
+    txt += "%s.scale( %s )\n" % (self.variable["myExperimentPlane"], self.variable["scaledVector"])
+    txt += "\n"
+    return txt
+
+  def TranslationVector (self):
+    '''
+    Definit le vecteur de translation
+    '''
+    dimension = 0
+    if ( self.DictMCVal.has_key( 'Center' ) ):
+      center =  self.DictMCVal[ 'Center' ]
+      dimension = len( center )
+    
+    txt  = "# Definit le vecteur de translation\n"
+    txt += "%s = NumericalPoint( %s )\n" % (self.variable["translationVector"], self.variable["n"])
+    for i in range(dimension):
+      txt += "%s[%d] = %g\n" % (self.variable["translationVector"], i, center[i])
+    txt += "%s.translate( %s )\n" % (self.variable["myExperimentPlane"], self.variable["translationVector"])
+    txt += "\n"
+    return txt
+
+  def Levels (self):
+    '''
+    Definit les niveaux du plan d experience
+    '''
+    dimension = 0
+    if ( self.DictMCVal.has_key( 'Levels' ) ):
+      levels =  self.DictMCVal[ 'Levels' ]
+      dimension = len( levels )
+    
+    txt  = "# Definit les niveaux de la structure de grille\n"
+    txt += "%s = NumericalPoint( %d )\n" % (self.variable["levels"], dimension)
+    for i in range(dimension):
+      txt += "%s[%d] = %g\n" % (self.variable["levels"], i, levels[i])
+    txt += "\n"
+    return txt
+
+  def CenteredReductedGrid (self):
+    '''
+    Definit la grille reduite du plan d experience
+    '''
+    plane = None
+    if ( self.DictMCVal.has_key( 'ExperimentPlane' ) ):
+      plane =  self.DictMCVal[ 'ExperimentPlane' ]
+
+    txt  = "# Cree le plan d'experience centre reduit\n"
+    txt += "%s = %s(%s, %s)\n" % (self.variable["myCenteredReductedGrid"], plane, self.variable["n"], self.variable["levels"])
+    txt += "%s = %s.generate()\n" % (self.variable["myExperimentPlane"], self.variable["myCenteredReductedGrid"])
+    txt += "\n"
+    return txt
+
+  def MinMaxComputation (self):
+    '''
+    Realise le calcul deterministe
+    '''
+    txt  = "# Calcul\n"
+    txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"])
+    txt += "\n"
+    return txt
+
+  def MinMaxResult (self):
+    '''
+    Produit les resultats de l etude
+    '''
+    txt  = "# Resultats\n"
+    txt += "%s = %s.getMin()\n" % (self.variable["minValue"], self.variable["outputSample"])
+    txt += "print '%s = ', %s\n" % (self.variable["minValue"], self.variable["minValue"])
+    txt += "\n"
+    txt += "%s = %s.getMax()\n" % (self.variable["maxValue"], self.variable["outputSample"])
+    txt += "print '%s = ', %s\n" % (self.variable["maxValue"], self.variable["maxValue"])
+    txt += "\n"
+    return txt
+
+  def CentralUncertainty (self, subDict):
+    '''
+    Produit le fichier study correspondant a une analyse d incertitude en valeur centrale
+    '''
+    txt  = self.Header()
+    txt += "# Etude 'Central Uncertainty'\n"
+
+    txt += self.Model()
+    txt += self.InputDistribution()
+    txt += self.InputRandomVector()
+    txt += self.OutputRandomVector()
    
-    if self.DictMCVal.has_key("ImportanceSampling") and self.DictMCVal["ImportanceSampling"]=="yes" :
-       texte += self.ImportanceSampling() 
-    return texte
-
-  def  Simulation (self) :
-  #------------------------
-  # Appelee eventuellement par CreeAnalyse
-    texte  = self.CreeEvent()
-    texte += "\n# L'algorithme\n\n"
-    if not self.DictMCVal.has_key("Algorithm"):
-       print 'Attention Mot Clef "Algorithm" non renseigne'
-       return texte
-    texte += "   " + self.NomAlgo + " = " + str (self.DictMCVal["Algorithm"]) 
-    texte += "( myEvent )\n"
-    if self.DictMCVal["Algorithm"] == "DirectionalSampling" : 
-       texte += self.DirectionalSampling()
-    texte += self.ParametresAlgo()
-    texte += "   " + self.NomAlgo + ".run() "
-    return texte
-
-
-  def DirectionalSampling (self) :
-  #-------------------------------
-  # Appelee eventuellement par Simulation
-    texte = ""
-    for MC in self.ListeOrdreMCDirectionalSampling :
-       if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None :
-          texte += apply(STDGenerateur.__dict__[self.DictMCVal[MC]], (self,))
-    return texte
-
-  def RootStrategy(self):
-  #----------------------
-  # Appelee eventuellement par DirectionalSampling
-    texte = "   myRoot = " + self.DictMCVal["RootStrategy"] + "()\n"
-    if self.DictMCVal.has_key("Solver") and (self.DictMCVal["Solver"] != None) :
-       texte += "   mySolver = " + self.DictMCVal["Solver"] + "() \n"
-       texte += "   myRoot.setSolver( Solver( mySolver ) ) \n"
-    texte += "   " + self.NomAlgo + ".setRootStrategy( RootStrategy( myRoot )) \n"
-    return texte
-
-  def SamplingStrategy(self):
-  #--------------------------
-  # Appelee eventuellement par DirectionalSampling
-    texte += "   mySampling = " + self.DictMCVal["SamplingStrategy"] + "()\n"
-    texte += "   mySampling.setSamplingStrategy( SamplingStrategy( mySampling ) )\n"
-    return texte
-
-
-  def QuadraticCumul (self) :
-  #--------------------------
-  # Appelee eventuellement par CreeAnalyse
-    texte  = "\n# Cumul quadratique\n\n"
-    texte += "   myQuadraticCumul  = QuadraticCumul( myRandomVector_out)\n\n"
-    texte += "   firstOrderMean    = myQuadraticCumul.getMeanFirstOrder()\n"
-    texte += "   secondOrderMean   = myQuadraticCumul.getMeanSecondOrder()\n"
-    texte += "   covariance        = myQuadraticCumul.getCovariance()\n"
-    texte += "   importanceFactors = myQuadraticCumul.getImportanceFactors()\n"
-    return texte
-
-  def CreeEvent (self) :
-  #------------------
-  # Appelee eventuellement par Simulation et Reliability
-    texte  = "\n# L'evenement\n\n"
-    if not self.DictMCVal.has_key("Threshold") or not self.DictMCVal.has_key("ComparisonOperator"):
-       print 'Attention Mot Clef "Threshold" ou "ComparisonOperator"  non renseigne'
-       return texte
-    texte += "   seuil = " +str (self.DictMCVal["Threshold"]) + "\n"
-    texte += "   myEvent = Event(myRandomVector_out," 
-    texte += "ComparisonOperator(" + str (self.DictMCVal["ComparisonOperator"]) + "()), seuil) \n"
-    return texte
-
-  def ParametresAlgo( self ):
-  #---------------------------
-  # Appelee par Simulation
-
-    texte += "   nbMaxOutSampling = "
-
-    if self.DictMCVal["MaximumOuterSamplingType"] == "UserDefined" :
-       texte += str(self.DictMCVal["MaximumOuterSampling"])
-
-    elif self.DictMCVal["MaximumOuterSamplingType"] == "Wilks" :
-       texte += "Wilks.ComputeSampleSize( " + str(self.DictMCVal["Wilks_Alpha"]) + ", " \
-                 + str(self.DictMCVal["Wilks_Beta"]) + ", " + str(self.DictMCVal["Wilks_I"]) + " )"
-       texte += '\n   print "MaximumOuterSampling = ", nbMaxOutSampling, "\n" \n'
-
-    texte += "   " + NomAlgo + ".setMaximumOuterSampling(nbMaxOutSampling)"
-    for MC in self.ListeOrdreMCParametresAlgo :
-        if self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None :
-           texte += "   myMethod.set"+ MC +"(" + str(self.DictMCVal[MC]) + ")\n\n "
-
-#                      _____________________________________
-
-  def CreeRandomGenerator (self) :
-  #-------------------------------
-  # Appelee par CreeSTD
-    texte = ""
-    if self.DictMCVal.has_key("RandomGeneratorSeed") :
-      texte += "# We set the RandomGenerator seed in order to replay the study\n"
-      texte += "   RandomGenerator().SetSeed(%d)\n" % self.DictMCVal["RandomGeneratorSeed"]
-    return texte
-
-  def CreeFunction (self) :
-  #-------------------------
-  # Appelee par CreeSTD
-    '''
-    La fonction :
-    Remarque : le nom 'solver' est en dur ici. Il doit imperativement correspondre
-                 au nom du fichier xml : 'solver.xml'
-    '''
-    texte  = "\n# La fonction\n\n"
-    texte += '   myFunction = NumericalMathFunction(\"XXXXXX\")\n'
-    texte += '   dim = myFunction.getInputNumericalPointDimension()\n'
-    return texte
-
-
-  def CreeCopula (self) :
-  #------------------
-  # Appelee par CreeSTD
-    texte  = "\n# La copule\n\n"
-    texte += "   myCopula = IndependentCopula(dim)\n"
-    return texte
-
-
-  def CreeDistribution (self) :
-  #----------------------------
-  # Appelee par CreeSTD
-    texte  = "\n# La distribution\n\n"
-    texte +=  "   myDistribution = ComposedDistribution(myCollection, Copula(myCopula))\n"
-    return texte
+    Methode = None
+    if ( self.DictMCVal.has_key( 'Method' ) ):
+      Methode =  self.DictMCVal[ 'Method' ]
+
+    Traitement = None
+    if ( subDict.has_key( Methode ) ):
+      Traitement =  subDict[ Methode ]
+
+    if ( Traitement is not None ):
+      txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+    txt += self.Footer()
+    return txt
+
+
+  def TaylorVarianceDecomposition (self):
+    '''
+    Etude par decomposition de Taylor
+    '''
+    txt  = "# Cumul quadratique (decomposition de Taylor)\n"
+    txt += "%s = QuadraticCumul( %s )\n" % (self.variable["myQuadraticCumul"], self.variable["outputRandomVector"])
+    txt += "\n"
+    txt += "# Resultats\n"
+    
+    if ( self.DictMCVal.has_key( 'MeanFirstOrder' ) ):
+      if ( self.DictMCVal[ 'MeanFirstOrder' ] == "yes" ):
+        txt += "%s = %s.getMeanFirstOrder()\n" % (self.variable["meanFirstOrder"], self.variable["myQuadraticCumul"])
+        txt += "print '%s = ', %s\n" % (self.variable["meanFirstOrder"], self.variable["meanFirstOrder"])
+        txt += "\n"
+       
+    if ( self.DictMCVal.has_key( 'MeanSecondOrder' ) ):
+      if ( self.DictMCVal[ 'MeanSecondOrder' ] == "yes" ):
+        txt += "%s = %s.getMeanSecondOrder()\n" % (self.variable["meanSecondOrder"], self.variable["myQuadraticCumul"])
+        txt += "print '%s = ', %s\n" % (self.variable["meanSecondOrder"], self.variable["meanSecondOrder"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'StandardDeviationFirstOrder' ) ):
+      if ( self.DictMCVal[ 'StandardDeviationFirstOrder' ] == "yes" ):
+        txt += "%s = %s.getCovariance()\n" % (self.variable["standardDeviationFirstOrder"], self.variable["myQuadraticCumul"])
+        txt += "dim = %s.getDimension()\n" % self.variable["standardDeviationFirstOrder"]
+        txt += "for i in range( dim ):\n"
+        txt += "  %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"])
+        txt += "print '%s = ', %s\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'NumericalResults' ) ):
+      if ( self.DictMCVal[ 'NumericalResults' ] == "yes" ):
+        txt += "if ( %s.getDimension() == 1):\n" % self.variable["outputRandomVector"]
+        txt += "  %s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myQuadraticCumul"])
+        txt += "  print '%s = ', %s\n" % (self.variable["importanceFactors"], self.variable["importanceFactors"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'GraphicalResults' ) ):
+      if ( self.DictMCVal[ 'GraphicalResults' ] == "yes" ):
+        txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myQuadraticCumul"])
+        txt += "Show( %s )\n"  % self.variable["importanceFactorsGraph"]
+        txt += "%s.draw( '%s' )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"])
+        txt += "ViewImage( %s.getBitmap() )\n"  % self.variable["importanceFactorsGraph"]
+        txt += "print 'bitmap =', %s.getBitmap()\n"  % self.variable["importanceFactorsGraph"]
+        txt += "print 'postscript =', %s.getPostscript()\n"  % self.variable["importanceFactorsGraph"]
+        txt += "\n"
+        
+    txt += "\n"
+    return txt
+
+  def CentralUncertaintyRandomSampling (self):
+    '''
+    Etude par echantillonage aleatoire
+    '''
+    size = 0
+    if ( self.DictMCVal.has_key( 'PointsNumber' ) ):
+      size =  self.DictMCVal[ 'PointsNumber' ]
+
+    txt  = "# Echantillonnage aleatoire de la variable de sortie\n"
+    txt += "%s = %d\n" % (self.variable["inSize"], size)
+    txt += "%s = %s.getNumericalSample( %s )\n" % (self.variable["outputSample"], self.variable["outputRandomVector"], self.variable["inSize"])
+    txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'EmpiricalMean' ) ):
+      if ( self.DictMCVal[ 'EmpiricalMean' ] == "yes" ):
+        txt += "%s = %s.computeMean()\n" % (self.variable["empiricalMean"], self.variable["outputSample"])
+        txt += "print '%s =', %s\n" % (self.variable["empiricalMean"], self.variable["empiricalMean"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'EmpiricalStandardDeviation' ) ):
+      if ( self.DictMCVal[ 'EmpiricalStandardDeviation' ] == "yes" ):
+        txt += "%s = %s.computeCovariance()\n" % (self.variable["empiricalStandardDeviation"], self.variable["outputSample"])
+        txt += "dim = %s.getDimension()\n" % self.variable["empiricalStandardDeviation"]
+        txt += "for i in range( dim ):\n"
+        txt += "  %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"])
+        txt += "print '%s = ', %s\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'EmpiricalQuantile_Order' ) ):
+      ordre = self.DictMCVal[ 'EmpiricalQuantile_Order' ]
+      txt += "%s = %s.computeQuantile( %s )\n" % (self.variable["empiricalQuantile"], self.variable["outputSample"], ordre)
+      txt += "print '%s =', %s\n" % (self.variable["empiricalQuantile"], self.variable["empiricalQuantile"])
+      txt += "\n"
+   
+    if ( self.DictMCVal.has_key( 'AnalysedCorrelations' ) ):
+      if ( self.DictMCVal[ 'AnalysedCorrelations' ] == "yes" ):
+        txt += "# Ou est le %s ?\n" % self.variable["inputSample"]
+        txt += "#if ( ( %s.getDimension() == 1 ) and ( %s.getDimension() == 1 ) ):\n" % (self.variable["inputSample"], self.variable["outputSample"])
+        txt += "#  %s = CorrelationAnalysis.PCC( %s, %s )\n" % (self.variable["PCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+        txt += "#  print '%s = ', %s\n" % (self.variable["PCCcoefficient"], self.variable["PCCcoefficient"])
+        txt += "#  %s = CorrelationAnalysis.PRCC( %s, %s )\n" % (self.variable["PRCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+        txt += "#  print '%s = ', %s\n" % (self.variable["PRCCcoefficient"], self.variable["PRCCcoefficient"])
+        txt += "#  %s = CorrelationAnalysis.SRC( %s, %s )\n" % (self.variable["SRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+        txt += "#  print '%s = ', %s\n" % (self.variable["SRCcoefficient"], self.variable["SRCcoefficient"])
+        txt += "#  %s = CorrelationAnalysis.SRRC( %s, %s )\n" % (self.variable["SRRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+        txt += "#  print '%s = ', %s\n" % (self.variable["SRRCcoefficient"], self.variable["SRRCcoefficient"])
+        txt += "\n"
+   
+    if ( self.DictMCVal.has_key( 'KernelSmoothing' ) ):
+      if ( self.DictMCVal[ 'KernelSmoothing' ] == "yes" ):
+        txt += "# Kernel Smoohing\n"
+        txt += "%s = KernelSmoothing()\n" % self.variable["kernel"]
+        txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"]
+        txt += "  %s = %s.buildImplementation( %s, 'TRUE')\n" % (self.variable["kernelSmoothedDist"], self.variable["kernel"], self.variable["outputSample"])
+        txt += "  %s = %s.drawPDF()\n" % (self.variable["kernelSmoothedPDF"], self.variable["kernelSmoothedDist"])
+        txt += "  Show( %s )\n" % self.variable["kernelSmoothedPDF"]
+        txt += "\n"
+   
+    return txt
+
+  def ThresholdExceedence (self, subDict):
+    '''
+    Produit le fichier study correspondant a une analyse de depassement de seuil
+    '''
+    txt  = self.Header()
+    txt += "# Etude 'Threshold Exceedence'\n"
+
+    txt += self.RandomGenerator()
+    txt += self.Model()
+    txt += self.InputDistribution()
+    txt += self.InputRandomVector()
+    txt += self.OutputRandomVector()
+    txt += self.Event()
+   
+    Methode = None
+    if ( self.DictMCVal.has_key( 'Method' ) ):
+      Methode =  self.DictMCVal[ 'Method' ]
+
+    Traitement = None
+    if ( subDict.has_key( Methode ) ):
+      Traitement =  subDict[ Methode ]
+
+    if ( Traitement is not None ):
+      txt += apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
 
+    txt += self.Footer()
+    return txt
 
-  def CreeRandomVector (self) :
-  #----------------------------
-  # Appelee par CreeSTD
-    texte  = "\n# Le Random Vector\n\n"
-    texte += "   myRandomVector_in  = RandomVector(Distribution(myDistribution))\n"
-    texte += "   myRandomVector_out = RandomVector(myFunction, myRandomVector_in)\n"
-    return texte
+  def Simulation (self, subDict):
+    '''
+    Methodes de simulation
+    '''
+    Algorithme = None
+    if ( self.DictMCVal.has_key( 'Algorithm' ) ):
+      Algorithme =  self.DictMCVal[ 'Algorithm' ]
+
+    Traitement = None
+    if ( subDict.has_key( Algorithme ) ):
+      Traitement =  subDict[ Algorithme ]
+
+    if ( Traitement is not None ):
+      txt = apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+    maxOuterSampling = None
+    if ( self.DictMCVal.has_key( 'MaximumOuterSampling' ) ):
+      maxOuterSampling = self.DictMCVal[ 'MaximumOuterSampling' ]
+      txt += "%s.setMaximumOuterSampling( %s )\n" % (self.variable["myAlgo"], maxOuterSampling)
+
+    blockSize = None
+    if ( self.DictMCVal.has_key( 'BlockSize' ) ):
+      maxOuterSampling = self.DictMCVal[ 'BlockSize' ]
+      txt += "%s.setBlockSize( %s )\n" % (self.variable["myAlgo"], blockSize)
+
+    maxCoefficientOfVariation = None
+    if ( self.DictMCVal.has_key( 'MaximumCoefficientOfVariation' ) ):
+      maxCoefficientOfVariation = self.DictMCVal[ 'MaximumCoefficientOfVariation' ]
+      txt += "%s.setMaximumCoefficientOfVariation( %s )\n" % (self.variable["myAlgo"], maxCoefficientOfVariation)
+
+    txt += "%s.run()\n"  % self.variable["myAlgo"]
+    txt += "\n"
+    txt += "# Resultats de la simulation\n"
+    txt += "%s = %s.getResult()\n"  % (self.variable["myResult"], self.variable["myAlgo"])
+    txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'Probability' ) ):
+      if ( self.DictMCVal[ 'Probability' ] == "yes" ):
+        txt += "%s = %s.getProbabilityEstimate()\n" % (self.variable["probability"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'StandardDeviation' ) ):
+      if ( self.DictMCVal[ 'StandardDeviation' ] == "yes" ):
+        txt += "%s = math.sqrt( %s.getProbabilityEstimate() )\n" % (self.variable["standardDeviation"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["standardDeviation"], self.variable["standardDeviation"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'ConfidenceInterval' ) and self.DictMCVal.has_key( 'Probability' ) ):
+      if ( ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) and ( self.DictMCVal[ 'Probability' ] == "yes" ) ):
+        level = self.DictMCVal[ 'Level' ]
+        txt += "%s = %s.getConfidenceLength( %s )\n" % (self.variable["length"], self.variable["myResult"], level)
+        txt += "print 'confidence interval at %s = [', %s-0.5*%s, ',', %s+0.5*%s, ']'\n" % (level, self.variable["probability"], self.variable["length"], self.variable["probability"], self.variable["length"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'VariationCoefficient' ) ):
+      if ( self.DictMCVal[ 'VariationCoefficient' ] == "yes" ):
+        txt += "%s = %s.getCoefficientOfVariation()\n" % (self.variable["coefficientOfVariation"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["coefficientOfVariation"], self.variable["coefficientOfVariation"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'IterationNumber' ) ):
+      if ( self.DictMCVal[ 'IterationNumber' ] == "yes" ):
+        txt += "%s = %s.getOuterSampling()\n" % (self.variable["iterations"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["iterations"], self.variable["iterations"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'ConvergenceGraph' ) ):
+      if ( self.DictMCVal[ 'ConvergenceGraph' ] == "yes" ):
+        txt += "%s = %s.drawProbabilityConvergence()\n" % (self.variable["convergenceGraph"], self.variable["myAlgo"])
+        txt += "Show( %s )\n" % self.variable["convergenceGraph"]
+        txt += "\n"
+
+    return txt
+
+  def Analytical (self, subDict):
+    '''
+    Methodes analytiques
+    '''
+    txt = ""
+    
+    OptimizationAlgo = None
+    if ( self.DictMCVal.has_key( 'OptimizationAlgorithm' ) ):
+      OptimizationAlgo =  self.DictMCVal[ 'OptimizationAlgorithm' ]
 
+    Traitement = None
+    if ( subDict.has_key( OptimizationAlgo ) ):
+      Traitement =  subDict[ OptimizationAlgo ]
 
-# _______________________________
+    if ( Traitement is not None ):
+      txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
 
+    txt += self.OptimizerSettings()
+    txt += self.PhysicalStartingPoint()
 
+    Approximation = None
+    if ( self.DictMCVal.has_key( 'Approximation' ) ):
+      Approximation =  self.DictMCVal[ 'Approximation' ]
 
-  def ImportanceSampling (self) :
-  #-----------------------------
-  # Appele eventuellement par Reliability
+    Traitement = None
+    if ( subDict.has_key( Approximation ) ):
+      Traitement =  subDict[ Approximation ]
 
-    texte  = "    temporaryResult = " + self.NomAlgo + ".getResult()\n\n"
-    texte += "   mean  = temporaryResult.getPhysicalSpaceDesignPoint()\n"
-    texte += "   sigma = NumericalPoint( mean.getDimension(), 1.0 )\n"
-    texte += "   R     = CorrelationMatrix( mean.getDimension() )\n"
-    texte += "   myImportance = Normal( mean, sigma, R )\n\n\n"
+    if ( Traitement is not None ):
+      txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
 
-    texte += "   importanceSamplingAlgo = ImportanceSampling( myEvent, Distribution( myImportance ) )\n\n"
+    txt += self.RunAlgorithm()
+    txt += self.AnalyticalResult()
 
-    for MC in self.ListeOrdreImportanceSampling :
-        if self.DictMCVal.has_key("MC") :
-           debut="   importanceSamplingAlgo.set"+MC.split("_")[-1]
-           texte += debut + "( " + str(self.DictMCVal[MC]) + " )\n"
+    return txt
 
-    texte += "\n   importanceSamplingAlgo.run()\n\n"
-    self.NomAlgo = "importanceSamplingAlgo"
-    return texte
+  def OptimizerSettings (self):
+    '''
+    Parametrage de l optimiseur
+    '''
+    txt = ""
+    
+    iterations = None
+    if ( self.DictMCVal.has_key( 'MaximumIterationsNumber' ) ):
+      iterations = self.DictMCVal[ 'MaximumIterationsNumber' ]
+      txt += "%s.setMaximumIterationsNumber( %s )\n" % (self.variable["myOptimizer"], iterations)
+
+    absoluteError = None
+    if ( self.DictMCVal.has_key( 'MaximumAbsoluteError' ) ):
+      absoluteError = self.DictMCVal[ 'MaximumAbsoluteError' ]
+      txt += "%s.setMaximumAbsoluteError( %s )\n" % (self.variable["myOptimizer"], absoluteError)
+
+    relativeError = None
+    if ( self.DictMCVal.has_key( 'MaximumRelativeError' ) ):
+      relativeError = self.DictMCVal[ 'MaximumRelativeError' ]
+      txt += "%s.setMaximumRelativeError( %s )\n" % (self.variable["myOptimizer"], relativeError)
+
+    residualError = None
+    if ( self.DictMCVal.has_key( 'MaximumResidualError' ) ):
+      residualError = self.DictMCVal[ 'MaximumResidualError' ]
+      txt += "%s.setMaximumResidualError( %s )\n" % (self.variable["myOptimizer"], residualError)
+
+    constraintError = None
+    if ( self.DictMCVal.has_key( 'MaximumConstraintError' ) ):
+      constraintError = self.DictMCVal[ 'MaximumConstraintError' ]
+      txt += "%s.setMaximumConstraintError( %s )\n" % (self.variable["myOptimizer"], constraintError)
+
+    txt += "\n"
+
+    return txt
+
+  def PhysicalStartingPoint (self):
+    '''
+    Point physique de depart
+    '''
+    txt  = "# Point physique de depart\n"
+
+    if ( self.DictMCVal.has_key( 'PhysicalStartingPoint' ) ):
+      point = self.DictMCVal[ 'PhysicalStartingPoint' ]
+      dimension = len( point )
+      txt += "%s = NumericalPoint( %d )\n" % (self.variable["startingPoint"], dimension)
+      for i in range( dimension ):
+        txt += "%s[ %d ] = %g\n" % (self.variable["startingPoint"], i, point[i])
+    else:
+      txt += "%s = %s.getMean()\n" % (self.variable["startingPoint"], self.variable["inputRandomVector"])
+      
+    txt += "\n"
 
+    return txt
 
-  def CreeResu (self) :
-  #------------------
+  def AnalyticalResult (self):
+    '''
+    Resultat des methodes analytiques
+    '''
+    txt  = "# Resultat des methodes analytiques\n"
+    txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"])
+    
+    if ( self.DictMCVal.has_key( 'Probability' ) ):
+      if ( self.DictMCVal[ 'Probability' ] == "yes" ):
+        txt += "%s = %s.getEventProbability()\n" % (self.variable["probability"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'HasoferReliabilityIndex' ) ):
+      if ( self.DictMCVal[ 'HasoferReliabilityIndex' ] == "yes" ):
+        txt += "%s = %s.getHasoferReliabilityIndex()\n" % (self.variable["hasoferReliabilityIndex"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["hasoferReliabilityIndex"], self.variable["hasoferReliabilityIndex"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'DesignPoint' ) ):
+      if ( self.DictMCVal[ 'DesignPoint' ] == "yes" ):
+        txt += "%s = %s.getStandardSpaceDesignPoint()\n" % (self.variable["standardSpaceDesignPoint"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["standardSpaceDesignPoint"], self.variable["standardSpaceDesignPoint"])
+        txt += "%s = %s.getPhysicalSpaceDesignPoint()\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["physicalSpaceDesignPoint"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'ImportanceFactorNumericalResults' ) ):
+      if ( self.DictMCVal[ 'ImportanceFactorNumericalResults' ] == "yes" ):
+        txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["importanceFactors"], self.variable["importanceFactors"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'ImportanceFactorGraphicalResults' ) ):
+      if ( self.DictMCVal[ 'ImportanceFactorGraphicalResults' ] == "yes" ):
+        txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myResult"])
+        txt += "Show( %s )\n"  % self.variable["importanceFactorsGraph"]
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivityNumericalResults' ) ):
+      if ( self.DictMCVal[ 'FORMEventProbabilitySensitivityNumericalResults' ] == "yes" ):
+        txt += "%s = %s.getEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivity"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["eventProbabilitySensitivity"], self.variable["eventProbabilitySensitivity"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivityGraphicalResults' ) ):
+      if ( self.DictMCVal[ 'FORMEventProbabilitySensitivityGraphicalResults' ] == "yes" ):
+        txt += "%s = %s.drawEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["myResult"])
+        txt += "Show( %s[0] )\n" % self.variable["eventProbabilitySensitivityGraph"]
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivityNumericalResults' ) ):
+      if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivityNumericalResults' ] == "yes" ):
+        txt += "%s = %s.getHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["hasoferReliabilityIndexSensitivity"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivityGraphicalResults' ) ):
+      if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivityGraphicalResults' ] == "yes" ):
+        txt += "%s = %s.drawHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["myResult"])
+        txt += "Show( %s[0] )\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'TvedtApproximation' ) ):
+      if ( self.DictMCVal[ 'TvedtApproximation' ] == "yes" ):
+        txt += "%s = %s.getEventProbabilityTvedt()\n" % (self.variable["tvedtApproximation"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["tvedtApproximation"], self.variable["tvedtApproximation"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'HohenBichlerApproximation' ) ):
+      if ( self.DictMCVal[ 'HohenBichlerApproximation' ] == "yes" ):
+        txt += "%s = %s.getEventProbabilityHohenBichler()\n" % (self.variable["hohenBichlerApproximation"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["hohenBichlerApproximation"], self.variable["tvedtApproximation"])
+        txt += "\n"
+
+    if ( self.DictMCVal.has_key( 'BreitungApproximation' ) ):
+      if ( self.DictMCVal[ 'BreitungApproximation' ] == "yes" ):
+        txt += "%s = %s.getEventProbabilityBreitung()\n" % (self.variable["breitungApproximation"], self.variable["myResult"])
+        txt += "print '%s =', %s\n" % (self.variable["breitungApproximation"], self.variable["breitungApproximation"])
+        txt += "\n"
+
+
+    return txt
+
+  def RandomGenerator (self):
     '''
+    Generateur Aleatoire
     '''
-    texte  = "\n# Le resultat\n\n"
-    texte += " myResu  = " + self.NomAlgo +  ".getResult() \n"
-    texte += " probability = myResu.getEventProbability()"
+    txt = ""
+    
+    seed = None
+    if ( self.DictMCVal.has_key( 'RandomGeneratorSeed' ) ):
+      seed = self.DictMCVal[ 'RandomGeneratorSeed' ]
+      txt += "# Initialise le generateur aleatoire\n"
+      txt += "RandomGenerator.SetSeed( %s )\n" % seed
+      txt += "\n"
+    
+    return txt
+
+  def Event (self):
+    '''
+    Definition de l evenement de defaillance
+    '''
+    operator = None
+    if ( self.DictMCVal.has_key( 'ComparisonOperator' ) ):
+      operator = self.DictMCVal[ 'ComparisonOperator' ]
+
+    threshold = None
+    if ( self.DictMCVal.has_key( 'Threshold' ) ):
+      threshold = self.DictMCVal[ 'Threshold' ]
+    
+    txt  = "# Evenement de defaillance\n"
+    txt += "%s = Event( %s, ComparisonOperator( %s() ), %s )\n" % (self.variable["myEvent"], self.variable["outputRandomVector"], operator, threshold)
+    txt += "\n"
+    return txt
+    
+  def MonteCarlo (self):
+    '''
+    Methode de MonteCarlo
+    '''
+    txt  = "# Simulation par MonteCarlo\n"
+    txt += "%s = MonteCarlo( %s )\n"  % (self.variable["myAlgo"], self.variable["myEvent"])
+    txt += "\n"
+   
+    return txt
 
-    return texte
+  def LHS (self):
+    '''
+    Methode LHS
+    '''
+    txt  = "# Simulation par LHS\n"
+    txt += "%s = LHS( %s )\n"  % (self.variable["myAlgo"], self.variable["myEvent"])
+    txt += "\n"
+   
+    return txt
 
+  def ImportanceSampling (self):
+    '''
+    Methode de tirage d importance
+    '''
+    txt  = "# Simulation par Tirage d'importance\n"
+    txt += "%s = ImportanceSampling( %s )\n"  % (self.variable["myAlgo"], self.variable["myEvent"])
+    txt += "\n"
 
+    return txt
 
-  def CreeLois (self) :
-  #------------------
+  def FORM (self):
     '''
+    Methode FORM
     '''
-    code_erreur = 0
-    texte  = "\n# Les lois\n\n"
-    if self.DictMCVal.has_key("Analysis") and self.DictMCVal["Analysis"] == "Reliability" :
-      texte  += "   myPhysicalStartingPoint = NumericalPoint(dim, 0.0)\n"
-    texte += "   myCollection = DistributionCollection(dim)\n\n"
+    txt  = "# Algorithme FORM\n"
+    txt += "%s = FORM ( NearestPointAlgorithm( %s ), %s, %s )\n"  % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
+    txt += "\n"
 
-    numVar = 0
-    for DictVariable in self.ListeVariables :
+    return txt
 
-       boolLoiDef = True
-       if DictVariable.has_key("MarginalDistribution") and DictVariable.has_key("Name"):
-          ConceptLoi = DictVariable["MarginalDistribution"]
-          NomLoi = DictVariable["Name"]+"_Dist"
-       else :
-          boolLoiDef = False
-       
-       if boolLoiDef and self.DictLois.has_key(ConceptLoi):
-          loi = self.DictLois[ConceptLoi]
-       else :
-          boolLoiDef = False
+  def SORM (self):
+    '''
+    Methode SORM
+    '''
+    txt  = "# Algorithme SORM\n"
+    txt += "%s = SORM ( NearestPointAlgorithm( %s ), %s, %s )\n"  % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
+    txt += "\n"
+
+    return txt
+
+  def RunAlgorithm (self):
+    '''
+    Do the computation
+    '''
+    if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
+      if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
+        txt  = "%s = %s.getEvaluationCallsNumber()\n" % (self.variable["modelEvaluationCalls"], self.variable["model"])
+        txt += "%s = %s.getGradientCallsNumber()\n" % (self.variable["modelGradientCalls"], self.variable["model"])
+        txt += "%s = %s.getHessianCallsNumber()\n" % (self.variable["modelHessianCalls"], self.variable["model"])
+        txt += "\n"
+
+    txt += "# Perform the computation\n"
+    txt += "%s.run()\n" % self.variable["myAlgo"]
+    txt += "\n"
+    
+
+    if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
+      if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
+        txt += "%s = %s.getEvaluationCallsNumber() - %s\n" % (self.variable["modelEvaluationCalls"], self.variable["model"], self.variable["modelEvaluationCalls"])
+        txt += "%s = %s.getGradientCallsNumber() - %s\n" % (self.variable["modelGradientCalls"], self.variable["model"], self.variable["modelGradientCalls"])
+        txt += "%s = %s.getHessianCallsNumber() - %s\n" % (self.variable["modelHessianCalls"], self.variable["model"], self.variable["modelHessianCalls"])
+        txt += "\n"
+        txt += "print '%s =', %s\n" % (self.variable["modelEvaluationCalls"], self.variable["modelEvaluationCalls"])
+        txt += "print '%s =', %s\n" % (self.variable["modelGradientCalls"], self.variable["modelGradientCalls"])
+        txt += "print '%s =', %s\n" % (self.variable["modelHessianCalls"], self.variable["modelHessianCalls"])
+        txt += "\n"
+
+    return txt
+
+  def Cobyla (self):
+    '''
+    Methode Cobyla
+    '''
+    txt  = "# Optimisation par Cobyla\n"
+    txt += "%s = Cobyla()\n" % self.variable["myOptimizer"]
+    txt += "#%s = CobylaSpecificParameters()\n" % self.variable["specificParameters"]
+    txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
+    txt += "\n"
+        
+    return txt
+
+  def AbdoRackwitz (self):
+    '''
+    Methode AbdoRackwitz
+    '''
+    txt  = "# Optimisation par AbdoRackwitz\n"
+    txt += "%s = AbdoRackwitz()\n" % self.variable["myOptimizer"]
+    txt += "#%s = AbdoRackwitzSpecificParameters()\n" % self.variable["specificParameters"]
+    txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
+    txt += "\n"
+    return txt
+
+  def Beta (self, loi, i, collection):
+    '''
+    Definition de la loi Beta
+    '''
+    settings = {
+      "RT" : "Beta.RT",
+      "MuSigma" : "Beta.MUSIGMA",
+      }
+    if loi[ 'Settings' ] == 'RT' :
+      arg1 = loi[ 'R' ]
+      arg2 = loi[ 'T' ]
+    else :
+      arg1 = loi[ 'Mu'    ]
+      arg2 = loi[ 'Sigma' ]
       
-       if boolLoiDef and loi.has_key("Kind") :
-          TypeLoi = loi["Kind"]
-       else :
-          boolLoiDef = False
-
-       if not boolLoiDef or TypeLoi not in self.listeParamLoi.keys() : 
-          texte += " Loi " + TypeLoi +" non programmee \n"
-         numVar += 1
-         continue
-
-       ListeParametres = []
-       TexteParametres = ""
-       for Param in self.listeParamLoi[TypeLoi]:
-          if loi.has_key(Param) :
-             texte += "   " + NomLoi + "_" + Param + " = " + str(loi[Param]) + "\n" 
-            ListeParametres.append(NomLoi + "_" + Param) 
-            TexteParametres += NomLoi + "_" + Param + ","
-
-       texte += "   " + NomLoi + " = " + TypeLoi + "( " 
-
-       if loi.has_key("Settings" ) and self.listeParamLoiSettings.has_key(TypeLoi) \
-       and self.listeParamLoiSettings[TypeLoi].has_key(loi["Settings"]):
-          NumParam = self.listeParamLoiSettings[TypeLoi][loi["Settings"]]
-          texte += TexteParametres + NumParam +" )\n"
-       else :
-          texte += TexteParametres[:-1] + " )\n"
-
-       texte += "   " + NomLoi + '.setName( "'+DictVariable["Name"] +'" )\n'
-       texte += "   myCollection["+str(numVar)+"] = Distribution( "+NomLoi+" )\n"
-
-       if self.DictMCVal["Analysis"] == "Reliability" :
-          texte += "   myPhysicalStartingPoint["+str(numVar)+"] = "
-          if DictVariable.has_key("PhysicalStartingPoint") :
-             texte += str(DictVariable["PhysicalStartingPoint"]) +"\n\n"
-          else :
-             texte += NomLoi+".computeQuantile( 0.5 )[0]\n\n"
-
-       numVar += 1
-    return texte
-
-
-#                      _____________________________________________________
-
-  def CreeEntete (self) :
-  #------------------
-    '''
-    Entete :
-    '''
-
-    texte  = "#!/usr/bin/env python\n"
-    texte += "# -*- coding: iso-8859-1 -*-\n"
-    texte += "import sys\n"
-    texte += "import os\n"
-    if self.DictLois.has_key("dir_openturns_python") :
-      texte += "sys.path.append(\"" + self.DictLois["dir_openturns_python"] + "\")\n"
-    if self.DictLois.has_key("DTDDirectory") :
-      texte += "os.environ[\"OPENTURNS_WRAPPER_PATH\"] = \".:" + self.DictLois["DTDDirectory"] + "\"\n"
-    texte += "from openturns import *\n"
-    texte += "error_message = None\n"
-    texte += "try : \n"
-    return texte
-
-  def CreeTexteFin(self) :
-  #------------------------------------
-    texte ='\n\nexcept : \n'
-    texte += '   error_message = sys.exc_type\n'
-    texte += '   if error_message is not None :\n'
-    texte += '      texte  = "================================================= \\n"\n'
-    texte += '      texte += "     Message d\'erreur : \" + str(error_message)  + "\\n"\n'
-    texte += '      texte += "=================================================\\n"\n'
-    texte += '      print texte"\n'
-    texte += "sys.exit(error_message)\n"
-    return texte
+    arg3 = loi[ 'A' ]
+    arg4 = loi[ 'B' ]
+    txt = "Beta( %g, %g, %g, %g, %s )" % (arg1, arg2, arg3, arg4, settings[ loi[ 'Settings' ] ])
+    return txt
+  
+  def Exponential (self, loi, i, collection):
+    '''
+    Definition de la loi Exponential
+    '''
+    arg1 = loi[ 'Lambda' ]
+    arg2 = loi[ 'Gamma'  ]
+    txt = "Exponential( %g, %g )" % (arg1, arg2)
+    return txt
   
+  def Gamma (self, loi, i, collection):
+    '''
+    Definition de la loi Gamma
+    '''
+    settings = {
+      "KLambda" : "Gamma.KLAMBDA",
+      "MuSigma" : "Gamma.MUSIGMA",
+    }
+    if loi[ 'Settings' ] == 'KLambda' :
+      arg1 = loi[ 'K'      ]
+      arg2 = loi[ 'Lambda' ]
+    else :
+      arg1 = loi[ 'Mu'    ]
+      arg2 = loi[ 'Sigma' ]
+      
+    arg3 = loi[ 'Gamma' ]
+    txt = "Gamma( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+    return txt
+
+  def Geometric (self, loi, i, collection):
+    '''
+    Definition de la loi Geometric
+    '''
+    txt = "Geometric( %g )" % loi[ 'P' ]
+    return txt
+
+  def Gumbel (self, loi, i, collection):
+    '''
+    Definition de la loi Gumbel
+    '''
+    settings = {
+      "AlphaBeta" : "Gamma.ALPHABETA",
+      "MuSigma" : "Gamma.MUSIGMA",
+    }
+    if loi[ 'Settings' ] == 'AlphaBeta' :
+      arg1 = loi[ 'Alpha' ]
+      arg2 = loi[ 'Beta'  ]
+    else :
+      arg1 = loi[ 'Mu'    ]
+      arg2 = loi[ 'Sigma' ]
+      
+    txt = "Gamma( %g, %g, %s )" % (arg1, arg2, settings[ loi[ 'Settings' ] ])
+    return txt
+
+  def Histogram (self, loi, i, collection):
+    '''
+    Definition de la loi Histogram
+    '''
+    txt = "** Histogram not defined yet **"
+    return txt
+
+  def Logistic (self, loi, i, collection):
+    '''
+    Definition de la loi Logistic
+    '''
+    arg1 = loi[ 'Alpha' ]
+    arg2 = loi[ 'Beta'  ]
+    txt = "Logistic( %g, %g )" % (arg1, arg2)
+    return txt
+
+  def LogNormal (self, loi, i, collection):
+    '''
+    Definition de la loi LogNormal
+    '''
+    settings = {
+      "MuSigmaLog" : "LogNormal.MUSIGMA_LOG",
+      "MuSigma" : "LogNormal.MUSIGMA",
+      "MuSigmaOverMu" : "LogNormal.MU_SIGMAOVERMU",
+    }
+    if loi[ 'Settings' ] == 'MuSigmaLog' :
+      arg1 = loi[ 'MuLog' ]
+      arg2 = loi[ 'SigmaLog' ]
+    elif loi[ 'Settings' ] == 'MuSigmaOverMu' :
+      arg1 = loi[ 'Mu' ]
+      arg2 = loi[ 'SigmaOverMu' ]
+    else :
+      arg1 = loi[ 'Mu'    ]
+      arg2 = loi[ 'Sigma' ]
+      
+    arg3 = loi[ 'Gamma' ]
+    txt = "LogNormal( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+    return txt
+
+  def MultiNomial (self, loi, i, collection):
+    '''
+    Definition de la loi MultiNomial
+    '''
+    arg1 = loi[ 'Values' ]
+    arg2 = loi[ 'N' ]
+    txt = "MultiNomial( NumericalPoint( %s ) , %d)" % (arg1, arg2)
+    return txt
+
+  def Normal (self, loi, i, collection):
+    '''
+    Definition de la loi Normal
+    '''
+    arg1 = loi[ 'Mu'    ]
+    arg2 = loi[ 'Sigma' ]
+    txt = "Normal( %g, %g )" % (arg1, arg2)
+    return txt
+
+  def TruncatedNormal (self, loi, i, collection):
+    '''
+    Definition de la loi TruncatedNormal
+    '''
+    arg1 = loi[ 'MuN' ]
+    arg2 = loi[ 'SigmaN' ]
+    arg3 = loi[ 'A' ]
+    arg4 = loi[ 'B' ]
+    txt = "TruncatedNormal( %g, %g, %g, %g )" % (arg1, arg2, arg3, arg4)
+    return txt
+
+  def Poisson (self, loi, i, collection):
+    '''
+    Definition de la loi 
+    '''
+    txt = "Poisson( %g )" % loi[ 'Lambda' ]
+    return txt
+
+  def Student (self, loi, i, collection):
+    '''
+    Definition de la loi Student
+    '''
+    arg1 = loi[ 'Mu' ]
+    arg2 = loi[ 'Nu' ]
+    txt = "Student( %g, %g )" % (arg1, arg2)
+    return txt
+
+  def Triangular (self, loi, i, collection):
+    '''
+    Definition de la loi Triangular
+    '''
+    arg1 = loi[ 'A' ]
+    arg2 = loi[ 'M' ]
+    arg3 = loi[ 'B' ]
+    txt = "Triangular( %g, %g, %g )" % (arg1, arg2, arg3)
+    return txt
+
+  def Uniform (self, loi, i, collection):
+    '''
+    Definition de la loi Uniform
+    '''
+    arg1 = loi[ 'A' ]
+    arg2 = loi[ 'B' ]
+    txt = "Uniform( %g, %g )" % (arg1, arg2)
+    return txt
+
+  def UserDefined (self, loi, i, collection):
+    '''
+    Definition de la loi UserDefined
+    '''
+    txt = "** UserDefined not defined yet **"
+    return txt
+
+  def Weibull (self, loi, i, collection):
+    '''
+    Definition de la loi Weibull
+    '''
+    settings = {
+      "AlphaBeta" : "Weibull.ALPHABETA",
+      "MuSigma" : "Weibull.MUSIGMA",
+    }
+    if loi[ 'Settings' ] == 'AlphaBeta' :
+      arg1 = loi[ 'Alpha' ]
+      arg2 = loi[ 'Beta'  ]
+    else :
+      arg1 = loi[ 'Mu'    ]
+      arg2 = loi[ 'Sigma' ]
+      
+    arg3 = loi[ 'Gamma' ]
+    txt = "Weibull( %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+    return txt
+
index 7452d1fa9c80aa45a17c7bd1ccd93b3befa62b33..7972a4bf3d90426f883084cffdde1c1ec6bcbe05 100644 (file)
@@ -5,92 +5,53 @@
 """
 Ce module contient le generateur XML pour Openturns
 """
-
-#  Les variables
-#---------------------
-
-# OrdreVariable contient l'ordre des MC pour definir une variable en XML
-# dictMCXML a pour cle le nom du MC dans la commande,
-# Il contient aussi une liste donnant les informations suivantes
-#      0 : debut de ligne
-#      1 : fin de ligne
-#      2 : code : 0 : facultatif, 1 : obligatoire 
-# Type est sur la meme ligne que Name
-
-OrdreVariable = ( 'Name', 'Type', 'Comment', 'Unit', 'Regexp', 'Format' )
-dictMCXML = { "Name"    : ( '        <variable id="',  '" ',           1 ), 
-              "Type"    : ( 'type ="'               ,  '">\n',         1 ),
-              "Comment"        : ( '          <comment>'   ,  '</comment>\n', 0 ),
-              "Unit"   : ( '          <unit>'      ,  '</unit>\n',    0 ),
-              "Regexp" : ( '          <regexp>'    ,  '</regexp>\n',  0 ),
-              "Format" : ( '          <format>'    ,  '</format>\n',  0 ),
-              }
-
-
-#  Les fonctions du wrapper
-#--------------------------------
-# OrdreLibrary contient l'ordre des MC pour definir la partie library en XML
-# dictLibXML a pour cle le nom du MC dans la commande,
-# Il contient aussi une liste donnant les informations suivantes :
-#      0 : debut de ligne
-#      1 : milieu de ligne si le MC est present
-#      2 : milieu de ligne si le MC n est pas present
-#      3 : fin de ligne
-#   4 : code :  0 : facultatif, 1 : obligatoire sans defaut
-
-OrdreLibrary = ( 'FunctionName', 'GradientName', 'HessianName' )
-dictLibXML = { "FunctionName" : ( '\n\n      <!-- The function that we try to execute through the wrapper -->',
-                                  '\n      <function provided="yes">',
-                                  '\n      <function provided="no">',
-                                    '</function>',
-                                  1,
-                                  ),
-               "GradientName" : ( '\n\n      <!-- The gradient of the function -->',
-                                  '\n      <gradient provided="yes">',
-                                  '\n      <gradient provided="no">',
-                                  '</gradient>',
-                                  0,
-                                  ),
-               "HessianName"  : ( '\n\n      <!-- The hessian of the function wrapper -->',
-                                  '\n      <hessian provided="yes">',
-                                  '\n      <hessian provided="no">' ,
-                                  '</hessian>\n\n',
-                                  0,
-                                  ),
-               }
-
-#  Les communications du wrapper
-#--------------------------------
-# OrdreWrapMode contient l'ordre des MC pour definir la partie WrapMode en XML
-# dictWrMXML a pour cle le nom du MC dans la commande,
-# Il contient aussi une liste donnant les informations suivantes
-#      0 : debut de ligne
-#      1 : fin de ligne
-#      2 : code : 0 : facultatif, 1 : obligatoire sans defaut, 2 : obligatoire avec defaut
-#      3 : valeur par defaut eventuelle
-OrdreWrapMode = ( 'WrapCouplingMode', 'State', 'InDataTransfer', 'OutDataTransfer' )
-dictWrMXML = { "WrapCouplingMode" : ( '\n    <wrap-mode type="'        , '"'     ,  1 ),
-               "State"            : ( ' state="'                       , '">\n'  ,  2,  'shared">\n' ),
-              "InDataTransfer"   : ( '      <in-data-transfer mode="' , '" />\n',  0 ),
-              "OutDataTransfer"  : ( '      <out-data-transfer mode="', '" />\n',  0 ),
-               }
-
-# Les fichiers d'echange du wrapper
-#-----------------------------------------
-# OrdreExchangeFile contient l'ordre des MC pour definir la partie OrdreExchangeFile en XML
-# dictFilXML a pour cle le nom du MC dans la commande,
-# Il contient aussi une liste donnant les informations suivantes
-#      0 : debut de ligne
-#      1 : fin de ligne
-#      2 : code : 0 : facultatif, 1 : obligatoire sans defaut
-OrdreExchangeFile = ( 'Id', 'Type', 'Name', 'Path', 'Subst' )
-dictFilXML = { "Id"    : ( '\n      <file id="', '">'       ),
-              "Type"  : ( ' type="'           , '">'       ),
-              "Name"  : ( '\n        <name>'  , '</name>'  ),
-              "Path"  : ( '\n        <path>'  , '</path>'  ),
-              "Subst" : ( '\n        <subst>' , '</subst>' ),
-               }
-
+import sys
+print sys.path
+import openturns
+
+# Dictionnaires de conversion des valeurs lues dans EFICAS
+# en valeurs reconnues par Open TURNS
+# Les clefs 'None' sont les valeurs par defaut
+
+VariableTypeByName = {
+  "in"  : openturns.WrapperDataVariableType.IN,
+  "out" : openturns.WrapperDataVariableType.OUT,
+  None  :  openturns.WrapperDataVariableType.IN,
+  }
+
+FileTypeByName = {
+  "in"  : openturns.WrapperDataFileType.IN,
+  "out" : openturns.WrapperDataFileType.OUT,
+  None  : openturns.WrapperDataFileType.IN,
+  }
+
+SymbolProvidedByName = {
+  "no"  : openturns.WrapperSymbolProvided.NO,
+  "yes" : openturns.WrapperSymbolProvided.YES,
+  None  : openturns.WrapperSymbolProvided.NO,
+  }
+
+WrapperStateByName = {
+  "shared"   : openturns.WrapperState.SHARED,
+  "specific" : openturns.WrapperState.SPECIFIC,
+  None       : openturns.WrapperState.SPECIFIC,
+  }
+
+WrapperModeByName = {
+  "static-link"  : openturns.WrapperMode.STATICLINK,
+  "dynamic-link" : openturns.WrapperMode.DYNAMICLINK,
+  "fork"         : openturns.WrapperMode.FORK,
+  None           : openturns.WrapperMode.FORK,
+  }
+
+WrapperDataTransferByName = {
+  "files"     : openturns.WrapperDataTransfer.FILES,
+  "pipe"      : openturns.WrapperDataTransfer.PIPE,
+  "arguments" : openturns.WrapperDataTransfer.ARGUMENTS,
+  "socket"    : openturns.WrapperDataTransfer.SOCKET,
+  "CORBA"     : openturns.WrapperDataTransfer.CORBA,
+  None        : openturns.WrapperDataTransfer.FILES,
+  }
 
 #==========================
 # La classe de creation XML 
@@ -101,164 +62,144 @@ class XMLGenerateur :
   '''
   Generation du fichier XML
   '''
-  def __init__ (self, DictMCVal, ListeVariables, DictLois ) :
-  #---------------------------------------------------------#
-    self.ListeFiles = []
+  def __init__ (self, appli, DictMCVal, DictVariables ) :
     self.DictMCVal = DictMCVal
-    self.ListeVariables = ListeVariables
-    self.DictLois = DictLois 
+    self.DictVariables = DictVariables
+    self.appli = appli
 
   def CreeXML (self) :
-  #------------------#
     '''
     Pilotage general de la creation du fichier XML
     '''
-    self.texte  = self.CreeEntete()
-    self.texte += self.CreeWrapperAndPath()
-    self.texte += self.CreeVariables()
-    self.texte += self.CreeLibrary()
-    self.texte += self.CreeFile()
-    self.texte += self.CreeWrapMode()
-    self.texte += self.CreeCommande()
-    return self.texte
-
-
-  def CreeEntete (self) :
-  #---------------------#
+    data = openturns.WrapperData()
+    data.setLibraryPath( self.GetMCVal('WrapperPath','') )
+    data.setVariableList( self.VariableList() )
+    data.setFunctionDescription( self.FunctionDefinition() )
+    data.setGradientDescription( self.GradientDefinition() )
+    data.setHessianDescription(  self.HessianDefinition()  )
+    data.setFileList( self.FileList() )
+    data.setParameters( self.Parameters() )
+    
+    wrapper=openturns.WrapperFile()
+    wrapper.setWrapperData( data )
+    
+    return wrapper
+
+
+  def VariableList (self) :
     '''
-    La variable DTDDirectory doit etre dans DictMCVal
+    Ecrit la liste des variables
     '''
-    #PN a faire : recuperer DTDDirectory dans editeur.ini
-    texte = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
-    if self.DictMCVal.has_key("DTDDirectory")  :
-      aux = os.path.join(self.DictMCVal["DTDDirectory"], "wrapper.dtd")
-      texte += "<!DOCTYPE wrapper SYSTEM \"" + aux + "\">\n"
-    texte += '\n<wrapper>\n'
-    texte += '\n  <library>\n\n'
-    return texte
-
-
-  def CreeWrapperAndPath (self) :
-  #-----------------------------#
-    texte  = '    <!-- The path of the shared object -->\n'
-    texte += '    <path>'
-    if self.DictMCVal.has_key("WrapperPath") :
-      texte += self.DictMCVal["WrapperPath"]
-    else :
-      print "*********************************************"
-      print "*          ERREUR GENERATION XML            *"
-      print "*       champ WrapperPath non rempli        *"
-      print "*********************************************"
-    texte += '</path>\n\n\n'
+    varList = openturns.WrapperDataVariableList()
+    for var in self.DictVariables.keys() :
+      varList.add( self.Variable( var, self.DictVariables[var] ) )
+    return varList
 
-    return texte
-
-
-  def CreeVariables (self) :
-  #------------------------#
-    texte  ='    <!-- This section describes all exchanges data between the wrapper and the platform -->\n'
-    texte +='    <description>\n\n'
-    texte +='      <!-- Those variables are substituted in the files above -->\n'
-    texte +='      <!-- The order of variables is the order of the arguments of the function -->\n\n'
-    texte += '      <variable-list>'
+  def Variable (self, var, dictVar) :
+    '''
+    Ecrit le parametrage d une variable
+    '''
+    variable = openturns.WrapperDataVariable()
+    variable.id_ = var
+    if dictVar[ 'Type' ] in VariableTypeByName.keys() :
+      variable.type_ = VariableTypeByName[ dictVar[ 'Type' ] ]
+    if dictVar.has_key('Comment')   : variable.comment_ = dictVar[ 'Comment' ]
+    if dictVar.has_key('Unit')      : variable.unit_    = dictVar[ 'Unit'    ]
+    if dictVar.has_key('Regexp')    : variable.regexp_  = dictVar[ 'Regexp'  ]
+    if dictVar.has_key('Format')    : variable.format_  = dictVar[ 'Format'  ]
+    return variable
+
+  def FunctionDefinition (self) :
+    '''
+    Ecrit la description de la Fonction
+    '''
+    func = openturns.WrapperFunctionDescription()
+    func.name_ = self.GetMCVal( 'FunctionName', '' )
+    if (len(func.name_) != 0) : func.provided_ = SymbolProvidedByName[ 'yes' ]
+    return func
+  
+  def GradientDefinition (self) :
+    '''
+    Ecrit la description du Gradient
+    '''
+    grad = openturns.WrapperFunctionDescription()
+    grad.name_ = self.GetMCVal( 'GradientName', '' )
+    if (len(grad.name_) != 0) : grad.provided_ = SymbolProvidedByName[ 'yes' ]
+    return grad
+  
+  def HessianDefinition (self) :
+    '''
+    Ecrit la description de la Hessienne
+    '''
+    hess = openturns.WrapperFunctionDescription()
+    hess.name_ = self.GetMCVal( 'HessianName', '' )
+    if (len(hess.name_) != 0) : hess.provided_ = SymbolProvidedByName[ 'yes' ]
+    return hess
+  
 
-    numvar = 0
-    for DictVariable in self.ListeVariables :
-      texte += "\n        <!-- The definition of variable # "+  str(numvar) + " -->\n"
-      for MC in OrdreVariable :
-        if DictVariable.has_key(MC) :
-          texte += dictMCXML[MC][0] + DictVariable[MC] + dictMCXML[MC][1]
-        else :
-          if dictMCXML[MC][2] :
-            print "**************************************************"
-            print "*            ERREUR GENERATION XML               *"
-            print "*  champ obligatoire non rempli pour variable    *"
-            print "**************************************************"
-      texte += '        </variable>\n'
-      numvar += 1
-    texte += '\n      </variable-list>\n'
-    texte += '      <!-- End of variable description -->\n'
-    return texte
 
-  def CreeLibrary (self) :
-  #----------------------#
+  def FileList (self) :
     '''
-    Librairies
+    Ecrit la liste des fichiers
     '''
-    texte = ""
-    for MC in OrdreLibrary :
-      texte += dictLibXML[MC][0]
-      if self.DictMCVal.has_key(MC) :
-        texte += dictLibXML[MC][1] + self.DictMCVal[MC] + dictLibXML[MC][3]
-      else :
-        texte += dictLibXML[MC][2] + dictLibXML[MC][3]
-        if dictLibXML[MC][4] :
-          print "**************************************************"
-          print "*            ERREUR GENERATION XML               *"
-          print "*  champ obligatoire non rempli pour wrapper     *"
-          print "**************************************************"
-    texte += '    </description>\n\n'
-    texte += '  </library>\n'
-    return texte
+    fileList = openturns.WrapperDataFileList()
+    for dictFile in self.GetMCVal('Files', []) :
+      fileList.add( self.File( dictFile ) )
+    return fileList
 
-  def CreeFile (self) :
-  #-------------------#
+  def File (self, dictFile ) :
     '''
-    Fichiers
+    Ecrit le parametrage d un fichier
     '''
-    texte  = '\n  <external-code>\n'
-    texte += '\n    <!-- Those data are external to the platform (input files, etc.)-->\n'
-    texte += '    <data>\n'
-
-    if self.DictMCVal.has_key("exchange_file") :
-       for dico in self.DictMCVal["exchange_file"] :
-          texte += "\n      <!-- The definition of file  -->"
-          for MC in OrdreExchangeFile :
-              if dico.has_key(MC) :
-                 texte += dictFilXML[MC][0] + dico[MC] + dictFilXML[MC][1]
-          texte += "\n      </file>\n"
-    texte += '\n    </data>\n'
-    return texte
-
-  def CreeWrapMode (self) :
-  #-----------------------#
+    fich = openturns.WrapperDataFile()
+    fich.id_ = dictFile[ 'Id' ]
+    if dictFile[ 'Type' ] in FileTypeByName.keys() :
+      fich.type_ = FileTypeByName[ dictFile[ 'Type' ] ]
+    if dictFile.has_key('Name')   : fich.name_  = dictFile[ 'Name' ]
+    if dictFile.has_key('Path')   : fich.path_  = dictFile[ 'Path' ]
+    if dictFile.has_key('Subst')  :
+      import string
+      fich.subst_ = string.join( dictFile[ 'Subst' ], ',' )
+    return fich
+
+  def Parameters (self) :
     '''
-    WrapMode
+    Ecrit les parametres de couplage au code externe
     '''
-    texte = '\n    <!-- Transfert data mode through Wrapper -->'
+    parameters = openturns.WrapperParameter()
+    parameters.mode_  = WrapperModeByName[ self.GetMCVal('WrapCouplingMode') ]
+    parameters.state_ = WrapperStateByName[ self.GetMCVal('State') ]
+    parameters.in_    = WrapperDataTransferByName[ self.GetMCVal('InDataTransfer') ]
+    parameters.out_   = WrapperDataTransferByName[ self.GetMCVal('OutDataTransfer') ]
+    return parameters
+  
 
-    for MC in OrdreWrapMode :
-      if self.DictMCVal.has_key(MC) :
-        texte += dictWrMXML[MC][0] + self.DictMCVal[MC] + dictWrMXML[MC][1]
-      else :
-        if dictWrMXML[MC][2] == 2 :
-          texte += dictWrMXML[MC][0] + dictWrMXML[MC][3]
-        elif dictWrMXML[MC][2] == 1 :
-          print "**************************************************"
-          print "*            ERREUR GENERATION XML               *"
-          print "*  champ obligatoire non rempli pour external    *"
-          print "**************************************************"
-    texte += '    </wrap-mode>\n\n'
-    return texte
 
-  def CreeCommande (self) :
-  #-----------------------#
+
+  # ---------------------------------------------------------------------------------
+
+
+  def GetTag (self, tag) :
     '''
-    La commande
-    On lui passera en argument les options supplementaires eventuelles
+    Recupere la chaine associee au tag dans la table dictTagsXML.
+    Leve une exception si le tag n est pas trouve
     '''
-    texte  = '    <!-- Command -->\n'
-    texte += '    <command>'
-    if self.DictMCVal.has_key("Command") :
-      texte += self.DictMCVal["Command"]
-      if self.DictMCVal.has_key("ArguCommande") :
-         for argument in self.DictMCVal[ArguCommande] :
-             texte += " " + argument
-        texte += "\n"
+    if ( dictTagsXML.has_key(tag) ) :
+      return dictTagsXML[tag]
     else :
-      texte += '# no command'
-    texte +='</command>\n'
-    texte +='\n  </external-code>\n'
-    texte +='\n</wrapper>\n'
-    return texte
-
+      raise KeyError, "Tag '%s' is undefined. This is an internal bug. Report bug to developers" % tag 
+    pass
+  
+  def GetMCVal (self, MC, default = None, mandatory = False) :
+    '''
+    Recupere la chaine associee au MC dans la table DictMCVal.
+    Leve une exception si le MC n est pas trouve et mandatory vaut True
+    '''
+    if ( self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None ) :
+      return self.DictMCVal[MC]
+    else :
+      if ( mandatory ) :
+        raise KeyError, "Keyword '%s' is mandatory" % MC
+      else :
+        return default
+    pass
diff --git a/generator/generator_openturns_study.py b/generator/generator_openturns_study.py
new file mode 100644 (file)
index 0000000..8a76087
--- /dev/null
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+   Ce module contient le plugin generateur de fichier au format 
+   openturns pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+
+from generator_python import PythonGenerator
+from OpenturnsBase import Generateur 
+#from OpenturnsXML import XMLGenerateur 
+#from OpenturnsSTD import STDGenerateur 
+
+def entryPoint():
+   """
+      Retourne les informations necessaires pour le chargeur de plugins
+
+      Ces informations sont retournees dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'openturns_study',
+        # La factory pour creer une instance du plugin
+          'factory' : OpenturnsGenerator,
+          }
+
+
+class OpenturnsGenerator(PythonGenerator):
+   """
+      Ce generateur parcourt un objet de type JDC et produit
+      un texte au format eficas et 
+      un texte au format xml 
+
+   """
+   # Les extensions de fichier permis?
+   extensions=('.comm',)
+
+   def initDico(self):
+      self.dictMCVal={}
+      self.listeVariables=[]
+      self.listeFichiers=[]
+      self.dictMCLois={}
+      self.dictTempo={}
+      self.TraiteMCSIMP=1
+      self.texteSTD="""#!/usr/bin/env python
+      import sys
+      print "Invalid file. Check build process."
+      sys.exit(1)
+      """
+
+   def gener(self,obj,format='brut'):
+      print "IDM: gener dans generator_openturns_study.py"
+      self.initDico()
+      self.text=PythonGenerator.gener(self,obj,format)
+      self.genereSTD()
+      return self.text
+
+   def generMCSIMP(self,obj) :
+      """
+      Convertit un objet MCSIMP en texte python
+      Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
+      """
+      s=PythonGenerator.generMCSIMP(self,obj)
+      if self.TraiteMCSIMP == 1 : 
+         self.dictMCVal[obj.nom]=obj.val
+      else :
+         self.dictTempo[obj.nom]=obj.valeur
+      return s
+
+#   def generMCFACT(self,obj):
+#      # Il n est pas possible d utiliser obj.valeur qui n est pas 
+#      # a jour pour les nouvelles variables ou les modifications 
+#      if obj.nom in ( "Variables", "Files", ) :
+#         self.TraiteMCSIMP=0
+#         self.dictTempo={}
+#      s=PythonGenerator.generMCFACT(self,obj)
+#      if obj.nom in ( "Variables", ) :
+#         self.listeVariables.append(self.dictTempo)
+#         self.dictTempo={}
+#      else :
+#         self.listeFichiers.append(self.dictTempo)
+#      self.TraiteMCSIMP=1
+#      return s
+
+   def generETAPE(self,obj):
+      print "IDM: generETAPE dans generator_openturns_study.py"
+      print "IDM: obj.nom=", obj.nom
+      if obj.nom in ( "DISTRIBUTION", ) :
+         self.TraiteMCSIMP=0
+         self.dictTempo={}
+      s=PythonGenerator.generETAPE(self,obj)
+      if obj.nom in ( "DISTRIBUTION", ) :
+         self.dictMCLois[obj.sd]=self.dictTempo
+         self.dictTempo={}
+      self.TraiteMCSIMP=1
+      return s
+
+   def generPROC_ETAPE(self,obj):
+      print "IDM: generPROC_ETAPE dans generator_openturns_study.py"
+      print "IDM: obj.nom=", obj.nom
+      if obj.nom in ( "VARIABLE",  ) :
+         self.TraiteMCSIMP=0
+         self.dictTempo={}
+      s=PythonGenerator.generPROC_ETAPE(self,obj)
+      if obj.nom in ( "VARIABLE", ) :
+         self.listeVariables.append(self.dictTempo)
+         self.dictTempo={}
+      self.TraiteMCSIMP=1
+      return s
+
+   def genereSTD(self):
+      print "IDM: genereSTD dans generator_openturns_study.py"
+      print "IDM: self.listeVariables=", self.listeVariables
+      MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, self.listeVariables, self.dictMCLois)
+      MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
+      #try :
+      if 1== 1 :
+         self.texteSTD=MonGenerateur.CreeSTD()
+      #except :
+      else :
+         self.texteSTD="Il y a un pb a la Creation du STD"
+
+   def writeOpenturnsSTD(self, filename):
+      f = open( str(filename), 'wb')
+      f.write( self.texteSTD )
+      f.close()
+
+
diff --git a/generator/generator_openturns_wrapper.py b/generator/generator_openturns_wrapper.py
new file mode 100644 (file)
index 0000000..5720bfb
--- /dev/null
@@ -0,0 +1,138 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module contient le plugin generateur de fichier au format 
+    openturns pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+
+from generator_python import PythonGenerator
+from OpenturnsBase import Generateur 
+#from OpenturnsXML import XMLGenerateur 
+#from OpenturnsSTD import STDGenerateur 
+
+def entryPoint():
+   """
+       Retourne les informations necessaires pour le chargeur de plugins
+
+       Ces informations sont retournees dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'openturns_wrapper',
+        # La factory pour creer une instance du plugin
+          'factory' : OpenturnsGenerator,
+          }
+
+
+class OpenturnsGenerator(PythonGenerator):
+   """
+       Ce generateur parcourt un objet de type JDC et produit
+       un texte au format eficas et 
+       un texte au format xml 
+
+   """
+   # Les extensions de fichier permis?
+   extensions=('.comm',)
+
+   def initDico(self):
+       self.dictMCVal={}
+       self.dictVariables={}
+       self.listeFichiers=[]
+       self.dictTempo={}
+       self.traiteMCSIMP=1
+       self.numOrdre=0
+       self.texteSTD="""#!/usr/bin/env python
+       import sys
+       print "Invalid file. Check build process."
+       sys.exit(1)
+       """
+       self.wrapperXML=None
+
+   def gener(self,obj,format='brut'):
+       #print "IDM: gener dans generator_openturns_wrapper.py"
+       self.initDico()
+       self.text=PythonGenerator.gener(self,obj,format)
+       self.genereXML()
+       #self.genereSTD()
+       return self.text
+
+   def generMCSIMP(self,obj) :
+       """
+       Convertit un objet MCSIMP en texte python
+       Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
+       """
+       s=PythonGenerator.generMCSIMP(self,obj)
+       if self.traiteMCSIMP == 1 : 
+          self.dictMCVal[obj.nom]=obj.val
+       else :
+          self.dictTempo[obj.nom]=obj.valeur
+       return s
+
+   def generETAPE(self,obj):
+       #print "generETAPE" , obj.nom
+       if obj.nom == "VARIABLE" :
+          self.traiteMCSIMP=0
+          self.dictTempo={}
+       s=PythonGenerator.generETAPE(self,obj)
+       if obj.nom == "VARIABLE" :
+          self.dictTempo["numOrdre"]=self.numOrdre
+          self.numOrdre = self.numOrdre +1
+          if obj.sd == None :
+             self.dictVariables["SansNom"]=self.dictTempo
+          else :
+             self.dictVariables[obj.sd.nom]=self.dictTempo
+          self.dictTempo={}
+       self.traiteMCSIMP=1
+       return s
+
+   def generMCFACT(self,obj):
+       # Il n est pas possible d utiliser obj.valeur qui n est pas 
+       # a jour pour les nouvelles variables ou les modifications 
+       #print "generMCFACT" , obj.nom
+       if obj.nom in ( "Files", ) :
+          self.traiteMCSIMP=0
+         self.dictTempo={}
+       s=PythonGenerator.generMCFACT(self,obj)
+       self.listeFichiers.append(self.dictTempo)
+       self.traiteMCSIMP=1
+       return s
+
+   def genereXML(self):
+       #print "IDM: genereXML dans generator_openturns_wrapper.py"
+       #print "appli.CONFIGURATION=",self.appli.CONFIGURATION.__dict__
+       if self.listeFichiers != [] :
+          self.dictMCVal["Files"]=self.listeFichiers
+       print "dictMCVal", self.dictMCVal, "dictVariables", self.dictVariables
+       MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, [], {} ,self.dictVariables)
+       MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
+       #try :
+       if 1== 1 :
+          self.wrapperXML=MonGenerateur.CreeXML()
+       #except :
+       else :
+         self.wrapperXML=None
+
+   def writeOpenturnsXML(self, filename):
+      self.wrapperXML.writeFile( str(filename) )
+
index 5fdc6af6a88607a2d41d0d081dedcc2c2e7c5348..298dd547d438ad112819c63d8d2817916a4931e9 100644 (file)
@@ -128,12 +128,16 @@ class vers3DSalomeGenerator(PythonGenerator):
    def generMCSIMP(self,obj) :
       """
       """
-      #print "MCSIMP : ", obj.nom
       if obj.nom in dir(self) :
          suite = self.__class__.__dict__[obj.nom](self,obj)
       else :
          clef=self.dict_traduit[obj.nom]
-         self.dict_attributs[clef]=obj.val
+         # Traitement des parametres
+         try :
+             self.dict_attributs[clef]=obj.val.eval()
+         except :
+             self.dict_attributs[clef]=obj.val
+
 
    def generMCFACT(self,obj):
       """
@@ -142,15 +146,13 @@ class vers3DSalomeGenerator(PythonGenerator):
       """
       self.init_ligne()
       self.commande=self.dict_deb_com[obj.nom]
-      print self.commande
       for v in obj.mc_liste:
          self.generator(v)
-      #print self.commande
-      #print self.dict_attributs
       if self.boolGpMa == 1:
          self.list_commandes.append((self.commande,self.dict_attributs)) 
       else :
          #showerror("Elements ne portant pas sur un Groupe de Maille","Salome ne sait pas montrer ce type d' element")
+         print ("Elements ne portant pas sur un Groupe de Maille","Salome ne sait pas montrer ce type d' element")
          pass
 
    def generMCList(self,obj):