]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
PN : mise a jour 9.0.27
authorPascale Noyret <pascale.noyret@edf.fr>
Fri, 25 May 2007 13:02:40 +0000 (13:02 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Fri, 25 May 2007 13:02:40 +0000 (13:02 +0000)
18 files changed:
Aster/Cata/cataSTA9/Macro/calc_table_ops.py
Aster/Cata/cataSTA9/Macro/creation_donnees_homard.py
Aster/Cata/cataSTA9/Macro/impr_table_ops.py
Aster/Cata/cataSTA9/Macro/macr_adap_mail_ops.py
Aster/Cata/cataSTA9/Macro/macr_ascouf_calc_ops.py
Aster/Cata/cataSTA9/Macro/macr_aspic_calc_ops.py
Aster/Cata/cataSTA9/Macro/macr_cabri_calc_ops.py
Aster/Cata/cataSTA9/Macro/macr_lign_coupe_ops.py
Aster/Cata/cataSTA9/Macro/macr_recal_ops.py
Aster/Cata/cataSTA9/Macro/post_k1_k2_k3_ops.py
Aster/Cata/cataSTA9/Macro/reca_algo.py
Aster/Cata/cataSTA9/Macro/reca_calcul_aster.py
Aster/Cata/cataSTA9/Macro/reca_controles.py
Aster/Cata/cataSTA9/Macro/reca_graphique.py
Aster/Cata/cataSTA9/Macro/reca_interp.py
Aster/Cata/cataSTA9/Macro/reca_message.py
Aster/Cata/cataSTA9/Macro/reca_utilitaires.py
Aster/Cata/cataSTA9/Macro/simu_point_mat_ops.py

index 74201a010fca8b31e79a78a262e2d7dfc67bfc24..01ecfcb01cae619e78f8a41142b347218c5c4d4c 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF calc_table_ops Macro  DATE 10/10/2006   AUTEUR MCOURTOI M.COURTOIS 
+#@ MODIF calc_table_ops Macro  DATE 16/05/2007   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -34,7 +34,6 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args):
    from Utilitai.Utmess       import UTMESS
    from Utilitai              import transpose
    from Utilitai.Table        import Table, merge
-   from Utilitai.Sensibilite  import NomCompose
 
    ier = 0
    # La macro compte pour 1 dans la numerotation des commandes
@@ -55,7 +54,7 @@ def calc_table_ops(self, TABLE, ACTION, INFO, **args):
    # 0. faut-il utiliser une table dérivée
    form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)'
    if args['SENSIBILITE']:
-      ncomp = NomCompose(TABLE, args['SENSIBILITE'], msg='F')
+      ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, args['SENSIBILITE'].nom)
       sdtab = table_jeveux(ncomp)
       tab = sdtab.EXTR_TABLE()
    else:
index ed50681b7e58f5266976eb43b974873264e01f3f..e218557854504bede56fcce0219bbde7c624cb63 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF creation_donnees_homard Macro  DATE 30/10/2006   AUTEUR DURAND C.DURAND 
+#@ MODIF creation_donnees_homard Macro  DATE 04/04/2007   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
+# RESPONSABLE ABBAS M.ABBAS
 """
 Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster.
 """
-__revision__ = "V1.1"
+__revision__ = "V1.2"
 __all__ = [ ]
  
 import os
 import os.path
+from types import ListType, TupleType
+EnumTypes = (ListType, TupleType)
 
 try:
   from Utilitai.Utmess import UTMESS
@@ -183,6 +185,7 @@ class creation_donnees_homard:
         self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom"
       else :
         self.fic_homard_niter = None
+        self.fic_homard_niterp1 = None
 #
 #     6.1. Le pilotage de l'adaptation
 #
@@ -284,7 +287,7 @@ class creation_donnees_homard:
     if message_erreur is not None :
       UTMESS("F", self.nom_macro, message_erreur)
 #
-    return self.fic_homard_niter
+    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
@@ -467,8 +470,11 @@ class creation_donnees_homard:
         self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"])
         if self.mots_cles.has_key("GROUP_MA") :
           if self.mots_cles["GROUP_MA"] is not None :
-            for group_ma in self.mots_cles["GROUP_MA"] :
-              self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
+            if not type(self.mots_cles["GROUP_MA"]) in EnumTypes :
+              self.ecrire_ligne_configuration_2("CCGroFro", self.mots_cles["GROUP_MA"])
+            else :
+              for group_ma in self.mots_cles["GROUP_MA"] :
+                self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
 #
 #     8. L'éventuel maillage annexe
 #
index fec1bdbbfa163cce1665d3f245abcf121503bfee..06d4c5eb86890fbcb1bda0d48e77254d0d0e50f5 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF impr_table_ops Macro  DATE 06/11/2006   AUTEUR MCOURTOI M.COURTOIS 
+#@ MODIF impr_table_ops Macro  DATE 16/05/2007   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -39,7 +39,6 @@ def impr_table_ops(self, FORMAT, TABLE, INFO, **args):
    from Cata.cata import table_jeveux
    from Utilitai.Utmess  import UTMESS
    from Utilitai.UniteAster import UniteAster
-   from Utilitai.Sensibilite import NomCompose
    ier=0
    # La macro compte pour 1 dans la numerotation des commandes
    self.set_icmd(1)
@@ -83,7 +82,7 @@ def impr_table_ops(self, FORMAT, TABLE, INFO, **args):
       if not type(lps) in EnumTypes:
          lps=[lps,]
       for ps in lps:
-         ncomp = NomCompose(TABLE, ps)
+         ncomp = self.jdc.memo_sensi.get_nocomp(TABLE.nom, ps.nom)
          if ncomp != None:
             sdtab = table_jeveux(ncomp)
             tabs = sdtab.EXTR_TABLE()
index 32a58b2e4029beb76dc04096c9d69f2c457c2109..e090e52dd70bd5955b4428f983e5f3475ce990e1 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_adap_mail_ops Macro  DATE 30/10/2006   AUTEUR DURAND C.DURAND 
+#@ MODIF macr_adap_mail_ops Macro  DATE 04/04/2007   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -692,7 +692,7 @@ def macr_adap_mail_ops ( self,
   donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration )
   if ( INFO > 1 ) :
     donnees_homard.quel_mode ( )
-  fic_homard_niter = donnees_homard.creation_configuration ( )
+  fic_homard_niter, fic_homard_niterp1 = donnees_homard.creation_configuration ( )
   donnees_homard.ecrire_fichier_configuration ( )
   if ( mode_homard == "INFO" ) :
     Nom_Fichier_Donnees = donnees_homard.ecrire_fichier_donnees ( )
@@ -805,29 +805,38 @@ def macr_adap_mail_ops ( self,
                                  INFO = INFO, **motscsi )
 #
 #====================================================================
-# 8. Menage des fichiers MED et HOMARD devenus inutiles
+# 8. Menage des fichiers devenus inutiles
+#    On doit imperativement garder le dernier fichier homard produit
+#    En mode d'information, on garde également les fichiers textes
 #====================================================================
 #
-  liste_aux = [ fichier_aster_vers_homard ]
+  liste_aux = [fichier_aster_vers_homard]
+  liste_aux_bis = os.listdir(Rep_Calc_HOMARD_global)
+  for fic in liste_aux_bis :
+    fic_total = os.path.join(Rep_Calc_HOMARD_global, fic)
+    liste_aux.append(fic_total)
+  liste_aux_bis = []
   if ( mode_homard == "ADAP" ) :
     liste_aux.append(fichier_homard_vers_aster)
-    fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niter)
-    liste_aux.append(fic)
-#gn  print "liste_aux = ",liste_aux
+    fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niterp1)
+    liste_aux_bis.append(fic)
 #
   for fic in liste_aux :
-    if ( INFO > 1 ) :
-      print "Destruction du fichier ", fic
-    if os.path.isfile(fic) :
-      try :
-        os.remove(fic)
-      except os.error,codret_partiel :
-        self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
-        UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
+    if fic not in liste_aux_bis :
+      if ( INFO > 1 ) :
+        print "Destruction du fichier ", fic
+      if os.path.isfile(fic) :
+        try :
+          os.remove(fic)
+        except os.error,codret_partiel :
+          self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+          UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
 #gn  print "Répertoire ",Rep_Calc_HOMARD_global
 #gn  os.system("ls -la "+Rep_Calc_HOMARD_global)
 #gn  print "Répertoire ",Rep_Calc_ASTER
 #gn  os.system("ls -la "+Rep_Calc_ASTER)
+#gn  print os.listdir(Rep_Calc_HOMARD_global)
+#gn  print "glop :", Rep_Calc_HOMARD_global
 #
 #====================================================================
 #  C'est fini !
index ac8e6edf23e938abef2c22081ff5dcf1ce97afba..fd92b6081a97f5f3f5cdbdad3a236b20028934c5 100644 (file)
@@ -1,21 +1,21 @@
-#@ MODIF macr_ascouf_calc_ops Macro  DATE 31/10/2006   AUTEUR REZETTE C.REZETTE 
+#@ MODIF macr_ascouf_calc_ops Macro  DATE 23/05/2007   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
 #            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.        
+# 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.
 # ======================================================================
 
 
@@ -23,7 +23,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
                               FOND_FISS,CHARGE,RESU_THER,AFFE_MATERIAU,
                               PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS,
                               SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
-                              INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):          
+                              INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
   """
      Ecriture de la macro MACR_ASCOUF_CALC
   """
@@ -60,7 +60,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 # DATA
   GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
 #------------------------------------------------------------------
-#  
+#
   if CL_BOL_P2_GV!=None :
     if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
        message=        ' la condition aux limites sur bol a section conique \n'
@@ -76,7 +76,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
        return ier
     if (mc_IMPR_TABLE['NOM_PARA']!=None) :
        impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
-       for impt in impr_table_nom_para : 
+       for impt in impr_table_nom_para :
          if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
            FLAG = 1
            if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR'        ]==None)) or
@@ -106,29 +106,31 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
                              AFFE     = _F(TOUT        ='OUI',
                                            PHENOMENE   ='THERMIQUE',
                                            MODELISATION='3D' )       )
+
 #------------------------------------------------------------------
 #
-#     --- commande AFFE_MATERIAU ---
+#     --- commande AFFE_MATERIAU (thermique)---
 #
-  if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
   mcfact=[]
   for mater in mc_AFFE_MATERIAU :
      if mater['TOUT']!=None :
        mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
        rccmat = mater['MATER']
      else                   :
