]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
mise en cohérence avec la 10.2.22
authorPascale Noyret <pascale.noyret@edf.fr>
Tue, 2 Nov 2010 14:10:08 +0000 (14:10 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Tue, 2 Nov 2010 14:10:08 +0000 (14:10 +0000)
43 files changed:
Aster/Cata/cataSTA10/Macro/calc_fonction_ops.py
Aster/Cata/cataSTA10/Macro/calc_miss_ops.py
Aster/Cata/cataSTA10/Macro/calc_modal_ops.py
Aster/Cata/cataSTA10/Macro/calc_mode_rotation_ops.py
Aster/Cata/cataSTA10/Macro/calc_table_ops.py
Aster/Cata/cataSTA10/Macro/creation_donnees_homard.py
Aster/Cata/cataSTA10/Macro/defi_sol_miss_ops.py
Aster/Cata/cataSTA10/Macro/dyna_iss_vari_ops.py
Aster/Cata/cataSTA10/Macro/impr_fonction_ops.py
Aster/Cata/cataSTA10/Macro/info_fonction_ops.py
Aster/Cata/cataSTA10/Macro/macr_adap_mail_ops.py
Aster/Cata/cataSTA10/Macro/macr_ascouf_calc_ops.py
Aster/Cata/cataSTA10/Macro/macr_aspic_calc_ops.py
Aster/Cata/cataSTA10/Macro/macr_cara_poutre_ops.py
Aster/Cata/cataSTA10/Macro/macr_ecrevisse_ops.py
Aster/Cata/cataSTA10/Macro/macr_lign_coupe_ops.py
Aster/Cata/cataSTA10/Macro/macr_recal_ops.py
Aster/Cata/cataSTA10/Macro/macro_expans_ops.py
Aster/Cata/cataSTA10/Macro/macro_miss_3d_ops.py
Aster/Cata/cataSTA10/Macro/macro_mode_meca_ops.py
Aster/Cata/cataSTA10/Macro/observation_ops.py
Aster/Cata/cataSTA10/Macro/post_bordet_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA10/Macro/post_coque_ops.py
Aster/Cata/cataSTA10/Macro/post_decollement_ops.py [new file with mode: 0644]
Aster/Cata/cataSTA10/Macro/post_endo_fiss_ops.py
Aster/Cata/cataSTA10/Macro/post_gp_ops.py
Aster/Cata/cataSTA10/Macro/post_k1_k2_k3_ops.py
Aster/Cata/cataSTA10/Macro/propa_fiss_ops.py
Aster/Cata/cataSTA10/Macro/raff_xfem_ops.py
Aster/Cata/cataSTA10/Macro/reca_calcul_aster.py
Aster/Cata/cataSTA10/Macro/recal.py
Aster/Cata/cataSTA10/Macro/simu_point_mat_ops.py
Aster/Cata/cataSTA10/Macro/stanley_ops.py
Aster/Cata/cataSTA10/SD/sd_cham_no.py
Aster/Cata/cataSTA10/SD/sd_contact.py
Aster/Cata/cataSTA10/SD/sd_nume_ddl_gene.py
Aster/Cata/cataSTA10/SD/sd_nume_elim.py [new file with mode: 0644]
Aster/Cata/cataSTA10/SD/sd_partition.py
Aster/Cata/cataSTA10/SD/sd_resultat.py
Aster/Cata/cataSTA10/SD/sd_util.py
Aster/Cata/cataSTA10/SD/sd_xfem.py
Aster/Cata/cataSTA10/SD/utilsd.py
Aster/Cata/cataSTA10/cata.py

index 6ad2972405f3b3beab69e96f6ec8a4bf1f9c2f5d..7afe34ed90e06d2c86f88fef213e1626d85f9815 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF calc_fonction_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF calc_fonction_ops Macro  DATE 11/10/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -26,6 +26,7 @@ import traceback
 def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP,
                       SPEC_OSCI,ABS,COMB,COMB_C,COMPOSE,EXTRACTION,
                       ENVELOPPE,FRACTILE,ASSE,CORR_ACCE,PUISSANCE,INVERSE,
+                      REGR_POLYNOMIALE,
                       NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE,
                       PROL_GAUCHE,NOM_PARA_FONC,INTERPOL_FONC,PROL_DROITE_FONC,
                       PROL_GAUCHE_FONC,INFO,**args):
@@ -33,6 +34,8 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP,
       Ecriture de la macro CALC_FONCTION
    """
    ier=0
+   import numpy as NP
+
    from Cata_Utils.t_fonction import t_fonction, t_fonction_c, t_nappe, homo_support_nappe, \
             FonctionError, ParametreError, InterpolationError, ProlongementError, enveloppe, fractile
    from Utilitai import liss_enveloppe
@@ -325,6 +328,7 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP,
       ###
       if (LISS_ENVELOP!= None):
          __ff=LISS_ENVELOP['NAPPE'].convert()
+         ctxt.f = __ff.nom
          sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="")
          sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS'])
          para_fonc=__ff.l_fonc[0].para
@@ -332,6 +336,26 @@ def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP,
          for val in sp_lisse.listTable: 
             l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc))
          __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para)
+      ###
+      if (REGR_POLYNOMIALE != None):
+          __ff = REGR_POLYNOMIALE['FONCTION'].convert()
+          ctxt.f = __ff.nom
+          deg = REGR_POLYNOMIALE['DEGRE']
+          coef = NP.polyfit(__ff.vale_x, __ff.vale_y, deg)
+          if coef is None:
+              raise FonctionError("La régression polynomiale n'a pas convergé.")
+          # interpolation sur une liste d'abscisses
+          absc = __ff.vale_x
+          if args['LIST_PARA'] is not None:
+            absc = args['LIST_PARA'].Valeurs()
+          vale = NP.polyval(coef, absc)
+          # paramètres
+          para = __ff.para.copy()
+          para['INTERPOL'] = ['LIN', 'LIN']
+          __ex = t_fonction(absc, vale, para)
+          coef_as_str = os.linesep.join(['   a[%d] = %f' % (i, ci) \
+                                         for i, ci in enumerate(coef)])
+          UTMESS('I', 'FONCT0_57', coef_as_str)
 
    except InterpolationError, msg:
       UTMESS('F', 'FONCT0_27', valk=(ctxt.f, str(msg)))
index dae87e78552d9114b82a938061b95d66e2e3a459..bda3c3aa1d563c6d578623ab9bb81fb8ab847a8f 100644 (file)
@@ -1,5 +1,22 @@
-#@ AJOUT calc_miss_ops Macro
+#@ MODIF calc_miss_ops Macro  DATE 29/09/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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
 
 import os
@@ -9,7 +26,8 @@ def calc_miss_ops(self, OPTION, **kwargs):
     """Macro CALC_MISS :
     Préparation des données et exécution d'un calcul MISS3D
     """
-    from Utilitai.Utmess  import UTMESS, MessageError
+    import aster
+    from Utilitai.Utmess  import UTMESS
     from Miss.miss_utils  import MISS_PARAMETER
     from Miss.miss_calcul import CalculMissFactory
     
@@ -21,15 +39,13 @@ def calc_miss_ops(self, OPTION, **kwargs):
     param = MISS_PARAMETER(initial_dir=os.getcwd(), **kwargs)
     
     # création de l'objet CALCUL_MISS_xxx
-    option_calcul = "TOUT"
-    if OPTION["TOUT"] != "OUI":
-        option_calcul = OPTION["MODULE"]
+    option_calcul = OPTION["MODULE"]
     calcul = CalculMissFactory(option_calcul, self, param)
 
     try:
         calcul.prepare_donnees()
         calcul.execute()
         calcul.post_traitement()
-    except MessageError, err:
+    except aster.error, err:
         UTMESS('F', err.id_message, valk=err.valk, vali=err.vali, valr=err.valr)
 
index 0a7a1baef69089f220ac511e515d6b8b7ffd73d7..57ee83edb7f6a96f64bc86a3bbfbdc0f75334c10 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF calc_modal_ops Macro  DATE 27/04/2009   AUTEUR NISTOR I.NISTOR 
+#@ MODIF calc_modal_ops Macro  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -21,7 +21,7 @@
 
 
 def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT,
-                        SOLVEUR,CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE,
+                        CHARGE,INST,METHODE,CALC_FREQ, MODE_RIGIDE,
                         VERI_MODE,INFO,**args):
   """
      Ecriture de la macro CALC_MODAL
@@ -58,12 +58,8 @@ def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT,
                        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)
+  _num=NUME_DDL(MATR_RIGI=_a,INFO=INFO)
   
   #assemblages des matrices 
   _rigas=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=_num)
@@ -122,7 +118,6 @@ def calc_modal_ops(self,MODELE,CHAM_MATER,CARA_ELEM,AMORTISSEMENT,
      
   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'],
index f5c598e84f90d24a856b385f9aee6769354b7fce..d11b752fe6a9ef0bf55320dd26132edfb9400f1b 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF calc_mode_rotation_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF calc_mode_rotation_ops Macro  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
index 842f7c5e3316107541627a427100b6d6174269ba..b221d7b55122a8c197edbe147166b65d9e628743 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF calc_table_ops Macro  DATE 26/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF calc_table_ops Macro  DATE 24/08/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -19,6 +19,7 @@
 # ======================================================================
 
 # RESPONSABLE COURTOIS M.COURTOIS
+import os
 
 def calc_table_ops(self, TABLE, ACTION, INFO, **args):
    """
@@ -51,7 +52,6 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args):
    DETRUIRE      = self.get_cmd('DETRUIRE')
 
    # 0. faut-il utiliser une table dérivée
-   form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)'
    if args['SENSIBILITE']:
       ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, args['SENSIBILITE'].nom)
       sdtab = table_jeveux(ncomp)
@@ -151,7 +151,8 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args):
          tab.fromfunction(occ['NOM_PARA'], occ['FORMULE'])
          if INFO == 2:
             vectval = getattr(tab, occ['NOM_PARA']).values()
-            aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' % (occ['NOM_PARA']+repr(vectval))+'\n')
+            aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' \
+                % (occ['NOM_PARA'], repr(vectval)))
 
       #----------------------------------------------
       # 8. Traitement de AJOUT
@@ -170,13 +171,12 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args):
 
    dprod = tab.dict_CREA_TABLE()
    if INFO == 2:
-      echo_mess = []
-      echo_mess.append( '@-'*30+'\n' )
-      echo_mess.append( tab )
+      echo_mess = ['']
+      echo_mess.append( repr(tab) )
       from pprint import pformat
       echo_mess.append( pformat(dprod) )
-      echo_mess.append( '@-'*30+'\n' )
-      texte_final = ' '.join(echo_mess)
+      echo_mess.append('')
+      texte_final = os.linesep.join(echo_mess)
       aster.affiche('MESSAGE', texte_final)
 
    # surcharge par le titre fourni
index ccc45840b97510838d34ccff03d37dad6e3292af..761e11778610fa198923eeef2e92d37ce0cfa73e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF creation_donnees_homard Macro  DATE 15/03/2010   AUTEUR GNICOLAS G.NICOLAS 
+#@ MODIF creation_donnees_homard Macro  DATE 18/10/2010   AUTEUR GNICOLAS G.NICOLAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # ======================================================================
 # RESPONSABLE GNICOLAS G.NICOLAS
 """
-Cette classe crée le fichier de configuration permettant de lancer HOMARD
+Cette classe cree le fichier de configuration permettant de lancer HOMARD
 depuis Code_Aster.
 """
-__revision__ = "V1.5"
+__revision__ = "V1.7"
 __all__ = [ ]
  
 import os
@@ -34,38 +34,38 @@ try:
   from Utilitai.Utmess import   UTMESS
 except ImportError:
   def UTMESS(code, idmess, valk=(), vali=(), valr=()):
-    """Clone de utmess si on ne reussit pas é le charger
+    """Clone de utmess si on ne reussit pas e le charger
     """
     fmt = '\n <%s> <%s> %s %s %s\n\n'
     print fmt % (code, idmess, valk, vali, valr)
 
 # ------------------------------------------------------------------------------
 class creation_donnees_homard:
-  """Cette classe crée les données permettant de lancer HOMARD depuis Code_Aster.
+  """Cette classe cree les donnees permettant de lancer HOMARD depuis Code_Aster.
       Ce sont :
       . le fichier de configuration
-      . le fichier des données dans le cas d'information
+      . le fichier des donnees dans le cas d'information
    
-   Arguments (stockés en tant qu'attribut) :
+   Arguments (stockes en tant qu'attribut) :
       . nom_macro : nom de la macro-commande qui appelle :
                       'MACR_ADAP_MAIL' pour une adaptation
                       'MACR_INFO_MAIL' pour une information sur un maillage
-      . mots_cles : mots-clés de la macro-commande
+      . mots_cles : mots-cles de la macro-commande
       . dico_configuration : dictionnaire des options
 
    Attributs :
       . Nom_Fichier_Configuration : nom du fichier de configuration (immuable)
-      . Nom_Fichier_Donnees : nom du fichier de données (immuable)
+      . Nom_Fichier_Donnees : nom du fichier de donnees (immuable)
       . mode_homard : le mode pour filtrer ici ("ADAP" ou "INFO")
       . mode_homard_texte : le mode d'utilisation, en francais ("ADAPTATION" ou "INFORMATION")
       . mailles_incompatibles : que faire des mailles incompatibles avec HOMARD
    """
 # ------------------------------------------------------------------------------
   def __init__(self, nom_macro, mots_cles, dico_configuration ) :
-    """Construction + valeurs par défaut des attributs
+    """Construction + valeurs par defaut des attributs
     """
 #
-# 1. Vérification de la macro qui appelle
+# 1. Verification de la macro qui appelle
 #
     d_aux = {}
     d_aux["MACR_ADAP_MAIL"] = ( "ADAP", "ADAPTATION" )
@@ -76,7 +76,7 @@ class creation_donnees_homard:
     else :
       UTMESS("F", 'HOMARD0_1')
 #
-# 2. Données générales de cette initialisation
+# 2. Donnees generales de cette initialisation
 #
 #gn    for mot_cle in mots_cles.keys() :
 #gn      print "mots_cles[", mot_cle, "] = ", mots_cles[mot_cle]
@@ -105,7 +105,7 @@ class creation_donnees_homard:
 # ------------------------------------------------------------------------------
   def int_to_str2 (self, entier) :
     """
-    Transforme un entier compris entre 0 et 99 en une chaine sur deux caractéres
+    Transforme un entier compris entre 0 et 99 en une chaine sur deux caracteres
     """
 #    print "\nArguments a l'entree de", __name__, ":", entier
 #
@@ -124,14 +124,14 @@ class creation_donnees_homard:
     return
 # ------------------------------------------------------------------------------
   def creation_configuration (self) :
-    """Crée les données nécessaires é la configuration
+    """Cree les donnees necessaires e la configuration
     """
 #
     message_erreur = None
 #
     while message_erreur is None :
 #
-#     1. Les chaines liées aux numéros d'itération
+#     1. Les chaines liees aux numeros d'iteration
 #
       if self.mode_homard == "ADAP" :
         niter = self.dico_configuration["niter"]
@@ -167,9 +167,9 @@ class creation_donnees_homard:
         self.critere_deraffinement = None
         self.niveau = []
 #
-#     4. Le type de bilan : il faut convertir la donnée textuelle en un entier,
+#     4. Le type de bilan : il faut convertir la donnee textuelle en un entier,
 #        produit de nombres premiers.
-#        Si rien n'est demandé, on met 1.
+#        Si rien n'est demande, on met 1.
 #
       aux = 1
       dico_aux = {}
@@ -188,7 +188,7 @@ class creation_donnees_homard:
         aux = 0
       self.TypeBila = aux
 #
-#     5. Les entrées/sorties au format MED
+#     5. Les entrees/sorties au format MED
 #
       self.CCNoMN__ = self.dico_configuration["NOM_MED_MAILLAGE_N"]
       if self.mode_homard == "ADAP" :
@@ -198,7 +198,7 @@ class creation_donnees_homard:
         else :
           self.CCMaiAnn = None
 #
-#     6. Les entrées/sorties au format HOMARD
+#     6. Les entrees/sorties au format HOMARD
 #
       if self.mode_homard == "ADAP" :
         self.fic_homard_niter   = "maill." + self.str_niter   + ".hom.med"
@@ -234,7 +234,7 @@ class creation_donnees_homard:
 #gn        print "... self.TypeRaff = ",self.TypeRaff
 #gn        print "... self.TypeDera = ",self.TypeDera
 #
-#     7.2. L'éventuel seuil de raffinement
+#     7.2. L'eventuel seuil de raffinement
 #
         if self.TypeRaff == "libre" and self.mots_cles["ADAPTATION"] != "RAFFINEMENT_ZONE" :
           d_aux = {}
@@ -248,7 +248,7 @@ class creation_donnees_homard:
               self.critere_raffinement = (d_aux[mot_cle][0], aux)
 #gn          print "... self.critere_raffinement = ", self.critere_raffinement
 #
-#     7.3. L'éventuel seuil de déraffinement
+#     7.3. L'eventuel seuil de deraffinement
 #
         if self.TypeDera == "libre" :
           d_aux = {}
@@ -280,7 +280,7 @@ class creation_donnees_homard:
                              ", doit etre < au niveau maxi, "+str(self.mots_cles["NIVE_MAX"])+"."
             break
 #
-#     7.5. Les éventuelles zones de raffinement
+#     7.5. Les eventuelles zones de raffinement
 #
         if self.dico_configuration.has_key("Zones_raffinement") :
           iaux = 0
@@ -330,7 +330,7 @@ class creation_donnees_homard:
     return self.fic_homard_niter, self.fic_homard_niterp1
 # ------------------------------------------------------------------------------
   def ouvre_fichier (self, nomfic_local) :
-    """Ouvre en écriture un fichier aprés l'avoir éventuellement détruit
+    """Ouvre en ecriture un fichier apres l'avoir eventuellement detruit
     """
     codret_partiel = [0]
 ###    print nomfic_local
@@ -341,7 +341,7 @@ class creation_donnees_homard:
       try :
         os.remove (nomfic)
       except os.error, codret_partiel :
-        print "Probleme au remove, erreur numéro ", codret_partiel[0], ":", codret_partiel[1]
+        print "Probleme au remove, erreur numero ", codret_partiel[0], ":", codret_partiel[1]
         UTMESS("F", 'HOMARD0_3', valk=nomfic)
 #
     fichier = open (nomfic,"w")
@@ -352,7 +352,7 @@ class creation_donnees_homard:
   def ecrire_ligne_configuration_0 (self, commentaire) :
     """Ecrit une ligne de commentaires du fichier de configuration
    Arguments :
-      . commentaire : le commentaire é écrire
+      . commentaire : le commentaire e ecrire
     """
 #
     ligne = "#\n"
@@ -411,7 +411,7 @@ class creation_donnees_homard:
 #
       fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Configuration)
 #
-#     2. Généralités
+#     2. Generalites
 #
       self.ecrire_ligne_configuration_0("Generalites")
       self.ecrire_ligne_configuration_2("ModeHOMA", self.ModeHOMA)
@@ -430,7 +430,7 @@ class creation_donnees_homard:
         self.ecrire_ligne_configuration_2("CCNoMNP1", self.CCNoMNP1)
         self.ecrire_ligne_configuration_2("CCMaiNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
 #
-      self.ecrire_ligne_configuration_0("Le répertoire des fichiers de bilan")
+      self.ecrire_ligne_configuration_0("Le repertoire des fichiers de bilan")
       self.ecrire_ligne_configuration_2("RepeInfo", self.dico_configuration["Rep_Calc_HOMARD_global"])
 #
 #     4. Les fichiers HOMARD
@@ -439,10 +439,11 @@ class creation_donnees_homard:
       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)
-        aux = "oui"
-      else :
-        aux = "non"
-      self.ecrire_ligne_configuration_2("EcriFiHO", aux)
+        if ( self.dico_configuration["niter"] == 0 ) :
+          aux = "TOUT"
+        else :
+          aux = "NP1"
+        self.ecrire_ligne_configuration_2("EcriFiHO", aux)
 #
 #     5. Le pilotage de l'adaptation
 #
@@ -466,15 +467,16 @@ class creation_donnees_homard:
           self.ecrire_ligne_configuration_0("L'indicateur d'erreur")
           self.ecrire_ligne_configuration_2("CCIndica", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
           self.ecrire_ligne_configuration_2("CCNoChaI", self.dico_configuration["Indicateur"]["NOM_MED"])
-          for saux in self.dico_configuration["Indicateur"]["COMPOSANTE"] :
-            self.ecrire_ligne_configuration_2("CCCoChaI", saux)
+          if self.dico_configuration["Indicateur"].has_key("COMPOSANTE") :
+            for saux in self.dico_configuration["Indicateur"]["COMPOSANTE"] :
+              self.ecrire_ligne_configuration_2("CCCoChaI", saux)
           if self.dico_configuration["Indicateur"].has_key("NUME_ORDRE") :
             self.ecrire_ligne_configuration_2("CCNumOrI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
             self.ecrire_ligne_configuration_2("CCNumPTI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
-          if self.mots_cles.has_key("TYPE_VALEUR_INDICA") :
-            self.ecrire_ligne_configuration_2("CCUsCmpI", self.mots_cles["TYPE_VALEUR_INDICA"])
+          if self.mots_cles.has_key("USAGE_CMP") :
+            self.ecrire_ligne_configuration_2("CCUsCmpI", self.mots_cles["USAGE_CMP"])
 #
-#     5.3. Les éventuelles zones de raffinement
+#     5.3. Les eventuelles zones de raffinement
 #
         if self.dico_configuration.has_key("Zones_raffinement") :
           dico_zone = {}
@@ -509,7 +511,7 @@ class creation_donnees_homard:
           iaux = 0
           for zone in self.dico_configuration["Zones_raffinement"] :
             iaux = iaux + 1
-            self.ecrire_ligne_configuration_0("Zone de raffinement numéro "+str(iaux))
+            self.ecrire_ligne_configuration_0("Zone de raffinement numero "+str(iaux))
             jaux = dico_zone[zone["TYPE"]]
             self.ecrire_ligne_configuration_3(dico_zone["TYPE"], iaux, jaux)
             for aux in l_aux :
@@ -523,11 +525,11 @@ class creation_donnees_homard:
 #
 #     5.5. L'usage de l'indicateur
 #
-        if self.mots_cles.has_key("TYPE_OPER_INDICA") :
-          if self.mots_cles["TYPE_OPER_INDICA"] is not None :
-            self.ecrire_ligne_configuration_2("CCModeFI", self.mots_cles["TYPE_OPER_INDICA"])
+        if self.mots_cles.has_key("USAGE_CHAMP") :
+          if self.mots_cles["USAGE_CHAMP"] is not None :
+            self.ecrire_ligne_configuration_2("CCModeFI", self.mots_cles["USAGE_CHAMP"])
 #
-#     5.6. Les éventuels groupes de filtrage du raffinement/deraffinement
+#     5.6. Les eventuels groupes de filtrage du raffinement/deraffinement
 #
         for cle in ( "GROUP_MA", "GROUP_NO" ) :
           if self.mots_cles.has_key(cle) :
@@ -544,24 +546,24 @@ class creation_donnees_homard:
           self.ecrire_ligne_configuration_2("ModDegre", self.ModDegre)
           self.ecrire_ligne_configuration_2("CreJoint", self.CreJoint)
 #
-#     5.8. L'éventuel maillage annexe
+#     5.8. L'eventuel maillage annexe
 #
         if self.CCMaiAnn is not None :
-          self.ecrire_ligne_configuration_0("Maillage d'autre degré")
+          self.ecrire_ligne_configuration_0("Maillage d'autre degre")
           self.ecrire_ligne_configuration_2("ModDegre", "oui")
           self.ecrire_ligne_configuration_2("CCNoMAnn", self.CCMaiAnn)
           self.ecrire_ligne_configuration_2("CCMaiAnn", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
 #
-#     6. Les éventuels champs à mettre à jour
+#     6. Les eventuels champs e mettre e jour
 #
       if self.dico_configuration.has_key("Champs") :
-        self.ecrire_ligne_configuration_0("Champs à mettre à jour")
+        self.ecrire_ligne_configuration_0("Champs e mettre e jour")
         self.ecrire_ligne_configuration_2("CCSolN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
         self.ecrire_ligne_configuration_2("CCSolNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
         iaux = 0
         for maj_champ in self.dico_configuration["Champs"] :
           iaux = iaux + 1
-          self.ecrire_ligne_configuration_0("Mise à jour du champ numéro "+str(iaux))
+          self.ecrire_ligne_configuration_0("Mise e jour du champ numero "+str(iaux))
           self.ecrire_ligne_configuration_3("CCChaNom", iaux, maj_champ["NOM_MED"])
           if maj_champ.has_key("NUME_ORDRE") :
             self.ecrire_ligne_configuration_3("CCChaNuO", iaux, maj_champ["NUME_ORDRE"])
@@ -569,15 +571,15 @@ class creation_donnees_homard:
           elif maj_champ.has_key("INST") :
             self.ecrire_ligne_configuration_3("CCChaIns", iaux, maj_champ["INST"])
 #
-#     7. L'éventuel suivi de frontière
+#     7. L'eventuel suivi de frontiere
 #
       SuivFron = 1
 #
-#     7.1. A partir d'un maillage de la frontière
+#     7.1. A partir d'un maillage de la frontiere
 #
       if self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") :
         SuivFron = SuivFron * 2
-        self.ecrire_ligne_configuration_0("Maillage de frontière")
+        self.ecrire_ligne_configuration_0("Maillage de frontiere")
         self.ecrire_ligne_configuration_2("CCFronti", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
         self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"])
         if self.mots_cles.has_key("GROUP_MA_FRONT") :
@@ -626,7 +628,7 @@ class creation_donnees_homard:
       if ( self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") or self.dico_configuration.has_key("Frontiere_analytique") ) :
         self.ecrire_ligne_configuration_2("SuivFron", SuivFron)
 #
-#     8. Options particuliéres
+#     8. Options particulieres
 #
       self.ecrire_ligne_configuration_0("Autres options")
       if self.mots_cles.has_key("LANGUE") :
@@ -643,7 +645,7 @@ class creation_donnees_homard:
         self.ecrire_ligne_configuration_0("Les mailles incompatibles avec HOMARD")
         self.ecrire_ligne_configuration_2("TypeElem", self.mailles_incompatibles)
 #
-#     10. L'éventuel complement
+#     10. L'eventuel complement
 #
       if self.dico_configuration.has_key("fichier_conf_suppl") :
         nomfic = self.dico_configuration["fichier_conf_suppl"]
index 3a5b8c7f74ebd2f646ea93d8569f44f74dbfb4ca..235a92a26c2e46082a620e6fafdf2d76a3c0f644 100644 (file)
@@ -1,5 +1,22 @@
-#@ AJOUT defi_sol_miss_ops Macro
+#@ MODIF defi_sol_miss_ops Macro  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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
 
 import os
index c85a589ee29d7a98fe6599c8a876cd830032127c..8e5fa7cfc75192580b95f8c68d4346f89941e896 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF dyna_iss_vari_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF dyna_iss_vari_ops Macro  DATE 18/10/2010   AUTEUR NISTOR I.NISTOR 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -86,11 +86,12 @@ def dyna_iss_vari_ops(self, NOM_CMP, PRECISION, INTERF,MATR_COHE, FREQ_INIT,UNIT
    # MAILLAGE
    nom_bamo = v_refa_rigi[0]
    nume_ddl = aster.getvectjev(nom_bamo[0:8] + '           .REFD        ' )[3]
-   nom_mail = aster.getvectjev( nume_ddl[0:19] + '.REFN        ' )[0] 
+   print 'nume ddl=',nume_ddl
+   nom_mail = aster.getvectjev( nume_ddl[0:14] + '.NUME.REFN        ' )[0] 
    maillage = sd_maillage(nom_mail)
    # MODELE, DDLGENE
    nom_ddlgene = v_refa_rigi[1]  
-   nom_modele = aster.getvectjev( nume_ddl[0:19] + '.LILI        ' )[1]   
+   nom_modele = aster.getvectjev( nume_ddl[0:14] + '.NUME.LILI        ' )[1]   
    resultat = self.get_concept(nom_bamo)
    nume_ddlgene = self.get_concept(nom_ddlgene)
    modele = self.get_concept(nom_modele[0:8])
index 1d7a334ba14c79a425b6a2a4bc8559a754d2313e..a94956a126ab201f0f6bf3cfa66c1db02520af48 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF impr_fonction_ops Macro  DATE 06/07/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF impr_fonction_ops Macro  DATE 12/07/2010   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -62,7 +62,7 @@ def impr_fonction_ops(self, FORMAT, COURBE, INFO, **args):
          aster.affiche('MESSAGE', ' Nom du fichier :'+nomfich)
    if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size!=0:
       if FORMAT=='XMGRACE':
-         niv='A'
+         niv='I'
       else:
          niv='I'
       UTMESS(niv, 'FONCT0_1', valk=nomfich)
index 19d0b349c715fddf8edaafb0449691d2d82ab830..50a98bc1ee48a1b78e2351ddc0189c8f73eb7a6e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF info_fonction_ops Macro  DATE 16/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF info_fonction_ops Macro  DATE 30/08/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,14 +22,12 @@ def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,INFO,**args):
      Ecriture de la macro INFO_FONCTION
   """
   ier=0
-  import string
   from Cata_Utils.t_fonction import t_fonction,t_fonction_c,t_nappe
   import math
   from Accas import _F
   from Utilitai.Utmess import  UTMESS
-  import types
-  from types import ListType, TupleType
-  EnumTypes = (ListType, TupleType)
+  import numpy as NP
+  from Utilitai.Table import Table
 
   ### On importe les definitions des commandes a utiliser dans la macro
   CREA_TABLE     = self.get_cmd('CREA_TABLE')
@@ -44,70 +42,107 @@ def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,INFO,**args):
   ### type de traitement
   
   ###
-  if (MAX != None): 
-     if type(MAX['FONCTION']) not in EnumTypes : l_fonc=[MAX['FONCTION'],]
-     else                                       : l_fonc=MAX['FONCTION']
-     __tmfonc=[None]*3
-     k=0
-     mfact=[]
-     ltyfo=[]
-     lpara=[]
-     lresu=[]
-     lfnom=[]
-     for fonc in l_fonc :
-        __ff=fonc.convert()
-        __ex=__ff.extreme()
-        ltyfo.append(__ff.__class__)
-        lpara.append(__ff.para['NOM_PARA'])
-        lresu.append(__ff.para['NOM_RESU'])
-        lfnom.append(fonc.nom)
-        n_mini=len(__ex['min'])
-        n_maxi=len(__ex['max'])
-        listeMCF=[_F(LISTE_K=[fonc.nom]*(n_mini+n_maxi),PARA='FONCTION'), 
-                  _F(LISTE_K=['MINI',]*n_mini+['MAXI',]*n_maxi,PARA='TYPE'),]
-        n_resu=__ff.para['NOM_RESU']
-        if isinstance(__ff,t_nappe) :
-           listeMCF=listeMCF+[\
-              _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\
-              _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_PARA_FONC']),\
-              _F(LISTE_R=[i[2] for i in __ex['min']]+[i[2] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])]
-        else :
-           listeMCF=listeMCF+[\
-                  _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\
-                  _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])]
-        __tmfonc[k]=CREA_TABLE(LISTE=listeMCF)
-        if k!=0 :
-           mfact.append(_F(OPERATION = 'COMB',TABLE=__tmfonc[k]))
-        k=k+1
-     ltyfo=dict([(i,0) for i in ltyfo]).keys()
-     lpara=dict([(i,0) for i in lpara]).keys()
-     lresu=dict([(i,0) for i in lresu]).keys()
-     if len(ltyfo)>1 : 
-# n'est pas homogène en type (fonctions et nappes) ''')
-        UTMESS('F','FONCT0_37')
-     if len(lpara)>1 : 
-# n'est pas homogène en label NOM_PARA :'''+' '.join(lpara))
-        UTMESS('F','FONCT0_38',valk=' '.join(lpara))
-     if len(lresu)>1 : 
-# n'est pas homogène en label NOM_RESU : '''+' '.join(lresu))
-        UTMESS('F','FONCT0_39',valk=' '.join(lresu))
-     __tab=CALC_TABLE(TABLE  = __tmfonc[0],
-                      ACTION = mfact        )
-     __min=CALC_TABLE(TABLE  = __tab,
-                      ACTION = _F(OPERATION = 'FILTRE',
-                                  CRIT_COMP = 'MINI',
-                                  NOM_PARA  = lresu[0]  ), )
-     __max=CALC_TABLE(TABLE  = __tab,
-                      ACTION = _F(OPERATION = 'FILTRE',
-                                  CRIT_COMP = 'MAXI',
-                                  NOM_PARA  = lresu[0]  ), )
-     print __min.EXTR_TABLE()
-     print __max.EXTR_TABLE()
-     C_out=CALC_TABLE(TABLE  = __min,
-                      TITRE  = 'Calcul des extrema sur fonction '+' '.join(lfnom),
-                      ACTION = _F(OPERATION = 'COMB',
-                                  TABLE=__max  ), )
-     print C_out.EXTR_TABLE()
+  if (MAX != None):
+      # liste des t_fonction
+      l_cofonc = MAX['FONCTION']
+      if type(l_cofonc) not in (list, tuple):
+          l_cofonc = [l_cofonc,]
+      l_fonc = [concept.convert() for concept in l_cofonc]
+      
+      # intervalles
+      mc_interv = MAX['INTERVALLE']
+      with_intervalle = mc_interv is not None
+      interv = []
+      if with_intervalle:
+          nbv = len(mc_interv)
+          if nbv % 2 != 0:
+              UTMESS('F', 'FONCT0_55')
+          tint = NP.array(mc_interv)
+          tint.shape = (nbv / 2, 2)
+          dx = tint[:,1] - tint[:,0]
+          if min(dx) < 0.:
+              UTMESS('F', 'FONCT0_56')
+          interv = tint.tolist()
+
+      # vérifications de cohérence
+      typobj = set()
+      npara = set()
+      nparf = set()
+      nresu = set()
+      l_nom = []
+      for tf in l_fonc:
+          typobj.add(tf.__class__)
+          npara.add(tf.para['NOM_PARA'])
+          nparf.add(tf.para.get('NOM_PARA_FONC'))
+          nresu.add(tf.para['NOM_RESU'])
+          l_nom.append(tf.nom)
+      if len(typobj) > 1:
+          # types (fonction, fonction_c, nappe) non homogènes
+          UTMESS('F', 'FONCT0_37')
+      is_nappe = typobj.pop() is t_nappe
+      if len(npara) > 1:
+          # NOM_PARA non homogènes
+          UTMESS('F', 'FONCT0_38', valk=' '.join(npara))
+      if len(nparf) > 1:
+          # NOM_PARA_FONC non homogènes
+          UTMESS('F', 'FONCT0_38', valk=' '.join(nparf))
+      if len(nresu) > 1:
+          # NOM_RESU non homogènes
+          UTMESS('F', 'FONCT0_39', valk=' '.join(nresu))
+      
+      # nom des paramètres et leurs types
+      k_para = npara.pop()
+      k_parf = nparf.pop()
+      k_ordo = nresu.pop()
+      k_min = k_para + "_MIN"
+      k_max = k_para + "_MAX"
+      ordered_params = ['FONCTION', 'TYPE']
+      ordered_type = ['K8', 'K8']
+      if with_intervalle:
+          ordered_params.extend(['INTERVALLE', k_min, k_max])
+          ordered_type.extend(['I', 'R', 'R'])
+      ordered_params.append(k_para)
+      ordered_type.append('R')
+      if is_nappe:
+          ordered_params.append(k_parf)
+          ordered_type.append('R')
+      ordered_params.append(k_ordo)
+      ordered_type.append('R')
+
+      # boucle sur les fonctions, intervalles, min/max, extrema
+      _type = { 'min' : 'MINI', 'max' : 'MAXI' }
+      _PREC = 1.e-6
+      tab = Table(para=ordered_params, typ=ordered_type)
+      for tf in l_fonc:
+          if not with_intervalle:
+              if not is_nappe:
+                  interv = [[float(min(tf.vale_x)), float(max(tf.vale_x))],]
+              else:
+                  interv = [[-1.e-300, 1.e300],]
+          for num_int, bornes in enumerate(interv):
+              x1, x2 = bornes
+              if not is_nappe:
+                  stf = tf.cut(x1, x2, _PREC, nom=tf.nom)
+              else:
+                  stf = tf
+              extrema = stf.extreme()
+              for key in ('min', 'max'):
+                  nb = len(extrema[key])
+                  for i in range(nb):
+                      line = { 'FONCTION' : tf.nom, 'TYPE' : _type[key],
+                          k_para : extrema[key][i][0] }
+                      if is_nappe:
+                          line.update({ k_parf : extrema[key][i][1], k_ordo :  extrema[key][i][2]})
+                      else:
+                          line.update({ k_ordo :  extrema[key][i][1]})
+                      if with_intervalle:
+                          line.update({ 'INTERVALLE' : num_int + 1,
+                                        k_min : x1, k_max : x2})
+                      tab.append(line)
+      tab.titr = "Extrema de " + ', '.join(l_nom)
+      # table résultat
+      dprod = tab.dict_CREA_TABLE()
+      C_out = CREA_TABLE(**dprod)
 
   ###
   if (ECART_TYPE  != None): 
index 5b016ad356aae99cbb90dbb54e6e829a6f767f94..0ff39ac10ca38a030cb41c5740be0441a4eda056 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_adap_mail_ops Macro  DATE 15/03/2010   AUTEUR GNICOLAS G.NICOLAS 
+#@ MODIF macr_adap_mail_ops Macro  DATE 04/10/2010   AUTEUR GNICOLAS G.NICOLAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,7 +22,7 @@
 """
 Traitement des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
 """
-__revision__ = "V1.3"
+__revision__ = "V1.4"
 #
 def macr_adap_mail_ops ( self,
                          INFO, VERSION_HOMARD, MAILLAGE_FRONTIERE,
@@ -195,7 +195,7 @@ def macr_adap_mail_ops ( self,
         lresu = 1
         dico["RESULTAT"]   = args["RESULTAT_N"]
         noresu = dico["RESULTAT"].nom
-        dico["NOM_CHAM"]   = args["INDICATEUR"]
+        dico["NOM_CHAM"]   = args["NOM_CHAM"]
         nomsym = dico["NOM_CHAM"]
         if ( args["NUME_ORDRE"] != None ) :
           dico["NUME_ORDRE"] = args["NUME_ORDRE"]
@@ -221,13 +221,13 @@ def macr_adap_mail_ops ( self,
       dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
 #gn      print "==> dico[\"NOM_MED\"] = ", dico["NOM_MED"]
 #
-      if args.has_key("NOM_CMP_INDICA") :
-        if args["NOM_CMP_INDICA"] is not None :
-          if not type(args["NOM_CMP_INDICA"]) in EnumTypes :
-            l_aux = [args["NOM_CMP_INDICA"]]
+      if args.has_key("NOM_CMP") :
+        if args["NOM_CMP"] is not None :
+          if not type(args["NOM_CMP"]) in EnumTypes :
+            l_aux = [args["NOM_CMP"]]
           else :
             l_aux = []
-            les_composantes = args["NOM_CMP_INDICA"]
+            les_composantes = args["NOM_CMP"]
             for composante in les_composantes :
               l_aux.append(composante)
           dico["COMPOSANTE"] = l_aux
@@ -557,7 +557,7 @@ def macr_adap_mail_ops ( self,
                   **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 a 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 economique ainsi !
@@ -707,7 +707,9 @@ def macr_adap_mail_ops ( self,
   for dico in liste_champs :
     dico_aux = {}
     if ( dico["Type_Champ"] == "INDICATEUR" ) :
-      l_aux = [ "NOM_MED", "COMPOSANTE" ]
+      l_aux = [ "NOM_MED" ]
+      if dico.has_key("COMPOSANTE") :
+        l_aux.append("COMPOSANTE")
       if dico.has_key("NUME_ORDRE") :
         l_aux.append("NUME_ORDRE")
       for cle in l_aux :
index 5464de33ca8868b9f8f18d55d1af870f8cdaa17b..1931bda34e5a4e34877422c817ad0c560ebf575f 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_ascouf_calc_ops Macro  DATE 22/12/2009   AUTEUR ABBAS M.ABBAS 
+#@ MODIF macr_ascouf_calc_ops Macro  DATE 14/09/2010   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -316,11 +316,11 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
   if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
     _chcont = DEFI_CONTACT( MODELE      = modele ,
                             FORMULATION = 'DISCRETE',
-                            TOLE_INTERP = -1.E-6,
                             ZONE =_F(GROUP_MA_MAIT = 'FACE1',
                                      GROUP_MA_ESCL = 'FACE2',
-                                     ALGO_CONT     = 'VERIF',
-                                     GROUP_MA_FOND = 'FONDFISS'),)
+                                     RESOLUTION    = 'NON',
+                                     TOLE_INTERP   = -1.E-6,
+                                     SANS_GROUP_MA = 'FONDFISS'),)
 #
 #     --- commande STAT_NON_LINE ---
 #
@@ -403,7 +403,6 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 #
   nomres = CALC_ELEM( reuse      = nomres,
                       RESULTAT   = nomres ,
-                      MODELE     = modele ,
                       TOUT_ORDRE = 'OUI'  ,
                       OPTION     = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
                       INFO       = INFO   ,)
index 86eb0430633bf050128d5f46cb7d6dfa042a440c..0355d1c46a4f0d73d56734f02a3ccbad14101898 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_aspic_calc_ops Macro  DATE 22/12/2009   AUTEUR ABBAS M.ABBAS 
+#@ MODIF macr_aspic_calc_ops Macro  DATE 14/09/2010   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -303,11 +303,12 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C
        mcfond = ('FONDFISS')
        _chcont = DEFI_CONTACT( MODELE      = modele ,
                             FORMULATION = 'DISCRETE',
-                            TOLE_INTERP = -1.E-6,
+                            
                             ZONE =_F(GROUP_MA_MAIT = 'LEVRCORP',
                                      GROUP_MA_ESCL = 'LEVRTUBU',
-                                     ALGO_CONT     = 'VERIF',
-                                     GROUP_MA_FOND = mcfond,),)
+                                     TOLE_INTERP   = -1.E-6,
+                                     RESOLUTION    = 'NON',
+                                     SANS_GROUP_MA = mcfond,),)
 
 #
 #     --- commande STAT_NON_LINE ---
index 30fc9ad8273eedd8299247692a5819935f930b13..6f082892ffd7be4fa74c7971b7b96348b1b47e7e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_cara_poutre_ops Macro  DATE 30/06/2008   AUTEUR FLEJOU J-L.FLEJOU 
+#@ MODIF macr_cara_poutre_ops Macro  DATE 13/09/2010   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -316,8 +316,6 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 
      __tempe1=CALC_ELEM(reuse=__tempe1,
                        RESULTAT=__tempe1,
-                       MODELE=__nomoth,
-                       CHAM_MATER=__chmath,
                        TOUT_ORDRE='OUI',
                        OPTION='FLUX_ELNO_TEMP',
                       )
@@ -763,8 +761,6 @@ def macr_cara_poutre_ops(self,MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
 
         __tempe1=CALC_ELEM(reuse=__tempe1,
                             RESULTAT=__tempe1,
-                            MODELE=__nomoth,
-                            CHAM_MATER=__chmath,
                             TOUT_ORDRE='OUI',
                             OPTION='FLUX_ELNO_TEMP',
                            )
index def648cbbd247e9c8f547d297a8c29ce8f8ff40c..d2c4d3595ccbd8907adb16e066fcf0bfb9fa7575 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_ecrevisse_ops Macro  DATE 21/04/2010   AUTEUR BOTTONI M.BOTTONI 
+#@ MODIF macr_ecrevisse_ops Macro  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -305,6 +305,7 @@ def macr_ecrevisse_ops(self,reuse,
                 **motclefs )
 
               RTHERMPJ=PROJ_CHAMP(RESULTAT=__THINIT, MODELE_1=MODELE_THER, MODELE_2=MODELE_MECA,
+                     METHODE='COLOCATION',
                      VIS_A_VIS=_F(TOUT_1='OUI', TOUT_2='OUI',),
                      INFO=2,
                       )
@@ -322,6 +323,7 @@ def macr_ecrevisse_ops(self,reuse,
 
            # Projection du champ thermique, a tous les instants sinon pas de deformations thermiques
               RTHERMPJ=PROJ_CHAMP(RESULTAT=RTHERM, MODELE_1=MODELE_THER, MODELE_2=MODELE_MECA,
+                METHODE='COLOCATION',
                 VIS_A_VIS=_F(TOUT_1='OUI', TOUT_2='OUI',),
                 INFO=2,
                  )
index d7e18ab3460bbddaaefa0191c7bffcbc39a3518a..c933d50ecbc83681b4d541c02f6937098cd1062e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_lign_coupe_ops Macro  DATE 13/04/2010   AUTEUR PELLET J.PELLET 
+#@ MODIF macr_lign_coupe_ops Macro  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -813,7 +813,7 @@ def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
 
   if NOM_CHAM[5:9]=='ELGA' : UTMESS('F','POST0_18',valk=[NOM_CHAM,])
 
-  __recou=PROJ_CHAMP(METHODE='ELEM',
+  __recou=PROJ_CHAMP(METHODE='COLOCATION',
                      RESULTAT=RESULTAT,
                      MODELE_1=MODELE_1,
                      DISTANCE_MAX=m['DISTANCE_MAX'],
index 8c9b7d66905fc81de423fc53668edc7f3ce1c449..e449c13f0e86f6d4127a5f24e51b463754e7de41 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_recal_ops Macro  DATE 26/05/2010   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF macr_recal_ops Macro  DATE 21/09/2010   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -233,7 +233,7 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC,
 
    #_____________________________________________
    #
-   # VERIFICATION PREALABLE SUR MEM_ASTER
+   # VERIFICATIONS PREALABLES
    #_____________________________________________
 
    if LANCEMENT == 'DISTRIBUTION':
@@ -269,6 +269,8 @@ def macr_recal(self, UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC,
            else:                        classe = ' -auto- '
            UTMESS('I','RECAL0_69', valk=( str(CALCUL_ESCLAVE['TEMPS']), str(CALCUL_ESCLAVE['MEMOIRE']), classe ) )
 
+   if float(PARA_DIFF_FINI) > 0.1:
+      UTMESS('A','RECAL0_76', valk=( str(PARA_DIFF_FINI) ) )
 
    #_____________________________________________
    #
index 44f99c68a2c86d78974dcc610583e5b36d892c92..17004981407de9613cf861b3b67e313f528f8c0f 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_expans_ops Macro  DATE 28/01/2010   AUTEUR BODEL C.BODEL 
+#@ MODIF macro_expans_ops Macro  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -175,7 +175,7 @@ def macro_expans_ops( self,
         nume = NUME_DDL
     if not nume :
         UTMESS('A','MEIDEE0_5')
-    RESU_RD = PROJ_CHAMP( METHODE    = 'ELEM',
+    RESU_RD = PROJ_CHAMP( METHODE    = 'COLOCATION',
                           RESULTAT   = RESU_ET,
                           MODELE_1   = MOD_CALCUL,
                           MODELE_2   = MOD_MESURE,
index c86c277515be8e50db310bdeb7d396fc7bf0e8a9..30984e882c148b167c0e31266fdb047b3cdc9cc2 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_miss_3d_ops Macro  DATE 16/02/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF macro_miss_3d_ops Macro  DATE 30/08/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -28,8 +28,9 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
      Ecriture de la macro MACRO_MISS_3D
   """
   import types
+  import aster
   from Accas import _F
-  from Utilitai.Utmess        import UTMESS, MessageError
+  from Utilitai.Utmess        import UTMESS
   from Utilitai.Table         import Table
   from Miss.miss_fichier_sol  import fichier_sol
 
@@ -88,7 +89,7 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
     tabsol = TABLE_SOL.EXTR_TABLE()
     try:
         texte = fichier_sol(tabsol)
-    except MessageError, err:
+    except aster.error, err:
         UTMESS('F', err.id_message, valk=err.valk, vali=err.vali, valr=err.valr)
     fdsol=open(pdsol,'w')
     fdsol.write(texte)
index 6da742fbf39519d067d1cafb1f1da216ac08c9ce..4d4ae7cbbdf0267ce71854b864280a942adefac4 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_mode_meca_ops Macro  DATE 06/07/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF macro_mode_meca_ops Macro  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -65,7 +65,6 @@ def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
         motscfa['FREQ']=(lborne[i],lborne[i+1])
      motscit['CALC_FREQ']=_F(OPTION          ='BANDE',
                              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'],
                              **motscfa)
index 06c667451ae1298999602edb2fd4117b470711fd..8ab6065981cf4cca29ba8b84acb87546f9bdb4ba 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF observation_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF observation_ops Macro  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -399,7 +399,8 @@ def observation_ops(self,
 #***********************************************
 
     if PROJECTION == 'OUI':
-        __proj=PROJ_CHAMP(RESULTAT = __proj,
+        __proj=PROJ_CHAMP(METHODE='COLOCATION',
+                          RESULTAT = __proj,
                           MODELE_1 = MODELE_1,
                           MODELE_2 = MODELE_2,
                           NUME_DDL = NUME_DDL,
@@ -833,7 +834,8 @@ def crea_normale(self, modele_1, modele_2,
                        );
 
 
-    __norm4 = PROJ_CHAMP( RESULTAT   = __norm3,
+    __norm4 = PROJ_CHAMP( METHODE='COLOCATION',
+                          RESULTAT   = __norm3,
                           MODELE_1   = modele_1,
                           MODELE_2   = modele_2,
                           NOM_CHAM   = 'DEPL',
diff --git a/Aster/Cata/cataSTA10/Macro/post_bordet_ops.py b/Aster/Cata/cataSTA10/Macro/post_bordet_ops.py
new file mode 100644 (file)
index 0000000..df4b153
--- /dev/null
@@ -0,0 +1,309 @@
+#@ MODIF post_bordet_ops Macro  DATE 09/08/2010   AUTEUR BARGELLINI R.BARGELLINI 
+
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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.        
+# ======================================================================
+
+#definition des fonctions python pour les passer en formule plus tard
+def nap_for_py(x,y,F):
+   return F(x,y)
+
+def maxi(x,y):
+   if x>=y :
+      return x
+   elif y>x:
+      return y
+    
+#corps de la macro
+def post_bordet_ops(self,
+TOUT,
+GROUP_MA,
+INST,
+NUME_ORDRE,
+PROBA_NUCL,
+RESULTAT,
+MODELE,
+CHAM_MATER,
+PARAM,
+TEMP,
+COEF_MULT,**args):
+   import numpy as NP
+   import aster
+   from Accas import _F
+   from SD.co_fonction import fonction_sdaster, fonction_c, nappe_sdaster
+   from Utilitai.Utmess     import  UTMESS
+
+   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
+ #
+   CREA_CHAMP = self.get_cmd('CREA_CHAMP')
+   CALC_CHAM_ELEM  = self.get_cmd('CALC_CHAM_ELEM')
+   CALC_ELEM  = self.get_cmd('CALC_ELEM')
+   CREA_TABLE  = self.get_cmd('CREA_TABLE')
+   FORMULE     =self.get_cmd('FORMULE')
+   CALC_TABLE  =self.get_cmd('CALC_TABLE')
+ #  
+ # Definition du concept sortant dans le contexte de la macro
+ #
+   self.DeclareOut('tabout', self.sd)
+
+ #
+ # Creation du dictionnaire des parametres materiau de l'utilisateur
+ #
+   __DPARAM=PARAM[0].cree_dict_valeurs(PARAM[0].mc_liste)
+
+ # on l'ajoute dans l'environnement pour pouvoir s'en servir dans les commandes
+   self.update_const_context({"""__DPARAM""" : __DPARAM})
+ #
+ #Dimension du modele
+ #
+   iret,ndim,rbid = aster.dismoi('F','DIM_GEOM',self['MODELE'].nom,'MODELE')
+   
+   if (iret==1) or (ndim==23): UTMESS('F','RUPTURE1_57')
+   
+ #
+ #Definition des formules pour le calcul de sigy plus tard
+ #
+
+   __NPY=FORMULE(NOM_PARA=('EPSI'),VALE="""nap_for_py(EPSI,__TEMPE,__DPARAM['SEUIL_CALC'])""")
+
+   __MAXI=FORMULE(NOM_PARA=('T1'),VALE="""maxi(T1,0.)""")
+
+ # on l'ajoute dans l'environnement pour pouvoir s'en servir dans les commandes
+   self.update_const_context({'nap_for_py' : nap_for_py})
+   self.update_const_context({'maxi' : maxi})
+ #
+ #Calcul des grandeurs dont on a besoin : contrainte principale, def plastique et volume du pt de gauss
+ #
+
+ #Volume point de gauss
+   __VOL_PG=CALC_CHAM_ELEM(MODELE=self['MODELE'],
+                      CHAM_MATER=self['CHAM_MATER'],
+                      TOUT='OUI',
+                      OPTION='COOR_ELGA',);
+   if GROUP_MA:
+      __VOL=__VOL_PG.EXTR_COMP('W',[GROUP_MA])
+   elif TOUT :
+      __VOL=__VOL_PG.EXTR_COMP('W',[])
+
+#contrainte principale max
+   __RESU=CALC_ELEM(
+            RESULTAT=self['RESULTAT'],
+            OPTION='EQUI_ELGA_SIGM',
+            NOM_CMP='PRIN3',);
+#deformation plastique
+   __RESU=CALC_ELEM(
+            reuse=__RESU,
+            RESULTAT=self['RESULTAT'],
+            OPTION='EPSP_ELGA',
+            );
+#            
+#Recuperation de la liste des instants et des ordres de calcul
+   __list_ordre=__RESU.LIST_VARI_ACCES()['NUME_ORDRE']
+   __list_inst=__RESU.LIST_VARI_ACCES()['INST']
+
+#
+#On va travailler en ordre ; si l'utilisateur entre un instant, on va le transformer en ordre
+   __entree_instant=None
+   if INST :
+      __entree_instant=True
+      __instant=INST
+   if __entree_instant==True:
+      if __instant not in __list_inst :
+         UTMESS('F','RUPTURE1_53',valr=__instant,valk='utilise pour le calcul de Bordet')
+      elif __instant in __list_inst :
+         index_ordre=__list_inst.index(__instant)
+         nume_ordre=__list_ordre[index_ordre]
+   elif NUME_ORDRE:
+      nume_ordre=NUME_ORDRE
+      if nume_ordre not in __list_ordre :
+         UTMESS('F','RUPTURE0_51',vali=int(nume_ordre),valk='utilise pour le calcul de Bordet')
+#
+#Pour Bordet, il nous faut les champs a tous les instants jusqu'a l'instant considere
+#
+   __S_TOT=[None for i in range(nume_ordre+1)]  #contrainte principale maximale
+   __EPSP=[None for i in range(nume_ordre+1)]   #champ de deformation plastique
+   __EP=[[None  for j in range(6)] for i in range(nume_ordre+1)]     #tenseur des deformations plastiques
+   __EPEQ=[[None for j in range(0)] for i in range(nume_ordre+1)]   #deformation plastique equivalente
+   __EPEQM=[[0.] for i in range(nume_ordre+1)]  #deformation plastique equivalente a l'instant precedent 
+   __S_BAR=[None for i in range(nume_ordre+1)]
+   __PRIN=[[None]for i in range(nume_ordre+1)]
+   __EQ_BAR=[[None] for i in range(nume_ordre+1)]
+   __EQ_PT=[[None] for i in range(nume_ordre+1)]
+   __EQ_PT2=[[None] for i in range(nume_ordre+1)]
+   __PR_BAR=[[None]for i in range(nume_ordre+1)]
+   __DEP=[[None] for i in range(nume_ordre+1)]   
+   __BORDTO=0.#valeur sans l'exposant final, que l'on va sommer sur les instants
+   __BORDTI=0.#valeur sans l'exposant final, sommee sur les instants
+   __BORDTT=[0. for i in range(nume_ordre+1)]#valeur avec l'exposant, que l'on stocke dans la table a chaque instant
+   __PROBA=[0. for i in range(nume_ordre+1)]#Probabilite de rupture par clivage
+#LISTE DES PARAMETRES
+   __sig0=__DPARAM['SEUIL_REFE']
+   __sigth=__DPARAM['SIG_CRIT']
+   __sigref=__DPARAM['SIGM_REFE']
+   __m=__DPARAM['M']
+   __V0=__DPARAM['VOLU_REFE']
+   if PROBA_NUCL=='OUI':
+      __ep0=__DPARAM['DEF_PLAS_REFE']
+   elif PROBA_NUCL=='NON':
+      __ep0=0
+   __c_mult=COEF_MULT
+#
+#On va constuire des champs a chaque instant
+#
+   if __list_ordre[0]==0:
+      __fin_ordre=nume_ordre+1
+   elif __list_ordre[0]!=0:
+      __fin_ordre=nume_ordre
+   for ordre in range(__list_ordre[0],__fin_ordre):
+#   
+#Temperature a extraire : soit une fonction du temps, soit un reel
+#
+      if type(TEMP)==fonction_sdaster:
+         __TEMPE=TEMP(__list_inst[ordre])
+      elif type(TEMP)!=fonction_sdaster:
+         __TEMPE=TEMP
+         
+         
+      self.update_const_context({'__TEMPE' : __TEMPE})
+#
+#On met ces grandeurs dans des champs specifiques
+#
+      __S_TOT[ordre]=CREA_CHAMP(TYPE_CHAM='ELGA_SIEF_R',
+                RESULTAT=__RESU,
+                OPERATION='EXTR',
+                NUME_ORDRE=ordre,
+                NOM_CHAM='EQUI_ELGA_SIGM',);
+
+      __EPSP[ordre]=CREA_CHAMP(TYPE_CHAM='ELGA_EPSI_R',
+                RESULTAT=__RESU,
+                OPERATION='EXTR',
+                NUME_ORDRE=ordre,
+                NOM_CHAM='EPSP_ELGA',);
+#
+#On recupere la valeur des champs au niveau des groupes qui nous interessent
+#    
+              
+      if GROUP_MA:
+         __PRIN[ordre]=__S_TOT[ordre].EXTR_COMP('PRIN_3',[GROUP_MA],0).valeurs;
+         
+#Pour la deformation plastique, on construit de quoi calculer sa norme de VMises
+         __EP[ordre][0]=__EPSP[ordre].EXTR_COMP('EPXX',[GROUP_MA],0).valeurs;
+         __EP[ordre][1]=__EPSP[ordre].EXTR_COMP('EPYY',[GROUP_MA],0).valeurs;
+         __EP[ordre][2]=__EPSP[ordre].EXTR_COMP('EPZZ',[GROUP_MA],0).valeurs;
+         __EP[ordre][3]=__EPSP[ordre].EXTR_COMP('EPXY',[GROUP_MA],0).valeurs;
+         if ndim==3:
+            __EP[ordre][4]=EPSP[ordre].EXTR_COMP('EPXZ',[GROUP_MA],0).valeurs;
+            __EP[ordre][5]=EPSP[ordre].EXTR_COMP('EPYZ',[GROUP_MA],0).valeurs;
+            
+      elif TOUT:
+         __PRIN[ordre]=__S_TOT[ordre].EXTR_COMP('PRIN_3',[],0).valeurs;
+         __EP[ordre][0]=__EPSP[ordre].EXTR_COMP('EPXX',[],0).valeurs;
+         __EP[ordre][1]=__EPSP[ordre].EXTR_COMP('EPYY',[],0).valeurs;
+         __EP[ordre][2]=__EPSP[ordre].EXTR_COMP('EPZZ',[],0).valeurs;
+         __EP[ordre][3]=__EPSP[ordre].EXTR_COMP('EPXY',[],0).valeurs;
+         if ndim==3:
+            __EP[ordre][4]=__EPSP[ordre].EXTR_COMP('EPXZ',[],0).valeurs;
+            __EP[ordre][5]=__EPSP[ordre].EXTR_COMP('EPYZ',[],0).valeurs;
+    
+      nval=len(__PRIN[ordre])
+      nval2=len(__EP[ordre][0])
+      if nval2!=nval: UTMESS('F','RUPTURE1_54')
+   
+
+      if ndim==3:
+         __EPEQ[ordre]=NP.sqrt(2./3.*(__EP[ordre][0]**2+__EP[ordre][1]**2+__EP[ordre][2]**2+2.*__EP[ordre][3]**2+2.*__EP[ordre][3]**2+2.*__EP[ordre][4]**2+2.*__EP[ordre][5]**2))
+      elif ndim==2:
+         __EPEQ[ordre]=NP.sqrt(2./3.*(__EP[ordre][0]**2+__EP[ordre][1]**2+__EP[ordre][2]**2+2.*__EP[ordre][3]**2))
+
+           
+#
+#Construction des champs barre et des champs de vitesse
+#
+      __EQ_PT2[__list_ordre[0]]=NP.zeros([nval])
+      __EPEQ[ordre]=NP.array(__EPEQ[ordre])
+      
+      if ordre != __list_ordre[0]:
+         dt=__list_inst[ordre]-__list_inst[ordre-1]
+         if dt==0 : UTMESS('F','RUPTURE1_55')
+         __EPEQM[ordre]=__EPEQ[ordre-1]
+         __EQ_BAR[ordre]=(__EPEQ[ordre] +__EPEQ[ordre-1])/2.
+         __EQ_PT2[ordre]=(__EPEQ[ordre]-__EPEQ[ordre-1])/(2*dt)
+         __EQ_PT[ordre]=__EQ_PT2[ordre-1]+__EQ_PT2[ordre]
+         __DEP[ordre]=__EPEQ[ordre]-__EPEQ[ordre-1]
+         __PR_BAR[ordre]=(__PRIN[ordre]+__PRIN[ordre-1])/2.
+
+         if type(__DPARAM['SEUIL_CALC'])==fonction_sdaster:
+            __sigy=__DPARAM['SEUIL_CALC'](__TEMPE)
+         elif type(__DPARAM['SEUIL_CALC'])==nappe_sdaster:
+            __EQ_PT[ordre]=list(__EQ_PT[ordre])
+            __TAB=CREA_TABLE(LISTE=(
+                                   _F(PARA='EPSI',LISTE_R=__EQ_PT[ordre],),
+                                   ),
+                            )
+            __TAB=CALC_TABLE(TABLE = __TAB,
+                             reuse =__TAB,
+                             ACTION=_F(OPERATION='OPER',
+                                       FORMULE=__NPY,
+                                       NOM_PARA='TSIGY'),)
+            __sigy=__TAB.EXTR_TABLE().values()['TSIGY']
+            __sigy=NP.array(__sigy)
+            
+         T1=__sigy/__sig0*(__PR_BAR[ordre]**__m-__sigth**__m)
+         T1=list(T1)
+         __TABT1=CREA_TABLE(LISTE=(
+                                   _F(PARA='T1',LISTE_R=T1,),
+                                   )
+                           )
+         __TABT1=CALC_TABLE(TABLE = __TABT1,
+                             reuse =__TABT1,
+                             ACTION=_F(OPERATION='OPER',
+                                       FORMULE=__MAXI,
+                                       NOM_PARA='T1BIS'),)
+
+         __T1=__TABT1.EXTR_TABLE().values()['T1BIS']
+         __T1=NP.array(__T1)
+         if PROBA_NUCL=='OUI':
+            __T2=NP.exp(-__sigy/__sig0*__EQ_BAR[ordre]/__ep0)
+         elif PROBA_NUCL=='NON':
+            __T2=1.
+         __T3=__DEP[ordre]
+         __T4=__VOL.valeurs/__V0
+         __BORDTO=NP.cumsum(__T1*__T2*__T3*__T4)[-1]
+         __BORDTI=__BORDTI+__BORDTO
+    
+      __BORDTT[ordre]=(__c_mult*__BORDTI)**(1/__m)
+      
+      if __sigref(__TEMPE)!=0.:
+         __PROBA[ordre]=1-NP.exp(-(__BORDTT[ordre]/__sigref(__TEMPE))**__m)
+      elif __sigref(__TEMPE)==0.:
+         UTMESS('F','RUPTURE1_56',valr=__list_inst[ordre])
+         
+   tabout=CREA_TABLE(LISTE=(
+                  _F(PARA='INST',LISTE_R=__list_inst[0:nume_ordre+1]),
+                  _F(PARA='SIG_BORDET',LISTE_R=__BORDTT,),
+                  _F(PARA='PROBA_BORDET',LISTE_R=__PROBA,),
+                  ),)
+   return ier    
index 40f7400436ddee623db1b32622251fc397aacf3a..8c1015ed7e884f241260e46069c63591b11db91d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_coque_ops Macro  DATE 08/02/2010   AUTEUR DESROCHES X.DESROCHES 
+#@ MODIF post_coque_ops Macro  DATE 11/10/2010   AUTEUR DESROCHES X.DESROCHES 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -50,6 +50,10 @@ def post_coque_ops(self,RESULTAT,COOR_POINT,CHAM,NUME_ORDRE,INST,
     assert AsType(RESULTAT).__name__ in ('evol_elas','evol_noli',)
     dico = RESULTAT.LIST_CHAMPS()
     dico2 = RESULTAT.LIST_VARI_ACCES()
+  # si ni INST ni NUME_ORDRE ne sont presents, on prend le premier 
+  # instant calcule 
+    if not INST and not NUME_ORDRE :
+       INST = dico2['INST'][0]
     iret,ibid,n_modele = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT')
     MODEL = self.get_concept(n_modele)
     if INST != 0.0 :
diff --git a/Aster/Cata/cataSTA10/Macro/post_decollement_ops.py b/Aster/Cata/cataSTA10/Macro/post_decollement_ops.py
new file mode 100644 (file)
index 0000000..0f0d1bf
--- /dev/null
@@ -0,0 +1,132 @@
+#@ MODIF post_decollement_ops Macro  DATE 04/10/2010   AUTEUR GREFFET N.GREFFET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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.        
+# ======================================================================
+
+########################
+
+# fonction qui renvoie une liste de 0/1 en fonction du signe des éléments de la liste listIN:
+def fctZeroUn(listIN):
+   listOUT=[]
+   for n in listIN:
+      if n>0: listOUT.append(1);
+      else: listOUT.append(0);
+   return listOUT;
+
+def post_decollement_ops(self,RESULTAT,NOM_CHAM,NOM_CMP,GROUP_MA,INFO,**args):
+  """
+     Corps de la macro POST_DECOLLEMENT
+  """
+  ier=0
+  import aster
+  import os,string,types
+  from Accas import _F
+  from Utilitai.Utmess import  UTMESS
+
+
+  ### On importe les definitions des commandes a utiliser dans la macro
+  CREA_CHAMP     = self.get_cmd('CREA_CHAMP')
+  POST_ELEM      = self.get_cmd('POST_ELEM')
+  CREA_TABLE     = self.get_cmd('CREA_TABLE')
+  POST_RELEVE_T  = self.get_cmd('POST_RELEVE_T')
+  DEFI_GROUP     = self.get_cmd('DEFI_GROUP')
+  DEFI_MATERIAU  = self.get_cmd('DEFI_MATERIAU')
+  CREA_RESU      = self.get_cmd('CREA_RESU')
+  AFFE_MODELE    = self.get_cmd('AFFE_MODELE')
+  AFFE_MATERIAU  = self.get_cmd('AFFE_MATERIAU')
+  IMPR_TABLE     = self.get_cmd('IMPR_TABLE')
+
+  ### Comptage commandes + déclaration concept sortant
+  self.set_icmd(1)
+  self.DeclareOut('C_out',self.sd)
+  
+  ### on recupere le concept maillage 
+  iret,ibid,nom_mo = aster.dismoi('F','MODELE',RESULTAT.nom,'RESULTAT')
+  iret,ibid,nom_ma = aster.dismoi('F','NOM_MAILLA',nom_mo.strip(),'MODELE')
+  MAILLAGE = self.get_concept(nom_ma.strip())
+  ### Creation du groupe de noeuds 'PDECOL'
+  DEFI_GROUP(reuse=MAILLAGE,MAILLAGE=MAILLAGE,
+             DETR_GROUP_NO= _F(NOM='PDECOL',),
+             CREA_GROUP_NO=_F(GROUP_MA=GROUP_MA,NOM='PDECOL'),
+             ALARME='NON',)
+
+  ### model restreint au GROUP_MA
+  __model=AFFE_MODELE(MAILLAGE=MAILLAGE,
+                  AFFE=_F(  GROUP_MA = GROUP_MA,PHENOMENE = 'MECANIQUE',
+                            MODELISATION = 'DKT'),)
+  
+  ### Calcul de la surface du GROUP_MA : __surf
+  __unit = CREA_CHAMP(OPERATION='AFFE',TYPE_CHAM='NOEU_NEUT_R',MODELE=__model,
+                      AFFE=_F(GROUP_NO='PDECOL',NOM_CMP='X1',VALE=1.0),)
+
+  __chpg0 = CREA_CHAMP(PROL_ZERO='OUI',MODELE=__model,OPERATION='DISC',TYPE_CHAM='ELGA_NEUT_R',
+                      CHAM_GD=__unit)
+
+  __mater0 = DEFI_MATERIAU(ELAS=_F(E=210000000.0,NU=0.3),)
+
+  __chmat0 = AFFE_MATERIAU(MODELE=__model,MAILLAGE=MAILLAGE,AFFE=_F(TOUT='OUI',MATER=__mater0),)
+
+  __resu0 = CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_ELAS',NOM_CHAM='VARI_ELGA',
+                      AFFE=_F(CHAM_MATER=__chmat0,MODELE=__model,CHAM_GD=__chpg0,INST=0.0),)
+
+  __tbSurf0 = POST_ELEM(RESULTAT=__resu0,INST=0.0,MODELE=__model,
+                       INTEGRALE=_F(NOM_CHAM='VARI_ELGA',NOM_CMP='X1',GROUP_MA=GROUP_MA),)
+
+  __surf=__tbSurf0.EXTR_TABLE().values()['INTE_X1'][0]
+
+  __linst=RESULTAT.LIST_VARI_ACCES()['INST']
+
+  ### Calcul de la surface des noeuds décollés
+  __pct=[]
+  
+  for  inst in __linst:
+
+     __dep = CREA_CHAMP(OPERATION='EXTR',RESULTAT=RESULTAT,TYPE_CHAM='NOEU_'+NOM_CHAM[:4]+'_R',
+                         INST=inst,NOM_CHAM=NOM_CHAM)
+
+     __tb1  = POST_RELEVE_T(ACTION=_F(OPERATION='EXTRACTION',GROUP_NO='PDECOL', INTITULE=GROUP_MA,
+                                      CHAM_GD=__dep,NOM_CMP=NOM_CMP),) 
+
+     __col = fctZeroUn(__tb1.EXTR_TABLE().values()[NOM_CMP])
+
+     __tb2 = CREA_TABLE(LISTE=(_F(LISTE_K=__tb1.EXTR_TABLE().values()['NOEUD'],PARA='NOEUD'),
+                               _F(LISTE_R=__col,PARA='X1'),),)
+
+     __ch = CREA_CHAMP(OPERATION='EXTR',TYPE_CHAM='NOEU_NEUT_R',TABLE=__tb2,MAILLAGE=MAILLAGE)
+     __chg = CREA_CHAMP(MODELE=__model,OPERATION='DISC',TYPE_CHAM='ELGA_NEUT_R',
+                         PROL_ZERO='OUI',CHAM_GD=__ch)
+  
+     __resu = CREA_RESU(OPERATION='AFFE',TYPE_RESU='EVOL_ELAS',NOM_CHAM='VARI_ELGA',
+                      AFFE=_F(CHAM_MATER=__chmat0,MODELE=__model,CHAM_GD=__chg,INST=0.0),)
+
+     __tb3 = POST_ELEM(RESULTAT=__resu,INST=0.0,MODELE=__model,
+                          INTEGRALE=_F(NOM_CHAM='VARI_ELGA',NOM_CMP='X1',GROUP_MA=GROUP_MA),)
+
+     __su2=__tb3.EXTR_TABLE().values()['INTE_X1'][0]
+
+     __pct.append(100.0*__su2/__surf);
+
+
+  C_out=CREA_TABLE(LISTE=(_F(LISTE_R=__linst,PARA='INST'),
+                          _F(LISTE_R=__pct,PARA='%DECOL'),),)
+  if INFO > 1:
+     IMPR_TABLE(UNITE=6,
+                TABLE=C_out)
+  return ier
index e5a282e004a666d0ef227d662de5b06d001ba767..167322e3e7ff87796f95a40b7331e68223959862 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_endo_fiss_ops Macro  DATE 31/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF post_endo_fiss_ops Macro  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -423,7 +423,7 @@ def post_endo_fiss_ops(self,
                                       PHENOMENE    = 'MECANIQUE',
                                       MODELISATION = 'BARRE'),)
 
-    __YBARPR = PROJ_CHAMP(METHODE        = 'ELEM',
+    __YBARPR = PROJ_CHAMP(METHODE        = 'COLOCATION',
                             RESULTAT     = __resu,
                             MODELE_1     = __modtot,
                             MODELE_2     = __MO,
@@ -537,7 +537,7 @@ def post_endo_fiss_ops(self,
                                      PHENOMENE    = 'MECANIQUE',
                                      MODELISATION = 'BARRE'),)
 
-    __YBARPR = PROJ_CHAMP(METHODE      = 'ELEM',
+    __YBARPR = PROJ_CHAMP(METHODE      = 'COLOCATION',
                           RESULTAT     = __resu,
                           MODELE_1     = __modtot,
                           MODELE_2     = __MO,
@@ -683,7 +683,7 @@ def post_endo_fiss_ops(self,
 
       try:
         # on essaie de projeter, exception: il n'y a pas des points "dans la matiere"
-        __YBARPR = PROJ_CHAMP(METHODE      = 'ELEM',
+        __YBARPR = PROJ_CHAMP(METHODE      = 'COLOCATION',
                               RESULTAT     = __resu,
                               MODELE_1     = __modtot,
                               MODELE_2     = __MO,
index 875a37ff227bb2854754cb469739fa13965367b4..4a02d8f67768cf67c949e14f8830a46b9e9e4a92 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_gp_ops Macro  DATE 16/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF post_gp_ops Macro  DATE 30/08/2010   AUTEUR MACOCCO K.MACOCCO 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -34,7 +34,10 @@ def post_gp_ops(self, **args):
    from Cata_Utils.t_fonction import t_fonction
    from Cata.cata             import evol_noli
    import aster
-   
+   import string
+   import numpy as NP
+   from sets import Set 
+   global DEFI_GROUP, POST_RELEVE_T, DETRUIRE
    # ----- On importe les definitions des commandes a utiliser dans la macro
    CALC_THETA    = self.get_cmd('CALC_THETA')
    CALC_G        = self.get_cmd('CALC_G')
@@ -45,13 +48,50 @@ def post_gp_ops(self, **args):
    CALC_ELEM     = self.get_cmd('CALC_ELEM')
    RECU_FONCTION = self.get_cmd('RECU_FONCTION')
    DEFI_GROUP    = self.get_cmd('DEFI_GROUP')
+   DETRUIRE      = self.get_cmd('DETRUIRE')
    FIN           = self.get_cmd('FIN')
    
+   tmp_liste_inst_postgp = []
+   
    # ----- Comptage, commandes + déclaration concept sortant
    self.set_icmd(1)
    self.DeclareOut('result', self.sd)
-   self.DeclareOut('tabresult', self['TABL_RESU'])
+   self.DeclareOut('tabresult', self['TABL_GPMAX'])
+   if (self['TABL_GP']!= None ):   
+    self.DeclareOut('tabgp', self['TABL_GP'])
+    if (self['LIST_INST']!=None) :
+     LIST_INST =  self['LIST_INST']
+     tmp_list_inst1 = aster.getvectjev(string.ljust(LIST_INST.nom,19)+'.VALE')
+     for itmp in tmp_list_inst1 :  
+      tmp_liste_inst_postgp.append(itmp)
+    if (self['INST']!=None) :
+     tmp_INST =  self['INST']
+     for jtmp in tmp_INST :
+      tmp_liste_inst_postgp.append(jtmp)
+      
+    liste_inst_postgp = list(set(tmp_liste_inst_postgp))
+    liste_inst_postgp.sort()
+
+   # ---- Recuperation du nombre d'instants deja calculés 
+   num_ord = len(NP.nonzero(aster.getvectjev(string.ljust(self['RESULTAT'].nom,19)+'.ORDR        '))[0])
+           
+   # Cas 2D
+   if self['THETA_2D'] is not None:
+      is_2D = True
+   else:
+      is_2D = False
+
    info = self['INFO']
+   type_def = self['TYPE_DEF']
+   
+   # TABLE GP à remplier pour 3D
+   liste_3d_inst =  []
+   liste_3d_lieu =  []  
+   liste_3d_icop =  []
+   liste_3d_deltal =  [] 
+   liste_3d_gp =  []
+   
+   
    
    # 0. ----- Type de calcul
    identification = self['IDENTIFICATION'] != None
@@ -85,23 +125,17 @@ def post_gp_ops(self, **args):
    nom_maillage = __MAIL[0].strip()
    
    maya = self.get_concept(nom_maillage)
+   ltyma =aster.getvectjev("&CATA.TM.NOMTM")
    
    # Excitation 
-   args={}                    
+   args={}      
    if self['EXCIT']:args={'EXCIT'   : self['EXCIT'].List_F()}
 
-   # 1. ----- calcul de G-theta
-   
-   # Cas 2D
-   if self['THETA_2D'] is not None:
-      is_2D = True
-   else:
-      is_2D = False
    
+   # 1. ----- calcul de G-theta
+
    if is_2D:
       nbcour = len(self['THETA_2D'])
-      nb_tranches = 1
-      ep_z = 1
       l_tab = []
       for occ in self['THETA_2D']:
          dMC = occ.cree_dict_valeurs(occ.mc_liste)
@@ -123,12 +157,11 @@ def post_gp_ops(self, **args):
          tab = __gtheta.EXTR_TABLE()
          
          # une Table par couronne
-         l_tab.append(tab)
-         
+         l_tab.append(tab)      
+  
    else:
       #Cas 3D
       nbcour = len(self['THETA_3D'])
-      nb_tranches = self['NB_TRANCHES']
       l_tab = []
       l_noeuds_fissure, pas = getFondFissInfo(self['FOND_FISS'])
       nb_noeuds_fissure = len(l_noeuds_fissure)
@@ -156,23 +189,51 @@ def post_gp_ops(self, **args):
 
  
          tab = __gtheta.EXTR_TABLE()
-         
+
          # une Table par couronne
          l_tab.append(tab)
 
-   
+   # 1.1.----- calcul de la mesure des mailles appartenant à l'axe de symétrie 
+   # ou au plan de symétrie
+   l_copo_tot = []
+   l_ep_copeaux_tot_3D = []
+   for tmpocc in self['TRANCHE']:
+     dMCT = tmpocc.cree_dict_valeurs(tmpocc.mc_liste)
+     for grma in dMCT['GROUP_MA'] :
+       l_copo_tot.append(grma)
+   nb_tranches = len(self['TRANCHE'])
+   #  En supposant que le nombre de copeaux est identique par tranche
+   nbcop_tot = len(l_copo_tot)
+   nbcop = nbcop_tot/nb_tranches
+     
+
+   if is_2D:
+      # Récupération des noeuds appartenant à la droite de symétrie
+      # le vecteur normal est construit comme étant perpendiculaire au vecteur direction
+       if (self['DIRECTION'][0]==1.):
+           ldirection = (0.,1.)
+       elif (self['DIRECTION'][1]==1.):
+           ldirection = (1.,0.)
+       Nds_fdfiss = dMC['GROUP_NO']
+       Recup_Noeuds_Surf(is_2D,maya,Nds_fdfiss,ldirection)
+       mesure = Calcul_mesure_2D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,self['RESULTAT'],type_def)
 
+   else:
+      # Récupération des noeuds appartenant à la surface de symétrie
+      # le vecteur normal est récuperé dans FOND_FISS
+       FOND_FISS =  self['FOND_FISS']
+       ldirection = aster.getvectjev(FOND_FISS.nom.ljust(8)+'.NORMALE              ')
+       Recup_Noeuds_Surf(is_2D,maya,l_noeuds_fissure[0],ldirection,l_noeuds_fissure)
+       mesure, l_ep_copeaux_tot_3D = Calcul_mesure_3D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,self['RESULTAT'],type_def)
+   Supr_mano(maya)
    # 2. ----- Calcul de l'energie élastique en exploitant les groupes de
    #          mailles fournis par la procedure de maillage
-
-   l_copo_tot = [grma.strip() for grma in self['GROUP_MA']]
-   nbcop_tot = len(l_copo_tot)
-   nbcop = nbcop_tot/nb_tranches
-   
-   if self['LIST_EP_COPEAUX'] is not None:
-      l_ep_copeaux_tot = self['LIST_EP_COPEAUX']
-   
+   l_ep_copeaux_tot = []
+   for it in range(num_ord):
+     for k in range(0,len(l_copo_tot)) :
+       Copeau_k = l_copo_tot[k]
+       l_ep_copeaux_tot.append(mesure[Copeau_k][it])
+   l_ep_copeaux_tot_3D=l_ep_copeaux_tot_3D*num_ord   
    l_t_enel = []
    
    if self['TRAC_COMP']=='OUI':
@@ -207,7 +268,7 @@ def post_gp_ops(self, **args):
    args={}
    if self['EXCIT']:args={'CHARGE': [charg['CHARGE'] for charg in self['EXCIT']]}
    for i in range(0,nb_tranches):
-      l_copo = l_copo_tot[i*nbcop:(i+1)*nbcop]   
+      l_copo = l_copo_tot[i*nbcop:(i+1)*nbcop]  
       
       if info >= 2 and not is_2D:
          print "<I> Calcul de la tranche %i"%(i+1)
@@ -263,8 +324,6 @@ def post_gp_ops(self, **args):
                if nomnoe not in list_no :
                   list_no.append(nomnoe)
             
-            # print "liste des noeuds de la maille ", id_elem, ": ", list_no
-            
             l_inst = T_el[kk].INST.values()
             nb_inst = len(l_inst)
             
@@ -381,21 +440,22 @@ def post_gp_ops(self, **args):
       l_numord = list(set(t_enel.NUME_ORDRE.values()))
       l_numord.sort()
 
-      if self['PAS_ENTAILLE'] is not None:
-         t_enel.fromfunction('DELTAL', fDL, 'ICOP', { 'pascop' : self['PAS_ENTAILLE'] })
-      else:
-         l_ep_copeaux_tranche = l_ep_copeaux_tot[i*nbcop:(i+1)*nbcop]
-         t_enel['DELTAL'] = l_ep_copeaux_tranche*len(l_numord)
-
+      l_ep_copeaux_tranche=[]
+      for it in range(num_ord):
+        l_ep_copeaux_tranche = l_ep_copeaux_tranche + l_ep_copeaux_tot[i*nbcop+it*nbcop*nb_tranches:(i+1)*nbcop+it*nbcop*nb_tranches]
+      l_ep_copeaux_tranche_3D = l_ep_copeaux_tot_3D[i*nbcop:(i+1)*nbcop]
+      
       # 2.2. ----- Calcul de Gp fonction de Ener.Totale et de deltaL
-      if is_2D:
+      if is_2D: 
+         t_enel['DELTAL'] = l_ep_copeaux_tranche
          t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'DELTAL'),
             {'syme'   : self['SYME_CHAR'] != 'SANS',
              'R'      : self['RAYON_AXIS'],})
       else:
-         ep_tranche = largeur_tranche(nom_maillage, l_noeuds_fissure, pas, i)
-         #print "ep_tranche %i: "%i, ep_tranche
-         t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'DELTAL'),
+         ep_tranche=1
+         t_enel['MESURE'] = l_ep_copeaux_tranche
+         t_enel['DELTAL'] = l_ep_copeaux_tranche_3D*len(l_numord)
+         t_enel.fromfunction('GP', fGp_Etot, ('TOTALE', 'MESURE'),
                {'syme'   : self['SYME_CHAR'] != 'SANS',
                 'R'      : ep_tranche })
       
@@ -403,13 +463,24 @@ def post_gp_ops(self, **args):
       #   print "Table de l'énergie élastique: ", t_enel
       
       l_t_enel.append(t_enel)
-      # 2.3. ----- Tableau de Gp = f(icop) pour chaque instant
+      
+      # 2.3. ----- Tableau de Gp = f(icop) pour chaque instant    
+      
+###############################################################################################
+# BESOIN D4AFFICHE TABLEAU GP pour chque instant dans fichier mess      
+#      print "####Dana_tGp_t_icop####"
+#      Dana_tGp_t_icop = t_enel['INST', 'LIEU', 'ICOP', 'DELTAL', 'GP']
+#      Dana_tGp_t_icop.titr = "Dana Gp à chaque instant en fonction de la distance au " \
+#                          "fond d'entaille"
+#      Dana_tGp_t_icop.ImprTableau()
+###############################################################################################
+                  
       if info >= 2:
          tGp_t_icop = t_enel['INST', 'DELTAL', 'GP']
          tGp_t_icop.titr = "Gp à chaque instant en fonction de la distance au " \
                            "fond d'entaille"
          tGp_t_icop.ImprTabCroise()
-   
       # 2.4. ----- Table Gpmax
       ttmp = t_enel['NUME_ORDRE', 'INST', 'ICOP', 'DELTAL', 'GP']
 
@@ -436,7 +507,6 @@ def post_gp_ops(self, **args):
          else:
             tb_Gpmax_i = tb_Gpmax_i | t
       
-      
       tb_Gpmax_i.Renomme('GP', 'GPMAX')
       tb_Gpmax_i.Renomme('ICOP', 'ICOPMAX')
       tb_Gpmax_i.Renomme('DELTAL', 'DELTALMAX')
@@ -473,6 +543,17 @@ def post_gp_ops(self, **args):
       else:
          tb_Gpmax = merge(tb_Gpmax, tb_Gpmax_i)
    
+      # 2.5. ----- POUR LE CAS DE 3D
+      # RECUPERE LES INFOS NECESSAIRE POUR LA CREATION DU TABLEAU GP (ie TABL_GP)Tableau de Gp = f(icop) pour chaque instant      
+      if not is_2D:       
+       
+        for kocc in range(len(t_enel['INST'].values()['INST'])) :
+          liste_3d_inst.append(t_enel['INST'].values()['INST'][kocc])
+          liste_3d_lieu.append(t_enel['LIEU'].values()['LIEU'][kocc])
+          liste_3d_icop.append(t_enel['ICOP'].values()['ICOP'][kocc])
+          liste_3d_deltal.append(t_enel['DELTAL'].values()['DELTAL'][kocc])
+          liste_3d_gp.append(t_enel['GP'].values()['GP'][kocc])
+
    # FIN BOUCLE SUR LES TRANCHES
    
    if not is_2D:
@@ -496,9 +577,10 @@ def post_gp_ops(self, **args):
          grno_fond = "GRNOFOND"
          DEFI_GROUP(reuse =maya,
                     MAILLAGE=maya,
+                    DETR_GROUP_NO= _F(NOM=grno_fond,),
                     CREA_GROUP_NO=_F(GROUP_MA=grma_fond,
                                      NOM=grno_fond,),);
-      
+       
       l_ordres = DEFI_LIST_ENTI(VALE=l_numord)
       __relev = POST_RELEVE_T(ACTION=_F(RESULTAT=self['RESU_THER'],
                                         OPERATION='EXTRACTION',
@@ -507,7 +589,7 @@ def post_gp_ops(self, **args):
                                         LIST_ORDRE=l_ordres,
                                         NOM_CMP='TEMP',
                                         GROUP_NO=grno_fond,),)
-
       t_relev = __relev.EXTR_TABLE()['NUME_ORDRE', 'NOEUD', 'TEMP']
    
    # 3. ----- boucle sur les mots-clés facteurs
@@ -585,7 +667,7 @@ def post_gp_ops(self, **args):
          # on l'ajoute dans la table aux noeuds tabres avec la convention:
          # au 1er noeud et noeud milieu de la tranche on affecte la valeur de la tranche
          # sauf pour la derniere tranche où on affecte la valeur sur les 3 noeuds de la tranche
-         tabres = tabK_G         
+         tabres = tabK_G
          tabres = merge(tabK_G, tb_Gpmax_noeuds, ['NUME_ORDRE', 'NOEUD'])
          tabres['OCCURRENCE'] = [iocc + 1] * len(l_numord) * nb_noeuds_fissure
       #if info >= 2:
@@ -611,10 +693,11 @@ def post_gp_ops(self, **args):
       if identification:
          KJ_CRIT = l_crit[iocc]
          # on verifie que KJ_CRIT soit compris dans l'intervalle [KMOY_min, KMOY_max]
-         valkmoy = tabres.KMOY.values()            
+         valkmoy = tabres.KMOY.values()
+         message_kjcritique_non_atteint = 0
          if not (min(valkmoy) <= KJ_CRIT <= max(valkmoy)):
-#                               'constant utilisé).')
             UTMESS('A','RUPTURE0_1')
+            message_kjcritique_non_atteint = 1
          if is_2D:
             # définition des fonctions pour faire les interpolations
             d_para.update({ 'NOM_RESU' : 'DELTALMAX' })
@@ -623,7 +706,7 @@ def post_gp_ops(self, **args):
             # Gpmax fonction du temps
             d_para.update({ 'NOM_RESU' : 'GPMAX' })
             fGp = t_fonction(tb_Gpmax.INST.values(), tb_Gpmax.GPMAX.values(), d_para)
-            
+
             d_para.update({ 'NOM_PARA' : 'KMOY',
                            'NOM_RESU' : 'INST', })
             valkmoy = tabres.KMOY.values()
@@ -633,16 +716,34 @@ def post_gp_ops(self, **args):
             # valeurs à mettre dans la table
             # temps correspondant à KJ_CRIT
             ti   = finv(KJ_CRIT)
+            
             # GP correspondant au temps critique
-            Gpi  = fGp(ti)
+            if (message_kjcritique_non_atteint == 1) :
+              Gpi     = '-'
+              kgpcrit = '-'
+              dLcrit  = '-'
+              message = 'KJ CRITIQUE NON ATTEINT'
+              type_tab_ident=('R', 'R', 'K8', 'K8', 'K8', 'K24' )
+      
+            else :
+              Gpi  = fGp(ti)
+              kgpcrit = fKj(Gpi, **dict_constantes)
+              dLcrit  = fdL(ti)
+              message = 'KJ CRITIQUE ATTEINT'    
+              type_tab_ident=('R', 'R', 'R', 'R', 'R', 'K24' )
+
+      
             d_ident = {
-               'KJ_CRIT'   : KJ_CRIT,
-               'INST'      : ti,
-               'GPMAX'     : Gpi,
-               'KGPMAX'    : fKj(Gpi, **dict_constantes),
-               'DELTALMAX' : fdL(ti),
-            }
+               'KJ_CRIT'     : KJ_CRIT,
+               'INST'        : ti,
+               'GP_CRIT'     : Gpi,
+               'KGP_CRIT'    : kgpcrit,
+               'DELTALCRIT'  : dLcrit,
+               'MESSAGE'     : message
+             }
             lv_ident.append(d_ident)
+
+
          else:
             
             l_i_noeuds_sommets = range(0,len(l_noeuds_fissure),pas)
@@ -709,19 +810,33 @@ def post_gp_ops(self, **args):
             # valeurs à mettre dans la table
             # temps correspondant a KJ_CRIT
             ti   = finv(KJ_CRIT)
+
+            if (message_kjcritique_non_atteint == 1) :
+               Gpi     = '-'
+               kgpcrit = '-'
+               dLcrit  = '-'
+               message = 'KJ CRITIQUE NON ATTEINT'
+               type_tab_ident=('R', 'R', 'I', 'K8', 'K8', 'K8', 'K24' ) 
+            else :
             # GP correspondant au temps critique
-            Gpi  = fGp(ti)
-            # par rapport a 2D, on ajoute 'NUME_TRANCHE'
+               Gpi  = fGp(ti)
+               kgpcrit = fKj(Gpi, **dict_constantes)
+               dLcrit  = fdL(ti)
+               message = 'KJ CRITIQUE ATTEINT'
+               type_tab_ident=('R', 'R', 'I', 'R', 'R', 'R', 'K24' )
+
+             # par rapport a 2D, on ajoute 'NUME_TRANCHE'
             d_ident = {
-               'KJ_CRIT'      : KJ_CRIT,
-               'INST'         : ti,
-               'NUME_TRANCHE' : int(nume_tranche_Gpmax),
-               'GPMAX'        : Gpi,
-               'KGPMAX'       : fKj(Gpi, **dict_constantes),
-               'DELTALMAX'    : fdL(ti),
-            }
+               'KJ_CRIT'     : KJ_CRIT,
+               'INST'        : ti,
+               'NUME_TRANCHE': int(nume_tranche_Gpmax),
+               'GP_CRIT'     : Gpi,
+               'KGP_CRIT'    : kgpcrit,
+               'DELTALCRIT'  : dLcrit,
+               'MESSAGE'     : message
+              }
             lv_ident.append(d_ident)
-            
+
       # 3.6.2. --- prédiction
       else:
          pass
@@ -730,12 +845,12 @@ def post_gp_ops(self, **args):
    # 4.1. --- identification
    if identification:
       if is_2D:
-         para_tab_ident=('KJ_CRIT', 'INST', 'GPMAX', 'KGPMAX', 'DELTALMAX')
+          para_tab_ident=('KJ_CRIT', 'INST', 'GP_CRIT', 'KGP_CRIT', 'DELTALCRIT', 'MESSAGE' )
       else:
-         para_tab_ident=('KJ_CRIT', 'INST', 'NUME_TRANCHE', 'GPMAX', 'KGPMAX', 'DELTALMAX')
+         para_tab_ident=('KJ_CRIT', 'INST', 'NUME_TRANCHE', 'GP_CRIT', 'KGP_CRIT', 'DELTALCRIT','MESSAGE')
       tab_ident = Table(rows=lv_ident,
                         para=para_tab_ident,
-                        typ = ('R')*len(para_tab_ident),
+                        typ = type_tab_ident,
                         titr='Identification aux valeurs de tenacités critiques')
       dprod_result = tab_ident.dict_CREA_TABLE()
       if info >= 2:
@@ -777,6 +892,117 @@ def post_gp_ops(self, **args):
    result = CREA_TABLE(**dprod)
    tabresult = CREA_TABLE(**dprod_result)
 
+   # 9. ----- création de la table_sdaster tabgp   
+   if (self['TABL_GP']!= None ):
+     
+     temps_agarde_gp = []
+     lv_tabgp = []
+     
+     # CAS 2D
+     if is_2D : 
+       
+       # verifier si la liste d'instant definie par POST_GP est inclus dans la liste d'instant de STAT_NON_LINE
+       if (self['LIST_INST']!=None) :
+
+         liste_2d_inst_reduit = []
+         liste_2d_inst_reduit = dict().fromkeys(t_enel['INST'].values()['INST']).keys()
+
+         temps_agarde_gp = Save_VALGP_DE_LISTINST (liste_inst_postgp,liste_2d_inst_reduit, t_enel['INST'].values()['INST'])
+
+         for i in temps_agarde_gp : 
+           d_tabgp = {
+               'INST'   : t_enel['INST'].values()['INST'][i],
+               'GROUP_MA'   : t_enel['LIEU'].values()['LIEU'][i],
+               'NUMERO_COP'   : t_enel['ICOP'].values()['ICOP'][i],
+               'DELTAL' : t_enel['DELTAL'].values()['DELTAL'][i],
+               'GP' : t_enel['GP'].values()['GP'][i],
+                }
+           lv_tabgp.append(d_tabgp)
+
+       # si la liste d'instant de POST_GP n'est pas definie        
+       else :
+       
+         temps_agarde_gp = t_enel['INST'].values()['INST']    
+       
+         for i in range(len(temps_agarde_gp)) : 
+           d_tabgp = {
+               'INST'   : t_enel['INST'].values()['INST'][i],
+               'GROUP_MA'   : t_enel['LIEU'].values()['LIEU'][i],
+               'NUMERO_COP'   : t_enel['ICOP'].values()['ICOP'][i],
+               'DELTAL' : t_enel['DELTAL'].values()['DELTAL'][i],
+               'GP' : t_enel['GP'].values()['GP'][i],
+              }
+           lv_tabgp.append(d_tabgp)
+
+       texte = 'GP 2D pour chaque instant'
+       
+     # CAS 3D
+     else :
+       # verifier si la liste d'instant definie par POST_GP est inclus dans la liste d'instant de STAT_NON_LINE
+       if (self['LIST_INST']!=None) :
+
+         liste_3d_inst_reduit = []
+         liste_3d_inst_reduit = dict().fromkeys(liste_3d_inst).keys()
+
+         temps_agarde_gp = Save_VALGP_DE_LISTINST (liste_inst_postgp,liste_3d_inst_reduit,liste_3d_inst)
+
+         for i in temps_agarde_gp : 
+           d_tabgp = {
+               'INST'   : liste_3d_inst[i],
+               'GROUP_MA'   : liste_3d_lieu[i],
+               'NUMERO_COP'   : liste_3d_icop[i],
+               'DELTAL' : liste_3d_deltal[i],
+               'GP' : liste_3d_gp[i],
+              }    
+           lv_tabgp.append(d_tabgp)
+       # si la liste d'instant de POST_GP n'est pas definie 
+       else :
+         inst_agarde_gp = []
+         inst_agarde_gp = liste_3d_inst      
+         inst_agarde_gp.sort()
+
+         inst_sauv = []
+         # réorganisation
+         for j in range(len(inst_agarde_gp)) :
+          if j < len(inst_agarde_gp)-1 :
+           if (inst_agarde_gp[j] != inst_agarde_gp[j+1]) :
+            inst_sauv.append(inst_agarde_gp[j])
+         inst_sauv.append(inst_agarde_gp[len(inst_agarde_gp)-1])
+
+         temps_agarde_gp_inst_sauv = []
+         for tmp_inst_sauv in inst_sauv :
+           compteur_inst_sauv = 0
+           for tmp_liste_3d_inst in liste_3d_inst:
+             if (tmp_inst_sauv == tmp_liste_3d_inst) :
+               temps_agarde_gp_inst_sauv.append(compteur_inst_sauv)
+             compteur_inst_sauv = compteur_inst_sauv + 1
+
+         for i in temps_agarde_gp_inst_sauv :
+           d_tabgp = {
+               'INST'   : liste_3d_inst[i],
+               'GROUP_MA'   : liste_3d_lieu[i],
+               'NUMERO_COP'   : liste_3d_icop[i],
+               'DELTAL' : liste_3d_deltal[i],
+               'GP' : liste_3d_gp[i],
+                }
+           lv_tabgp.append(d_tabgp)
+       texte = 'GP 3D pour chaque instant'
+     
+     
+#    Creation du tableau Gp 2D ou 3D     
+     para_tab_tabgp=('INST', 'GROUP_MA', 'NUMERO_COP', 'DELTAL', 'GP')
+     liste_tab_tabgp = ('R','K8','I','R','R')
+
+     tab_tabgp = Table(rows=lv_tabgp,
+                       para=para_tab_tabgp,
+                       typ = liste_tab_tabgp,
+                       titr= texte)
+
+
+     dprod_tabgp = tab_tabgp.dict_CREA_TABLE()
+     tabgp = CREA_TABLE(**dprod_tabgp)
 
 
 # -----------------------------------------------------------------------------
@@ -907,7 +1133,7 @@ def largeur_tranche(nom_maillage, l_noms_noeuds_fissure, pas, i_tranche):
    
    d=sqrt( (coor1[0]-coor2[0])**2+(coor1[1]-coor2[1])**2+(coor1[2]-coor2[2])**2)
    return d
-   
+
 def mergeLineInTable(multiTable, lineTable, nb_noeuds):
    # on ajoute a la table multiTable les colonnes de lineTable
    # pour chaque nume_ordre autant de fois qu'il y a de nb_noeuds
@@ -928,3 +1154,348 @@ def mergeLineInTable(multiTable, lineTable, nb_noeuds):
          newTable = merge(newTable, multiTable_i)
          
    return newTable
+
+def CalDist(coor_nd,deform,coor_nds,deforms):
+   # on calcule la distance du noeud 1 aux autres noeuds
+   
+   import numpy as NP
+   
+   nbr_noeuds = len(coor_nds)
+   if nbr_noeuds == 1:
+      dist_min = NP.sqrt((coor_nds[0][0]+deforms[0][0]-coor_nd[0]-deform[0])**2 + 
+                      (coor_nds[0][1]+deforms[0][1]-coor_nd[1]-deform[1])**2 +
+                      (coor_nds[0][2]+deforms[0][2]-coor_nd[2]-deform[2])**2)
+   else:
+     dist_min = NP.sqrt((coor_nds[0][0]+deforms[0][0]-coor_nd[0]-deform[0])**2 + 
+                        (coor_nds[0][1]+deforms[0][1]-coor_nd[1]-deform[1])**2 +
+                        (coor_nds[0][2]+deforms[0][2]-coor_nd[2]-deform[2])**2)
+     for inds in range(1,nbr_noeuds):
+       dist = NP.sqrt((coor_nds[inds][0]+deforms[inds][0]-coor_nd[0]-deform[0])**2 + 
+                      (coor_nds[inds][1]+deforms[inds][1]-coor_nd[1]-deform[1])**2 +
+                      (coor_nds[inds][2]+deforms[inds][2]-coor_nd[2]-deform[2])**2)
+       if dist < dist_min : dist_min = dist
+   return dist_min
+   
+def CalSurf(coord_noeuds,deformation):
+   # on calcule la surface deformee
+   
+   dAB = CalDist(coord_noeuds[1],deformation[1],[coord_noeuds[0]],[deformation[0]])
+   dBC = CalDist(coord_noeuds[2],deformation[2],[coord_noeuds[1]],[deformation[1]])
+   dCD = CalDist(coord_noeuds[3],deformation[3],[coord_noeuds[2]],[deformation[2]])                 
+   dDA = CalDist(coord_noeuds[0],deformation[0],[coord_noeuds[3]],[deformation[3]])
+
+   mesure = (dAB+dCD)/2.*(dBC+dDA)/2.
+         
+   return mesure
+
+#-------------------------------------------------------------
+def Recup_Noeuds_Surf(is_2D,maya,var1,var2,var3=None):
+   
+      # Récupération des noeuds appartenant à la surface de symétrie
+      from Accas import _F
+      dicma=[]
+      dicma.append({'NOM' : 'Nds_Plan'})
+      DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicma);
+      dicma=[]
+      dicma.append({'NOM' : 'Nds_Plan', 'OPTION' : 'PLAN', 'VECT_NORMALE' : var2, 'PRECISION' : 1e-6})
+      if is_2D:
+        dicma[0].__setitem__('GROUP_NO_CENTRE' , var1)
+        DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma);
+      else:
+        dicma[0].__setitem__('NOEUD_CENTRE' , var1)
+        DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma);
+        dicma=[]
+        dicma.append({'NOM' : 'Nds_Fond', 'NOEUD' : var3 })
+        DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma);
+
+def Recup_Noeuds_Copeaux(is_2D,maya,Copeau_k):
+   
+      # Récupération des noeuds appartenant à la surface de symétrie
+      # et aux copeaux
+      from Accas import _F
+      dicma=[];
+      dicma.append(_F(NOM = Copeau_k))
+      dicma.append(_F(NOM = 'Cop_Pl'))
+      DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicma);
+
+      dicma=[];
+      dicma.append(_F(NOM = Copeau_k , GROUP_MA = Copeau_k));
+      dicma.append(_F(NOM = 'Cop_Pl' , INTERSEC = (Copeau_k,'Nds_Plan',)));
+      DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma);
+
+
+def Recup_2D(maya,C_k):
+
+   from Accas import _F
+   if C_k==0:
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan' })
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma)
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma)
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : ('Mai_Plan')})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma)
+   else:
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla1' })
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla1', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan', 'DIFFE' : ('Mai_Pla1','Mai_Pla2')})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),       
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2', 'UNION' : ('Mai_Pla1','Mai_Plan')})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma)
+      
+def Recup_3D(maya,C_k):
+
+   from Accas import _F
+   if C_k==0:
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan' })
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : ('Mai_Plan')})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),       
+
+
+       dicma=[]
+       dicma.append(_F(NOM = 'Nds_Delt'))
+       dicma.append(_F(NOM = 'Nds_Floc'))
+       dicma.append(_F(NOM = 'Mai_Plan'))
+       DEFI_GROUP(reuse =maya,MAILLAGE=maya,DETR_GROUP_NO=dicma,);
+
+       dicma=[]
+       dicma.append(_F(NOM = 'Mai_Plan',GROUP_MA='Mai_Plan'))
+       dicma.append(_F(NOM = 'Nds_Delt',INTERSEC=('Nds_Fond','Mai_Plan')))
+       dicma.append(_F(NOM = 'Nds_Floc',GROUP_NO='Nds_Delt'))
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_NO=dicma);
+
+   else :
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla1' })
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla1', 'OPTION' : 'APPUI', 'GROUP_NO' : 'Cop_Pl', 'TYPE_APPUI' : 'TOUT'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Plan', 'DIFFE' : ('Mai_Pla1','Mai_Pla2')})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma),       
+       dicma=[]
+       dicma.append(_F(NOM = 'Nds_Delt'))
+       dicma.append(_F(NOM = 'Mai_Plan'))
+       dicma.append(_F(NOM = 'Mai_Pla2'))
+       DEFI_GROUP(reuse =maya,MAILLAGE=maya,DETR_GROUP_NO=dicma,);
+       dicma=[]
+       dicma.append(_F(NOM = 'Mai_Plan', GROUP_MA ='Mai_Plan'))
+       dicma.append(_F(NOM = 'Mai_Pla2', GROUP_MA ='Mai_Pla2'))
+       dicma.append(_F(NOM = 'Nds_Delt', INTERSEC = ('Mai_Pla2','Mai_Plan')))
+       DEFI_GROUP(reuse =maya,MAILLAGE=maya,CREA_GROUP_NO=dicma);
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_MA=dicma),
+       dicma=[]
+       dicma.append({'NOM' : 'Mai_Pla2', 'GROUP_MA' : 'Mai_Pla1'})
+       DEFI_GROUP(reuse =maya, MAILLAGE=maya, CREA_GROUP_MA=dicma);
+
+
+def Calcul_mesure_2D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,resu,type_def):
+   # Calcul de la mesure des mailles déformées ou non 
+   # appartenant à l'axe de symétrie
+      
+   import numpy as NP
+
+   mesure = {}     
+   for C_k in range(nbcop) :
+        Copeau_k = l_copo_tot[C_k]
+        Recup_Noeuds_Copeaux(True,maya,Copeau_k)
+        Recup_2D(maya,C_k)
+        if C_k==0:
+          mesure[Copeau_k] = NP.zeros(num_ord)
+        else:
+          mesure[Copeau_k] = mesure[l_copo_tot[C_k-1]]
+          
+        # Calcul de la surface des mailles du copeau courant pour chaque instant
+        mon_nom = 'Mai_Plan'
+        tmp_mesure = NP.zeros(num_ord)
+        for maille_courante in maya.GROUPEMA.get()[mon_nom.ljust(8)]:
+          if ltyma[maya.TYPMAIL.get()[maille_courante]][0:3]=='SEG':
+            connexe = maya.CONNEX.get()[maille_courante]
+            coord_nds = []
+            deforme=[]
+            DEP_el = [None]*2
+            for i in range(0,2):
+               tab_DEP_el = Coord_Recup(maya.NOMNOE.get()[connexe[i]-1],maya.NOMMAI.get()[maille_courante],resu)
+               coord_nds.append((tab_DEP_el.COOR_X.values(),tab_DEP_el.COOR_Y.values()))
+               deforme.append((tab_DEP_el.DX.values(),tab_DEP_el.DY.values()))       
+
+            if type_def=='GRAND':
+              for it in range(num_ord):
+                Coor_int=[]
+                Def_int=[]
+                for i in range(0,2):
+                  Coor_int.append((coord_nds[i][0][it],coord_nds[i][1][it]))
+                  Def_int.append((deforme[i][0][it],deforme[i][1][it]))
+                tmp_mesure[it] = mesure[Copeau_k][it] + NP.sqrt((Coor_int[0][0]+Def_int[0][0]-Coor_int[1][0]-Def_int[1][0])**2 + 
+                                 (Coor_int[0][1]+Def_int[0][1]-Coor_int[1][1]-Def_int[1][1])**2 )
+            
+              mesure[Copeau_k] = tmp_mesure
+    
+            else:
+              mesure[Copeau_k] = NP.sqrt((coord_nds[0][0][0]-coord_nds[1][0][0])**2 + (coord_nds[0][1][0]-coord_nds[1][1][0])**2 ) + mesure[Copeau_k]
+   return mesure
+       
+def Calcul_mesure_3D(is_2D,maya,nbcop,num_ord,l_copo_tot,ltyma,resu,type_def):
+   # Calcul de la mesure des mailles déformées ou non 
+   # appartenant à l'axe de symétrie
+
+   import numpy as NP
+   
+   mesure={}
+   l_ep_copeaux_tot_3D = [] 
+   for C_k in range(len(l_copo_tot)) :
+
+       Copeau_k = l_copo_tot[C_k]
+       Recup_Noeuds_Copeaux(False,maya,Copeau_k)
+       Recup_3D(maya,C_k%nbcop)
+
+       if C_k%nbcop==0:
+          coord_fond = []
+          for noeud_courant in maya.GROUPENO.get()['Nds_Floc'.ljust(8)]:
+               tab_DEP_el = Coord_Recup(maya.NOMNOE.get()[noeud_courant-1],None,resu)
+               coord_fond.append((tab_DEP_el.COOR_X.values()[0],tab_DEP_el.COOR_Y.values()[0],tab_DEP_el.COOR_Z.values()[0]))
+               
+          mesure[Copeau_k] = NP.zeros(num_ord)
+       else :
+          mesure[Copeau_k] = mesure[l_copo_tot[C_k-1]]
+
+       # Calcul de la surface des mailles du copeau courant pour chaque instant
+       mon_nom = 'Mai_Plan'
+       tmp_mesure = NP.zeros(num_ord)
+       for maille_courante in maya.GROUPEMA.get()[mon_nom.ljust(8)]:
+           if ltyma[maya.TYPMAIL.get()[maille_courante]][0:4]=='QUAD':
+               connexe = maya.CONNEX.get()[maille_courante]
+               coord_nds = []
+               deforme=[]
+               DEP_el = [None]*4
+               for i in range(0,4):
+                   tab_DEP_el = Coord_Recup(maya.NOMNOE.get()[connexe[i]-1],maya.NOMMAI.get()[maille_courante],resu)
+                   coord_nds.append((tab_DEP_el.COOR_X.values(),tab_DEP_el.COOR_Y.values(),
+                                   tab_DEP_el.COOR_Z.values()))
+                   deforme.append((tab_DEP_el.DX.values(),tab_DEP_el.DY.values(),
+                                   tab_DEP_el.DZ.values()))  
+
+               if type_def=='GRAND':
+                   for it in range(num_ord):
+                       Coor_int=[]
+                       Def_int=[]
+                       for i in range(0,4):
+                           Coor_int.append((coord_nds[i][0][it],coord_nds[i][1][it],coord_nds[i][2][it]))
+                           Def_int.append((deforme[i][0][it],deforme[i][1][it],deforme[i][2][it]))
+                       tmp_mesure[it] = mesure[Copeau_k][it] + CalSurf(Coor_int,Def_int)
+                   mesure[Copeau_k] = tmp_mesure
+               else:
+                   mesure[Copeau_k] = CalSurf(coord_nds,[tuple(NP.zeros(3))]*len(coord_nds)) + mesure[Copeau_k]
+            
+       # Calcul de la distance du copeau au fond d'entaille
+       coord_nds = [] 
+       dist_moy=0. 
+       for noeud_courant in maya.GROUPENO.get()['Nds_Delt'.ljust(8)]:
+            tab_DEP_el = Coord_Recup(maya.NOMNOE.get()[noeud_courant-1],None,resu)
+            coord_nds = (tab_DEP_el.COOR_X.values()[0],tab_DEP_el.COOR_Y.values()[0],tab_DEP_el.COOR_Z.values()[0])
+            dist_moy  = dist_moy + CalDist(coord_nds,NP.zeros(3),coord_fond,[tuple(NP.zeros(3))]*len(coord_fond))
+
+       l_ep_copeaux_tot_3D.append(dist_moy/len(maya.GROUPENO.get()['Nds_Delt'.ljust(8)]))
+   return mesure, l_ep_copeaux_tot_3D
+
+def Coord_Recup(noeud_courant,maille_courante,resu):
+   # Utilisation de POST_RELEVE_T pour extraire des nouvelles coordonnées des
+   # noeuds des copeaux appartenant à la surface de symétrie
+
+   from Accas import _F
+   from Utilitai.Table        import Table
+   dicarg =[]
+   if maille_courante :
+       dicarg.append(_F(OPERATION='EXTRACTION',RESULTAT=resu, INTITULE='DEP_el',
+                    TOUT_CMP='OUI',NOM_CHAM='DEPL', TOUT_ORDRE='OUI', 
+                    NOEUD=noeud_courant,MAILLE=maille_courante))
+   else:
+       dicarg.append(_F(OPERATION='EXTRACTION',RESULTAT=resu, INTITULE='DEP_el',
+                    TOUT_CMP='OUI',NOM_CHAM='DEPL', TOUT_ORDRE='OUI', 
+                    NOEUD=noeud_courant))
+
+   DEP_el_i = POST_RELEVE_T(ACTION=dicarg)
+   tab_DEP_el = DEP_el_i.EXTR_TABLE()
+   DETRUIRE(CONCEPT=_F(NOM=DEP_el_i),INFO=1);  
+   return tab_DEP_el
+
+def Supr_mano(maya):
+
+      from Accas import _F
+      dicno=[];
+      dicno.append(_F(NOM = 'Cop_Pl'));
+      dicno.append(_F(NOM = 'Mai_Plan'));
+      dicno.append(_F(NOM = 'Mai_Pla1'));
+      dicno.append(_F(NOM = 'Mai_Pla2'));
+      dicno.append(_F(NOM = 'Nds_Plan'));
+      dicno.append(_F(NOM = 'Nds_Fond'));
+      dicno.append(_F(NOM = 'Nds_Floc'));
+      dicno.append(_F(NOM = 'Nds_Delt'));
+      dicma=[];
+      dicma.append(_F(NOM = 'Mai_Plan'));
+      dicma.append(_F(NOM = 'Mai_Pla1'));
+      dicma.append(_F(NOM = 'Mai_Pla2'));
+      DEFI_GROUP(reuse =maya, MAILLAGE=maya, DETR_GROUP_NO=dicno, DETR_GROUP_MA=dicma);
+#-------------------------------------------------------------                          
+
+def Save_VALGP_DE_LISTINST (liste_inst_postgp,liste_inst_reduit, liste_inst_complete):
+  # sauvegarde les positions de liste des valeurs de GP à des instants définis par l'utilisateur sous le mot clé
+  # LIST_INST ou INST
+    
+  from Utilitai.Utmess       import UTMESS
+  temps_agarde_gp = []
+  trouve = False
+  for tmp_liste in liste_inst_postgp:
+    trouve = False
+    for tmp_resu_reduit in liste_inst_reduit:
+      if (tmp_liste == tmp_resu_reduit):
+          trouve = True
+          break
+    if (trouve == False):
+      UTMESS('F','POST0_36')
+
+  for tmp_liste in liste_inst_postgp :
+    compteur = 0
+    message  = True
+    for tmp_resu in liste_inst_complete : 
+      if (tmp_liste == tmp_resu) :              
+          temps_agarde_gp.append(compteur)
+      else :
+          if (message):
+            message = False
+      compteur = compteur + 1
+  if (len(temps_agarde_gp)==0):  
+          UTMESS('F','POST0_36')
+  return temps_agarde_gp
index 2cf042f8872b82f5151a1713ab62a249f01af71a..620d1ecdfe60d66a6231c6df0ddd823ae727409e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_k1_k2_k3_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF post_k1_k2_k3_ops Macro  DATE 12/10/2010   AUTEUR GENIAUT S.GENIAUT 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
 
+
+
+#--------------------------------------------------------------------------------------------------------------- 
+#                 FONCTIONS UTILITAIRES
+#--------------------------------------------------------------------------------------------------------------- 
+
 def veri_tab(tab,nom,ndim) :
    from Utilitai.Utmess     import  UTMESS
    macro = 'POST_K1_K2_K3'
@@ -32,26 +38,40 @@ def veri_tab(tab,nom,ndim) :
           label='COOR_Z'
           UTMESS('F','RUPTURE0_2',valk=[label,nom])
 
-#TODO prefer use numpy.cross
-def cross_product(a,b):
-    cross = [0]*3
-    cross[0] = a[1]*b[2]-a[2]*b[1]
-    cross[1] = a[2]*b[0]-a[0]*b[2]
-    cross[2] = a[0]*b[1]-a[1]*b[0]
-    return cross
+#--------------------------------------------------------------------------------------------------------------- 
+
+# def cross_product(a,b):
+#     cross = [0]*3
+#     cross[0] = a[1]*b[2]-a[2]*b[1]
+#     cross[1] = a[2]*b[0]-a[0]*b[2]
+#     cross[2] = a[0]*b[1]-a[1]*b[0]
+#     return cross
+#--------------------------------------------------------------------------------------------------------------- 
+
+def normalize(v):
+    import numpy as NP
+    norm = NP.sqrt(v[0]**2+v[1]**2+v[2]**2)
+    return v/norm
+
+#--------------------------------------------------------------------------------------------------------------- 
 
 def complete(Tab):
     n = len(Tab)
     for i in range(n) :
       if Tab[i]==None : Tab[i] = 0.
     return Tab
+
  
+#--------------------------------------------------------------------------------------------------------------- 
+# sam : la methode average(t) ne repond-elle pas au besoin ?
 def moy(t):
     m = 0
     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 
@@ -74,28 +94,1436 @@ def InterpolFondFiss(s0, Coorfo) :
    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 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 verif_type_fond_fiss(ndim,FOND_FISS) :
+   from Utilitai.Utmess     import  UTMESS
+   if ndim == 3 :
+      Typ = FOND_FISS.FOND_______TYPE.get()
+#     attention : Typ est un tuple contenant une seule valeur
+      if Typ[0].rstrip() != 'SEG2' and Typ[0].rstrip() != 'SEG3' :
+         UTMESS('F','RUPTURE0_12')
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_noeud_fond_fiss(FOND_FISS) :
+   """ retourne la liste des noeuds de FOND_FISS"""
+   import string as S
+   from Utilitai.Utmess     import  UTMESS
+   Lnoff = FOND_FISS.FOND_______NOEU.get()
+   if Lnoff == None :
+#     Cas double fond de fissure : par convention les noeuds sont ceux de fond_inf
+      Lnoff = FOND_FISS.FONDINF____NOEU.get()
+      if Lnoff == None : UTMESS('F','RUPTURE0_11')
+   Lnoff = map(S.rstrip,Lnoff)
+   return Lnoff
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_noeud_a_calculer(Lnoff,ndim,FOND_FISS,MAILLAGE,EnumTypes,args) :
+      """ retourne la liste des noeuds de FOND_FISS a calculer"""
+      import string as S
+      from Utilitai.Utmess     import  UTMESS
+      NOEUD          = args['NOEUD']
+      SANS_NOEUD     = args['SANS_NOEUD']
+      GROUP_NO       = args['GROUP_NO']
+      SANS_GROUP_NO  = args['SANS_GROUP_NO']
+      TOUT           = args['TOUT']
+
+      if ndim == 2 :
+
+        Lnocal = Lnoff
+        assert (len(Lnocal) == 1)
+
+      elif ndim == 3 :
+
+#        determination du pas de parcours des noeuds : 1 (tous les noeuds) ou 2 (un noeud sur 2)
+         Typ = FOND_FISS.FOND_______TYPE.get()
+         Typ = Typ[0].rstrip()
+         if (Typ == 'SEG2') or (Typ =='SEG3' and TOUT == 'OUI') :
+            pas = 1
+         elif (Typ =='SEG3') : 
+            pas = 2
+
+#        construction de la liste des noeuds "AVEC" et des noeuds "SANS"
+         NO_SANS = []
+         NO_AVEC = []
+         if GROUP_NO!=None :
+            collgrno = MAILLAGE.GROUPENO.get()
+            cnom     = MAILLAGE.NOMNOE.get()
+            if type(GROUP_NO) not in EnumTypes :
+               GROUP_NO = (GROUP_NO,)
+            for m in xrange(len(GROUP_NO)) :
+               ngrno=GROUP_NO[m].ljust(8).upper()
+               if ngrno not in collgrno.keys() :
+                  UTMESS('F','RUPTURE0_13',valk=ngrno)
+               for i in xrange(len(collgrno[ngrno])) :
+                  NO_AVEC.append(cnom[collgrno[ngrno][i]-1])
+            NO_AVEC = map(S.rstrip,NO_AVEC)
+         if NOEUD!=None : 
+            if type(NOEUD) not in EnumTypes :
+               NO_AVEC = (NOEUD,)
+            else :
+               NO_AVEC = NOEUD
+         if SANS_GROUP_NO!=None :
+            collgrno = MAILLAGE.GROUPENO.get()
+            cnom     = MAILLAGE.NOMNOE.get()
+            if type(SANS_GROUP_NO) not in EnumTypes :
+               SANS_GROUP_NO = (SANS_GROUP_NO,)
+            for m in xrange(len(SANS_GROUP_NO)) :
+               ngrno=SANS_GROUP_NO[m].ljust(8).upper()
+               if ngrno not in collgrno.keys() :
+                  UTMESS('F','RUPTURE0_13',valk=ngrno)
+               for i in xrange(len(collgrno[ngrno])) :
+                  NO_SANS.append(cnom[collgrno[ngrno][i]-1])
+            NO_SANS= map(S.rstrip,NO_SANS)
+         if SANS_NOEUD!=None : 
+            if type(SANS_NOEUD) not in EnumTypes :
+               NO_SANS = (SANS_NOEUD,)
+            else :
+               NO_SANS = SANS_NOEUD
+
+#        verification que les noeuds "AVEC" et "SANS" appartiennent au fond de fissure
+         set_tmp = set(NO_AVEC) - set(Lnoff)
+         if set_tmp :
+            UTMESS('F','RUPTURE0_15',valk=list(set_tmp)[0])
+         set_tmp = set(NO_SANS) - set(Lnoff)
+         if set_tmp :
+            UTMESS('F','RUPTURE0_15',valk=list(set_tmp)[0])
+         
+#        creation de Lnocal 
+         if NO_AVEC :
+            Lnocal = tuple( NO_AVEC )
+         elif NO_SANS :
+            Lnocal = tuple( set(Lnoff) - set(NO_SANS) )
+         else :
+            Lnocal = tuple(Lnoff)
+      
+      return Lnocal
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_coor_libre(self,Lnoff,RESULTAT,ndim):
+         """ retourne les coordonnes des noeuds de FOND_FISS en dictionnaire"""
+
+         import numpy as NP
+         from Accas import _F
+         import string as S
+
+         POST_RELEVE_T    = self.get_cmd('POST_RELEVE_T')
+         DETRUIRE         = self.get_cmd('DETRUIRE')
+
+         __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond',
+                                          NOEUD=Lnoff,
+                                          RESULTAT=RESULTAT,
+                                          NOM_CHAM='DEPL',
+                                          NUME_ORDRE=1,
+                                          NOM_CMP=('DX',),
+                                          OPERATION='EXTRACTION',),);
+
+         tcoorf=__NCOFON.EXTR_TABLE()
+         DETRUIRE(CONCEPT=_F(NOM=__NCOFON),INFO=1) 
+         nbt = len(tcoorf['NOEUD'].values()['NOEUD'])
+         xs=NP.array(tcoorf['COOR_X'].values()['COOR_X'][:nbt])
+         ys=NP.array(tcoorf['COOR_Y'].values()['COOR_Y'][:nbt])
+         if ndim==2 :
+            zs=NP.zeros(nbt,)
+         elif ndim==3 :
+            zs=NP.array(tcoorf['COOR_Z'].values()['COOR_Z'][:nbt])
+         ns = tcoorf['NOEUD'].values()['NOEUD'][:nbt]
+         ns = map(S.rstrip,ns)
+         l_coorf =  [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)]
+         l_coorf = [(i[0],i[1:]) for i in l_coorf]
+         return dict(l_coorf) 
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_Plev(self,MAILLAGE,ListmaS,RESULTAT):
+         """ retourne les coordonnes d'un point quelconque des levres pr determination sens de propagation"""
+         import numpy as NP
+         from Accas import _F
+         POST_RELEVE_T    = self.get_cmd('POST_RELEVE_T')
+         DETRUIRE         = self.get_cmd('DETRUIRE')
+
+         cmail=MAILLAGE.NOMMAI.get()
+         for i in range(len(cmail)) :
+             if cmail[i] == ListmaS[0] :
+                break
+         colcnx=MAILLAGE.CONNEX.get()
+         cnom = MAILLAGE.NOMNOE.get()
+         NO_TMP = []
+         for k in range(len(colcnx[i+1])) :
+            NO_TMP.append(cnom[colcnx[i+1][k]-1])
+
+         __NCOLEV=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees pt levre',
+                                          NOEUD = NO_TMP,
+                                          RESULTAT=RESULTAT,
+                                          NOM_CHAM='DEPL',
+                                          NUME_ORDRE=1,
+                                          NOM_CMP=('DX',),
+                                          OPERATION='EXTRACTION',),);
+                                          
+         tcoorl=__NCOLEV.EXTR_TABLE()
+         DETRUIRE(CONCEPT=_F(NOM=__NCOLEV),INFO=1) 
+         nbt = len(tcoorl['NOEUD'].values()['NOEUD'])
+         xl=moy(tcoorl['COOR_X'].values()['COOR_X'][:nbt])
+         yl=moy(tcoorl['COOR_Y'].values()['COOR_Y'][:nbt])
+         zl=moy(tcoorl['COOR_Z'].values()['COOR_Z'][:nbt])
+         return NP.array([xl, yl, zl])
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_normale(VECT_K1,Nnoff,ndim,DTANOR,DTANEX,d_coorf,Lnoff,Plev) :
+      """ retourne les normales (direct de propa) en chaque point du fond,
+          les abscisses curvilignes et le sens de la tangete (a eclaircir)"""
+
+      import numpy as NP
+
+      v1 =  NP.array(VECT_K1)
+      VN = [None]*Nnoff
+      absfon = [0,]
+      if ndim == 3 :
+         Pfon2 = NP.array([d_coorf[Lnoff[0]][0],d_coorf[Lnoff[0]][1],d_coorf[Lnoff[0]][2]])
+         VLori = Pfon2 - Plev
+         if DTANOR != None :
+            VN[0] = NP.array(DTANOR)
+         else :
+            Pfon3 = NP.array([d_coorf[Lnoff[1]][0],d_coorf[Lnoff[1]][1],d_coorf[Lnoff[1]][2]])
+            VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+            VN[0] = NP.array(NP.cross(VT,v1))
+         for i in range(1,Nnoff-1):
+            Pfon1 = NP.array([d_coorf[Lnoff[i-1]][0],d_coorf[Lnoff[i-1]][1],d_coorf[Lnoff[i-1]][2]])
+            Pfon2 = NP.array([d_coorf[Lnoff[i]][0],d_coorf[Lnoff[i]][1],d_coorf[Lnoff[i]][2]])
+            Pfon3 = NP.array([d_coorf[Lnoff[i+1]][0],d_coorf[Lnoff[i+1]][1],d_coorf[Lnoff[i+1]][2]])
+            absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+            absfon.append(absf)
+            VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+            VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+            VN[i] = NP.array(NP.cross(VT,v1)) 
+            VN[i] = VN[i]/NP.sqrt(NP.dot(NP.transpose(VN[i]),VN[i]))
+         i = Nnoff-1
+         Pfon1 = NP.array([d_coorf[Lnoff[i-1]][0],d_coorf[Lnoff[i-1]][1],d_coorf[Lnoff[i-1]][2]])
+         Pfon2 = NP.array([d_coorf[Lnoff[i]][0],d_coorf[Lnoff[i]][1],d_coorf[Lnoff[i]][2]])
+         VLextr = Pfon2 - Plev
+         absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+         absfon.append(absf)
+         if DTANEX != None :
+            VN[i] = NP.array(DTANEX)
+         else :
+            VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+            VN[i] = NP.array(NP.cross(VT,v1))
+         dicoF = dict([(Lnoff[i],absfon[i]) for i in range(Nnoff)])  
+         dicVN = dict([(Lnoff[i],VN[i]) for i in range(Nnoff)])
+#        Sens de la tangente       
+         v = NP.cross(VLori,VLextr)
+         sens = NP.sign(NP.dot(NP.transpose(v),v1))
+      elif ndim ==2 :
+         VT = NP.array([0.,0.,1.])
+         VN = NP.array(NP.cross(v1,VT))
+         dicVN = dict([(Lnoff[0],VN)])
+         Pfon = NP.array([d_coorf[Lnoff[0]][0],d_coorf[Lnoff[0]][1],d_coorf[Lnoff[0]][2]])
+         VLori = Pfon - Plev
+         sens = NP.sign(NP.dot(NP.transpose(VN),VLori))
+      return (dicVN, dicoF, sens)
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_tab_dep(self,Lnocal,Nnocal,Nnoff,d_coorf,Lnoff,DTANOR,DTANEX,ABSC_CURV_MAXI,dicVN,sens,RESULTAT,MODEL,
+                ListmaS,ListmaI,NB_NOEUD_COUPE,dmax,SYME_CHAR) :
+      """ retourne les tables des deplacements sup et inf pour les noeuds perpendiculaires pour
+      chaque point du fond de fissure"""
+
+      from Accas import _F
+      import numpy as NP
+
+      MACR_LIGN_COUPE  = self.get_cmd('MACR_LIGN_COUPE')
+      
+      TlibS = [None]*Nnocal
+      TlibI = [None]*Nnocal
+      for i in xrange(Nnocal):
+         Porig = NP.array(d_coorf[Lnocal[i]] )
+         if Lnocal[i]==Lnoff[0] and DTANOR : 
+            Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]]               
+         elif Lnocal[i]==Lnoff[Nnoff-1] and DTANEX :
+            Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]]               
+         else :
+            Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnocal[i]]*sens
+
+         TlibS[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
+                                    NOM_CHAM='DEPL',
+                                    MODELE=MODEL, 
+                                    VIS_A_VIS=_F(MAILLE_1 = ListmaS),
+                                    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),);
+
+
+         if SYME_CHAR=='SANS':
+            TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
+                                       NOM_CHAM='DEPL',
+                                       MODELE=MODEL,
+                                       VIS_A_VIS=_F(MAILLE_1 = ListmaI),
+                                       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),);
+      return (TlibS,TlibI)
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_dico_levres(lev,FOND_FISS,ndim,Lnoff,Nnoff):
+      "retourne ???"""
+      import string as S
+      from Utilitai.Utmess     import  UTMESS
+      if lev == 'sup' :
+         Nnorm = FOND_FISS.SUPNORM____NOEU.get()
+         if not Nnorm : 
+            UTMESS('F','RUPTURE0_19')
+      elif lev == 'inf' :
+         Nnorm = FOND_FISS.INFNORM____NOEU.get()
+         if not Nnorm : 
+            UTMESS('F','RUPTURE0_20')
+      Nnorm = map(S.rstrip,Nnorm)
+#     pourquoi modifie t-on Nnoff dans ce cas, alors que rien n'est fait pour les maillages libres ?
+      if Lnoff[0]==Lnoff[-1] and ndim == 3 :
+         Nnoff=Nnoff-1  # Cas fond de fissure ferme
+      Nnorm = [[Lnoff[i],Nnorm[i*20:(i+1)*20]] for i in range(0,Nnoff)]
+      Nnorm = [(i[0],i[1][0:]) for i in Nnorm]
+      return dict(Nnorm)
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_coor_regle(self,RESULTAT,ndim,Lnoff,Lnocal,dicoS,SYME_CHAR,dicoI,TABL_DEPL_SUP,TABL_DEPL_INF):
+      """retourne le dictionnaires des coordonnees des noeuds des lèvres pour les maillages regles"""
+      import numpy as NP
+      import string as S
+      import copy
+      from Accas import _F
+
+      POST_RELEVE_T    = self.get_cmd('POST_RELEVE_T')
+      DETRUIRE         = self.get_cmd('DETRUIRE')
+      CALC_TABLE       = self.get_cmd('CALC_TABLE')
+
+      if RESULTAT :
+#        a eclaircir
+         Ltot = copy.copy(Lnoff)
+         for ino in Lnocal :
+            for k in xrange(0,20) :
+               if dicoS[ino][k] !='':
+                  Ltot.append(dicoS[ino][k])
+         if SYME_CHAR=='SANS':
+            for ino in Lnocal :
+               for k in xrange(0,20) :
+                  if dicoI[ino][k] !='':
+                     Ltot.append(dicoI[ino][k])
+         Ltot=dict([(i,0) for i in Ltot]).keys()
+
+         __NCOOR=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds des levres',
+                                         NOEUD=Ltot,
+                                         RESULTAT=RESULTAT,
+                                         NOM_CHAM='DEPL',
+                                         NUME_ORDRE=1,
+                                         NOM_CMP=('DX',),
+                                         OPERATION='EXTRACTION',),);
+
+         tcoor=__NCOOR.EXTR_TABLE()
+         DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)  
+      else :  
+         if SYME_CHAR=='SANS':
+            __NCOOR=CALC_TABLE(TABLE=TABL_DEPL_SUP,
+                               ACTION=_F(OPERATION = 'COMB',
+                                         NOM_PARA='NOEUD',
+                                         TABLE=TABL_DEPL_INF,))
+            tcoor=__NCOOR.EXTR_TABLE()
+            DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)  
+         else :
+            tcoor=TABL_DEPL_SUP.EXTR_TABLE()
+      nbt = len(tcoor['NOEUD'].values()['NOEUD'])
+      xs=NP.array(tcoor['COOR_X'].values()['COOR_X'][:nbt])
+      ys=NP.array(tcoor['COOR_Y'].values()['COOR_Y'][:nbt])
+      if ndim==2 :
+         zs=NP.zeros(nbt)
+      elif ndim==3 :
+         zs=NP.array(tcoor['COOR_Z'].values()['COOR_Z'][:nbt])
+      ns = tcoor['NOEUD'].values()['NOEUD'][:nbt]
+      ns = map(S.rstrip,ns)
+      l_coor =  [[ns[i],xs[i],ys[i],zs[i]] for i in xrange(nbt)]
+      l_coor = [(i[0],i[1:]) for i in l_coor]     
+      return dict(l_coor)
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_absfon(Lnoff,Nnoff,d_coor):
+      """ retourne le dictionnaire des Abscisses curvilignes du fond"""
+      import numpy as NP
+      absfon = [0,]
+      for i in xrange(Nnoff-1) :
+         Pfon1 = NP.array([d_coor[Lnoff[i]][0],d_coor[Lnoff[i]][1],d_coor[Lnoff[i]][2]])
+         Pfon2 = NP.array([d_coor[Lnoff[i+1]][0],d_coor[Lnoff[i+1]][1],d_coor[Lnoff[i+1]][2]])
+         absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i]
+         absfon.append(absf)
+      return dict([(Lnoff[i],absfon[i]) for i in xrange(Nnoff)])
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_noeuds_perp_regle(Lnocal,d_coor,dicoS,dicoI,Lnoff,PREC_VIS_A_VIS,ABSC_CURV_MAXI,SYME_CHAR,rmprec,precn):
+      """retourne la liste des noeuds du fond (encore ?), la liste des listes des noeuds perpendiculaires"""
+      import numpy as NP
+      from Utilitai.Utmess     import  UTMESS
+
+      NBTRLS = 0
+      NBTRLI = 0
+      Lnosup = [None]*len(Lnocal)
+      Lnoinf = [None]*len(Lnocal)
+      Nbnofo = 0
+      Lnofon = []
+      for ino in Lnocal :
+         Pfon = NP.array([d_coor[ino][0],d_coor[ino][1],d_coor[ino][2]])
+         Tmpsup = []
+         Tmpinf = []
+         itots = 0
+         itoti = 0
+         NBTRLS = 0
+         NBTRLI = 0
+         for k in xrange(20) :
+            if dicoS[ino][k] !='':
+               itots = itots +1
+               Nsup =  dicoS[ino][k]
+               Psup = NP.array([d_coor[Nsup][0],d_coor[Nsup][1],d_coor[Nsup][2]])
+               abss = NP.sqrt(NP.dot(NP.transpose(Pfon-Psup),Pfon-Psup))
+               if abss<rmprec :
+                  NBTRLS = NBTRLS +1
+                  Tmpsup.append(dicoS[ino][k])
+            if SYME_CHAR=='SANS':
+               if dicoI[ino][k] !='':
+                  itoti = itoti +1
+                  Ninf =  dicoI[ino][k]
+                  Pinf = NP.array([d_coor[Ninf][0],d_coor[Ninf][1],d_coor[Ninf][2]])
+                  absi = NP.sqrt(NP.dot(NP.transpose(Pfon-Pinf),Pfon-Pinf))
+#                 On verifie que les noeuds sont en vis a vis
+                  if abss<rmprec :
+                     dist = NP.sqrt(NP.dot(NP.transpose(Psup-Pinf),Psup-Pinf))
+                     if dist>precn : 
+                        UTMESS('A','RUPTURE0_21',valk=ino)
+                     else :
+                        NBTRLI = NBTRLI +1
+                        Tmpinf.append(dicoI[ino][k])
+#        On verifie qu il y a assez de noeuds
+         if NBTRLS < 3 : 
+            UTMESS('A+','RUPTURE0_22',valk=ino)
+            if ino==Lnoff[0] or ino==Lnoff[-1]:
+               UTMESS('A+','RUPTURE0_23')
+            if itots<3 :
+               UTMESS('A','RUPTURE0_24')
+            else :
+               UTMESS('A','RUPTURE0_25')
+         elif (SYME_CHAR=='SANS') and (NBTRLI < 3) :
+            UTMESS('A+','RUPTURE0_26',valk=ino)
+            if ino==Lnoff[0] or ino==Lnoff[-1]:
+               UTMESS('A+','RUPTURE0_23')
+            if itoti<3 :
+               UTMESS('A','RUPTURE0_24')
+            else :
+               UTMESS('A','RUPTURE0_25')
+         else :
+            Lnosup[Nbnofo] = Tmpsup
+            if SYME_CHAR=='SANS' :
+               Lnoinf[Nbnofo] = Tmpinf
+            Lnofon.append(ino)
+            Nbnofo = Nbnofo+1
+      if Nbnofo == 0 :
+         UTMESS('F','RUPTURE0_30')
+
+      return (Lnofon, Lnosup, Lnoinf) 
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def verif_resxfem(self,RESULTAT) :
+      """ verifie que le resultat est bien compatible avec X-FEM et renvoie xcont et MODEL"""
+
+      import aster
+      from Utilitai.Utmess     import  UTMESS
+
+      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.get_concept(n_modele)
+      xcont = MODEL.xfem.XFEM_CONT.get()
+      return (xcont,MODEL)
+
+#--------------------------------------------------------------------------------------------------------------- 
+
+def get_resxfem(self,xcont,RESULTAT,MAILLAGE,MODELISATION,MODEL) :
+      """ retourne le resultat """
+      from Accas import _F
+
+      AFFE_MODELE      = self.get_cmd('AFFE_MODELE')
+      PROJ_CHAMP       = self.get_cmd('PROJ_CHAMP')
+      DETRUIRE         = self.get_cmd('DETRUIRE')
+
+      if xcont[0] == 0 :
+         __RESX = RESULTAT
+
+#     XFEM + contact : il faut reprojeter sur le maillage lineaire
+      elif xcont[0] != 0 :
+         __MODLINE=AFFE_MODELE(MAILLAGE=MAILLAGE,
+                               AFFE=(_F(TOUT='OUI',
+                                        PHENOMENE='MECANIQUE',
+                                        MODELISATION=MODELISATION,),),);        
+
+         __RESX=PROJ_CHAMP(METHODE='COLOCATION',
+                           TYPE_CHAM='NOEU',
+                           NOM_CHAM='DEPL',
+                           RESULTAT=RESULTAT,
+                           MODELE_1=MODEL,
+                           MODELE_2=__MODLINE, );   
+
+#        Rq : on ne peut pas détruire __MODLINE ici car on en a besoin lors du MACR_LIGN_COUP qui suivra
+      
+      return __RESX
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_coor_xfem(args,FISSURE,ndim):
+      """retourne la liste des coordonnees des points du fond, la base locale en fond et le nombre de points"""
+
+      from Utilitai.Utmess     import  UTMESS
+   
+      Listfo = FISSURE.FONDFISS.get()
+      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 ndim == 3 :
+         Nnoff = NB_POINT_FOND
+         absmax = Listfo[-1]
+         Coorfo = [None]*4*Nnoff
+         Vpropa = [None]*3*Nnoff
+         for i in xrange(Nnoff) :
+            absci = i*absmax/(Nnoff-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
+         Nnoff = len(Coorfo)/4
+
+      return (Coorfo, Vpropa, Nnoff)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_direction_xfem(Nnoff,Vpropa,Coorfo,VECT_K1,DTAN_ORIG,DTAN_EXTR,ndim) :
+      """retourne la dirction de propagation, la normale a la surface de la fissure,
+      et l'abscisse curviligne en chaque point du fond"""
+      import numpy as NP
+      from Utilitai.Utmess     import  UTMESS
+
+      VP = [None]*Nnoff
+      VN = [None]*Nnoff
+      absfon = [0,]
+
+#     Cas fissure non necessairement plane     
+      if VECT_K1 == None :
+        i = 0
+        if ndim == 3 :
+           if DTAN_ORIG != None :
+              VP[0] = NP.array(DTAN_ORIG)
+              VP[0] = VP[0]/NP.sqrt(VP[0][0]**2+VP[0][1]**2+VP[0][2]**2)
+              VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
+              verif = NP.dot(NP.transpose(VP[0]),VN[0]) 
+              if abs(verif) > 0.01:
+                 UTMESS('A','RUPTURE1_33',valr=[VN[0][0],VN[0][1],VN[0][2]])
+           else :
+              VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
+              VP[0] = NP.array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]])
+           for i in xrange(1,Nnoff-1):
+              absf = Coorfo[4*i+3]
+              absfon.append(absf)
+              VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
+              VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]])
+              verif = NP.dot(NP.transpose(VN[i]),VN[i-1]) 
+              if abs(verif) < 0.98:
+                UTMESS('A','RUPTURE1_35',vali=[i-1,i])
+           i = Nnoff-1
+           absf =  Coorfo[4*i+3]
+           absfon.append(absf)
+           if DTAN_EXTR != None :
+              VP[i] = NP.array(DTAN_EXTR)
+              VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
+              verif = NP.dot(NP.transpose(VP[i]),VN[0]) 
+              if abs(verif) > 0.01:
+                 UTMESS('A','RUPTURE1_34',valr=[VN[i][0],VN[i][1],VN[i][2]])
+           else :
+              VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
+              VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]])
+        elif ndim == 2 : 
+           for i in range(0,Nnoff):
+              VP[i] = NP.array([Vpropa[2+4*i],Vpropa[3+4*i],0.])
+              VN[i] = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.])
+
+#     Cas fissure plane (VECT_K1 donne)
+      if VECT_K1 != None :
+         v1 =  NP.array(VECT_K1)
+         v1  = v1/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
+         v1 =  NP.array(VECT_K1)
+         i = 0
+         if ndim == 3 :
+#           Sens du vecteur VECT_K1       
+            v1x =NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
+            verif = NP.dot(NP.transpose(v1),v1x) 
+            if verif < 0 :
+               v1 = -v1
+            VN = [v1]*Nnoff
+            if DTAN_ORIG != None :
+               VP[i] = NP.array(DTAN_ORIG)
+               VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2)
+               verif = NP.dot(NP.transpose(VP[i]),VN[0]) 
+               if abs(verif) > 0.01:
+                  UTMESS('A','RUPTURE1_36')
+            else :
+               Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
+               Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]])
+               VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+               VP[0] = NP.array(NP.cross(VT,v1))
+               VNi = NP.array([Vpropa[3],Vpropa[4],Vpropa[5]])
+               verif = NP.dot(NP.transpose(VP[i]),VNi) 
+               if abs(verif) < 0.99:
+                  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,Nnoff-1):
+               Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
+               Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
+               Pfon3 = NP.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)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+               VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+               VP[i] = NP.array(NP.cross(VT,v1)) 
+               VP[i] = VP[i]/NP.sqrt(NP.dot(NP.transpose(VP[i]),VP[i]))
+               VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
+               verif = NP.dot(NP.transpose(VN[i]),VNi) 
+               if abs(verif) < 0.99:
+                  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 = Nnoff-1
+            Pfon1 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
+            Pfon2 = NP.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] = NP.array(DTAN_EXTR)
+               VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2)
+               verif = NP.dot(NP.transpose(VP[i]),VN[i]) 
+               if abs(verif) > 0.01:
+                  UTMESS('A','RUPTURE1_37')
+            else :
+               VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+               VP[i] = NP.array(NP.cross(VT,v1))
+               VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
+               verif = NP.dot(NP.transpose(VN[i]),VNi) 
+               if abs(verif) < 0.99 :
+                  vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
+                  UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
+
+         elif ndim == 2 :  
+
+           VT = NP.array([0.,0.,1.])
+           for i in range(0,Nnoff):
+              VP[i] = NP.array(NP.cross(v1,VT))  
+              VN[i] = v1
+              VNi = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.])
+              verif = NP.dot(NP.transpose(VN[i]),VNi) 
+              if abs(verif) < 0.99 :
+                 vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
+                 UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
+      
+      return (VP,VN,absfon)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_sens_tangente_xfem(self,ndim,Nnoff,Coorfo,VP,ABSC_CURV_MAXI,__RESX,dmax) :
+      """retourne le sens de la tangente   ???"""
+      from Accas import _F
+      import numpy as NP
+      from Utilitai.Utmess     import  UTMESS
+
+      MACR_LIGN_COUPE  = self.get_cmd('MACR_LIGN_COUPE')
+      DETRUIRE         = self.get_cmd('DETRUIRE')
+
+      if ndim == 3 :
+         i = Nnoff/2
+      elif ndim == 2 :
+         i = 0
+      Po =  NP.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',
+                               LIGN_COUPE=_F(NB_POINTS=3,
+                                             COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
+                                             TYPE='SEGMENT',
+                                             COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),
+                                             DISTANCE_MAX=dmax),);
+      tmp=__Tabg.EXTR_TABLE()
+      test = getattr(tmp,'H1X').values()
+      if test==[None]*3 : 
+         UTMESS('F','RUPTURE0_33')
+      if test[0]!=None :
+         sens = 1
+      else :
+         sens = -1
+      DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1)  
+      
+      return sens
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_sauts_xfem(self,Nnoff,Coorfo,VP,sens,DTAN_ORIG,DTAN_EXTR,ABSC_CURV_MAXI,NB_NOEUD_COUPE,dmax,__RESX) :
+      """retourne la table des sauts"""
+      from Accas import _F
+      import numpy as NP
+
+      MACR_LIGN_COUPE  = self.get_cmd('MACR_LIGN_COUPE')
+
+      mcfact=[]
+      for i in xrange(Nnoff):
+         Porig = NP.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==(Nnoff-1) and DTAN_EXTR!=None :
+            Pextr = Porig - ABSC_CURV_MAXI*VP[i]
+         else :
+            Pextr = Porig + ABSC_CURV_MAXI*VP[i]*sens
+
+         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);
+
+      return __TSo.EXTR_TABLE()
+
+#---------------------------------------------------------------------------------------------------------------
+
+def affiche_xfem(self,INFO,Nnoff,VN,VP) :
+      """affiche des infos"""
+      from Accas import _F
+      import aster
+
+      CREA_TABLE       = self.get_cmd('CREA_TABLE')
+      DETRUIRE         = self.get_cmd('DETRUIRE')
+
+      if INFO==2 :
+         mcfact=[]
+         mcfact.append(_F(PARA='PT_FOND',LISTE_I=range(Nnoff)))
+         mcfact.append(_F(PARA='VN_X'   ,LISTE_R=[VN[i][0] for i in xrange(Nnoff)]))
+         mcfact.append(_F(PARA='VN_Y'   ,LISTE_R=[VN[i][1] for i in xrange(Nnoff)]))
+         mcfact.append(_F(PARA='VN_Z'   ,LISTE_R=[VN[i][2] for i in xrange(Nnoff)]))
+         mcfact.append(_F(PARA='VP_X'   ,LISTE_R=[VP[i][0] for i in xrange(Nnoff)]))
+         mcfact.append(_F(PARA='VP_Y'   ,LISTE_R=[VP[i][1] for i in xrange(Nnoff)]))
+         mcfact.append(_F(PARA='VP_Z'   ,LISTE_R=[VP[i][2] for i in xrange(Nnoff)]))
+         __resu2=CREA_TABLE(LISTE=mcfact,
+                            TITRE= ' '*13 + 'VECTEUR NORMAL A LA FISSURE    -   DIRECTION DE PROPAGATION')
+         aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__())
+         DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1)
+      
+#---------------------------------------------------------------------------------------------------------------
+
+def affiche_traitement(FOND_FISS,INFO,FISSURE,Lnofon,ino):
+      import aster
+      if FOND_FISS and INFO==2 :
+            texte="\n\n--> TRAITEMENT DU NOEUD DU FOND DE FISSURE: %s"%Lnofon[ino]
+            aster.affiche('MESSAGE',texte)
+      if FISSURE and INFO==2 :
+            texte="\n\n--> TRAITEMENT DU POINT DU FOND DE FISSURE NUMERO %s"%(ino+1)
+            aster.affiche('MESSAGE',texte)
+   
+#---------------------------------------------------------------------------------------------------------------
+
+def get_tab(self,lev,ino,Tlib,Lno,TTSo,FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL,ndim) :
+      """retourne la table des deplacements des noeuds perpendiculaires"""
+      from Accas import _F
+      import string as S
+
+      DETRUIRE         = self.get_cmd('DETRUIRE')
+      POST_RELEVE_T    = self.get_cmd('POST_RELEVE_T')
+
+      if lev == 'sup' or (lev == 'inf' and SYME_CHAR=='SANS' and not FISSURE) :
+
+         if FOND_FISS : 
+            if TYPE_MAILLAGE =='LIBRE':
+               tab=Tlib[ino].EXTR_TABLE()
+               DETRUIRE(CONCEPT=_F(NOM=Tlib[ino]),INFO=1)
+            elif RESULTAT :
+               if ndim == 2:
+                  nomcmp= ('DX','DY')
+               elif ndim == 3:
+                  nomcmp= ('DX','DY','DZ')
+                  
+               __T=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement '+lev.upper(),
+                                             NOEUD=Lno[ino],
+                                             RESULTAT=RESULTAT,
+                                             NOM_CHAM='DEPL',
+                                             TOUT_ORDRE='OUI',
+                                             NOM_CMP=nomcmp,
+                                             OPERATION='EXTRACTION',),);
+               tab=__T.EXTR_TABLE()
+               DETRUIRE(CONCEPT=_F(NOM=__T),INFO=1)      
+            else :
+               tab=TABL_DEPL.EXTR_TABLE()
+               veri_tab(tab,TABL_DEPL.nom,ndim)
+               Ls = [S.ljust(Lno[ino][i],8) for i in range(len(Lno[ino]))]
+               tab=tab.NOEUD==Ls
+         elif FISSURE :
+            tab = TTSo.INTITULE=='l.coupe%i'%(ino+1)
+         else :
+            tab=TABL_DEPL.EXTR_TABLE()
+            veri_tab(tab,TABL_DEPL.nom,ndim)
+
+      else :
+
+         tab = None
+
+      return tab
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_liste_inst(tabsup,args,LIST_ORDRE,NUME_ORDRE,INST,LIST_INST,EnumTypes) :
+      """retourne la liste d'instants"""
+      from Utilitai.Utmess     import  UTMESS
+      if 'INST' in tabsup.para : 
+         l_inst=None
+         l_inst_tab=tabsup['INST'].values()['INST']
+         l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() #elimine les doublons
+         l_inst_tab.sort()
+         if LIST_ORDRE !=None or NUME_ORDRE !=None :
+            l_ord_tab = tabsup['NUME_ORDRE'].values()['NUME_ORDRE']
+            l_ord_tab.sort()
+            l_ord_tab=dict([(i,0) for i in l_ord_tab]).keys() 
+            d_ord_tab= [[l_ord_tab[i],l_inst_tab[i]] for i in range(0,len(l_ord_tab))]
+            d_ord_tab= [(i[0],i[1]) for i in d_ord_tab]
+            d_ord_tab = dict(d_ord_tab)
+            if NUME_ORDRE !=None : 
+               if type(NUME_ORDRE) not in EnumTypes :
+                  NUME_ORDRE=(NUME_ORDRE,)
+               l_ord=list(NUME_ORDRE)
+            elif LIST_ORDRE !=None : 
+               l_ord = LIST_ORDRE.VALE.get() 
+            l_inst = []
+            for ord in l_ord :
+              if ord in l_ord_tab :
+                 l_inst.append(d_ord_tab[ord])
+              else :  
+                 UTMESS('F','RUPTURE0_37',vali=ord)
+            PRECISION = 1.E-6
+            CRITERE='ABSOLU'
+         elif INST !=None or LIST_INST !=None :
+            CRITERE = args['CRITERE']
+            PRECISION = args['PRECISION']
+            if  INST !=None : 
+               if type(INST) not in EnumTypes : INST=(INST,)
+               l_inst=list(INST)
+            elif LIST_INST !=None :
+               l_inst=LIST_INST.Valeurs()
+            for inst in l_inst  :
+               if CRITERE=='RELATIF' and inst!=0.:
+                  match=[x for x in l_inst_tab if abs((inst-x)/inst)<PRECISION]
+               else :
+                  match=[x for x in l_inst_tab if abs(inst-x)<PRECISION]
+               if len(match)==0 : 
+                  UTMESS('F','RUPTURE0_38',valr=inst)
+               if len(match)>=2 :
+                  UTMESS('F','RUPTURE0_39',valr=inst)
+         else :
+            l_inst=l_inst_tab
+            PRECISION = 1.E-6
+            CRITERE='ABSOLU'
+      else :
+         l_inst    = [None,]
+         PRECISION = None
+         CRITERE   = None
+         
+      return (l_inst,PRECISION,CRITERE)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def affiche_instant(INFO,inst):
+      import aster
+      if INFO==2 and inst!=None:
+         texte= "#" + "="*80 + "\n" + "==> INSTANT: %f"%inst
+         aster.affiche('MESSAGE',texte)
+   
+#---------------------------------------------------------------------------------------------------------------
+
+def get_tab_inst(lev,inst,FISSURE,SYME_CHAR,PRECISION,CRITERE,tabsup,tabinf) :
+      """retourne la table des deplacements des noeuds à l'instant courant"""
+
+      tab = None
+      assert( lev == 'sup' or lev == 'inf') 
+
+      # identification du cas (le cas sans instant sera à supprimer
+      # il doit normalement coincider avec le cas TAB_DEPL...
+      if inst==None:
+         cas = 'a_suppr'
+      else :     
+         cas = 'normal'
+      
+      if lev == 'sup' :
+         tabres = tabsup
+      elif lev == 'inf' :
+         if SYME_CHAR=='SANS' and not FISSURE :
+            tabres = tabinf
+         else :
+            return tab
+
+      if cas == 'normal' :
+
+         if inst ==0. :
+            crit = 'ABSOLU'
+         else : 
+            crit = CRITERE
+
+         tab=tabres.INST.__eq__(VALE=inst,
+                                CRITERE=crit,
+                                PRECISION=PRECISION)
+      elif cas == 'a_suppr':
+
+         tab=tabres
+
+      return tab
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_propmat_tempe(MATER,tabtemp,Lnofon,ino,inst,PRECISION) :
+      """retourne les proprietes materiaux en fonction de la temperature à l'instant demandé"""
+      import numpy as NP
+      from math import pi
+
+      tempeno=tabtemp.NOEUD==Lnofon[ino]
+      tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
+      nompar = ('TEMP',)
+      valpar = (tempeno.TEMP.values()[0],)
+      nomres=['E','NU']
+      valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F')
+      e = valres[0]
+      nu = valres[1] 
+      coefd  = e * NP.sqrt(2.*pi)      / ( 8.0 * (1. - nu**2))
+      coefd3 = e*NP.sqrt(2*pi) / ( 8.0 * (1. + nu))
+      coefg  = (1. - nu**2) / e
+      coefg3 = (1. + nu)  / e
+
+      return (e,nu,coefd,coefd3,coefg,coefg3)
+#---------------------------------------------------------------------------------------------------------------
+
+def get_depl_sup(FISSURE,FOND_FISS,rmprec,RESULTAT,tabsupi,ndim,d_coor,Lnofon,ino) :
+      """retourne les déplacements sup"""
+
+      import numpy as NP
+      import copy
+      from Utilitai.Utmess     import  UTMESS
+      
+      abscs = getattr(tabsupi,'ABSC_CURV').values()
+
+      if not FISSURE :
+         if not FOND_FISS :
+#           cas  a supprimer
+
+#           on vérifie que les abscisses sont bien croissantes
+            refs=copy.copy(abscs)
+            refs.sort()
+            if refs!=abscs :
+               mctabl='TABL_DEPL_INF' 
+               UTMESS('F','RUPTURE0_40',valk=mctabl)
+
+            refsc=[x for x in refs if x<rmprec]
+            nbval = len(refsc)
+         else :
+            nbval=len(abscs)
+
+         abscs=NP.array(abscs[:nbval])
+         coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval])
+         coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval])
+         if ndim==2 : 
+            cozs=NP.zeros(nbval)
+         elif ndim==3 : 
+            cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval])
+        
+         if FOND_FISS and not RESULTAT : 
+#              assert (0 == 1)
+#            tri des noeuds avec abscisse : a faire bien en amont !!!
+             Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
+             abscs = NP.sqrt((coxs-Pfon[0])**2+(coys-Pfon[1])**2+(cozs-Pfon[2])**2)
+             tabsupi['Abs_fo'] = abscs
+             tabsupi.sort('Abs_fo')
+             abscs = getattr(tabsupi,'Abs_fo').values()
+             abscs=NP.array(abscs[:nbval])
+             coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval])
+             coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval])
+             if ndim==2 :
+                cozs=NP.zeros(nbval)
+             elif ndim==3 :
+                cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval])
+           
+         dxs=NP.array(tabsupi['DX'].values()['DX'][:nbval])
+         dys=NP.array(tabsupi['DY'].values()['DY'][:nbval])
+         if ndim==2 :
+            dzs=NP.zeros(nbval)
+         elif ndim==3 :
+            dzs=NP.array(tabsupi['DZ'].values()['DZ'][:nbval])
+
+#     ---  CAS FISSURE X-FEM ---
+      elif  FISSURE : 
+         H1 = getattr(tabsupi,'H1X').values()
+         nbval = len(H1)
+         H1 = complete(H1)
+         E1 = getattr(tabsupi,'E1X').values()
+         E1 = complete(E1)
+         dxs = 2*(H1 + NP.sqrt(abscs)*E1)
+         H1 = getattr(tabsupi,'H1Y').values()
+         E1 = getattr(tabsupi,'E1Y').values()
+         H1 = complete(H1)
+         E1 = complete(E1)
+         dys = 2*(H1 + NP.sqrt(abscs)*E1)
+         H1 = getattr(tabsupi,'H1Z').values()
+         E1 = getattr(tabsupi,'E1Z').values()
+         H1 = complete(H1)
+         E1 = complete(E1)
+         dzs = 2*(H1 + NP.sqrt(abscs)*E1)
+         abscs=NP.array(abscs[:nbval])
+
+      ds = NP.asarray([dxs,dys,dzs])
+
+      return (abscs,ds)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_depl_inf(FISSURE,FOND_FISS,rmprec,RESULTAT,tabinfi,ndim,d_coor,Lnofon,ino,SYME_CHAR) :
+      """retourne les déplacements inf"""
+      import numpy as NP
+      import copy
+      from Utilitai.Utmess     import  UTMESS
+
+      if SYME_CHAR=='SANS' and not FISSURE : 
+         absci = getattr(tabinfi,'ABSC_CURV').values()
+         if not FOND_FISS :
+            refi=copy.copy(absci)
+            refi.sort()
+            if refi!=absci :
+               mctabl='TABL_DEPL_SUP' 
+               UTMESS('F','RUPTURE0_40',valk=mctabl)
+            refic=[x for x in refi if x<rmprec]
+            nbval=len(refic)
+         else :
+            nbval=len(absci)
+            
+         absci=NP.array(absci[:nbval])
+         coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval])
+         coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval])
+         if ndim==2 :
+            cozi=NP.zeros(nbval)
+         elif ndim==3 :
+            cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval])
+
+# #        ---  ON VERIFIE QUE LES NOEUDS SONT EN VIS_A_VIS  (SYME=SANS)   ---
+# #           verification a faire bien en amont !!!
+#          if not FOND_FISS :
+#             dist=(coxs-coxi)**2+(coys-coyi)**2+(cozs-cozi)**2
+#             dist=NP.sqrt(dist)
+#             for d in dist :
+#                 if d>precn : UTMESS('F','RUPTURE0_44')
+        
+         if FOND_FISS and not RESULTAT :#tri des noeuds avec abscisse
+
+            Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
+            absci = NP.sqrt((coxi-Pfon[0])**2+(coyi-Pfon[1])**2+(cozi-Pfon[2])**2)
+            tabinfi['Abs_fo'] = absci
+            tabinfi.sort('Abs_fo')
+            absci = getattr(tabinfi,'Abs_fo').values()
+            absci=NP.array(absci[:nbval])
+            coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval])
+            coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval])
+            if ndim==2 : 
+               cozi=NP.zeros(nbval)
+            elif ndim==3 :
+               cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval],)
+
+         dxi=NP.array(tabinfi['DX'].values()['DX'][:nbval])
+         dyi=NP.array(tabinfi['DY'].values()['DY'][:nbval])
+         if ndim==2 :
+            dzi=NP.zeros(nbval)
+         elif ndim==3 :
+            dzi=NP.array(tabinfi['DZ'].values()['DZ'][:nbval])
+
+         di = NP.asarray([dxi,dyi,dzi])
+      else :
+
+         absci = []
+         di = []
+      
+      return (absci,di)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_pgl(SYME_CHAR,FISSURE,VECT_K1,ino,VP,VN,tabsupi,tabinfi,nbval,ndim) :
+
+      """retourne la matrice du changement de repère"""
+      import numpy as NP
+#
+#     1 : VECTEUR NORMAL AU PLAN DE LA FISSURE
+#         ORIENTE LEVRE INFERIEURE VERS LEVRE SUPERIEURE
+#     2 : VECTEUR NORMAL AU FOND DE FISSURE EN M
+#     3 : VECTEUR TANGENT AU FOND DE FISSURE EN M
+#
+      if FISSURE :
+         v1 = VN[ino]
+         v2 = VP[ino]
+
+      elif not FISSURE :
+
+#        cette partie est a modifier car on devrait pas calculer la base tout le temps
+         coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval])
+         coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval])
+         if ndim==2 : 
+            cozs=NP.zeros(nbval)
+         elif ndim==3 : 
+            cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval])
+
+         v1 =  NP.array(VECT_K1)
+         if SYME_CHAR=='SANS' :
+
+            coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval])
+            coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval])
+            if ndim==2 :
+               cozi=NP.zeros(nbval)
+            elif ndim==3 :
+               cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval])
+               
+            vo =  NP.array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.])
+            ve =  NP.array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.])
+            v2 =  ve-vo
+         else :
+            vo = NP.array([ coxs[-1], coys[-1], cozs[-1]])
+            ve = NP.array([ coxs[0], coys[0], cozs[0]])
+            v2 =  ve-vo
+
+      v2 =  normalize(v2)
+
+      v1p = sum(v2*v1)
+
+      if SYME_CHAR=='SANS' :
+         v1  = v1-v1p*v2
+      else :
+         v2  = v2-v1p*v1 
+
+      v1  = normalize(v1)
+      v2 =  normalize(v2)
+      v3  = NP.cross(v1,v2)
+
+      pgl  = NP.asarray([v1,v2,v3])
+
+      return pgl
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_saut(self,pgl,ds,di,INFO,FISSURE,SYME_CHAR,abscs,ndim) :
+
+      """retourne le saut de déplacements dans le nouveau repère"""
+
+      from Accas import _F
+      import aster
+      import numpy as NP
+      from Utilitai.Utmess     import  UTMESS
+   
+      CREA_TABLE    = self.get_cmd('CREA_TABLE')
+      DETRUIRE      = self.get_cmd('DETRUIRE')
+
+
+      dpls = NP.dot(pgl,ds)
+
+      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 = NP.dot(pgl,di)
+         saut=(dpls-dpli)
+      else :
+         dpli = [NP.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)
+
+      return saut
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_kgsig(saut,nbval,coefd,coefd3) :
+
+      """retourne des trucs...."""
+      import numpy as NP
+
+      isig=NP.sign(NP.transpose(NP.resize(saut[:,-1],(nbval-1,3))))
+      isig=NP.sign(isig+0.001)
+      saut2=saut*NP.array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval])
+      saut2=saut2**2
+      ksig = isig[:,1]
+      ksig = NP.array([ksig,ksig])
+      ksig = NP.transpose(ksig)
+      kgsig= NP.resize(ksig,(1,6))[0]
+
+      return (isig,kgsig,saut2)
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_meth1(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) :
+
+      """retourne kg1"""
+      from Accas import _F
+      import aster
+      import numpy as NP
+
+      CREA_TABLE    = self.get_cmd('CREA_TABLE')
+      DETRUIRE      = self.get_cmd('DETRUIRE')
+
+      nabs = len(abscs)
+      x1 = abscs[1:-1]
+      x2 = abscs[2:nabs]
+      y1 = saut2[:,1:-1]/x1
+      y2 = saut2[:,2:nabs]/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 = NP.sqrt(kg1)*kgsig
+      kg1 = NP.concatenate([kg1,[max(g),min(g)]])
+      vk  = NP.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)
+
+      return kg1
+#---------------------------------------------------------------------------------------------------------------
+
+def get_meth2(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) :
+
+      """retourne kg2"""
+      from Accas import _F
+      import aster
+      import numpy as NP
+
+      CREA_TABLE    = self.get_cmd('CREA_TABLE')
+      DETRUIRE      = self.get_cmd('DETRUIRE')
+
+      nabs = len(abscs)
+      x1 = abscs[1:nabs]
+      y1 = saut2[:,1:nabs]
+      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 = NP.sqrt(kg2)*kgsig
+      kg2= NP.concatenate([kg2,[max(g),min(g)]])
+      vk = NP.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)
+
+      return kg2
+#---------------------------------------------------------------------------------------------------------------
+
+def get_meth3(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim) :
+
+      """retourne kg3"""
+      from Accas import _F
+      import aster
+      import numpy as NP
+
+      CREA_TABLE    = self.get_cmd('CREA_TABLE')
+      DETRUIRE      = self.get_cmd('DETRUIRE')
+
+      nabs = len(abscs)
+      x1 = abscs[:-1]
+      x2 = abscs[1:nabs]
+      y1 = saut2[:,:-1]
+      y2 = saut2[:,1:nabs]
+      k  = (NP.sqrt(y2)*NP.sqrt(x2)+NP.sqrt(y1)*NP.sqrt(x1))*(x2-x1)
+#     attention, ici, il faut NP.sum et pas sum tout court
+      k  = NP.sum(NP.transpose(k), axis=0)
+      de = abscs[-1]
+      vk = (k/de**2)*isig[:,0]
+      g  = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2
+      kg3=NP.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)
+
+
+      return kg3
+
+#---------------------------------------------------------------------------------------------------------------
+
+def get_tabout(self,kg,TITRE,FOND_FISS,MODELISATION,FISSURE,ndim,ino,inst,iord,
+               Lnofon,dicoF,absfon,Nnoff,tabout) :
+
+      """retourne la table de sortie"""
+      from Accas import _F
+      import aster
+      import numpy as NP
+
+      CREA_TABLE    = self.get_cmd('CREA_TABLE')
+      DETRUIRE      = self.get_cmd('DETRUIRE')
+      CALC_TABLE    = self.get_cmd('CALC_TABLE')
+
+
+      mcfact=[]
+
+      if TITRE != None :
+         titre = TITRE
+      else :
+         v = aster.__version__
+         titre = 'ASTER %s - CONCEPT CALCULE PAR POST_K1_K2_K3 LE &DATE A &HEURE \n'%v
+
+      if FOND_FISS and MODELISATION=='3D': 
+         mcfact.append(_F(PARA='NOEUD_FOND',LISTE_K=[Lnofon[ino],]*3))
+         mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[dicoF[Lnofon[ino]]]*3))
+
+      if FISSURE and MODELISATION=='3D': 
+         mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3))
+         mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[absfon[ino],]*3))
+
+      if FISSURE  and MODELISATION!='3D' and Nnoff!=1 :
+         mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3))
+
+      mcfact.append(_F(PARA='METHODE',LISTE_I=(1,2,3)))
+      mcfact.append(_F(PARA='K1_MAX' ,LISTE_R=kg[0].tolist() ))
+      mcfact.append(_F(PARA='K1_MIN' ,LISTE_R=kg[1].tolist() ))
+      mcfact.append(_F(PARA='K2_MAX' ,LISTE_R=kg[2].tolist() ))
+      mcfact.append(_F(PARA='K2_MIN' ,LISTE_R=kg[3].tolist() ))
+
+      if ndim==3 :
+         mcfact.append(_F(PARA='K3_MAX' ,LISTE_R=kg[4].tolist() ))
+         mcfact.append(_F(PARA='K3_MIN' ,LISTE_R=kg[5].tolist() ))
+
+      mcfact.append(_F(PARA='G_MAX'  ,LISTE_R=kg[6].tolist() ))
+      mcfact.append(_F(PARA='G_MIN'  ,LISTE_R=kg[7].tolist() ))
+
+      if  (ino==0 and iord==0) and inst==None :
+         tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
+      elif iord==0 and ino==0 and inst!=None :
+         mcfact=[_F(PARA='INST'  ,LISTE_R=[inst,]*3      )]+mcfact
+         tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
+      else :
+         if inst!=None :
+            mcfact=[_F(PARA='INST'  ,LISTE_R=[inst,]*3     )]+mcfact
+         __tabi=CREA_TABLE(LISTE=mcfact,)
+         npara = ['K1_MAX','METHODE']
+         if inst!=None :
+            npara.append('INST')
+         if FOND_FISS and MODELISATION=='3D' :
+            npara.append('NOEUD_FOND')
+
+         tabout=CALC_TABLE(reuse = tabout,
+                           TABLE = tabout,
+                           TITRE = titre,
+                           ACTION=_F(OPERATION = 'COMB',
+                                     NOM_PARA  = npara,
+                                     TABLE     = __tabi,))
+
+      return tabout
+
+
+
+#--------------------------------------------------------------------------------------------------------------- 
+#                 CORPS DE LA MACRO POST_K1_K2_K3
+#--------------------------------------------------------------------------------------------------------------- 
+
 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,
                    TOUT_ORDRE,NUME_ORDRE,LIST_ORDRE,INST,LIST_INST,SYME_CHAR,
@@ -107,22 +1535,19 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
    la fissure. Produit une table.
    """
    import aster
-   import string
-   import copy
-   import math
+   import string as S
    import numpy as NP
    from math import pi
    from types import ListType, TupleType
    from Accas import _F
    from Utilitai.Table      import Table, merge
-   from SD.sd_l_charges import sd_l_charges
    from SD.sd_mater     import sd_compor1
    EnumTypes = (ListType, TupleType)
 
    macro = 'POST_K1_K2_K3'
-   from Accas               import _F
    from Utilitai.Utmess     import  UTMESS
 
+
    ier = 0
    # La macro compte pour 1 dans la numerotation des commandes
    self.set_icmd(1)
@@ -130,18 +1555,19 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
    # Le concept sortant (de type table_sdaster ou dérivé) est tab
    self.DeclareOut('tabout', self.sd)
    
+   tabout=[]
+   
    # 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')
+   CREA_TABLE       = self.get_cmd('CREA_TABLE')
+   CALC_TABLE       = self.get_cmd('CALC_TABLE')
    POST_RELEVE_T    = self.get_cmd('POST_RELEVE_T')
-   DETRUIRE      = self.get_cmd('DETRUIRE')
-   DEFI_GROUP      = self.get_cmd('DEFI_GROUP')
-   MACR_LIGN_COUPE      = self.get_cmd('MACR_LIGN_COUPE')
-
+   DETRUIRE         = self.get_cmd('DETRUIRE')
+   DEFI_GROUP       = self.get_cmd('DEFI_GROUP')
+   MACR_LIGN_COUPE  = self.get_cmd('MACR_LIGN_COUPE')
    AFFE_MODELE      = self.get_cmd('AFFE_MODELE')
-   PROJ_CHAMP      = self.get_cmd('PROJ_CHAMP')
-      
+   PROJ_CHAMP       = self.get_cmd('PROJ_CHAMP')
+     
 #   ------------------------------------------------------------------
 #                         CARACTERISTIQUES MATERIAUX
 #   ------------------------------------------------------------------
@@ -152,18 +1578,21 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
           phenom=cmpt
           break
    if phenom==None : UTMESS('F','RUPTURE0_5')
-#   --- RECHERCHE SI LE MATERIAU DEPEND DE LA TEMPERATURE:
+
+#  RECHERCHE SI LE MATERIAU DEPEND DE LA TEMPERATURE:
    compor = sd_compor1('%-8s.%s' % (MATER.nom, phenom))
    valk = [s.strip() for s in compor.VALK.get()]
    valr = compor.VALR.get()
    dicmat=dict(zip(valk,valr))
-#   --- PROPRIETES MATERIAUX DEPENDANTES DE LA TEMPERATURE
+
+#  PROPRIETES MATERIAUX DEPENDANTES DE LA TEMPERATURE
    Tempe3D = False
    if FOND_FISS and args['EVOL_THER'] : 
-# on recupere juste le nom du resultat thermique (la température est variable de commande)
+#     on recupere juste le nom du resultat thermique (la température est variable de commande)
       ndim   = 3
       Tempe3D=True
-      resuth=string.ljust(args['EVOL_THER'].nom,8).rstrip()
+      resuth=S.ljust(args['EVOL_THER'].nom,8).rstrip()
+
    if dicmat.has_key('TEMP_DEF') and not args['EVOL_THER'] :
       nompar = ('TEMP',)
       valpar = (dicmat['TEMP_DEF'],)
@@ -211,1084 +1640,294 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
       else :
          UTMESS('F','RUPTURE0_10')
 
+   assert (ndim == 2 or ndim == 3)     
+
+   try :
+      TYPE_MAILLAGE  = args['TYPE_MAILLAGE']
+   except KeyError :
+      TYPE_MAILLAGE = []
+
+
+   rmprec = ABSC_CURV_MAXI*(1.+PREC_VIS_A_VIS/10.)
+   precn = PREC_VIS_A_VIS * ABSC_CURV_MAXI
+
+      
+#  ------------------------------------------------------------------
+#  I. CAS FOND_FISS
+#  ------------------------------------------------------------------
 
-#   ------------------------------------------------------------------
-#                        CAS FOND_FISS
-#   ------------------------------------------------------------------
    if FOND_FISS : 
+
       MAILLAGE = args['MAILLAGE']
-      NOEUD = args['NOEUD']
-      SANS_NOEUD = args['SANS_NOEUD']
-      GROUP_NO = args['GROUP_NO']
-      SANS_GROUP_NO = args['SANS_GROUP_NO']
-      TOUT = args['TOUT']
-      TYPE_MAILLAGE = args['TYPE_MAILLAGE']
       NB_NOEUD_COUPE = args['NB_NOEUD_COUPE']
-      if NB_NOEUD_COUPE ==None : NB_NOEUD_COUPE = 5
-      LNOFO = FOND_FISS.FOND_______NOEU.get()
-      RECOL = False
-# Cas double fond de fissure : par convention les noeuds sont ceux de fond_inf
-      if LNOFO==None :
-         RECOL = True
-         LNOFO = FOND_FISS.FONDINF____NOEU.get()
-         if LNOFO==None : UTMESS('F','RUPTURE0_11')
-      LNOFO = map(string.rstrip,LNOFO)
-      Nbfond = len(LNOFO)
 
-      if MODELISATION=='3D' :
-#   ----------Mots cles TOUT, NOEUD, SANS_NOEUD -------------
-        Typ = FOND_FISS.FOND_______TYPE.get()
-        if (Typ[0]=='SEG2    ') or (Typ[0]=='SEG3    ' and TOUT=='OUI') :
-           pas = 1
-        elif (Typ[0]=='SEG3    ') : 
-           pas = 2
-        else :
-           UTMESS('F','RUPTURE0_12')
-####
-        NO_SANS = []
-        NO_AVEC = []
-        if GROUP_NO!=None :
-          collgrno = MAILLAGE.GROUPENO.get()
-          cnom = MAILLAGE.NOMNOE.get()
-          if type(GROUP_NO) not in EnumTypes : GROUP_NO = (GROUP_NO,)
-          for m in range(len(GROUP_NO)) :
-            ngrno=GROUP_NO[m].ljust(8).upper()
-            if ngrno not in collgrno.keys() :
-              UTMESS('F','RUPTURE0_13',valk=ngrno)
-            for i in range(len(collgrno[ngrno])) : NO_AVEC.append(cnom[collgrno[ngrno][i]-1])
-          NO_AVEC= map(string.rstrip,NO_AVEC)
-        if NOEUD!=None : 
-          if type(NOEUD) not in EnumTypes : NO_AVEC = (NOEUD,)
-          else : NO_AVEC = NOEUD
-        if SANS_GROUP_NO!=None :
-          collgrno = MAILLAGE.GROUPENO.get()
-          cnom = MAILLAGE.NOMNOE.get()
-          if type(SANS_GROUP_NO) not in EnumTypes : SANS_GROUP_NO = (SANS_GROUP_NO,)
-          for m in range(len(SANS_GROUP_NO)) :
-            ngrno=SANS_GROUP_NO[m].ljust(8).upper()
-            if ngrno not in collgrno.keys() :
-              UTMESS('F','RUPTURE0_13',valk=ngrno)
-            for i in range(len(collgrno[ngrno])) : NO_SANS.append(cnom[collgrno[ngrno][i]-1])
-          NO_SANS= map(string.rstrip,NO_SANS)
-        if SANS_NOEUD!=None : 
-          if type(SANS_NOEUD) not in EnumTypes : NO_SANS = (SANS_NOEUD,)
-          else : NO_SANS = SANS_NOEUD
-# Creation de la liste des noeuds du fond a traiter : Lnf1
-        Lnf1 = []
-        Nbf1 = 0
-        if len(NO_AVEC)!=0 :
-          for i in range(len(NO_AVEC)) :
-            if NO_AVEC[i] in LNOFO : 
-              Lnf1.append(NO_AVEC[i])
-              Nbf1 = Nbf1 +1
-            else : 
-              UTMESS('F','RUPTURE0_15',valk=NO_AVEC[i])
-        else :
-           for i in range(0,Nbfond,pas) :
-              if not (LNOFO[i] in NO_SANS) :
-                 Lnf1.append(LNOFO[i])
-                 Nbf1 = Nbf1 +1
-      else :
-        Lnf1 = LNOFO
-        Nbf1 = 1
+#     Verification du type des mailles de FOND_FISS
+#     ---------------------------------------------
+
+      verif_type_fond_fiss(ndim,FOND_FISS)
+
+#     Recuperation de la liste des noeuds du fond issus de la sd_fond_fiss : Lnoff, de longueur Nnoff
+#     ------------------------------------------------------------------------------------------------
+
+      Lnoff = get_noeud_fond_fiss(FOND_FISS)
+      Nnoff = len(Lnoff)
+
+#     Creation de la liste des noeuds du fond a calculer : Lnocal, de longueur Nnocal
+#     (obtenue par restriction de Lnoff avec TOUT, NOEUD, SANS_NOEUD)
+#     ----------------------------------------------------------------------------
+
+      Lnocal = get_noeud_a_calculer(Lnoff,ndim,FOND_FISS,MAILLAGE,EnumTypes,args)
+      Nnocal = len(Lnocal)
         
-##### Cas maillage libre###########
-# creation des directions normales et macr_lign_coup
+#     ------------------------------------------------------------------
+#     I.1 SOUS-CAS MAILLAGE LIBRE
+#     ------------------------------------------------------------------
+
+#     creation des directions normales et macr_lign_coup
       if TYPE_MAILLAGE =='LIBRE':
-        if not RESULTAT : UTMESS('F','RUPTURE0_16')
-        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',
-                                            NOEUD=LNOFO,
-                                            RESULTAT=RESULTAT,
-                                            NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',),
-                                            OPERATION='EXTRACTION',),);
-        tcoorf=__NCOFON.EXTR_TABLE()
-        DETRUIRE(CONCEPT=_F(NOM=__NCOFON),INFO=1) 
-        nbt = len(tcoorf['NOEUD'].values()['NOEUD'])
-        xs=NP.array(tcoorf['COOR_X'].values()['COOR_X'][:nbt])
-        ys=NP.array(tcoorf['COOR_Y'].values()['COOR_Y'][:nbt])
-        if ndim==2 : zs=NP.zeros(nbt)
-        elif ndim==3 : zs=NP.array(tcoorf['COOR_Z'].values()['COOR_Z'][:nbt])
-        ns = tcoorf['NOEUD'].values()['NOEUD'][:nbt]
-        ns = map(string.rstrip,ns)
-        l_coorf =  [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)]
-        l_coorf = [(i[0],i[1:]) for i in l_coorf]
-        d_coorf = dict(l_coorf) 
-# Coordonnee d un pt quelconque des levres pr determination sens de propagation
-        cmail=MAILLAGE.NOMMAI.get()
-        for i in range(len(cmail)) :
-            if cmail[i] == ListmaS[0] : break
-        colcnx=MAILLAGE.CONNEX.get()
-        cnom = MAILLAGE.NOMNOE.get()
-        NO_TMP = []
-        for k in range(len(colcnx[i+1])) : NO_TMP.append(cnom[colcnx[i+1][k]-1])
-        __NCOLEV=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees pt levre',
-                                          NOEUD = NO_TMP,
-                                           RESULTAT=RESULTAT,
-                                           NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',),
-                                           OPERATION='EXTRACTION',),);
-        tcoorl=__NCOLEV.EXTR_TABLE()
-        DETRUIRE(CONCEPT=_F(NOM=__NCOLEV),INFO=1) 
-        nbt = len(tcoorl['NOEUD'].values()['NOEUD'])
-        xl=moy(tcoorl['COOR_X'].values()['COOR_X'][:nbt])
-        yl=moy(tcoorl['COOR_Y'].values()['COOR_Y'][:nbt])
-        zl=moy(tcoorl['COOR_Z'].values()['COOR_Z'][:nbt])
-        Plev = NP.array([xl, yl, zl])
-# Calcul des normales a chaque noeud du fond
-        v1 =  NP.array(VECT_K1)
-        VN = [None]*Nbfond
-        absfon = [0,]
-        if MODELISATION=='3D' :
-          DTANOR = FOND_FISS.DTAN_ORIGINE.get()
-          Pfon2 = NP.array([d_coorf[LNOFO[0]][0],d_coorf[LNOFO[0]][1],d_coorf[LNOFO[0]][2]])
-          VLori = Pfon2 - Plev
-          if DTANOR != None :
-            VN[0] = NP.array(DTANOR)
-          else :
-            Pfon3 = NP.array([d_coorf[LNOFO[1]][0],d_coorf[LNOFO[1]][1],d_coorf[LNOFO[1]][2]])
-            VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
-            VN[0] = NP.array(cross_product(VT,v1))
-          for i in range(1,Nbfond-1):
-            Pfon1 = NP.array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]])
-            Pfon2 = NP.array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]])
-            Pfon3 = NP.array([d_coorf[LNOFO[i+1]][0],d_coorf[LNOFO[i+1]][1],d_coorf[LNOFO[i+1]][2]])
-            absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
-            absfon.append(absf)
-            VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
-            VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
-            VN[i] = NP.array(cross_product(VT,v1)) 
-            VN[i] = VN[i]/NP.sqrt(NP.dot(NP.transpose(VN[i]),VN[i]))
-          i = Nbfond-1
-          Pfon1 = NP.array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]])
-          Pfon2 = NP.array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]])
-          VLextr = Pfon2 - Plev
-          absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
-          absfon.append(absf)
-          DTANEX = FOND_FISS.DTAN_EXTREMITE.get()
-          if DTANEX != None :
-            VN[i] = NP.array(DTANEX)
-          else :
-            VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
-            VN[i] = NP.array(cross_product(VT,v1))
-          dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)])  
-          dicVN = dict([(LNOFO[i],VN[i]) for i in range(Nbfond)])
-#Sens de la tangente       
-          v = cross_product(VLori,VLextr)
-          sens = NP.sign(NP.dot(NP.transpose(v),v1))
-#Cas 2D              
-        if MODELISATION!='3D' :
-          DTANOR = False
-          DTANEX = False
-          VT = NP.array([0.,0.,1.])
-          VN = NP.array(cross_product(v1,VT))
-          dicVN = dict([(LNOFO[0],VN)])
-          Pfon = NP.array([d_coorf[LNOFO[0]][0],d_coorf[LNOFO[0]][1],d_coorf[LNOFO[0]][2]])
-          VLori = Pfon - Plev
-          sens = NP.sign(NP.dot(NP.transpose(VN),VLori))
-#Extraction dep sup/inf sur les normales          
-        TlibS = [None]*Nbf1
-        TlibI = [None]*Nbf1
-        if NB_NOEUD_COUPE < 3 : 
-          UTMESS('A','RUPTURE0_17')
-          NB_NOEUD_COUPE = 5
-        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.get_concept(n_modele)
-        dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
-        for i in range(Nbf1):
-          Porig = NP.array(d_coorf[Lnf1[i]] )
-          if Lnf1[i]==LNOFO[0] and DTANOR : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]
-          elif Lnf1[i]==LNOFO[Nbfond-1] and DTANEX : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]
-          else : Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]*sens
-          TlibS[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
-                NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaS),
-                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),);
-          if SYME_CHAR=='SANS':
-            TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
-                  NOM_CHAM='DEPL',MODELE=MODEL, VIS_A_VIS=_F(MAILLE_1 = ListmaI),
-                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),);
+    
+         if not RESULTAT :
+            UTMESS('F','RUPTURE0_16')
+
+         ListmaS = FOND_FISS.LEVRESUP___MAIL.get()
+
+         if not ListmaS :
+            UTMESS('F','RUPTURE0_19')
+
+         if SYME_CHAR == 'SANS':
+            ListmaI = FOND_FISS.LEVREINF___MAIL.get()
+
+#        Dictionnaire des coordonnees des noeuds du fond 
+         d_coorf = get_coor_libre(self,Lnoff,RESULTAT,ndim)
+
+#        Coordonnee d un pt quelconque des levres pour determination sens de propagation
+         Plev = get_Plev(self,MAILLAGE,ListmaS,RESULTAT)
+
+#        Calcul des normales a chaque noeud du fond
+         if ndim == 3 :
+            DTANOR = FOND_FISS.DTAN_ORIGINE.get()
+            DTANEX = FOND_FISS.DTAN_EXTREMITE.get()
+         elif ndim ==2 :
+            DTANOR = False
+            DTANEX = False
+         (dicVN, dicoF, sens) = get_normale(VECT_K1,Nnoff,ndim,DTANOR,DTANEX,d_coorf,Lnoff,Plev)
 
+#        Extraction dep sup/inf sur les normales          
+         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.get_concept(n_modele)
+         dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
+
+         (TlibS,TlibI) = get_tab_dep(self,Lnocal,Nnocal,Nnoff,d_coorf,Lnoff,DTANOR,DTANEX,ABSC_CURV_MAXI,dicVN,sens,RESULTAT,MODEL,
+                                     ListmaS,ListmaI,NB_NOEUD_COUPE,dmax,SYME_CHAR)
+
+
+
+#        A eclaircir
+         Lnofon = Lnocal
+         Nbnofo = Nnocal
+
+#     ------------------------------------------------------------------
+#     I.2 SOUS-CAS MAILLAGE REGLE
+#     ------------------------------------------------------------------
 
-##### Cas maillage regle###########
       else:
-#   ---------- Dictionnaires des levres  -------------  
-        NnormS = FOND_FISS.SUPNORM____NOEU.get()
-        if NnormS==None : 
-          UTMESS('F','RUPTURE0_19')
-        NnormS = map(string.rstrip,NnormS)
-        if LNOFO[0]==LNOFO[-1] and MODELISATION=='3D' : Nbfond=Nbfond-1  # Cas fond de fissure ferme
-        NnormS = [[LNOFO[i],NnormS[i*20:(i+1)*20]] for i in range(0,Nbfond)]
-        NnormS = [(i[0],i[1][0:]) for i in NnormS]
-        dicoS = dict(NnormS)
-        if SYME_CHAR=='SANS':
-           NnormI = FOND_FISS.INFNORM____NOEU.get()
-           if NnormI==None : 
-             UTMESS('F','RUPTURE0_20')
-           NnormI = map(string.rstrip,NnormI)
-           NnormI = [[LNOFO[i],NnormI[i*20:(i+1)*20]] for i in range(0,Nbfond)]
-           NnormI = [(i[0],i[1][0:]) for i in NnormI]
-           dicoI = dict(NnormI)
-
-#   ---------- Dictionnaire des coordonnees  -------------  
-        if RESULTAT :
-          Ltot = LNOFO
-          for i in range(Nbf1) :
-            for k in range(0,20) :
-              if dicoS[Lnf1[i]][k] !='': Ltot.append(dicoS[Lnf1[i]][k])
-          if SYME_CHAR=='SANS':
-            for i in range(Nbf1) :
-              for k in range(0,20) :
-                if dicoI[Lnf1[i]][k] !='': Ltot.append(dicoI[Lnf1[i]][k])
-          Ltot=dict([(i,0) for i in Ltot]).keys()
-          __NCOOR=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds des levres',
-                                            NOEUD=Ltot,
-                                            RESULTAT=RESULTAT,
-                                            NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',),
-                                            OPERATION='EXTRACTION',),);
-          tcoor=__NCOOR.EXTR_TABLE()
-          DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)  
-        else :  
-          if SYME_CHAR=='SANS':
-            __NCOOR=CALC_TABLE(TABLE=TABL_DEPL_SUP,
-                        ACTION=_F(OPERATION = 'COMB',NOM_PARA='NOEUD',TABLE=TABL_DEPL_INF,))
-            tcoor=__NCOOR.EXTR_TABLE()
-            DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)  
-          else :
-            tcoor=TABL_DEPL_SUP.EXTR_TABLE()
-        nbt = len(tcoor['NOEUD'].values()['NOEUD'])
-        xs=NP.array(tcoor['COOR_X'].values()['COOR_X'][:nbt])
-        ys=NP.array(tcoor['COOR_Y'].values()['COOR_Y'][:nbt])
-        if ndim==2 : zs=NP.zeros(nbt)
-        elif ndim==3 : zs=NP.array(tcoor['COOR_Z'].values()['COOR_Z'][:nbt])
-        ns = tcoor['NOEUD'].values()['NOEUD'][:nbt]
-        ns = map(string.rstrip,ns)
-        l_coor =  [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)]
-        l_coor = [(i[0],i[1:]) for i in l_coor]
-        d_coor = dict(l_coor)
-
-#   ---------- Abscisse curviligne du fond  -------------  
-        absfon = [0,]
-        for i in range(Nbfond-1) :
-          Pfon1 = NP.array([d_coor[LNOFO[i]][0],d_coor[LNOFO[i]][1],d_coor[LNOFO[i]][2]])
-          Pfon2 = NP.array([d_coor[LNOFO[i+1]][0],d_coor[LNOFO[i+1]][1],d_coor[LNOFO[i+1]][2]])
-          absf = NP.sqrt(NP.dot(NP.transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i]
-          absfon.append(absf)
-        dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)])
+#        Dictionnaires des levres 
+         dicoS = get_dico_levres('sup',FOND_FISS,ndim,Lnoff,Nnoff)
+         dicoI= {}
+         if SYME_CHAR=='SANS':
+            dicoI = get_dico_levres('inf',FOND_FISS,ndim,Lnoff,Nnoff)
+
+#        Dictionnaire des coordonnees  
+         d_coor = get_coor_regle(self,RESULTAT,ndim,Lnoff,Lnocal,dicoS,SYME_CHAR,dicoI,TABL_DEPL_SUP,TABL_DEPL_INF)
+
+#        Abscisse curviligne du fond
+         dicoF = get_absfon(Lnoff,Nnoff,d_coor)
+          
+#        Noeuds LEVRE_SUP et LEVRE_INF
+         (Lnofon, Lnosup, Lnoinf) = get_noeuds_perp_regle(Lnocal,d_coor,dicoS,dicoI,Lnoff,
+                                                          PREC_VIS_A_VIS,ABSC_CURV_MAXI,SYME_CHAR,rmprec,precn)
+         Nbnofo = len(Lnofon)
+
+#  ------------------------------------------------------------------
+#  II. CAS X-FEM
+#  ------------------------------------------------------------------
 
-     
-# ---Noeuds LEVRE_SUP et LEVRE_INF: ABSC_CURV_MAXI et PREC_VIS_A_VIS-----
-   
-        NBTRLS = 0
-        NBTRLI = 0
-        Lnosup = [None]*Nbf1
-        Lnoinf = [None]*Nbf1
-        Nbnofo = 0
-        Lnofon = []
-        precv = PREC_VIS_A_VIS
-        if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI
-        else                   : rmax = 100
-        precn = precv * rmax
-        rmprec= rmax*(1.+precv/10.)
-        for i in range(0,Nbf1) :
-           Pfon = NP.array([d_coor[Lnf1[i]][0],d_coor[Lnf1[i]][1],d_coor[Lnf1[i]][2]])
-           Tmpsup = []
-           Tmpinf = []
-           itots = 0
-           itoti = 0
-           NBTRLS = 0
-           NBTRLI = 0
-           for k in range(0,20) :
-              if dicoS[Lnf1[i]][k] !='':
-                 itots = itots +1
-                 Nsup =  dicoS[Lnf1[i]][k]
-                 Psup = NP.array([d_coor[Nsup][0],d_coor[Nsup][1],d_coor[Nsup][2]])
-                 abss = NP.sqrt(NP.dot(NP.transpose(Pfon-Psup),Pfon-Psup))
-                 if abss<rmprec :
-                    NBTRLS = NBTRLS +1
-                    Tmpsup.append(dicoS[Lnf1[i]][k])
-              if SYME_CHAR=='SANS':
-                 if dicoI[Lnf1[i]][k] !='':
-                    itoti = itoti +1
-                    Ninf =  dicoI[Lnf1[i]][k]
-                    Pinf = NP.array([d_coor[Ninf][0],d_coor[Ninf][1],d_coor[Ninf][2]])
-                    absi = NP.sqrt(NP.dot(NP.transpose(Pfon-Pinf),Pfon-Pinf))
-# On verifie que les noeuds sont en vis a vis
-                    if abss<rmprec :
-                      dist = NP.sqrt(NP.dot(NP.transpose(Psup-Pinf),Psup-Pinf))
-                      if dist>precn : 
-                        UTMESS('A','RUPTURE0_21',valk=Lnf1[i])
-                      else :
-                        NBTRLI = NBTRLI +1
-                        Tmpinf.append(dicoI[Lnf1[i]][k])
-# On verifie qu il y a assez de noeuds
-           if NBTRLS < 3 : 
-              UTMESS('A+','RUPTURE0_22',valk=Lnf1[i])
-              if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: UTMESS('A+','RUPTURE0_23')
-              if itots<3 : UTMESS('A','RUPTURE0_24')
-              else : UTMESS('A','RUPTURE0_25')
-           elif (SYME_CHAR=='SANS') and (NBTRLI < 3) :
-              UTMESS('A+','RUPTURE0_26',valk=Lnf1[i])
-              if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: UTMESS('A+','RUPTURE0_23')
-              if itoti<3 : UTMESS('A','RUPTURE0_24')
-              else :UTMESS('A','RUPTURE0_25')
-#              UTMESS('A','RUPTURE0_23')
-           else :
-              Lnosup[Nbnofo] = Tmpsup
-              if SYME_CHAR=='SANS' : Lnoinf[Nbnofo] = Tmpinf
-              Lnofon.append(Lnf1[i])
-              Nbnofo = Nbnofo+1
-        if Nbnofo == 0 :
-          UTMESS('F','RUPTURE0_30')
-
-#------------- Cas X-FEM ---------------------------------
    elif FISSURE :
-     MAILLAGE = args['MAILLAGE']
-     DTAN_ORIG = args['DTAN_ORIG']
-     DTAN_EXTR = args['DTAN_EXTR']
-     dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
-#Projection du resultat sur le maillage lineaire initial     
-     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.get_concept(n_modele)
-     xcont = MODEL.xfem.XFEM_CONT.get()
-     if xcont[0] == 0 :
-       __RESX = RESULTAT
-# Si XFEM + contact : il faut reprojeter sur le maillage lineaire
-     if xcont[0] != 0 :
-       __MODLINE=AFFE_MODELE(MAILLAGE=MAILLAGE,
-                           AFFE=(_F(TOUT='OUI',
-                            PHENOMENE='MECANIQUE',
-                            MODELISATION=MODELISATION,),),);        
-       __RESX=PROJ_CHAMP(METHODE='ELEM',TYPE_CHAM='NOEU',NOM_CHAM='DEPL',
-                     RESULTAT=RESULTAT,
-                     MODELE_1=MODEL,
-                     MODELE_2=__MODLINE, );   
-#Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv)
-     Listfo = FISSURE.FONDFISS.get()
-     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,]
-# Cas fissure non necessairement plane     
-     if VECT_K1 == None :
-       i = 0
-       if MODELISATION=='3D' :
-         if DTAN_ORIG != None :
-           VP[0] = NP.array(DTAN_ORIG)
-           VP[0] = VP[0]/NP.sqrt(VP[0][0]**2+VP[0][1]**2+VP[0][2]**2)
-           VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
-           verif = NP.dot(NP.transpose(VP[0]),VN[0]) 
-           if abs(verif) > 0.01:
-             UTMESS('A','RUPTURE1_33',valr=[VN[0][0],VN[0][1],VN[0][2]])
-         else :
-           VN[0] = NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
-           VP[0] = NP.array([Vpropa[3+0],Vpropa[3+1],Vpropa[3+2]])
-         for i in range(1,Nbfond-1):
-           absf = Coorfo[4*i+3]
-           absfon.append(absf)
-           VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
-           VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]])
-           verif = NP.dot(NP.transpose(VN[i]),VN[i-1]) 
-           if abs(verif) < 0.98:
-             UTMESS('A','RUPTURE1_35',vali=[i-1,i])
-         i = Nbfond-1
-         absf =  Coorfo[4*i+3]
-         absfon.append(absf)
-         if DTAN_EXTR != None :
-           VP[i] = NP.array(DTAN_EXTR)
-           VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
-           verif = NP.dot(NP.transpose(VP[i]),VN[0]) 
-           if abs(verif) > 0.01:
-             UTMESS('A','RUPTURE1_34',valr=[VN[i][0],VN[i][1],VN[i][2]])
-         else :
-           VN[i] = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
-           VP[i] = NP.array([Vpropa[3+6*i],Vpropa[3+6*i+1],Vpropa[3+6*i+2]])
-       else : 
-         for i in range(0,Nbfond):
-           VP[i] = NP.array([Vpropa[2+4*i],Vpropa[3+4*i],0.])
-           VN[i] = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.])
-# Cas fissure plane (VECT_K1 donne)
-     if VECT_K1 != None :
-       v1 =  NP.array(VECT_K1)
-       v1  = v1/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
-       v1 =  NP.array(VECT_K1)
-       i = 0
-       if MODELISATION=='3D' :
-# Sens du vecteur VECT_K1       
-         v1x =NP.array([Vpropa[0],Vpropa[1],Vpropa[2]])
-         verif = NP.dot(NP.transpose(v1),v1x) 
-         if verif < 0 : v1 = -v1
-         VN = [v1]*Nbfond
-         if DTAN_ORIG != None :
-           VP[i] = NP.array(DTAN_ORIG)
-           VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2)
-           verif = NP.dot(NP.transpose(VP[i]),VN[0]) 
-           if abs(verif) > 0.01:
-             UTMESS('A','RUPTURE1_36')
-         else :
-           Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
-           Pfon3 = NP.array([Coorfo[4*(i+1)],Coorfo[4*(i+1)+1],Coorfo[4*(i+1)+2]])
-           VT = (Pfon3 - Pfon2)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
-           VP[0] = NP.array(cross_product(VT,v1))
-           VNi = NP.array([Vpropa[3],Vpropa[4],Vpropa[5]])
-           verif = NP.dot(NP.transpose(VP[i]),VNi) 
-           if abs(verif) < 0.99:
-             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 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
-           Pfon2 = NP.array([Coorfo[4*i],Coorfo[4*i+1],Coorfo[4*i+2]])
-           Pfon3 = NP.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)/NP.sqrt(NP.dot(NP.transpose(Pfon3-Pfon2),Pfon3-Pfon2))
-           VT = VT+(Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
-           VP[i] = NP.array(cross_product(VT,v1)) 
-           VP[i] = VP[i]/NP.sqrt(NP.dot(NP.transpose(VP[i]),VP[i]))
-           VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
-           verif = NP.dot(NP.transpose(VN[i]),VNi) 
-           if abs(verif) < 0.99:
-             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 = NP.array([Coorfo[4*(i-1)],Coorfo[4*(i-1)+1],Coorfo[4*(i-1)+2]])
-         Pfon2 = NP.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] = NP.array(DTAN_EXTR)
-           VP[i] = VP[i]/NP.sqrt(VP[i][0]**2+VP[i][1]**2+VP[i][2]**2)
-           verif = NP.dot(NP.transpose(VP[i]),VN[i]) 
-           if abs(verif) > 0.01:
-             UTMESS('A','RUPTURE1_37')
-         else :
-           VT = (Pfon2 - Pfon1)/NP.sqrt(NP.dot(NP.transpose(Pfon2-Pfon1),Pfon2-Pfon1))
-           VP[i] = NP.array(cross_product(VT,v1))
-           VNi = NP.array([Vpropa[6*i],Vpropa[6*i+1],Vpropa[6*i+2]])
-           verif = NP.dot(NP.transpose(VN[i]),VNi) 
-           if abs(verif) < 0.99 :
-             vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
-             UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
-       else :  
-         VT = NP.array([0.,0.,1.])
-         for i in range(0,Nbfond):
-           VP[i] = NP.array(cross_product(v1,VT))  
-           VN[i] = v1
-           VNi = NP.array([Vpropa[0+4*i],Vpropa[1+4*i],0.])
-           verif = NP.dot(NP.transpose(VN[i]),VNi) 
-           if abs(verif) < 0.99 :
-             vv =[VNi[0],VNi[1],VNi[2],VN[i][0],VN[i][1],VN[i][2],]
-             UTMESS('A','RUPTURE0_32',vali=[i],valr=vv)
-#Sens de la tangente   
-     if MODELISATION=='3D' : i = Nbfond/2
-     else : i = 0
-     Po =  NP.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',
-                   LIGN_COUPE=_F(NB_POINTS=3,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
-                                  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 :
-       sens = 1
-     else :
-       sens = -1
-     DETRUIRE(CONCEPT=_F(NOM=__Tabg),INFO=1) 
-# Extraction des sauts sur la fissure          
-     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 = NP.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
-        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) 
-       DETRUIRE(CONCEPT=_F(NOM=__RESX),INFO=1) 
+
+      MAILLAGE = args['MAILLAGE']
+      DTAN_ORIG = args['DTAN_ORIG']
+      DTAN_EXTR = args['DTAN_EXTR']
+      dmax  = PREC_VIS_A_VIS * ABSC_CURV_MAXI
+
+      (xcont,MODEL) = verif_resxfem(self,RESULTAT)
+      # incohérence entre le modèle et X-FEM
+      if not xcont :
+         UTMESS('F','RUPTURE0_4')
+
+#     Recuperation du resultat
+      __RESX = get_resxfem(self,xcont,RESULTAT,MAILLAGE,MODELISATION,MODEL)
+
+#     Recuperation des coordonnees des points du fond de fissure (x,y,z,absc_curv)
+      (Coorfo, Vpropa, Nnoff) = get_coor_xfem(args,FISSURE,ndim)
+
+#     Calcul de la direction de propagation en chaque point du fond
+      (VP,VN,absfon) = get_direction_xfem(Nnoff,Vpropa,Coorfo,VECT_K1,DTAN_ORIG,DTAN_EXTR,ndim)
+
+#     Sens de la tangente   
+      sens = get_sens_tangente_xfem(self,ndim,Nnoff,Coorfo,VP,ABSC_CURV_MAXI,__RESX,dmax)
+
+#     Extraction des sauts sur la fissure          
+      NB_NOEUD_COUPE = args['NB_NOEUD_COUPE']
+      TTSo = get_sauts_xfem(self,Nnoff,Coorfo,VP,sens,
+                            DTAN_ORIG,DTAN_EXTR,ABSC_CURV_MAXI,NB_NOEUD_COUPE,dmax,__RESX)
+
+      Lnofon = []
+      Nbnofo = Nnoff
+
+#     menage du resultat projete si contact
+      if xcont[0] != 0 :  
+         DETRUIRE(CONCEPT=_F(NOM=__RESX),INFO=1) 
    
-     if INFO==2 :
-        mcfact=[]
-        mcfact.append(_F(PARA='PT_FOND',LISTE_I=range(Nbfond)))
-        mcfact.append(_F(PARA='VN_X'        ,LISTE_R=[VN[i][0] for i in range(Nbfond)]))
-        mcfact.append(_F(PARA='VN_Y'        ,LISTE_R=[VN[i][1] for i in range(Nbfond)]))
-        mcfact.append(_F(PARA='VN_Z'        ,LISTE_R=[VN[i][2] for i in range(Nbfond)]))
-        mcfact.append(_F(PARA='VP_X'        ,LISTE_R=[VP[i][0] for i in range(Nbfond)]))
-        mcfact.append(_F(PARA='VP_Y'        ,LISTE_R=[VP[i][1] for i in range(Nbfond)]))
-        mcfact.append(_F(PARA='VP_Z'        ,LISTE_R=[VP[i][2] for i in range(Nbfond)]))
-        __resu2=CREA_TABLE(LISTE=mcfact,TITRE='             VECTEUR NORMAL A LA FISSURE    -    DIRECTION DE PROPAGATION')
-        aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__())
-        DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1)
+      affiche_xfem(self,INFO,Nnoff,VN,VP)
+
+#  ------------------------------------------------------------------
+#  III. CAS BATARD
+#  ------------------------------------------------------------------
    
    else :
-     Nbnofo = 1 
-     
-#   ----------Recuperation de la temperature au fond -------------  
+
+      Nbnofo = 1
+      Lnofon=[] 
+      
+      # a suprrimer qd menage 
+      Nnoff = 1 
+
+   #  creation des objets vides s'ils n'existent pas
+   #  de maniere a pouvoir les passer en argument des fonctions
+   #  c'est pas terrible : il faudrait harmoniser les noms entre les différents cas
+   if 'TlibS'  not in locals() : TlibS  = []
+   if 'TlibI'  not in locals() : TlibI  = []
+   if 'Lnosup' not in locals() : Lnosup = []
+   if 'Lnoinf' not in locals() : Lnoinf = []
+   if 'TTSo'   not in locals() : TTSo   = []
+   if 'VP'     not in locals() : VP     = []
+   if 'VN'     not in locals() : VN     = []
+   if 'dicoF'  not in locals() : dicoF  = []
+   if 'absfon' not in locals() : absfon = []
+   if 'd_coor' not in locals() : d_coor = []
+   
+   
+#  ------------------------------------------------------------------
+#  IV. RECUPERATION DE LA TEMPERATURE AU FOND
+#  ------------------------------------------------------------------
+
    if Tempe3D :
       Rth = self.get_concept(resuth)
+
       __TEMP=POST_RELEVE_T(ACTION=_F(INTITULE='Temperature fond de fissure',
-                                       NOEUD=Lnofon,TOUT_CMP='OUI',
-                                       RESULTAT=Rth,NOM_CHAM='TEMP',TOUT_ORDRE='OUI',
-                                       OPERATION='EXTRACTION',),);
+                                     NOEUD=Lnofon,
+                                     TOUT_CMP='OUI',
+                                     RESULTAT=Rth,
+                                     NOM_CHAM='TEMP',
+                                     TOUT_ORDRE='OUI',
+                                     OPERATION='EXTRACTION',),);
+
       tabtemp=__TEMP.EXTR_TABLE()
       DETRUIRE(CONCEPT=_F(NOM=__TEMP),INFO=1) 
    
+#  ------------------------------------------------------------------
+#  V. BOUCLE SUR NOEUDS DU FOND
+#  ------------------------------------------------------------------
 
-#   ------------------------------------------------------------------
-#                         BOUCLE SUR NOEUDS DU FOND
-#   ------------------------------------------------------------------
    for ino in range(0,Nbnofo) :
-      if FOND_FISS and INFO==2 :
-            texte="\n\n--> TRAITEMENT DU NOEUD DU FOND DE FISSURE: %s"%Lnofon[ino]
-            aster.affiche('MESSAGE',texte)
-      if FISSURE and INFO==2 :
-            texte="\n\n--> TRAITEMENT DU POINT DU FOND DE FISSURE NUMERO %s"%(ino+1)
-            aster.affiche('MESSAGE',texte)
-#   ------------------------------------------------------------------
-#                         TABLE 'DEPSUP'
-#   ------------------------------------------------------------------
-      if FOND_FISS : 
-         if TYPE_MAILLAGE =='LIBRE':
-            tabsup=TlibS[ino].EXTR_TABLE()
-            DETRUIRE(CONCEPT=_F(NOM=TlibS[ino]),INFO=1)
-         elif RESULTAT :
-            if MODELISATION=='AXIS' or MODELISATION=='C_PLAN' or MODELISATION=='D_PLAN':
-                __TSUP=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement SUP',
-                                              NOEUD=Lnosup[ino],
-                                              RESULTAT=RESULTAT,
-                                              NOM_CHAM='DEPL',
-                                              TOUT_ORDRE='OUI',
-                                              NOM_CMP=('DX','DY',),
-                                              OPERATION='EXTRACTION',),);
-            else :
-                __TSUP=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement SUP',
-                                              NOEUD=Lnosup[ino],
-                                              RESULTAT=RESULTAT,
-                                              NOM_CHAM='DEPL',
-                                              TOUT_ORDRE='OUI',
-                                              NOM_CMP=('DX','DY','DZ',),
-                                              OPERATION='EXTRACTION',),);
-            tabsup=__TSUP.EXTR_TABLE()
-            DETRUIRE(CONCEPT=_F(NOM=__TSUP),INFO=1)      
-         else :
-            tabsup=TABL_DEPL_SUP.EXTR_TABLE()
-            veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim)
-            Ls = [string.ljust(Lnosup[ino][i],8) for i in range(len(Lnosup[ino]))]
-            tabsup=tabsup.NOEUD==Ls
-      elif FISSURE :
-         tabsup = TTSo.INTITULE=='l.coupe%i'%(ino+1)
-      else :
-         tabsup=TABL_DEPL_SUP.EXTR_TABLE()
-         veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim)
+      
+      affiche_traitement(FOND_FISS,INFO,FISSURE,Lnofon,ino)
 
-#   ------------------------------------------------------------------
-#                          TABLE 'DEPINF'
-#   ------------------------------------------------------------------
-      if SYME_CHAR=='SANS' and not FISSURE : 
-         if FOND_FISS : 
-            if TYPE_MAILLAGE =='LIBRE':
-               tabinf=TlibI[ino].EXTR_TABLE()
-               DETRUIRE(CONCEPT=_F(NOM=TlibI[ino]),INFO=1)
-            elif RESULTAT :
-               if MODELISATION=='AXIS' or MODELISATION=='C_PLAN' or MODELISATION=='D_PLAN':
-                  __TINF=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement INF',
-                                             NOEUD=Lnoinf[ino],
-                                             RESULTAT=RESULTAT,
-                                             NOM_CHAM='DEPL',
-                                             TOUT_ORDRE='OUI',
-                                             NOM_CMP=('DX','DY'),
-                                             OPERATION='EXTRACTION',),);
-               else :
-                  __TINF=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement INF',
-                                             NOEUD=Lnoinf[ino],
-                                             RESULTAT=RESULTAT,
-                                             NOM_CHAM='DEPL',
-                                             TOUT_ORDRE='OUI',
-                                             NOM_CMP=('DX','DY','DZ',),
-                                             OPERATION='EXTRACTION',),);
-               tabinf=__TINF.EXTR_TABLE()   
-               DETRUIRE(CONCEPT=_F(NOM=__TINF),INFO=1)                 
-            else :
-               tabinf=TABL_DEPL_INF.EXTR_TABLE()
-               if TABL_DEPL_INF==None : UTMESS('F','RUPTURE0_35')
-               veri_tab(tabinf,TABL_DEPL_INF.nom,ndim)
-               Li = [string.ljust(Lnoinf[ino][i],8) for i in range(len(Lnoinf[ino]))]
-               tabinf=tabinf.NOEUD==Li
-         else :
-            if TABL_DEPL_INF==None : UTMESS('F','RUPTURE0_35')
-            tabinf=TABL_DEPL_INF.EXTR_TABLE()
-            veri_tab(tabinf,TABL_DEPL_INF.nom,ndim)
+#     table 'depsup' et 'depinf'
+      tabsup = get_tab(self,'sup',ino,TlibS,Lnosup,TTSo,
+                       FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL_SUP,ndim)
+      tabinf = get_tab(self,'inf',ino,TlibI,Lnoinf,TTSo,
+                       FOND_FISS,FISSURE,TYPE_MAILLAGE,RESULTAT,SYME_CHAR,TABL_DEPL_INF,ndim)
 
+#     les instants de post-traitement : creation de l_inst
+      (l_inst,PRECISION,CRITERE) = get_liste_inst(tabsup,args,LIST_ORDRE,NUME_ORDRE,INST,LIST_INST,EnumTypes)
 
-#   ------------------------------------------------------------------
-#               LES INSTANTS DE POST-TRAITEMENT
-#   ------------------------------------------------------------------
-      if 'INST' in tabsup.para : 
-         l_inst=None
-         l_inst_tab=tabsup['INST'].values()['INST']
-         l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() #elimine les doublons
-         l_inst_tab.sort()
-         if LIST_ORDRE !=None or NUME_ORDRE !=None :
-           l_ord_tab = tabsup['NUME_ORDRE'].values()['NUME_ORDRE']
-           l_ord_tab.sort()
-           l_ord_tab=dict([(i,0) for i in l_ord_tab]).keys() 
-           d_ord_tab= [[l_ord_tab[i],l_inst_tab[i]] for i in range(0,len(l_ord_tab))]
-           d_ord_tab= [(i[0],i[1]) for i in d_ord_tab]
-           d_ord_tab = dict(d_ord_tab)
-           if NUME_ORDRE !=None : 
-             if type(NUME_ORDRE) not in EnumTypes : NUME_ORDRE=(NUME_ORDRE,)
-             l_ord=list(NUME_ORDRE)
-           elif LIST_ORDRE !=None : 
-              l_ord = LIST_ORDRE.VALE.get() 
-           l_inst = []
-           for ord in l_ord :
-             if ord in l_ord_tab : l_inst.append(d_ord_tab[ord])
-             else :  
-               UTMESS('F','RUPTURE0_37',vali=ord)
-           PRECISION = 1.E-6
-           CRITERE='ABSOLU'
-         elif INST !=None or LIST_INST !=None :
-            CRITERE = args['CRITERE']
-            PRECISION = args['PRECISION']
-            if  INST !=None : 
-              if type(INST) not in EnumTypes : INST=(INST,)
-              l_inst=list(INST)
-            elif LIST_INST !=None : l_inst=LIST_INST.Valeurs()
-            for inst in l_inst  :
-               if CRITERE=='RELATIF' and inst!=0.: match=[x for x in l_inst_tab if abs((inst-x)/inst)<PRECISION]
-               else                              : match=[x for x in l_inst_tab if abs(inst-x)<PRECISION]
-               if len(match)==0 : 
-                 UTMESS('F','RUPTURE0_38',valr=inst)
-               if len(match)>=2 :
-                 UTMESS('F','RUPTURE0_39',valr=inst)
-         else :
-            l_inst=l_inst_tab
-            PRECISION = 1.E-6
-            CRITERE='ABSOLU'
-      else :
-         l_inst  = [None,]
-   
-#   ------------------------------------------------------------------
+#     ------------------------------------------------------------------
 #                         BOUCLE SUR LES INSTANTS
-#   ------------------------------------------------------------------
-      for iord in range(len(l_inst)) :
-        inst=l_inst[iord]
-        if INFO==2 and inst!=None:
-            texte="#=================================================================================\n"
-            texte=texte+"==> INSTANT: %f"%inst
-            aster.affiche('MESSAGE',texte)
-        if inst!=None:
-           if PRECISION == None : PRECISION = 1.E-6
-           if CRITERE == None : CRITERE='ABSOLU'
-           if inst==0. :
-             tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
-             if SYME_CHAR=='SANS'and not FISSURE: tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
-           else :
-             tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION)
-             if SYME_CHAR=='SANS' and not FISSURE: tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION)
-        else :
-           tabsupi=tabsup
-           if SYME_CHAR=='SANS' and not FISSURE : tabinfi=tabinf
-
-#     --- LEVRE SUP :  "ABSC_CURV" CROISSANTES, < RMAX ET DEP ---
-        abscs = getattr(tabsupi,'ABSC_CURV').values()
-        if not FISSURE :
-          if not FOND_FISS :
-            refs=copy.copy(abscs)
-            refs.sort()
-            if refs!=abscs :
-               mctabl='TABL_DEPL_INF' 
-               UTMESS('F','RUPTURE0_40',valk=mctabl)
-            if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI
-            else                    : rmax = abscs[-1]
-            precv = PREC_VIS_A_VIS
-            rmprec= rmax*(1.+precv/10.)
-            refsc=[x for x in refs if x<rmprec]
-            nbval = len(refsc)
-          else :
-            nbval=len(abscs)
-          abscs=NP.array(abscs[:nbval])
-          coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval])
-          coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval])
-          if ndim==2 :  cozs=NP.zeros(nbval)
-          elif ndim==3 :  cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval])
+#     ------------------------------------------------------------------
+      for iord,inst in enumerate(l_inst) :
+
+#        impression de l'instant de calcul
+         affiche_instant(INFO,inst)
+
+#        recuperation de la table au bon instant : tabsupi (et tabinfi)
+         tabsupi = get_tab_inst('sup',inst,FISSURE,SYME_CHAR,PRECISION,CRITERE,tabsup,tabinf)
+         tabinfi = get_tab_inst('inf',inst,FISSURE,SYME_CHAR,PRECISION,CRITERE,tabsup,tabinf)
+
+#        recupération des déplacements sup et inf : ds et di
+         (abscs,ds) = get_depl_sup(FISSURE,FOND_FISS,rmprec,RESULTAT,tabsupi,ndim,d_coor,Lnofon,ino)
+         (absci,di) = get_depl_inf(FISSURE,FOND_FISS,rmprec,RESULTAT,tabinfi,ndim,d_coor,Lnofon,ino,SYME_CHAR)
+
+#        récupération des propriétés materiau avec temperature 
+         if Tempe3D :
+            (e,nu,coefd,coefd3,coefg,coefg3) = get_propmat_tempe(MATER,tabtemp,Lnofon,ino,inst,PRECISION)
+
+#        TESTS NOMBRE DE NOEUDS
+         nbval = len(abscs)
+
+         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
           
-          if FOND_FISS and not RESULTAT : #tri des noeuds avec abscisse
-            Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
-            abscs = NP.sqrt((coxs-Pfon[0])**2+(coys-Pfon[1])**2+(cozs-Pfon[2])**2)
-            tabsupi['Abs_fo'] = abscs
-            tabsupi.sort('Abs_fo')
-            abscs = getattr(tabsupi,'Abs_fo').values()
-            abscs=NP.array(abscs[:nbval])
-            coxs=NP.array(tabsupi['COOR_X'].values()['COOR_X'][:nbval])
-            coys=NP.array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval])
-            if ndim==2 :  cozs=NP.zeros(nbval)
-            elif ndim==3 :  cozs=NP.array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval])
+         else :  
+
+#           SI NBVAL >= 3 : 
+#            
+#           récupération de la matrice de changement de repère 
+#          (je ne comprends pas pourquoi elle dépend de l'instant)
+            pgl = get_pgl(SYME_CHAR,FISSURE,VECT_K1,ino,VP,VN,tabsupi,tabinfi,nbval,ndim)
+
+#           calcul du saut de déplacements dans le nouveau repère
+            saut = get_saut(self,pgl,ds,di,INFO,FISSURE,SYME_CHAR,abscs,ndim)
+
+#           CALCUL DES K1, K2, K3
+            (isig,kgsig,saut2) = get_kgsig(saut,nbval,coefd,coefd3)
             
-          if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE':
-            for ks in range(0,nbval) :
-              texte="NOEUD RETENU POUR LA LEVRE SUP: %s  %f"%(Lnosup[ino][ks],abscs[ks])
-              aster.affiche('MESSAGE',texte)
-          dxs=NP.array(tabsupi['DX'].values()['DX'][:nbval])
-          dys=NP.array(tabsupi['DY'].values()['DY'][:nbval])
-          if ndim==2 : dzs=NP.zeros(nbval)
-          elif ndim==3 : dzs=NP.array(tabsupi['DZ'].values()['DZ'][:nbval])
-          
-#     --- LEVRE INF :  "ABSC_CURV" CROISSANTES et < RMAX ---
-        if SYME_CHAR=='SANS' and not FISSURE : 
-          absci = getattr(tabinfi,'ABSC_CURV').values()
-          if not FOND_FISS :
-            refi=copy.copy(absci)
-            refi.sort()
-            if refi!=absci :
-                mctabl='TABL_DEPL_SUP' 
-                UTMESS('F','RUPTURE0_40',valk=mctabl)
-            refic=[x for x in refi if x<rmprec]
-            nbvali=len(refic)
-          else :
-            nbvali=len(absci)
-          if nbvali!=nbval :
-             if FOND_FISS : 
-                UTMESS('A+','RUPTURE0_42')
-                UTMESS('A','RUPTURE0_43',valk=Lnofon[i],vali=[len(refsc),len(refic)])
-             else:
-                UTMESS('A','RUPTURE0_42')
-          nbval=min(nbval,nbvali)
-          absci=NP.array(absci[:nbval])
-          coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval])
-          coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval])
-          if ndim==2 : cozi=NP.zeros(nbval)
-          elif ndim==3 : cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval])
-#     --- ON VERIFIE QUE LES NOEUDS SONT EN VIS_A_VIS  (SYME=SANS)   ---
-          if not FOND_FISS :
-            precn = precv * rmax
-            dist=(coxs-coxi)**2+(coys-coyi)**2+(cozs-cozi)**2
-            dist=NP.sqrt(dist)
-            for d in dist :
-               if d>precn : UTMESS('F','RUPTURE0_44')
-          
-          if FOND_FISS and not RESULTAT :#tri des noeuds avec abscisse
-            Pfon = NP.array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
-            absci = NP.sqrt((coxi-Pfon[0])**2+(coyi-Pfon[1])**2+(cozi-Pfon[2])**2)
-            tabinfi['Abs_fo'] = absci
-            tabinfi.sort('Abs_fo')
-            absci = getattr(tabinfi,'Abs_fo').values()
-            absci=NP.array(abscs[:nbval])
-            coxi=NP.array(tabinfi['COOR_X'].values()['COOR_X'][:nbval])
-            coyi=NP.array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval])
-            if ndim==2 :  cozi=NP.zeros(nbval)
-            elif ndim==3 :  cozi=NP.array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval])
+#           calcul des K et de G par les methodes 1, 2 et 3
+            kg1 = get_meth1(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim)
+            kg2 = get_meth2(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim)
+            kg3 = get_meth3(self,abscs,coefg,coefg3,kgsig,isig,saut2,INFO,ndim)
 
-          dxi=NP.array(tabinfi['DX'].values()['DX'][:nbval])
-          dyi=NP.array(tabinfi['DY'].values()['DY'][:nbval])
-          if ndim==2 : dzi=NP.zeros(nbval)
-          elif ndim==3 : dzi=NP.array(tabinfi['DZ'].values()['DZ'][:nbval])
-          
-          if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE':
-            for ki in range(0,nbval) :
-               texte="NOEUD RETENU POUR LA LEVRE INF: %s  %f"%(Lnoinf[ino][ki],absci[ki])
-               aster.affiche('MESSAGE',texte)
-
-#     --- CAS FISSURE X-FEM ---
-        if  FISSURE : 
-           H1 = getattr(tabsupi,'H1X').values()
-           nbval = len(H1)
-           H1 = complete(H1)
-           E1 = getattr(tabsupi,'E1X').values()
-           E1 = complete(E1)
-           dxs = 2*(H1 + NP.sqrt(abscs)*E1)
-           H1 = getattr(tabsupi,'H1Y').values()
-           E1 = getattr(tabsupi,'E1Y').values()
-           H1 = complete(H1)
-           E1 = complete(E1)
-           dys = 2*(H1 + NP.sqrt(abscs)*E1)
-           H1 = getattr(tabsupi,'H1Z').values()
-           E1 = getattr(tabsupi,'E1Z').values()
-           H1 = complete(H1)
-           E1 = complete(E1)
-           dzs = 2*(H1 + NP.sqrt(abscs)*E1)
-           abscs=NP.array(abscs[:nbval])
-
-#   ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE -----------  
-        if Tempe3D :
-           tempeno=tabtemp.NOEUD==Lnofon[ino]
-           tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
-           nompar = ('TEMP',)
-           valpar = (tempeno.TEMP.values()[0],)
-           nomres=['E','NU']
-           valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F')
-           e = valres[0]
-           nu = valres[1] 
-           coefd  = e * NP.sqrt(2.*pi)      / ( 8.0 * (1. - nu**2))
-           coefd3 = e*NP.sqrt(2*pi) / ( 8.0 * (1. + nu))
-           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 : 
+#        creation de la table 
+         kg=NP.array([kg1,kg2,kg3])
+         kg=NP.transpose(kg)
+
+         tabout = get_tabout(self,kg,TITRE,FOND_FISS,MODELISATION,FISSURE,ndim,ino,inst,iord,
+                             Lnofon,dicoF,absfon,Nnoff,tabout)
+
+#     Fin de la boucle sur les instants
+
+#  Fin de la boucle sur les noeuds du fond de fissure
+
+#  Tri de la table si nécessaire
+   if len(l_inst)!=1 and ndim == 3 :
+      tabout=CALC_TABLE(reuse=tabout,
+                        TABLE=tabout,
+                        ACTION=_F(OPERATION = 'TRI',
+                                  NOM_PARA=('INST','ABSC_CURV','METHODE'),
+                                  ORDRE='CROISSANT'))
 
-#     ------------------------------------------------------------------
-#                    CHANGEMENT DE REPERE
-#     ------------------------------------------------------------------
-#
-#       1 : VECTEUR NORMAL AU PLAN DE LA FISSURE
-#           ORIENTE LEVRE INFERIEURE VERS LEVRE SUPERIEURE
-#       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 =  NP.array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.])
-            ve =  NP.array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.])
-            v2 =  ve-vo
-         else :
-            vo = NP.array([ coxs[-1], coys[-1], cozs[-1]])
-            ve = NP.array([ coxs[0], coys[0], cozs[0]])
-            v2 =  ve-vo
-         if not FISSURE :  v1 =  NP.array(VECT_K1)
-         v2 =  v2/NP.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/NP.sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
-         v2 =  v2/NP.sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
-         v3  = NP.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  = NP.asarray([v1,v2,v3])
-         dpls = NP.asarray([dxs,dys,dzs])
-         dpls = NP.dot(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 = NP.asarray([dxi,dyi,dzi])
-            dpli = NP.dot(pgl,dpli)
-            saut=(dpls-dpli)
-         else :
-            dpli = [NP.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=NP.sign(NP.transpose(NP.resize(saut[:,-1],(nbval-1,3))))
-         isig=NP.sign(isig+0.001)
-         saut=saut*NP.array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval])
-         saut=saut**2
-         ksig = isig[:,1]
-         ksig = NP.array([ksig,ksig])
-         ksig = NP.transpose(ksig)
-         kgsig=NP.resize(ksig,(1,6))[0]
-#     ------------------------------------------------------------------
-#                           --- METHODE 1 ---
-#     ------------------------------------------------------------------
-         nabs = len(abscs)
-         x1 = abscs[1:-1]
-         x2 = abscs[2:nabs]
-         y1 = saut[:,1:-1]/x1
-         y2 = saut[:,2:nabs]/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 = NP.sqrt(kg1)*kgsig
-         kg1=NP.concatenate([kg1,[max(g),min(g)]])
-         vk  = NP.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 ---
-#     ------------------------------------------------------------------
-         nabs = len(abscs)
-         x1 = abscs[1:nabs]
-         y1 = saut[:,1:nabs]
-         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 = NP.sqrt(kg2)*kgsig
-         kg2=NP.concatenate([kg2,[max(g),min(g)]])
-         vk = NP.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 ---
-#     ------------------------------------------------------------------
-         nabs = len(abscs)
-         x1 = abscs[:-1]
-         x2 = abscs[1:nabs]
-         y1 = saut[:,:-1]
-         y2 = saut[:,1:nabs]
-         k  = (NP.sqrt(y2)*NP.sqrt(x2)+NP.sqrt(y1)*NP.sqrt(x1))*(x2-x1)
-         k  = NP.sum(NP.transpose(k), axis=0)
-         de = abscs[-1]
-         vk = (k/de**2)*isig[:,0]
-         g  = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2
-         kg3=NP.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 
-#     ------------------------------------------------------------------
-        kg=NP.array([kg1,kg2,kg3])
-        kg=NP.transpose(kg)
-        mcfact=[]
-        if TITRE != None :
-          titre = TITRE
-        else :
-          v = aster.__version__
-          titre = 'ASTER %s - CONCEPT CALCULE PAR POST_K1_K2_K3 LE &DATE A &HEURE \n'%v
-        if FOND_FISS and MODELISATION=='3D': 
-          mcfact.append(_F(PARA='NOEUD_FOND',LISTE_K=[Lnofon[ino],]*3))
-          mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[dicoF[Lnofon[ino]]]*3))
-        if FISSURE and MODELISATION=='3D': 
-          mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3))
-          mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[absfon[ino],]*3))
-        if FISSURE  and MODELISATION!='3D' and Nbfond!=1 :
-          mcfact.append(_F(PARA='PT_FOND',LISTE_I=[ino+1,]*3))
-        mcfact.append(_F(PARA='METHODE',LISTE_I=(1,2,3)))
-        mcfact.append(_F(PARA='K1_MAX' ,LISTE_R=kg[0].tolist() ))
-        mcfact.append(_F(PARA='K1_MIN' ,LISTE_R=kg[1].tolist() ))
-        mcfact.append(_F(PARA='K2_MAX' ,LISTE_R=kg[2].tolist() ))
-        mcfact.append(_F(PARA='K2_MIN' ,LISTE_R=kg[3].tolist() ))
-        if ndim==3 :
-          mcfact.append(_F(PARA='K3_MAX' ,LISTE_R=kg[4].tolist() ))
-          mcfact.append(_F(PARA='K3_MIN' ,LISTE_R=kg[5].tolist() ))
-        mcfact.append(_F(PARA='G_MAX'  ,LISTE_R=kg[6].tolist() ))
-        mcfact.append(_F(PARA='G_MIN'  ,LISTE_R=kg[7].tolist() ))
-        if  (ino==0 and iord==0) and inst==None :
-           tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
-        elif iord==0 and ino==0 and inst!=None :
-           mcfact=[_F(PARA='INST'  ,LISTE_R=[inst,]*3      )]+mcfact
-           tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
-        else :
-           if inst!=None : mcfact=[_F(PARA='INST'  ,LISTE_R=[inst,]*3     )]+mcfact
-           __tabi=CREA_TABLE(LISTE=mcfact,)
-           npara = ['K1_MAX','METHODE']
-           if inst!=None : npara.append('INST')
-           if FOND_FISS and MODELISATION=='3D' : npara.append('NOEUD_FOND')
-           tabout=CALC_TABLE(reuse=tabout,TABLE=tabout,TITRE = titre,
-                              ACTION=_F(OPERATION = 'COMB',NOM_PARA=npara,TABLE=__tabi,))
-
-# Tri de la table
-   if len(l_inst)!=1 and MODELISATION=='3D':
-      tabout=CALC_TABLE(reuse=tabout,TABLE=tabout,
-                      ACTION=_F(OPERATION = 'TRI',NOM_PARA=('INST','ABSC_CURV','METHODE'),ORDRE='CROISSANT'))
 
    return ier
  
index 6dbe737b05b553b499d4da2c073b9251cfcd56a0..287eb910bcddc6a22d932a0d5509e1ff964f477b 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF propa_fiss_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF propa_fiss_ops Macro  DATE 26/10/2010   AUTEUR MAHFOUZ D.MAHFOUZ 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -139,6 +139,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
   ASSE_MAILLAGE         =self.get_cmd('ASSE_MAILLAGE'  )
   LIRE_MAILLAGE    =self.get_cmd('LIRE_MAILLAGE'  )
   DEFI_FICHIER = self.get_cmd('DEFI_FICHIER'  )
+  DEFI_GROUP = self.get_cmd('DEFI_GROUP'  )
   CREA_TABLE    =self.get_cmd('CREA_TABLE'  )
   CALC_TABLE    =self.get_cmd('CALC_TABLE'  )
   PROPA_XFEM = self.get_cmd('PROPA_XFEM'  )
@@ -263,6 +264,11 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
        __Fis = [None]*(StepTot*len(FissAct))
        __Mod = [None]*StepTot
        mcsimp['TOLERANCE'] = args['TOLERANCE']
+       fiss = FissAct[0]
+       iret,ibid,mod_fiss = aster.dismoi('F','NOM_MODELE',fiss.nom,'FISS_XFEM')
+       mod_fiss=mod_fiss.strip()
+       MOD_FISS = self.get_concept(mod_fiss)
+
        for NumStep in range(0,StepTot) :
          
            aster.affiche('MESSAGE',' ------------------------')
@@ -296,7 +302,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
               aster.affiche('MESSAGE',' ------------------------')
               aster.affiche('MESSAGE',' CREATION DU MODELE FISSURE TEMPORAIRE')
               aster.affiche('MESSAGE',' ')
-              __Mod[NumStep] = MODI_MODELE_XFEM(MODELE_IN=args['MODELE'],FISSURE=(ListeFiss))
+              __Mod[NumStep] = MODI_MODELE_XFEM(MODELE_IN=MOD_FISS,FISSURE=(ListeFiss))
               mcsimp['LISTE_FISS'] = ListeFiss
               aster.affiche('MESSAGE',' ')
               aster.affiche('MESSAGE',' ------------------------')
@@ -515,7 +521,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
       MAIL_FISS1 =  Fiss['MAIL_ACTUEL']
       MFOND = Fiss['GROUP_MA_FOND']
       MFISS = Fiss['GROUP_MA_FISS']
-  
 #------------------------------------------------------------------
 # CAS 2a : MODELE 3D
 #
@@ -660,6 +665,23 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
 #
       if dime == 2 :
         mm[numfis] = MAIL_PY()
+        FISS_A = '%s_%i' %(MFISS,(it-1))
+        DEFI_GROUP(reuse =MAIL_FISS1,
+                 MAILLAGE=MAIL_FISS1,
+                 CREA_GROUP_NO=_F(OPTION='NOEUD_ORDO',
+                                  NOM='Nds_Plan',
+                                  GROUP_MA=FISS_A,),INFO=2);
+        DEFI_GROUP(reuse =MAIL_FISS1,
+                 MAILLAGE=MAIL_FISS1,
+                 DETR_GROUP_MA=_F(NOM='A',),
+                 CREA_GROUP_MA=_F(OPTION='APPUI',
+                                  NOM='A',
+                                  TYPE_APPUI='TOUT',
+                                  GROUP_NO='Nds_Plan',),INFO=2);
+        DEFI_GROUP(reuse =MAIL_FISS1,
+                 MAILLAGE=MAIL_FISS1,
+                 DETR_GROUP_NO=_F(NOM='Nds_Plan',),);
+
         mm[numfis].FromAster(MAIL_FISS1)
         
         (nno,ndim) = mm[numfis].cn.shape
@@ -701,7 +723,7 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
         fsi = mm[numfis].gma['%s_%i' %(MFISS,it-1)]
         fsi = NP.concatenate((fsi,NP.array([nbma])))
         mm[numfis].gma['%s_%i' %(MFISS,it)] = fsi.astype(int)
-  
 # Ajout Maille fond (POI1)
         NomMaillesEnPlus =     ['MF%s%i' %(ALPHABET[0], it+1)]
         num_maille = [ nbma + 2 ]
@@ -742,7 +764,6 @@ def propa_fiss_ops(self,METHODE_PROPA,INFO,**args):
     ma_tot = ASSE_MAILLAGE(MAILLAGE_1 = MAIL_STRUC,
                       MAILLAGE_2 = __MMX[Nbfissure-1],
                       OPERATION='SUPERPOSE',)
 #------------------------------------------------------------------
 # CAS 3 : METHODE_PROPA = 'INITIALISATION'
 #
index c427fa6b40c87dda7b9446d7b1aaec858bee9fe5..000bcb68916fa3659250ae2d738c9ed019d50bbd 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF raff_xfem_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF raff_xfem_ops Macro  DATE 12/10/2010   AUTEUR GENIAUT S.GENIAUT 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -57,10 +57,10 @@ def raff_xfem_ops(self,FISSURE,INFO,**args):
    else :
       nbfiss = 1
 
-#  formule distance pour une fissure: 1/exp(r)
-   __MDISTF=FORMULE(NOM_PARA=('X1','X2'),VALE= '1./exp(sqrt(X1**2+X2**2))');
-#  formule distance pour une interface: 1/exp(lsn)
-   __MDISTI=FORMULE(NOM_PARA=('X1'),VALE= '1./exp(sqrt(X1**2))');
+#  formule distance pour une fissure: -r
+   __MDISTF=FORMULE(NOM_PARA=('X1','X2'),VALE= '-1.*sqrt(X1**2+X2**2)');
+#  formule distance pour une interface: -r = -|lsn|
+   __MDISTI=FORMULE(NOM_PARA=('X1'),VALE= '-1.*sqrt(X1**2)');
 
    __CERR= [None]*nbfiss
    list_err=[]
index aeb7f070b59974c20e094c1fdb13acaadf431607..299727196e1d8db1a3e61520ae95503f19f6d504 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_calcul_aster Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF reca_calcul_aster Macro  DATE 21/09/2010   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -300,6 +300,19 @@ class CALCUL_ASTER:
       else:                  return self.norme
 
 
+  # ------------------------------------------------------------------------------
+  def verif_borne_gradient(self, val, dX):
+      """
+         Verification que les parametres perturbes sont bien dans l'intervalle defini par l'utilisateur
+         Sinon, on colle le parametre a la borne
+      """
+      print self.para
+      print self.LIST_PARA
+      for i in range(len(val)):
+         print i, val[i], dX[i]
+         # min
+      sys.exit()
+
   # ------------------------------------------------------------------------------
   def calcul_FG(self, val):
       """
index a9d9fd5462740a270fcb29f6bab116969d960e1c..7d4722a45d110b98fa6a92d70c10b755ccab75f6 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF recal Macro  DATE 26/05/2010   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF recal Macro  DATE 21/09/2010   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -466,11 +466,18 @@ class CALCULS_ASTER:
             for n in range(1,len(dX)+1):
                l = [0] * len(dX)
                l[n-1] = dX[n-1]
-               X = [ X0[i] * (1+l[i]) for i in range(len(dX)) ]
+#               X = [ X0[i] * (1+l[i]) for i in range(len(dX)) ]
+               X = []
+               for i in range(len(dX)):
+                  new_Xi = X0[i] * (1+l[i])
+                  if new_Xi > self.parametres[i][3]:
+                     UTMESS('I', 'RECAL0_75', valk=( str(self.parametres[i][0]), str(new_Xi), str(self.parametres[i][2]), str(self.parametres[i][3]), str(l[i]) ) )
+#                     new_Xi = X0[i] * (1-l[i])  # diff finie a gauche marche pas fort
+                  X.append( new_Xi )
+               #print 'X=', X
                dic = dict( zip( list_params, X ) )
                list_val.append( dic )
 
-
         # ----------------------------------------------------------------------------
         # Aiguillage vers INCLUDE
         # ----------------------------------------------------------------------------
@@ -508,16 +515,6 @@ class CALCULS_ASTER:
      """  Module permettant de lancer N+1 calculs via un mecanisme d'include
      """
 
-#      # Importation de commandes Aster
-#      try:
-#         import aster
-#         import Macro
-#         from Accas import _F
-#         from Cata import cata
-#         from Cata.cata import *
-#      except ImportError:
-#         raise "Simu_point_mat doit etre lance depuis Aster"
-
      try:
          import aster
          import Macro
@@ -527,13 +524,7 @@ class CALCULS_ASTER:
     
          # Declaration de toutes les commandes Aster
          import cata
-         for k,v in cata.__dict__.items() :
-           #print k,v
-           if isinstance(v, (OPER, MACRO)):
-             #print k,v
-             #self.jdc.current_context[k]= v
-             exec("from Cata.cata import %s" % k)
-         #self.jdc.current_context['_F']=cata.__dict__['_F']
+         from Cata.cata import *
      except Exception, e:
          raise "Le mode INCLUDE doit etre lance depuis Aster : \nErreur : " % e
 
@@ -578,7 +569,10 @@ class CALCULS_ASTER:
          # Lancement du calcul (par un include)
          # ----------------------------------------------------------------------------
          new = "fort.%s.new" % self.UNITE_INCLUDE
-         execfile(new)
+         try:
+            execfile(new)
+         except Exception, e:
+            UTMESS('F', 'RECAL0_49', valk=str(e))
 
 
          # ----------------------------------------------------------------------------
@@ -700,7 +694,7 @@ class CALCULS_ASTER:
         # ----------------------------------------------------------------------------
         sys.argv = ['']
         run = AsRunFactory()
-        run.options['debug_stderr'] = True  # pas d'output d'executions des esclaves dans k'output maitre
+        run.options['debug_stderr'] = True  # pas d'output d'executions des esclaves dans l'output maitre
 
         # Master profile
         prof = ASTER_PROFIL(filename=export)
@@ -1043,8 +1037,7 @@ class CALC_ERROR:
 
        if info>=3: self.debug = True
        else:       self.debug = False
-       #if debug: self.debug = True
-       self.debug = True
+       if debug: self.debug = True
 
 
    # ---------------------------------------------------------------------------
index 72f95a6b412d161c30080d1a8049f3637a505d9c..4085050a4255cffbfd3392e396561a6235f46b71 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF simu_point_mat_ops Macro  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF simu_point_mat_ops Macro  DATE 05/07/2010   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -138,6 +138,22 @@ def simu_point_mat_ops(self, MATER, INCREMENT,SIGM_IMPOSE,EPSI_IMPOSE,SIGM_INIT,
           if args['NB_VARI_TABLE'] != None:  
              motscles['NB_VARI_TABLE']  = args['NB_VARI_TABLE']
  
+       if args.has_key('MATR_C1'):
+          if args['MATR_C1'] != None:  
+          #   motscles['MATR_C1']  = MATR_C1.List_F()
+             motscles['MATR_C1']  = args['MATR_C1'].List_F()
+       if args.has_key('MATR_C2'):
+          if args['MATR_C2'] != None:  
+             motscles['MATR_C2']  = args['MATR_C2'].List_F()
+       if args.has_key('VECT_IMPO'):
+          if args['VECT_IMPO'] != None:  
+             motscles['VECT_IMPO']  = args['VECT_IMPO'].List_F()
+       if   ARCHIVAGE   :
+         motscles['ARCHIVAGE']   = ARCHIVAGE.List_F()
+
        self.DeclareOut('REPONSE',self.sd)
        __REP1 = CALC_POINT_MAT(INFO=INFO,MATER=MATER,ANGLE=ANGLE,**motscles)
  
index e8c0eab51fb8f8e0b1260dd9e6968dc7e17c6021..ac98a47e745af40a3e6d932d551c8672c61a1081 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF stanley_ops Macro  DATE 16/10/2007   AUTEUR REZETTE C.REZETTE 
+#@ MODIF stanley_ops Macro  DATE 24/08/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -58,18 +58,18 @@ def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,DISPLAY,**args):
   if os.environ.has_key('DISPLAY'):
 
     import Stanley
-    from Stanley import stanley
+    from Stanley import stanley_engine
 
     if (RESULTAT and MODELE and CHAM_MATER):
       _MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE    .LGRF        ' )
       _MAIL = string.strip(_MAIL[0])
       MAILLAGE = self.jdc.g_context[_MAIL]
       if CARA_ELEM:
-        stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM)
+        stanley_engine.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM)
       else:
-        stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
+        stanley_engine.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
     else:
-      stanley.PRE_STANLEY(FICHIER_VALID)
+      stanley_engine.PRE_STANLEY(FICHIER_VALID)
 
   else:
       UTMESS('A','STANLEY_3',valk=['STANLEY'])
index 66e7c4e6b2e39d3fdf4ac4c301eb5701ebc7a23d..7f6c5d76865b26a99ba8a61de8088f8201189889 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_cham_no SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_cham_no SD  DATE 07/09/2010   AUTEUR DESOZA T.DESOZA 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -19,8 +19,8 @@
 # ======================================================================
 
 from SD import *
+from SD.sd_util import *
 from SD.sd_titre import sd_titre
-
 from SD.sd_prof_chno import sd_prof_chno
 
 
@@ -28,7 +28,7 @@ class sd_cham_no(sd_titre):
 #------------------------------------
     nomj = SDNom(fin=19)
     VALE = AsVect(ltyp=Parmi(4,8,16,24), type=Parmi('C', 'I', 'K', 'R'), docu=Parmi('', '2', '3'), )
-    REFE = AsVK24()
+    REFE = AsVK24(lonmax=4)
     DESC = AsVI(docu='CHNO', )
 
 
@@ -36,19 +36,45 @@ 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
 
+    def u_desc(self):
+        desc=self.DESC.get()
+        gd  = desc[0]
+        num = desc[1]
+        return gd,num
+
+    def u_refe(self):
+        refe=self.REFE.get()
+        mail      = refe[0]
+        prof_chno = refe[1]
+        return mail,prof_chno
+
     def check_cham_no_i_REFE(self, checker):
         if not self.exists() : return
-        lnom = self.REFE.get()
+        if checker.names.has_key(self.REFE): return
+        
+        mail, prof_chno = self.u_refe()
 
         # faut-il vérifier le sd_maillage de chaque sd_cham_no ?   AJACOT_PB
         #  - cela risque de couter cher
         #  - cela pose un problème "import circulaire" avec sd_maillage -> sd_cham_no => import ici
         from SD.sd_maillage import sd_maillage
-        sd2 = sd_maillage(lnom[0])
+        sd2 = sd_maillage(mail)
         sd2.check(checker)
 
-        if lnom[1].strip() :
-            if checker.names.has_key(lnom[1][:14]+'.NUME.PRNO'):  return
-            sd2 = sd_prof_chno(lnom[1]) ; sd2.check(checker)
-
+        if prof_chno.strip() :
+            if checker.names.has_key(prof_chno[:14]+'.NUME.PRNO'):  return
+            sd2 = sd_prof_chno(prof_chno)
+            sd2.check(checker)
 
+    def check_cham_no_DESC(self, checker):
+        if not self.exists(): return
+        if checker.names.has_key(self.DESC): return
+        
+        gd, num = self.u_desc()
+        if (num < 0):
+           nb_ec = sdu_nb_ec(gd)
+           assert self.DESC.lonmax == 2 + nb_ec
+        else:
+           assert self.DESC.lonmax == 2
+           
+        
index ae9c94a925ae1e0754a2488199d4aa08690ef8a3..809a87171e2130b9dde0234a860e22ca0da9d3df 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_contact SD  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+#@ MODIF sd_contact SD  DATE 19/10/2010   AUTEUR DESOZA T.DESOZA 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -32,18 +32,20 @@ class sd_contact(AsBase):
     
 
     # Recap longueurs vecteurs (voir CFMMVD.F)    
-    zdime = 12
-    zpari = 25
+    zdime = 18
+    zpari = 27
     zparr = 5
     zdirn = 6
     zcmdf = 6
-    zcmcf = 27
-    zcmxf = 16
-    zexcl = 6
-    ztypn = 1
+    zcmcf = 29
+    zcmxf = 18
+    zexcl = 3
+    ztypn = 2
     ztypm = 2 
     zmaes = 6 
-    zmesx = 5        
+    zmesx = 5  
+    zmeth = 23   
+    ztole = 3   
 
     MODELE = AsVK8(SDNom(nomj='.CHME.MODEL.NOMO'),lonmax=1, )
     PARACI = AsVI (SDNom(nomj='.CONTACT.PARACI') ,lonmax=zpari,)
@@ -76,24 +78,22 @@ class sd_contact(AsBase):
         nsuco  = para[2]
         nmaco  = para[3]
         nnoco  = para[4]
-        nmano  = para[5]
-        nnoma  = para[6]
-        ntnoe  = para[8]
-        ntmae  = para[9]
-        ntpc   = para[10] 
-        ntelno = para[11]
-      return nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno
+        ntnoe  = para[7]
+        ntmae  = para[8]
+        ntpt   = para[15] 
+        ntelno = para[17]
+      return nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno
 
     
     def check_para(self,checker):
       iform = self.type_form()
       if (iform==1) or (iform==2) or (iform==3) :
-        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno  = self.dimeC()
+        nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno  = self.dimeC()
         lldime = self.NDIMCO.lonmax 
         llmeth = self.METHCO.lonmax
         lltole = self.TOLECO.lonmax
-        assert llmeth == nzoco*10 
-        assert lltole == nzoco*2
+        assert llmeth == nzoco*self.zmeth 
+        assert lltole == nzoco*self.ztole
         assert lldime == self.zdime
       if (iform==4) :
         lldime = self.NDIMCU.lonmax 
@@ -114,7 +114,6 @@ class sd_contact(AsBase):
     CONTMA = Facultatif(AsVI(SDNom(nomj='.CONTACT.MAILCO') ))
     CONTNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOEUCO') ))
     
-    NOZOCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOZOCO') ))  
     MANOCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.MANOCO') ))
     NOMACO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOMACO') ))
     
@@ -135,7 +134,7 @@ class sd_contact(AsBase):
     def check_mail(self,checker):    
       iform = self.type_form()
       if (iform==2) or (iform==1) :
-        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC()
         assert self.JEUFO1.lonmax == nzoco
         assert self.JEUFO2.lonmax == nzoco
         assert self.DIRAPP.lonmax == 3*nzoco
@@ -148,10 +147,6 @@ class sd_contact(AsBase):
         assert self.PSURNO.lonmax == nsuco+1        
         assert self.CONTMA.lonuti == nmaco
         assert self.CONTNO.lonuti == nnoco
-        
-        assert self.NOZOCO.lonmax == nnoco
-        assert self.MANOCO.lonuti == nmano
-        assert self.NOMACO.lonuti == nnoma
 
         assert self.MANOCO.lonmax == 20*max(nnoco,nmaco)
         assert self.NOMACO.lonmax == 20*max(nnoco,nmaco) 
@@ -173,9 +168,9 @@ class sd_contact(AsBase):
     def check_form_disc(self,checker):    
       iform = self.type_form()
       if (iform==1) :
-        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC()
         assert self.CARADF.lonmax == self.zcmdf*nzoco
-        assert ntnoe == ntpc
+        assert ntnoe == ntpt
       return      
     
     CARACF = Facultatif(AsVR(SDNom(nomj='.CONTACT.CARACF') ))  
@@ -196,7 +191,7 @@ class sd_contact(AsBase):
     def check_form_cont(self,checker):
       iform = self.type_form()
       if (iform==2) :
-        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC()
         assert self.CARACF.lonmax == self.zcmcf*nzoco
         assert self.EXCLFR.lonmax == self.zexcl*nzoco       
         
@@ -235,7 +230,7 @@ class sd_contact(AsBase):
     def check_form_xfem(self,checker):
       iform = self.type_form()
       if (iform==3) :
-        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        nzoco,nsuco,nmaco,nnoco,ntnoe,ntmae,ntpt,ntelno = self.dimeC()
         paraci = self.PARACI.get()
         if (paraci[0]!=0) :
           assert self.MAESCX.lonuti == self.zmesx*ntmae      
index 88ed5120f844e2621b6e0a7afccfd9a00d16986d..363ae9aaad5aa745a475c0fd909d7d9b9bc48934 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_nume_ddl_gene SD  DATE 03/11/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_nume_ddl_gene SD  DATE 21/06/2010   AUTEUR CORUS M.CORUS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,12 +22,13 @@ from SD import *
 
 from SD.sd_nume_ddl_com import sd_nume_ddl_com
 from SD.sd_nume_eqge import sd_nume_eqge
-
+from SD.sd_nume_elim import sd_nume_elim
 
 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
+    ELIM = Facultatif(sd_nume_elim(SDNom(nomj='.ELIM'))) # n'existe pas toujours : ELIMINATION
 
 
 
diff --git a/Aster/Cata/cataSTA10/SD/sd_nume_elim.py b/Aster/Cata/cataSTA10/SD/sd_nume_elim.py
new file mode 100644 (file)
index 0000000..98bf5bc
--- /dev/null
@@ -0,0 +1,30 @@
+#@ MODIF sd_nume_elim SD  DATE 21/06/2010   AUTEUR CORUS M.CORUS 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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_prof_vgen import sd_prof_vgen
+class sd_nume_elim(sd_prof_vgen):
+    nomj = SDNom(fin=19)
+    BASE = AsVR(SDNom(debut=19),)
+    TAIL = AsVI(SDNom(debut=19),)
+    NOMS = AsVK8(SDNom(debut=19),)
+
+
index 2bccd8d98eeb0cf7619f38fcc5fa593372329aba..ac23f4a66c5998c8bc99c06fe6eb7edf274da9c9 100644 (file)
@@ -1,21 +1,21 @@
-#@ MODIF sd_partition SD  DATE 16/06/2009   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_partition SD  DATE 28/06/2010   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  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 *
@@ -23,4 +23,7 @@ from SD import *
 class sd_partition(AsBase):
     nomj = SDNom(fin=8)
     NUPROC_MAILLE = AsVI(SDNom(nomj='.NUPROC.MAILLE'))
+    # si partition 'GROUP_ELEM' :
+    NUPROC_GREL   = Facultatif(AsVI(SDNom(nomj='.NUPROC.GREL')))
+    NUPROC_LIGREL = Facultatif(AsVK24(SDNom(nomj='.NUPROC.LIGREL'),LONMAX=1))
 
index 922c9a585be8aadb7c4a57652ae3acc305d7623e..1b47ddd5fc28154dac0e677b01484876447949e2 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_resultat SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF sd_resultat SD  DATE 20/07/2010   AUTEUR MAHFOUZ D.MAHFOUZ 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -94,6 +94,10 @@ class sd_resultat(sd_titre):
         # les numeros d'ordre doivent etre tous différents :
         sdu_tous_differents(V,checker,V.get()[:nuti],'1:NUTI')
 
+        # les numeros d'ordre doivent etre croissants
+        if nuti > 1:
+            assert sdu_monotone(V.get()[:nuti]) in (1,)
+
 
     # vérification des longueurs des différents objets :
     def check_LONGUEURS(self, checker):
index a4f290bead492df05e87e9363317a89aaead452f..1f1c5d8cfb881be8fb396bb371556512e6db6509 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_util SD  DATE 19/04/2010   AUTEUR GREFFET N.GREFFET 
+#@ MODIF sd_util SD  DATE 07/09/2010   AUTEUR DESOZA T.DESOZA 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -176,7 +176,11 @@ def sdu_licmp_gd(numgd) :
     nocmp=aster.getcolljev('&CATA.GD.NOMCMP')
     return nocmp[nomgd.ljust(8)]
 
-
+def sdu_nb_ec(numgd) :
+    # retourne le nombre d'entiers codés pour décrire les composantes de la grandeur (numgd)
+    assert numgd > 0 and numgd <1000 , numgd
+    descrigd=aster.getcolljev('&CATA.GD.DESCRIGD')
+    return descrigd[numgd-1][-1+3]
 
 #  3) Utilitaires pour la vérification de l'existence des objets :
 #  -----------------------------------------------------------------------------------------
index a4af5cdd7b0f9b5720a1d105270b496060d2a8f5..120fcb20b2143e4f83356412a86bce182abe3d76 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_xfem SD  DATE 11/01/2010   AUTEUR COLOMBO D.COLOMBO 
+#@ MODIF sd_xfem SD  DATE 28/09/2010   AUTEUR MASSIN P.MASSIN 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -35,6 +35,7 @@ class sd_fiss_xfem(AsBase):
     nomj = SDNom(fin=8)
 
     INFO   = AsVK16(lonmax=2,)   # info discontinuite
+    MODELE = AsVK8(lonmax=1,)
 
 # I.1) objets relatifs aux level sets
 
@@ -59,7 +60,6 @@ class sd_fiss_xfem(AsBase):
     MAILFISS_HEAV  = Facultatif(AsVI(SDNom(nomj='.MAILFISS  .HEAV')))
     MAILFISS_HECT  = Facultatif(AsVI(SDNom(nomj='.MAILFISS  .HECT')))
     MAILFISS_INDIC = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, )
-    LISNOH         = Facultatif(AsVI())
 
 # I.3) objets relatifs a la propagation
 
@@ -75,7 +75,6 @@ class sd_fiss_xfem(AsBase):
     LISCO  = Facultatif(AsVR(SDNom(nomj='.LISCO')))
     LISEQ  = Facultatif(AsVI(SDNom(nomj='.LISEQ')))
     LISRL  = Facultatif(AsVI(SDNom(nomj='.LISRL')))
-    LISUP  = Facultatif(AsVI(SDNom(nomj='.LISUP')))    
 
 
 # 1.5) verifications d'existence :
@@ -101,7 +100,9 @@ class sd_modele_xfem(AsBase):
     TOPOSE_HEA  = sd_cham_elem(SDNom(nomj='.TOPOSE.HEA'))
     TOPOSE_LON  = sd_cham_elem(SDNom(nomj='.TOPOSE.LON'))
     TOPOSE_AIN  = sd_cham_elem(SDNom(nomj='.TOPOSE.AIN'))
+    TOPOSE_PMI  = sd_cham_elem(SDNom(nomj='.TOPOSE.PMI'))
     TOPOSE_CRI  = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CRI')))
+    
 
 # II.2) objets relatifs aux facettes de contact
 
@@ -118,10 +119,13 @@ class sd_modele_xfem(AsBase):
 
 # II.3) objets concatenes relatifs aux level sets
 
-    LNNO   = sd_cham_no()
-    LTNO   = sd_cham_no()
-    BASLOC = sd_cham_no()
-    STNO   = sd_cham_no()
+    LNNO   = sd_cham_elem(SDNom(nomj='.LNNO'))
+    LTNO   = sd_cham_elem(SDNom(nomj='.LTNO'))
+    BASLOC = sd_cham_elem(SDNom(nomj='.BASLOC'))
+    STNO   = sd_cham_elem(SDNom(nomj='.STNO'))
+    FISSNO = sd_cham_elem(SDNom(nomj='.FISSNO'))
+    NOXFEM = sd_cham_no()
+    LISNOH = Facultatif(AsVI())
 
 # II.4) autres objets
 
index 5c9668fff0473c267d5ee317da8f5399b4b790ce..ab3e6a4bb14f8cdd0037eafb37b369ee7ce6b6a9 100644 (file)
@@ -23,7 +23,7 @@
    Utilitaire sur le catalogue des structures de données.
 """
 
-__revision__ = "$Id: utilsd.py,v 1.1.2.2 2010-06-03 09:16:27 pnoyret Exp $"
+__revision__ = "$Id: $"
 
 import sys
 import os
index ea93f30df748401188144ac7524b6c1ad60894b6..0a1bdd2ccce46d5941837a3db731dcf5fd0380ba 100755 (executable)
@@ -1,4 +1,4 @@
-#& MODIF ENTETE  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
+#& MODIF ENTETE  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -218,7 +218,7 @@ from SD.co_vect_elem import vect_elem, \
                             vect_elem_pres_r, vect_elem_pres_c, \
                             vect_elem_temp_r
 
-#& MODIF COMMUN  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+#& MODIF COMMUN  DATE 24/08/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -249,6 +249,14 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**',  #COMMUN#
                                  fr="Comportement de la bibliotheque Zmat",
                    NB_VARI =SIMP(statut='o',typ='I',max=1),
                    UNITE =SIMP(statut='o',typ='I',max=1),),
+           b_umat      = BLOC(condition = "RELATION == 'UMAT' ",
+                                 fr="Comportement utilisateur de type UMAT",
+                   NB_VARI =SIMP(statut='o',typ='I',max=1,fr="Nombre de variables internes"),
+                   LIBRAIRIE = SIMP(statut='o', typ='TXM',validators=LongStr(1,128),
+                        fr="Chemin vers la bibliothèque dynamique définissant le comportement UMAT"),
+                   NOM_ROUTINE = SIMP(statut='o', typ='TXM',
+                        fr="Nom de la routine UMAT dans la bibliothèque"),
+                   ),
 
 # KITs
            b_kit_ddi = BLOC(condition = "RELATION == 'KIT_DDI' ",
@@ -270,7 +278,8 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**',  #COMMUN#
                                        "MAZARS"
                                        ),),
                    ),
-           b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_HM','KIT_THHM','KIT_THH','KIT_THM','KIT_THV']",
+           b_kit_thm = BLOC(condition = "RELATION in ['KIT_HHM','KIT_HH','KIT_H','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=(
@@ -291,6 +300,8 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**',  #COMMUN#
                                        "MAZARS",
                                        "ENDO_ISOT_BETON",
                                        "JOINT_BANDIS",
+                                       "CZM_LIN_REG",
+                                       "CZM_EXP_REG",
 # THMC
                                        "GAZ",
                                        "LIQU_SATU",
@@ -352,7 +363,7 @@ def C_COMP_INCR() : return FACT(statut='f',min=1,max='**',  #COMMUN#
                  TAUX_RETOUR  =SIMP(statut='f',typ='R',defaut= 0.05 ),
                                   ),
 
-           PARM_THETA      =SIMP(statut='f',typ='R',defaut= 1. ),
+           PARM_THETA      =SIMP(statut='f',typ='R',val_min=0.,val_max=1., defaut= 1.),
            PARM_ALPHA      =SIMP(statut='f',typ='R',defaut= 1. ),
 
            regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
@@ -496,23 +507,23 @@ def C_NEWTON() : return FACT(statut='d',
            REAC_ITER_ELAS  =SIMP(statut='f',typ='I',defaut=0,val_min=0),
            EVOL_NOLI       =SIMP(statut='f',typ=evol_noli),
          );
-#& MODIF COMMUN  DATE 27/04/2010   AUTEUR DESROCHES X.DESROCHE
+#& MODIF COMMUN  DATE 19/10/2010   AUTEUR DELMAS J.DELMA
 #            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 VABHHTS J.PELLET
 # ce fichier contient la liste des "into" possibles pour le mot cle NOM_CHAM
@@ -595,6 +606,7 @@ def C_NOM_CHAM_INTO() : return  ("ACCE",    #COMMUN#
                         "ERRE_NOEU_ELEM",
                         "ERZ1_ELEM_SIGM",
                         "ERZ2_ELEM_SIGM",
+                        "FERRAILLAGE",
                         "QIRE_ELEM_SIGM",
                         "QIRE_ELNO_ELEM",
                         "QIRE_NOEU_ELEM",
@@ -642,10 +654,7 @@ def C_NOM_CHAM_INTO() : return  ("ACCE",    #COMMUN#
                         "PRES_NOEU_DBEL",
                         "PRES_NOEU_IMAG",
                         "PRES_NOEU_REEL",
-                        "PROJ_ELEM_SIGN",
-                        "PROJ_ELEM_SIGT",
-                        "PROJ_ELEM_SIT1",
-                        "PROJ_ELEM_SIT2",
+                        "PROJ_ELEM_SIGM",
                         "RADI_ELGA_SIGM",
                         "RADI_ELNO_SIGM",
                         "RADI_NOEU_SIGM",
@@ -673,13 +682,12 @@ def C_NOM_CHAM_INTO() : return  ("ACCE",    #COMMUN#
                         "SIPO_ELNO_SIEF",
                         "SIPO_NOEU_DEPL",
                         "SIPO_NOEU_SIEF",
-                        "SIRE_ELNO_DEPL",
-                        "SIRE_NOEU_DEPL",
                         "SOUR_ELGA_ELEC",
                         "TEMP",
                         "THETA",
                         "VALE_CONT",
                         "VALE_NCOU_MAXI",
+                        "VARC_ELGA",
                         "VARI_ELGA",
                         "VARI_ELNO",
                         "VARI_ELNO_COQU",
@@ -865,7 +873,7 @@ def C_PARA_FONCTION() : return  ( #COMMUN#
                    "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
                    "PGAZ","PCAP","PLIQ","PVAP","PAD","VITE","ENDO",
                    "NORM","EPAIS","NEUT1","NEUT2",)
-#& MODIF COMMUN  DATE 07/07/2009   AUTEUR REZETTE C.REZETTE 
+#& MODIF COMMUN  DATE 05/10/2010   AUTEUR ABBAS M.ABBAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -885,7 +893,7 @@ def C_PARA_FONCTION() : return  ( #COMMUN#
 # ======================================================================
 # RESPONSABLE REZETTE C.REZETTE
 def C_RECH_LINEAIRE() : return FACT(statut='f',
-           METHODE         =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="CORDE",into=("CORDE","MIXTE","PILOTAGE") ),
            RESI_LINE_RELA  =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
            ITER_LINE_MAXI  =SIMP(statut='f',typ='I',defaut= 3,val_max=999),
            ITER_LINE_CRIT  =SIMP(statut='f',typ='I',defaut= 20),
@@ -894,155 +902,158 @@ def C_RECH_LINEAIRE() : return FACT(statut='f',
            RHO_MAX         =SIMP(statut='f',typ='R',defaut=1.0E+1),
            RHO_EXCL        =SIMP(statut='f',typ='R',defaut=0.9E-2,val_min=0.),
          );
-#& MODIF COMMUN  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+#& MODIF COMMUN  DATE 10/08/2010   AUTEUR MEUNIER S.MEUNIER 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  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 PROIX J.M.PROIX
-def C_RELATION() : return (             "ELAS",            # RESP. : PROIX J.M.PROIX   #COMMUN#
-                                        "ARME",            # RESP. : PEYRARD C.PEYRARD
-                                        "ASSE_CORN",       # RESP. : PEYRARD C.PEYRARD
-                                        "BARCELONE",       # RESP. : ELGHARIB J.ELGHARIB
-                                        "BETON_DOUBLE_DP", # RESP. : ELGHARIB J.ELGHARIB
-                                        "BETON_RAG",       # RESP. : DEBONNIERES P.DEBONNIERES
-                                        "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
-                                        "CZM_FAT_MIX",     # RESP. : LAVERNE J.LAVERNE
-                                        "DIS_BILI_ELAS",   # RESP. : FLEJOU J.L.FLEJOU
-                                        "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
-                                        "VISC_DRUC_PRAG",  # RESP. : ELGHARIB J.ELGHARIB
-                                        "ELAS_GONF",       # RESP. : GRANET S.GRANET
-                                        "ELAS_HYPER",      # RESP. : ABBAS M.ABBAS
-                                        "ENDO_FRAGILE",    # RESP. : MICHEL S.MICHEL
-                                        "ENDO_SCALAIRE",   # RESP. : MICHEL S.MICHEL
-                                        "ENDO_ISOT_BETON", # RESP. : MICHEL S.MICHEL
-                                        "ENDO_ORTH_BETON", # 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
+def C_RELATION() : return (             "ELAS",            #COMMUN#
+
+                                        "ARME",
+                                        "ASSE_CORN",
+                                        "BARCELONE",
+                                        "BETON_DOUBLE_DP",
+                                        "BETON_RAG",
+                                        "BETON_REGLE_PR",
+                                        "BETON_UMLV_FP",
+                                        "CAM_CLAY",
+                                        "CJS",
+                                        "CORR_ACIER",
+                                        "CZM_EXP",
+                                        "CZM_EXP_REG",
+                                        "CZM_FAT_MIX",
+                                        "CZM_LIN_REG",
+                                        "CZM_OUV_MIX",
+                                        "CZM_TAC_MIX",
+                                        "DIS_BILI_ELAS",
+                                        "DIS_CHOC",
+                                        "DIS_ECRO_CINE",
+                                        "DIS_GOUJ2E_ELAS",
+                                        "DIS_GOUJ2E_PLAS",
+                                        "DIS_GRICRA",
+                                        "DIS_VISC",
+                                        "DRUCK_PRAGER",
+                                        "DRUCK_PRAG_N_A",
+                                        "ELAS_GONF",
+                                        "ELAS_HYPER",
+                                        "ENDO_FRAGILE",
+                                        "ENDO_HETEROGENE",
+                                        "ENDO_ISOT_BETON",
+                                        "ENDO_ORTH_BETON",
+                                        "ENDO_SCALAIRE",
+                                        "GATT_MONERIE",
+                                        "GLRC_DAMAGE",
+                                        "GLRC_DM",
+                                        "GRANGER_FP",
+                                        "GRANGER_FP_INDT",
+                                        "GRANGER_FP_V",
+                                        "GRAN_IRRA_LOG",
+                                        "GRILLE_CINE_LINE",
+                                        "GRILLE_ISOT_LINE",
+                                        "GRILLE_PINTO_MEN",
+                                        "HOEK_BROWN",
+                                        "HOEK_BROWN_EFF",
+                                        "HOEK_BROWN_TOT",
+                                        "HUJEUX",
+                                        "IMPLEX_FRAG",
+                                        "IMPLEX_ISOT_BETO",
+                                        "IMPLEX_ISOT_LINE",
+                                        "IRRAD3M",
+                                        "JOINT_BA",
                                         "JOINT_BANDIS",
-                                        "JOINT_MECA_RUPT", # RESP. : KAZYMYRENKO C.KAZYMYRENKO 
-                                        "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",       # 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",      # 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",       # 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
-                                        "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. : GENIAUT S.GENIAUT
-                                        "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
-                                        "VMIS_CIN2_MEMO",  # 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
-                                        "VMIS_POU_LINE",   # RESP. : PROIX J.M.PROIX
-                                        "ZMAT",            # RESP. : PROIX J.M.PROIX
-                                        "IMPLEX_FRAG",     # RESP. : BARGELLINI R.BARGELLINI
-                                        "IMPLEX_ISOT_BETO",# RESP. : BARGELLINI R.BARGELLINI
-                                        "IMPLEX_ISOT_LINE",# RESP. : BARGELLINI R.BARGELLINI
-                                     ) 
-#& MODIF COMMUN  DATE 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+                                        "JOINT_MECA_RUPT",
+                                        "KIT_DDI",
+                                        "KIT_HH",
+                                        "KIT_H",
+                                        "KIT_HHM",
+                                        "KIT_HM",
+                                        "KIT_THH",
+                                        "KIT_THHM",
+                                        "KIT_THM",
+                                        "KIT_THV",
+                                        "LABORD_1D",
+                                        "LAIGLE",
+                                        "LEMAITRE",
+                                        "LEMAITRE_IRRA",
+                                        "LEMA_SEUIL",
+                                        "LETK",
+                                        "LMARC_IRRA",
+                                        "MAZARS",
+                                        "META_LEMA_ANI",
+                                        "META_P_CL",
+                                        "META_P_CL_PT",
+                                        "META_P_CL_PT_RE",
+                                        "META_P_CL_RE",
+                                        "META_P_IL",
+                                        "META_P_IL_PT",
+                                        "META_P_IL_PT_RE",
+                                        "META_P_IL_RE",
+                                        "META_P_INL",
+                                        "META_P_INL_PT",
+                                        "META_P_INL_PT_RE",
+                                        "META_P_INL_RE",
+                                        "META_V_CL",
+                                        "META_V_CL_PT",
+                                        "META_V_CL_PT_RE",
+                                        "META_V_CL_RE",
+                                        "META_V_IL",
+                                        "META_V_IL_PT",
+                                        "META_V_IL_PT_RE",
+                                        "META_V_IL_RE",
+                                        "META_V_INL",
+                                        "META_V_INL_PT",
+                                        "META_V_INL_PT_RE",
+                                        "META_V_INL_RE",
+                                        "MONOCRISTAL",
+                                        "MULTIFIBRE",
+                                        "NORTON_HOFF",
+                                        "PINTO_MENEGOTTO",
+                                        "POLYCRISTAL",
+                                        "ROUSSELIER",
+                                        "ROUSS_PR",
+                                        "ROUSS_VISC",
+                                        "RUPT_FRAG",
+                                        "SANS",
+                                        "VENDOCHAB",
+                                        "VISCOCHAB",
+                                        "VISC_CIN1_CHAB",
+                                        "VISC_CIN2_CHAB",
+                                        "VISC_CIN2_MEMO",
+                                        "VISC_DRUC_PRAG",
+                                        "VISC_IRRA_LOG",
+                                        "VISC_ISOT_LINE",
+                                        "VISC_ISOT_TRAC",
+                                        "VISC_TAHERI",
+                                        "VMIS_ASYM_LINE",
+                                        "VMIS_CIN1_CHAB",
+                                        "VMIS_CIN2_CHAB",
+                                        "VMIS_CIN2_MEMO",
+                                        "VMIS_CINE_LINE",
+                                        "VMIS_ECMI_LINE",
+                                        "VMIS_ECMI_TRAC",
+                                        "VMIS_ISOT_LINE",
+                                        "VMIS_ISOT_PUIS",
+                                        "VMIS_ISOT_TRAC",
+                                        "VMIS_POU_FLEJOU",
+                                        "VMIS_POU_LINE",
+                                        "ZMAT",
+                                        "UMAT",
+                                     )
+#& MODIF COMMUN  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -1063,19 +1074,23 @@ def C_RELATION() : return (             "ELAS",            # RESP. : PROIX J.M.P
 # RESPONSABLE REZETTE C.REZETTE
 def C_SOLVEUR() : return 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") ),
            ),
+# --------------------------------------------------------------------------------------------------------------------------------
            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_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' or METHODE=='FETI' ",
                                    fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
              NPREC           =SIMP(statut='f',typ='I',defaut= 8 ),
              STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
            ),
+# --------------------------------------------------------------------------------------------------------------------------------
            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","LDLT_SP",),defaut="LDLT_INC" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP"),defaut="LDLT_INC" ),
              b_ldltinc       =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète",
                NIVE_REMPLISSAGE    =SIMP(statut='f',typ='I',defaut= 0 ),
                RENUM               =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
@@ -1086,6 +1101,7 @@ def C_SOLVEUR() : return FACT(statut='d',
              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")),
@@ -1097,7 +1113,9 @@ def C_SOLVEUR() : return FACT(statut='d',
              OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              FILTRAGE_MATRICE =SIMP(statut='f',typ='R',defaut=-1.0,),
              MIXER_PRECISION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             MATR_DISTRIBUEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
              ),
+# --------------------------------------------------------------------------------------------------------------------------------
            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") ),
@@ -1116,18 +1134,27 @@ def C_SOLVEUR() : return FACT(statut='d',
              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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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),
+               RENUM            =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",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") ),
          );
 #& MODIF COMMUN  DATE 27/06/2005   AUTEUR D6BHHJP J.P.LEFEBVRE 
@@ -1157,7 +1184,7 @@ def C_TYPE_CHAM_INTO() : #COMMUN#
              l.append(typ+"_"+gd)
    return tuple(l)
 
-#& MODIF COMMANDE  DATE 22/09/2009   AUTEUR SELLENET N.SELLENET 
+#& MODIF COMMANDE  DATE 28/06/2010   AUTEUR FLEJOU J-L.FLEJOU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -1724,6 +1751,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op=  19,sd_prod=cara_elem,
       NOEUD_CENTRE         = SIMP(statut='f',typ=no),
       COOR_CENTRE          = SIMP(statut='f',typ='R',min=2,max=3),
       EUROPLEXUS           = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
+      UNITE                = SIMP(statut='f',typ='I',val_min=1),
    ),
 
 #============================================================================
@@ -1969,7 +1997,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
          ),
          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 04/10/2010   AUTEUR MEUNIER S.MEUNIER 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -2002,22 +2030,101 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 101,sd_prod=affe_char_cine_f_pr
          MODELE          =SIMP(statut='o',typ=modele_sdaster ),
          MECA_IMPO       =FACT(statut='f',max='**',
            regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
-                   AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),),
+                   AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
+                               'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
+                               'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
+                               'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
+                               'VO6','WI6','WO6','WO','WI1','WO1','GONF',
+                               'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
+                               'E3X','E3Y','E3Z','E4X','E4Y','E4Z','V11','V12','V13','V21','V22',
+                               'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21',
+                               'PRES22','PRES23','PRES31','PRES32','PRES33','LH1'),),
            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='**'),
-           DX              =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           DY              =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           DZ              =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           DRX             =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           DRY             =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           DRZ             =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           GRX             =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           PRES            =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           TEMP            =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-           PHI             =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DX    =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DY    =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DZ    =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DRX   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DRY   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           DRZ   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           GRX   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PHI   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           TEMP  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRE1  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRE2  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UI2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UI3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UI4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UI5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UI6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UO2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UO3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UO4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UO5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           UO6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VI2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VI3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VI4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VI5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VI6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VO2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VO3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VO4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VO5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           VO6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO2   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO3   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO4   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO5   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO6   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO    =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WI1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           WO1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           GONF  =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           H1X   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           H1Y   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           H1Z   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E1X   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E1Y   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E1Z   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E2X   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E2Y   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E2Z   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E3X   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E3Y   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E3Z   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E4X   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E4Y   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           E4Z   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V11   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V12   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V13   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V21   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V22   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V23   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V31   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V32   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           V33   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES11=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES12=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES13=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES21=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES22=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES23=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES31=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES32=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           PRES33=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           LH1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+
          ),
          THER_IMPO       =FACT(statut='f',max='**',
            regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
@@ -2033,7 +2140,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 13/04/2010   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 28/09/2010   AUTEUR MASSIN P.MASSIN 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -2080,9 +2187,17 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
          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),),
+
+         ROTATION        =FACT(statut='f', max='**', fr="Définition d'un chargement de rotation",
+                       GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(), max='**'),
+                       MAILLE   = SIMP(statut='f',typ=ma, validators=NoRepeat(),max='**'),
+                       VITESSE  = SIMP(statut='o', typ='R',min=1,max=1),
+                       AXE      = SIMP(statut='o', typ='R',min=2, max=3),
+                       CENTRE   = SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),
+         b_rotation_tout=BLOC(condition="(GROUP_MA == None) and (MAILLE ==None)",
+                       TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),),
+         b_rotation=BLOC(condition="(GROUP_MA != None) or (MAILLE !=None)",
+                       TOUT     = SIMP(statut='f',typ='TXM',into=("NON","OUI"),defaut="NON",),),),
 
          DDL_IMPO        =FACT(statut='f',max='**',
              fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
@@ -2092,7 +2207,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
                                  'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
                                  'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
                                  'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON',
-                                 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
+                                 'H1X','H1Y','H1Z','H2X','H2Y','H2Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
                                  'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C','V11','V12','V13','V21','V22',
                                  'V23','V31','V32','V33','PRES11','PRES12','PRES13','PRES21','PRES22','PRES23',
                                  'PRES31','PRES32','PRES33',),),
@@ -2151,6 +2266,9 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              H1X             =SIMP(statut='f',typ='R' ),
              H1Y             =SIMP(statut='f',typ='R' ),
              H1Z             =SIMP(statut='f',typ='R' ),
+             H2X             =SIMP(statut='f',typ='R' ),
+             H2Y             =SIMP(statut='f',typ='R' ),
+             H2Z             =SIMP(statut='f',typ='R' ),           
              E1X             =SIMP(statut='f',typ='R' ),
              E1Y             =SIMP(statut='f',typ='R' ),
              E1Z             =SIMP(statut='f',typ='R' ),
@@ -2389,21 +2507,25 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              NUME_LAGR       =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
            ),
 
-           LIAISON_ELEM    =FACT(statut='f',max='**',
-             fr="Modélise le raccord d'une partie massive 3D avec une poutre ou avec un tuyau, le raccord d'une coque"
-              +" avec une poutre ou avec un tuyau",
-             regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
-                     UN_PARMI('GROUP_NO_2','NOEUD_2'),),
-             OPTION          =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ),
-             GROUP_MA_1      =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-             MAILLE_1        =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
-             GROUP_NO_2      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-             NOEUD_2         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
-             NUME_LAGR       =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
-             CARA_ELEM       =SIMP(statut='f',typ=(cara_elem) ),
-             AXE_POUTRE      =SIMP(statut='f',typ='R',max=3),
-             ANGL_MAX        =SIMP(statut='f',typ='R',defaut= 1. ),
-           ),
+         LIAISON_ELEM    =FACT(statut='f',max='**',
+            fr="Modélise le raccord : d'une partie massive 3D avec une poutre ou avec un tuyau, d'une coque"
+               +" avec une poutre ou avec un tuyau, d'une plaque avec une poutre",
+            regles      =(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_NO_2','NOEUD_2'),),
+            OPTION      =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU","PLAQ_POUT_ORTH") ),
+            GROUP_MA_1  =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+            MAILLE_1    =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+            GROUP_NO_2  =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+            NOEUD_2     =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+            NUME_LAGR   =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+            ANGL_MAX    =SIMP(statut='f',typ='R',defaut= 1. ),
+            b_dalcol =BLOC( condition = "OPTION == 'PLAQ_POUT_ORTH'",
+               VERIF_EXCENT   =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+            ),
+            b_option =BLOC( condition = "OPTION != 'PLAQ_POUT_ORTH'",
+               CARA_ELEM   =SIMP(statut='f',typ=(cara_elem) ),
+               AXE_POUTRE  =SIMP(statut='f',typ='R',max=3),
+            ),
+         ),
 
            LIAISON_UNIF    =FACT(statut='f',max='**',
              fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
@@ -2423,6 +2545,13 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op=   7,sd_prod=char_meca,
              NUME_LAGR       =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
            ),
 
+
+         LIAISON_INTERF  =FACT(statut='f',max='**',
+             fr="Définit une relation linéaire entre les DDLs d'interface à partir d'un MACRELEM",
+             MACR_ELEM_DYNA  =SIMP(statut='o',typ=macr_elem_dyna),
+             TYPE_LIAISON    =SIMP(statut='f',typ='TXM',defaut="RIGIDE",into=("RIGIDE","SOUPLE") ),
+           ),
+
          LIAISON_XFEM      =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
 
          CONTACT_XFEM      =SIMP(statut='f',typ=char_contact,min=1,max=1,),
@@ -3903,7 +4032,7 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
 )  ;
 
 
-#& MODIF COMMANDE  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+#& MODIF COMMANDE  DATE 10/08/2010   AUTEUR MEUNIER S.MEUNIER 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -4012,6 +4141,7 @@ 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_GRAD_SIGM",# RESP. : GRANET S.GRANET
                                   "PLAN_JOINT",      # RESP. : LAVERNE J.LAVERNE
                                   "PLAN_INTERFACE",  # RESP. : LAVERNE J.LAVERNE
                                   "PLAN_ELDI",       # RESP. : LAVERNE J.LAVERNE
@@ -4062,6 +4192,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "D_PLAN_THHMS",    # RESP. : GRANET S.GRANET
                                   "D_PLAN_THMS",     # RESP. : GRANET S.GRANET
                                   "D_PLAN_HM_P",     # RESP. : GRANET S.GRANET
+                                  "D_PLAN_HS",       # RESP. : GRANET S.GRANET
                                   "D_PLAN_HHD",      # RESP. : GRANET S.GRANET
                                   "D_PLAN_HHS",      # RESP. : GRANET S.GRANET
                                   "D_PLAN_HH2D",     # RESP. : GRANET S.GRANET
@@ -4119,6 +4250,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "3D_HH2MS",        # RESP. : GRANET S.GRANET
                                   "3D_THH2S",        # RESP. : GRANET S.GRANET
                                   "3D_THH2D",        # RESP. : GRANET S.GRANET
+                                  "3D_HS",           # RESP. : GRANET S.GRANET
                                   "3D_HHD",          # RESP. : GRANET S.GRANET
                                   "3D_HHS",          # RESP. : GRANET S.GRANET
                                   "3D_HH2D",         # RESP. : GRANET S.GRANET
@@ -4131,6 +4263,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
                                   "D_PLAN_HH2SUC",   # RESP. : GRANET S.GRANET
                                   "D_PLAN_HH2SUDA",  # RESP. : GRANET S.GRANET
                                   "2D_JOINT_HMS",
+                                  "AXIS_JOINT_HMS",
                                                                       )  )  ),
 
                 b_thermique     =BLOC( condition = "PHENOMENE=='THERMIQUE'",
@@ -4158,8 +4291,8 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
          ),
 
          PARTITION         =FACT(statut='d',
-             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="MAIL_DISPERSE",
-                                   into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE",)),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM",
+                                   into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE","GROUP_ELEM")),
              b_dist_sd          =BLOC(condition = "PARALLELISME == 'SOUS_DOMAINE'",
                  PARTITION       =SIMP(statut='o',typ=sd_feti_sdaster),
                  CHARGE_PROC0_SD =SIMP(statut='f',typ='I',defaut=0,val_min=0),
@@ -4327,19 +4460,14 @@ ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
 # 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
-ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
-                    fr="Projection des chargements sur la base modale d'une sous structure",
-                    reentrant='n',
+# RESPONSABLE PELLET J.PELLET
+
+ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster,
+                  fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n',
             UIinfo={"groupes":("Matrices/vecteurs",)},
-         NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
-         METHODE          =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ),
-         b_nume     =BLOC(condition = "METHODE == 'CLASSIQUE'",
-             CHAR_SOUS_STRUC =FACT(statut='o',max='**',
-             SOUS_STRUC      =SIMP(statut='o',typ='TXM' ),
-             VECT_ASSE       =SIMP(statut='o',typ=cham_no_sdaster ),
-           ),
-         ),
+         VECT_ELEM       =SIMP(statut='o',typ=vect_elem,max='**'),
+         NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
+         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
@@ -4359,14 +4487,19 @@ ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
 # 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
-
-ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster,
-                  fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n',
+# RESPONSABLE BODEL C.BODEL
+ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
+                    fr="Projection des chargements sur la base modale d'une sous structure",
+                    reentrant='n',
             UIinfo={"groupes":("Matrices/vecteurs",)},
-         VECT_ELEM       =SIMP(statut='o',typ=vect_elem,max='**'),
-         NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
-         INFO            =SIMP(statut='f',typ='I',into=(1,2,) ),
+         NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
+         METHODE          =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ),
+         b_nume     =BLOC(condition = "METHODE == 'CLASSIQUE'",
+             CHAR_SOUS_STRUC =FACT(statut='o',max='**',
+             SOUS_STRUC      =SIMP(statut='o',typ='TXM' ),
+             VECT_ASSE       =SIMP(statut='o',typ=cham_no_sdaster ),
+           ),
+         ),
 )  ;
 #& MODIF COMMANDE  DATE 14/12/2009   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -4746,7 +4879,7 @@ CALC_ECREVISSE=MACRO(nom="CALC_ECREVISSE",op=calc_ecrevisse_ops,sd_prod=calc_ecr
          INFO               =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 
 )  ;
-#& MODIF COMMANDE  DATE 27/04/2010   AUTEUR DESROCHES X.DESROCHE
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DELMAS J.DELMA
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -4854,7 +4987,7 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
                                  "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","DISS_ELGA","DISS_ELNO_ELGA",
                               #  estimateurs erreur
                                  "SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM",
-                                 "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
+                                 "ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
                                  "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
                                  "SING_ELEM","SING_ELNO_ELEM",
                               #  CRIT
@@ -4865,7 +4998,7 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
                               #  derivees
                                  "DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI",
                               #  autres
-                                 "VALE_NCOU_MAXI","PRES_DBEL_DEPL"),),
+                                 "VALE_NCOU_MAXI","PRES_DBEL_DEPL","VARC_ELGA"),),
 
                NOM_CHAM  =SIMP(statut='f',typ='TXM',fr="nom du champ pour VALE_NCOU_MAXI", ),
                NOM_CMP   =SIMP(statut='f',typ='TXM',fr="nom de la composante pour VALE_NCOU_MAXI",  ),
@@ -5007,7 +5140,7 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_
           b_indi_erreur        =BLOC( condition = "TYPE_OPTION=='INDI_ERREUR'",
                OPTION    =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM",
                            into=("SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM",
-                                 "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
+                                 "ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
                                  "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
                                  "SING_ELEM","SING_ELNO_ELEM",
                                  )),
@@ -5051,6 +5184,7 @@ b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_
                                  "EPSP_ELNO","EPSP_ELGA",
                                  "EPFD_ELNO","EPFD_ELGA","EPVC_ELNO","EPVC_ELGA",
                                  "EPFP_ELNO","EPFP_ELGA",
+                                 "VARC_ELGA",
                                  "VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU","CRIT_ELNO_RUPT",
                                  "EXTR_ELGA_VARI","EXTR_ELNO_VARI",
                                  # CRIT
@@ -5424,7 +5558,7 @@ CALC_ESSAI = MACRO(nom       = 'CALC_ESSAI',
                                           ),
                         );
 
-#& MODIF COMMANDE  DATE 28/04/2009   AUTEUR ASSIRE A.ASSIRE 
+#& MODIF COMMANDE  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -5692,6 +5826,101 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant
 
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
 )  ;
+#& MODIF COMMANDE  DATE 11/10/2010   AUTEUR PELLET J.PELLET 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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
+
+def calc_ferrailage_prod(RESULTAT,**args):
+   if AsType(RESULTAT) != None : return AsType(RESULTAT)
+   raise AsException("type de concept resultat non prevu")
+
+
+CALC_FERRAILLAGE=OPER(nom="CALC_FERRAILLAGE",op=175,sd_prod=calc_ferrailage_prod, reentrant='o',
+            UIinfo={"groupes":("Outils métier",)},
+                 fr="calcul de cartes de densité de ferraillage ",
+
+         RESULTAT        =SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans,) ),
+
+
+#====
+# Sélection des numéros d'ordre pour lesquels on fait le calcul :
+#====
+         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),
+         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+         LIST_INST       =SIMP(statut='f',typ=listr8_sdaster),
+         FREQ            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+         LIST_FREQ       =SIMP(statut='f',typ=listr8_sdaster),
+
+         b_acce_reel     =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)",
+            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',),),
+         ),
+
+
+#
+#====
+# Définition des grandeurs caractéristiques
+#====
+#
+         TYPE_COMB    =SIMP(statut='o',typ='TXM',into=('ELU','ELS')),
+
+#        mot clé facteur répétable pour assigner les caractéristiques locales par zones topologiques (GROUP_MA)
+         AFFE  =FACT(statut='o',max='**',
+           regles=(UN_PARMI('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='**'),
+           ENROBG     =SIMP(statut='o',typ='R'), # enrobage
+           CEQUI      =SIMP(statut='f',typ='R'), # coefficient d'équivalence acier/béton  (pour ELS)
+           SIGM_ACIER =SIMP(statut='o',typ='R'), # contrainte admissible dans l'acier
+           SIGM_BETON =SIMP(statut='o',typ='R'), # contrainte admissible dans le béton
+           PIVA       =SIMP(statut='f',typ='R'), # valeur du pivot a  (pour ELU)
+           PIVB       =SIMP(statut='f',typ='R'), # valeur du pivot b  (pour ELU)
+           ),
+      )
+
+
+##############################################################################################################
+# Remarques :
+#-----------
+#        l'épaisseur des coques sera récupérée automatiquement
+#        via le cara_elem sous-jacent au résultat
+
+# Le résultat produit est un champ constant par éléments associé à la grandeur FER2_R
+# qui comporte les composantes :
+#
+#     DNSXI  densité d'acier longitudinal suivant X, peau inf
+#     DNSXS  densité d'acier longitudinal suivant X, peau sup
+#     DNSYI  densité d'acier longitudinal suivant Y, peau inf
+#     DNSYS  densité d'acier longitudinal suivant Y, peau sup
+#     DNST   densité d'acier transversal
+#     SIGMBE contrainte beton
+#     EPSIBE deformation béton
+
+# arrêt en erreur si:
+# - EFGE_ELNO_DEPL n'a pas été précédemment calculé et n'est donc pas présent dans la structure de données RESULTAT
+# - si aucun CARA_ELEM n'est récupérable via la structure de données RESULTAT
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -5798,7 +6027,7 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_pr
          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 11/10/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -5820,7 +6049,7 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_pr
 from Macro.calc_fonction_ops import calc_fonction_ops
 def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C,
                        ENVELOPPE,FRACTILE,SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE,
-                       LISS_ENVELOP,ABS, **args):
+                       LISS_ENVELOP,ABS, REGR_POLYNOMIALE, **args):
 
    if (INTEGRE     != None): return fonction_sdaster
    if (DERIVE      != None): return fonction_sdaster
@@ -5855,17 +6084,19 @@ def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C,
       if (AsType(vale) == fonction_c) : return fonction_sdaster
    if (CORR_ACCE   != None): return fonction_sdaster
    if (LISS_ENVELOP!= None): return nappe_sdaster
+   if (REGR_POLYNOMIALE != None): return fonction_sdaster
    if (PUISSANCE   != None): return AsType(PUISSANCE[0]['FONCTION'])
    if (ABS         != None): return fonction_sdaster
    raise AsException("type de concept resultat non prevu")
 
+
 CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_fonction_prod
                     ,fr="Effectue des opérations mathématiques sur des concepts de type fonction",
                      reentrant='n',
             UIinfo={"groupes":("Fonction",)},
          regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','COMB','COMB_C','ENVELOPPE',
                           'COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE',
-                          'LISS_ENVELOP','INVERSE','ABS','FRACTILE'),),
+                          'LISS_ENVELOP','INVERSE','ABS','FRACTILE','REGR_POLYNOMIALE'),),
          FFT             =FACT(statut='f',fr="Transformée de Fourier ou de son inverse",
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ),
            METHODE         =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE","COMPLET") ),
@@ -5889,6 +6120,10 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti
            ELARG           =SIMP(statut='f',typ='R',defaut =0.1 ),
            TOLE_LISS       =SIMP(statut='f',typ='R',defaut =0.25 ),
          ),
+         REGR_POLYNOMIALE = FACT(statut='f',fr="Régression polynomiale d'une fonction",
+           FONCTION        =SIMP(statut='o',typ=fonction_sdaster),
+           DEGRE           =SIMP(statut='o',typ='I'),
+         ),
          SPEC_OSCI       =FACT(statut='f',fr="Spectre d'oscillateur",
            METHODE         =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ),
            FONCTION        =SIMP(statut='o',typ=fonction_sdaster ),
@@ -5912,7 +6147,7 @@ CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_foncti
            COEF_R          =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
            COEF_C          =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ),
          ),
-         b_comb          =BLOC ( condition = " (COMB != None) or (COMB_C != None)",
+         b_comb          =BLOC ( condition = "COMB != None or COMB_C != None or REGR_POLYNOMIALE != None",
              LIST_PARA      =SIMP(statut='f',typ=listr8_sdaster ),  
          ),
          COMPOSE         =FACT(statut='f',fr="Composition de deux fonctions FONC_RESU(FONC_PARA)",
@@ -5957,7 +6192,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6041,22 +6276,28 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
              PCENT_PIVOT     =SIMP(statut='f',typ='I',defaut=10,),
              RESI_RELA       =SIMP(statut='f',typ='R',defaut=1.0E-6,),
              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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 08/12/2009   AUTEUR PROIX J-M.PROIX 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -6239,7 +6480,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6316,15 +6557,22 @@ 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.0E-6,),
              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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 ),
            ),
@@ -6539,7 +6787,7 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
          OPTION          =SIMP(statut='f',typ='TXM'     
                              ,into=("META_ELNO_TEMP",) ),
 )  ;
-#& MODIF COMMANDE  DATE 16/02/2010   AUTEUR COURTOIS M.COURTOIS 
+#& MODIF COMMANDE  DATE 29/09/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2010  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6566,27 +6814,22 @@ CALC_MISS = MACRO(nom="CALC_MISS",op=calc_miss_ops,
                   UIinfo={"groupes":("Résolution",)},
 
    OPTION      = FACT(statut='o',
-                      regles=(UN_PARMI('TOUT','MODULE'),),
-      TOUT        = SIMP(statut='f',typ='TXM',into=("OUI",)),
-      MODULE      = SIMP(statut='f',typ='TXM',into=("MISS_IMPE",)),     # "PRE_MISS","MISS_EVOL",
+      MODULE      = SIMP(statut='f',typ='TXM',defaut="MISS_IMPE", into=("MISS_IMPE",)),
    ),
    TABLE_SOL   = SIMP(statut='f', typ=table_sdaster),
 
-   PROJET      = SIMP(statut='o', typ='TXM'),  
+   PROJET      = SIMP(statut='f', typ='TXM'),  
    REPERTOIRE  = SIMP(statut='f', typ='TXM'),
    VERSION     = SIMP(statut='f', typ='TXM', into=("V1_4",), defaut="V1_4"),
 
    UNITE_IMPR_ASTER = SIMP(statut='f',typ='I',defaut=25),  
-#   UNITE_OPTI_MISS  = SIMP(statut='f',typ='I',defaut=26),  
-#   UNITE_MODELE_SOL = SIMP(statut='f',typ='I',defaut=27),  
    UNITE_RESU_IMPE  = SIMP(statut='f',typ='I',defaut=30),
    UNITE_RESU_FORC  = SIMP(statut='f',typ='I',defaut=0),
-   PARAMETRE   = FACT(statut='f',
+   PARAMETRE   = FACT(statut='o',
                       regles=(PRESENT_PRESENT('OFFSET_MAX','OFFSET_NB'),
                               PRESENT_PRESENT('FREQ_MIN','FREQ_MAX','FREQ_PAS'),
                               PRESENT_PRESENT('LFREQ_NB','LFREQ_LISTE'),
                               UN_PARMI('FREQ_MIN', 'LFREQ_NB'),
-                              PRESENT_PRESENT('CONTR_NB','CONTR_LISTE'),
                               PRESENT_PRESENT('SPEC_MAX','SPEC_NB'),),
       FREQ_MIN       = SIMP(statut='f',typ='R'), 
       FREQ_MAX       = SIMP(statut='f',typ='R'),
@@ -6598,10 +6841,6 @@ CALC_MISS = MACRO(nom="CALC_MISS",op=calc_miss_ops,
       ISSF           = SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"),
       TYPE           = SIMP(statut='f',typ='TXM',into=("BINAIRE","ASCII",),defaut="ASCII"),
       RFIC           = SIMP(statut='f',typ='R',defaut=0.),
-      DIRE_ONDE      = SIMP(statut='f',typ='R',max='**'),
-
-      FICH_RESU_IMPE = SIMP(statut='f',typ='TXM'),
-      FICH_RESU_FORC = SIMP(statut='f',typ='TXM'),
 
       ALGO           = SIMP(statut='f',typ='TXM',into=("DEPL","REGU")),
       DREF           = SIMP(statut='f',typ='R'),
@@ -6611,13 +6850,11 @@ CALC_MISS = MACRO(nom="CALC_MISS",op=calc_miss_ops,
       OFFSET_NB      = SIMP(statut='f',typ='I'),
 
       FICH_POST_TRAI = SIMP(statut='f',typ='TXM'),
-      CONTR_NB       = SIMP(statut='f',typ='I'),
-      CONTR_LISTE    = SIMP(statut='f',typ='R',max='**'),
    ),
    INFO        = SIMP(statut='f', typ='I', defaut=1, into=(1,2)),
 )
 
-#& MODIF COMMANDE  DATE 27/04/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6655,15 +6892,7 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops,
          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"  ),
-         ),),
+         CHARGE          =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
          METHODE         =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
                                into=("TRI_DIAG","JACOBI","SORENSEN","QZ") ),
          b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
@@ -6711,7 +6940,6 @@ CALC_MODAL=MACRO(nom="CALC_MODAL",op=calc_modal_ops,
              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 ),
@@ -6785,7 +7013,7 @@ CALC_MODE_ROTATION=MACRO(nom="CALC_MODE_ROTATION",op=calc_mode_rotation_ops,sd_p
                   PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
                   STURM           =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),),
 );      
-#& MODIF COMMANDE  DATE 27/04/2010   AUTEUR DESROCHES X.DESROCHE
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DELMAS J.DELMA
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6866,7 +7094,6 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f',
                                      "SIGM_NOEU_CART","SIGM_NOEU_COQU","SIGM_NOEU_DEPL",
                                      "SIGM_NOEU_SIEF",
                                      "SIPO_NOEU_DEPL","SIPO_NOEU_SIEF",
-                                     "SIRE_NOEU_DEPL",
                                      "VARI_NOEU","EXTR_NOEU_VARI","VARI_NOEU_ELGA",) ),
 
          b_forc_reac     =BLOC(condition = """(OPTION == 'FORC_NODA') or (type(OPTION) == type(()) and 'FORC_NODA' in OPTION) or\
@@ -6894,7 +7121,7 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='f',
          GROUP_NO_RESU   =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
          NOEUD_RESU      =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 03/05/2010   AUTEUR PROIX J-M.PROIX 
+#& MODIF COMMANDE  DATE 28/06/2010   AUTEUR PROIX J-M.PROIX 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2010  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -6953,7 +7180,7 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='
      EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
      EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
      EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-
+     
      SIGM_INIT=FACT(statut='f',
             SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
             SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
@@ -6973,7 +7200,28 @@ CALC_POINT_MAT=OPER(nom="CALC_POINT_MAT",op=33,sd_prod=table_sdaster,reentrant='
      VARI_INIT=FACT(statut='f',
             VALE = SIMP(statut='o',typ='R',max='**'),
                        ),
+     MATR_C1=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ='R',max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                              ),
+     MATR_C2=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ='R',max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                              ),
+     VECT_IMPO=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+                              ),
       NB_VARI_TABLE  =SIMP(statut='f',typ='I',max=1,),
+      
+      ARCHIVAGE       =FACT(statut='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-6),
+                           ),
      );
 
 #& MODIF COMMANDE  DATE 07/07/2009   AUTEUR REZETTE C.REZETTE 
@@ -7310,23 +7558,80 @@ 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.LEFEBVRE 
+#& MODIF COMMANDE  DATE 08/12/2009   AUTEUR PROIX J-M.PROIX 
 #            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.      
+# 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 ABBAS M.ABBAS
+
+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",
+                           into=( "COMPORTEMENT","MATR_TANG_ELEM","FORC_INT_ELEM"),),
+     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)),
+       TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+                                 into=("FIXE_CSTE",)),
+
+     ),
+     DEPL            =SIMP(statut='o',typ=cham_no_sdaster ),
+     INCR_DEPL       =SIMP(statut='o',typ=cham_no_sdaster ),
+     SIGM            =SIMP(statut='o',typ=cham_elem),
+     VARI            =SIMP(statut='o',typ=cham_elem),
+     INCREMENT       =FACT(statut='o',
+          LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
+          NUME_ORDRE      =SIMP(statut='o',typ='I'),),
+     COMP_INCR       =C_COMP_INCR(),
+     COMP_ELAS       =FACT(statut='f',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=("IMPLICITE",)),
+          RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
+                                into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
+                                     "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
+          DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ),
+          ),
+     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
+# ======================================================================
+# 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 PELLET J.PELLET
 def calc_vect_elem_prod(OPTION,**args):
@@ -7377,63 +7682,6 @@ CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentr
            MODELE            =SIMP(statut='f',typ=modele_sdaster),
          ),       
 ) ;
-#& MODIF COMMANDE  DATE 08/12/2009   AUTEUR PROIX J-M.PROIX 
-#            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 ABBAS M.ABBAS
-
-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",
-                           into=( "COMPORTEMENT","MATR_TANG_ELEM","FORC_INT_ELEM"),),
-     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)),
-       TYPE_CHARGE     =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
-                                 into=("FIXE_CSTE",)),
-
-     ),
-     DEPL            =SIMP(statut='o',typ=cham_no_sdaster ),
-     INCR_DEPL       =SIMP(statut='o',typ=cham_no_sdaster ),
-     SIGM            =SIMP(statut='o',typ=cham_elem),
-     VARI            =SIMP(statut='o',typ=cham_elem),
-     INCREMENT       =FACT(statut='o',
-          LIST_INST       =SIMP(statut='o',typ=listr8_sdaster),
-          NUME_ORDRE      =SIMP(statut='o',typ='I'),),
-     COMP_INCR       =C_COMP_INCR(),
-     COMP_ELAS       =FACT(statut='f',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=("IMPLICITE",)),
-          RELATION        =SIMP(statut='o',typ='TXM',defaut="ELAS",
-                                into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
-                                     "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
-          DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ),
-          ),
-     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
 # ======================================================================
@@ -7856,7 +8104,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 30/06/2008   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 14/09/2010   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -7880,7 +8128,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
             UIinfo={"groupes":("Maillage",)},
          regles=(EXCLUS('COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
                         'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE',
-                        'QUAD_LINE', 'REPERE','RESTREINT'),),
+                        'QUAD_LINE', 'REPERE','RESTREINT','PENTA15_18',),),
 
 
 
@@ -7978,6 +8226,14 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
            PREF_NOEUD      =SIMP(statut='f',typ='TXM',defaut="NS"),
            PREF_NUME       =SIMP(statut='f',typ='I',defaut= 1 ),
          ),
+         PENTA15_18     =FACT(statut='f',fr="Passage PENTA15 -> PENTA18",
+           regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
+           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='**'),
+           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",) ),
@@ -8225,7 +8481,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
            ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 28/07/2009   AUTEUR TORKHANI M.TORKHANI 
+#& MODIF COMMANDE  DATE 28/06/2010   AUTEUR FLEJOU J-L.FLEJOU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -8259,7 +8515,7 @@ CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod,
                 fr="Création d'une table à partir d'une fonction ou de deux listes",
                 reentrant='f',UIinfo={"groupes":("Table",)},
 
-           regles=(EXCLUS('FONCTION','LISTE'),),
+           regles=(EXCLUS('FONCTION','LISTE','RESU'),),
 
            LISTE=FACT(statut='f',max='**',
                  fr="Creation d'une table a partir de listes",
@@ -8284,6 +8540,43 @@ CREA_TABLE=OPER(nom="CREA_TABLE",op=36,sd_prod=crea_table_prod,
                                     fr="Liste des paramètres de sensibilité.",
                                     ang="List of sensitivity parameters"),
            ),
+           RESU=FACT(statut='f',max=1,
+                fr="Creation d'une table a partir d'un resultat ou d'un champ",
+                regles=(UN_PARMI('CHAM_GD','RESULTAT'),
+                        UN_PARMI('TOUT_CMP','NOM_CMP'),
+                        PRESENT_ABSENT('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',),
+                        AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',),
+                        ),
+                        CHAM_GD  =SIMP(statut='f',typ=cham_gd_sdaster),
+                        RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ),
+                        b_resultat   =BLOC(condition = "RESULTAT != None",
+                               regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST',
+                                              'MODE','LIST_MODE','FREQ','LIST_FREQ'),),
+                               NOM_CHAM        =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+                               TOUT_ORDRE      =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                               NUME_ORDRE      =SIMP(statut='f',typ='I',max='**'),
+                               LIST_ORDRE      =SIMP(statut='f',typ=(listis_sdaster) ),
+                               INST            =SIMP(statut='f',typ='R',max='**'),
+                               LIST_INST       =SIMP(statut='f',typ=(listr8_sdaster) ),
+                               MODE            =SIMP(statut='f',typ='I',max='**'),
+                               LIST_MODE       =SIMP(statut='f',typ=(listis_sdaster) ),
+                               FREQ            =SIMP(statut='f',typ='R',max='**'),
+                               LIST_FREQ       =SIMP(statut='f',typ=(listr8_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',),),
+                            ),
+                      TOUT_CMP        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                      NOM_CMP         =SIMP(statut='f',typ='TXM',max='**'),
+                      TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+                      GROUP_MA        =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+                      GROUP_NO        =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+                      MAILLE          =SIMP(statut='f',typ=ma  ,validators=NoRepeat(),max='**'),
+                      NOEUD           =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
+                      ),
+
            TYPE_TABLE = SIMP(statut='f', typ='TXM', defaut="TABLE",
                              into=('TABLE', 'TABLE_FONCTION', 'TABLE_CONTENEUR'),),
            
@@ -8771,7 +9064,7 @@ DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op=   2,sd_prod=fonction_sdaster,
          VALE            =SIMP(statut='o',typ='R',),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 27/04/2010   AUTEUR DESOZA T.DESOZA 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -8811,25 +9104,25 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                defaut="DISCRETE",
                                into=("DISCRETE","CONTINUE","XFEM","LIAISON_UNIL",),),
 
-# PARAMETRE GENERAL: FROTTEMENT (A TERME DEVRA ETRE AU NIVEAU ZONE)
+# PARAMETRE GENERAL: FROTTEMENT
 
-           FROTTEMENT      =SIMP(statut='f',
-                                 typ='TXM',
-                                 position='global',
-                                 defaut="SANS",
-                                 into=("COULOMB","SANS",)),
+         FROTTEMENT      =SIMP(statut='f',
+                               typ='TXM',
+                               position='global',
+                               defaut="SANS",
+                               into=("COULOMB","SANS",)),
+                               
+### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT MAILLE, NE DEPENDENT PAS DE LA ZONE DE CONTACT)
 
+         b_contact_mail=BLOC(condition = "((FORMULATION == 'CONTINUE') or (FORMULATION == 'DISCRETE'))",
+           STOP_INTERP   = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), 
+           LISSAGE       = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),    
+         ),                            
+                               
 ### PARAMETRES GENERAUX (UNIQUEMENT POUR LE CONTACT, NE DEPENDENT PAS DE LA ZONE DE CONTACT)
 
          b_contact=BLOC(condition = "FORMULATION != 'LIAISON_UNIL' ",
 
-# PARAMETRE GENERAL: APPARIEMENT
-
-           LISSAGE         =SIMP(statut='f',
-                                 typ='TXM',
-                                 defaut="NON",
-                                 into=("OUI","NON"),),
-
 # PARAMETRE GENERAL: VERIFICATION DE L'ORIENTATION ET DE LA COHERENCE DES NORMALES
 
            VERI_NORM       =SIMP(statut='f',
@@ -8884,7 +9177,6 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                    ),
                                  ),
 
-
 # PARAMETRE GENERAL: BOUCLE SUR CONTACT
 
            b_bouc_cont_disc=BLOC(condition = "FORMULATION == 'DISCRETE' ",
@@ -8935,9 +9227,6 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                   STOP_SINGULIER= SIMP(statut='f',typ='TXM',defaut="OUI",
                                                        into=("OUI","NON")),
                                   NB_RESOL      = SIMP(statut='f',typ='I', defaut=10 ),
-                                  STOP_INTERP   = SIMP(statut='f',typ='TXM',defaut="NON",
-                                                       into=("OUI","NON")),
-                                  TOLE_INTERP   = SIMP(statut='f',typ='R',defaut = 0.),
                                   RESI_ABSO     = SIMP(statut='f',typ='R',
                                   fr="Critere de convergence (niveau d'interpenetration autorise)"),
                                   REAC_ITER     = SIMP(statut='f',typ='I',defaut=3,
@@ -8956,7 +9245,7 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                  fr="Autorise-t-on de sortir du domaine admissible lors de la recherche lineaire",),
                                   ),
            ), #fin bloc b_contact
-
+                                              
 ## AFFECTATIONS (ZONES PAR ZONES)
 
 # AFFECTATION - CAS LIAISON_UNILATERALE
@@ -8979,6 +9268,7 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 # -- Incompatibilité avec CL
                                             SANS_NOEUD      =SIMP(statut='f',typ=no   ,validators=NoRepeat(),max='**'),
                                             SANS_GROUP_NO   =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+                                            
 
                                             ),
                                   ), #fin bloc b_affe_unil
@@ -9047,10 +9337,18 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 # -- Incompatibilité avec CL
                                             SANS_NOEUD      =SIMP(statut='f',typ=no   ,validators=NoRepeat(),max='**'),
                                             SANS_GROUP_NO   =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+                                            SANS_MAILLE     =SIMP(statut='f',typ=ma   ,validators=NoRepeat(),max='**'),
+                                            SANS_GROUP_MA   =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+
+# -- Mode sans calcul
+                                            RESOLUTION      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+                                            b_verif=BLOC(condition = "RESOLUTION == 'NON' ",
+                                               TOLE_INTERP   = SIMP(statut='f',typ='R',defaut = 0.),
+                                            ),   
 
 # -- Résolution
                                             ALGO_CONT       =SIMP(statut='o',typ='TXM',defaut="CONTRAINTE",
-                                                                  into=("CONTRAINTE","LAGRANGIEN","PENALISATION","VERIF","GCP"),),
+                                                                  into=("CONTRAINTE","LAGRANGIEN","PENALISATION","GCP"),),
 
                                             b_active=BLOC(condition = "ALGO_CONT == 'CONTRAINTE' ",
                                                          fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
@@ -9060,10 +9358,6 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                                 ),
                                               ),
 
-                                            b_verif=BLOC(condition = "ALGO_CONT == 'VERIF' ",
-                                                         fr="Paramètres de la méthode sans calcul de contact",
-                                              GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-                                              ),
 
                                             b_penal_contact=BLOC(condition = "ALGO_CONT == 'PENALISATION' ",
                                                                  fr="Paramètres de la méthode pénalisée (contact)",
@@ -9151,7 +9445,9 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 
                                             SANS_NOEUD      =SIMP(statut='f',typ=no   ,validators=NoRepeat(),max='**'),
                                             SANS_GROUP_NO   =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
-
+                                            SANS_MAILLE     =SIMP(statut='f',typ=ma   ,validators=NoRepeat(),max='**'),
+                                            SANS_GROUP_MA   =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+                                            
                                             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",
@@ -9172,12 +9468,19 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
 
                                             EXCLUSION_PIV_NUL=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",),),
 
+# -- Mode sans calcul
+                                            RESOLUTION      =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+                                            b_verif=BLOC(condition = "RESOLUTION == 'NON' ",
+                                               TOLE_INTERP   = SIMP(statut='f',typ='R',defaut = 0.),
+                                            ),  
+
 # -- Fonctionnalités spécifiques 'CONTINUE'
                                             INTEGRATION     =SIMP(statut='f',typ='TXM',defaut="NOEUD",
                                                                    into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
                                                                                          "NCOTES" ,"NCOTES1" ,"NCOTES2"),),
 
-                                            CONTACT_INIT    =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),
+                                            CONTACT_INIT    =SIMP(statut='f',typ='TXM',defaut="NON",
+                                                                  into=("OUI","INTERPENETRE","NON"),),
 
                                             GLISSIERE       =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),),
 
@@ -9212,10 +9515,10 @@ DEFI_CONTACT=OPER(nom       = "DEFI_CONTACT",
                                               regles=(EXCLUS('SANS_NOEUD_FR','SANS_GROUP_NO_FR'),),
                                               SANS_NOEUD_FR    =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                                               SANS_GROUP_NO_FR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-                                              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),
+                                              b_sans_group_no_frot=BLOC(condition = " SANS_GROUP_NO_FR != None or \
+                                                                                         SANS_NOEUD_FR != None ",
+                                                fr="Direction de frottement à exclure (uniquement dans le cas 3D)",
+                                                DIRE_EXCL_FROT=SIMP(statut='f',typ='R',min=3,max=3),
                                                 ),
 
                                               ALGO_FROT       =SIMP(statut='f',typ='TXM',defaut="STANDARD",
@@ -9418,7 +9721,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 24/08/2009   AUTEUR GENIAUT S.GENIAUT 
+#& MODIF COMMANDE  DATE 27/09/2010   AUTEUR GENIAUT S.GENIAUT 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -9481,17 +9784,26 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
       CHAM_NO_LST         =SIMP(statut='f',typ=cham_no_sdaster,min=1,max=1),
       GROUP_MA_FISS       =SIMP(statut='f',typ=grma,min=1,max=1),
       GROUP_MA_FOND       =SIMP(statut='f',typ=grma,min=1,max=1),
-      FORM_FISS   =SIMP(statut='f',typ='TXM',into=("ELLIPSE","CYLINDRE","DEMI_PLAN","SEGMENT","DEMI_DROITE","INCLUSION","DROITE") ),
+      FORM_FISS   =SIMP(statut='f',typ='TXM',into=("ELLIPSE","RECTANGLE","CYLINDRE","DEMI_PLAN",
+                                                   "SEGMENT","DEMI_DROITE","INCLUSION","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),
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=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_rectangle         =BLOC(condition = "FORM_FISS == 'RECTANGLE' ",fr="Paramètres de la fissure rectangulaire",           
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=0.),
+           RAYON_CONGE    =SIMP(statut='f',typ='R',val_min=0.,defaut=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),
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=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),),
@@ -9509,8 +9821,8 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
            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),
+           DEMI_GRAND_AXE =SIMP(statut='o',typ='R',val_min=0.),
+           DEMI_PETIT_AXE =SIMP(statut='o',typ='R',val_min=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),),
@@ -9520,7 +9832,7 @@ DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op=  41,sd_prod=fiss_xfem,reentrant='n'
 #                       partie du maillage potentiellement enrichie
 # ------------------------------------------------------------------------------------------------------------------------
 
-    GROUP_MA_ENRI         =SIMP(statut='o',typ=grma,max=01),
+    GROUP_MA_ENRI         =SIMP(statut='f',typ=grma,max=01),
 
 # ------------------------------------------------------------------------------------------------------------------------
 #                       types d'enrichissement 
@@ -10083,7 +10395,7 @@ DEFI_GLRC=OPER(nom="DEFI_GLRC",op=57,sd_prod=mater_sdaster,reentrant='f',
            UNITE           =SIMP(statut='f',typ='I',defaut=8),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 02/02/2010   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 21/06/2010   AUTEUR MACOCCO K.MACOCCO 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -10153,6 +10465,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
                   NOEUD_CENTRE    =SIMP(statut='f',typ=no),
                   GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
                   RAYON           =SIMP(statut='o',typ='R' ),
+                  CRIT_NOEUD      = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN",
+                                  into=("TOUS","AU_MOINS_UN","MAJORITE"),),
                 ),
                 b_cylindre      =BLOC(condition = "OPTION == 'CYLINDRE'",
                   regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
@@ -10163,6 +10477,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
                   RAYON           =SIMP(statut='o',typ='R' ),
                   ANGL_NAUT       =SIMP(statut='f',typ='R',max=2),
                   VECT_NORMALE    =SIMP(statut='f',typ='R',max=3),
+                  CRIT_NOEUD      = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN",
+                                  into=("TOUS","AU_MOINS_UN","MAJORITE"),),
                 ),
                 b_bande         =BLOC(condition = "OPTION == 'BANDE'",
                   regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
@@ -10173,6 +10489,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
                   DIST            =SIMP(statut='o',typ='R' ),
                   ANGL_NAUT       =SIMP(statut='f',typ='R',max=2),
                   VECT_NORMALE    =SIMP(statut='f',typ='R',max=3),
+                  CRIT_NOEUD      = SIMP(statut='f',typ='TXM',defaut="AU_MOINS_UN",
+                                  into=("TOUS","AU_MOINS_UN","MAJORITE"),),
                 ),
                 b_app_lache         =BLOC(condition = "OPTION == 'APPUI_LACHE'",
                   regles=(UN_PARMI('NOEUD','GROUP_NO'),),
@@ -10306,6 +10624,45 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
          ALARME          =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
          INFO            =SIMP(statut='f',typ='I',into=( 1 , 2 ) ),
 )  ;
+#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR CORUS M.CORUS 
+#            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 CORUS M.CORUS
+
+DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op=  98,sd_prod=interf_dyna_clas,
+                      reentrant='n',
+            UIinfo={"groupes":("Matrices/vecteurs",)},
+            fr="Définir les interfaces d'une structure et leur affecter un type",
+         NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
+         INTERFACE       =FACT(statut='o',max='**',
+           regles=(ENSEMBLE('NOM','TYPE'),
+#  erreur doc U sur la condition qui suit
+                   UN_PARMI('NOEUD','GROUP_NO'),),
+           NOM             =SIMP(statut='f',typ='TXM' ),
+           TYPE            =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
+           NOEUD           =SIMP(statut='f',typ=no,max='**'),
+           GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
+#           DDL_ACTIF       =SIMP(statut='f',typ='TXM',max='**'),
+           MASQUE          =SIMP(statut='f',typ='TXM',max='**'),
+         ),
+         FREQ            =SIMP(statut='f',typ='R',defaut= 1.),
+         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
 # ======================================================================
@@ -10370,45 +10727,6 @@ DEFI_INTE_SPEC=MACRO(nom="DEFI_INTE_SPEC",op= defi_inte_spec_ops,sd_prod=table_f
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),               
 )  ;
-#& MODIF COMMANDE  DATE 06/05/2008   AUTEUR CORUS M.CORUS 
-#            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 CORUS M.CORUS
-
-DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op=  98,sd_prod=interf_dyna_clas,
-                      reentrant='n',
-            UIinfo={"groupes":("Matrices/vecteurs",)},
-            fr="Définir les interfaces d'une structure et leur affecter un type",
-         NUME_DDL        =SIMP(statut='o',typ=nume_ddl_sdaster ),
-         INTERFACE       =FACT(statut='o',max='**',
-           regles=(ENSEMBLE('NOM','TYPE'),
-#  erreur doc U sur la condition qui suit
-                   UN_PARMI('NOEUD','GROUP_NO'),),
-           NOM             =SIMP(statut='f',typ='TXM' ),
-           TYPE            =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
-           NOEUD           =SIMP(statut='f',typ=no,max='**'),
-           GROUP_NO        =SIMP(statut='f',typ=grno,max='**'),
-#           DDL_ACTIF       =SIMP(statut='f',typ='TXM',max='**'),
-           MASQUE          =SIMP(statut='f',typ='TXM',max='**'),
-         ),
-         FREQ            =SIMP(statut='f',typ='R',defaut= 1.),
-         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
 # ======================================================================
@@ -10464,7 +10782,7 @@ DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 22/09/2009   AUTEUR SELLENET N.SELLENET 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -10521,25 +10839,52 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op=  28,sd_prod=list_inst,reentrant='n'
 
     ECHEC  =FACT(statut='d',max='**',
 
-      EVENEMENT     =SIMP(statut='f',typ='TXM',into=("DIVERGENCE",),defaut="DIVERGENCE",max=1 ),
+      EVENEMENT     =SIMP(statut='f',typ='TXM',into=("ERREUR","DELTA_GRANDEUR"),defaut="ERREUR",max=1 ),
+
+         b_edelta           =BLOC(condition = "EVENEMENT == 'DELTA_GRANDEUR' ",fr=" ",           
+#      event-driven : on sous-decoupe si l'increment d'une composante d'un champ depasse le seuil
+      VALE_REF          =SIMP(statut='o',typ='R',max=1),
+      NOM_CHAM          =SIMP(statut='o',typ='TXM',into=("DEPL","VARI_ELGA","SIEF_ELGA",),max=1),
+      NOM_CMP           =SIMP(statut='o',typ='TXM',max=1),
+                                  ),
+
+        b_subd_erreur  =   BLOC(condition="EVENEMENT == 'ERREUR'",        
+      SUBD_METHODE    =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME","EXTRAPOLE"),defaut="UNIFORME",max=1,
+                            fr="Méthode de subdivision des pas de temps en cas de divergence pour erreur"),
+                                          ),         
+
+        b_subd_event  =   BLOC(condition="EVENEMENT == 'DELTA_GRANDEUR'",        
+      SUBD_METHODE    =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME"),defaut="UNIFORME",max=1,
+                            fr="Méthode de subdivision des pas de temps en cas de diconvergence pour event-driven"),
+                                          ),         
+
 
       SUBD_METHODE    =SIMP(statut='f',typ='TXM',into =("AUCUNE","UNIFORME","EXTRAPOLE"),defaut="UNIFORME",max=1,
                             fr="Méthode de subdivision des pas de temps en cas de diconvergence"),
 
            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,max=1,
                 fr="Coefficient multiplicateur de la 1ère subdivision"),
              SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1,
                 fr="Nombre de subdivision d'un pas de temps"),
+                
+                b_subd_unif_manu  =   BLOC(condition="METHODE == 'MANUEL'",        
+             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
              SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,defaut=3,max=1,
                 fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
              SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1,
                 fr="Pas de temps en dessous duquel on ne subdivise plus"),
+                                          ),         
+
+                b_subd_unif_auto  =   BLOC(condition="METHODE == 'AUTO'",        
+             SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1,
+                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",
@@ -10549,11 +10894,21 @@ DEFI_LIST_INST=OPER(nom="DEFI_LIST_INST",op=  28,sd_prod=list_inst,reentrant='n'
              SUBD_ITER_FIN  =SIMP(statut='f',typ='I',defaut=8,val_min=3,max=1,
                 fr="Seules les n dernières itérations sont prises pour l'extrapolation"),
              SUBD_PAS       =SIMP(statut='f',typ='I',defaut=4,val_min=2,max=1,
-                fr="Nombre de subdivision d'un pas de temps en cas divergence"),
+                fr="Nombre de subdivision d'un pas de temps en cas ERREUR"),
+
+                b_subd_unif_manu  =   BLOC(condition="METHODE == 'MANUEL'",        
+             regles=(AU_MOINS_UN('SUBD_NIVEAU','SUBD_PAS_MINI'),),
              SUBD_NIVEAU=SIMP(statut='f',typ='I',val_min=2,max=1,
                 fr="Nombre maximum de niveau de subdivision d'un pas de temps"),
              SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1,
                 fr="Pas de temps en dessous duquel on ne subdivise plus"),
+                                          ),         
+
+                b_subd_unif_auto  =   BLOC(condition="METHODE == 'AUTO'",        
+             SUBD_PAS_MINI=SIMP(statut='f',typ='R',defaut=0.,val_min=0.0,max=1,
+                fr="Pas de temps en dessous duquel on ne subdivise plus"),
+                                          ),         
+
              SUBD_ITER_PLUS =SIMP(statut='f',typ='I',defaut=50,val_min=20,max=1,
                 fr="% itération autorisée en plus"),
                             ),
@@ -10778,7 +11133,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op=  88,sd_prod=maillage_sdaster,
            GROUP_NO_FIN    =SIMP(statut='f',typ=grno),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+#& MODIF COMMANDE  DATE 12/07/2010   AUTEUR PROIX J-M.PROIX 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -10806,6 +11161,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                       'ELAS_HYPER','ELAS_2NDG',),
                EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
                EXCLUS('ECRO_LINE','ECRO_LINE_FO','ECRO_PUIS'),
+               EXCLUS('ENDO_HETEROGENE'),
                EXCLUS('TAHERI','TAHERI_FO'),
                EXCLUS('ROUSSELIER','ROUSSELIER_FO'),
                EXCLUS('VISC_SINH','VISC_SINH_FO'),
@@ -10816,7 +11172,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                EXCLUS('VISCOCHAB','VISCOCHAB_FO'),
                EXCLUS('LEMAITRE','LEMAITRE_FO','VISC_IRRA_LOG',
                'LEMA_SEUIL','LEMA_SEUIL_FO','LEMAITRE_IRRA','LMARC_IRRA',),
-               EXCLUS('LMARC','LMARC_FO'),
                EXCLUS('META_LEMA_ANI','META_LEMA_ANI_FO'),
                EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'),
                EXCLUS('VENDOCHAB','VENDOCHAB_FO'),
@@ -10945,12 +11300,15 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
            ),
            ELAS_HYPER      =FACT(statut='f',
                                  regles=(UN_PARMI('K','NU'),),
-             C10             =SIMP(statut='f',typ='R',defaut=0.0),
-             C01             =SIMP(statut='o',typ='R'),
-             C20             =SIMP(statut='f',typ='R',defaut=0.0),
-             K               =SIMP(statut='f',typ='R'),
-             RHO             =SIMP(statut='f',typ='R',defaut=0.0),
-             NU              =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0),
+             C10             =SIMP(statut='o',typ='R',
+                                   fr="Si C10 est le seul coefficient fourni, alors le matériau est Néo-Hookéen."),
+             C01             =SIMP(statut='f',typ='R',defaut=0.0,
+                                   fr="Si l'on fournit C01 en plus de C10, on obtient un matériau de type Mooney-Rivlin."),
+             C20             =SIMP(statut='f',typ='R',defaut=0.0,
+                                   fr="Si l'on fournit C20 en plus de C10 et C01, on obtient un matériau de type Signorini."),
+             K               =SIMP(statut='f',typ='R',fr="Module de compressibilité."),
+             NU              =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0,fr="Coefficient de Poisson."),
+             RHO             =SIMP(statut='f',typ='R',defaut=0.0,fr="Masse volumique."),
            ),
            ELAS_COQUE      =FACT(statut='f',
              regles=(EXCLUS('MEMB_L','M_LLLL',),
@@ -11083,6 +11441,13 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              D_SIGM_EPSI     =SIMP(statut='o',typ='R',),
              SY              =SIMP(statut='o',typ='R',),
            ),
+           ENDO_HETEROGENE   =FACT(statut='f',
+             WEIBULL         =SIMP(statut='o',typ='R',),
+             SY              =SIMP(statut='o',typ='R',),
+             KI              =SIMP(statut='o',typ='R',),
+             EPAI            =SIMP(statut='o',typ='R',),
+             GR              =SIMP(statut='f',typ='R',defaut= 1.0),
+           ),
            ECRO_LINE_FO    =FACT(statut='f',
              D_SIGM_EPSI     =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              SY              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -11387,68 +11752,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              N               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              UN_SUR_K        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
              UN_SUR_M        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-           ),
-           LMARC           =FACT(statut='f',
-             DE_0            =SIMP(statut='o',typ='R'),
-             R_0             =SIMP(statut='o',typ='R'),
-             N               =SIMP(statut='o',typ='R'),
-             K               =SIMP(statut='o',typ='R'),
-             Y_I             =SIMP(statut='o',typ='R'),
-             Y_0             =SIMP(statut='o',typ='R'),
-             B               =SIMP(statut='o',typ='R'),
-             A_0             =SIMP(statut='o',typ='R'),
-             RM              =SIMP(statut='o',typ='R'),
-             M               =SIMP(statut='o',typ='R'),
-             P               =SIMP(statut='o',typ='R'),
-             P1              =SIMP(statut='o',typ='R'),
-             P2              =SIMP(statut='o',typ='R'),
-             M11             =SIMP(statut='o',typ='R'),
-             M22             =SIMP(statut='o',typ='R'),
-             M33             =SIMP(statut='o',typ='R'),
-             M66             =SIMP(statut='o',typ='R'),
-             N11             =SIMP(statut='o',typ='R'),
-             N22             =SIMP(statut='o',typ='R'),
-             N33             =SIMP(statut='o',typ='R'),
-             N66             =SIMP(statut='o',typ='R'),
-             Q11             =SIMP(statut='o',typ='R'),
-             Q22             =SIMP(statut='o',typ='R'),
-             Q33             =SIMP(statut='o',typ='R'),
-             Q66             =SIMP(statut='o',typ='R'),
-             R11             =SIMP(statut='o',typ='R'),
-             R22             =SIMP(statut='o',typ='R'),
-             R33             =SIMP(statut='o',typ='R'),
-             R66             =SIMP(statut='o',typ='R'),
-           ),
-           LMARC_FO        =FACT(statut='f',
-             DE_0            =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             R_0             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             K               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Y_I             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Y_0             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             B               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             A_0             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             RM              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             P               =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             P1              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             P2              =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M11             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M22             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M33             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             M66             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N11             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N22             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N33             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             N66             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Q11             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Q22             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Q33             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             Q66             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             R11             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             R22             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             R33             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-             R66             =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
            ),
              META_LEMA_ANI     =FACT(statut='f',
              F1_A            =SIMP(statut='o',typ='R'),
@@ -13538,6 +13841,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
                COEF_CISA_TRAC     =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
              ),
            ),
+
+
+           THM_RUPT       =FACT(statut='f',
+             OUV_FICT        =SIMP(statut='o',typ='R'),
+             UN_SUR_N        =SIMP(statut='f',typ='R',defaut= 0.),
+           ),
 #
 # autres comportements ...
 #
@@ -13676,6 +13985,25 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              ),
              DILAT           =SIMP(statut='f',typ='R',defaut=0.0),
            ),
+           
+           DRUCK_PRAGER_FO  =FACT(statut='f',
+             ALPHA           =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+             SY              =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+             P_ULTM          =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+             ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
+             b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
+                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
+                    H               =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+                    TYPE_DP         =SIMP(statut='c',typ='R',defaut= 1.0,),
+             ),
+             b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
+                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
+                    SY_ULTM         =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+                    TYPE_DP         =SIMP(statut='c',typ='R',defaut= 2.0,),
+             ),
+            DILAT           =SIMP(statut='f',typ='R',defaut=0.0),
+           ),
+
            VISC_DRUC_PRAG          =FACT(statut='f',
              PREF       =SIMP(statut='o',typ='R',fr="pression de reference"),
              A          =SIMP(statut='o',typ='R',fr="parametre carcaterisant l amplitude de la vitesse de fluage"),
@@ -13810,26 +14138,139 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
              PM              =SIMP(statut='o',typ='R'),
              C               =SIMP(statut='o',typ='R'),
            ),
+           ECOU_DD_CFC      =FACT(statut='f',
+             TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
+             GAMMA0          =SIMP(statut='f',typ='R',defaut=0.001,fr="Vitesse d ecoulement initiale en s**-1"),
+             TAU_F           =SIMP(statut='o',typ='R',fr="Contraintes , en unite de contraintes ex 20 MPa"),
+             A               =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"),
+             B               =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"),
+             N               =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"),
+             Y               =SIMP(statut='o',typ='R',fr="paramète Y, en unité de longueur ex 2.5 A"),
+           ),
+           ECRO_DD_CFC      =FACT(statut='f',
+              regles=(PRESENT_PRESENT('H1','H2','H3','H4','H5'),
+                      ),
+             TYPE_PARA       =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),),
+             ALPHA           =SIMP(statut='f',typ='R',defaut=0.35,fr="ecrouissage, paramètre alpha"),
+             BETA            =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre b, en unite de longueur"),
+             RHO_REF         =SIMP(statut='o',typ='R',fr="ecrouissage, paramètre rho_ref, en unité de longueur **-2"),
+             H               =SIMP(statut='f',typ='R'),
+             H1              =SIMP(statut='f',typ='R',defaut=0.124,fr="matrice d'interaction, terme a*",),
+             H2              =SIMP(statut='f',typ='R',defaut=0.625,fr="matrice d'interaction, terme a_colineaire",),
+             H3              =SIMP(statut='f',typ='R',defaut=0.137,fr="matrice d'interaction, terme a_glissile",),
+             H4              =SIMP(statut='f',typ='R',defaut=0.122,fr="matrice d'interaction, terme a_Lomer",),
+             H5              =SIMP(statut='f',typ='R',defaut=0.07,fr="matrice d'interaction, terme a_Hirth",),
+           ),
+
 
 ####  MONOCRISTAL
 
-           DRUCK_PRAGER_FO  =FACT(statut='f',
-             ALPHA           =SIMP(statut='o',typ=(fonction_sdaster,formule)),
-             SY              =SIMP(statut='o',typ=(fonction_sdaster,formule)),
-             P_ULTM          =SIMP(statut='o',typ=(fonction_sdaster,formule)),
-             ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
-             b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
-                    H               =SIMP(statut='o',typ=(fonction_sdaster,formule)),
-                    TYPE_DP         =SIMP(statut='c',typ='R',defaut= 1.0,),
-             ),
-             b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
-                                    fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
-                    SY_ULTM         =SIMP(statut='o',typ=(fonction_sdaster,formule)),
-                    TYPE_DP         =SIMP(statut='c',typ='R',defaut= 2.0,),
-             ),
-            DILAT           =SIMP(statut='f',typ='R',defaut=0.0),
-           ),
+### UMAT
+           UMAT   =FACT(statut='f',
+             C1 =SIMP(statut='f',typ='R'),
+             C2 =SIMP(statut='f',typ='R'),
+             C3 =SIMP(statut='f',typ='R'),
+             C4 =SIMP(statut='f',typ='R'),
+             C5 =SIMP(statut='f',typ='R'),
+             C6 =SIMP(statut='f',typ='R'),
+             C7 =SIMP(statut='f',typ='R'),
+             C8 =SIMP(statut='f',typ='R'),
+             C9 =SIMP(statut='f',typ='R'),
+             C10 =SIMP(statut='f',typ='R'),
+             C11 =SIMP(statut='f',typ='R'),
+             C12 =SIMP(statut='f',typ='R'),
+             C13 =SIMP(statut='f',typ='R'),
+             C14 =SIMP(statut='f',typ='R'),
+             C15 =SIMP(statut='f',typ='R'),
+             C16 =SIMP(statut='f',typ='R'),
+             C17 =SIMP(statut='f',typ='R'),
+             C18 =SIMP(statut='f',typ='R'),
+             C19 =SIMP(statut='f',typ='R'),
+             C20 =SIMP(statut='f',typ='R'),
+             C21 =SIMP(statut='f',typ='R'),
+             C22 =SIMP(statut='f',typ='R'),
+             C23 =SIMP(statut='f',typ='R'),
+             C24 =SIMP(statut='f',typ='R'),
+             C25 =SIMP(statut='f',typ='R'),
+             C26 =SIMP(statut='f',typ='R'),
+             C27 =SIMP(statut='f',typ='R'),
+             C28 =SIMP(statut='f',typ='R'),
+             C29 =SIMP(statut='f',typ='R'),
+             C30 =SIMP(statut='f',typ='R'),
+             C31 =SIMP(statut='f',typ='R'),
+             C32 =SIMP(statut='f',typ='R'),
+             C33 =SIMP(statut='f',typ='R'),
+             C34 =SIMP(statut='f',typ='R'),
+             C35 =SIMP(statut='f',typ='R'),
+             C36 =SIMP(statut='f',typ='R'),
+             C37 =SIMP(statut='f',typ='R'),
+             C38 =SIMP(statut='f',typ='R'),
+             C39 =SIMP(statut='f',typ='R'),
+             C40 =SIMP(statut='f',typ='R'),
+             C41 =SIMP(statut='f',typ='R'),
+             C42 =SIMP(statut='f',typ='R'),
+             C43 =SIMP(statut='f',typ='R'),
+             C44 =SIMP(statut='f',typ='R'),
+             C45 =SIMP(statut='f',typ='R'),
+             C46 =SIMP(statut='f',typ='R'),
+             C47 =SIMP(statut='f',typ='R'),
+             C48 =SIMP(statut='f',typ='R'),
+             C49 =SIMP(statut='f',typ='R'),
+             C50 =SIMP(statut='f',typ='R'),
+           ),
+           UMAT_FO   =FACT(statut='f',
+             C1 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C2 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C3 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C4 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C5 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C6 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C7 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C8 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C9 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C10 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C11 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C12 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C13 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C14 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C15 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C16 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C17 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C18 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C19 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C20 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C21 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C22 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C23 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C24 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C25 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C26 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C27 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C28 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C29 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C30 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C31 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C32 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C33 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C34 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C35 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C36 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C37 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C38 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C39 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C40 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C41 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C42 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C43 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C44 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C45 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C46 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C47 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C48 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C49 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+             C50 =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+           ),
+### UMAT
 
 
            INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
@@ -14014,7 +14455,7 @@ DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op=   2,sd_prod=para_sensi,
                                ang="Value of the parameter"),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 16/11/2009   AUTEUR ASSIRE A.ASSIRE 
+#& MODIF COMMANDE  DATE 26/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14048,7 +14489,7 @@ DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_
            CHARGE          =SIMP(statut='f',typ=(char_meca,char_cine_meca)),),
 
          # Methode de partitionnement
-         METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
+         METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ),
          
          LOGICIEL      =SIMP(statut='f',typ='TXM'),
 
@@ -14114,7 +14555,7 @@ DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster,
            CHARGE          =SIMP(statut='f',typ=(char_meca,char_cine_meca)),
          ),
 );
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 26/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14143,7 +14584,7 @@ DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29,
          NB_PART         =SIMP(statut='o',typ='I',),
 
          # Methode de partitionnement
-         METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
+         METHODE         =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="KMETIS" ),
          
          LOGICIEL      =SIMP(statut='f',typ='TXM'),
 
@@ -14174,7 +14615,7 @@ DEFI_PART_PA_OPS=PROC(nom="DEFI_PART_PA_OPS",op=29,
          INFO            =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
 
 );
-#& MODIF COMMANDE  DATE 28/12/2009   AUTEUR COURTOIS M.COURTOIS 
+#& MODIF COMMANDE  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14814,7 +15255,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 04/10/2010   AUTEUR GREFFET N.GREFFET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -14911,7 +15352,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
          ),
 
          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","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") ),
@@ -14953,12 +15394,20 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 ),
            ),
@@ -14985,6 +15434,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op=  48,sd_prod=dyna_trans,
            NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
            NMAX_ITER_PAS   =SIMP(statut='f',typ='I',defaut= 16 ),
            PAS_CALCUL      =SIMP(statut='f',typ='I',defaut= 1 ),
+           PAS_MINI         =SIMP(statut='f',typ='R' ),
          ),
          ARCHIVAGE       =FACT(statut='f',
            regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),),
@@ -14999,7 +15449,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 12/04/2010   AUTEUR MICHEL S.MICHEL 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15029,7 +15479,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
          MODE_STAT       =SIMP(statut='f',typ=mode_meca),
          CARA_ELEM       =SIMP(statut='f',typ=cara_elem),
          MASS_DIAG       =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ),
-         EXCIT           =FACT(statut='o',max='**',
+         EXCIT           =FACT(statut='f',max='**',
            regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
                    PRESENT_PRESENT('ACCE','VITE','DEPL'),
                    # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
@@ -15143,18 +15593,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            INST_ETAT_INIT  =SIMP(statut='f',typ='R'),
          ),),
 #-------------------------------------------------------------------
-         INCREMENT       =FACT(statut='o',
-           regles=(EXCLUS('NUME_INST_FIN','INST_FIN'),),
-           LIST_INST       =SIMP(statut='o',typ=(listr8_sdaster,list_inst)),
-           INST_INIT       =SIMP(statut='f',typ='R'),
-           NUME_INST_INIT  =SIMP(statut='f',typ='I'),
-           NUME_INST_FIN   =SIMP(statut='f',typ='I'),
-           INST_FIN        =SIMP(statut='f',typ='R'),
-           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-6 ),
-         ),
+         INCREMENT       =C_INCREMENT(),
 #-------------------------------------------------------------------
          SCHEMA_TEMPS     =FACT(statut='o',
             SCHEMA          =SIMP(statut='o',min=1,max=1,typ='TXM',
@@ -15192,84 +15631,12 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
            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","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") ),
-           ),
-           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_mumps =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
-                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
-             NPREC           =SIMP(statut='f',typ='I',defaut= 8 ),
-             STOP_SINGULIER  =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
-           ),
-           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")),
-             POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")),
-             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,),
-             OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
-             FILTRAGE_MATRICE=SIMP(statut='f',typ='R',defaut=-1.0,),
-             MIXER_PRECISION =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","LDLT_SP",),defaut="LDLT_INC" ),
-             b_ldltinc       =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète",
-               NIVE_REMPLISSAGE    =SIMP(statut='f',typ='I',defaut= 0 ),
-               RENUM               =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-               ),
-             b_simple        =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
-               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
-               ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
-             NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
-           ),
-           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") ),
-         ),
 #-------------------------------------------------------------------
-         CONVERGENCE     =FACT(statut='d',
-           regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA','RESI_COMP_RELA'),),
-           b_refe_rela    =BLOC(condition = "RESI_REFE_RELA != None",
-             regles=(AU_MOINS_UN('SIGM_REFE','EPSI_REFE','FLUX_THER_REFE',
-                                  'FLUX_HYD1_REFE','FLUX_HYD2_REFE','VARI_REFE'),),
-             SIGM_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'),
-           RESI_COMP_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"),
-           
-         ),
+         RECH_LINEAIRE   =C_RECH_LINEAIRE(),
+#-------------------------------------------------------------------
+         CONVERGENCE     =C_CONVERGENCE(),
+#-------------------------------------------------------------------
+         SOLVEUR         =C_SOLVEUR(),
 #-------------------------------------------------------------------
          OBSERVATION     =FACT(statut='f',max='**',
            NOM_CMP         =SIMP(statut='o',typ='TXM',max='**'),
@@ -15327,7 +15694,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                                       "MATR_ASSE",
                                       "ITER_DEBO",
                                       "CTCD_ITER","CTCD_GEOM","CTCD_NOEU",
-                                      "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
+                                      "BOUC_GEOM","BOUC_FROT","BOUC_CONT","CTCC_BOUC","CTCC_NOEU",
                                       "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
                                      ),
                                ),
@@ -15335,6 +15702,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                     NOM_COLONNE == 'RESI_MAXI' or\
                     NOM_COLONNE == 'RESI_REFE' or\
                     NOM_COLONNE == 'CTCD_GEOM' or\
+                    NOM_COLONNE == 'CTCC_BOUC' or\
                     NOM_COLONNE == 'STANDARD' ",
                             INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
                           ),
@@ -15387,6 +15755,16 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
                                ang="List of sensitivity parameters"),
 #-------------------------------------------------------------------
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+         b_info=BLOC(condition="(INFO==2)",
+               fr="filtre les messages émis dans le .mess selon le type de message demandé",
+               INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                               into=("CONTACT",
+                                     "MECA_NON_LINE",
+                                     "PILOTAGE",
+                                     "FACTORISATION",
+                                     "APPARIEMENT"),
+                             ),
+                    ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
@@ -15419,7 +15797,7 @@ 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 19/04/2010   AUTEUR GREFFET N.GREFFET 
+#& MODIF COMMANDE  DATE 04/10/2010   AUTEUR GREFFET N.GREFFET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15488,6 +15866,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op=  74,sd_prod=tran_gene,
            NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
            NMAX_ITER_PAS   =SIMP(statut='f',typ='I',defaut= 16 ),
            PAS_MAXI         =SIMP(statut='f',typ='R' ),
+           PAS_MINI         =SIMP(statut='f',typ='R' ),
          ),
          ARCHIVAGE       =FACT(statut='f',
            regles=(UN_PARMI('LIST_ARCH','PAS_ARCH'),),
@@ -15898,7 +16277,7 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
 
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -15952,7 +16331,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16009,12 +16388,18 @@ FACTORISER=OPER(nom="FACTORISER",op=14,sd_prod=factoriser_prod,
          
          # mots clés pour solveur GCPC et PETSc :
          PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
-         b_petsc_ilu     =BLOC(condition = "PRE_COND == 'LDLT_INC' ",fr="Paramètres de la factorisation incomplete",
+         b_ldlt_inc     =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") ),
          ),
-         b_simple        =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+         b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
            REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+           RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+         ),
+         b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+           RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
          ),
 
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
@@ -16079,7 +16464,7 @@ FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster,
             UIinfo={"groupes":("Fonction",)},
          TYPE_FLUI_STRU  =SIMP(statut='o',typ=(type_flui_stru) ),
 )  ;
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#& MODIF COMMANDE  DATE 05/07/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16104,12 +16489,15 @@ def formule_prod(self,VALE,VALE_C,**args):
    elif VALE_C != None:
       return formule_c
 
-def form_pyth_ops(self,d):
-   NOM_PARA=self.etape['NOM_PARA']
+def form_pyth_ops(self, d):
+   NOM_PARA = self.etape['NOM_PARA']
    VALE    =self.etape['VALE']
    VALE_C  =self.etape['VALE_C']
    if type(NOM_PARA) not in (list, tuple):
       NOM_PARA = [NOM_PARA,]
+   for para in NOM_PARA:
+       if para.strip() != para:
+           raise AsException("nom de paramètre invalide (contient des blancs) : %s" % repr(para))
    if self.sd == None:
       return
    if VALE     != None :
@@ -16784,7 +17172,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 12/04/2010   AUTEUR SELLENET N.SELLENET 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16842,15 +17230,16 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
            VERSION         =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)),
          ),
 
-
-         RESTREINT   =FACT(statut='f', max=1,
-           fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles",
-           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'),),
+         b_restreint  =BLOC(condition="FORMAT=='MED'",fr="Seulement pour les fichiers MED",
+            RESTREINT   =FACT(statut='f', max=1,
+            fr="Pour réduire une ou plusieurs sd_resultat sur un ensemble de mailles",
+            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'),),
+            ),
          ),
 
          RESU            =FACT(statut='o',max='**',
@@ -16920,6 +17309,11 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
              TOUT_CMP        =SIMP(statut='f',typ='TXM',into=("OUI",) ),
              NOM_CMP         =SIMP(statut='f',typ='TXM',max='**'),
            ),
+###
+           b_med=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and(FORMAT == 'MED')""",
+                                fr="renommage du champ",
+             NOM_CHAM_MED    =SIMP(statut='f',typ='TXM',validators=(LongStr(1,32),NoRepeat()),max='**'),
+           ),
 ###
            b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""",
                                 fr="sélection des composantes et des entités toplogiques",
@@ -16963,7 +17357,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 ) ;
-#& MODIF COMMANDE  DATE 05/05/2008   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 26/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -16985,8 +17379,8 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
 
 IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un intervalle donné",
             UIinfo={"groupes":("Résolution",)},
-         MATR_A          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
-         MATR_B          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+         MATR_A          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
+         MATR_B          =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r,matr_asse_gene_r) ),
          TYPE_RESU       =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE"),
                                fr="Type d analyse" ),
          b_dynamique  =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
@@ -16999,11 +17393,33 @@ IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de val
              CHAR_CRIT_MIN   =SIMP(statut='o',typ='R',fr="Borne inférieure de l intervalle" ),
              CHAR_CRIT_MAX   =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ),
          ),
-         NPREC_SOLVEUR   =SIMP(statut='f',typ='I',defaut= 8 ),
          NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),
          UNITE           =SIMP(statut='f',typ='I',defaut=8),  
          PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
          SEUIL_FREQ      =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+
+         SOLVEUR         =FACT(statut='d',
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")),
+             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="SANS",into=("SANS","SANS") ),
+             ),
+             b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
+               NPREC           =SIMP(statut='f',typ='I',defaut= 8, val_min=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,),
+               OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+             ),
+           ),    
+
 )  ;
 #& MODIF COMMANDE  DATE 06/05/2008   AUTEUR CNGUYEN C.NGUYEN 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -17230,7 +17646,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 30/09/2008   AUTEUR REZETTE C.REZETTE 
+#& MODIF COMMANDE  DATE 24/08/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17311,6 +17727,8 @@ INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_foncti
          ),
          MAX             =FACT(statut='f',fr="Extrémas locaux d'une fonction",
            FONCTION        =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
+           INTERVALLE      =SIMP(statut='f',typ='R',min=2,max='**',
+                               fr ="définition des bornes des intervalles sous forme de couples (xi_i1,xs_i1,xi_i2,xs_i2)"),
          ),
          NORME           =FACT(statut='f',fr="Norme L2 d'une fonction",
             FONCTION      =SIMP(statut='o', typ=nappe_sdaster),
@@ -17497,7 +17915,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 30/09/2008   AUTEUR REZETTE C.REZETTE 
+#& MODIF COMMANDE  DATE 14/06/2010   AUTEUR COURTOIS M.COURTOIS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17631,7 +18049,7 @@ LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_foncti
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 22/06/2010   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17657,12 +18075,15 @@ LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene,
          BASE            =SIMP(statut='o',typ=mode_meca),
          NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
          FREQ_EXTR       =SIMP(statut='o',typ='R',max=1),
-         NOM_CMP         =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ),
+         NOM_CMP         =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ),
          NOM_CHAM        =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE"),defaut="DEPL"),
-         UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30),
+         NUME_CHAR       =SIMP(statut='f',typ='I' ),
+         ISSF            =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
+         UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30),         
+         NOM_RESU_FORC   =SIMP(statut='f',typ='TXM' ),         
 )  ;
 
-#& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 22/06/2010   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17689,7 +18110,9 @@ LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c,
          NUME_DDL_GENE   =SIMP(statut='o',typ=nume_ddl_gene ),
          FREQ_EXTR       =SIMP(statut='o',typ='R',max=1),
          UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+         ISSF            =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
          TYPE            =SIMP(statut='f',typ='TXM',defaut="ASCII",into=("BINAIRE","ASCII") ),         
+         SYME            =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
 )  ;
 
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
@@ -17871,7 +18294,7 @@ LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
                    PRECISION       =SIMP(statut='o',typ='R',),),),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 15/03/2010   AUTEUR SELLENET N.SELLENET 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -17929,7 +18352,7 @@ def l_nom_cham_pas_elga(): return (
      "SIGM_ELNO_TUYO", "SIGM_NOEU_CART", "SIGM_NOEU_COQU",
      "SIGM_NOEU_DEPL", "SIGM_NOEU_SIEF", "SIGM_NOZ1_ELGA",
      "SIGM_NOZ2_ELGA", "SIPO_ELNO_DEPL", "SIPO_ELNO_SIEF", "SIPO_NOEU_DEPL",
-     "SIPO_NOEU_SIEF", "SIRE_ELNO_DEPL", "SIRE_NOEU_DEPL", "TEMP", "THETA",
+     "SIPO_NOEU_SIEF", "TEMP", "THETA",
      "VALE_CONT", "VALE_NCOU_MAXI", "VARI_ELNO", "VARI_ELNO_COQU",
      "VARI_ELNO_ELGA", "VARI_ELNO_TUYO", "VARI_NOEU", "VARI_NOEU_ELGA",
      "VITE", "VITE_ABSOLU", "VITE_VENT",
@@ -18031,12 +18454,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
              POSI_INST       =SIMP(statut='f',typ='I',min=2,max=2),
              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 :
 # -------------
@@ -18064,8 +18482,10 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
 # 2) blocs selon le type du résultat :
 #---------------------------------
          b_mode_meca     =BLOC(condition="(TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C')",
-           MATR_A         =SIMP(statut='f',typ=matr_asse_depl_r,),
-           MATR_B         =SIMP(statut='f',typ=matr_asse_depl_r,),
+           MATR_A         =SIMP(statut='f',typ=matr_asse_depl_r,max=1),
+           MATR_B         =SIMP(statut='f',typ=matr_asse_depl_r,max=1),
+           NUME_DDL        =SIMP(statut='f',typ=(nume_ddl_sdaster),max=1,
+                           fr="Utile en dynamique pour pouvoir imposer la numérotation des cham_no."),
          ),
 
 
@@ -18155,7 +18575,7 @@ MAC_MODES=OPER(nom="MAC_MODES",op=  141,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 15/03/2010   AUTEUR GNICOLAS G.NICOLAS 
+#& MODIF COMMANDE  DATE 18/10/2010   AUTEUR GNICOLAS G.NICOLAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -18209,8 +18629,8 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
 #
 # 2. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_6",
-                        into=("V9_6", "V9_N", "V9_N_PERSO"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_7",
+                        into=("V9_7", "V9_N", "V9_N_PERSO"),
                         fr="Version de HOMARD",
                         ang="HOMARD release"),
 #
@@ -18242,9 +18662,9 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
                              ang="Additional mesh after adaptation" ),
 #
 # 5. Le pilotage de l'adaptation, avec les variantes suivantes :
-#  . Raffinement et deraffinement, selon un champ d'indicateurs d'erreur
-#  . Raffinement seul, selon un champ d'indicateurs d'erreur
-#  . Deraffinement seul, selon un champ d'indicateurs d'erreur
+#  . Raffinement et deraffinement, selon un champ
+#  . Raffinement seul, selon un champ
+#  . Deraffinement seul, selon un champ
 #  . Raffinement seul, selon des zones geometriques
 #  . Raffinement uniforme : toutes les mailles sont divisées
 #  . Deraffinement uniforme : toutes les mailles sont regroupées
@@ -18255,44 +18675,44 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
                     into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT","RAFFINEMENT_ZONE", \
                           "RAFFINEMENT_UNIFORME","DERAFFINEMENT_UNIFORME", \
                           "MODIFICATION","RIEN"),
-                    fr="Pilotage de l'adaptation : selon un indicateur d'erreur ou uniforme.",
-                    ang="Adaptation control : either among an error indicator or uniform" ),
+                    fr="Pilotage de l'adaptation : selon un champ ou uniforme.",
+                    ang="Adaptation control : either among an field or uniform" ),
 #
-# 6. Pour de l'adaptation libre, il faut un indicateur d'erreur
+# 6. Pour de l'adaptation libre, il faut un champ ou une zone
 #
-  b_indicateur_d_erreur = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
-                                              (ADAPTATION == 'RAFFINEMENT') or \
-                                              (ADAPTATION == 'DERAFFINEMENT') " ,
-                                fr="Pour une adaptation libre, choix de l'indicateur d'erreur ou d'une zone à raffiner",
-                                ang="For a free adaptation, selection of the error indicator or of a zone",
+  b_champ = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+                                (ADAPTATION == 'RAFFINEMENT') or \
+                                (ADAPTATION == 'DERAFFINEMENT') " ,
+                  fr="Pour une adaptation libre, choix du champ ou d'une zone à raffiner",
+                  ang="For a free adaptation, selection of the field or of a zone",
 #
     regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
 #
-# 6.1. Repérage de la zone à raffiner à l'aide d'un indicateur
+# 6.1. Reperage de la zone a raffiner a l'aide d'un champ
 #
 # 6.1.1. Sous forme de champ de grandeur
 #
     CHAM_GD    = SIMP(statut='f',typ=cham_gd_sdaster,
-                      fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur",
-                      ang="Code_Aster champ de grandeur with error indicator" ),
+                      fr="Champ de grandeur Code_Aster pilotant l'adaptation",
+                      ang="Code_Aster 'champ de grandeur' governing the adapatation" ),
 #
 # 6.1.2. Sous forme de concept resultat_sdaster
 #
     RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
-                      fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
-                      ang="The Code_Aster result with error indicator" ),
+                      fr="Concept resultat Code_Aster contenant le champ",
+                      ang="The Code_Aster result with the field" ),
 #
-    b_champ_indicateur = BLOC(condition="(RESULTAT_N != None)",
-      INDICATEUR = SIMP(statut='o',typ='TXM',
-                        fr="Champ de l'indicateur d'erreur dans le résultat",
-                        ang="The error indicator field in the result structure" ),
+    b_champ_adaptation = BLOC(condition="(RESULTAT_N != None)",
+      NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(),
+                        fr="Champ dans le résultat",
+                        ang="The field in the result structure" ),
     ),
 #
-# 6.1.3. Est-ce un champ dérivé
+# 6.1.3. Est-ce un champ derive
 #
     b_sensibilite = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
                         fr="Est-ce un champ dérivé",
-                        ang="Is the indicator a derivative field",
+                        ang="Is the field a derivative field",
 #
       SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),
                          fr="Paramètre de sensibilité.",
@@ -18303,20 +18723,20 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
 # 6.1.4. La ou les composantes retenues
 #
     b_composante = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
-                        fr="Choix de la composante ou des composantes pour l'indicateur",
-                        ang="Selection of the component(s) for the error indicator",
+                        fr="Choix de la composante ou des composantes pour le champ",
+                        ang="Selection of the component(s) for the field",
 #
-      NOM_CMP_INDICA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
-                            fr="Liste des composante(s) retenue(s) pour l'indicateur d'erreur.",
-                            ang="List of the selected component(s) for the error indicator." ),
+      NOM_CMP = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+                            fr="Liste des composante(s) retenue(s) pour le champ.",
+                            ang="List of the selected component(s) for the field." ),
 #
     ),
 #
-# 6.1.5. Le paramètre temporel pour l'indicateur
+# 6.1.5. Le paramètre temporel pour le champ
 #
     b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)",
-                                fr="Choix éventuel du paramètre temporel pour l'indicateur",
-                                ang="Time selection for the error indicator (option)",
+                                fr="Choix éventuel du paramètre temporel pour le champ",
+                                ang="Time selection for the field (option)",
 #
       regles=(EXCLUS('NUME_ORDRE','INST'),),
 #
@@ -18353,34 +18773,34 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
 #
     ),
 #
-# 6.1.6. Type de valeur de l'indicateur : absolue (norme L2), norme infinie, ou relative
+# 6.1.6. Usage des composantes : maximum, maximum de la valeur absolue, ou de la norme L2, ou de la norme infinie
 #
-    b_valeur_indicateur = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
-                               fr="Type de valeur pour l'indicateur",
-                               ang="Type of the value type for the error indicator",
+    b_usage_cmp = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
+                       fr="Type d'usage de(s) composante(s)",
+                       ang="Type of the use for the component(s)",
 #
-      TYPE_VALEUR_INDICA = SIMP(statut='f',typ='TXM',defaut="V_ABSOLUE",
-                                into=("V_ABSOLUE", "NORME_L2", "NORME_INFINIE", "V_RELATIVE"),
-                                fr="Valeur absolue, norme des composantes ou valeur relative pour l'indicateur",
-                                ang="Absolute value, norm or relative value for the error indicator" ),
+      USAGE_CMP = SIMP(statut='f',typ='TXM',defaut="NORME_L2",
+                       into=("ABSOLU", "NORME_L2", "NORME_INFINIE", "RELATIF"),
+                       fr="Valeur absolue de la composante, ou norme du champ, ou valeur relative de la composante",
+                       ang="Absolute value of the component, or norm of the field, or relative value of the component" ),
 #
     ),
 #
-# 6.1.7. Type d'opération sur l'indicateur : la valeur par maille ou le max du saut entre mailles
+# 6.1.7. Usage du champ : la valeur par maille ou le max du saut entre mailles
 #
-    b_usage_indicateur = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
-                              fr="Usage de l'indicateur : direct ou saut",
-                              ang="Use type for the error indicator : direct or jump",
+    b_usage_champ = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
+                         fr="Usage du champ : direct ou saut",
+                         ang="Use type for the field : direct or jump",
 #
-      TYPE_OPER_INDICA = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE","SAUT"),
-                              fr="Usage de l'indicateur : la valeur par maille ou le saut entre mailles voisines",
-                              ang="Use of the indicator : value over every mesh or jump between neighbour" ),
+      USAGE_CHAMP = SIMP(statut='f',typ='TXM',defaut="MAILLE",into=("MAILLE","SAUT"),
+                         fr="Usage du champ : la valeur par maille ou le saut entre mailles voisines",
+                         ang="Use of the field : value over every mesh or jump between the neighbours" ),
 #
     ),
 #
   ) ,
 #
-# 7. Les criteres pour de l'adaptation libre avec un indicateur d'erreur :
+# 7. Les criteres pour de l'adaptation libre avec un champ :
 #        absolu, relatif, en proportion d'entite
 # 7.1. Pour le raffinement :
 #
@@ -18722,7 +19142,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_ada
                           fr="Choix éventuel du nom du champ à interpoler",
                           ang="Selection for the name of the field (option)",
 #
-      NOM_CHAM = SIMP(statut='o',typ='TXM',
+      NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO(),
                       fr="Nom du champ à mettre à jour",
                       ang="Name of the field to be updated" ),
 #
@@ -20041,7 +20461,7 @@ MACR_ECREVISSE=MACRO(nom="MACR_ECREVISSE",op=macr_ecrevisse_ops,sd_prod=macr_ecr
          PARM_THETA         =SIMP(statut='f',typ='R',defaut= 0.57),
 
 )
-#& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 22/06/2010   AUTEUR DEVESA G.DEVESA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20077,6 +20497,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op=  81,sd_prod=macr_elem_dyna,
          b_matr_impe     =BLOC(condition = "MATR_IMPE != None",
              FREQ_EXTR       =SIMP(statut='o',typ='R' ),
              AMOR_SOL        =SIMP(statut='f',typ='R',defaut=0.E+0 ),
+             MATR_IMPE_INIT  =SIMP(statut='f',typ=matr_asse_gene_c ),
            ),
          CAS_CHARGE      =FACT(statut='f',max='**',
            NOM_CAS         =SIMP(statut='o',typ='TXM'),
@@ -20159,121 +20580,51 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant=
 # ======================================================================
 # RESPONSABLE GNICOLAS G.NICOLAS
 
-from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops
+from Macro.macr_fiabilite_ops import macr_fiabilite_ops
 
-MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
-                     docu="U7.04.41",UIinfo={"groupe":("Impression",)},
-                     fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.",
-                     ang="Print values for the fiability software",
 #
-# 1. Le niveau d'information
+#====
+# 1. Le retour : une liste de rééls.
+#====
 #
-   INFO           = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+def macr_fiabilite_prod ( self , **args ):
+  return listr8_sdaster
 #
-# 2. Impression de la valeur de la cible
+#====
+# 2. L'entete
+#====
 #
-# 2.1. ==> La table contenant la valeur à imprimer
+MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
+                         docu="U7.03.31",UIinfo={"groupe":("Post traitements",)},
+                         sd_prod=macr_fiabilite_prod,
+                         fr="Calcule les probabiltés de dépassement de seuil (mécanique de fiabilité).",
+                         ang="Fiability mechanics.",
 #
-   TABLE_CIBLE = SIMP(statut='o',typ=table_sdaster,
-                 fr="Table contenant la valeur cible.",
-                 ang="Table which includes the target value."),
+#====
+# 3. Le niveau d'information
+#====
 #
-# 2.2. ==> Le nom du paramètre associé à la valeur cible dans cette table
+   INFO           = SIMP(statut="f",typ="I",defaut=1,into=(1,2)),
 #
-   NOM_PARA_CIBLE = SIMP(statut='o',typ='TXM',
-                    fr="Nom du paramètre associé à la valeur cible.",
-                    ang="Name of the parameter connected to the target value."),
+#====
+# 4. Nom et Version du logiciel de fiabilité
+#====
 #
-# 3. Impressions des valeurs des éventuels gradients
+   LOGICIEL = SIMP(statut="f",typ="TXM",defaut="MEFISTO",
+                   into=("MEFISTO",),
+                   fr="Nom du logiciel de fiabilité.",
+                   ang="Fiability software name."),
 #
-   GRADIENTS = FACT(statut='f',min=1,max='**',
+   VERSION = SIMP(statut="f",typ="TXM",defaut="V3_2",
+                  into=("V3_2", "V3_N"),
+                  fr="Version du logiciel de fiabilité.",
+                  ang="Fiability software release."),
 #
-# 3.1. ==> La table contenant la valeur à imprimer
+#====
+# 5. Les entrees-sorties du calcul ASTER déterministe
+#====
 #
-       TABLE = SIMP(statut='o',typ=table_sdaster,
-                    fr="Table contenant le gradient.",
-                    ang="Table which includes the gradient."),
-#
-# 3.2. ==> Le paramètre sensible
-#
-       PARA_SENSI = SIMP(statut='o',typ=(para_sensi,theta_geom),
-                       fr="Paramètre sensible associé au gradient.",
-                       ang="Sensitivity parameter connected to the gradient."),
-#
-# 3.3. ==> Le nom du paramètre associé au gradient dans cette table
-#
-       NOM_PARA = SIMP(statut='o',typ='TXM',
-                       fr="Nom du paramètre associé au gradient.",
-                       ang="Name of the parameter connected to the gradient."),
-#
-         ),
-#
-);
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004  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 GNICOLAS G.NICOLAS
-
-from Macro.macr_fiabilite_ops import macr_fiabilite_ops
-
-#
-#====
-# 1. Le retour : une liste de rééls.
-#====
-#
-def macr_fiabilite_prod ( self , **args ):
-  return listr8_sdaster
-#
-#====
-# 2. L'entete
-#====
-#
-MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
-                         docu="U7.03.31",UIinfo={"groupe":("Post traitements",)},
-                         sd_prod=macr_fiabilite_prod,
-                         fr="Calcule les probabiltés de dépassement de seuil (mécanique de fiabilité).",
-                         ang="Fiability mechanics.",
-#
-#====
-# 3. Le niveau d'information
-#====
-#
-   INFO           = SIMP(statut="f",typ="I",defaut=1,into=(1,2)),
-#
-#====
-# 4. Nom et Version du logiciel de fiabilité
-#====
-#
-   LOGICIEL = SIMP(statut="f",typ="TXM",defaut="MEFISTO",
-                   into=("MEFISTO",),
-                   fr="Nom du logiciel de fiabilité.",
-                   ang="Fiability software name."),
-#
-   VERSION = SIMP(statut="f",typ="TXM",defaut="V3_2",
-                  into=("V3_2", "V3_N"),
-                  fr="Version du logiciel de fiabilité.",
-                  ang="Fiability software release."),
-#
-#====
-# 5. Les entrees-sorties du calcul ASTER déterministe
-#====
-#
-# 5.1. ==> Le jeu de commandes déterministe
+# 5.1. ==> Le jeu de commandes déterministe
 #
    UNITE_ESCL = SIMP(statut="o",typ="I",
                      fr="Unité logique associée aux commandes du calcul ASTER déterministe.",
@@ -20588,7 +20939,77 @@ MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
    ),
 #
 );
-#& MODIF COMMANDE  DATE 15/03/2010   AUTEUR GNICOLAS G.NICOLAS 
+#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004  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 GNICOLAS G.NICOLAS
+
+from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops
+
+MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
+                     docu="U7.04.41",UIinfo={"groupe":("Impression",)},
+                     fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.",
+                     ang="Print values for the fiability software",
+#
+# 1. Le niveau d'information
+#
+   INFO           = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+#
+# 2. Impression de la valeur de la cible
+#
+# 2.1. ==> La table contenant la valeur à imprimer
+#
+   TABLE_CIBLE = SIMP(statut='o',typ=table_sdaster,
+                 fr="Table contenant la valeur cible.",
+                 ang="Table which includes the target value."),
+#
+# 2.2. ==> Le nom du paramètre associé à la valeur cible dans cette table
+#
+   NOM_PARA_CIBLE = SIMP(statut='o',typ='TXM',
+                    fr="Nom du paramètre associé à la valeur cible.",
+                    ang="Name of the parameter connected to the target value."),
+#
+# 3. Impressions des valeurs des éventuels gradients
+#
+   GRADIENTS = FACT(statut='f',min=1,max='**',
+#
+# 3.1. ==> La table contenant la valeur à imprimer
+#
+       TABLE = SIMP(statut='o',typ=table_sdaster,
+                    fr="Table contenant le gradient.",
+                    ang="Table which includes the gradient."),
+#
+# 3.2. ==> Le paramètre sensible
+#
+       PARA_SENSI = SIMP(statut='o',typ=(para_sensi,theta_geom),
+                       fr="Paramètre sensible associé au gradient.",
+                       ang="Sensitivity parameter connected to the gradient."),
+#
+# 3.3. ==> Le nom du paramètre associé au gradient dans cette table
+#
+       NOM_PARA = SIMP(statut='o',typ='TXM',
+                       fr="Nom du paramètre associé au gradient.",
+                       ang="Name of the parameter connected to the gradient."),
+#
+         ),
+#
+);
+#& MODIF COMMANDE  DATE 18/10/2010   AUTEUR GNICOLAS G.NICOLAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -20621,8 +21042,8 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
 #
 # 2. Version de HOMARD
 #
-  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_6",
-                        into=("V9_6", "V9_N", "V9_N_PERSO"),
+  VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V9_7",
+                        into=("V9_7", "V9_N", "V9_N_PERSO"),
                         fr="Version de HOMARD",
                         ang="HOMARD release"),
 #
@@ -20836,189 +21257,7 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table
 )  ;
 
 
-#& MODIF COMMANDE  DATE 22/04/2010   AUTEUR ASSIRE A.ASSIRE 
-#            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.        
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-from Macro.macr_recal_ops import macr_recal_ops
-
-def macr_recal_prod(self,**args ):
-  return listr8_sdaster
-
-MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,
-            UIinfo={"groupes":("Résultats et champs",)},
-                      sd_prod=macr_recal_prod,
-                      fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux"
-                        +" ou sur d'autres résultats de calculs",
-
-         UNITE_ESCL      =SIMP(statut='o',typ='I'),
-         RESU_EXP        =SIMP(statut='o',typ=assd,max='**'),
-         POIDS           =SIMP(statut='f',typ=assd,max='**'),
-         RESU_CALC       =SIMP(statut='o',typ=assd,max='**'),
-         LIST_PARA       =SIMP(statut='o',typ=assd,max='**'),
-
-         UNITE_RESU      =SIMP(statut='f',typ='I',defaut=91),
-         PARA_DIFF_FINI  =SIMP(statut='f',typ='R',defaut=0.001),
-
-         GRAPHIQUE       =FACT(statut='f',
-             FORMAT          =SIMP(statut='f',typ='TXM',defaut='XMGRACE',into=("XMGRACE","GNUPLOT"),),
-             AFFICHAGE       =SIMP(statut='f',typ='TXM',defaut='TOUTE_ITERATION',into=("TOUTE_ITERATION","ITERATION_FINALE"),),
-             b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", fr="Mots-clés propres à XMGRACE",
-                 PILOTE          =SIMP(statut='f',typ='TXM',defaut='', 
-                                       into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
-                            fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
-                 UNITE           =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                            fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
-             ),
-         ),
-
-
-         # Methodes d'optimisation
-         # -----------------------
-         METHODE         =SIMP(statut='f',typ='TXM',defaut='LEVENBERG',into=("LEVENBERG", "FMIN", "FMINBFGS", "FMINNCG",
-                                                                             "GENETIQUE","HYBRIDE")),
-
-         b_genetique_options=BLOC(condition = "METHODE == 'GENETIQUE' or METHODE == 'HYBRIDE'" ,
-             NB_PARENTS       =SIMP(statut='f',typ='I',defaut=10),
-             NB_FILS          =SIMP(statut='f',typ='I',defaut=5),
-             ECART_TYPE       =SIMP(statut='f',typ='R',defaut=1.),
-             GRAINE           =SIMP(statut='f',typ='I'),
-             ITER_ALGO_GENE   =SIMP(statut='f',typ='I',defaut=10),
-             RESI_ALGO_GENE   =SIMP(statut='f',typ='R',defaut=1.E-3),
-         ),
-         
-
-         # Criteres d'arret globaux
-         # -------------------------
-         ITER_MAXI       =SIMP(statut='f',typ='I',defaut=10,    fr="Nombre maximum d'iterations d'optimisation"),
-         ITER_FONC_MAXI  =SIMP(statut='f',typ='I',defaut=1000,  fr="Nombre maximum d'evaluations de la focntionnelle"),
-         RESI_GLOB_RELA  =SIMP(statut='f',typ='R',defaut=1.E-3, fr="Critere d'arret sur la valeur du residu"),
-         TOLE_PARA       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur des parametres"),
-         TOLE_FONC       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur de la fonctionnelle"),
-
-
-         # Calculs des gradients
-         # ---------------------
-         b_gradient =BLOC(condition = "METHODE == 'FMINBFGS' or METHODE == 'FMINNCG'" ,
-             GRADIENT        =SIMP(statut='f',typ='TXM',defaut='NON_CALCULE', into=("NON_CALCULE", "NORMAL", "ADIMENSIONNE" )),
-         ),
-
-         b_gradient_levenberg =BLOC(condition = "METHODE == 'LEVENBERG'" ,
-             GRADIENT        =SIMP(statut='f',typ='TXM',defaut='NORMAL', into=( "NORMAL", "ADIMENSIONNE" )),
-         ),
-
-
-         # Mode d'evaluation de l'esclave
-         # ------------------------------
-         CALCUL_ESCLAVE       =FACT(statut='d',
-            LANCEMENT         =SIMP(statut='f', typ='TXM', defaut='INCLUSION',into=("DISTRIBUTION","INCLUSION"),),
-
-            b_eval_distrib =BLOC(condition = "LANCEMENT == 'DISTRIBUTION'",
-                MODE          =SIMP(statut='f', typ='TXM',      into=("INTERACTIF","BATCH"),),
-                MEMOIRE       =SIMP(statut='f', typ='I',        fr="Memoire demandee pour les calculs esclaves (Mo)"),
-                TEMPS         =SIMP(statut='f', typ='I',        fr="Temps demandee pour les calculs esclaves (secondes)"),
-                CLASSE        =SIMP(statut='f', typ='TXM',      fr="Classe demandee pour les calculs en batch"),
-                NMAX_SIMULT   =SIMP(statut='f', typ='I',
-                               fr="Nombre de calculs esclaves lances en paralle en mode distribution (non precise = automatique)"),
-            ),
-         ),
-
-         DYNAMIQUE       =FACT(statut='f',
-               MODE_EXP           =SIMP(statut='o',typ='TXM'),
-               MODE_CALC          =SIMP(statut='o',typ='TXM'),
-               APPARIEMENT_MANUEL =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),           
-                               ),
-
-         INFO            =SIMP(statut='f',typ='I',defaut=2,into=( 1, 2 ) ),
-);
-#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
-#            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 VOLDOIRE F.VOLDOIRE
-
-from Macro.macr_spectre_ops import macr_spectre_ops
-
-MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",op=macr_spectre_ops,sd_prod=table_sdaster,
-                       reentrant='n', UIinfo={"groupes":("Outils métier",)},
-                       fr="calcul de spectre, post-traitement de séisme",
-         MAILLAGE      =SIMP(statut='o',typ=maillage_sdaster,),
-         PLANCHER      =FACT(statut='o',max='**',
-            regles=(AU_MOINS_UN('NOEUD','GROUP_NO' ),),
-            NOM           =SIMP(statut='o',typ='TXM',),
-            GROUP_NO      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-            NOEUD         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'), ),
-         NOM_CHAM      =SIMP(statut='o',typ='TXM' ,into=('ACCE','DEPL')),
-         CALCUL        =SIMP(statut='o',typ='TXM' ,into=('ABSOLU','RELATIF'),position='global'),
-         b_acce  =BLOC( condition = "NOM_CHAM=='ACCE'",
-           regles=(UN_PARMI('LIST_FREQ','FREQ'),),
-           AMOR_SPEC     =SIMP(statut='o',typ='R',max='**'),
-           LIST_INST     =SIMP(statut='f',typ=listr8_sdaster ),
-           LIST_FREQ     =SIMP(statut='f',typ=listr8_sdaster ),
-           FREQ          =SIMP(statut='f',typ='R',max='**'),
-           NORME         =SIMP(statut='o',typ='R'),  
-           RESU          =FACT(statut='o',max='**',
-                regles=(UN_PARMI('RESU_GENE','RESULTAT'),),
-                RESU_GENE     =SIMP(statut='f',typ=tran_gene),
-                RESULTAT      =SIMP(statut='f',typ=(dyna_trans,evol_noli)),
-                b_calc  =BLOC( condition = "CALCUL=='RELATIF'",
-                   ACCE_X        =SIMP(statut='o',typ=fonction_sdaster),
-                   ACCE_Y        =SIMP(statut='o',typ=fonction_sdaster),
-                   ACCE_Z        =SIMP(statut='o',typ=fonction_sdaster),), ),
-           IMPRESSION    =FACT(statut='f',
-                TRI           =SIMP(statut='f',typ='TXM',defaut='AMOR_SPEC',into=("AMOR_SPEC","DIRECTION",),),
-                FORMAT        =SIMP(statut='f',typ='TXM',defaut='TABLEAU',into=("TABLEAU","XMGRACE",),),
-                UNITE         =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
-                                    fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
-                b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
-                   PILOTE        =SIMP(statut='f',typ='TXM',defaut='',
-                                 into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),),),
-                TOUT          =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON",),),
-                              ),
-         ),
-         b_depl  =BLOC( condition = "NOM_CHAM=='DEPL'",
-           LIST_INST     =SIMP(statut='f',typ=listr8_sdaster),  
-           RESU          =FACT(statut='o',max=3,
-                regles=(UN_PARMI('RESU_GENE','RESULTAT'),),
-                RESU_GENE     =SIMP(statut='f',typ=tran_gene),
-                RESULTAT      =SIMP(statut='f',typ=(dyna_trans,evol_noli)),
-                b_calc  =BLOC( condition = "CALCUL=='ABSOLU'",
-                   DEPL_X        =SIMP(statut='o',typ=fonction_sdaster),
-                   DEPL_Y        =SIMP(statut='o',typ=fonction_sdaster),
-                   DEPL_Z        =SIMP(statut='o',typ=fonction_sdaster),),),
-         ),
-)
-#& MODIF COMMANDE  DATE 19/01/2010   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DELMAS J.DELMAS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21073,7 +21312,7 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro
                                        "ECIN_ELEM_DEPL","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC",
                                        "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG","INTE_ELNO_ACTI",
                                        "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA",
-                                       "ERZ2_ELEM_SIGM","VNOR_ELEM_DEPL","ERRE_ELNO_ELEM","SIRE_ELNO_DEPL",
+                                       "ERZ2_ELEM_SIGM","VNOR_ELEM_DEPL","ERRE_ELNO_ELEM",
                                        "ERRE_ELEM_SIGM","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI",
                                        "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
                                        "EQUI_ELGA_EPSI","FORC_NODA","REAC_NODA","EPSI_NOEU_DEPL","SIGM_NOEU_DEPL",
@@ -21176,7 +21415,7 @@ MACRO_EXPANS=MACRO(nom="MACRO_EXPANS",
                                         ),
                                              ),
                    )
-#& MODIF COMMANDE  DATE 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21296,12 +21535,20 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 ),
            ),
@@ -21491,7 +21738,7 @@ MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,
            DIRE_ONDE       =SIMP(statut='f',typ='R',max='**'),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 05/05/2008   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21552,7 +21799,6 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_
            NB_BLOC_FREQ    =SIMP(statut='f',typ='I' ),  
            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 ),  
            NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),  
            PREC_SHIFT      =SIMP(statut='f',typ='R',defaut= 5.E-2 ),  
            SEUIL_FREQ      =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),  
@@ -21627,15 +21873,197 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,
            MATR_ASSE       =SIMP(statut='f',typ=matr_asse_depl_r),
            MATR_ASSE_GENE  =SIMP(statut='f',typ=matr_asse_gene_r),
          ),
-         VECT_ASSE_GENE  =FACT(statut='f',max='**',
-           VECTEUR         =SIMP(statut='o',typ=CO,),
-           regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE',),),
-           TYPE_VECT       =SIMP(statut='f',typ='TXM',defaut="FORC"),
-           VECT_ASSE       =SIMP(statut='f',typ=cham_no_sdaster),
-           VECT_ASSE_GENE  =SIMP(statut='f',typ=vect_asse_gene),
+         VECT_ASSE_GENE  =FACT(statut='f',max='**',
+           VECTEUR         =SIMP(statut='o',typ=CO,),
+           regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE',),),
+           TYPE_VECT       =SIMP(statut='f',typ='TXM',defaut="FORC"),
+           VECT_ASSE       =SIMP(statut='f',typ=cham_no_sdaster),
+           VECT_ASSE_GENE  =SIMP(statut='f',typ=vect_asse_gene),
+         ),
+         INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+)  ;
+#& MODIF COMMANDE  DATE 22/04/2010   AUTEUR ASSIRE A.ASSIRE 
+#            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.        
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+from Macro.macr_recal_ops import macr_recal_ops
+
+def macr_recal_prod(self,**args ):
+  return listr8_sdaster
+
+MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,
+            UIinfo={"groupes":("Résultats et champs",)},
+                      sd_prod=macr_recal_prod,
+                      fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux"
+                        +" ou sur d'autres résultats de calculs",
+
+         UNITE_ESCL      =SIMP(statut='o',typ='I'),
+         RESU_EXP        =SIMP(statut='o',typ=assd,max='**'),
+         POIDS           =SIMP(statut='f',typ=assd,max='**'),
+         RESU_CALC       =SIMP(statut='o',typ=assd,max='**'),
+         LIST_PARA       =SIMP(statut='o',typ=assd,max='**'),
+
+         UNITE_RESU      =SIMP(statut='f',typ='I',defaut=91),
+         PARA_DIFF_FINI  =SIMP(statut='f',typ='R',defaut=0.001),
+
+         GRAPHIQUE       =FACT(statut='f',
+             FORMAT          =SIMP(statut='f',typ='TXM',defaut='XMGRACE',into=("XMGRACE","GNUPLOT"),),
+             AFFICHAGE       =SIMP(statut='f',typ='TXM',defaut='TOUTE_ITERATION',into=("TOUTE_ITERATION","ITERATION_FINALE"),),
+             b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'", fr="Mots-clés propres à XMGRACE",
+                 PILOTE          =SIMP(statut='f',typ='TXM',defaut='', 
+                                       into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
+                            fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+                 UNITE           =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
+                            fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+             ),
+         ),
+
+
+         # Methodes d'optimisation
+         # -----------------------
+         METHODE         =SIMP(statut='f',typ='TXM',defaut='LEVENBERG',into=("LEVENBERG", "FMIN", "FMINBFGS", "FMINNCG",
+                                                                             "GENETIQUE","HYBRIDE")),
+
+         b_genetique_options=BLOC(condition = "METHODE == 'GENETIQUE' or METHODE == 'HYBRIDE'" ,
+             NB_PARENTS       =SIMP(statut='f',typ='I',defaut=10),
+             NB_FILS          =SIMP(statut='f',typ='I',defaut=5),
+             ECART_TYPE       =SIMP(statut='f',typ='R',defaut=1.),
+             GRAINE           =SIMP(statut='f',typ='I'),
+             ITER_ALGO_GENE   =SIMP(statut='f',typ='I',defaut=10),
+             RESI_ALGO_GENE   =SIMP(statut='f',typ='R',defaut=1.E-3),
+         ),
+         
+
+         # Criteres d'arret globaux
+         # -------------------------
+         ITER_MAXI       =SIMP(statut='f',typ='I',defaut=10,    fr="Nombre maximum d'iterations d'optimisation"),
+         ITER_FONC_MAXI  =SIMP(statut='f',typ='I',defaut=1000,  fr="Nombre maximum d'evaluations de la focntionnelle"),
+         RESI_GLOB_RELA  =SIMP(statut='f',typ='R',defaut=1.E-3, fr="Critere d'arret sur la valeur du residu"),
+         TOLE_PARA       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur des parametres"),
+         TOLE_FONC       =SIMP(statut='f',typ='R',defaut=1.E-8, fr="Critere d'arret sur la valeur de la fonctionnelle"),
+
+
+         # Calculs des gradients
+         # ---------------------
+         b_gradient =BLOC(condition = "METHODE == 'FMINBFGS' or METHODE == 'FMINNCG'" ,
+             GRADIENT        =SIMP(statut='f',typ='TXM',defaut='NON_CALCULE', into=("NON_CALCULE", "NORMAL", "ADIMENSIONNE" )),
+         ),
+
+         b_gradient_levenberg =BLOC(condition = "METHODE == 'LEVENBERG'" ,
+             GRADIENT        =SIMP(statut='f',typ='TXM',defaut='NORMAL', into=( "NORMAL", "ADIMENSIONNE" )),
+         ),
+
+
+         # Mode d'evaluation de l'esclave
+         # ------------------------------
+         CALCUL_ESCLAVE       =FACT(statut='d',
+            LANCEMENT         =SIMP(statut='f', typ='TXM', defaut='INCLUSION',into=("DISTRIBUTION","INCLUSION"),),
+
+            b_eval_distrib =BLOC(condition = "LANCEMENT == 'DISTRIBUTION'",
+                MODE          =SIMP(statut='f', typ='TXM',      into=("INTERACTIF","BATCH"),),
+                MEMOIRE       =SIMP(statut='f', typ='I',        fr="Memoire demandee pour les calculs esclaves (Mo)"),
+                TEMPS         =SIMP(statut='f', typ='I',        fr="Temps demandee pour les calculs esclaves (secondes)"),
+                CLASSE        =SIMP(statut='f', typ='TXM',      fr="Classe demandee pour les calculs en batch"),
+                NMAX_SIMULT   =SIMP(statut='f', typ='I',
+                               fr="Nombre de calculs esclaves lances en paralle en mode distribution (non precise = automatique)"),
+            ),
+         ),
+
+         DYNAMIQUE       =FACT(statut='f',
+               MODE_EXP           =SIMP(statut='o',typ='TXM'),
+               MODE_CALC          =SIMP(statut='o',typ='TXM'),
+               APPARIEMENT_MANUEL =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),           
+                               ),
+
+         INFO            =SIMP(statut='f',typ='I',defaut=2,into=( 1, 2 ) ),
+);
+#& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
+#            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 VOLDOIRE F.VOLDOIRE
+
+from Macro.macr_spectre_ops import macr_spectre_ops
+
+MACR_SPECTRE=MACRO(nom="MACR_SPECTRE",op=macr_spectre_ops,sd_prod=table_sdaster,
+                       reentrant='n', UIinfo={"groupes":("Outils métier",)},
+                       fr="calcul de spectre, post-traitement de séisme",
+         MAILLAGE      =SIMP(statut='o',typ=maillage_sdaster,),
+         PLANCHER      =FACT(statut='o',max='**',
+            regles=(AU_MOINS_UN('NOEUD','GROUP_NO' ),),
+            NOM           =SIMP(statut='o',typ='TXM',),
+            GROUP_NO      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+            NOEUD         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'), ),
+         NOM_CHAM      =SIMP(statut='o',typ='TXM' ,into=('ACCE','DEPL')),
+         CALCUL        =SIMP(statut='o',typ='TXM' ,into=('ABSOLU','RELATIF'),position='global'),
+         b_acce  =BLOC( condition = "NOM_CHAM=='ACCE'",
+           regles=(UN_PARMI('LIST_FREQ','FREQ'),),
+           AMOR_SPEC     =SIMP(statut='o',typ='R',max='**'),
+           LIST_INST     =SIMP(statut='f',typ=listr8_sdaster ),
+           LIST_FREQ     =SIMP(statut='f',typ=listr8_sdaster ),
+           FREQ          =SIMP(statut='f',typ='R',max='**'),
+           NORME         =SIMP(statut='o',typ='R'),  
+           RESU          =FACT(statut='o',max='**',
+                regles=(UN_PARMI('RESU_GENE','RESULTAT'),),
+                RESU_GENE     =SIMP(statut='f',typ=tran_gene),
+                RESULTAT      =SIMP(statut='f',typ=(dyna_trans,evol_noli)),
+                b_calc  =BLOC( condition = "CALCUL=='RELATIF'",
+                   ACCE_X        =SIMP(statut='o',typ=fonction_sdaster),
+                   ACCE_Y        =SIMP(statut='o',typ=fonction_sdaster),
+                   ACCE_Z        =SIMP(statut='o',typ=fonction_sdaster),), ),
+           IMPRESSION    =FACT(statut='f',
+                TRI           =SIMP(statut='f',typ='TXM',defaut='AMOR_SPEC',into=("AMOR_SPEC","DIRECTION",),),
+                FORMAT        =SIMP(statut='f',typ='TXM',defaut='TABLEAU',into=("TABLEAU","XMGRACE",),),
+                UNITE         =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
+                                    fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+                b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
+                   PILOTE        =SIMP(statut='f',typ='TXM',defaut='',
+                                 into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),),),
+                TOUT          =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON",),),
+                              ),
+         ),
+         b_depl  =BLOC( condition = "NOM_CHAM=='DEPL'",
+           LIST_INST     =SIMP(statut='f',typ=listr8_sdaster),  
+           RESU          =FACT(statut='o',max=3,
+                regles=(UN_PARMI('RESU_GENE','RESULTAT'),),
+                RESU_GENE     =SIMP(statut='f',typ=tran_gene),
+                RESULTAT      =SIMP(statut='f',typ=(dyna_trans,evol_noli)),
+                b_calc  =BLOC( condition = "CALCUL=='ABSOLU'",
+                   DEPL_X        =SIMP(statut='o',typ=fonction_sdaster),
+                   DEPL_Y        =SIMP(statut='o',typ=fonction_sdaster),
+                   DEPL_Z        =SIMP(statut='o',typ=fonction_sdaster),),),
          ),
-         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
 # ======================================================================
@@ -21662,7 +22090,7 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
          ELEMENT         =FACT(statut='f',),
 
 )  ;
-#& MODIF COMMANDE  DATE 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21711,7 +22139,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
                                ang="List of sensitivity parameters"),
 
          SOLVEUR         =FACT(statut='d',
-         METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI","MUMPS","PETSC") ),
+           METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI","MUMPS","PETSC")),
 
            b_feti          =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1",
              PARTITION       =SIMP(statut='o',typ=sd_feti_sdaster),
@@ -21747,7 +22175,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
            ),
 
            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","LDLT_SP",),defaut="LDLT_INC" ),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP","SANS",),defaut="LDLT_INC" ),
              b_ldltinc       =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète",
                NIVE_REMPLISSAGE    =SIMP(statut='f',typ='I',defaut= 0 ),
                RENUM               =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
@@ -21773,12 +22201,20 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 ),
            ),
@@ -21842,7 +22278,7 @@ MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op=  80,sd_prod=mode_cycl,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 05/05/2009   AUTEUR BOITEAU O.BOITEAU 
+#& MODIF COMMANDE  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -21893,12 +22329,35 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
              NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=0 ),
              PREC_AJUSTE     =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ),
 
-             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, ),
+             ),
+             SOLVEUR         =FACT(statut='d',
+               METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")),
+               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="SANS",into=("SANS","SANS") ),
+               ),
+               b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
+                 NPREC           =SIMP(statut='f',typ='I',defaut= 8,val_min=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")),
+                 POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")),
+                 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,),
+                 OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+               ),
+             ),
+
            ),
-         ),
          b_flamb        =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
            CALC_FREQ       =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
            
@@ -21911,12 +22370,35 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
              NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15 ),
              PREC_AJUSTE     =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ),
            
-             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, ),
+             ),
+             SOLVEUR         =FACT(statut='d',
+               METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")),
+               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="SANS",into=("SANS","SANS") ),
+               ),
+               b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
+                 NPREC           =SIMP(statut='f',typ='I',defaut= 8,val_min=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")),
+                 POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")),
+                 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,),
+                 OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+               ),
+             ),
+             
            ),
-         ),
          CALC_MODE       =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres",
            OPTION          =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ),
            PREC            =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=0.E+0,fr="Précision de convergence" ),
@@ -21939,7 +22421,7 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op=  44,sd_prod=mode_iter_inv_prod
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
          TITRE           =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 05/05/2009   AUTEUR BOITEAU O.BOITEAU 
+#& MODIF COMMANDE  DATE 13/10/2010   AUTEUR BOITEAU O.BOITEAU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22031,11 +22513,33 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45,sd_prod=mode_iter_simult_pr
              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 ),
-           ),
+             ),
+             SOLVEUR         =FACT(statut='d',
+               METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")),
+               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="SANS",into=("SANS","SANS") ),
+               ),
+               b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
+                 NPREC           =SIMP(statut='f',typ='I',defaut= 8,val_min=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")),
+                 POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")),
+                 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,),
+                 OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+               ),
+             ),
          ),
 
          b_dynam        =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
@@ -22062,12 +22566,35 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op=  45,sd_prod=mode_iter_simult_pr
              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 ),
+             ),
+             SOLVEUR         =FACT(statut='d',
+               METHODE         =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","MUMPS")),
+               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="SANS",into=("SANS","SANS") ),
+               ),
+               b_direct_hybride =BLOC( condition = "METHODE=='LDLT' or METHODE=='MULT_FRONT' or METHODE=='MUMPS' ",
+                                   fr="Paramètres relatifs à la non inversibilité de la matrice à factoriser",
+                 NPREC           =SIMP(statut='f',typ='I',defaut= 8,val_min=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")),
+                 POSTTRAITEMENTS =SIMP(statut='f',typ='TXM',defaut="AUTO",into=("SANS","AUTO","FORCE")),
+                 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,),
+                 OUT_OF_CORE     =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+               ),
+             ),
+
            ),
-         ),
 
          VERI_MODE       =FACT(statut='d',min=0,
            STOP_ERREUR     =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
@@ -22089,7 +22616,7 @@ 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 13/10/2009   AUTEUR COURTOIS M.COURTOIS 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22113,9 +22640,19 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca,
                    fr="Calcul de deformees statiques pour un déplacement, une force ou une accélération unitaire imposé",
                    reentrant='n',
             UIinfo={"groupes":("Résolution",)},
+            
+            
+         regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE','MODE_INTERF'),
+                 PRESENT_PRESENT('MODE_INTERF','MATR_MASS'),
+                 PRESENT_PRESENT('PSEUDO_MODE','MATR_MASS'),
+                 ),
+               
+                  
          MATR_RIGI       =SIMP(statut='o',typ=matr_asse_depl_r ),
          MATR_MASS       =SIMP(statut='f',typ=matr_asse_depl_r ),
-               regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE'),),
+         
+         
+               
          MODE_STAT       =FACT(statut='f',max='**',
            regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
                    UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
@@ -22152,11 +22689,22 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca,
              SANS_CMP        =SIMP(statut='f',typ='TXM',max='**'),
            ),
          ),
+         MODE_INTERF    =FACT(statut='f',max='**',
+           regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
+                   UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
+           TOUT            =SIMP(statut='f',typ='TXM',into=("OUI",), ),
+           NOEUD           =SIMP(statut='f',typ=no   ,max='**'),
+           GROUP_NO        =SIMP(statut='f',typ=grno ,max='**'),
+           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='**'),
+           NBMOD           =SIMP(statut='o',typ='I',defaut= 1),
+           FREQ            =SIMP(statut='o',typ='R',defaut= 1.0),
 
+         ),
 
          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") ),
-
+           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") ),
@@ -22184,21 +22732,34 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_meca,
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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),
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","LDLT_SP",),defaut="LDLT_INC" ),
+             b_ldltinc       =BLOC(condition = "PRE_COND == 'LDLT_INC' ", fr="Paramètres de la factorisation incomplète",
+               NIVE_REMPLISSAGE    =SIMP(statut='f',typ='I',defaut= 0 ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+               ),
+             b_simple        =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               ),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= 0 ),
            ),
          ),
@@ -22401,23 +22962,23 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
          ),
          INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
 )  ;
-#& MODIF COMMANDE  DATE 16/06/2009   AUTEUR PELLET J.PELLET 
+#& MODIF COMMANDE  DATE 28/06/2010   AUTEUR PELLET J.PELLET 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  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 PELLET J.PELLET
 
@@ -22428,8 +22989,8 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o',
          MODELE          =SIMP(statut='o',typ=modele_sdaster,min=1,max=1,),
 
          PARTITION         =FACT(statut='d',
-             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="MAIL_DISPERSE",
-                                   into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE",)),
+             PARALLELISME    =SIMP(statut='f',typ='TXM',defaut="GROUP_ELEM",
+                                   into=("MAIL_CONTIGU","MAIL_DISPERSE","SOUS_DOMAINE","CENTRALISE","GROUP_ELEM")),
              b_dist_maille          =BLOC(condition = "PARALLELISME in ('MAIL_DISPERSE','MAIL_CONTIGU')",
                  CHARGE_PROC0_MA =SIMP(statut='f',typ='I',defaut=100,val_min=0),
              ),
@@ -22439,7 +23000,7 @@ MODI_MODELE=OPER(nom="MODI_MODELE",op= 103,sd_prod=modele_sdaster,reentrant='o',
              ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 20/04/2009   AUTEUR GENIAUT S.GENIAUT 
+#& MODIF COMMANDE  DATE 20/07/2010   AUTEUR MAHFOUZ D.MAHFOUZ 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22467,7 +23028,8 @@ MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu
     FISSURE         =SIMP(statut='o',typ=fiss_xfem,min=1,max='**',),
     CRITERE         =SIMP(statut='f',typ='R',defaut=1.1E-4),
     INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)),
-    CONTACT         =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON"),min=1,max=1,),
+    CONTACT        
+     =SIMP(statut='f',typ='TXM',defaut='SANS',into=("P1P1","P1P1A","P2P1","SANS"),min=1,max=1,),
 )  ;
 #& MODIF COMMANDE  DATE 21/04/2008   AUTEUR LEFEBVRE J-P.LEFEBVRE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -22691,7 +23253,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
          ),
          INFO            =SIMP(statut='f',typ='I',into=(1,2)),
 )  ;
-#& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 21/06/2010   AUTEUR CORUS M.CORUS 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22718,7 +23280,7 @@ NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene,
          MODELE_GENE     =SIMP(statut='f',typ=modele_gene ),
              b_modele_gene     =BLOC(condition = "MODELE_GENE != None",
                STOCKAGE     =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ),
-               METHODE            =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE") ),
+               METHODE            =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE","ELIMINE") ),
                                     ),
          BASE     =SIMP(statut='f',typ=(mode_meca,mode_gene ) ),
              b_base     =BLOC(condition = "BASE != None",
@@ -22894,7 +23456,72 @@ OBSERVATION=MACRO(nom="OBSERVATION",op=observation_ops,
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
       )  ;
-#& MODIF COMMANDE  DATE 27/07/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 09/08/2010   AUTEUR BARGELLINI R.BARGELLINI 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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 BARGELLINI R.BARGELLINI
+
+
+from Macro.post_bordet_ops import post_bordet_ops
+
+
+
+POST_BORDET =MACRO(nom="POST_BORDET", op=post_bordet_ops,sd_prod=table_sdaster,
+                   docu="",reentrant='n',fr="calcul de la probabilite de clivage via le modele de Bordet",
+         regles=(UN_PARMI('TOUT','GROUP_MA'),
+                 UN_PARMI('INST','NUME_ORDRE'),
+                 ),
+         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"),
+         INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+         NUME_ORDRE      =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+         PROBA_NUCL      =SIMP(statut='f',typ='TXM',into=("NON","OUI"), defaut="NON",
+                      fr="prise en compte du facteur exponentiel"),
+         b_nucl          =BLOC( condition = "PROBA_NUCL=='OUI'",
+                          PARAM =FACT(statut='o',
+                                 M                =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SIGM_REFE         =SIMP(statut='o',typ=(fonction_sdaster),val_min=0.E+0),
+                                 VOLU_REFE        =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SIG_CRIT         =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SEUIL_REFE       =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SEUIL_CALC       =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster)),                   
+                                 DEF_PLAS_REFE    =SIMP(statut='o',typ='R'),),),
+                                 
+         b_prop          =BLOC( condition = "PROBA_NUCL=='NON'",
+                          PARAM =FACT(statut='o',
+                                 M                =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SIGM_REFE         =SIMP(statut='o',typ=fonction_sdaster,val_min=0.E+0),
+                                 VOLU_REFE        =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SIG_CRIT         =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SEUIL_REFE       =SIMP(statut='o',typ='R',val_min=0.E+0),
+                                 SEUIL_CALC       =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),),
+                                 ),
+                                 ),    
+                                  
+         RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,
+                                      fr="Resultat d'une commande globale STAT_NON_LINE"),
+         MODELE          =SIMP(statut='o',typ=modele_sdaster),
+         CHAM_MATER      =SIMP(statut='o',typ=cham_mater),
+         TEMP            =SIMP(statut='o',typ=(fonction_sdaster,'R')),
+         COEF_MULT       =SIMP(statut='f',typ='R', defaut=1.),                   
+           )
+#& MODIF COMMANDE  DATE 10/08/2010   AUTEUR GENIAUT S.GENIAUT 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22922,20 +23549,13 @@ def post_cham_xfem_prod(RESULTAT,**args ):
 
 POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=post_cham_xfem_prod,
                     reentrant='n',UIinfo={"groupes":("Post traitements",)},
-            fr="Calcul des champs DEPL et SIEF_ELGA sur le maillage fissuré",
-    MAILLAGE_SAIN = SIMP(statut='o',typ=maillage_sdaster),
-    MAILLAGE_FISS = SIMP(statut='o',typ=maillage_sdaster),
-    NOM_CHAM      = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","SIEF_ELGA","VARI_ELGA"),),
-    MODELE        = SIMP(statut='o',typ=modele_sdaster,),
+            fr="Calcul des champs DEPL, SIEF_ELGA et VARI_ELGA sur le maillage de visualisation (fissuré)",
+    MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster),
     RESULTAT      = SIMP(statut='o',typ=resultat_sdaster),
-      b_elga      = BLOC(condition = "NOM_CHAM in ('SIEF_ELGA','VARI_ELGA') or \
-                                      (type(NOM_CHAM)==type(()) and 'SIEF_ELGA' in NOM_CHAM) or \
-                                      (type(NOM_CHAM)==type(()) and 'VARI_ELGA' in NOM_CHAM)",
-      MODELE_VISU = SIMP(statut='o',typ=modele_sdaster,),
-                         ),
-    INFO           =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
+    MODELE_VISU   = SIMP(statut='o',typ=modele_sdaster,),
+    INFO          = SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
 );                     
-#& MODIF COMMANDE  DATE 08/02/2010   AUTEUR DESROCHES X.DESROCHES 
+#& MODIF COMMANDE  DATE 11/10/2010   AUTEUR DESROCHES X.DESROCHES 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2009  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -22966,13 +23586,45 @@ POST_COQUE=MACRO(nom="POST_COQUE",op=post_coque_ops,sd_prod=table_sdaster, reent
              RESULTAT        =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à posttraiter",),
              CHAM            =SIMP(statut='o',typ='TXM',into=("EFFORT","DEFORMATION",)),
              NUME_ORDRE      =SIMP(statut='f',typ='I'),
-             INST            =SIMP(statut='f',typ='R',defaut=0.E+0),
+             INST            =SIMP(statut='f',typ='R'),
 
              # points de post-traitement :
              COOR_POINT      =FACT(statut='o',max='**',fr="coordonnées et position dans l épaisseur",
                                    COOR=SIMP(statut='o',typ='R',min=3,max=4),),
 
             )
+#& MODIF COMMANDE  DATE 04/10/2010   AUTEUR GREFFET N.GREFFET 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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
+
+from Macro.post_decollement_ops import post_decollement_ops
+
+POST_DECOLLEMENT=MACRO(nom="POST_DECOLLEMENT",op=post_decollement_ops,sd_prod=table_sdaster,
+                     fr="calcul du rapport de surfaces de contact radier/sol",
+                     reentrant='n',
+            UIinfo={"groupes":("Post traitements",)},
+         RESULTAT   =SIMP(statut='o',typ=(evol_noli) ),
+         NOM_CHAM   =SIMP(statut='f',typ='TXM',defaut='DEPL',into=C_NOM_CHAM_INTO(),max=1),
+         NOM_CMP    =SIMP(statut='f',typ='TXM',defaut='DZ',max=1),
+         GROUP_MA   =SIMP(statut='o',typ=grma,max=1),
+         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
 # ======================================================================
@@ -23786,7 +24438,7 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
          INFO            =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 08/12/2009   AUTEUR PROIX J-M.PROIX 
+#& MODIF COMMANDE  DATE 13/07/2010   AUTEUR MAHFOUZ D.MAHFOUZ 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23805,22 +24457,27 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
 # RESPONSABLE WADIER Y.WADIER
-
+   
 from Macro.post_gp_ops import post_gp_ops
-def post_gp_prod(self, TABL_RESU, **kargs):
+
+def post_gp_prod(self, TABL_GPMAX,TABL_GP, **kargs):
    """Typage des sd_prod
    """
-   if TABL_RESU != None:
-      self.type_sdprod(TABL_RESU, table_sdaster)
+   if TABL_GPMAX != None:
+      self.type_sdprod(TABL_GPMAX, table_sdaster)
+   if TABL_GP != None :
+      if TABL_GPMAX != None:
+         self.type_sdprod(TABL_GPMAX, table_sdaster)
+         self.type_sdprod(TABL_GP, table_sdaster)
    return table_sdaster
 
+
 POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
               fr="Calcul du critère énergétique Gp suite à un calcul thermo-mécanique",
               reentrant='n',
               UIinfo={"groupes":("Post traitements",)},
               regles=(UN_PARMI('IDENTIFICATION', 'PREDICTION'),
                       UN_PARMI('THETA_2D','THETA_3D'),
-                      UN_PARMI('PAS_ENTAILLE','LIST_EP_COPEAUX'),
                       PRESENT_PRESENT('THETA_2D','DIRECTION'),),
       
       # Résultat, modèle, comportement, chargement
@@ -23835,6 +24492,7 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
            DEFORMATION     =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GROT_GDEP",) ),
       ),
       
+      TYPE_DEF = SIMP(statut='f',typ='TXM', defaut="PETIT", into=("PETIT","GRAND")),
       EXCIT        = FACT(statut='f', max='**',
             CHARGE      = SIMP(statut='o', typ=(char_meca,char_cine_meca)),
             FONC_MULT   = SIMP(statut='f', typ=(fonction_sdaster,nappe_sdaster,formule)),
@@ -23842,15 +24500,22 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
       ),
       SYME_CHAR    = SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS")),
       
+      
       DIRECTION    = SIMP(statut='f', typ='R', max=3),
-
+      
       THETA_2D     = FACT(statut='f', max='**',
                           fr="paramètres de définition des champs theta",
             GROUP_NO    = SIMP(statut='o', typ=grno, validators=NoRepeat(), max='**'),
             R_INF       = SIMP(statut='o', typ='R'),
-            R_SUP       = SIMP(statut='o', typ='R'),
-      ),
+            R_SUP       = SIMP(statut='o', typ='R'),),
 
+      b_theta_2d=BLOC(condition="(THETA_2D != None)",
+           # correction axisymétrie
+            RAYON_AXIS   = SIMP(statut='f', typ='R', val_min=0., defaut=1.),
+            TRANCHE = FACT(statut='o', max=1,
+     
+                           GROUP_MA  = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'),
+                           ),),
 
       THETA_3D        =FACT(statut='f',max='**',
             GROUP_MA        =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
@@ -23867,27 +24532,19 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
                              ),
     
             FOND_FISS       =SIMP(statut='o',typ=fond_fiss,max=1,),
-            NB_TRANCHES     =SIMP(statut='o',typ='I',max=1,
-                            fr="nombre de tranches: nombre de segments maillant le fond de fissure",),
-                         ),
+            TRANCHE = FACT(statut='o', max='**',
+                           GROUP_MA  = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'),
+                           ),),
 
       # prise en compte de la traction compression
       TRAC_COMP    = SIMP(statut='f',typ='TXM',into=("OUI",),
                           fr="prise en compte de la traction-compression (plus lent)",
                          ),
 
-      # copeaux
-      GROUP_MA        = SIMP(statut='o', typ=grma, validators=NoRepeat(), max='**'),
-      PAS_ENTAILLE    = SIMP(statut='f', typ='R', val_min=0.),
-      LIST_EP_COPEAUX = SIMP(statut='f', typ='R', max='**'),
-      
       # critère sur Gp
       CRIT_MAXI_GP = SIMP(statut='f', typ='TXM', defaut="ABSOLU",
                           into=("RELATIF","ABSOLU")),
-      
-      # correction axisymétrie
-      RAYON_AXIS   = SIMP(statut='f', typ='R', val_min=0., defaut=1.),
-      
+            
       # identification
       IDENTIFICATION = FACT(statut='f', max=1,
             KJ_CRIT     = SIMP(statut='o', typ='R', val_min=0., max='**'),
@@ -23901,11 +24558,14 @@ POST_GP=MACRO(nom="POST_GP", op=post_gp_ops, sd_prod=post_gp_prod,
       ),
       
       # table résultat
-      TABL_RESU    = SIMP(statut='o', typ=CO,),
-      
+      TABL_GPMAX    = SIMP(statut='o', typ=CO,),
+      TABL_GP       = SIMP(statut='f', typ=CO,),
+      b_tabl_gp=BLOC(condition="(TABL_GP != None)",
+             INST            =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+             LIST_INST  = SIMP(statut='f',typ=listr8_sdaster),),
       INFO         = SIMP(statut='f', typ='I', defaut=1, into=(1, 2),),
 )
-#& MODIF COMMANDE  DATE 20/10/2008   AUTEUR GALENNE E.GALENNE 
+#& MODIF COMMANDE  DATE 10/08/2010   AUTEUR GENIAUT S.GENIAUT 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -23932,10 +24592,10 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
             UIinfo={"groupes":("Post traitements",)},
 
            regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'),
-                  EXCLUS('FISSURE','FOND_FISS'),
-                  PRESENT_PRESENT('FISSURE','RESULTAT'),
-                  PRESENT_PRESENT('FOND_FISS','VECT_K1'),
-                  PRESENT_PRESENT('TABL_DEPL_SUP','VECT_K1'),
+                   EXCLUS('FISSURE','FOND_FISS'),
+                   PRESENT_PRESENT('FISSURE','RESULTAT'),
+                   PRESENT_PRESENT('FOND_FISS','VECT_K1'),
+                   PRESENT_PRESENT('TABL_DEPL_SUP','VECT_K1'),
                    #PRESENT_PRESENT('RESULTAT','FOND_FISS'),
                    ),
 
@@ -23943,11 +24603,13 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
                              into=("3D","AXIS","D_PLAN","C_PLAN"),
                              fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"),
          FOND_FISS     =SIMP(statut='f',typ=fond_fiss),
-         FISSURE     =SIMP(statut='f',typ=fiss_xfem),
+         FISSURE       =SIMP(statut='f',typ=fiss_xfem),
+         NB_NOEUD_COUPE=SIMP(statut='f',typ='I',defaut=5,val_min = 3),
+
+#        bloc correspondant a la donnee du fond de fissure pour les fissures maillees
          b_fond_fiss   =BLOC (condition="(FOND_FISS!= None)",
                          MAILLAGE      = SIMP(statut='o',typ=maillage_sdaster),
                          TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"),
-                         NB_NOEUD_COUPE= SIMP(statut='f',typ='I'),
                          NOEUD         = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
                          GROUP_NO      = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
                          SANS_NOEUD    = SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
@@ -23955,13 +24617,13 @@ POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdast
                          TOUT          = SIMP(statut='f',typ='TXM',into=("OUI",) ),
                          EVOL_THER     = SIMP(statut='f',typ=(evol_ther),fr="Température sur le fond de fissure")
                          ),
-         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='**'),
+#        bloc correspondant a la donnee de la fissure pour les fissures X-FEM
+         b_fissure     =BLOC (condition="(FISSURE!= None)",
+                         MAILLAGE      = SIMP(statut='o',typ=maillage_sdaster),
+                         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='**'),
                          ),
          MATER         =SIMP(statut='o',typ=mater_sdaster,
                              fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"),
@@ -23973,7 +24635,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 inférieure"),
          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),
+         PREC_VIS_A_VIS=SIMP(statut='f',typ='R',defaut=0.1),
          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),
@@ -24100,7 +24762,7 @@ POST_K_TRANS=MACRO(nom="POST_K_TRANS",op=post_k_trans_ops,sd_prod=table_sdaster,
         TITRE           =SIMP(statut='f',typ='TXM'),
 )
 
-#& MODIF COMMANDE  DATE 12/05/2009   AUTEUR MAZET S.MAZE
+#& MODIF COMMANDE  DATE 10/08/2010   AUTEUR GENIAUT S.GENIAU
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2005  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -24123,7 +24785,7 @@ POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
                     reentrant='n',UIinfo={"groupes":("Maillage",)},
             fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM",
     MODELE        = SIMP(statut='o',typ=modele_sdaster),
-    MAILLAGE_SAIN = SIMP(statut='o',typ=maillage_sdaster),
+    MAILLAGE_SAIN = SIMP(statut='f',typ=maillage_sdaster),
     PREF_NOEUD_X   =SIMP(statut='f',typ='TXM',defaut="NX",validators=LongStr(1,2),),
     PREF_NOEUD_M   =SIMP(statut='f',typ='TXM',defaut="NM",validators=LongStr(1,2),),
     PREF_NOEUD_P   =SIMP(statut='f',typ='TXM',defaut="NP",validators=LongStr(1,2),),
@@ -24914,7 +25576,7 @@ PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster,
          CHAM_NO         =SIMP(statut='o',typ=cham_no_sdaster),
          TITRE           =SIMP(statut='f',typ='TXM',max='**'),
 )  ;
-#& MODIF COMMANDE  DATE 19/04/2010   AUTEUR BERARD A.BERARD 
+#& MODIF COMMANDE  DATE 12/07/2010   AUTEUR BERARD A.BERARD 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -24946,8 +25608,8 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
                 fr="Projeter des champs d'un maillage sur un autre",
 
 
-         METHODE         =SIMP(statut='f',typ='TXM',defaut="ELEM",
-                               into=("NUAGE_DEG_0","NUAGE_DEG_1","ELEM",) ),
+         METHODE         =SIMP(statut='f',typ='TXM',defaut="AUTO",
+                               into=("NUAGE_DEG_0","NUAGE_DEG_1","AUTO","COLOCATION","ECLA_PG",) ),
 
          regles=(UN_PARMI('RESULTAT','CHAM_GD'),
                  UN_PARMI('MODELE_1','MAILLAGE_1'),
@@ -24969,9 +25631,9 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
          ),
 
 
-         # Cas de la projection ELEM :
+         # Cas de la projection COLOCATION :
          #--------------------------------------------
-         b_elem          =BLOC(condition="METHODE == 'ELEM'",
+         b_elem          =BLOC(condition="METHODE in ('COLOCATION','ECLA_PG','AUTO')",
              CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",),
                   fr="Pour indiquer au programme le type de projection souhaité"),
              DISTANCE_MAX    =SIMP(statut='f',typ='R',
@@ -25056,7 +25718,7 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
            GROUP_NO_2      =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
            NOEUD_2         =SIMP(statut='f',typ=no  ,validators=NoRepeat(),max='**'),
 
-           # les mots clés suivants ne sont actifs que si METHODE='ELEM' mais on ne peut pas le vérifier:
+           # les mots clés suivants ne sont actifs que si METHODE='COLOCATION' mais on ne peut pas le vérifier:
                CAS_FIGURE      =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
                TRANSF_GEOM_1   =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),min=2,max=3,
                     fr="2 (ou 3) fonctions fx,fy,fz définissant la transformation géométrique à appliquer"+
@@ -26018,7 +26680,7 @@ REST_GENE_PHYS=OPER(nom="REST_GENE_PHYS",op=  75,sd_prod=rest_gene_phys_prod,
          DIRECTION       =SIMP(statut='f',typ='R',min=3,max=3 ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
-#& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
+#& MODIF COMMANDE  DATE 19/07/2010   AUTEUR NISTOR I.NISTOR 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2008  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -26062,6 +26724,7 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op=  77,sd_prod=rest_sous_struc_prod,
               EXCLUS('NOEUD','GROUP_NO'),
               EXCLUS('MAILLE','GROUP_MA'),
               PRESENT_PRESENT('RESULTAT','SQUELETTE'),
+              UN_PARMI('SQUELETTE','SOUS_STRUC','SECTEUR'),
 
                 ),
          RESULTAT        =SIMP(statut='f',typ=(evol_noli,dyna_trans,
@@ -26101,7 +26764,7 @@ REST_SOUS_STRUC=OPER(nom="REST_SOUS_STRUC",op=  77,sd_prod=rest_sous_struc_prod,
 
          SQUELETTE       =SIMP(statut='f',typ=squelette ),
          SOUS_STRUC      =SIMP(statut='f',typ='TXM' ),  
-         SECTEUR         =SIMP(statut='f',typ='I',defaut= 1 ),  
+         SECTEUR         =SIMP(statut='f',typ='I'),  
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),  
 )  ;
 #& MODIF COMMANDE  DATE 11/05/2009   AUTEUR NISTOR I.NISTOR 
@@ -26189,7 +26852,7 @@ REST_SPEC_TEMP=OPER(nom="REST_SPEC_TEMP",op=181,sd_prod=rest_spec_temp_prod,
          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 03/05/2010   AUTEUR PROIX J-M.PROIX 
+#& MODIF COMMANDE  DATE 28/06/2010   AUTEUR PROIX J-M.PROIX 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2006  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -26244,6 +26907,8 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s
       NB_VARI_TABLE  =SIMP(statut='f',typ='I',max=1,),
       ARCHIVAGE       =FACT(statut='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-6),
                            ),
                ),        
@@ -26280,24 +26945,62 @@ SIMU_POINT_MAT=MACRO(nom="SIMU_POINT_MAT", op=simu_point_mat_ops,sd_prod=table_s
            CMP_VARC        =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
            VALE_DEF        =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)),
                            ),
+        SIGM_IMPOSE=FACT(statut='f',
+              SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                         ),
+        EPSI_IMPOSE=FACT(statut='f',
+              EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+              EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                         ),
                ),
+   b_COEF = BLOC(condition="SUPPORT !=  'ELEMENT'",fr="matrice de coefficients",
+     regles = (PRESENT_ABSENT('SIGM_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
+               PRESENT_ABSENT('EPSI_IMPOSE','MATR_C1','MATR_C2','VECT_IMPO'),
+               PRESENT_ABSENT('MATR_C1','SIGM_IMPOSE','EPSI_IMPOSE'),
+               PRESENT_ABSENT('MATR_C2','SIGM_IMPOSE','EPSI_IMPOSE'),
+               PRESENT_ABSENT('VECT_IMPO', 'SIGM_IMPOSE','EPSI_IMPOSE'),
+     ),
                
-   SIGM_IMPOSE=FACT(statut='f',
-         SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+     SIGM_IMPOSE=FACT(statut='f',
+           SIXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           SIYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           SIZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           SIXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           SIXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           SIYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                      ),
+     EPSI_IMPOSE=FACT(statut='f',
+           EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+           EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+                      ),
+     MATR_C1=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ='R',max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                              ),
+     MATR_C2=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ='R',max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+           NUME_COLONNE  =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=12 ),
+                              ),
+     VECT_IMPO=FACT(statut='f',max='**',
+           VALE          =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max=1, ),
+           NUME_LIGNE    =SIMP(statut='o',typ='I',max=1,val_min=1,val_max=6 ),
+                              ),
                     ),
-   EPSI_IMPOSE=FACT(statut='f',
-         EPXX = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         EPYY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         EPZZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         EPXY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         EPXZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-         EPYZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
-                    ),            
    SIGM_INIT=FACT(statut='f',
           SIXX = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
           SIYY = SIMP(statut='f',typ='R',max=1,defaut=0.0E+0),
@@ -26355,7 +27058,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 12/04/2010   AUTEUR MICHEL S.MICHEL 
+#& MODIF COMMANDE  DATE 19/10/2010   AUTEUR DESOZA T.DESOZA 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -26566,7 +27269,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                                       "MATR_ASSE",
                                       "ITER_DEBO",
                                       "CTCD_ITER","CTCD_GEOM","CTCD_NOEU",
-                                      "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
+                                      "BOUC_GEOM","BOUC_FROT","BOUC_CONT","CTCC_BOUC","CTCC_NOEU",
                                       "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI",
                                      ),
                                ),
@@ -26574,6 +27277,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                     NOM_COLONNE == 'RESI_MAXI' or\
                     NOM_COLONNE == 'RESI_REFE' or\
                     NOM_COLONNE == 'CTCD_GEOM' or\
+                    NOM_COLONNE == 'CTCC_BOUC' or\
                     NOM_COLONNE == 'STANDARD' ",
                             INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
                           ),
@@ -26603,6 +27307,16 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
                                fr="Liste des paramètres de sensibilité",
                                ang="List of sensitivity parameters"),
          INFO            =SIMP(statut='f',typ='I',into=(1,2) ),
+         b_info=BLOC(condition="INFO==2",
+               fr="filtre les messages émis dans le .mess selon le type de message demandé",
+               INFO_DBG = SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+                               into=("CONTACT",
+                                     "MECA_NON_LINE",
+                                     "PILOTAGE",
+                                     "FACTORISATION",
+                                     "APPARIEMENT"),
+                             ),
+                    ),
          TITRE           =SIMP(statut='f',typ='TXM',max='**' ),
  )
 
@@ -26749,7 +27463,7 @@ TEST_FONCTION=MACRO(nom="TEST_FONCTION",op=test_fonction_ops,sd_prod=None,
            ),
          ),
 )  ;
-#& MODIF COMMANDE  DATE 01/02/2010   AUTEUR REZETTE C.REZETTE 
+#& MODIF COMMANDE  DATE 06/09/2010   AUTEUR REZETTE C.REZETTE 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -26784,7 +27498,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,
            CHAM_GD         =SIMP(statut='o',typ=cham_no_sdaster),
            NOEUD           =SIMP(statut='f',typ=no   ),
            GROUP_NO        =SIMP(statut='f',typ=grno ),
-           NOM_CMP         =SIMP(statut='f',typ='TXM'),
+           NOM_CMP         =SIMP(statut='f',typ='TXM',max=1),
            TYPE_TEST       =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")),
            VALE            =SIMP(statut='f',typ='R',max='**'),
            VALE_I          =SIMP(statut='f',typ='I',max='**'),
@@ -26811,7 +27525,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,
            SOUS_POINT      =SIMP(statut='f',typ='I'),
            NOEUD           =SIMP(statut='f',typ=no),
            GROUP_NO        =SIMP(statut='f',typ=grno),
-           NOM_CMP         =SIMP(statut='f',typ='TXM',max='**'),
+           NOM_CMP         =SIMP(statut='f',typ='TXM',max=1),
            TYPE_TEST       =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ),
            VALE            =SIMP(statut='f',typ='R',max='**' ),
            VALE_I          =SIMP(statut='f',typ='I',max='**' ),
@@ -26849,7 +27563,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,
            ANGL            =SIMP(statut='f',typ='R'),
            PARA            =SIMP(statut='f',typ='TXM'),
            NOM_CHAM        =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
-           NOM_CMP         =SIMP(statut='f',typ='TXM',max='**'),
+           NOM_CMP         =SIMP(statut='f',typ='TXM',max=1),
            MAILLE          =SIMP(statut='f',typ=ma   ,max='**'),
            NOEUD           =SIMP(statut='f',typ=no   ,max='**'),
            GROUP_NO        =SIMP(statut='f',typ=grno ,max='**'),
@@ -27033,7 +27747,7 @@ TEST_TEMPS=MACRO(nom="TEST_TEMPS",op=test_temps_ops, sd_prod=None,
    INFO  = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
 )
 
-#& MODIF COMMANDE  DATE 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -27136,13 +27850,21 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
+             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
              NMAX_ITER       =SIMP(statut='f',typ='I',defaut= -1 ),
            ),
          ),
@@ -27161,7 +27883,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -27286,13 +28008,21 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
 
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             RENUM           =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
-             RESI_RELA       =SIMP(statut='f',typ='R',defaut= 1.E-6),
+             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",) ),
@@ -27333,7 +28063,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 18/01/2010   AUTEUR TARDIEU N.TARDIEU 
+#& MODIF COMMANDE  DATE 20/09/2010   AUTEUR TARDIEU N.TARDIEU 
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -27411,12 +28141,20 @@ THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
              ),
            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' ",
+             PRE_COND        =SIMP(statut='f',typ='TXM',into=("LDLT_INC","JACOBI","SOR","LDLT_SP"),defaut="LDLT_INC" ),
+             b_ldlt_inc     =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") ),
+             ),
+             b_ldlt_sp      =BLOC(condition = "PRE_COND == 'LDLT_SP' ", fr="Paramètres de la factorisation simple précision",
+               REAC_PRECOND        =SIMP(statut='f',typ='I',defaut=5, ),
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
+             ),
+             b_jacobi_sor   =BLOC(condition = "PRE_COND == 'JACOBI' or PRE_COND == 'SOR'", 
+                                                                         fr="Paramètres des préconditionneurs JACOBI et SOR",
+               RENUM               =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","RCMK") ),
              ),
-             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 ),
            ),