-       mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+       mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER']))
        if    mater['GROUP_MA'][:5]=='COUDE' :
          if TORS_P1!=None :
-           mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
-           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+           mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER']))
+           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
          elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
-           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
        elif (mater['BOL'     ][:3]=='BOL'  ) and (CL_BOL_P2_GV==None) :
-         mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
-  affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+         mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER']))
+
+  __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
                           MODELE   = modele ,
                           AFFE     = mcfact    )
+
 #------------------------------------------------------------------
 #
 #     --- commande AFFE_CARA_ELEM ---
@@ -166,14 +168,60 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
      if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
      mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
      resuth = THER_LINEAIRE( MODELE     = __modthe ,
-                             CHAM_MATER = affmat ,
+                             CHAM_MATER = __affmat ,
                              TEMP_INIT  = _F(STATIONNAIRE='OUI',),
                              EXCIT      = _F(CHARGE=__chther,),
                              INCREMENT  = mcfact, )
 #
-     if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
-     chmeth = AFFE_CHAR_MECA( MODELE        = modele ,
-                              TEMP_CALCULEE = resuth )
+#------------------------------------------------------------------
+#
+#     --- commande AFFE_MATERIAU (mécanique)---
+#
+  if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
+  indther= ECHANGE
+  mcfact=[]
+  mcfac2=[]
+  for mater in mc_AFFE_MATERIAU :
+     if mater['TOUT']!=None :
+       mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],))
+       if indther:
+         mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
+                        EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+       rccmat = mater['MATER']
+     else                   :
+       mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
+       if indther:
+         mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA=mater['GROUP_MA'],
+                        EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+       if    mater['GROUP_MA'][:5]=='COUDE' :
+         if TORS_P1!=None :
+           mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],))
+           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+           if indther:
+             mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P1',
+                            EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+             mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+                            EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+         elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
+           mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+           if indther:
+             mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+                            EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+       elif (mater['BOL'     ][:3]=='BOL'  ) and (CL_BOL_P2_GV==None) :
+         mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],))
+         if indther:
+           mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA='P2',
+                          EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF'],),)
+
+
+  affmth = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+                          MODELE   = modele ,
+                          AFFE     = mcfact,
+                          AFFE_VARC= mcfac2,)
+
+
+
+
 #------------------------------------------------------------------
 #
 #     --- commande AFFE_CHAR_MECA ---
@@ -225,7 +273,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
   _conlim = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
 #
 #     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique :  pres_rep, effet de fond 
+#         chargement mecanique :  pres_rep, effet de fond
 #
   if PRES_REP!=None :
     motscles={}
@@ -243,7 +291,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
     _chpres = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
 #
 #     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique : torseur d efforts 
+#         chargement mecanique : torseur d efforts
 #
   if TORS_P1!=None :
     _chtor = [None]*6
@@ -267,8 +315,6 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 #
   mcfex=[]  # mot clé facteur EXCIT
   mcfex.append(_F(CHARGE=_conlim,))
-  if ECHANGE!=None :
-     mcfex.append(_F(CHARGE=chmeth,))
   if PRES_REP!=None:
     if PRES_REP['FONC_MULT']!=None :
       mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
@@ -322,7 +368,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
   motscles  ['INCREMENT'    ] =dIncrem
   self.DeclareOut('nomres',self.sd)
   nomres = STAT_NON_LINE( MODELE     = modele ,
-                          CHAM_MATER = affmat ,
+                          CHAM_MATER = affmth ,
                           CARA_ELEM  = carael ,
                           INFO       = INFO   , **motscles)
 #
@@ -341,7 +387,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 #
 #     --- post traitement sous-epaisseurs:  ligaments  ---
 #
-     if mc_IMPR_TABLE!=None:       
+     if mc_IMPR_TABLE!=None:
 #
       SECT=('MI','TU','GV')
       LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
@@ -361,14 +407,14 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 #     de la sous-epaisseur
 #
       lgrno=[]
-      for tgrno in l_grno : 
+      for tgrno in l_grno :
         if tgrno[0][:3] in ('CIR','LON')    : lgrno.append(tgrno[0])
         elif tgrno[0][:5]=='PCENT'          : lgrno.append(tgrno[0])
         elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
 #
       motscles={}
       motscles['ACTION']=[]
-      for grno in lgrno : 
+      for grno in lgrno :
          motscles['ACTION'].append(_F(RESULTAT=nomres,
                                       NOM_CHAM='SIEF_ELNO_ELGA',
                                       TOUT_CMP='OUI',
@@ -384,7 +430,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
 #
       motscles={}
       motscles['ACTION']=[]
-      for tgrno in lgrno : 
+      for tgrno in lgrno :
          motscles['ACTION'].append(_F(RESULTAT=nomres,
                                       NOM_CHAM='SIEF_ELNO_ELGA',
                                       INTITULE=tgrno,
@@ -392,7 +438,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
                                       INVARIANT='OUI',
                                       OPERATION='EXTRACTION',))
       motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-      
+
       tablig[2]=POST_RELEVE_T(**motscles)
 #
       motscles={}
@@ -402,7 +448,7 @@ def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MA
       collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
 
       motscles['ACTION']=[]
-      for tgrno in lgrno : 
+      for tgrno in lgrno :
          if tgrno[:3]!='LON' :
           if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
           else                                   : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
index ac1b2f6605474e5bf8a76b38cccf27f112f2b5ee..e8a7eb86ecba645bda6429e7bb743589e5eee2a6 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_aspic_calc_ops Macro  DATE 31/10/2006   AUTEUR REZETTE C.REZETTE 
+#@ MODIF macr_aspic_calc_ops Macro  DATE 09/05/2007   AUTEUR REZETTE C.REZETTE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -133,14 +133,13 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C
                                            PHENOMENE   ='THERMIQUE',
                                            MODELISATION='3D' )       )
 #
-#     --- commande AFFE_MATERIAU ---
+#     --- commande AFFE_MATERIAU (thermique)---
 #
-  if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
   mcfact=[]
   for mater in mc_AFFE_MATERIAU :
      if mater['TOUT']!=None : mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
      else                   : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
-  affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+  __affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
                           MODELE   = modele ,
                           AFFE     = mcfact    )
 #
@@ -178,14 +177,33 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C
      if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
      mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
      resuth = THER_LINEAIRE( MODELE     = __modthe ,
-                             CHAM_MATER = affmat ,
+                             CHAM_MATER = __affmat ,
                              TEMP_INIT  = _F(STATIONNAIRE='OUI',),
                              EXCIT      = _F(CHARGE=__chther,),
                              INCREMENT  = mcfact, )
 #
-     if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
-     chmeth = AFFE_CHAR_MECA( MODELE        = modele ,
-                              TEMP_CALCULEE = resuth )
+#     --- commande AFFE_MATERIAU (mécanique)---
+#
+  if CHAM_MATER!=None : self.DeclareOut('affmth',CHAM_MATER)
+  indther=0
+  if ECHANGE!=None and RESU_THER!=None : indther=1
+  mcfact=[]
+  mcfac2=[]
+  for mater in mc_AFFE_MATERIAU :
+     if mater['TOUT']!=None : 
+       mcfact.append(_F(TOUT    =mater['TOUT'    ],MATER=mater['MATER'],))
+       if indther==1:
+         mcfac2.append(_F(NOM_VARC='TEMP',TOUT='OUI',
+                        EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
+     else: 
+       mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],))
+       if indther==1:
+         mcfac2.append(_F(NOM_VARC='TEMP',GROUP_MA=mater['GROUP_MA'],
+                        EVOL=resuth,NOM_CHAM='TEMP',VALE_REF=mater['TEMP_REF']),)
+  affmth = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+                          MODELE   = modele ,
+                          AFFE     = mcfact,
+                          AFFE_VARC= mcfac2,)
 #
 #     --- commande AFFE_CHAR_MECA ---
 #         condition aux limites
@@ -279,8 +297,6 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C
 #
   mcfex=[]  # mot clé facteur EXCIT
   mcfex.append(_F(CHARGE=_conlim,))
-  if ECHANGE!=None :
-     mcfex.append(_F(CHARGE=chmeth,))
   if PRES_REP['FONC_MULT']!=None :
      mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
   else :
@@ -341,7 +357,7 @@ def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,C
   motscles  ['INCREMENT'    ] =dIncrem
   self.DeclareOut('nomres',self.sd)
   nomres = STAT_NON_LINE( MODELE     = modele ,
-                          CHAM_MATER = affmat ,
+                          CHAM_MATER = affmth ,
                           CARA_ELEM  = carael ,
                           INFO       = INFO   , **motscles)
 #
index 95ac8187b0c3a781c5efc8dc13e01abaf07bd844..e448efd6d6fa81af64cba884f0ad03c5e3d83765 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_cabri_calc_ops Macro  DATE 10/07/2006   AUTEUR LEBOUVIE F.LEBOUVIER 
+#@ MODIF macr_cabri_calc_ops Macro  DATE 09/05/2007   AUTEUR REZETTE C.REZETTE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -111,9 +111,7 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
 
 
 
-   # Affectation des materiaux
-   if CHAM_MATER != None:
-      self.DeclareOut('_cham',CHAM_MATER)
+   # Affectation des materiaux (thermique)
    motscles={}
    motscles['AFFE']=[]
    for mat in affemateriau:
@@ -128,7 +126,7 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                                     MATER = mat['MATER'],
                                     TEMP_REF = mat['TEMP_REF'],) )
       
-   _cham = AFFE_MATERIAU(MAILLAGE=mail,
+   __cham = AFFE_MATERIAU(MAILLAGE=mail,
                     MODELE=modther,
                     AFFE=motscles['AFFE'],
                    )
@@ -273,7 +271,7 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
       self.DeclareOut('resuther',RESU_THER)   
 
    resuther=THER_LINEAIRE(MODELE=modther,
-                  CHAM_MATER=_cham,
+                  CHAM_MATER=__cham,
                   EXCIT=(_F(CHARGE=cl_th1,),
                          _F(CHARGE=cl_th2,),
                          _F(CHARGE=cl_th3,),
@@ -281,7 +279,36 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                   INCREMENT=_F(LIST_INST=transi1,),
                   TEMP_INIT=_F(VALE=temp_ini,),
                   TITRE='CABRI THERMIQUE &DATE &HEURE',);
-   
+      # Affectation des materiaux (mécanique)
+   if CHAM_MATER != None:
+      self.DeclareOut('_chamt',CHAM_MATER)
+   motscles={}
+   motscles['AFFE']=[]
+   motscles['AFFE_VARC']=[]
+   for mat in affemateriau:
+      if mat['TOUT'] == None:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
+                                    MATER = mat['MATER'],) )
+         motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',GROUP_MA=mat['GROUP_MA'],
+                                         EVOL=resuther,NOM_CHAM='TEMP',
+                                         VALE_REF = mat['TEMP_REF'],))
+      else:
+         # Creation de mots-cles pour les AFFE_CHAR_MECA
+         motscles['AFFE'].append(_F(TOUT='OUI',
+                                    MATER = mat['MATER'],
+                                    TEMP_REF = mat['TEMP_REF'],) )
+         motscles['AFFE_VARC'].append(_F(NOM_VARC='TEMP',TOUT='OUI',
+                                         EVOL=resuther,NOM_CHAM='TEMP',
+                                         VALE_REF = mat['TEMP_REF'],))
+      
+   _chamt = AFFE_MATERIAU(MAILLAGE=mail,
+                    MODELE=modther,
+                    AFFE=motscles['AFFE'],
+                    AFFE_VARC=motscles['AFFE_VARC'],
+                   )
+
    #################################################################
    ########## CONDITIONS AUX LIMITES MECANIQUES
    #################################################################   
@@ -342,8 +369,6 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
             self.DeclareOut('cl_me7',m['CHARGE'])
          if m['TYPE']=="CONT_JOINT":
             self.DeclareOut('cl_me8',m['CHARGE'])
-         if m['TYPE']=="DEFO_THER":
-            self.DeclareOut('cl_me9',m['CHARGE'])
          if m['TYPE']=="SERR_ECROU_1":
             self.DeclareOut('cl_me10',m['CHARGE'])
          if m['TYPE']=="SERR_ECROU_2":
@@ -395,10 +420,6 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                         CONTACT=_F(GROUP_MA_MAIT='SCBJ',
                                    GROUP_MA_ESCL='SCJB',),
                         INFO=2,);
-   # Deformation thermique
-   cl_me9=AFFE_CHAR_MECA(  MODELE=modmeca,
-                           TEMP_CALCULEE=resuther,
-                           INFO=2,);
 
    # Serrage ecrou/goujon (pre-tensionnement)
    cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca,
@@ -497,7 +518,7 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
    # Parametres du calcul
    if comp_incr == 1:
       resumeca=STAT_NON_LINE(MODELE=modmeca,
-                  CHAM_MATER=_cham,
+                  CHAM_MATER=_chamt,
                   EXCIT=(_F(CHARGE=cl_me1,),
                          _F(CHARGE=cl_me2,),
                          _F(CHARGE=cl_me3,),
@@ -506,7 +527,6 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                          _F(CHARGE=cl_me6,), 
                          _F(CHARGE=cl_me7,), 
                          _F(CHARGE=cl_me8,), 
-                         _F(CHARGE=cl_me9,), 
                          _F(CHARGE=cl_me10,), 
                          _F(CHARGE=cl_me11,),                            
                   ),
@@ -518,7 +538,7 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                   TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
    else:
       resumeca=STAT_NON_LINE(MODELE=modmeca,
-                  CHAM_MATER=_cham,
+                  CHAM_MATER=_chamt,
                   EXCIT=(_F(CHARGE=cl_me1,),
                          _F(CHARGE=cl_me2,),
                          _F(CHARGE=cl_me3,),
@@ -527,7 +547,6 @@ def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
                          _F(CHARGE=cl_me6,), 
                          _F(CHARGE=cl_me7,), 
                          _F(CHARGE=cl_me8,), 
-                         _F(CHARGE=cl_me9,), 
                          _F(CHARGE=cl_me10,), 
                          _F(CHARGE=cl_me11,),                            
                   ),
index 3305c8181e6d12e87cf8377e65469d7efe07a81d..568a8cea5ba39ec672e652344b2386fb89007d6d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_lign_coupe_ops Macro  DATE 05/03/2007   AUTEUR GALENNE E.GALENNE 
+#@ MODIF macr_lign_coupe_ops Macro  DATE 22/05/2007   AUTEUR GALENNE E.GALENNE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -38,7 +38,7 @@ def crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,resin,mail,nomgrma):
        elif dime ==3 :
           LCMP=['DX','DY','DZ']
           TYPE_CHAM='VECT_3D'
-  elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):
+  elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'):
        if dime == 2:
           LCMP=['SIXX','SIYY','SIZZ','SIXY']
           TYPE_CHAM='TENS_2D'
@@ -47,72 +47,78 @@ def crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,resin,mail,nomgrma):
           TYPE_CHAM='TENS_3D'
 
 
-  if m['TYPE']=='SEGMENT':
-    # --- determination des angles nautiques
-    cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
-    cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
-    cx3=0.
-    if dime == 3:
-      cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
-    nvx=sqrt(cx1**2+cx2**2+cx3**2)
-    if abs(nvx) < epsi:
-       UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
-    cx1=cx1/nvx
-    cx2=cx2/nvx
-    cx3=cx3/nvx
-    cy1=m['VECT_Y'][0]
-    cy2=m['VECT_Y'][1]
-    cy3=0.
-    if dime == 3:
-      cy3=m['VECT_Y'][2]
-    nvy=sqrt(cy1**2+cy2**2+cy3**2)
-    if abs(nvy) < epsi:
-       UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
-    cy1=cy1/nvy
-    cy2=cy2/nvy
-    cy3=cy3/nvy
-    if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and  abs(cx3-cy3)<epsi) or \
-       (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and  abs(cx3+cy3)<epsi)):
-       UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
-    if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi  :
-      cz1=cx2*cy3-cx3*cy2
-      cz2=cx3*cy1-cx1*cy3
-      cz3=cx1*cy2-cx2*cy1
-      nvz=sqrt(cz1**2+cz2**2+cz3**2)
-      cz1=cz1/nvz
-      cz2=cz2/nvz
-      cz3=cz3/nvz
-      cy1=cz2*cx3-cz3*cx2
-      cy2=cz3*cx1-cz1*cx3
-      cy3=cz1*cx2-cz2*cx1
+  if m['TYPE']=='SEGMENT' and m['REPERE'] != 'CYLINDRIQUE' :
+  
+    if m['REPERE'] == 'LOCAL':
+      # --- determination des angles nautiques
+      cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
+      cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
+      cx3=0.
+      if dime == 3:
+        cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
+      nvx=sqrt(cx1**2+cx2**2+cx3**2)
+      if abs(nvx) < epsi:
+         UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
+      cx1=cx1/nvx
+      cx2=cx2/nvx
+      cx3=cx3/nvx
+      cy1=m['VECT_Y'][0]
+      cy2=m['VECT_Y'][1]
+      cy3=0.
+      if dime == 3:
+        cy3=m['VECT_Y'][2]
       nvy=sqrt(cy1**2+cy2**2+cy3**2)
+      if abs(nvy) < epsi:
+         UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
       cy1=cy1/nvy
       cy2=cy2/nvy
       cy3=cy3/nvy
-      UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
+      if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and  abs(cx3-cy3)<epsi) or \
+         (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and  abs(cx3+cy3)<epsi)):
+         UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
+      if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi  :
+        cz1=cx2*cy3-cx3*cy2
+        cz2=cx3*cy1-cx1*cy3
+        cz3=cx1*cy2-cx2*cy1
+        nvz=sqrt(cz1**2+cz2**2+cz3**2)
+        cz1=cz1/nvz
+        cz2=cz2/nvz
+        cz3=cz3/nvz
+        cy1=cz2*cx3-cz3*cx2
+        cy2=cz3*cx1-cz1*cx3
+        cy3=cz1*cx2-cz2*cx1
+        nvy=sqrt(cy1**2+cy2**2+cy3**2)
+        cy1=cy1/nvy
+        cy2=cy2/nvy
+        cy3=cy3/nvy
+        UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
               +'LE VECTEUR Y A ETE ORTHONORMALISE POUR VOUS')
-      UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
-    else:     
-      cz1=cx2*cy3-cx3*cy2
-      cz2=cx3*cy1-cx1*cy3
-      cz3=cx1*cy2-cx2*cy1
-    beta=0.
-    gamma=0.
-    if dime ==2:
-      alpha = atan2(cx2,cx1)
-    else:
-      if cx1**2 + cx2**2 > epsi :
-        alpha=atan2(cx2,cx1)
-        beta=asin(cx3)
-        gamma=atan2(cy3,cz3)
+        UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
+      else:     
+        cz1=cx2*cy3-cx3*cy2
+        cz2=cx3*cy1-cx1*cy3
+        cz3=cx1*cy2-cx2*cy1
+      beta=0.
+      gamma=0.
+      if dime ==2:
+        alpha = atan2(cx2,cx1)
       else:
-#        alpha=atan2(cy1,cz1)
-        alpha=atan2(-cy1,cy2)
-        beta=asin(cx3)
-        gamma=0.
-    alpha=alpha*180/pi
-    beta=beta*180/pi
-    gamma=gamma*180/pi
+        if cx1**2 + cx2**2 > epsi :
+          alpha=atan2(cx2,cx1)
+          beta=-asin(cx3)
+          gamma=atan2(cy3,cz3)
+        else:
+          alpha=atan2(-cy1,cy2)
+          beta=-asin(cx3)
+          gamma=0.
+      alpha=alpha*180/pi
+      beta=beta*180/pi
+      gamma=gamma*180/pi
+
+    elif m['REPERE'] == 'UTILISATEUR':
+      alpha=m['ANGL_NAUT'][0]
+      beta =m['ANGL_NAUT'][1]
+      gamma=m['ANGL_NAUT'][2]
 
     motscles={}
     motscles['MODI_CHAM']=[]
@@ -128,29 +134,183 @@ def crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,resin,mail,nomgrma):
     
     
   if m['TYPE']=='ARC':
+    if m['REPERE'] == 'CYLINDRIQUE' :
+      motscles={}
+      motscles['MODI_CHAM']=[]
+      motscles['DEFI_REPERE']=[]
+      motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
+      ORIGINE=[]
+      ORIGINE.append(m['CENTRE'][0])
+      ORIGINE.append(m['CENTRE'][1])
+      if dime ==3:
+        ORIGINE.append(m['CENTRE'][2])
+        AXE_Z=[]
+        AXE_Z.append(m['DNOR'][0])
+        AXE_Z.append(m['DNOR'][1])
+        AXE_Z.append(m['DNOR'][2])
+        motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,AXE_Z=AXE_Z),)
+      elif dime ==2:
+        motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,),)
+      __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+    else :
+         UTMESS("F","MACR_LIGN_COUPE","LE TYPE "+m['TYPE']+" N'EST PAS COHERENT AVEC LE CHOIX DU REPERE ( REPERE "+m['REPERE']+" ).")
+
+
+
+  if m['TYPE'][:5]=='GROUP' or m['TYPE']=='SEGMENT':
+  
+    if m['TYPE'][:5]=='GROUP' and m['REPERE'] == 'LOCAL':
+     # determination du repère local (v1,v2,v3)    
+     # ---------------------------------------
+      noma=mail.nom
+      collgrma=aster.getcolljev(noma.ljust(8)+'.GROUPEMA')
+      collcnx =aster.getcolljev(noma.ljust(8)+'.CONNEX')
+      coord   =aster.getvectjev(noma.ljust(8)+'.COORDO    .VALE')
+      cnom    =aster.getvectjev(noma.ljust(8)+'.NOMNOE')
+      
+      numa=collgrma[nomgrma.ljust(8)]
+      dictu={}
+#     initialisations
+      for ima in numa:
+        n1=collcnx[ima][0]
+        n2=collcnx[ima][1]
+        dictu[n1]=[]
+        dictu[n2]=[]
+#     determination du vecteur tangent (v1) + normalisation
+      for ima in numa:
+        vectu1=[]
+        vectu2=[]
+        n1=collcnx[ima][0]
+        n2=collcnx[ima][1]
+        ux=coord[3*(n2-1)]-coord[3*(n1-1)]
+        uy=coord[3*(n2-1)+1]-coord[3*(n1-1)+1]
+        vectu1.append(ux)
+        vectu1.append(uy)
+        vectu2.append(ux)
+        vectu2.append(uy)
+        if dime ==3 : 
+          uz=coord[3*(n2-1)+2]-coord[3*(n1-1)+2]
+          vectu1.append(uz)
+          vectu2.append(uz)
+        dictu[n1].append(vectu1)
+        dictu[n2].append(vectu2)
+      for i in dictu:
+        if len(dictu[i])==2:
+          dictu[i][0][0]=dictu[i][0][0]+dictu[i][1][0]
+          dictu[i][0][1]=dictu[i][0][1]+dictu[i][1][1]
+          if dime==3:dictu[i][0][2]=dictu[i][0][2]+dictu[i][1][2]
+          del dictu[i][1]
+      for i in dictu:
+        if dime==2:
+          norm=sqrt(dictu[i][0][0]**2+dictu[i][0][1]**2)
+          dictu[i][0][0]=dictu[i][0][0]/norm
+          dictu[i][0][1]=dictu[i][0][1]/norm
+        elif dime==3:
+          norm=sqrt(dictu[i][0][0]**2+dictu[i][0][1]**2+dictu[i][0][2]**2)
+          dictu[i][0][0]=dictu[i][0][0]/norm
+          dictu[i][0][1]=dictu[i][0][1]/norm
+          dictu[i][0][2]=dictu[i][0][2]/norm
+#     determination du vecteur normal (v2):
+#     on projete VECT_Y sur le plan orthogonal au vecteur v1.
+#     (ce vecteur normal est obtenu par 2 produits vectoriels successifs en 3D)
+      if dime==3:
+        norm=sqrt(m['VECT_Y'][0]**2+m['VECT_Y'][1]**2+m['VECT_Y'][2]**2)
+        tmpy=[m['VECT_Y'][0]/norm,m['VECT_Y'][1]/norm,m['VECT_Y'][2]/norm]
+      j=0
+      __resu=[None]*(len(dictu)+1)
+      __resu[0]=resin
+      for i in dictu:
+          j=j+1
+          vecty=[]
+          if dime==2:
+             vecty.append(-dictu[i][0][1])
+             vecty.append(dictu[i][0][0])
+             dictu[i].append(vecty)
+          elif dime==3:
+             # v3= v1 vectoriel vect_y
+             vectz=[]
+             vectz.append(dictu[i][0][1]*tmpy[2]-dictu[i][0][2]*tmpy[1])
+             vectz.append(dictu[i][0][2]*tmpy[0]-dictu[i][0][0]*tmpy[2])
+             vectz.append(dictu[i][0][0]*tmpy[1]-dictu[i][0][1]*tmpy[0])
+             normz=sqrt(vectz[0]**2+vectz[1]**2+vectz[2]**2)
+             vectz[0]=vectz[0]/normz
+             vectz[1]=vectz[1]/normz
+             vectz[2]=vectz[2]/normz
+             vecty.append(vectz[1]*dictu[i][0][2]-vectz[2]*dictu[i][0][1])
+             vecty.append(vectz[2]*dictu[i][0][0]-vectz[0]*dictu[i][0][2])
+             vecty.append(vectz[0]*dictu[i][0][1]-vectz[1]*dictu[i][0][0])
+             normy=sqrt(vecty[0]**2+vecty[1]**2+vecty[2]**2)
+             vecty[0]=vecty[0]/normy
+             vecty[1]=vecty[1]/normy
+             vecty[2]=vecty[2]/normy
+             dictu[i].append(vecty)
+             dictu[i].append(vectz)
+          cx1=dictu[i][0][0]
+          cx2=dictu[i][0][1]
+          cy1=dictu[i][1][0]
+          cy2=dictu[i][1][1]
+          if dime==3:
+             cx3=dictu[i][0][2]
+             cy3=dictu[i][1][2]
+             cz1=dictu[i][2][0]
+             cz2=dictu[i][2][1]
+             cz3=dictu[i][2][2]
+
+     # determination des angles nautiques (alpha,beta,gamma)
+     # ----------------------------------------------------
+          beta=0.
+          gamma=0.
+          if dime ==2:
+            alpha = atan2(cx2,cx1)
+          else:
+            if cx1**2 + cx2**2 > epsi :
+              alpha=atan2(cx2,cx1)
+              beta=-asin(cx3)
+              gamma=atan2(cy3,cz3)
+            else:
+              alpha=atan2(-cy1,cy2)
+              beta=-asin(cx3)
+              gamma=0.
+          alpha=alpha*180/pi
+          beta=beta*180/pi
+          gamma=gamma*180/pi
+          motscles={}
+          motscles['MODI_CHAM']=[]
+          motscles['DEFI_REPERE']=[]
+          noeu=dictu.keys()
+          motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM,NOEUD=cnom[noeu[j-1]-1]),)
+          ANGL_NAUT=[]
+          ANGL_NAUT.append(alpha)
+          if dime ==3:
+            ANGL_NAUT.append(beta)
+            ANGL_NAUT.append(gamma)
+          motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
+          __resu[j]=MODI_REPERE(RESULTAT=__resu[j-1],**motscles)
+      __remodr=__resu[j]
+
+  
     motscles={}
     motscles['MODI_CHAM']=[]
     motscles['DEFI_REPERE']=[]
     motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
-    ORIGINE=[]
-    ORIGINE.append(m['CENTRE'][0])
-    ORIGINE.append(m['CENTRE'][1])
-    if dime ==3:
-      vy = m['VECT_Y']
-      dn = m['DNOR']
-      if vy != dn :
-        message = 'AVEC TYPE=ARC, IL FAUT OBLIGATOIREMENT QUE VECT_Y SOIT EGAL A DNOR \n POUR EXPRIMER LE RESULTAT DANS LE REPERE LOCAL. \n'
-        message = message +' ON POURSUIT LE CALCUL EN PRENANT VECT_Y = DNOR.'
-        UTMESS('A','MACR_LIGN_COUPE',message)
-      ORIGINE.append(m['CENTRE'][2])
-      AXE_Z=[]
-      AXE_Z.append(m['DNOR'][0])
-      AXE_Z.append(m['DNOR'][1])
-      AXE_Z.append(m['DNOR'][2])
-      motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,AXE_Z=AXE_Z),)
-    elif dime ==2:
-      motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=ORIGINE,),)
-    __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+    if m['REPERE'] == 'CYLINDRIQUE' :
+      if dime ==3:
+        motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=m['ORIGINE'],AXE_Z=m['AXE_Z']),)
+      elif dime ==2:
+        motscles['DEFI_REPERE'].append(_F(REPERE='CYLINDRIQUE',ORIGINE=m['ORIGINE'],),)
+      __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+    elif m['REPERE'] == 'UTILISATEUR':
+      alpha=m['ANGL_NAUT'][0]
+      beta =m['ANGL_NAUT'][1]
+      gamma=m['ANGL_NAUT'][2]
+      ANGL_NAUT=[]
+      ANGL_NAUT.append(alpha)
+      if dime ==3:
+        ANGL_NAUT.append(beta)
+        ANGL_NAUT.append(gamma)
+      motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
+      __remodr=MODI_REPERE(RESULTAT=resin,**motscles)
+
 
   return __remodr
 
@@ -187,7 +347,22 @@ def crea_noeu_lig_coup(dimension,pt1,pt2,anglj,dnor):
     y=pt2[1]+b*cos(anglr)+sin(anglr)*(a*d3-c*d1)/d
     z=pt2[2]+c*cos(anglr)+sin(anglr)*(b*d1-a*d2)/d
     return x,y,z
+########################################################################
+# determination de la distance min entre 2 points consécutifs de la ligne de coupe
 
+def dist_min_deux_points(mail):
+  from math import sqrt  
+  import aster
+  nno=aster.getvectjev(mail.nom.ljust(8)+'.DIME')[0]
+  l_coor1=[]
+  l_coor2=[]
+  for i in range(nno-1):
+    l_coor1=aster.getvectjev(mail.nom.ljust(8)+'.COORDO    .VALE',3*(i),3)
+    l_coor2=aster.getvectjev(mail.nom.ljust(8)+'.COORDO    .VALE',3*(i+1),3)
+    d=sqrt( (l_coor1[0]-l_coor2[0])**2+(l_coor1[1]-l_coor2[1])**2+(l_coor1[2]-l_coor2[2])**2)
+    if i == 0 : dist=d
+    else      : dist=min(d,dist)
+  return dist
 ########################################################################
 # script PYTHON de creation d un maillage de ligne de coupe
 
@@ -339,8 +514,9 @@ def crea_mail_lig_coup(dimension,lignes,groups,arcs):
 
 
 ########################################################################
-def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
-               MODELE,GROUP_MA,MAILLE,**args):
+def macr_lign_coupe_ops(self,RESULTAT,CHAM_GD,UNITE_MAILLAGE,LIGN_COUPE,
+              NOM_CHAM,MODELE,**args):
+
   """
      Ecriture de la macro MACR_LIGN_COUPE
   """
@@ -360,21 +536,68 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
   POST_RELEVE_T  =self.get_cmd('POST_RELEVE_T')
   CREA_TABLE     =self.get_cmd('CREA_TABLE')
   MODI_REPERE    =self.get_cmd('MODI_REPERE')
+  CREA_RESU      =self.get_cmd('CREA_RESU')
+  CREA_MAILLAGE  =self.get_cmd('CREA_MAILLAGE')
 
   # La macro compte pour 1 dans la numerotation des commandes
   self.set_icmd(1)
-  
-  nomresu=RESULTAT.nom
-  l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
-  n_modele=string.strip(l_modele[0])
-  if n_modele=='' :
-     if MODELE==None:
-       UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
-     else : n_modele=MODELE.nom
+
+  mcORDR={}
+
+  if RESULTAT != None:
+    if args['NUME_ORDRE'] != None :
+      mcORDR['NUME_ORDRE']=args['NUME_ORDRE']
+    elif args['LIST_ORDRE']  != None:
+      mcORDR['LIST_ORDRE']=args['LIST_ORDRE']
+    elif args['INST']  != None:
+      mcORDR['INST']=args['INST']
+    elif args['INST']  != None:
+      mcORDR['INST']=args['INST']
+    elif args['LIST_INST']  != None:
+      mcORDR['LIST_INST']=args['LIST_INST']
+    else :
+      mcORDR['TOUT_ORDRE']='OUI'
+
+    nomresu=RESULTAT.nom
+    l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
+    n_modele=string.strip(l_modele[0])
+    if n_modele=='' :
+      if MODELE==None:
+        UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
+      else : n_modele=MODELE.nom
+
+  elif CHAM_GD != None:
+    mcORDR['TOUT_ORDRE']='OUI'
+    if MODELE==None:
+      UTMESS('F', "MACR_LIGN_COUPE", "veuillez renseigner le MODELE si vous utilisez un CHAM_GD ")
+    else : n_modele=MODELE.nom
+    # récupération de la grandeur du champ
+    n_cham=CHAM_GD.nom
+    catagd=aster.getvectjev("&CATA.GD.NOMGD")
+    desc=aster.getvectjev(string.ljust(n_cham,19)+'.DESC')
+    if desc!= None:
+      nomgd=catagd[desc[0]-1]
+    else:
+      celd=aster.getvectjev(string.ljust(n_cham,19)+'.CELD')
+      nomgd=catagd[celd[0]-1]
+    # détermination du type de résultat à créer
+    if   nomgd[:6] == 'TEMP_R' : TYPE_RESU='EVOL_THER'
+    elif nomgd[:6] == 'DEPL_R' : TYPE_RESU='EVOL_ELAS'
+    elif nomgd[:6] == 'SIEF_R' :
+       if   NOM_CHAM[:4]=='SIGM':TYPE_RESU='EVOL_ELAS'
+       elif NOM_CHAM[:4]=='SIEF':TYPE_RESU='EVOL_NOLI'
+    # création d'un concept résultat à partir du champ CHAM_GD
+    __resuch=CREA_RESU(OPERATION='AFFE',
+                       NOM_CHAM=NOM_CHAM, TYPE_RESU=TYPE_RESU,
+                       AFFE=_F(CHAM_GD=CHAM_GD,INST=0.),)
+    RESULTAT=__resuch
   l_mailla=aster.getvectjev(n_modele.ljust(8)+'.MODELE    .NOMA')
   n_mailla=string.strip(l_mailla[0])
   dime=aster.getvectjev(n_mailla.ljust(8)+'.DIME')[5]
-  collgrno=aster.getcolljev(n_mailla.ljust(8)+'.GROUPENO')
+  collgrma=aster.getcolljev(n_mailla.ljust(8)+'.GROUPEMA')
+  typma=aster.getvectjev(n_mailla.ljust(8)+'.TYPMAIL')
+  connex=aster.getcolljev(n_mailla.ljust(8)+'.CONNEX')
+  ltyma =aster.getvectjev("&CATA.TM.NOMTM")
 
   lignes=[]
   groups=[]
@@ -399,6 +622,7 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
            arcs.append((m['COOR_ORIG'],m['CENTRE'],m['NB_POINTS'],m['ANGLE'],m['DNOR']))
       elif m['TYPE']=='GROUP_NO':
         ngrno=m['GROUP_NO'].ljust(8).upper()
+        collgrno=aster.getcolljev(n_mailla.ljust(8)+'.GROUPENO')  
         if ngrno not in collgrno.keys() :
           UTMESS('F', "MACR_LIGN_COUPE", "le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
         grpn=collgrno[ngrno]
@@ -406,6 +630,26 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
         for node in grpn:
           l_coor_group.append(aster.getvectjev(n_mailla.ljust(8)+'.COORDO    .VALE',3*(node-1),3))
         groups.append(l_coor_group)
+      elif m['TYPE']=='GROUP_MA':
+        ngrma=m['GROUP_MA'].ljust(8).upper()
+        if ngrma not in collgrma.keys() :
+          UTMESS('F', "MACR_LIGN_COUPE", "le group_ma "+ngrma+" n est pas dans le maillage "+n_mailla)
+        grpm=collgrma[ngrma]
+        for ma in grpm:
+          if ltyma[typma[ma-1]-1][:3] != 'SEG' :
+             nomma=aster.getvectjev(n_mailla.ljust(8)+'.NOMMAI')
+             UTMESS('F', "MACR_LIGN_COUPE", "le group_ma "+ngrma+" contient la maille "+
+                    nomma[ma-1]+"qui n'est pas de type SEG.")
+        __mailla=CREA_MAILLAGE(MAILLAGE= m['MAILLAGE'],)
+        __mailla=DEFI_GROUP( reuse=__mailla,MAILLAGE= __mailla,
+                            CREA_GROUP_NO=_F(OPTION='NOEUD_ORDO',NOM=str(m['GROUP_MA']),GROUP_MA=m['GROUP_MA']),)
+        collgrno=aster.getcolljev(__mailla.nom.ljust(8)+'.GROUPENO')  
+        grpn=collgrno[str(m['GROUP_MA']).ljust(8)]
+        l_coor_group=[ngrma,]
+        for node in grpn:
+          l_coor_group.append(aster.getvectjev(n_mailla.ljust(8)+'.COORDO    .VALE',3*(node-1),3))
+        groups.append(l_coor_group)
+
   
   if arcs!=[] and (lignes!=[] or groups!=[]) :
     message = 'On ne peut pas combiner des lignes de coupes de type ARC avec des lignes de coupes SEGMENT ou GROUP_NO. \n'
@@ -426,18 +670,21 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
   UL.EtatInit(UNITE_MAILLAGE)
 
   # Lecture du maillage de seg2 contenant toutes les lignes de coupe
-
   __macou=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,);
-
+  
+  # distance min entre 2 points de la ligne de coupe (utile pour PROJ_CHAMP)
+  dmin=dist_min_deux_points(__macou)
+  
   motscles={}
   iocc=1
   motscles['CREA_GROUP_NO']=[]
   for m in LIGN_COUPE :
-      if m['TYPE'] != 'GROUP_NO' :
+      if m['TYPE'] in ('GROUP_NO','GROUP_MA') :
+        motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=m[m['TYPE']].ljust(8).upper(),) )
+      else :
         motscles['CREA_GROUP_NO'].append(_F(GROUP_MA='LICOU'+str(iocc),) )
         iocc=iocc+1
-      elif m['GROUP_NO']!=None :
-        motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=m['GROUP_NO'].ljust(8).upper(),) )
+
   __macou=DEFI_GROUP( reuse =__macou , MAILLAGE=__macou , **motscles );
 
   if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
@@ -453,97 +700,140 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
 
   motscles={}
   motscles['VIS_A_VIS']=[]
-  if GROUP_MA != None :
-    motscles['VIS_A_VIS'].append(_F(GROUP_MA_1 = GROUP_MA,TOUT_2='OUI'),)     
-  if MAILLE != None :
-    motscles['VIS_A_VIS'].append(_F(MAILLE_1 = MAILLE,TOUT_2='OUI'),)     
-    
+  motscles[mcORDR.keys()[0]]=mcORDR.values()[0]
+  if args['VIS_A_VIS']!=None:
+    for v in args['VIS_A_VIS']:
+      if v['GROUP_MA_1']!=None:
+         motscles['VIS_A_VIS'].append(_F(GROUP_MA_1 = v['GROUP_MA_1'],TOUT_2='OUI'),) 
+      elif v['MAILLE_1']!=None:
+         motscles['VIS_A_VIS'].append(_F(MAILLE_1 = v['MAILLE_1'],TOUT_2='OUI'),)  
+
   if n_modele in self.get_global_contexte().keys() : MODELE_1=self.get_global_contexte()[n_modele]
   else                                             : MODELE_1=self.jdc.current_context[n_modele]
   __recou=PROJ_CHAMP(METHODE='ELEM',
                      RESULTAT=RESULTAT,
                      MODELE_1=MODELE_1,
+                     DISTANCE_MAX=dmin*0.001,
                      MODELE_2=__mocou,
                      TYPE_CHAM='NOEU',
-                     NOM_CHAM=NOM_CHAM, **motscles);     
+                     NOM_CHAM=NOM_CHAM, **motscles);
 
-
-
-  # Expression des contraintes aux noeuds ou des déplacements dans le repere local
   __remodr=__recou
   icham=0
   ioc2=0
-  jarc=0
   mcACTION=[]
   angtab=[]
+  
   if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
-   if  NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):icham=1
+  
+   if  NOM_CHAM in ('DEPL','SIEF_ELNO_ELGA','SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU','SIGM_ELNO_DEPL'):icham=1
    for m in LIGN_COUPE :
-      if m['TYPE'] =='ARC' : jarc=jarc+1
-      if m['VECT_Y'] !=None and icham==1:
-        if m['TYPE'] =='ARC' :  nomgrma=arcgma[jarc-1]
-        else                 :  nomgrma=' '
-        __remodr=crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,__recou,__macou,nomgrma)
 
-        if m['TYPE'] != 'GROUP_NO' :
-          ioc2=ioc2+1
-          groupe='LICOU'+str(ioc2)
-          if m['INTITULE'] !=None : intitl=m['INTITULE']
-          else                    : intitl='l.coupe'+str(ioc2)
-        elif m['GROUP_NO']!=None :
-          groupe=m['GROUP_NO'].ljust(8).upper()
-          if m['INTITULE'] !=None : intitl=m['INTITULE']
-          else                    : intitl=groupe
-        mcACTION.append( _F(INTITULE  = intitl,
+     motscles={}
+     motscles['OPERATION']=m['OPERATION']
+     if m['NOM_CMP']!=None:
+       motscles['NOM_CMP']=m['NOM_CMP']
+       if m['TRAC_NOR']!=None:
+          motscles['TRAC_NOR']=m['TRAC_NOR']
+       elif m['TRAC_DIR']!=None:
+          motscles['TRAC_DIR']=m['TRAC_DIR']
+          motscles['DIRECTION']=m['DIRECTION']
+     elif m['INVARIANT']!=None:
+       motscles['INVARIANT']=m['INVARIANT']
+     elif m['RESULTANTE']!=None:
+       motscles['RESULTANTE']=m['RESULTANTE']
+     elif m['ELEM_PRINCIPAUX']!=None:
+       motscles['ELEM_PRINCIPAUX']=m['ELEM_PRINCIPAUX']
+     else:
+       motscles['TOUT_CMP']='OUI'
+
+     # on définit le groupe de noeud pour post_releve_t
+     if m['TYPE'] in ('GROUP_NO','GROUP_MA'):
+         groupe=m[m['TYPE']].ljust(8).upper()
+         nomgrma=groupe
+     else: 
+         ioc2=ioc2+1
+         groupe='LICOU'+str(ioc2)
+         nomgrma=' '
+
+     # on definit l'intitulé
+     if m['INTITULE'] !=None                    : intitl=m['INTITULE']
+     elif  m['TYPE'] in ('GROUP_NO','GROUP_MA') : intitl=groupe
+     else                                       : intitl='l.coupe'+str(ioc2)
+
+
+     # Expression des contraintes aux noeuds ou des déplacements dans le repere local
+     if m['REPERE'] != 'GLOBAL':
+
+        if  icham==1:
+
+          if m['REPERE']=='POLAIRE':
+            mcACTION.append( _F(INTITULE  = intitl,
                             RESULTAT  = __remodr,
+                            REPERE    = m['REPERE'],
                             GROUP_NO  = groupe,
-                            NOM_CHAM  = NOM_CHAM,
-                            TOUT_CMP  = 'OUI',
-                            OPERATION = 'EXTRACTION', )           )
+                            NOM_CHAM  = NOM_CHAM,**motscles ),)
+          else:
+            __remodr=crea_resu_local(dime,MODI_REPERE,NOM_CHAM,m,__recou,__macou,nomgrma)
+            mcACTION.append( _F(INTITULE  = intitl,
+                            RESULTAT  = __remodr,
+                            GROUP_NO  = groupe,
+                            NOM_CHAM  = NOM_CHAM,**motscles ),)
 
-      else:
+        else:
+          UTMESS('A','MACR_LIGN_COUPE','LE CHAMP '+NOM_CHAM+' N EST PAS TRAITE PAR MACR_LIGNE_COUPE EN REPERE '+m['REPERE']+'.'
+                     +'LE CALCUL EST EFFECTUE EN REPERE GLOBAL.') 
 
+          mcACTION.append( _F(INTITULE  = intitl,
+                            RESULTAT  = __recou,
+                            GROUP_NO  = groupe,
+                            NOM_CHAM  = NOM_CHAM,**motscles ),)
 
-  # Production d'une table pour toutes les lignes de coupe
-        if m['VECT_Y'] !=None:
-           UTMESS('A','MACR_LIGN_COUPE','LE CHAMP '+NOM_CHAM+' N EST PAS TRAITE PAR MACR_LIGNE_COUPE EN REPERE LOCAL.'
-                   +'LE CALCUL EST EFFECTUE EN REPERE GLOBAL.')
-
-        if m['TYPE'] != 'GROUP_NO' :
-           ioc2=ioc2+1
-           groupe='LICOU'+str(ioc2)
-           if m['INTITULE'] !=None : intitl=m['INTITULE']
-           else                    : intitl='l.coupe'+str(ioc2)
-        elif m['GROUP_NO']!=None :
-           groupe=m['GROUP_NO'].ljust(8).upper()
-           if m['INTITULE'] !=None : intitl=m['INTITULE']
-           else                    : intitl=groupe
-        mcACTION.append( _F(INTITULE  = intitl,
+     # Expression des contraintes aux noeuds ou des déplacements dans le repere global
+     else:
+  
+          mcACTION.append( _F(INTITULE  = intitl,
                             RESULTAT  = __recou,
                             GROUP_NO  = groupe,
-                            NOM_CHAM  = NOM_CHAM,
-                            TOUT_CMP  = 'OUI',
-                            OPERATION = 'EXTRACTION', )           )
+                            NOM_CHAM  = NOM_CHAM,**motscles ),)
+
+  
   elif AsType(RESULTAT).__name__ in ('evol_ther',) :
 
      for m in LIGN_COUPE :
-        if m['TYPE'] != 'GROUP_NO' :
+
+        motscles={}
+        motscles['OPERATION']=m['OPERATION']
+        if m['NOM_CMP']!=None:
+          motscles['NOM_CMP']=m['NOM_CMP']
+          if m['TRAC_NOR']!=None:
+             motscles['TRAC_NOR']=m['TRAC_NOR']
+          elif m['TRAC_DIR']!=None:
+             motscles['TRAC_DIR']=m['TRAC_DIR']
+             motscles['DIRECTION']=m['DIRECTION']
+        elif m['INVARIANT']!=None:
+          motscles['INVARIANT']=m['INVARIANT']
+        elif m['RESULTANTE']!=None:
+          motscles['RESULTANTE']=m['RESULTANTE']
+        elif m['ELEM_PRINCIPAUX']!=None:
+          motscles['ELEM_PRINCIPAUX']=m['ELEM_PRINCIPAUX']
+        else:
+          motscles['TOUT_CMP']='OUI'
+
+        if m['TYPE'] not in ('GROUP_NO','GROUP_MA') :
           ioc2=ioc2+1
           groupe='LICOU'+str(ioc2)
           if m['INTITULE'] !=None : intitl=m['INTITULE']
           else                    : intitl='l.coupe'+str(ioc2)
-        elif m['GROUP_NO']!=None :
-          groupe=m['GROUP_NO'].ljust(8).upper()
+        else:
+          groupe=m[m['TYPE']].ljust(8).upper()
           if m['INTITULE'] !=None : intitl=m['INTITULE']
           else                    : intitl=groupe
         mcACTION.append( _F(INTITULE  = intitl,
                             RESULTAT  = __recou,
                             GROUP_NO  = groupe,
-                            NOM_CHAM  = NOM_CHAM,
-                            TOUT_CMP  = 'OUI',
-                            OPERATION = 'EXTRACTION', )           )
+                            NOM_CHAM  = NOM_CHAM, **motscles ),)
  
   __tabitm=POST_RELEVE_T(ACTION=mcACTION,);
 
@@ -567,8 +857,11 @@ def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
     dictab['ANGLE']=tmp
 
 ###
-  del dictab['NOEUD']
-  del dictab['RESU']
+
+  if 'RESU' in dictab.para:
+    del dictab['RESU']
+  if 'NOEUD' in dictab.para:
+    del dictab['NOEUD']
   dprod = dictab.dict_CREA_TABLE()
 
   nomres=CREA_TABLE(**dprod)
index bd7438bfb21b2188094b21a6d2ed94abb94c3b29..0efa2e46f47ac2a719ba5009036fabaf8eb15548 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macr_recal_ops Macro  DATE 26/03/2007   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF macr_recal_ops Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -32,12 +32,15 @@ fichier_export = None
 mode_python = False
 type_fonctionnelle = 'float'
 
-# --------------------------------------------------------------------------------------------------
-def UTMESS(code,sprg,texte):
-   fmt='\n <%s> <%s> %s\n\n'
-   if INFO>0 or code=='F': print fmt % (code,sprg,texte)
-   if code=='F':
-      sys.exit()
+
+try:
+   import Utilitai.Utmess
+   from Utilitai.Utmess import UTMESS
+except ImportError:
+   def UTMESS(code,sprg,texte):
+      fmt='\n <%s> <%s> %s\n\n'
+      print fmt % (code,sprg,texte)
+      if code=='F': sys.exit()
 
 
 # --------------------------------------------------------------------------------------------------
@@ -119,7 +122,7 @@ def macr_recal_externe( RESU_EXP, LIST_PARA, RESU_CALC, UNITE_ESCL=3, POIDS=None
 
    # Mot-cle GRAPHIQUE
    if GRAPHIQUE:
-      GRAPHIQUE0 = {'INTERACTIF': 'NON', 'AFFICHAGE': 'TOUTE_ITERATION', 'UNITE': 90, 'FORMAT': 'XMGRACE'}
+      GRAPHIQUE0 = {'PILOTE': '', 'AFFICHAGE': 'TOUTE_ITERATION', 'UNITE': 90, 'FORMAT': 'XMGRACE'}
       for k in GRAPHIQUE0.keys():
          if not GRAPHIQUE.has_key(k): GRAPHIQUE[k] = GRAPHIQUE0[k]
 
@@ -497,11 +500,12 @@ def macr_recal(UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC,
        L_J_init, erreur = Simul.multi_interpole(L_init, RESU_CALC)
        J_init = Simul.norme_J(copy.copy(L_J_init),copy.copy(L_J_init),UNITE_RESU)
        J = J_init
-    
+
        A = Simul.sensibilite(CALCUL_ASTER, L_init, L_deriv_sensible, val, PARA_DIFF_FINI)
        A = Dim.adim_sensi(A)
-    
+
        l = reca_algo.lambda_init(Numeric.matrixmultiply(Numeric.transpose(A),A))
+
        gradient_init =reca_algo.calcul_gradient(A,erreur)  #utile pour le test de convergence, on prend les valeurs dimensionnées
        residu = reca_algo.test_convergence(gradient_init,erreur,A,Numeric.zeros(len(gradient_init),Numeric.Float))
     
@@ -602,8 +606,8 @@ def macr_recal(UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC,
                 if (GRAPHIQUE):
                    if GRAPHIQUE['AFFICHAGE']=='TOUTE_ITERATION':
                       GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
-                      interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
-                      reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+                      pilote=GRAPHIQUE['PILOTE']
+                      reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,pilote)
 
                 # On teste un manque de temps CPU
                 restant,temps_iter,err=reca_utilitaires.temps_CPU(restant,temps_iter)
@@ -638,17 +642,17 @@ def macr_recal(UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, LIST_DERIV, RESU_CALC,
          trace = True
       if (METHODE=='EXTERNE' and GRAPHIQUE['AFFICHAGE']=='TOUTE_ITERATION'): 
          trace = True
-         fichier = args['prefix_graph']
+         if not args.has_key('prefix_graph'): fichier='graph'
+         else:                                fichier = args['prefix_graph']
       if trace:
          if INFO>=1: UTMESS('I','MACR_RECAL',"Trace des graphiques")
          GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
-         interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
-         reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif,fichier)
+         pilote=GRAPHIQUE['PILOTE']
+         reca_utilitaires.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,pilote,fichier)
 
    if( METHODE == 'EXTERNE'):
-      if mode_python: return fonctionnelle, gradient
-
-#   print residu, RESI_GLOB_RELA
+#      if mode_python: return fonctionnelle, gradient
+      return fonctionnelle, gradient
 
    # Si pas de convergence alors diagnostic NOOK_TEST_RESU
    if residu > RESI_GLOB_RELA:
@@ -697,7 +701,7 @@ if __name__ == '__main__':
     p.add_option('-i', '--input',        action='store',   dest='input',         type='string',   default='input.txt',   help='fichier contenant les parametres')
     p.add_option('-o', '--output',       action='store',   dest='output',        type='string',   default='output.txt',  help='fichier contenant la fonctionnelle')
     p.add_option('-g', '--output_grad',  action='store',   dest='output_grad',   type='string',   default='grad.txt',    help='fichier contenant le gradient')
-    p.add_option('-p', '--prefix_graph', action='store',   dest='prefix_graph',  type='string',                          help='prefixe des fichiers contenant les courbes')
+    p.add_option('-p', '--prefix_graph', action='store',   dest='prefix_graph',  type='string',   default='graph',       help='prefixe des fichiers contenant les courbes')
     p.add_option('-v', '--info',         action='store',   dest='INFO',          type='int',                             help='niveau de message (-1, 0, 1, 2)')
     p.add_option('-f', '--follow',       action='store',   dest='follow_output', type='string',                          help="affiche ou non l'output du fichier Aster (True/False)")
     p.add_option('-F', '--objective',    action='store',   dest='objective',     type='string',                          help="type de la fonctionnelle (float/vector)")
@@ -996,7 +1000,7 @@ if __name__ == '__main__':
           prof.WriteExportTo(new_fichier_export)
        except:
           UTMESS('F',NOMPRO,"Probleme : Impossible d'ecrire le fichier export : " + new_fichier_export)
-       prof.WriteExportTo('/tmp/exp')
+       if debug: prof.WriteExportTo('/tmp/exp')
 
 
        # chemin vers as_run
index 0a6f37236ac38338126402413ec81e859413fc4b..e6c075d648a8ec794067a19ac7e05b6ab4ecc9a2 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF post_k1_k2_k3_ops Macro  DATE 05/03/2007   AUTEUR GALENNE E.GALENN
+#@ MODIF post_k1_k2_k3_ops Macro  DATE 09/05/2007   AUTEUR REZETTE C.REZETT
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -368,12 +368,12 @@ def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,FISSURE,MATER,RESULTAT,
           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, MAILLE = ListmaS,
+                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]),),);
           if SYME_CHAR=='SANS':
             TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
-                  NOM_CHAM='DEPL',MODELE=MODEL, MAILLE = ListmaI,
+                  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]),),);
 
index 4c22e2bfea39777c366b32599b492407f26c3e3a..4537a0fa0e246c86f56b8e40dd123ef2539b4682 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_algo Macro  DATE 14/11/2006   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_algo Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -32,6 +32,7 @@ try:
 except: pass
 
 try:
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except ImportError:
    def UTMESS(code,sprg,texte):
index 69554ef241c08ef3d66191746a538a7a1eecedfb..17609ead246234df5168820be6ca1f4ce6384f78 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_calcul_aster Macro  DATE 26/03/2007   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_calcul_aster Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # mode_include = False
 # __follow_output = False
 # table_sensibilite = False
-debug = False
-
 __commandes_aster__ = False
 
+debug = False
 
 import copy, Numeric, types, os, sys, pprint, math
 from glob import glob
 
 try:
-  import aster
-except: pass
-
-try:
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except ImportError:
    def UTMESS(code,sprg,texte):
@@ -283,6 +279,17 @@ class CALCUL_ASTER:
 #            fichiernew.append(ligne)
 #         fichier = '\n'.join(fichiernew)
 
+
+
+        # On supprime tous les commentaires du fichier esclave
+        fichiernew=[]
+        for ligne in fichier.split('\n'):
+           if ligne.strip() != '':
+              if ligne.replace(' ', '')[0] == '#': ligne = ''
+              fichiernew.append(ligne)
+        fichier = '\n'.join(fichiernew)
+
+
         #Fichier_Resu est une liste ou l'on va stocker le fichier modifié
         #idée générale :on délimite des 'blocs' dans fichier
         #on modifie ou non ces blocs suivant les besoins 
@@ -857,7 +864,8 @@ Message:
            elif lab == 'data':
               if dico['type'] not in ('exec', 'ele'):
                  if dico['ul']   != '0':   # Traite le cas des sources python sourchargees
-                    dico['path'] = os.path.join(os.getcwd(), 'fort.%s' % dico['ul'])
+                    if self.METHODE !='EXTERNE': 
+                       dico['path'] = os.path.join(os.getcwd(), 'fort.%s' % dico['ul'])
 
            # sinon on garde la ligne telle quelle
        setattr(prof, lab, l_fr)
@@ -865,7 +873,7 @@ Message:
      # Ecriture du nouveau fichier export
      prof.WriteExportTo(self.new_export)
 
-     os.system('cp ' + self.new_export + ' /tmp')
+     if debug: os.system('cp ' + self.new_export + ' /tmp')
 
   # --FIN CLASSE  ----------------------------------------------------------------------------
 
index d7cf84193c2c5030ba2d7df2e971fa91901841a3..b9270705f0bbfb89f511543993edd37ec2306053 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_controles Macro  DATE 26/03/2007   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_controles Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -22,6 +22,7 @@
 import string, copy, Numeric, types, os, sys, pprint
 
 try:
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except ImportError:
    def UTMESS(code,sprg,texte):
index bab1d8c27976b2fa0456dfd100d5411760cd29df..c3ce8c88f57e61948a507128e129bfcb2dbf7f1f 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_graphique Macro  DATE 08/11/2005   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_graphique Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
index d441a5e7e1c0426627eb8c8ece76d5c992102e96..4c60b3a064de5cc5b0dcc3ea9dcad08c9f0289dc 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_interp Macro  DATE 31/10/2006   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_interp Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -26,6 +26,7 @@ try: import Macro
 except: pass
 
 try:
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except ImportError:
    def UTMESS(code,sprg,texte):
index ec5d87fa9698aa1758553da99c7779f92f216124..e20cb6109e31e2de2e3590c5ab7735b020361751 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_message Macro  DATE 31/10/2006   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_message Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -22,6 +22,7 @@
 import os, Numeric
 
 try:
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except:
    def UTMESS(code,sprg,texte):
index c2c3cd2769c121d9e2660fc6e5a6aa13f2ebbd33..c379670c31e1250bf6166143ba13c40875ed3123 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF reca_utilitaires Macro  DATE 31/10/2006   AUTEUR ASSIRE A.ASSIRE 
+#@ MODIF reca_utilitaires Macro  DATE 16/05/2007   AUTEUR ASSIRE A.ASSIRE 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE ASSIRE A.ASSIRE
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 import Numeric, LinearAlgebra, copy, os, string, types, sys, glob
 from Numeric import take
 
-try:
-   from Cata.cata import INFO_EXEC_ASTER, DEFI_FICHIER, IMPR_FONCTION, DETRUIRE
-   from Accas import _F
-except: pass
 
 try:    import Gnuplot
 except: pass
 
 try:
+   from Cata.cata import INFO_EXEC_ASTER, DEFI_FICHIER, IMPR_FONCTION, DETRUIRE
+   from Accas import _F
+   import Utilitai.Utmess
    from Utilitai.Utmess import UTMESS
 except ImportError:
    def UTMESS(code,sprg,texte):
@@ -152,7 +151,7 @@ def temps_CPU(restant_old,temps_iter_old):
 #_____________________________________________
 
 
-def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif, fichier=None, INFO=0):
+def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, pilote, fichier=None, INFO=0):
 
   if iter: txt_iter = 'Iteration : ' + str(iter)
   else:    txt_iter = ''
@@ -163,27 +162,40 @@ def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif, fichier=
          for i in range(len(L_F)):
              _tmp = []
              courbe1 = res_exp[i]
-             _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } )
+             _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1, 'LEGENDE' : 'Expérience'} )
              courbe2 = L_F[i]
-             _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } )
+             _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2, 'LEGENDE' : 'Calcul'} )
 
              motscle2= {'COURBE': _tmp }
-             if interactif: motscle2['PILOTE']= 'INTERACTIF'
-             else:          motscle2['PILOTE']= 'POSTSCRIPT'
+             motscle2['PILOTE']= pilote
 
              IMPR_FONCTION(FORMAT='XMGRACE',
                            UNITE=int(UL_out),
-                           TITRE='Courbe de : ' + reponses[i][0],
+                           TITRE='Courbe : ' + reponses[i][0],
                            SOUS_TITRE=txt_iter,
                            LEGENDE_X=reponses[i][1],
                            LEGENDE_Y=reponses[i][2],
                            **motscle2
                            );
+             dic = {''           : '',
+                    'POSTSCRIPT' : '.ps',
+                    'EPS'        : '.eps',
+                    'MIF'        : '.mif',
+                    'SVG'        : '.svg',
+                    'PNM'        : '.pnm',
+                    'PNG'        : '.png',
+                    'JPEG'       : '.jpg',
+                    'PDF'        : '.pdf', 
+                    'INTERACTIF' : '.agr'
+                    }
+             ext = dic[pilote]
+             if ext!='':
+               os.system('mv ./fort.%s ./REPE_OUT/courbes_%s_iter_%s%s' % (str(UL_out), reponses[i][0], str(iter), ext ) )
 
      elif FORMAT=='GNUPLOT':
-         if INFO>=2: UTMESS('I','MACR_RECAL',"Trace des courbes dans le fichier " + fichier )
 
          if fichier:
+            if INFO>=2: UTMESS('I','MACR_RECAL',"Trace des courbes dans le fichier " + fichier )
             # On efface les anciens graphes
             liste = glob.glob(fichier + '*.ps')
             for fic in liste:
@@ -195,7 +207,7 @@ def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif, fichier=
          Gnuplot.GnuplotOpts.prefer_inline_data=1
          impr('set data style linespoints')
          impr('set grid')
-         impr('set pointsize 2.')
+         impr('set pointsize 1.')
          impr('set terminal postscript color')
          impr('set output "fort.'+str(UL_out)+'"')
 
@@ -203,12 +215,12 @@ def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif, fichier=
                graphe.append(Gnuplot.Gnuplot(persist=0))
                graphe[i]('set data style linespoints')
                graphe[i]('set grid')
-               graphe[i]('set pointsize 2.')
+               graphe[i]('set pointsize 1.')
                graphe[i].xlabel(reponses[i][1])
                graphe[i].ylabel(reponses[i][2])
                graphe[i].title(reponses[i][0]+'  ' + txt_iter)
                graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-               if interactif:
+               if pilote=='INTERACTIF':
                   graphe[i]('pause 5')
                else:
                   if fichier:
index 97d51a80b5b50917490c056b7b1f31d8f58cd368..3e6d69e047a5361664f68749a05b7251bb5f4682 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF simu_point_mat_ops Macro  DATE 09/01/2007   AUTEUR PROIX J-M.PROIX 
+#@ MODIF simu_point_mat_ops Macro  DATE 23/04/2007   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -17,8 +17,8 @@
 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
 # ======================================================================
-def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
-          SUIVI_DDL,ARCHIVAGE,SIGM_IMPOSE,EPSI_IMPOSE,MODELISATION, INFO, **args) :
+def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,RECH_LINEAIRE,SIGM_INIT,EPSI_INIT,VARI_INIT,
+          COMP_ELAS,SUIVI_DDL,ARCHIVAGE,SIGM_IMPOSE,EPSI_IMPOSE,MODELISATION, INFO, **args) :
 
   """Simulation de la reponse d'un point materiel"""
 
@@ -38,6 +38,8 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
   POST_RELEVE_T   = self.get_cmd('POST_RELEVE_T')
   CALC_TABLE      = self.get_cmd('CALC_TABLE')
   CALC_ELEM       = self.get_cmd('CALC_ELEM')
+  CREA_CHAMP       = self.get_cmd('CREA_CHAMP')
+#  IMPR_RESU       = self.get_cmd('IMPR_RESU')
 
   from Accas import _F
   from Utilitai.UniteAster import UniteAster
@@ -330,12 +332,148 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
   for i in xrange(nbsig) :
     iks=CMP_SIG[i]
     l_char.append(  _F(CHARGE=__S[i],FONC_MULT=SIG[iks])  )
+
+
+
+# Etat initial
+  SIGINI={}
+  VARINI={}
+  LCSIG=[]
+  LVSIG=[]
+  init_dico={}
+  etatinit=0
+
+# --contraintes initiales
+  if SIGM_INIT:        
+      etatinit=1                                                     
+      SIGINI=SIGM_INIT[0].cree_dict_valeurs(SIGM_INIT[0].mc_liste)   
+      for i in SIGINI.keys():                                        
+          if SIGINI[i]!=None :                                       
+              LCSIG.append(i)                                        
+              LVSIG.append(SIGINI[i])                                
+
+      __SIG_INIT=CREA_CHAMP(MAILLAGE=__MA,                           
+                OPERATION='AFFE',                                    
+                TYPE_CHAM='CART_SIEF_R',                             
+                AFFE=_F(TOUT='OUI',                                  
+                        NOM_CMP=LCSIG,                               
+                        VALE=LVSIG,))                                
+      init_dico['SIGM']=__SIG_INIT                                   
+          
+# --variables internes initiales
+  if VARI_INIT:        
+      etatinit=1
+      lnomneu=[]
+      lnomvar=[]
+      VARINI=VARI_INIT[0].cree_dict_valeurs(VARI_INIT[0].mc_liste)
+      nbvari=len(VARINI['VALE'])
+      for i in range(nbvari):
+          lnomneu.append('X'+str(i+1))
+          lnomvar.append('V'+str(i+1))
+
+      __NEUT=CREA_CHAMP(OPERATION='AFFE', TYPE_CHAM='CART_NEUT_R', MAILLAGE=__MA,
+        AFFE=_F( MAILLE ='VOLUME', NOM_CMP = lnomneu, VALE = VARINI['VALE']))
+        
+      __VAR_INIT=CREA_CHAMP(MODELE=__MO,
+                   OPERATION='ASSE',
+                   TYPE_CHAM='ELGA_VARI_R',
+                   ASSE=_F(TOUT='OUI',CHAM_GD=__NEUT,
+                           NOM_CMP=lnomneu,NOM_CMP_RESU=lnomvar))
+      init_dico['VARI']=__VAR_INIT
+#      IMPR_RESU(MODELE=__MO,RESU=_F(CHAM_GD=__VAR_INIT))
+          
+  # --deformations initiales
+  if EPSI_INIT:
+      etatinit=1
+      EPSINI={}
+      LCDEPL=[]
+      LNDEPL=[]
+      LVDEPL=[]
+      LIST_AFFE=[]
+      mon_dico={}
+      mon_dico["NOEUD"]='P0'
+      mon_dico["NOM_CMP"]=("DX","DY","DZ")
+      mon_dico["VALE"]=(0.,0.,0.)
+      LIST_AFFE.append(mon_dico)
+      
+      EPSINI=EPSI_INIT[0].cree_dict_valeurs(EPSI_INIT[0].mc_liste)
+      mon_dico={}
+      mon_dico["NOEUD"]='P1'
+      mon_dico["NOM_CMP"]='DX'
+      mon_dico["VALE"]=EPSINI['EPXX']
+      LIST_AFFE.append(mon_dico)
+      mon_dico={}
+      mon_dico["NOEUD"]='P2'
+      mon_dico["NOM_CMP"]='DY'
+      mon_dico["VALE"]=EPSINI['EPYY']
+      LIST_AFFE.append(mon_dico)
+      if MODELISATION=="3D": 
+          mon_dico={}
+          mon_dico["NOEUD"]='P3'
+          mon_dico["NOM_CMP"]='DZ'
+          mon_dico["VALE"]=EPSINI['EPZZ']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P1'
+          mon_dico["NOM_CMP"]='DY'
+          mon_dico["VALE"]=EPSINI['EPXY']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P2'
+          mon_dico["NOM_CMP"]='DX'
+          mon_dico["VALE"]=EPSINI['EPXY']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P1'
+          mon_dico["NOM_CMP"]='DZ'
+          mon_dico["VALE"]=EPSINI['EPXZ']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P3'
+          mon_dico["NOM_CMP"]='DX'
+          mon_dico["VALE"]=EPSINI['EPXZ']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P2'
+          mon_dico["NOM_CMP"]='DZ'
+          mon_dico["VALE"]=EPSINI['EPYZ']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P3'
+          mon_dico["NOM_CMP"]='DY'
+          mon_dico["VALE"]=EPSINI['EPYZ']
+          LIST_AFFE.append(mon_dico)
+      else:
+          mon_dico={}
+          mon_dico["NOEUD"]='P1',
+          mon_dico["NOM_CMP"]='DY'
+          mon_dico["VALE"]=EPSINI['EPXY']
+          LIST_AFFE.append(mon_dico)
+          mon_dico={}
+          mon_dico["NOEUD"]='P2'
+          mon_dico["NOM_CMP"]='DX'
+          mon_dico["VALE"]=EPSINI['EPXY']
+          LIST_AFFE.append(mon_dico)
+      __DEP_INI=CREA_CHAMP(MAILLAGE=__MA,
+                   OPERATION='AFFE',
+                   TYPE_CHAM='NOEU_DEPL_R',
+                   AFFE=LIST_AFFE)
+      init_dico['DEPL']=__DEP_INI
+#      IMPR_RESU(RESU=_F(CHAM_GD=__DEP_INI))
+                  
+
+
       
 # -- Deroulement du calcul
   motscles={} 
-  motscles['COMP_INCR']   = COMP_INCR.List_F()
+  if   COMP_INCR  : 
+      motscles['COMP_INCR']   = COMP_INCR.List_F()
+  if   COMP_ELAS   : 
+      motscles['COMP_ELAS']   = COMP_ELAS.List_F()
   motscles['CONVERGENCE'] = CONVERGENCE.List_F()
   motscles['NEWTON']      = NEWTON.List_F()
+  if   RECH_LINEAIRE   : 
+      motscles['RECH_LINEAIRE']      = RECH_LINEAIRE.List_F()
   motscles['INCREMENT']   = INCREMENT.List_F()
   
   if   SUIVI_DDL   : 
@@ -343,19 +481,30 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
      
   if   ARCHIVAGE   : 
      motscles['ARCHIVAGE']   = ARCHIVAGE.List_F()
-     
 
-  __EVOL = STAT_NON_LINE(
-    MODELE = __MO, 
-    CHAM_MATER = __CHMAT, 
-    EXCIT = l_char,**motscles)
+  if   etatinit == 1  : 
+
+      __EVOL = STAT_NON_LINE(
+        MODELE = __MO, 
+        CHAM_MATER = __CHMAT,
+        ETAT_INIT=init_dico,
+        EXCIT = l_char,**motscles)
+
+
+  else:  
+
+      __EVOL = STAT_NON_LINE(
+        MODELE = __MO, 
+        CHAM_MATER = __CHMAT, 
+        EXCIT = l_char,**motscles)
 
 
   __EVOL = CALC_ELEM(reuse = __EVOL,
     RESULTAT = __EVOL,
     OPTION = ('SIEF_ELNO_ELGA','EPSI_ELNO_DEPL','VARI_ELNO_ELGA')
     )
-    
+  
+#  IMPR_RESU(RESU=_F(RESULTAT=__EVOL))  
      
 # -- Recuperation des courbes
 
@@ -416,7 +565,7 @@ def simu_point_mat_ops(self, COMP_INCR, MATER, INCREMENT, NEWTON,CONVERGENCE,
 
   self.DeclareOut('REPONSE',self.sd)
   
-  REPONSE=CALC_TABLE( TABLE=__REP_EPSI,
+  REPONSE=CALC_TABLE( TABLE=__REP_EPSI,TITRE='TABLE ',
            ACTION=(
                    _F(OPERATION='COMB',TABLE=__REP_SIGM,NOM_PARA=('INST'), ),
                    _F(OPERATION='COMB',TABLE=__REP_INV ,NOM_PARA=('INST'), ),