Salome HOME
on change macro de place
authoreficas <>
Tue, 7 Jun 2005 08:38:51 +0000 (08:38 +0000)
committereficas <>
Tue, 7 Jun 2005 08:38:51 +0000 (08:38 +0000)
26 files changed:
Aster/Cata/Macro/macr_adap_mail_ops.py [deleted file]
Aster/Cata/Macro/macr_ascouf_calc_ops.py [deleted file]
Aster/Cata/Macro/macr_ascouf_mail_ops.py [deleted file]
Aster/Cata/Macro/macr_aspic_calc_ops.py [deleted file]
Aster/Cata/Macro/macr_aspic_mail_ops.py [deleted file]
Aster/Cata/Macro/macr_cabri_calc_ops.py [deleted file]
Aster/Cata/Macro/macr_cabri_mail_dat.py [deleted file]
Aster/Cata/Macro/macr_cabri_mail_ops.py [deleted file]
Aster/Cata/Macro/macr_cara_poutre_ops.py [deleted file]
Aster/Cata/Macro/macr_ecla_pg_ops.py [deleted file]
Aster/Cata/Macro/macr_fiab_impr_ops.py [deleted file]
Aster/Cata/Macro/macr_fiabilite_ops.py [deleted file]
Aster/Cata/Macro/macr_lign_coupe_ops.py [deleted file]
Aster/Cata/Macro/macr_recal_ops.py [deleted file]
Aster/Cata/Macro/macro_elas_mult_ops.py [deleted file]
Aster/Cata/Macro/macro_matr_ajou_ops.py [deleted file]
Aster/Cata/Macro/macro_matr_asse_ops.py [deleted file]
Aster/Cata/Macro/macro_miss_3d_ops.py [deleted file]
Aster/Cata/Macro/macro_mode_meca_ops.py [deleted file]
Aster/Cata/Macro/macro_proj_base_ops.py [deleted file]
Aster/Cata/Macro/reca_algo.py [deleted file]
Aster/Cata/Macro/reca_interp.py [deleted file]
Aster/Cata/Macro/reca_message.py [deleted file]
Aster/Cata/Macro/recal.py [deleted file]
Aster/Cata/Macro/stanley_ops.py [deleted file]
Aster/Cata/Macro/test_fichier_ops.py [deleted file]

diff --git a/Aster/Cata/Macro/macr_adap_mail_ops.py b/Aster/Cata/Macro/macr_adap_mail_ops.py
deleted file mode 100644 (file)
index 1662539..0000000
+++ /dev/null
@@ -1,727 +0,0 @@
-#@ MODIF macr_adap_mail_ops Macro  DATE 05/10/2004   AUTEUR CIBHHLV L.VIVAN 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_adap_mail_ops ( self,
-                         INFO, VERSION_HOMARD, LANGUE,
-                         NOMBRE, QUALITE, CONNEXITE, TAILLE, INTERPENETRATION,
-                         NON_SIMPLEXE, MAILLAGE_FRONTIERE,
-                         **args):
-  """
-     Ecriture des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
-     Remarque : on ne mentionne explicitement que les mots-clés communs aux
-                deux macros. Les autres sont dans le dictionnaire args
-  """
-#
-#  1. args est le dictionnaire des arguments
-#     args.keys() est la liste des mots-clés
-#     args.keys()[0] est la premiere valeur de cette liste
-#     args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-#     args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-#
-###  print args
-###  print args.keys()
-###  if len (args.keys())>0 : print args.keys()[0]
-###  print args["MAILLAGE"]
-#
-#  2. Les caractéristiques d'un passage sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de sollicitations pour une série d'adaptation. L'ensemble de ces dictionnaires
-#     est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir
-#     la retrouver à chaque nouveau passage.
-#     Description du dictionnaire de passages :
-#        dico["Maillage_0"]             = o ; string ; nom du concept du maillage initial de la série d'adaptation
-#        dico["Maillage_NP1"]           = o ; string ; nom du concept du dernier maillage adapté
-#        dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du répertoire de calcul pour HOMARD
-#        dico["Rep_Calc_HOMARD_local"]  = o ; string ; Nom local du répertoire de calcul pour HOMARD
-#                                                      depuis le répertoire de calcul pour ASTER
-#        dico["niter"]                  = o ; entier ; numéro d'itération
-#
-#  3. Les caractéristiques d'un maillage sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
-#     dans la liste Liste_Maillages.
-#     Description du dictionnaire de maillages :
-#        dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1" ou "MAILLAGE_FRONTIERE"
-#        dico["Nom_ASTER"]     = o ; concept ASTER associé
-#        dico["Action"]        = o ; string ; "A_ecrire" ou "A_lire"
-#        dico["NOM_MED"]       = o ; string ; Nom MED du maillage
-#
-#  4. Les caractéristiques d'un champ sont conservées dans un dictionnaire. Il y a autant de
-#     dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé
-#     dans la liste Liste_Champs.
-#     Description du dictionnaire de champs :
-#        dico["Type_Champ"]   = o ; string ; "INDICATEUR" ou "CHAMP"
-#        dico["RESULTAT"]     = o ; concept ASTER du résutat associé
-#        dico["NOM_CHAM"]     = o ; string ; Nom ASTER du champ
-#        dico["COMPOSANTE"]   = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-#        dico["NUME_ORDRE"]   = f ; entier ; Numéro d'ordre du champ
-#        dico["INST"]         = f ; entier ; Instant du champ
-#        dico["PRECISION"]    = f ; entier ; Précision sur l'instant du champ
-#        dico["CRITERE"]      = f ; entier ; Critère de précision sur l'instant du champ
-#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
-#        dico["NOM_MED"]      = o ; string ; Nom MED du champ
-#
-  from Accas import _F
-  import aster 
-  import string
-  import types
-  import os
-#
-  global Liste_Passages
-#
-#--------------------------------------------------------------------
-# 1. Préalables
-#--------------------------------------------------------------------
-#
-# 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
-#
-  self.set_icmd(1)
-#
-# 1.2. ==> Numéro du passage dans cette macro
-#
-  try :
-    self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1
-  except :
-    self.jdc.indice_macro_homard = 1
-    Liste_Passages = []
-  Numero_Passage_Fonction = self.jdc.indice_macro_homard
-###  print "Numero_Passage_Fonction = ",Numero_Passage_Fonction
-#
-# 1.3. ==> On importe les definitions des commandes a utiliser dans la macro
-#
-  DEFI_FICHIER    = self.get_cmd("DEFI_FICHIER")
-  IMPR_RESU       = self.get_cmd("IMPR_RESU")
-  EXEC_LOGICIEL   = self.get_cmd("EXEC_LOGICIEL")
-  IMPR_FICO_HOMA  = self.get_cmd("IMPR_FICO_HOMA")
-  LIRE_MAILLAGE   = self.get_cmd("LIRE_MAILLAGE")
-  LIRE_CHAMP      = self.get_cmd("LIRE_CHAMP")
-  DETRUIRE        = self.get_cmd('DETRUIRE')
-#
-# 1.4. ==> Le nom du programme HOMARD à lancer
-#
-  repertoire_outils = aster.repout()
-  homard            = repertoire_outils + "homard"
-#
-# 1.5. ==> Initialisations
-#
-  codret = 0
-  codret_partiel = [0]
-  Rep_Calc_ASTER = os.getcwd()
-#
-  Liste_Maillages = []
-  Liste_Champs    = []
-  dico_indi = {}
-#
-  ADAPTATION = None
-  MAJ_CHAM = None
-#
-  unite = 71
-#
-#--------------------------------------------------------------------
-# 2. Décodage des arguments de la macro-commande
-#--------------------------------------------------------------------
-# 2.1. ==> Données de pilotage de l'adaptation
-#
-  if ( self.nom == "MACR_ADAP_MAIL" ) :
-#
-    modhom = "ADAP"
-#
-    ADAPTATION = args["ADAPTATION"]
-    if args.has_key("MAJ_CHAM") :
-      MAJ_CHAM = args["MAJ_CHAM"]
-#
-# 2.1.1. ==> Les concepts "maillage"
-#
-    for mot_cle in ["MAILLAGE_N","MAILLAGE_NP1"] :
-      dico = {}
-      dico["Type_Maillage"] = mot_cle
-      dico["Nom_ASTER"]     = ADAPTATION[mot_cle]
-      if ( mot_cle == "MAILLAGE_N" ) :
-        dico["Action"] = "A_ecrire"
-      else :
-        dico["Action"] = "A_lire"
-      Liste_Maillages.append(dico)
-#
-# 2.1.2. ==> L'éventuel indicateur d'erreur
-#
-    if ADAPTATION["LIBRE"] != None :
-      dico = {}
-      dico["Type_Champ"] = "INDICATEUR"
-      dico["RESULTAT"]   = ADAPTATION["RESULTAT_N"]
-      dico["NOM_CHAM"]   = ADAPTATION["INDICATEUR"]
-      dico["COMPOSANTE"] = ADAPTATION["NOM_CMP_INDICA"]
-      if ( ADAPTATION["NUME_ORDRE"] != None ) :
-        dico["NUME_ORDRE"] = ADAPTATION["NUME_ORDRE"]
-      if ( ADAPTATION["INST"] != None ) :
-        dico["INST"] = ADAPTATION["INST"]
-        for cle in [ "PRECISION", "CRITERE" ] :
-          if ( ADAPTATION[cle] != None ) :
-            dico[cle] = ADAPTATION[cle]
-      dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
-      Liste_Champs.append(dico)
-      dico_indi = dico
-###      print dico
-#
-# 2.1.3. ==> Les champs à mettre à jour
-#
-    if ( MAJ_CHAM != None ) :
-#
-      for maj_cham in MAJ_CHAM :
-###        print maj_cham
-#
-        dico = {}
-        dico["Type_Champ"] = "CHAMP"
-        for cle in [ "CHAM_MAJ", "TYPE_CHAM", "RESULTAT", "NOM_CHAM" ] :
-          dico[cle] = maj_cham[cle]
-        if ( maj_cham["NUME_ORDRE"] != None ) :
-          dico["NUME_ORDRE"] = maj_cham["NUME_ORDRE"]
-        elif ( maj_cham["INST"] != None ) :
-          dico["INST"] = maj_cham["INST"]
-          for cle in [ "PRECISION", "CRITERE" ] :
-            if ( maj_cham[cle] != None ) :
-              dico[cle] = maj_cham[cle]
-        dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
-#
-###        print dico
-        Liste_Champs.append(dico)
-#
-# 2.2. ==> Données de pilotage de l'information
-#
-  else :
-#
-    modhom = "INFO"
-#
-    dico = {}
-    dico["Type_Maillage"] = "MAILLAGE_N"
-    dico["Nom_ASTER"]     = args["MAILLAGE"]
-    dico["Action"]        = "A_ecrire"
-    Liste_Maillages.append(dico)
-#
-# 2.3. ==> Suivi de frontière
-#
-  if ( MAILLAGE_FRONTIERE != None ) :
-#
-    dico = {}
-    dico["Type_Maillage"] = "MAILLAGE_FRONTIERE"
-    dico["Nom_ASTER"]     = MAILLAGE_FRONTIERE
-    dico["Action"]        = "A_ecrire"
-    Liste_Maillages.append(dico)
-#
-#--------------------------------------------------------------------
-# 3. Préparation du lancement des commandes
-#--------------------------------------------------------------------
-#
-# 3.1. ==> . Elaboration des noms MED des concepts de maillage
-#          . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
-#          On crée une nouvelle liste des dictionnaires décrivant les maillages
-#          et à la fin on écrase l'ancienne liste par cette nouvelle.
-#
-  L = []
-  for dico in Liste_Maillages :
-    dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
-    L.append(dico)
-    if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
-      Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
-    elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
-      Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
-  Liste_Maillages = L
-#
-# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
-#
-# 3.2.1. ==> Par défaut :
-#            . le numéro d'itération est nul
-#            . le nom du répertoire de lancement de HOMARD est construit sur le nom
-#              du maillage en entrée et le numéro de passage dans la fonction
-#
-  niter = 0
-  Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction)
-  Rep_Calc_HOMARD_local = os.path.join(".",Nom_Rep_local)
-  Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
-###  print "Rep_Calc_HOMARD_local  = ", Rep_Calc_HOMARD_local
-###  print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
-#
-# 3.2.2. ==> En adaptation :
-#
-  if ( modhom == "ADAP" ) :
-#
-# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
-#              dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
-#              le cas, cela veut dire que l'adaptation en cours est la suite d'une
-#              précédente. On doit donc utiliser le meme répertoire. Le numéro
-#              d'itération est celui de l'adaptation précédente augmenté de 1.
-#
-    for dico in Liste_Passages :
-      if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
-        niter   = dico["niter"] + 1
-        Rep_Calc_HOMARD_local  = dico["Rep_Calc_HOMARD_local"]
-        Rep_Calc_HOMARD_global = dico["Rep_Calc_HOMARD_global"]
-#
-# 3.2.2.2. ==> Memorisation de ce passage
-#
-# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure
-#
-    if ( niter == 0 ) :
-      dico = {}
-      dico["Maillage_0"]   = Nom_Concept_Maillage_N
-      dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
-      dico["Rep_Calc_HOMARD_local"]  = Rep_Calc_HOMARD_local
-      dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
-      dico["niter"]        = niter
-      Liste_Passages.append(dico)
-#
-# 3.2.2.2.2. ==> Modification du cas en cours
-#
-    else :
-      L = []
-      for dico in Liste_Passages :
-        if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
-          dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
-          dico["niter"]        = niter
-        L.append(dico)
-      Liste_Passages = L
-#
-###  print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
-#
-#--------------------------------------------------------------------
-# 4. Ecriture des commandes
-#--------------------------------------------------------------------
-#
-# 4.1. ==> Création du répertoire pour homard
-#          attention : on ne fait cette creation qu'une seule fois par cas
-#                      d'adaptation ou d'information
-#
-  if ( niter == 0 ) :
-#
-    try :
-      os.mkdir(Rep_Calc_HOMARD_global)
-    except os.error,codret_partiel :
-      self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
-      self.cr.fatal("<F> <MACR_ADAP_MAIL> Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
-      codret = codret + 1
-#
-# 4.2. ==> Ecriture des commandes de creation des donnees MED
-#
-#  On doit écrire : le maillage,
-#                   le champ d'indicateur d'erreur
-#                   les champs à convertir
-#  Remarque : on met tout dans le meme fichier
-#
-#  Chacune de ces écritures est optionnelle selon le contexte.
-#
-  if ( INFO > 1 ) : infomail = "OUI"
-  else :            infomail = "NON"
-#
-# 4.2.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
-#            Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
-#                       un fichier de nom fort.n, placé dans le répertoire de calcul
-#                       Dans le fichier de configuration, on donne comme nom MAILL.(niter).MED en entrée et
-#                       MAILL.(niter+1).MED en sortie (cf. adhc00)
-#                       Tant que les E/S MED n'ont pas évolué, on fait un lien pour assurer la cohérence.
-#
-# 4.2.1.1. ==> D'ASTER vers HOMARD
-#
-  Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction
-  Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
-  Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED")
-###  print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD
-###  print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree
-  try :
-    os.symlink(Fichier_ASTER_vers_HOMARD,Fichier_HOMARD_Entree)
-  except os.error,codret_partiel :
-    self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
-    self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_ASTER_vers_HOMARD + " et " + Fichier_HOMARD_Entree)
-    codret = codret + 1
-#
-# 4.2.1.2. ==> De HOMARD vers ASTER
-#  
-  if ( modhom == "ADAP" ) :
-    Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1
-    Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
-    Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED")
-###    print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER
-###    print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie
-    try :
-      os.symlink(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_Sortie)
-    except os.error,codret_partiel :
-      self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
-      self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_HOMARD_vers_ASTER + " et " + Fichier_HOMARD_Sortie)
-      codret = codret + 1
-#
-# 4.2.2. La définition du fichier de ASTER vers HOMARD
-# 
-  DEFI_FICHIER ( ACTION= "ASSOCIER",
-                 UNITE = Unite_Fichier_ASTER_vers_HOMARD,
-                 TYPE = "LIBRE",
-                 INFO = INFO )
-#
-# 4.2.3. Le(s) maillage(s)
-# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
-# dans le meme fichier MED
-# En fait, on pourrait s'en passer au dela de la 1ère itération
-# car HOMARD a mémorisé. Mais dès que l'on écrit un champ,
-# les conventions MED imposent la présence du maillage dans le fichier.
-# Donc on va toujours écrire.
-#
-  for dico in Liste_Maillages :
-    if ( dico["Action"] == "A_ecrire" ) :
-      motscsi={}
-      motscsi["MAILLAGE"] = dico["Nom_ASTER"]
-      motscfa={}
-      motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
-                          **motscsi )
-#
-      IMPR_RESU ( INFO = INFO, 
-                  FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
-                  **motscfa )
-#
-# 4.2.4. Le(s) champ(s)
-#        Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
-#                    indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
-#                    impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
-#                    deux champs. D'ailleurs, c'est plus économique ainsi !
-#        Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur.
-#                   s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut
-#                   donc dans ce cas imprimer le champ total.
-#        dico["Type_Champ"]   = o ; string ; "INDICATEUR" ou "CHAMP"
-#        dico["RESULTAT"]     = o ; concept ASTER du résutat associé
-#        dico["NOM_CHAM"]     = o ; string ; Nom ASTER du champ
-#        dico["COMPOSANTE"]   = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-#        dico["NUME_ORDRE"]   = f ; entier ; Numéro d'ordre du champ
-#        dico["INST"]         = f ; entier ; Instant du champ
-#        dico["PRECISION"]    = f ; entier ; Précision sur l'instant du champ
-#        dico["CRITERE"]      = f ; entier ; Critère de précision sur l'instant du champ
-#        dico["CHAM_MAJ"]     = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
-#        dico["NOM_MED"]      = o ; string ; Nom MED du champ
-#
-# 4.2.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
-#
-  if len(dico_indi) > 0 :
-    imprime_indic = 0
-  else :
-    imprime_indic = 1
-#
-  Liste_Champs_imprime = []
-  for dico in Liste_Champs :
-#   Pour un champ à mettre à jour, on a toujours impression
-    if ( dico["Type_Champ"] == "CHAMP" ) :
-      Liste_Champs_imprime.append(dico)
-#     Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour :
-      if not imprime_indic :
-#       Est-ce le meme champ ?
-        ok = 1
-        for cle in [ "RESULTAT", "NOM_CHAM" ] :
-          if ( dico_indi[cle] != dico[cle] ) :
-            ok = 0
-            break
-#       Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
-#       seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
-#       en numéro d'ordre et une donnée en instant. On croise les doigts.)
-        if ok :
-          for cle in [ "NUME_ORDRE", "INST" ] :
-            if dico.has_key(cle) :
-              if ( dico[cle] != None ) :
-                if dico_indi.has_key(cle) :
-                  if ( dico_indi[cle] != dico[cle] ) :
-                    ok = 0
-                    break
-        if ok : imprime_indic = 1
-#   Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
-#   l'inclure dans les champs à imprimer
-  if not imprime_indic : Liste_Champs_imprime.append(dico_indi)
-#
-# 4.2.4.2. Impressions après le filtrage précédent
-#
-  for dico in Liste_Champs_imprime :
-    motscsi={}
-    for cle in [ "RESULTAT", "NOM_CHAM", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
-      if dico.has_key(cle) :
-        if ( dico[cle] != None ) :
-          motscsi[cle] = dico[cle]
-    if dico.has_key("COMPOSANTE") :
-      motscsi["NOM_CMP"] = dico["COMPOSANTE"]
-    motscfa={}
-    motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
-                        **motscsi
-                      )
-#
-    IMPR_RESU ( INFO = INFO, 
-                FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
-                **motscfa )
-#
-# 4.3. ==> Ecriture de la commande d'écriture des fichiers de données pour HOMARD
-#
-  motscfa={}
-#  
-# 4.3.1. ==> Le traitement
-#
-  motscsi={}
-#
-# 4.3.1.1. ==> Le type de traitement
-#
-  if ( modhom == "ADAP" ) :
-    if ( ADAPTATION["UNIFORME"] != None ) :
-      motscsi["UNIFORME"] = ADAPTATION["UNIFORME"]
-    else :
-      motscsi["ADAPTATION"] = ADAPTATION["LIBRE"]
-  else :
-    motscsi["INFORMATION"] = "OUI"
-#
-# 4.3.1.2. ==> Les noms med des maillages
-#
-  for dico in Liste_Maillages :
-###    print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
-    motscsi[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
-#
-# 4.3.1.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
-#
-  for dico in Liste_Champs :
-    if ( dico["Type_Champ"] == "INDICATEUR" ) :
-      Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
-      if dico.has_key("NUME_ORDRE") :
-        Liste_aux.append("NUME_ORDRE")
-      else :
-        for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
-          Liste_aux.append(cle)
-      for cle in Liste_aux :
-        if dico.has_key(cle) :
-          if ( dico[cle] != None ) :
-            motscsi[cle] = dico[cle]
-#
-# 4.3.1.4. ==> Les critères de raffinement et les niveaux extremes
-#
-  if ( modhom == "ADAP" ) :
-    Liste_aux = [ ]
-    if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" ) :
-      Liste_aux.append("CRIT_RAFF_ABS")
-      Liste_aux.append("CRIT_RAFF_REL")
-      Liste_aux.append("CRIT_RAFF_PE")
-    if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" ) :
-      Liste_aux.append("CRIT_DERA_ABS")
-      Liste_aux.append("CRIT_DERA_REL")
-      Liste_aux.append("CRIT_DERA_PE")
-    niveau = 0
-    if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" or ADAPTATION["UNIFORME"] == "RAFFINEMENT" ) :
-      Liste_aux.append("NIVE_MAX")
-      niveau = niveau + 1
-    if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" or ADAPTATION["UNIFORME"] == "DERAFFINEMENT" ) :
-      Liste_aux.append("NIVE_MIN")
-      niveau = niveau + 2
-    for mot_cle in Liste_aux :
-      if ( ADAPTATION[mot_cle] != None ) :
-        motscsi[mot_cle] = ADAPTATION[mot_cle]
-#
-    if ( niveau == 2 ) : 
-      if ( ADAPTATION["NIVE_MIN"] > ADAPTATION["NIVE_MAX"] ) :
-        self.cr.fatal("<F> <MACR_ADAP_MAIL> Le niveau minimum doit etre inferieur au niveau maximum.")
-        codret = codret + 1
-#
-# 4.3.1.5. ==> Numéro d'itération
-#
-  if ( modhom == "ADAP" ) :
-    motscsi["NITER"] = niter
-#
-# 4.3.1.6. ==> Suivi de la frontiere
-#
-  if args.has_key("GROUP_MA") :
-    if ( args["GROUP_MA"] != None ) :
-      motscsi["GROUP_MA"] = args["GROUP_MA"]
-#
-# 4.3.1.7. ==> Bilan
-#
-  motscfa["TRAITEMENT"] = _F(**motscsi)
-#
-# 4.3.2. ==> L'analyse
-#
-  motscsi={}
-  if ( NOMBRE != None )           : motscsi["NOMBRE" ]           = NOMBRE
-  if ( QUALITE != None )          : motscsi["QUALITE" ]          = QUALITE
-  if ( CONNEXITE != None )        : motscsi["CONNEXITE" ]        = CONNEXITE
-  if ( TAILLE != None )           : motscsi["TAILLE" ]           = TAILLE
-  if ( INTERPENETRATION != None ) : motscsi["INTERPENETRATION" ] = INTERPENETRATION
-#
-  motscfa["ANALYSE"] = _F(**motscsi)
-#
-# 4.3.3. ==> La mise à jour de champs
-#
-  prem = 1
-  for dico in Liste_Champs :
-    motscsi={}
-    if ( dico["Type_Champ"] == "CHAMP" ) :
-      Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
-      if dico.has_key("NUME_ORDRE") :
-        Liste_aux.append("NUME_ORDRE")
-      else :
-        for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
-          Liste_aux.append(cle)
-      for cle in Liste_aux :
-        if dico.has_key(cle) :
-          if ( dico[cle] != None ) :
-            motscsi[cle] = dico[cle]
-###      print motscsi
-      if prem :
-        motscfa["MAJ_CHAM"] = [_F(**motscsi),]
-        prem = 0
-      else :
-        motscfa["MAJ_CHAM"].append(_F(**motscsi))
-#
-# 4.3.4. ==> La commande
-#
-# 4.3.4.1. ==> Les fichiers annexes
-#
-  dico = {}
-#
-  Nom_Fichier_Configuration = "HOMARD.Configuration"
-  Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Configuration)
-  dico[Fichier_Configuration] = ("HOMARD_CONFIG","UNITE_CONF",unite)
-#
-  if ( modhom != "ADAP" ) :
-    unite = unite + 1
-    Nom_Fichier_Donnees = "HOMARD.Donnees"
-    Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Donnees)
-#                             1234567890123456
-    dico[Fichier_Donnees] = ("HOMARD_DONN","UNITE_DONN",unite)
-#
-# 4.3.4.2. ==> L'ouverture de ces fichiers
-#
-  for fic in dico.keys() :
-    DEFI_FICHIER ( ACTION= "ASSOCIER", FICHIER = fic, UNITE = dico[fic][2],
-                   TYPE = "ASCII", ACCES = "NEW", INFO = INFO )
-    motscfa[dico[fic][1]] = dico[fic][2]
-#
-# 4.3.4.3. ==> Ecriture
-#
-###  print motscfa
-  IMPR_FICO_HOMA ( INFO=INFO, LANGUE = LANGUE, NON_SIMPLEXE = NON_SIMPLEXE, **motscfa )
-#
-###  for fic in dico.keys() :
-###    print "\nContenu de ", fic
-###    fichier = open (fic,"r")
-###    les_lignes = fichier.readlines()
-###    fichier.close()
-###    for ligne in les_lignes :
-###      print ligne[:-1]
-#
-# 4.3.4.4. ==> La fermeture des fichiers locaux
-#              Remarque : il faut le faire ici pour que le gestionnaire de DEFI_FICHIER soit à jour
-#              Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique
-#
-  for fic in dico.keys() :
-    DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO )
-#
-# 4.4. ==> Ecriture de la commande d'exécution de homard
-#    Remarque : dans la donnée de la version de HOMARD, il faut remplacer
-#               le _ de la donnee par un ., qui
-#               est interdit dans la syntaxe du langage de commandes ASTER
-#    Remarque : il faut remplacer le N majuscule de la donnee par
-#               un n minuscule, qui est interdit dans la syntaxe du langage
-#               de commandes ASTER
-#    Remarque : pour le nommage des fichiers d'échange entre ASTER et HOMARD, on utilise
-#               la convention implicite du fort.n des entrees/sorties au format MED
-#
-  VERSION_HOMARD=string.replace(VERSION_HOMARD,"_",".")
-  VERSION_HOMARD=string.replace(VERSION_HOMARD,"N","n")
-  if ( VERSION_HOMARD[-6:]=="_PERSO" ):
-#    motscsi["ARGUMENT"]=_F("TYPEXE"="-PERSO")
-    VERSION_HOMARD=VERSION_HOMARD[:-6]
-#
-  if ( modhom == "ADAP" ) :
-    Nom_Fichier_Donnees = "0"
-#
-  EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire
-                              _F(NOM_PARA=VERSION_HOMARD),  # version de homard
-                              _F(NOM_PARA=str(INFO)),       # niveau d information
-                              _F(NOM_PARA=Nom_Fichier_Donnees), # fichier de données HOMARD
-                             ),
-                  LOGICIEL = homard
-                )
-#
-# 4.5. ==> Ecriture de la commande de lecture des resultats med
-#          Remarque :
-#          La fonction self.DeclareOut(a,b) focntionne ainsi :
-#          a est une chaine de caracteres
-#          b est la variable déclarée dans la commande
-#          le but est de associer le contenu de b à la variable locale qui sera désignée par a
-#          Exemple :
-#          self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
-#          ==> la variable maillage_np1 est identifiée à l'argument "MAILLAGE_NP1" du mot-clé ADAPTATION
-#
-  if ( modhom == "ADAP" ) :
-#
-# 4.5.1. ==> Le maillage
-#
-    self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
-    for dico in Liste_Maillages :
-      if ( dico["Action"] == "A_lire" ) :
-        maillage_np1 = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
-                                       FORMAT = "MED",
-                                       NOM_MED = dico["NOM_MED"],
-                                       VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
-#
-# 4.5.2. ==> Les champs
-#
-    for dico in Liste_Champs :
-      if ( dico["Type_Champ"] == "CHAMP" ) :
-###        print dico
-        self.DeclareOut("champ_maj",dico["CHAM_MAJ"])
-        motscsi={}
-        for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
-          if dico.has_key(cle) :
-            if ( dico[cle] != None ) :
-              motscsi[cle] = dico[cle]
-        if dico.has_key("NUME_ORDRE") :
-          motscsi["NUME_PT"] = dico["NUME_ORDRE"]
-        champ_maj = LIRE_CHAMP ( UNITE = Unite_Fichier_HOMARD_vers_ASTER, FORMAT = "MED",
-                                 MAILLAGE = maillage_np1,
-                                 NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
-                                 INFO = INFO, **motscsi )
-#
-#--------------------------------------------------------------------
-# 5. Menage des fichiers MED et HOMARD devenus inutiles
-#--------------------------------------------------------------------
-#
-  fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM")
-  Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ]
-  if ( modhom == "ADAP" ) :
-    Liste_aux.append(Fichier_HOMARD_vers_ASTER)
-    Liste_aux.append(Fichier_HOMARD_Sortie)
-#
-  for fic in Liste_aux :
-    if ( INFO > 1 ) : print "Destruction du fichier ", fic
-    if os.path.islink(fic) :
-      try :
-        os.unlink(fic)
-      except os.error,codret_partiel :
-        self.cr.warn("Code d'erreur de unlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
-        self.cr.warn("Impossible d'enlever le lien sur le fichier : "+fic)
-        codret = codret + 1
-    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])
-        self.cr.warn("Impossible de détruire le fichier : "+fic)
-        codret = codret + 1
-###  print os.listdir(Rep_Calc_ASTER)
-###  print os.listdir(Rep_Calc_HOMARD_global)
-#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
-#
-  return codret
diff --git a/Aster/Cata/Macro/macr_ascouf_calc_ops.py b/Aster/Cata/Macro/macr_ascouf_calc_ops.py
deleted file mode 100644 (file)
index 4c7c9b9..0000000
+++ /dev/null
@@ -1,690 +0,0 @@
-#@ MODIF macr_ascouf_calc_ops Macro  DATE 08/02/2005   AUTEUR CIBHHLV L.VIVAN 
-# -*- 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.        
-# ======================================================================
-
-
-def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
-                              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):          
-  """
-     Ecriture de la macro MACR_ASCOUF_CALC
-  """
-  from Accas import _F
-  import types
-  import math
-  import aster
-  from math import pi,sin,cos,sqrt,atan2
-  ier=0
-# On recopie les mots cles affe_materiau et impr_table pour les proteger
-  mc_AFFE_MATERIAU=AFFE_MATERIAU
-  mc_IMPR_TABLE   =IMPR_TABLE
-  # On importe les definitions des commandes a utiliser dans la macro
-  AFFE_MODELE      =self.get_cmd('AFFE_MODELE'     )
-  AFFE_MATERIAU    =self.get_cmd('AFFE_MATERIAU'   )
-  AFFE_CARA_ELEM   =self.get_cmd('AFFE_CARA_ELEM'  )
-  AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
-  THER_LINEAIRE    =self.get_cmd('THER_LINEAIRE'   )
-  AFFE_CHAR_MECA   =self.get_cmd('AFFE_CHAR_MECA'  )
-  STAT_NON_LINE    =self.get_cmd('STAT_NON_LINE'   )
-  CALC_ELEM        =self.get_cmd('CALC_ELEM'       )
-  IMPR_RESU        =self.get_cmd('IMPR_RESU'       )
-  IMPR_TABLE       =self.get_cmd('IMPR_TABLE'      )
-  DEFI_FOND_FISS   =self.get_cmd('DEFI_FOND_FISS'  )
-  CALC_THETA       =self.get_cmd('CALC_THETA'      )
-  CALC_G_THETA_T   =self.get_cmd('CALC_G_THETA_T'  )
-  CALC_G_LOCAL_T   =self.get_cmd('CALC_G_LOCAL_T'  )
-  POST_RCCM        =self.get_cmd('POST_RCCM'  )
-  POST_RELEVE_T    =self.get_cmd('POST_RELEVE_T'  )
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-#------------------------------------------------------------------
-# DATA
-  GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
-#------------------------------------------------------------------
-#  
-  if CL_BOL_P2_GV!=None :
-    if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
-       print '<A> <MACR_ASCOUF_CALC> la condition aux limites sur bol a section conique'
-       print '                       est ignoree pour un coude avec sous-epaisseurs'
-    elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASCOUF_CALC> mot-cle AZIMUT non autorise dans le cas d''un coude sain""")
-       return ier
-#
-  if mc_IMPR_TABLE!=None :
-    FLAG = 0
-    if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASCOUF_CALC> POSI_ANGUL POSI_CURV_LONGI est obligatoire""")
-       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 : 
-         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
-               ((impt['ANGLE']==None) and (impt['R_CINTR'   ]==None) and (impt['POSI_CURV_LONGI']==None))   )  :
-             ier=ier+1
-             self.cr.fatal("""<E> <MACR_ASCOUF_CALC> il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI""")
-             return ier
-    if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
-    if not FLAG : print '<A> <MACR_ASCOUF_CALC> ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas'
-#
-#------------------------------------------------------------------
-#
-#     --- commande AFFE_MODELE ---
-#
-  self.DeclareOut('modele',MODELE)
-  mcfact=[]
-  if (PRES_REP!=None) and (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
-     mcfact.append(_F(GROUP_MA=GRMAIL     ,PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
-  else:
-     mcfact.append(_F(GROUP_MA=GRMAIL[:5] ,PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
-  if TORS_P1!=None :
-     mcfact.append(_F(GROUP_MA='P1' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
-  if CL_BOL_P2_GV==None :
-     mcfact.append(_F(GROUP_MA='P2' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
-  modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
-                        AFFE     = mcfact    )
-  if ECHANGE!=None :                                # modele thermique
-     __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
-                             AFFE     = _F(TOUT        ='OUI',
-                                           PHENOMENE   ='THERMIQUE',
-                                           MODELISATION='3D' )       )
-#------------------------------------------------------------------
-#
-#     --- commande AFFE_MATERIAU ---
-#
-  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']))
-       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']))
-         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']))
-       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 ,
-                          MODELE   = modele ,
-                          AFFE     = mcfact    )
-#------------------------------------------------------------------
-#
-#     --- commande AFFE_CARA_ELEM ---
-#
-  if (TORS_P1!=None) or (CL_BOL_P2_GV==None) :
-    if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
-    motscles={}
-    motscles['DISCRET']=[]
-    if (TORS_P1!=None)      : motscles['DISCRET'].append(_F( GROUP_MA='P1' ,
-                                                             CARA    ='K_TR_D_N',
-                                                             VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
-    if (CL_BOL_P2_GV==None) : motscles['DISCRET'].append(_F( GROUP_MA='P2' ,
-                                                             CARA    ='K_TR_D_N',
-                                                             VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
-
-    carael = AFFE_CARA_ELEM( MODELE   = modele ,**motscles)
-#
-  if ECHANGE!=None :
-#------------------------------------------------------------------
-#
-#     --- commande AFFE_CHAR_THER_F ---
-#         condition aux limites
-#
-     __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
-                                  ECHANGE= _F(GROUP_MA='PEAUINT',
-                                              COEF_H  =ECHANGE['COEF_H'],
-                                              TEMP_EXT=ECHANGE['TEMP_EXT'],), )
-#------------------------------------------------------------------
-#
-#     --- calcul thermique ---
-#
-     if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
-     mcsimp={}
-     if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
-     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 ,
-                             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_CHAR_MECA ---
-#         condition aux limites de type raccord 3d-poutre
-#         ou bien blocage de mouvements rigides en cas d embout
-#         a section conique, bol de type gv
-#
-  motscles={}
-  motscles['LIAISON_ELEM']=[]
-  if TORS_P1!=None :
-    motscles['LIAISON_ELEM'].append(_F( OPTION    ='3D_POU'  ,
-                                         GROUP_MA_1='EXTUBE',
-                                         GROUP_NO_2='P1') )
-  if CL_BOL_P2_GV==None :
-    motscles['LIAISON_ELEM'].append(_F( OPTION    ='3D_POU'  ,
-                                         GROUP_MA_1='CLGV',
-                                         GROUP_NO_2='P2') )
-    motscles['DDL_IMPO'    ]=_F( GROUP_NO  ='P2' ,
-                                 DX        = 0.0 ,
-                                 DY        = 0.0 ,
-                                 DZ        = 0.0 ,
-                                 DRX       = 0.0 ,
-                                 DRY       = 0.0 ,
-                                 DRZ       = 0.0 , )
-  else :
-    motscles['FACE_IMPO'   ]=_F( GROUP_MA  ='CLGV' ,
-                                 DNOR      = 0.0 , )
-    ALPHA  = CL_BOL_P2_GV['ANGLE' ]
-    AZIM   = CL_BOL_P2_GV['AZIMUT']
-    ALPHAR = ALPHA*pi/180.0
-    AZIMR  = AZIM *pi/180.0
-    DDLB1  = []
-    COEFB1 = []
-    if (AZIM!=0.0) and (AZIM!=180.0) and (ALPHA!=90.0) :
-      DDLB1.append('DX')
-      COEFB1.append(SIN(AZIMR)*COS(ALPHAR))
-    if (AZIM!=90.0) :
-      DDLB1.append('DY')
-      COEFB1.append(COS(AZIMR))
-    if (AZIM!=0.) and (AZIM!=180.) and (ALPHA!=0.):
-      DDLB1.append('DZ')
-      COEFB1.append(-SIN(AZIMR)*SIN(ALPHAR))
-    POINT=['BOUT1',]*len(DDLB1)
-    motscles['LIAISON_DDL']=_F( GROUP_NO  = POINT  ,
-                                DDL       = DDLB1  ,
-                                COEF_MULT = COEFB1 ,
-                                COEF_IMPO = 0.0    , )
-
-  __conlim = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
-#
-#     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique :  pres_rep, effet de fond 
-#
-  if PRES_REP!=None :
-    motscles={}
-    if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
-      motscles['PRES_REP']=_F( GROUP_MA  = ('PEAUINT','FACE1','FACE2') ,
-                               PRES      = PRES_REP['PRES'] ,)
-    else :
-      motscles['PRES_REP']=_F( GROUP_MA  = 'PEAUINT',
-                               PRES      = PRES_REP['PRES'] ,)
-    if PRES_REP['EFFE_FOND_P1']!=None :
-      motscles['EFFE_FOND']=_F( GROUP_MA_INT  = 'BORDTU'  ,
-                                GROUP_MA      = 'EXTUBE'  ,
-                                PRES          = PRES_REP['PRES'] ,)
-#
-    __chpres = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
-#
-#     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique : torseur d efforts 
-#
-  if TORS_P1!=None :
-    __chtor = [None]*6
-    i=0
-    for tors in TORS_P1:
-      mcsimp={}
-      if tors['FX']!=None : mcsimp['FX']=tors['FX']
-      if tors['FY']!=None : mcsimp['FY']=tors['FY']
-      if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
-      if tors['MX']!=None : mcsimp['MX']=tors['MX']
-      if tors['MY']!=None : mcsimp['MY']=tors['MY']
-      if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
-      mcfact=_F(GROUP_NO='P1',**mcsimp)
-      __chtor[i] = AFFE_CHAR_MECA( MODELE       = modele ,
-                                   FORCE_NODALE = mcfact , )
-      i=i+1
-#
-#     --- commande STAT_NON_LINE ---
-#
-  motscles={}
-#
-  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']))
-    else :
-      mcfex.append(_F(CHARGE=__chpres,))
-  if TORS_P1!=None:
-     i=0
-     for tors in TORS_P1 :
-       if tors['FONC_MULT']!=None :
-          mcfex.append(_F(CHARGE=__chtor[i],FONC_MULT=tors['FONC_MULT']))
-       else :
-          mcfex.append(_F(CHARGE=__chtor[i],))
-       i=i+1
-  motscles['EXCIT'] =mcfex
-#
-  mcfci=[]  # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
-  if COMP_INCR!=None :
-    mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION']))
-  elif COMP_ELAS!=None :
-    motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION'])
-    if TORS_P1!=None     : mcfci.append(  _F(GROUP_MA='P1',RELATION='ELAS'))
-    if CL_BOL_P2_GV==None: mcfci.append(  _F(GROUP_MA='P2',RELATION='ELAS'))
-  motscles['COMP_INCR'] =mcfci
-#
-  dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-  for i in dSolveur.keys():
-      if dSolveur[i]==None : del dSolveur[i]
-#
-  dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
-  for i in dConverg.keys():
-      if dConverg[i]==None : del dConverg[i]
-#
-  dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
-  for i in dNewton.keys():
-      if dNewton[i]==None : del dNewton[i]
-#
-  dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
-  for i in dRechlin.keys():
-      if dRechlin[i]==None : del dRechlin[i]
-#
-  dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
-  for i in dIncrem.keys():
-      if dIncrem[i]==None : del dIncrem[i]
-#
-  if TITRE!=None :
-    motscles['TITRE'        ] =TITRE
-  motscles  ['SOLVEUR'      ] =dSolveur
-  motscles  ['CONVERGENCE'  ] =dConverg
-  motscles  ['NEWTON'       ] =dNewton
-  motscles  ['RECH_LINEAIRE'] =dRechlin
-  motscles  ['INCREMENT'    ] =dIncrem
-  self.DeclareOut('nomres',self.sd)
-  nomres = STAT_NON_LINE( MODELE     = modele ,
-                          CHAM_MATER = affmat ,
-                          CARA_ELEM  = carael ,
-                          INFO       = INFO   , **motscles)
-#
-#     --- commande CALC_ELEM ---
-#
-  nomres = CALC_ELEM( reuse      = nomres,
-                      RESULTAT   = nomres ,
-                      MODELE     = modele ,
-                      TOUT_ORDRE = 'OUI'  ,
-                      OPTION     = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
-                      INFO       = INFO   ,)
-#
-#     --- post-traitements ---
-#
-  if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE':
-#
-#     --- post traitement sous-epaisseurs:  ligaments  ---
-#
-     if mc_IMPR_TABLE!=None:       
-#
-      SECT=('MI','TU','GV')
-      LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
-      if   mc_IMPR_TABLE['POSI_ANGUL']==None:
-         ASEP=(mc_IMPR_TABLE['POSI_CURV_LONGI']/mc_IMPR_TABLE['R_CINTR'])*(180./pi)
-      else :
-         ASEP=mc_IMPR_TABLE['POSI_ANGUL']
-#
-#     moyenne_rccm, invariant et moyenne sur les ligaments dans
-#     l epaisseur
-#
-      l_grno=MAILLAGE.LIST_GROUP_NO()
-      tabprl=[None]*4
-      tablig=[None]*4
-#
-#     prelevements des ligaments circonferentiels et longitudinaux
-#     de la sous-epaisseur
-#
-      lgrno=[]
-      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 : 
-         motscles['ACTION'].append(_F(RESULTAT=nomres,
-                                      NOM_CHAM='SIEF_ELNO_ELGA',
-                                      TOUT_CMP='OUI',
-                                      INTITULE=grno,
-                                      GROUP_NO=grno,
-                                      OPERATION='EXTRACTION',))
-      motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-      tabprl[1]=POST_RELEVE_T(**motscles)
-      tablig[1]=POST_RCCM(MATER          = rccmat,
-                          TYPE_RESU_MECA = 'EVOLUTION',
-                          OPTION         = 'PM_PB',
-                          TRANSITOIRE=_F(TABL_RESU_MECA = tabprl[1],),)
-#
-      motscles={}
-      motscles['ACTION']=[]
-      for tgrno in lgrno : 
-         motscles['ACTION'].append(_F(RESULTAT=nomres,
-                                      NOM_CHAM='SIEF_ELNO_ELGA',
-                                      INTITULE=tgrno,
-                                      GROUP_NO=tgrno,
-                                      INVARIANT='OUI',
-                                      OPERATION='EXTRACTION',))
-      motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-      
-      tablig[2]=POST_RELEVE_T(**motscles)
-#
-      motscles={}
-      nommail=MAILLAGE.nom
-      coord   =aster.getvectjev(nommail.ljust(8)+'.COORDO    .VALE')
-      linomno =aster.getvectjev(nommail.ljust(8)+'.NOMNOE')
-      collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
-
-      motscles['ACTION']=[]
-      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.))
-         else :
-          if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
-          else :
-                 grpn=collgrno['FGAUTU  ']
-                 LT1=coord[3*(grpn[0]-1)+2]
-                 for node in grpn:
-                  X = coord[3*(node-1)]
-                  Y = coord[3*(node-1)+1]
-                  Z = coord[3*(node-1)+2]
-                  RCIN = mc_IMPR_TABLE['R_CINTR']
-                  if   Z<LT1                           : ANGSEC=0.
-                  elif X<(-1*RCIN) : ANGSEC=mc_IMPR_TABLE['ANGLE']*pi/180.
-                  else :
-                      VCOS = cos((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
-                      VSIN = sin((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
-                      ANGSEC = atan2(VSIN,VCOS)
-                 vecty=(sin(ANGSEC),0.,cos(ANGSEC))
-         motscles['ACTION'].append(_F(RESULTAT=nomres,
-                                      NOM_CHAM='SIEF_ELNO_ELGA',
-                                      INTITULE=tgrno,
-                                      GROUP_NO=tgrno,
-                                      NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',),
-                                      REPERE='LOCAL',
-                                      VECT_Y=vecty,
-                                      OPERATION='MOYENNE',))
-      motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-      tablig[3]=POST_RELEVE_T(**motscles)
-#
-#     prelevements des ligaments sur les sections MI,TU et GV
-#     les 8 ligaments sont tous les 45 degres
-#
-      ACOUR = mc_IMPR_TABLE['ANGLE']*pi/180.0
-      secprl=[None]*3
-      secrcm=[None]*3
-      secinv=[None]*3
-      secmoy=[None]*3
-      for i in range(3):
-         if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
-         else :
-             if i==0  : vecty=(sin(ACOUR/2.),0.,cos(ACOUR/2.))
-             if i==1  : vecty=(0.,0.,1.)
-             if i==2  : vecty=(sin(ACOUR),0.,cos(ACOUR))
-         motscles = {}
-         motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
-#
-#        moyenne RCCM sur les sections MI,TU et GV
-#
-         motscles={}
-         motscles['ACTION']=[]
-         for j in range(8) :
-            motscles['ACTION'].append(_F(RESULTAT=nomres,
-                                         NOM_CHAM='SIEF_ELNO_ELGA',
-                                         TOUT_CMP='OUI',
-                                         INTITULE=LIG[j]+SECT[i],
-                                         GROUP_NO=LIG[j]+SECT[i],
-                                         OPERATION='EXTRACTION',))
-         motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
-         secprl[i]=POST_RELEVE_T(**motscles)
-         secrcm[i]=POST_RCCM(MATER          = rccmat,
-                             TYPE_RESU_MECA = 'EVOLUTION',
-                             OPTION         = 'PM_PB',
-                             TRANSITOIRE=_F(TABL_RESU_MECA = secprl[i],),)
-#
-#        invariants sur les sections MI,TU et GV
-#
-         motscles = {}
-         motscles['TITRE']='TABLE DE POST-TRAITEMENT INVARIANTS SECTION '+SECT[i]
-         motscles['ACTION']=[]
-         for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
-                                                          GROUP_NO =LIG[j]+SECT[i],
-                                                          RESULTAT =nomres,
-                                                          NOM_CHAM ='SIEF_ELNO_ELGA',
-                                                          INVARIANT='OUI',
-                                                          OPERATION='EXTRACTION'))
-         secinv[i] = POST_RELEVE_T(**motscles)
-#
-#        moyennes contraintes sur les sections MI,TU et GV
-#
-         motscles = {}
-         motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE SECTION '+SECT[i]
-         motscles['ACTION']=[]
-         for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
-                                                          REPERE   ='LOCAL',
-                                                          VECT_Y   =vecty,
-                                                          GROUP_NO =LIG[j]+SECT[i],
-                                                          RESULTAT =nomres,
-                                                          NOM_CHAM ='SIEF_ELNO_ELGA',
-                                                          NOM_CMP  =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
-                                                          OPERATION='MOYENNE'))
-         secmoy[i] = POST_RELEVE_T(**motscles)
-
-#
-#     impression des valeurs maximales pour chaque sous-epaisseur
-#
-      if mc_IMPR_TABLE['TOUT_PARA']=='OUI' :
-             list_para=['TRESCA_MEMBRANE','TRESCA_MFLE','TRESCA','SI_LONG','SI_RADI','SI_CIRC']
-      else : list_para=mc_IMPR_TABLE['NOM_PARA']
-      if 'TRESCA_MEMBRANE' in list_para:
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   = _F( NOM_PARA  ='PM', CRIT_COMP ='MAXI'),
-                   NOM_PARA = ('INTITULE','PM'));
-      if 'TRESCA_MFLE'     in list_para:
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   =(_F( NOM_PARA ='LIEU',VALE_K   ='ORIG'),
-                              _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
-                   NOM_PARA = ('INTITULE','PMB'));
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   =(_F( NOM_PARA='LIEU', VALE_K  ='EXTR'),
-                              _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
-                   NOM_PARA = ('INTITULE','PMB'));
-      if 'SI_RADI'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   =(_F( NOM_PARA='QUANTITE',VALE_K  ='MOMENT_0'),
-                              _F( NOM_PARA ='SIXX',   CRIT_COMP='MAXI'),),
-                   NOM_PARA = ('INTITULE','SIXX'));
-      if 'SI_LONG'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   =(_F( NOM_PARA='QUANTITE',VALE_K  ='MOMENT_0'),
-                              _F( NOM_PARA ='SIYY',   CRIT_COMP='MAXI'),),
-                   NOM_PARA = ('INTITULE','SIYY'));
-      if 'SI_CIRC'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   =(_F( NOM_PARA='QUANTITE',VALE_K  ='MOMENT_0'),
-                              _F( NOM_PARA ='SIZZ',   CRIT_COMP='MAXI'),),
-                   NOM_PARA = ('INTITULE','SIZZ'));
-      if 'TRESCA'          in list_para:
-        IMPR_TABLE(TABLE      = tablig[2],
-                   NOM_PARA   = ('INTITULE','NOEUD','TRESCA',),
-                   PAGINATION = 'INTITULE',
-                   FILTRE     = _F( NOM_PARA   = 'TRESCA',
-                                    CRIT_COMP  = 'MAXI'     ) )  ;
-#
-#     impression des resultats pour chaque sous-epaisseur
-#
-      if 'TRESCA_MEMBRANE' in list_para:
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='ORIG'),
-                   NOM_PARA = ('INTITULE','PM'));
-      if 'TRESCA_MFLE'     in list_para:
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='ORIG'),
-                   NOM_PARA = ('INTITULE','PMB'));
-        IMPR_TABLE(TABLE    = tablig[1],
-                   FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='EXTR'),
-                   NOM_PARA = ('INTITULE','PMB'));
-      if 'SI_RADI'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                   NOM_PARA = ('INTITULE','SIXX'));
-      if 'SI_LONG'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                   NOM_PARA = ('INTITULE','SIYY'));
-      if 'SI_CIRC'         in list_para:
-        IMPR_TABLE(TABLE    = tablig[3],
-                   FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                   NOM_PARA = ('INTITULE','SIZZ'));
-      if 'TRESCA'          in list_para:
-        IMPR_TABLE(TABLE      = tablig[2],
-                   NOM_PARA   = ('INTITULE','NOEUD','TRESCA',),
-                   PAGINATION = 'INTITULE');
-#
-#     impression des resultats pour les sections MI, TU et GV
-#
-      for k in range(3):
-       if 'TRESCA_MEMBRANE' in list_para:
-         IMPR_TABLE(TABLE    = secrcm[k],
-                    FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='ORIG'),
-                    NOM_PARA = ('INTITULE','PM'));
-       if 'TRESCA_MFLE'     in list_para:
-         IMPR_TABLE(TABLE    = secrcm[k],
-                    FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='ORIG'),
-                    NOM_PARA = ('INTITULE','PMB'));
-         IMPR_TABLE(TABLE    = secrcm[k],
-                    FILTRE   = _F( NOM_PARA='LIEU', VALE_K  ='EXTR'),
-                    NOM_PARA = ('INTITULE','PMB'));
-       if 'SI_RADI'         in list_para:
-         IMPR_TABLE(TABLE    = secmoy[k],
-                    FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                    NOM_PARA = ('INTITULE','SIXX'));
-       if 'SI_LONG'         in list_para:
-         IMPR_TABLE(TABLE    = secmoy[k],
-                    FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                    NOM_PARA = ('INTITULE','SIYY'));
-       if 'SI_CIRC'         in list_para:
-         IMPR_TABLE(TABLE    = secmoy[k],
-                    FILTRE   = _F( NOM_PARA='QUANTITE', VALE_K  ='MOMENT_0'),
-                    NOM_PARA = ('INTITULE','SIZZ'));
-       if 'TRESCA'          in list_para:
-         IMPR_TABLE(TABLE      = secinv[k],
-                    NOM_PARA   = ('INTITULE','NOEUD','TRESCA',),
-                    PAGINATION = 'INTITULE');
-#
-  if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
-#
-#   --- post traitement fissure :  calcul de g ----
-#
-    motscles = {}
-    if FOND_FISS != None : self.DeclareOut('fonfis',FOND_FISS)
-    if TYPE_MAILLAGE =='FISS_COUDE' :
-       motscles['FOND_FISS']=_F(GROUP_NO='FONDFISS')
-       motscles['VECT_GRNO_ORIG']= ('PFOR','THOR')
-       motscles['VECT_GRNO_EXTR']= ('PFEX','THEX')
-    else :
-       motscles['FOND_FERME']=_F(GROUP_MA='FONDFISS',
-                                 GROUP_NO_ORIG='PFOR',
-                                 GROUP_MA_ORIG='MAIL_ORI')
-    fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
-                          LEVRE_SUP=_F(GROUP_MA='FACE1'),
-                          LEVRE_INF=_F(GROUP_MA='FACE2'),
-                          INFO=2,**motscles
-                          );
-    if THETA_3D!=None :
-      for thet in THETA_3D:
-        _nothet=CALC_THETA(MODELE=modele,
-                           FOND_FISS=fonfis,
-                           THETA_3D=_F(TOUT   = 'OUI',
-                                       MODULE = 1.,
-                                       R_INF  = thet['R_INF'],
-                                       R_SUP  = thet['R_SUP'],),
-                           );
-        motscles = {}
-        if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
-        if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
-        _nogthe=CALC_G_THETA_T(
-                               RESULTAT   =nomres,
-                               TOUT_ORDRE ='OUI',
-                               THETA      =_nothet,
-                               **motscles
-                               );
-#
-        IMPR_TABLE(TABLE=_nogthe,);
-#
-      for thet in THETA_3D:
-        motscles = {}
-        if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
-        if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
-        if   TYPE_MAILLAGE =='FISS_COUDE' :
-                             motscles['LISSAGE_THETA']='LEGENDRE'
-                             motscles['LISSAGE_G']    ='LEGENDRE'
-        elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
-                             motscles['LISSAGE_THETA']='LAGRANGE'
-                             motscles['LISSAGE_G']    ='LAGRANGE'
-        _nogloc=CALC_G_LOCAL_T(MODELE     =modele,
-                               RESULTAT   =nomres,
-                               TOUT_ORDRE ='OUI',
-                               CHAM_MATER =affmat,
-                               FOND_FISS  =fonfis,
-                               DEGRE      = 4,
-                               R_INF      = thet['R_INF'],
-                               R_SUP      = thet['R_SUP'],
-                               **motscles
-                               );
-
-        IMPR_TABLE(TABLE=_nogloc,);
-#
-#     --- commande IMPR_RESU  ---
-#
-  if IMPRESSION!=None:
-    mcfresu =[]
-    motscles={}
-    if IMPRESSION['FORMAT']=='IDEAS' :
-                                  motscles['VERSION'   ]= IMPRESSION['VERSION']
-    if IMPRESSION['FORMAT']=='CASTEM' :
-                                  motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
-    mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,))
-    if ECHANGE!=None:
-      motscles={}
-      if IMPRESSION['FORMAT']=='IDEAS' :
-                                    motscles['VERSION'   ]= IMPRESSION['VERSION']
-      if IMPRESSION['FORMAT']=='CASTEM' :
-                                    motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
-      mcfresu.append(_F(RESULTAT=resuth,))
-    IMPR_RESU( MODELE = modele,
-               RESU   = mcfresu,
-               FORMAT=IMPRESSION['FORMAT'],**motscles)
-#
-  return ier
diff --git a/Aster/Cata/Macro/macr_ascouf_mail_ops.py b/Aster/Cata/Macro/macr_ascouf_mail_ops.py
deleted file mode 100644 (file)
index fe02927..0000000
+++ /dev/null
@@ -1,2849 +0,0 @@
-#@ MODIF macr_ascouf_mail_ops Macro  DATE 09/05/2005   AUTEUR LEBOUVIE F.LEBOUVIER 
-# -*- 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.        
-# ======================================================================
-
-
-
-from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
-
-# ------------------------------------------------------------------------------
-def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y):
-  """
-  FONCTION F(CP)=CC
-  OU CC EST LA TAILLE DE LA FISSURE SUR LE COUDE 
-  ET CP LA TAILLE DE FISSURE SUR LA PLAQUE
-  """
-  AZIMR = AZIM*2.*pi/360.
-  if POS=='DEB_INT': X = RM-EP/2.
-  else             : X = RM+EP/2.
-  if abs(ORIEN-45.0)<0.01: SIG =  1.
-  else                   : SIG = -1.
-  f_ASCFON = - SIG*X*RC/(2.*RM*sin(AZIMR)) * (                       \
-                  log ( RM/X+RM/RC*(cos(AZIMR)-                      \
-                         sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) +           \
-                        sqrt( 1.+( RM/X+RM/RC*(cos(AZIMR)-           \
-                         sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) )**2 )      \
-                       )                                             \
-                  - log ( RM/X+RM/RC*cos(AZIMR)                      \
-                       + sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2)       \
-                                            )      )                 \
-               - SIG*X*RC/(2.*RM*SIN(AZIMR)) *                       \
-      (    ( RM/X+RM/RC* ( cos(AZIMR)-                               \
-                           sin(AZIMR)*SIG*Y/(sqrt(2.0)*RM) )         \
-                    )  * sqrt( 1. + ( RM/X+RM/RC*(cos(AZIMR)-        \
-                         sin(AZIMR)*SIG*Y/(SQRT(2.)*RM)) )**2 )      \
-                    - ( RM/X+RM/RC*COS(AZIMR) )                      \
-                       * sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2)       \
-                                                  )                  \
-                    - 2.0*AXEC 
-  return f_ASCFON
-
-# ------------------------------------------------------------------------------
-def ASCFIS(ALPHA, RM, RC, EP, SUREP, GEOM, AXEA,
-           AXEC, AZIM, POS, SF, DSF, BETA, ORIEN):
-  """
-  MACR_ASCOUF_MAIL ASCFIS
-  taille initiale du defaut fissure sur la plaque en
-  fonction des donnees sur le coude ou le tube suivant la
-  transformation choisie
-
-  ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
-  ALPHA = ANGLE DU COUDE
-  RM    = RAYON MOYEN DU COUDE
-  RC    = RAYON DE CINTRAGE DU COUDE
-  EP    = EPAISSEUR DU COUDE
-  SUREP = VALEUR DE LA SUREPAISSEUR
-  GEOM  = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)   
-  AXEA  = PROFONDEUR FISSURE (DEMI PETIT AXE)
-  AXEC  = DEMI GRAND AXE FISSURE
-  AZIM  = POSITION AZIMUTALE DU CENTRE DE LA FISSURE 
-  POS   = POSITION EN PEAU (EXTERNE OU INTERNE)
-  SF    = ABCISSE CURVILIGNE LONGITUDINALE DU CENTRE DE LA FISSURE
-  DSF   = BOOLEEN EXPRESSION POSITION CENTRE FISSURE 
-  BETA  = POSITION ANGULAIRE DU CENTRE DE LA FISSURE
-  ORIEN = ORIENTATION DE LA FISSURE
-
-  -----------------DONNEES RENVOYEES-----------------------
-
-  AXEAP = PROFONDEUR DE LA FISSURE (PETIT AXE) SUR LA PLAQUE
-  AXECP = LONGUEUR DE LA FISSURE (GRAND AXE) SUR LA PLAQUE
-  SFP   = ABCISSE CURVILIGNE LONGITUDINALE CENTRE FISSURE
-          SUR LA PLAQUE
-
-  """
-  from Utilitai import funct_root
-  if POS=='DEB_INT':
-     if (AZIM>=120.) and (AZIM<=240.0): X = RM-EP/2.0 - SUREP
-     else:                              X = RM-EP/2.0
-  else:                                 X = RM+EP/2.0
-  AZIMR = AZIM*2.0*pi/360.0 
-#
-# -- CALCUL COTE AXIALE DU CENTRE FISSURE SUR LA PLAQUE EN FONCTION
-#    DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE OU DE LA POSITION
-#    ANGULAIRE 
-#
-  if DSF:
-    if GEOM=='COUDE': SFP = SF/(1.0+X/RC*cos(AZIMR))
-    else :            SFP = SF
-  else :
-    BETAR = BETA*2.0*pi/360.0
-    if (GEOM=='COUDE'):
-       SF  = BETAR*(RC+X*cos(AZIMR))
-       SFP = SF/(1.0+X/RC*cos(AZIMR))
-    else:
-       SF  = BETAR*RC
-       SFP = SF
-  if (GEOM=='COUDE'): print 'COTE AXIALE CENTRE FISSURE SUR COUDE : %.2f'%SF
-  if (GEOM=='TUBE') : print 'COTE AXIALE CENTRE FISSURE SUR TUBE  : %.2f'%SF 
-  print 'COTE AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
-#
-#   ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
-#   DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA 
-#   PARTIE RESTANT DANS LE COUDE.
-#
-  if (GEOM=='COUDE'): DIST = ALPHA*2.0*pi/360.0*(RC+X*cos(AZIMR))
-  else              : DIST = ALPHA*2.0*pi/360.0*RC
-  BCOUD = 0.0
-  BEMB  = 0.0
-  if abs(ORIEN)<0.01:
-# -- FISSURE LONGITUDINALE (0 DEGRE)
-     BSUP = SF + AXEC
-     BINF = SF - AXEC
-     if BSUP>DIST:
-       BCOUD = DIST - BINF
-       BEMB  = BSUP - DIST
-     elif BINF<0. :
-       BCOUD = BSUP 
-       BEMB  = abs(BINF)
-     elif (BINF>=0. and BSUP<=DIST):
-       BCOUD = 2.0*AXEC
-  elif abs(ORIEN-90.)<0.01:
-# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
-     BSUP = SF
-     BINF = SF
-     if BSUP>DIST:
-       BCOUD = DIST - BINF
-       BEMB  = BSUP - DIST
-     elif BINF<0. :
-       BCOUD = BSUP 
-       BEMB  = abs(BINF)
-     elif (BINF>=0. and BSUP<=DIST):
-       BCOUD = 2.0*AXEC
-  else:
-# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
-     BSUP = SF + sqrt(2.0)/2.0*AXEC
-     BINF = SF - sqrt(2.0)/2.0*AXEC
-     if BSUP>DIST:
-       BCOUD = (DIST - BINF)*sqrt(2.0)
-       BEMB  = (BSUP - DIST)*sqrt(2.0)
-     elif BINF<0. :
-       BCOUD = BSUP *sqrt(2.0)
-       BEMB  = abs(BINF)*sqrt(2.0)
-     elif (BINF>=0. and BSUP<=DIST):
-       BCOUD = 2.0*AXEC
-  print 'PARTIE DU GRAND AXE DANS LE COUDE  : %.2f'%BCOUD
-  print 'PARTIE DU GRAND AXE DANS L EMBOUT  : %.2f'%BEMB
-#
-# -- CALCUL DE LA TAILLE DU GRAND AXE FISSURE SUR LA PLAQUE
-#
-  NEWT=0
-  if abs(ORIEN)<0.01:
-# -- FISSURE LONGITUDINALE (0 DEGRE)
-    if GEOM=='COUDE': AXECP = BCOUD/(1.0+X/RC*cos(AZIMR)) + BEMB
-    else            : AXECP = BCOUD + BEMB
-  elif abs(ORIEN-90.)<0.01:
-# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
-    AXECP = (BCOUD+BEMB)*RM/X
-  else :
-    if GEOM=='COUDE':
-#   ------- TRANSFORMATION COUDE
-       if AZIM in (0.,180.):
-# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
-          AXECP = BCOUD*RM*sqrt(2.)/( X*sqrt(1.+(RM/X+RM/RC*cos(AZIMR))**2) )+\
-                  BEMB*sqrt( (1.0+(X/RM)**2)*0.5 )
-       else :
-# -- FISSURE A +/- 45 DEGRES AILLEURS
-          AXECP = funct_root.root(ASCFON,(BCOUD-1.,BCOUD+1.))
-          AXECP = AXECP + BEMB*sqrt( (1.+(X/RM)**2)*0.5 )
-          AXECC = ASCFON(AXECP)+BCOUD
-          NEWT=1
-    elif GEOM=='TUBE':
-       AXECP = (BCOUD+BEMB)*sqrt( (1.+(X/RM)**2)*0.5 ) 
-    else :
-       AXECP = BCOUD + BEMB
-#
-  if GEOM=='COUDE':
-    print 'TAILLE GRAND AXE COUDE DONNE : %.2f'%(2.*AXEC)
-  elif GEOM=='TUBE':
-    print 'TAILLE GRAND AXE TUBE  DONNE : %.2f'%(2.*AXEC)
-  print 'TAILLE GRAND AXE PLAQUE DEDUIT : %.2f'%AXECP
-  if NEWT:
-    print 'METHODE DE NEWTON FISSURE A 45 DEGRES -->'
-    print 'TAILLE GRAND AXE COUDE RECALCULE : %.2f'%AXECC
-  if GEOM=='COUDE' and BEMB>0. and BSUP>DIST :
-    SFP =  ALPHA*2.*pi*RC/360. - AXECP/2. + BEMB
-    print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
-    print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
-  if GEOM=='COUDE' and BEMB>0. and BINF<0. :
-    SFP = + AXECP/2. - BEMB
-    print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
-    print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
-#
-# -- CORRECTION DU PETIT AXE DE LA FISSURE QUAND CELLE-CI SE TROUVE SUR
-#    LA ZONE DE SUREPAISSEUR
-#
-  ALPHAR = ALPHA*2.*pi/360.
-  ZSUR1  = ALPHAR*RC/10.
-  ZSUR2  = ALPHAR*RC*9./10.
-  YFISS  = (AZIMR-pi/2.)*RM
-  MU = 0.
-  if (AZIM>=120.) and (AZIM<=240.):
-     if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = 1.
-     elif (SFP<=ZSUR1):                MU = SFP/ZSUR1
-     elif (SFP>ZSUR2):                 MU = (ALPHAR*RC-SFP)/ZSUR1
-  elif (AZIM>=90.) and (AZIM<=120.):
-     if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = YFISS/(pi/6.*RM) 
-     elif (SFP<=ZSUR1):                MU = YFISS*SFP/(pi/6.*RM*ZSUR1)
-     elif (SFP>ZSUR2):                 MU = YFISS*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
-  elif (AZIM>=240.) and (AZIM<=270.):
-     if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = (YFISS-5.*pi/6.*RM)/(pi/6.*RM) 
-     elif (SFP<=ZSUR1):                MU = (YFISS-5.*pi/6.*RM)*SFP/(pi/6.*RM*ZSUR1)
-     elif (SFP>ZSUR2):                 MU = (YFISS-5.*pi/6.*RM)*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
-#
-  if SUREP!=0.:
-     AXEAP = AXEA * EP / ( EP + MU*SUREP )
-     print '--> CORRECTION DUE A LA SUREPAISSEUR'     
-     print '--> TAILLE PETIT AXE PLAQUE : %.2f'%AXEAP
-  else: AXEAP = AXEA
-#
-  return AXEAP,AXECP,SFP 
-
-
-# ------------------------------------------------------------------------------
-def ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP,GEOM,SYME):
-  """
-  MACR_ASCOUF_MAIL ASCSEP
-  taille initiale sur la plaque des sous-epaisseurs
-
-  ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
-  ALPHA = ANGLE DU COUDE
-  RM    = RAYON MOYEN DU COUDE
-  RC    = RAYON DE CINTRAGE DU COUDE
-  EP    = EPAISSEUR DU COUDE
-  GEOM  = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)  
-  SYME  = QUART DE STRUCTURE SI 'OUI'
-  """
-  ier=0
-  CG=pi/180.
-#
-# --- BOUCLE SUR L ENSEMBLE DES SOUS-EPAISSEURS
-#
-  i=0
-  for ssep in MCL_SOUS_EPAIS :
-      i=i+1
-      print '-------------------------------------'
-      print 'SOUS-EPAISSEUR NUMERO %d'%i
-      print '-------------------------------------'
-#
-# --- CAS DES SOUS-EPAISSEURS AXISYMETRIQUES 
-#
-      if ssep['TYPE']=='AXIS':
-         print 'SOUS-EPAISSEUR AXISYMETRIQUE : '
-         print 'CALCUL DE LA TAILLE LONGI ENVELOPPE EN INTRADOS (AZIMUT PI)'
-         ssep.ICIRP = 2.*pi*RM
-         ssep.ISCP  =    pi*RM
-         ssep.IPHIC = 180.
-         AZIMC      = pi
-      else:
-#
-# -- CALCUL DE L ABSCISSE CURVILIGNE CIRCONF.SUR LA PLAQUE  
-#    EN FONCTION DE L AZIMUT OU DE L ABSCISSE CURVIL.CIRCONF
-#    SUR LE COUDE DU CENTRE DE LA SOUS-EPAISSEUR
-#    NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
-         if ssep['POSI_CURV_CIRC']!=None:
-           ssep.ISCP  = ssep['POSI_CURV_CIRC']*RM/(RM+EP/2.)
-           AZIMC      = ssep.ISCP/RM
-           ssep.IPHIC = ssep['POSI_CURV_CIRC']/(RM+EP/2.)*180./pi
-           print 'AZIMUT CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%ssep.IPHIC
-         else:
-           ssep.ISCP  = ssep['AZIMUT']*pi*RM/180. 
-           AZIMC      = ssep['AZIMUT']*pi/180.
-           print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%(AZIMC*(RM+EP/2.))
-#
-#    PASSAGE DANS LE REPERE PLAQUE (0,2PI) AVEC ORIGINE FLANC DROIT
-#    CAR L ORIGINE DES DONNEES CIRCONF. EST EN EXTRADOS 
-#
-         if ssep.ISCP>(3.*pi*RM/2.): ssep.ISCP = ssep.ISCP - 3.*pi*RM/2.
-         else:                       ssep.ISCP = ssep.ISCP + pi*RM/2.
-         print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISCP
-#
-# -- CALCUL DE LA TAILLE CIRCONFERENTIELLE 
-#    NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
-         ssep.ICIRP = ssep['AXE_CIRC']*(RM/(RM+EP/2.))
-         if ssep.ICIRP>(2.*pi*RM) :
-            print ' <MACR_ASCOUF_MAIL> ASCSEP valeur hors domaine'
-            print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero : %d'%i
-            print ' <MACR_ASCOUF_MAIL> taille axe circonferentiel : %.2f'%ssep.ICIRP
-            print ' <MACR_ASCOUF_MAIL> bord plaque : %.2f'%2*pi*RM
-            self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-            ier = ier+1
-            return ier
-         print 'TAILLE CIRCONFERENTIELLE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ICIRP
-         print '<=> TAILLE EQUIVALENTE SUR LA CIRCONFERENCE (DEGRES) : %.2f'%(ssep.ICIRP*360./(2.*pi*RM))  
-#
-# -- CALCUL COTE AXIALE DU CENTRE SOUS-EPAISSEUR SUR LA PLAQUE 
-#    EN FONCTION DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE 
-#    OU DE LA POSITION ANGULAIRE
-#    NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
-      if ssep['POSI_CURV_LONGI']!=None:
-         if GEOM=='COUDE':
-            ssep.ISLP = ssep['POSI_CURV_LONGI']/(1.+(RM+EP/2.)/RC*cos(AZIMC))
-            AZIML     = ssep.ISLP/RC
-            print 'ANGLE COUDE CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%(AZIML*180./pi)
-         else :
-            ssep.ISLP = ssep['POSI_CURV_LONGI']
-         if (SYME in ('QUART','DEMI')) and (ssep.ISLP!=ALPHA*CG*RC/2.) :
-            print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
-            print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
-            self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-            ier = ier+1
-            return ier
-      else :
-         if GEOM=='COUDE':
-            print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%((ssep.BETA)*CG*(RC+(RM+EP/2.)*cos(AZIMC)))
-            AZIML = (ssep.BETA)*CG
-         else :
-            print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR TUBE  : %.2f'%((ssep.BETA)*CG*RC)
-         ssep.ISLP =  (ssep.BETA)*CG*RC
-         if (SYME in ('QUART','DEMI')) and (ssep.BETA!=ALPHA/2.) :
-            print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
-            print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
-            self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-            ier = ier+1
-            return ier
-      print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
-#
-# -- CALCUL DE LA TAILLE LONGITUDINALE 
-#    NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
-#   ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
-#   DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA 
-#   PARTIE RESTANT DANS LE COUDE.
-#
-      if GEOM=='COUDE' : DIST = ALPHA*CG*(RC+(RM+EP/2.)*cos(AZIMC))
-      else             : DIST = ALPHA*CG*RC
-      if ssep['POSI_CURV_LONGI']!=None:
-         BSUP = ssep['POSI_CURV_LONGI']+ssep['AXE_LONGI']/2.
-         BINF = ssep['POSI_CURV_LONGI']-ssep['AXE_LONGI']/2.
-      else:
-         if GEOM=='COUDE' :
-            BSUP = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))+ssep['AXE_LONGI']/2.
-            BINF = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))-ssep['AXE_LONGI']/2.
-         else:
-            BSUP = ssep.BETA*CG*RC + ssep['AXE_LONGI']/2.
-            BINF = ssep.BETA*CG*RC - ssep['AXE_LONGI']/2.
-      BCOUD1 = 0.
-      BCOUD2 = 0.
-      BEMB1  = 0.
-      BEMB2  = 0.
-      if BINF<0. and BSUP>DIST :
-         BCOUD1 = DIST
-         BEMB1  =  abs(BINF) + BSUP-DIST
-      elif BSUP>DIST :
-         BCOUD1 = DIST - BINF
-         BEMB1  = BSUP - DIST
-      elif BINF<0 :
-         BCOUD2 = BSUP
-         BEMB2  = abs(BINF)
-      elif (BINF>=0. and BSUP<=DIST) :
-         BCOUD1 = ssep['AXE_LONGI']
-      BCOUD = BCOUD1+ BCOUD2
-      BEMB  = BEMB1 + BEMB2
-      if GEOM=='COUDE' : BPLAQ = BCOUD/(1.+(RM+EP/2.)/RC*cos(AZIMC))
-      else             : BPLAQ = BCOUD
-      ssep.ILONP = BPLAQ+BEMB
-      if BEMB1>0.:
-         ssep.ISLP =  ALPHA*CG*RC - ssep.ILONP/2. + BEMB1
-         print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
-         print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
-      if BEMB2>0.:
-         ssep.ISLP =  ssep.ILONP/2. - BEMB2
-         print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
-         print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
-      if ssep.ISLP<0.            : ssep.ISLP = 0.
-      if (ssep.ISLP>ALPHA*CG*RC) : ssep.ISLP = ALPHA*CG*RC 
-#
-#     SI LE CENTRE DE LA SOUS-EP CALCULE SUR LA PLAQUE EST DANS L EMBOUT
-#     ON CORRIGE SA POSITION EN LE METTANT A L INTERFACE SINON CA PLANTE
-#     DANS LA PROC DE MAILLAGE (A AMELIORER)
-#
-      print 'TAILLE LONGITUDINALE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ILONP
-      print '<=> TAILLE EQUIVALENTE PAR RAPPORT A L ANGLE DU COUDE (DEGRES): %.2f'%(ssep.ILONP*360/(2*pi*RC))  
-#
-  return ier
-
-# ------------------------------------------------------------------------------
-def ASCTCI(MCL_SOUS_EPAIS,RM):
-  """
-  MACR_ASCOUF_MAIL ASCTCI
-  APPELEE DANS : ASCSYM et ASCPRE
-  CALCUL TABLEAU TRIE DES ABSCISSES DES CENTRES DE SOUS-EPAISSEURS
-
-  ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
-  RM    = RAYON MOYEN DU COUDE
-
-  -----------------DONNEES RENVOYEES-----------------------
-
-  IABSC1 = CORRESPONDANCE ABSC. CURVI. CIRCONF. SOUS-EP. I
-  IABSC2 = CORRESPONDANCE ABSC. GAUCHE ET DROITE CIRCONF. SOUS-EP. I
-  COORXD = ABSC. DU BORD DROIT DE LA SOUS-EP I
-  COORXG = ABSC. DU BORD GAUCHE DE LA SOUS-EP I
-
-  """
-#
-# --- tri du tableau des abscisses curvilignes circonf. plaque
-#
-  TAMPON = []
-  COORXG = []
-  COORYG = []
-  i=0
-  for ssep in MCL_SOUS_EPAIS :
-      i=i+1
-      if (ssep.ISCP>2.*pi*RM) or (ssep.ISCP<0.) : 
-         print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
-         print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
-         print ' <MACR_ASCOUF_MAIL> ABSC. CURV. CIRCONF.  :%.2f'%ssep.ISCP
-         print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :%.2f'%(2.*pi*RM)
-         self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-         ier = ier+1
-         return ier
-      TAMPON.append((ssep.ISCP,i))
-  TAMPON.sort()
-  IABSC1=[]
-  for j in range(i):
-    IABSC1.append(TAMPON[j][1])
-  print
-  print 'TRI DES CENTRES ABSC. CURV. CIRCONF. :'
-  print '------------------------------------'
-  i=0
-  for ssep in TAMPON :
-    i=i+1
-    print '%d) SOUS-EP NO %d <> XC = %.2f'%(i,ssep[1],ssep[0])
-#
-# --- calcul des abcisses droites et gauches des sous-epaisseurs
-#
-  COORXD=[]
-  COORXG=[]
-  for bid in TAMPON :
-      XG=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
-      if XG<0.       : XG=XG+2.*pi*RM
-      COORXG.append(XG)
-      XD=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
-      if XD>2.*pi*RM : XD=XD-2.*pi*RM
-      COORXD.append(XD)
-#
-# --- tri des bornes d'intervalles en abscisse
-#
-  TAMPON = []
-  for j in range(len(MCL_SOUS_EPAIS)):
-    TAMPON.append((COORXG[j],2*j+1))
-    TAMPON.append((COORXD[j],2*j+2))
-  TAMPON.sort() 
-  IABSC2=[]
-  for j in range(2*len(MCL_SOUS_EPAIS)):
-    IABSC2.append(TAMPON[j][1])
-  print
-  print 'TRI DES INTERVALLES G ET D ABSC. CURV. CIRCONF. :'
-  print '-----------------------------------------------'  
-  for j in range(2*len(MCL_SOUS_EPAIS)):
-    if fmod(IABSC2[j],2):
-       print '%d) SOUS-EP NO %d <> XG = %.2f'%(j+1,IABSC1[IABSC2[j]/2],TAMPON[j][0])
-    else:
-       print '%d) SOUS-EP NO %d <> XD = %.2f'%(j+1,IABSC1[IABSC2[j]/2-1],TAMPON[j][0])
-#    
-  return TAMPON,IABSC1,IABSC2,COORXD,COORXG
-
-# ------------------------------------------------------------------------------
-def ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM):
-  """
-  MACR_ASCOUF_MAIL ASCTLO
-  APPELEE DANS : ASCSYM et ASCPRE
-  CALCUL TABLEAU TRIE DES ORDONNEES DES CENTRES DE SOUS-EPAISSEURS
-
-  ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
-  RC     = RAYON MOYEN DU COUDE
-  ALPHA  = ANGLE DU COUDE
-  LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
-  LTCLIM  = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-
-  -----------------DONNEES RENVOYEES-----------------------
-
-  IORDO1 = CORRESPONDANCE ORDO. CURVI. LONGIT. SOUS-EP. I
-  IORDO2 = CORRESPONDANCE ORDO. GAUCHE ET DROITE LONGIT. SOUS-EP. I
-  COORYI = ORDONNEE. DU BORD INTERIEUR DE LA SOUS-EP I
-  COORYS = ORDONNEE. DU BORD SUPERIEUR DE LA SOUS-EP I
-
-  """
-#
-# tri du tableau des abscisses curvilignes axiales plaque
-#
-  ALPHAR = 2.*ALPHA*pi/360.
-  TAMPON = []
-  i=0
-  for ssep in MCL_SOUS_EPAIS :
-      i=i+1
-      if (ssep.ISLP>ALPHAR*RC) or (ssep.ISLP<0.) : 
-         print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
-         print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
-         print ' <MACR_ASCOUF_MAIL> ABSC. CURV. LONGIT.  :%.2f'%ssep.ISLP
-         print ' <MACR_ASCOUF_MAIL> BORDS PLAQUE :%.2f'%(ALPHAR*RC)
-         self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-         ier = ier+1
-         return ier
-      TAMPON.append((ssep.ISLP,i))
-  TAMPON.sort()
-  IORDO1=[]
-  for j in range(i):
-    IORDO1.append(TAMPON[j][1])
-  print
-  print 'TRI DES CENTRES ABSC. CURV. LONGIT. :'
-  print '------------------------------------'
-  i=0
-  for ssep in TAMPON :
-    i=i+1
-    print '%d) SOUS-EP NO %d <> YC = %.2f'%(i,ssep[1],ssep[0])
-#
-# calcul des abscisses sup. et inf. des sous-ep.
-#
-  COORYI=[]
-  COORYS=[]
-  EPS=0.000000000001
-  for bid in TAMPON :
-      i=i+1
-      YI=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
-      YS=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
-      if fabs(bid[0])<EPS : 
-         YI=-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
-         YS=MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
-      if fabs(bid[0]-ALPHAR*RC)<EPS :
-         YI=ALPHAR*RC-(MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.)
-         YS=ALPHAR*RC+(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
-      if YI<(-LTCHAR):
-         print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
-         print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
-         print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR  :',YI
-         print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',-LTCHAR
-         self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-         ier = ier+1
-         return ier
-      if YS>(ALPHAR*RC+LTCLIM):
-         print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
-         print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
-         print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR  :',YS
-         print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',ALPHAR*RC+LTCLIM
-         self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-         ier = ier+1
-         return ier
-      COORYI.append(YI) 
-      COORYS.append(YS)
-#
-# tri des bornes d'intervalles en abscisse
-#
-  TAMPON = []
-  for j in range(len(MCL_SOUS_EPAIS)):
-    TAMPON.append((COORYI[j],2*j+1))
-    TAMPON.append((COORYS[j],2*j+2))
-  TAMPON.sort() 
-  IORDO2=[]
-  for j in range(2*len(MCL_SOUS_EPAIS)):
-    IORDO2.append(TAMPON[j][1])      
-  print
-  print 'TRI DES INTERVALLES I ET S ABSC. CURV. LONGIT. :'
-  print '-----------------------------------------------'
-  for j in range(2*len(MCL_SOUS_EPAIS)):
-    if fmod(IORDO2[j],2):
-       print '%d) SOUS-EP NO %d <> YI = %.2f'%(j+1,IORDO1[IORDO2[j]/2],TAMPON[j][0])
-    else:
-       print '%d) SOUS-EP NO %d <> YS = %.2f'%(j+1,IORDO1[IORDO2[j]/2-1],TAMPON[j][0])
-#
-  return TAMPON,IORDO1,IORDO2,COORYI,COORYS
-#
-#
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL ASCNBE
-#     APPELEE DANS : ASCSYM et ASCPRE
-#     CALCUL DU NOMBRE D'ELEMENTS LONGI ET CIRCONF. DANS LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-#     COORXG = ABSCISSE DU BORD GAUCHE DE LA SOUS-EPAISSEUR I
-#     COORXD = ABSCISSE DU BORD DROIT DE LA SOUS-EPAISSEUR I
-#     COORYI = ORDONNEE DU BORD INFERIEUR DE LA SOUS-EPAISSEUR I
-#     COORYS = ORDONNEE DU BORD SUPERIEUR DE LA SOUS-EPAISSEUR I
-#     BD     = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
-#     BG     = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
-#     BS     = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
-#     BI     = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
-#     DNX    = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
-#     DNY    = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
-#     INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
-#     INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
-#     RM     = RAYON MOYEN DU COUDE
-#     RC     = RAYON DE CINTRAGE DU COUDE
-#     IABSC1 = CORRESPONDANCE ABSCISSE CURVILIGNE CIRCONF. SOUS-EP. I
-#     IORDO1 = CORRESPONDANCE ABSCISSE CURVILIGNE LONGIT. SOUS-EP. I
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-#     NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
-#     NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
-#
-# ------------------------------------------------------------------------------
-def ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,DNX,DNY,RM,RC,
-           INDSEX,INDSEY,IABSC1,IORDO1):
-#
-#  calcul du nombre d'elements longi. et circonf. dans les sous-epaisseurs:
-#
-  print
-  print 'DETERMINATION DU NOMBRE D''ELEMENTS DANS LES SOUS-EPAISSEURS :'
-  print '------------------------------------------------------------'
-  NLX=[0]*len(MCL_SOUS_EPAIS)
-  NLY=[0]*len(MCL_SOUS_EPAIS)
-  for j in range(len(BD)):
-    if INDSEX[j]!=0:
-#      calcul au passage du nombre d'elements sur chaque zone circonf.   
-       RNBEL = (BD[j]-BG[j])*360./(DNX[2*j]*2.*pi*RM)
-       RNBEL2 = RNBEL - floor(RNBEL)
-       if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
-       else             : NBEL=int(floor(RNBEL))+1
-       if NBEL <= 1 :     NBEL=2
-#      calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.       
-       for i in range(len(MCL_SOUS_EPAIS)):
-         l=IABSC1[i]-1
-         if ((COORXG[l]<COORXD[l] and BG[j]>=COORXG[l] and BD[j]<=COORXD[l])\
-         or (COORXG[l]>=COORXD[l] and (BG[j]<=COORXG[l] or BD[j]>=COORXD[l]))):
-            NLX[i]=NLX[i]+NBEL
-            print 'SOUS-EP NO %d ZONE CIRC. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
-
-  for j in range(len(BS)):
-    if INDSEY[j]!=0:
-#      calcul au passage du nombre d'elements sur chaque zone longi.      
-       RNBEL = ((BS[j]-BI[j])*360.)/(DNY[2*j]*2.*pi*RC)
-       RNBEL2 = RNBEL - floor(RNBEL)
-       if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
-       else             : NBEL=int(floor(RNBEL))+1
-       if NBEL <= 1 :     NBEL=2
-#      calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.       
-       i=0
-       for i in range(len(MCL_SOUS_EPAIS)):
-         l=IORDO1[i]-1
-         if (BI[j]>=COORYI[l] and BS[j]<=COORYS[l]):
-            NLY[i]=NLY[i]+NBEL
-            print 'SOUS-EP NO %d ZONE LONGI. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
-
-  for j in range(len(NLX)):
-    print 'SOUS-EP NO %d NBE TOTAL ELEMENTS CIRCONF. : %d'%(j+1,NLX[j])
-    print 'SOUS-EP NO %d NBE TOTAL ELEMENTS LONGI.   : %d'%(j+1,NLY[j])
-
-#
-  return NLX,NLY
-#
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL ASCSYM
-#     PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE AVEC
-#     SOUS-EPAISSEURS :
-#     CAS D UNE SOUS-EPAISSEUR DANS LE PLAN DE SYMETRIE 
-#     CONSTRUCTION D UN QUART DU MAILLAGE
-#     - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES 
-#     - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-#     RM    = RAYON MOYEN DU COUDE
-#     RC    = RAYON DE CINTRAGE DU COUDE
-#     ALPHA = ANGLE DU COUDE
-#     LT    = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
-#     LGV   = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
-#     NBSEP = NOMBRE DE SOUS-EPAISSEURS
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-#     NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-#     NZONEY = NOMBRE DE ZONES LONGITUDINALES       
-#
-# ------------------------------------------------------------------------------
-def ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM):
-  ier=0
-  DERAFC = 18.
-  DERAFL =  5.       
-  INDSEX = []
-  INDSEY = []
-  BG     = []
-  BD     = []
-  INDBG  = []
-  INDBD  = []
-  DNX    = []
-
-#
-# --- tri des donnees sous-ep. en circonferentiel
-  TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
-#
-# --- calcul des zones en circonferentiel
-#
-  ssep=MCL_SOUS_EPAIS[0]
-  if (ssep.ISCP<pi*RM) :
-#
-#     le centre sous-ep est dans la zone flanc droit/extrados/flanc
-#     gauche, on preleve pi*RM a droite de la sous-epaisseur
-#
-#          zone (centre sous-ep , bord droit)
-#
-     BG.append(ssep.ISCP)
-     BG.append(ssep.ISCP+ssep.ICIRP/2.)
-     BD.append(ssep.ISCP+ssep.ICIRP/2.)
-     BD.append(ssep.ISCP+pi*RM)
-     INDBG.append(0)
-     INDBG.append(1)
-     INDBD.append(0)
-     INDBD.append(0)
-     DNX.append(ssep.IDENC)
-     DNX.append(0)
-     DNX.append(DERAFC)
-     DNX.append(0)
-     INDSEX.append(1)
-     INDSEX.append(0)
-  elif (ssep.ISCP+pi*RM==2.*pi*RM) :
-#
-#     sous-ep axisymetrique : on preleve pi*RM a droite
-#
-#       zone (centre sous-ep , bord droit)
-#
-     BG.append(ssep.ISCP)
-     BD.append(ssep.ISCP+ssep.ICIRP/2.)
-     INDBG.append(0)
-     INDBD.append(0)
-     DNX.append(ssep.IDENC)
-     DNX.append(0)
-     INDSEX.append(1)
-     INDSEX.append(0)
-  else :
-#
-#     le centre sous-ep est dans la zone flanc gauche/intrados/flanc 
-#     droit : on preleve pi*RM a gauche de la sous-epaisseur
-#
-#            zone (centre -pi*RM, bord gauche)
-#
-     BG.append(ssep.ISCP-pi*RM)
-     BG.append(ssep.ISCP-ssep.ICIRP/2.)
-     BD.append(ssep.ISCP-ssep.ICIRP/2.)
-     BD.append(ssep.ISCP)
-     INDBG.append(0)
-     INDBG.append(0)
-     INDBD.append(1)
-     INDBD.append(0)
-     DNX.append(DERAFC)
-     DNX.append(0)
-     DNX.append(ssep.IDENC)
-     DNX.append(0)     
-     INDSEX.append(0)
-     INDSEX.append(1)
-
-
-  print
-  print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
-  print '---------------------------------------------'
-  EPS=0.000000000001
-  NZONEX=len(BG)
-  for j in range(NZONEX) :
-    if ( fabs(BG[j]) < EPS ) and ( fabs(BD[j]) < EPS ) :
-      print 'ZONE NO %d BORNE GAUCHE = %.2f'\
-      ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(j+1,BG[j],BD[j])
-    else:
-      print 'ZONE NO %d BORNE GAUCHE = %.2f'\
-      ' / BORNE DROITE = %.2f'%(j+1,BG[j],BD[j])
-
-    
-# tri des donnees sous-epaisseurs en axial
-  TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
-
-# calcul des zones en axial:
-  BI     = []
-  BS     = []
-  INDBI  = []
-  INDBS  = []
-  DNY    = []
-  INDSEY = []
-  ssep   = MCL_SOUS_EPAIS[0]
-  BI.append(0.)
-  BI.append(ssep.ISLP-ssep.ILONP/2.)
-  BS.append(ssep.ISLP-ssep.ILONP/2.)
-  BS.append(ssep.ISLP)
-  INDBI.append(0)  
-  INDBI.append(0)
-  INDBS.append(1)
-  INDBS.append(0)
-  DNY.append(DERAFL)
-  DNY.append(0)
-  DNY.append(ssep.IDENL)
-  DNY.append(0)
-  INDSEY.append(0)
-  INDSEY.append(1)
-  print
-  print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
-  print '-----------------------------------------------'
-  NZONEY=len(BI)
-  for j in range(NZONEY) :
-    if ( fabs(BI[j]) < EPS ) and ( fabs(BS[j]) < EPS ) :
-      print 'ZONE NO %d <> BORNE INF. = %.2f'\
-      ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j])
-    else:
-      print 'ZONE NO %d <> BORNE INF. = %.2f'\
-      ' / BORNE SUP. = %.2f'%(j+1,BI[j],BS[j])
-# calcul du nombre d'elements longi. et circonf. dans les soue-ep
-  NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
-                 DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
-
-  return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
-################################################################################
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL ASCPRE
-#     PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE 
-#     SOUS-EPAISSEURS :
-#     - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES 
-#     - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-#     RM    = RAYON MOYEN DU COUDE
-#     RC    = RAYON DE CINTRAGE DU COUDE
-#     ALPHA = ANGLE DU COUDE
-#     LT    = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
-#     LGV   = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
-#     NBSEP = NOMBRE DE SOUS-EPAISSEURS
-#     SYME  = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-#     NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-#     NZONEY = NOMBRE DE ZONES LONGITUDINALES       
-#
-# ------------------------------------------------------------------------------
-def ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM):
-  ier=0
-  ALPHAR = 2.*ALPHA*pi/360.
-  DERAFC = 18.
-  DERAFL =  5.
-  EPSI   =  0.001      
-  NBSEP  = len(MCL_SOUS_EPAIS)
-  print 'RECHERCHE DES ZONES DE SOUS-EPAISSEURS DANS LE COUDE\n'
-  
-# tri des donnees sous-epaisseurs en circonferentiel
-  TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
-# --- calcul des recouvrements de zones en circonferentiel
-#
-  NZONEX=0
-  j=0
-  ICE=1
-  NBGAU=0
-  NBDRO=0
-  TYPG=0
-  TYPD=0
-  go10=1
-  go20=1
-#
-  BG    =[]
-  BD    =[]
-  INDBG =[]
-  INDBD =[]
-  DNX   =[]
-  INDSEX=[]
-#
-  
-  while go10:
-   
-    j=j+1      
-#
-#   definition de la zone courante (borne gauche, borne droite)
-#    
-#   TYPG = type de la borne:
-#          0 : borne gauche sous-epaisseur
-#          1 : borne droite sous-epaisseur
-#          2 : centre sous-epaisseur
-#
-    if j>2*NBSEP and ICE<NBSEP :
-#     cas ou il ne reste plus que des centres a caser
-      MING = MIND
-      TYPG = TYPD
-      NUMG = NUMD
-      MIND = 2.*pi*RM+1
-    elif TYPD==2 :
-#     cas ou la borne droite de la zone precedente etait un centre
-      MING = MIND
-      TYPG = TYPD
-      NUMG = NUMD
-      MIND = TAMPON[j-1][0]
-      if fmod(IABSC2[j-1],2):
-        TYPD = 0
-        NUMD = IABSC1[IABSC2[j-1]/2]
-      else:
-        TYPD = 1
-        NUMD = IABSC1[IABSC2[j-1]/2-1]
-      j=j-1
-    else:
-      if j>= 2*NBSEP :
-        MIND = TAMPON[2*NBSEP-1][0]
-        MING = MIND
-        if fmod(IABSC2[2*NBSEP-1],2):
-          TYPG = 0
-          NUMG = IABSC1[IABSC2[2*NBSEP-1]/2]
-        else:
-          TYPG = 1
-          NUMG = IABSC1[IABSC2[2*NBSEP-1]/2-1]
-        TYPD=TYPG
-        NUMD=NUMG
-      else:
-        MING=TAMPON[j-1][0]
-        MIND=TAMPON[j][0]
-        if fmod(IABSC2[j-1],2):
-          TYPG = 0
-          NUMG = IABSC1[IABSC2[j-1]/2]
-        else:
-          TYPG = 1
-          NUMG = IABSC1[IABSC2[j-1]/2-1]
-        if fmod(IABSC2[j],2):
-          TYPD = 0
-          NUMD = IABSC1[IABSC2[j]/2]
-        else:
-          TYPD = 1
-          NUMD = IABSC1[IABSC2[j]/2-1]
-    if fabs(MING-MIND)<EPSI : 
-      if j==2*NBSEP:break
-      else:continue
-    if j>2*NBSEP and ICE>=NBSEP: 
-        break #on sort de la boucle
-
-    while go20:
-      i=ICE
-      if i<=NBSEP:
-#       recherche des centres a intercaler
-        INDC=IABSC1[i-1]
-        if i>1:
-#         le centre est deja le meme que precedent
-          if fabs(MCL_SOUS_EPAIS[INDC-1].ISCP-MCL_SOUS_EPAIS[IABSC1[i-2]-1].ISCP) < EPSI :
-            ICE=ICE+1
-            continue
-        if MCL_SOUS_EPAIS[INDC-1].ISCP < MING :
-#          le centre est la nouvelle borne gauche
-           j=j-1
-           MIND = MING
-           TYPD = TYPG
-           NUMD = NUMG
-           MING = MCL_SOUS_EPAIS[INDC-1].ISCP
-           TYPG = 2
-           NUMG = INDC
-           ICE = ICE+1
-        elif MCL_SOUS_EPAIS[INDC-1].ISCP < MIND : 
-#          le centre est la nouvelle borne droite  
-           MIND = MCL_SOUS_EPAIS[INDC-1].ISCP
-           TYPD = 2
-           NUMD = INDC
-           ICE = ICE+1
-           continue
-        else:pass
-      NZONEX=NZONEX+1
-#    
-#     codes d'intervalles de zones
-#        0 0 = zone sous-ep.
-#        0 1 = sous-ep. a droite de la zone
-#        1 0 = sous-ep. a gauche de la zone
-#        1 1 = sous-ep. a droite et a gauche de la zone  
-#
-#     cas ou la premiere zone ne commence pas au bord de la plaque
-      if MING>0. and NZONEX==1 :
-        BG.append(0.)
-        BD.append(MING)
-        if TYPG==0:
-           INDBG.append(0)
-           INDBD.append(1)
-           DNX.append(DERAFC)
-           DNX.append(0)
-           INDSEX.append(0)
-        elif TYPG==1 or TYPG==2:
-           INDBG.append(0)
-           INDBD.append(0)
-           DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
-           DNX.append(0)
-           INDSEX.append(NUMG)
-        else: pass
-        NZONEX=NZONEX+1
-#
-      BG.append(MING)
-      BD.append(MIND)  
-#
-      if TYPG == 0:
-#       borne gauche zone = borne gauche ssep       
-        NBGAU=NBGAU+1
-        INDBG.append(0)
-        INDBD.append(0)
-        if TYPD == 0:
-#         borne droite zone = borne gauche ssep
-          DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
-          DNX.append(0)
-          INDSEX.append(NUMG)
-        elif TYPD == 1 or TYPD == 2:
-#         borne droite zone = borne droite ssep : TYPD=1
-#         borne droite zone = centre ssep : TYPD=2
-          LTMP=[]
-          LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
-          LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
-          LTMP.sort()
-          DNX.append(LTMP[0][0])
-          DNX.append(0)
-          INDSEX.append(LTMP[0][1])
-        else: pass
-#
-      elif TYPG == 1:
-#       borne gauche zone = borne droite ssep  
-        NBDRO = NBDRO+1  
-        if TYPD == 0:
-#         borne droite zone = borne gauche ssep
-          if NBDRO==NBGAU:
-            INDBG.append(1)
-            INDBD.append(1)
-            DNX.append(DERAFC)
-            DNX.append(0)
-            INDSEX.append(0)
-          else:
-#           cas tordu: une sous-ep enveloppe le tout
-            INDBG.append(0)
-            INDBD.append(0)
-            DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
-            DNX.append(0)    
-            INDSEX.append(NUMG)
-        elif TYPD == 1 or TYPD == 2:
-#         borne droite zone = borne droite ssep : TYPD=1
-#         borne droite zone = centre ssep : TYPD=2
-          INDBG.append(0)
-          INDBD.append(0)
-          DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
-          DNX.append(0)
-          INDSEX.append(NUMD)  
-        else: pass
-#                
-      elif TYPG == 2:
-#       borne gauche zone = centre ssep  
-        INDBG.append(0)
-        INDBD.append(0)
-        if TYPD == 0:
-#         borne droite zone = borne gauche ssep
-          DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
-          DNX.append(0)
-          INDSEX.append(NUMG)  
-        elif TYPD == 1 or TYPD == 2:
-#         borne droite zone = borne droite ssep : TYPD=1
-#         borne droite zone = centre ssep : TYPD=2
-          LTMP=[]
-          LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
-          LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
-          LTMP.sort()
-          DNX.append(LTMP[0][0])
-          DNX.append(0)
-          INDSEX.append(LTMP[0][1])
-        else:pass
-      else:pass
-      if j<=(2*NBSEP-2) or ICE<=NBSEP or (TYPD==2 and j<2*NBSEP):
-         iout=0       
-         break #on retourne dans la boucle go10
-      else :
-         iout=1
-         break #on sort definitivement 
-    if iout:break
-      
-  if MIND<2.*pi*RM:
-    NZONEX=NZONEX+1
-    BG.append(MIND)
-    BD.append(2.*pi*RM)
-    if TYPD==0 or TYPD==2:
-      INDBG.append(0)
-      INDBD.append(0)
-      DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
-      DNX.append(0)
-      INDSEX.append(NUMD)
-    elif TYPD==1:
-      INDBG.append(1)
-      INDBD.append(0)
-      DNX.append(DERAFC)
-      DNX.append(0)
-      INDSEX.append(0)
-    else:pass
-
-# au cas ou 2.*pi*RM correspond a une borne d'intevalle de sous-ep ou a
-#  un centre de sous-ep.
-  if fabs(BG[NZONEX-1]-BD[NZONEX-1])<EPSI: NZONEX = NZONEX-1
-
-  print
-  print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
-  print '-----------------------------------------------'
-  for j in range(NZONEX) :
-    if INDBG[j]==0 and INDBD[j]==0 :
-      print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
-      ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(BG[j],BD[j])
-    else:
-      print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
-      ' / BORNE DROITE = %.2f'%(BG[j],BD[j])
-
-      
-# --- tri des donnees sous-ep. en axial
-  TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
-
-  BI     = []
-  BS     = []
-  INDBI  = []
-  INDBS  = []
-  DNY    = []
-  INDSEY = []
-
-  if SYME == 'DEMI':
-#   calcul des zones en axial :
-#   zones  (0,bord inferieur) et (bord inferieur,centre sous-ep.) 
-    ssep   = MCL_SOUS_EPAIS[0]
-    BI.append(0.)
-    BI.append(ssep.ISLP-ssep.ILONP/2.)
-    BS.append(ssep.ISLP-ssep.ILONP/2.)
-    BS.append(ssep.ISLP)
-    INDBI.append(0)  
-    INDBI.append(0)
-    INDBS.append(1)
-    INDBS.append(0)
-    DNY.append(DERAFL)
-    DNY.append(0)
-    DNY.append(ssep.IDENL)
-    DNY.append(0)
-    INDSEY.append(0)
-    INDSEY.append(1)
-    NZONEY=1
-#     
-  else:
-#
-#   calcul des recouvrements de zones en axial  
-    j = 0
-    ICE = 1
-    NBINF = 0
-    NBSUP = 0
-    TYPI=0
-    TYPS=0
-    go40=1
-    go50=1
-    NZONEY=0
-#
-    while go40:
-      j=j+1      
-#
-#     definition de la zone courante (borne inf, borne sup)
-#
-#     typi = type de la borne
-#            0 : borne inf. sous-ep.
-#            1 : borne sup. sous-ep.
-#            2 : centre sous-ep.   
-#
-      if TYPS==2:
-#       cas ou la borne sup. de la zone prec. etait un centre
-        MINI=MINS
-        TYPI=TYPS
-        NUMI=NUMS
-        MINS=TAMPON[j-1][0]
-        if fmod(IORDO2[j-1],2):
-          TYPS = 0
-          NUMS = IORDO1[IORDO2[j-1]/2]
-        else:
-          TYPS = 1
-          NUMS = IORDO1[IORDO2[j-1]/2-1]
-        j=j-1
-      else:
-        if j>= 2*NBSEP :
-          MINI = TAMPON[2*NBSEP-1][0]
-          MINS = MINI
-          if fmod(IORDO2[2*NBSEP-1],2):
-            TYPI = 0
-            NUMI = IORDO1[IORDO2[2*NBSEP-1]/2]
-          else:
-            TYPI = 1
-            NUMI = IORDO1[IORDO2[2*NBSEP-1]/2-1]
-          TYPS=TYPI
-          NUMS=NUMI
-        else:
-          MINI=TAMPON[j-1][0]
-          MINS=TAMPON[j][0]
-          if fmod(IORDO2[j-1],2):
-            TYPI = 0
-            NUMI = IORDO1[IORDO2[j-1]/2]
-          else:
-            TYPI = 1
-            NUMI = IORDO1[IORDO2[j-1]/2-1]
-          if fmod(IORDO2[j],2):
-            TYPS = 0
-            NUMS = IORDO1[IORDO2[j]/2]
-          else:
-            TYPS = 1
-            NUMS = IORDO1[IORDO2[j]/2-1]
-      if fabs(MINI-MINS)<EPSI:
-        if j==2*NBSEP:break
-        else:continue
-
-      while go50:
-        i=ICE
-        if i<=NBSEP:
-#         recherche des centres a intercaler
-          INDC=IORDO1[i-1]
-          if i>1:
-#           le centre est deja le meme que le precedent
-            if fabs(MCL_SOUS_EPAIS[INDC-1].ISLP-MCL_SOUS_EPAIS[IORDO1[i-2]-1].ISLP)<EPSI:
-             ICE=ICE+1  
-             continue
-          if MCL_SOUS_EPAIS[INDC-1].ISLP<MINI:
-#            le centre est la nouvelle borne inf.
-             j=j-1
-             MINS = MINI
-             TYPS = TYPI
-             NUMS = NUMI
-             MINI = MCL_SOUS_EPAIS[INDC-1].ISLP
-             TYPI = 2
-             NUMI = INDC
-             ICE = ICE+1
-          elif MCL_SOUS_EPAIS[INDC-1].ISLP<MINS:
-#            le centre est la nouvelle borne sup.
-            MINS = MCL_SOUS_EPAIS[INDC-1].ISLP
-            TYPS = 2
-            NUMS = INDC
-            ICE = ICE+1
-            continue
-          else:pass
-        NZONEY=NZONEY+1
-#       
-#       code d'intervalles de zone
-#       0 0  = ZONE SOUS-EPAISSEUR
-#       0 1  = SOUS-EPAISSEUR A SUPERIEURE DE LA ZONE
-#       1 0  = SOUS-EPAISSEUR A INFERIEURE DE LA ZONE
-#       1 1  = SOUS EPAISSEUR A SUPERIEURE ET A INFERIEURE DE LA ZONE
-#
-#       cas ou la premiere zone ne commence pas au bord de la plaque
-        if MINI>0. and NZONEY==1:
-          first=0
-          BI.append(0.)
-          BS.append(MINI)
-          if TYPI==0:
-            INDBI.append(0)
-            INDBS.append(1)
-            DNY.append(DERAFL)
-            DNY.append(0)
-            INDSEY.append(0)
-          elif TYPI==1 or TYPI==2:
-            INDBI.append(0)
-            INDBS.append(0)
-            DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
-            DNY.append(0)
-            INDSEY.append(NUMI)
-          else:pass
-          NZONEY = NZONEY+1
-#
-        BI.append(MINI)
-        BS.append(MINS)
-
-        if TYPI==0:
-#         borne inferieure zone = borne inferieure ssep
-          NBINF = NBINF+1
-          INDBI.append(0)
-          INDBS.append(0)
-          if TYPS==0:
-#           borne superieure zone = borne inferieur ssep
-            DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
-            DNY.append(0)
-            INDSEY.append(NUMI)
-          elif TYPS==1 or TYPS==2:
-#           borne superieure zone = borne superieure ssep:TYPS==1
-#           borne superieure zone = centre ssep:TYPS==2
-            LTMP=[]
-            LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
-            LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
-            LTMP.sort()
-            DNY.append(LTMP[0][0])
-            DNY.append(0)
-            INDSEY.append(LTMP[0][1])
-          else:pass
-        elif TYPI==1:  
-#         borne inferieure zone=borne superieure ssep
-          NBSUP = NBSUP+1
-          if TYPS==0:
-#           borne superieure zone = borne inferieur ssep
-            if NBSUP==NBINF:
-              INDBI.append(1)
-              INDBS.append(1)        
-              DNY.append(DERAFL)
-              DNY.append(0)
-              INDSEY.append(0)
-            else:
-#             cas tordu: une sous-ep. enveloppe le tout
-              INDBI.append(0)
-              INDBS.append(0)        
-              DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
-              DNY.append(0)
-              INDSEY.append(NUMI)
-          elif TYPS==1 or TYPS==2:
-#           borne superieure zone = borne superieure ssep:TYPS==1
-#           borne superieure zone = centre ssep:TYPS==2
-            INDBI.append(0)
-            INDBS.append(0)        
-            DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
-            DNY.append(0)
-            INDSEY.append(NUMS)
-          else:pass
-        elif TYPI==2:
-#         borne inferieure zone = centre ssep  
-          INDBI.append(0)
-          INDBS.append(0)        
-          if TYPS==0:
-#           borne superieure zone = borne inferieure ssep
-            DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
-            DNY.append(0)
-            INDSEY.append(NUMI)
-          elif TYPS==1 or TYPS==2:
-#           borne superieure zone = borne superieure ssep
-            LTMP=[]
-            LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
-            LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
-            LTMP.sort()
-            DNY.append(LTMP[0][0])
-            DNY.append(0)
-            INDSEY.append(LTMP[0][1])
-          else:pass
-        else:pass
-        if j<=(2*NBSEP-2) or TYPS==2:
-          iout=0  
-          break #on retourne dans la boucle go40
-        else:
-          iout=1
-          break #on sort definitivement 
-      if iout:break
-
-#   cas ou la derniere zone ne finit pas au bout de la plaque    
-    if MINS<ALPHAR*RC:
-       NZONEY=NZONEY+1
-       BI.append(MINS)
-       BS.append(ALPHAR*RC) 
-       if TYPS==0 or TYPS==2:
-          INDBI.append(0)
-          INDBS.append(0)        
-          DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
-          DNY.append(0)
-          INDSEY.append(NUMS)
-       elif TYPS==1:
-          INDBI.append(1)
-          INDBS.append(0)        
-          DNY.append(DERAFL)
-          DNY.append(0)
-          INDSEY.append(0)
-       else:pass
-
-    print
-    print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
-    print '-----------------------------------------------'
-
-    for j in range(NZONEY) :
-      if INDBI[j]==0 and INDBS[j]==0 :
-        print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
-        ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(BI[j],BS[j])
-      else:
-        print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
-        ' / BORNE SUP. = %.2f '%(BI[j],BS[j])
-
-#   calcul du nombre d'elements longi. et circonf. dans les sous-ep
-    NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
-                   DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
-  
-
-  return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_file_dgib_ASCFDO
-#
-#     ECRIT DANS UN FICHIER LES DONNES GIBI DE LA PROCEDURE 
-#     "PLAQUE FISSUREE"
-#
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
-                           TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,
-                           SFP,ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME, loc_datg) :
-
-  if TYPBOL!= None:
-     if TYPBOL=='CUVE'     : TYPEMB = 'typcuv' 
-     if TYPBOL=='GV'       : TYPEMB = 'typegv' 
-     if TYPBOL=='ASP_MPP'  : TYPEMB = 'typapp' 
-  else: 
-     TYPEMB ='      '
-   
-  if POSIT =='DEB_INT'  :
-         POSIT2 = 'interne'
-  else:
-         POSIT2 = 'externe'
-  if   SYME[:6]=='ENTIER' : ZSYME = 'entier'
-  elif SYME[:5]=='QUART'  : ZSYME = 'quart'
-  else :                    ZSYME = 'demi'
-  C=AXECP/2.
-  TETAF=AZIM*pi/180.
-
-  POIVIR = ' ;\n'
-  texte='* DEBUT PARAMETRES UTILISATEUR\n'
-  texte=texte+'*\n'
-  texte=texte+'c        = '+str(C)            +POIVIR
-  texte=texte+'a        = '+str(AXEAP)        +POIVIR
-  texte=texte+'nt       = '+str(NT)           +POIVIR
-  texte=texte+'ns       = '+str(NS)           +POIVIR
-  texte=texte+'nc       = '+str(NC)           +POIVIR
-  texte=texte+'rm       = '+str(RM)           +POIVIR
-  texte=texte+'rc       = '+str(RC)           +POIVIR
-  texte=texte+'alphac   = '+str(ALPHA)        +POIVIR
-  texte=texte+'nbtranep = '+str(NBTRAN)       +POIVIR
-  texte=texte+'ep1      = '+str(EP1)          +POIVIR
-  texte=texte+'ep2      = '+str(EP2)          +POIVIR
-  texte=texte+'epi      = '+str(EPI)          +POIVIR
-  texte=texte+'teta1    = '+str(TETA1)        +POIVIR
-  texte=texte+'teta2    = '+str(TETA2)        +POIVIR
-  texte=texte+'ltran    = '+str(LTRAN)        +POIVIR
-  texte=texte+'posfis   = '+str(SFP)          +POIVIR
-  texte=texte+'ksiref   = '+str(ORIEN)        +POIVIR
-  texte=texte+'surep    = '+str(SUREP)        +POIVIR       
-  texte=texte+'teta_f   = '+str(TETAF)        +POIVIR
-  texte=texte+'rc0      = '+str(RC0)          +POIVIR
-  texte=texte+'rc2      = '+str(RC2)          +POIVIR
-  texte=texte+'rc3      = '+str(RC3)          +POIVIR
-  texte=texte+"pos      = '"+POSIT2+"'"       +POIVIR
-  texte=texte+'lt       = '+str(LTCHAR)       +POIVIR
-  texte=texte+'lgv      = '+str(LTCLIM)       +POIVIR
-  texte=texte+"typembou = '"+TYPEMB+"'"       +POIVIR
-  texte=texte+"zsyme    = '"+ZSYME+"'"        +POIVIR
-  texte=texte+'epsif    = '+str(EPSI)         +POIVIR
-  texte=texte+'nivmag   = '+str(NIVMAG)       +POIVIR
-  texte=texte+'*\n'
-  texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
-  fdgib=open(nomFichierDATG,'w')
-  fdgib.write(texte)
-  fdgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_file_dgib_ASCSQO
-#
-#     ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE 
-#     "PLAQUE SOUS-EPAISSEUR"
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-#     RM    = RAYON MOYEN DU COUDE
-#     RC    = RAYON DE CINTRAGE DU COUDE
-#     ALPHA = ANGLE DU COUDE
-#     NBTRAN = NOMBRE DE TRANSITION D'EPAISSEUR (0, 1 OU 2)
-#     EP1   = EPAISSEUR DU COUDE (COTE EMBOUT 1 SI TRANSITION)
-#     EP2   = EPAISSEUR DU COUDE (COTE EMBOUT 2 SI TRANSITION)
-#     EPI   = EPAISSEUR DU COUDE INTERMEDIAIRE SI TRANSITION A 2 PENTES
-#     TETA1  = ANGLE DE LA PREMIERE TRANSITION D'EPAISSEUR EVENTUELLE
-#     TETA2  = ANGLE DE LA DEUXIEME TRANSITION D'EPAISSEUR EVENTUELLE
-#     LTRAN  = LONGUEUR ENTRE FIN DE L'EMBOUT 1 ET DEBUT DE TRANSITION
-#     LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
-#     LCLIM  = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-#     GEOM  = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)  
-#     SYME = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
-#     NBEP = NOMBRE D'ELEMENTS DANS LE COUDE
-#     NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
-#     NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
-                           EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
-                           SYME,NBEP,NLX,NLY,NIVMAG,loc_datg) :
-
-  ssep= MCL_SOUS_EPAIS[0]   
-  POIVIR = ' ;\n'
-  texte=' nivmag   = '+str(NIVMAG)       +POIVIR
-  texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
-  texte=texte+'*\n'
-  texte=texte+'coory   = table '+POIVIR
-  texte=texte+'coorz   = table '+POIVIR
-  texte=texte+'prof    = table '+POIVIR
-  texte=texte+'posit   = table '+POIVIR
-  texte=texte+'axisym  = table '+POIVIR
-  texte=texte+'axecir  = table '+POIVIR
-  texte=texte+'axelon  = table '+POIVIR
-  texte=texte+'sousep  = table '+POIVIR
-  texte=texte+'coorzc  = table '+POIVIR
-  texte=texte+'axelonc = table '+POIVIR
-  texte=texte+'*\n'
-  texte=texte+'* DEBUT PARAMETRES UTILISATEUR\n'
-  texte=texte+'*\n'
-  texte=texte+'* parametres generaux\n'
-  texte=texte+'*\n'
-  texte=texte+' pirad    = '+str(pi)            +POIVIR
-  texte=texte+' rm       = '+str(RM)           +POIVIR
-  texte=texte+' rc       = '+str(RC)           +POIVIR
-  texte=texte+' alpha    = '+str(ALPHA)        +POIVIR
-  texte=texte+' lt1      = '+str(LTCHAR)       +POIVIR
-  texte=texte+' lt2      = '+str(LTCLIM)       +POIVIR
-  texte=texte+' nbtranep = '+str(NBTRAN)       +POIVIR
-  texte=texte+' ep1      = '+str(EP1)          +POIVIR
-  texte=texte+' ep2      = '+str(EP2)          +POIVIR
-  texte=texte+' epI      = '+str(EPI)          +POIVIR
-  texte=texte+' teta1    = '+str(TETA1)        +POIVIR
-  texte=texte+' teta2    = '+str(TETA2)        +POIVIR
-  texte=texte+' ltran    = '+repr(LTRAN)        +POIVIR 
-  if GEOM == 'COUDE':
-    texte=texte+" zcoude = 'oui' "+POIVIR
-  else:
-    texte=texte+" zcoude = 'non' "+POIVIR
-  if SYME == 'ENTIER':
-    texte=texte+" zsyme = 'entier' "+POIVIR
-  elif SYME == 'QUART':
-    texte=texte+" zsyme = 'quart' "+POIVIR
-  else:
-    texte=texte+" zsyme = 'demi' "+POIVIR
-  if TYPELE == 'CU20':
-    texte=texte+" zquad = 'oui' "+POIVIR
-  else:
-    texte=texte+" zquad = 'non' "+POIVIR
-  SCP=pi*RM
-  texte=texte+' nxep   = '+str(NBEP)        +POIVIR
-  texte=texte+'*\n'
-  texte=texte+'* Caracteristiques de la sous-epaisseur\n'
-  texte=texte+'*\n'
-  texte=texte+' tysep = '+str(ssep.ICIRP)                                   +POIVIR
-  texte=texte+' tzsep = '+str(ssep.ILONP)                                   +POIVIR
-  texte=texte+' prof .                      1  = '+str(ssep['PROFONDEUR'])  +POIVIR
-  texte=texte+' ycsep = '+str(SCP-pi*RM)                                    +POIVIR
-  texte=texte+' theta = '+str(ssep.IPHIC)                                   +POIVIR
-  texte=texte+' zcsep = '+repr(ssep.ISLP)                                    +POIVIR
-
-  texte=texte+" posit .                      1  = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
-  texte=texte+' nby   = '+str(int(NLX[0]))                                  +POIVIR
-  texte=texte+' nbz   = '+str(int(NLY[0]))                                  +POIVIR
-  texte=texte+' nbxse = '+str(ssep['NB_ELEM_RADI'])                         +POIVIR
-  texte=texte+' axelonc .                      1  = '+str(ssep['AXE_LONGI'])+POIVIR
-  if ssep['POSI_CURV_LONGI']!=None:
-    texte=texte+' coorzc .                      1  = '+repr(ssep['POSI_CURV_LONGI'])+POIVIR
-  else:
-    DZC=ssep.BETA*pi*(RC+(RM+EP1/2.)*cos(pi/2.))/180.
-    texte=texte+' coorzc .                      1  = '+repr(DZC)+POIVIR
-  if ssep['TYPE']=='AXIS':
-     texte=texte+" zaxis = 'oui' "+POIVIR
-  else:
-     texte=texte+" zaxis = 'non' "+POIVIR
-  if ssep['EMPREINTE'] == 'OUI':
-     texte=texte+" sousep .                      1  = 'oui'"+POIVIR
-  else:
-     texte=texte+" sousep .                      1  = 'non'"+POIVIR
-  texte=texte+'*\n'
-  texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
-  fdgib=open(nomFichierDATG,'w')
-  fdgib.write(texte)
-  fdgib.close()
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_subpart_file_pgib_POST
-#
-#     APPELEE DANS : write_file_pgib_ASCSQ2 , write_file_pgib_ASCSD2
-#     DEFINIE UNE CHAINE DE CARACTERES UTILISEE LORS DE L'ECRITURE DU
-#     FICHIER GIBI DE POST-TRAITEMENTS
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-#     NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
-#     NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
-#
-#-----------------DONNEE RENVOYEE PAR ASTER-------------------- 
-# 
-#     texte = chaine de caracteres contenant des instructions gibi
-#             de post-traitements
-#
-# ------------------------------------------------------------------------------
-def write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY):
-  CAR3 = ('fdro','exdr','extr','exga','fgau','inga','intr','indr')
-  
-  POIVIR = ' ;\n'
-  texte='* DEBUT POINTS DE POST-TRAITEMENT\n'
-  texte=texte+'*\n'
-  issep=0
-  for ssep in MCL_SOUS_EPAIS:
-    issep=issep+1
-    texte=texte+'*\n'
-    texte=texte+'* sous-epaisseur No '+str( issep)+'\n'
-    texte=texte+'*\n'
-    if ssep['TYPE'] == 'ELLI':
-      texte=texte+'*\n'
-      texte=texte+'* plans circonf longi et colonne centrale \n'
-      texte=texte+'*\n'
-      texte=texte+'pcirc'+str( issep)+' = circo .'+str(issep).rjust(4)+POIVIR
-      texte=texte+'plong'+str( issep)+' = longi .'+str(issep).rjust(4)+POIVIR
-      texte=texte+'pcent'+str( issep)+' = centr .'+str(issep).rjust(4)+POIVIR
-    texte=texte+'*\n'
-    texte=texte+'* ligaments tous les 45 degres a epaisseur minimale \n'
-    texte=texte+'*\n'
-    texte=texte+'isep = '+str( issep)+POIVIR
-    for k in range(8):
-      texte=texte+'ilig = '+str(k+1)+POIVIR
-      texte=texte+'rlig = ilig/10. + isep'+POIVIR
-      texte=texte+str(CAR3[k])+str( issep)+' = lig45 . rlig'+POIVIR
-    if ssep['TYPE'] == 'ELLI':
-      texte=texte+'*\n'
-      texte=texte+"* ligaments circonferentiels a l'epaisseur minimale\n"
-      texte=texte+'*\n'
-      texte=texte+'isep = '+str(issep)+POIVIR
-      for k in range(2*NLX[issep-1]+1):
-        texte=texte+'ilig = '+str(k+1)+POIVIR
-        texte=texte+'rlig = ilig/100. + isep'+POIVIR
-        texte=texte+'cir'+str(issep)+'_'+str(k+1)+' = ligcir . rlig'+POIVIR
-      texte=texte+'*\n'
-      texte=texte+"* ligaments longitudinaux a l'epaisseur minimale\n"                        
-      texte=texte+'* \n'
-      for k in range(2*NLY[issep-1]+1):
-        texte=texte+'ilig = '+str(k+1)+POIVIR
-        texte=texte+'rlig = ilig/100. + isep'+POIVIR
-        texte=texte+'lon'+str(issep)+'_'+str(k+1)+' = liglon . rlig'+POIVIR
-  texte=texte+'* FIN POINTS DE POST-TRAITEMENT\n'
-  return texte
-
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_file_pgib_ASCSQ2
-#
-#     ECRIT DANS UN FICHIER  LES DONNEES GIBI DE LA PROCEDURE
-#     "PLAQUE SOUS-EPAISSEURS"
-#     IL S'AGIT DE LA DEUXIEME PARTIE ( APRES LES DONNEES UTILISATEUR )
-#
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-#     NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
-#     NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
-
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY):
-  POIVIR = ' ;\n'
-  texte=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
-  texte=texte+'*\n'
-  texte=texte+'p1 = 0. 0. (-1.*lt1)'+POIVIR
-  texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
-  texte=texte+'ma = coude et p1 et p2'+POIVIR
-  texte=texte+"opti sauv form 'fort.8'"+POIVIR
-  texte=texte+'sort ma'+POIVIR
-  texte=texte+'sauv form ma'+POIVIR
-  texte=texte+'fin'+POIVIR
-  fpgib=open('fort.71','w')
-  fpgib.write(texte)
-  fpgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_file_pgib_ASCSP1
-#
-#     ECRIT DANS UN FICHIER  LES DONNEES GIBI DE LA PROCEDURE
-#     "PLAQUE SOUS-EPAISSEURS"
-#     IL S'AGIT DE LA PREMIERE PARTIE ( AVANT LES DONNEES UTILISATEUR )
-#
-#
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg):
-
-  POIVIR = ' ;\n'
-  texte=' nivmag = '+str(NIVMAG)+POIVIR
-  texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0 '+POIVIR
-  texte=texte+'*\n'
-  texte=texte+'bg      = table '+POIVIR
-  texte=texte+'bd      = table '+POIVIR
-  texte=texte+'bi      = table '+POIVIR
-  texte=texte+'bs      = table '+POIVIR
-  texte=texte+'indbg   = table '+POIVIR
-  texte=texte+'indbd   = table '+POIVIR
-  texte=texte+'indbi   = table '+POIVIR
-  texte=texte+'indbs   = table '+POIVIR
-  texte=texte+'axecir  = table '+POIVIR
-  texte=texte+'axelon  = table '+POIVIR
-  texte=texte+'axelonc = table '+POIVIR
-  texte=texte+'coorzc  = table '+POIVIR
-  texte=texte+'prof    = table '+POIVIR
-  texte=texte+'posit   = table '+POIVIR
-  texte=texte+'coory   = table '+POIVIR
-  texte=texte+'coorz   = table '+POIVIR   
-  texte=texte+'deny    = table '+POIVIR
-  texte=texte+'nbely   = table '+POIVIR
-  texte=texte+'denz    = table '+POIVIR
-  texte=texte+'nbelz   = table '+POIVIR
-  texte=texte+'axisym  = table '+POIVIR
-  texte=texte+'sousep  = table '+POIVIR
-  texte=texte+'* \n'     
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
-  fdgib=open(nomFichierDATG,'w')
-  fdgib.write(texte)
-  fdgib.close()
-  
-################################################################################
-################################################################################
-################################################################################
-#     MACR_ASCOUF_MAIL   write_file_pgib_ASCSDO
-#
-#     ECRIT DANS UN FICHIER  LES DONNEES GIBI DE LA PROCEDURE
-#     "PLAQUE SOUS-EPAISSEURS"
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-#     RM    = RAYON MOYEN DU COUDE
-#     RC    = RAYON DE CINTRAGE DU COUDE
-#     ALPHA = ANGLE DU COUDE
-#     EP    = EPAISSEUR DU COUDE
-#     LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
-#     LCLIM  = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-#     GEOM  = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)  
-#     SYME = QUART DE STRUCTURE SI 'OUI'
-#     INDBG = INDICATEUR BORD GAUCHE DE LA ZONE CIRCONF J
-#     INDBD = INDICATEUR BORD DROIT DE LA ZONE CIRCONF J
-#     BG = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
-#     BD = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
-#     BI = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
-#     BS = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
-#     INDBI = INDICATEUR BORD INFERIEUR DE LA ZONE LONGI J
-#     INDBS = INDICATEUR BORD SUPERIEUR DE LA ZONE LONGI J
-#     INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
-#     INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
-#     DNX = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
-#     DNY = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
-#     NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-#     NZONEY = NOMBRE DE ZONES LONGITUDINALES  
-#
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSDO(RM,RC,ALPHA,EP,LTCLIM,LTCHAR,NBEP,
-                           NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
-                           DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME):
-
-  POIVIR = ' ;\n'
-  NY=20
-  DELTAY=2.*pi*RM/NY
-
-  def nint(x):
-    if 0<ceil(x)-x<=0.5:
-      return int(ceil(x))
-    else:
-      return int(floor(x))
-
-# conversion des densites de raffinement des embout en degres par rapport
-# a l'angle du coude
-  RTMP=nint(LTCHAR/DELTAY)*DELTAY/4.
-  DENSTU = RTMP*360./(2.*pi*RC)
-  DENSGV = DENSTU
-  NZT=0
-  NZGV=0
-
-  texte='* DEBUT PARAMETRES UTILISATEUR \n'
-  texte=texte+'*\n'
-  texte=texte+'* parametres generaux\n'
-  texte=texte+'*\n'
-  texte=texte+'rm       = '+str(RM)               +POIVIR
-  texte=texte+'rc       = '+str(RC)               +POIVIR
-  texte=texte+'alphac   = '+str(ALPHA)            +POIVIR
-  texte=texte+'epc      = '+str(EP)               +POIVIR
-  texte=texte+'pirad    = '+str(pi)               +POIVIR
-  texte=texte+'lgv      = '+str(LTCLIM)           +POIVIR
-  texte=texte+'lt       = '+str(LTCHAR)           +POIVIR
-  texte=texte+'lcoude   = '+str(ALPHA*pi/180.*RC) +POIVIR
-  if GEOM == 'COUDE':
-    texte=texte+"zcoude = 'oui' "     +POIVIR
-  else:
-    texte=texte+"zcoude = 'non' "     +POIVIR
-  if SYME == 'ENTIER':
-    texte=texte+"zsyme = 'entier' "   +POIVIR
-  elif SYME == 'QUART':
-    texte=texte+"zsyme = 'quart' "    +POIVIR
-  else:
-    texte=texte+"zsyme = 'demi' "     +POIVIR
-  texte=texte+'nxep   = '+str(NBEP)   +POIVIR
-  texte=texte+'nzt    = '+str(NZT)    +POIVIR
-  texte=texte+'nzgv   = '+str(NZGV)   +POIVIR
-  texte=texte+'daxhtu = '+str(DENSTU) +POIVIR
-  texte=texte+'daxhgv = '+str(DENSGV) +POIVIR
-  texte=texte+'*\n'
-  
-  texte=texte+'* Zones couvertes en circonference\n'
-  texte=texte+'*\n'
-  for j in range(NZONEX):
-    texte=texte+'bg .'   +str(j+1).rjust(23)+' = '+str(BG[j]-pi*RM)     +POIVIR
-    texte=texte+'bd .'   +str(j+1).rjust(23)+' = '+str(BD[j]-pi*RM)     +POIVIR
-    texte=texte+'indbg .'+str(j+1).rjust(23)+' = '+str(INDBG[j])        +POIVIR
-    texte=texte+'indbd .'+str(j+1).rjust(23)+' = '+str(INDBD[j])        +POIVIR
-    texte=texte+'deny .' +str(j+1).rjust(23)+' = '+str(DNX[2*j])        +POIVIR
-    texte=texte+'nbely .'+str(j+1).rjust(23)+' = '+str(int(DNX[2*j+1])) +POIVIR
-    texte=texte+'*\n'
-    
-  texte=texte+'* Zones couvertes longitudinalement\n'
-  texte=texte+'*\n'
-  for j in range(NZONEY):
-    texte=texte+'bi .'   +str(j+1).rjust(23)+' = '+str(BI[j])           +POIVIR
-    texte=texte+'bs .'   +str(j+1).rjust(23)+' = '+str(BS[j])           +POIVIR
-    texte=texte+'indbi .'+str(j+1).rjust(23)+' = '+str(INDBI[j])        +POIVIR
-    texte=texte+'indbs .'+str(j+1).rjust(23)+' = '+str(INDBS[j])        +POIVIR
-    texte=texte+'denz .' +str(j+1).rjust(23)+' = '+str(DNY[2*j])        +POIVIR
-    texte=texte+'nbelz .'+str(j+1).rjust(23)+' = '+str(int(DNY[2*j+1])) +POIVIR
-    texte=texte+'*\n'
-  texte=texte+'* Caracteristiques des sous-epaisseurs\n'
-  texte=texte+'*\n'
-  issep=0
-  for ssep in MCL_SOUS_EPAIS:
-     issep=issep+1
-     texte=texte+'axecir .' +str(issep).rjust(23)+' = '+str(ssep.ICIRP)        +POIVIR
-     texte=texte+'axelon .' +str(issep).rjust(23)+' = '+str(ssep.ILONP)        +POIVIR
-     texte=texte+'prof .'   +str(issep).rjust(23)+' = '+str(ssep['PROFONDEUR'])+POIVIR
-     texte=texte+'coory .'  +str(issep).rjust(23)+' = '+str(ssep.ISCP-pi*RM)   +POIVIR
-     texte=texte+'coorz .'  +str(issep).rjust(23)+' = '+str(ssep.ISLP)         +POIVIR
-     texte=texte+'posit .'  +str(issep).rjust(23)+" = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
-     texte=texte+'axelonc .'+str(issep).rjust(23)+' = '+str(ssep['AXE_LONGI']) +POIVIR
-     if ssep['POSI_CURV_LONGI']!=None:
-       texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(ssep['POSI_CURV_LONGI'])+POIVIR
-     else:
-       DZC=ssep.BETA*pi*(RC+(RM+EP/2.)*cos(pi/2.))/180.
-       texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(DZC)+POIVIR
-     if ssep['TYPE']=='AXIS':
-       texte=texte+'axisym .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
-     else:
-       texte=texte+'axisym .'+str(issep).rjust(23)+" = 'non'"+POIVIR
-     if ssep['EMPREINTE'] == 'OUI':
-       texte=texte+'sousep .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
-     else:
-       texte=texte+'sousep .'+str(issep).rjust(23)+" = 'non'"+POIVIR
-  texte=texte+'* \n'
-  texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
-  fpgib=open('fort.71','w') 
-  fpgib.write(texte)
-  fpgib.close()
-  
-################################################################################
-################################################################################
-################################################################################
-
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY):
-
-  POIVIR = ' ;\n'
-  texte='*\n'
-  texte=texte+'coude extube bord1 clgv  bord2 peauext peauint placoude platube\n'
-  texte=texte+'plagv  longi  circo centr bou1  bou3  ligmed  ligtub liggv lig45\n'
-  texte=texte+'ligcir liglon bordtu\n'
-  texte=texte+'= PLAQSEP bg bd bi bs indbg indbd indbi indbs rm rc\n'
-  texte=texte+'alphac pirad epc lt lgv coory coorz axecir axelon prof zsyme posit\n'
-  texte=texte+'lcoude nxep sousep deny nbely denz nbelz axelonc coorzc axisym\n'
-  texte=texte+'daxhtu daxhgv nzt nzgv zcoude'+POIVIR
-  texte=texte+'fdromi   = ligmed .   1'+POIVIR
-  texte=texte+'exdrmi   = ligmed .   2'+POIVIR
-  texte=texte+'extrmi   = ligmed .   3'+POIVIR
-  texte=texte+'exgami   = ligmed .   4'+POIVIR
-  texte=texte+'fgaumi   = ligmed .   5'+POIVIR
-  texte=texte+'ingami   = ligmed .   6'+POIVIR
-  texte=texte+'intrmi   = ligmed .   7'+POIVIR
-  texte=texte+'indrmi   = ligmed .   8'+POIVIR
-  texte=texte+'fdrotu   = ligtub .   1'+POIVIR
-  texte=texte+'exdrtu   = ligtub .   2'+POIVIR
-  texte=texte+'extrtu   = ligtub .   3'+POIVIR
-  texte=texte+'exgatu   = ligtub .   4'+POIVIR
-  texte=texte+'fgautu   = ligtub .   5'+POIVIR
-  texte=texte+'ingatu   = ligtub .   6'+POIVIR
-  texte=texte+'intrtu   = ligtub .   7'+POIVIR
-  texte=texte+'indrtu   = ligtub .   8'+POIVIR
-  texte=texte+"si (ega zsyme 'entier')"+POIVIR
-  texte=texte+'   fdrogv   = liggv  .  1'+POIVIR
-  texte=texte+'   exdrgv   = liggv .   2'+POIVIR
-  texte=texte+'   extrgv   = liggv .   3'+POIVIR
-  texte=texte+'   exgagv   = liggv .   4'+POIVIR
-  texte=texte+'   fgaugv   = liggv .   5'+POIVIR
-  texte=texte+'   ingagv   = liggv .   6'+POIVIR
-  texte=texte+'   intrgv   = liggv .   7'+POIVIR
-  texte=texte+'   indrgv   = liggv .   8'+POIVIR
-  texte=texte+'finsi'+POIVIR
-  texte=texte+'*\n'
-  
-  text2=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
-  texte=texte+text2
-  
-  texte=texte+'*\n'
-  texte=texte+'*oeil = 10000. 0. 0.' +POIVIR
-  texte=texte+'*trac oeil cach coude'+POIVIR
-  texte=texte+'*opti donn 5'         +POIVIR
-  texte=texte+'p1 = 0. 0. (-1.*lt)'+POIVIR
-  texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
-  texte=texte+'ma = coude et p1 et p2'+POIVIR
-  texte=texte+'sort ma'+POIVIR
-  texte=texte+'neu = nbno ma'+POIVIR
-  texte=texte+"mess 'nombre de noeuds : 'neu"+POIVIR
-  texte=texte+"opti sauv form 'fort.8'"+POIVIR
-  texte=texte+'sauv form ma'+POIVIR
-  texte=texte+'fin'+POIVIR
-  fpgib=open('fort.71','a') 
-  fpgib.write(texte)
-  fpgib.close()  
-
-################################################################################
-################################################################################
-################################################################################
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP,SUREP,
-                           LTCLIM,LTCHAR,NBEP,loc_datg):
-
-  NY=20
-  CZ=ALPHA*RC*pi/180.
-  NZC=int((ALPHA+0.00001)/5.)
-  DELTAY=2.*pi*RM/20
-  DELTAZ=CZ/NZC
-  DENEXT=int(LTCHAR/DELTAY)*DELTAY/4.
-  NZT=0
-  NZGV=0
-  
-  if TYPBOL!=None:
-     if TYPBOL=='CUVE'     : TYPEMB = 'typcuv' 
-     if TYPBOL=='GV'       : TYPEMB = 'typegv' 
-     if TYPBOL=='ASP_MPP'  : TYPEMB = 'typapp' 
-  else: 
-     TYPEMB ='      '
-   
-  POIVIR = ' ;\n'
-  texte='* DEBUT PARAMETRES UTILISATEUR\n'
-  texte=texte+'*\n'
-  texte=texte+'* Parametres generaux\n'
-  texte=texte+'*\n'
-  texte=texte+'nivmag   = '+str(NIVMAG)       +POIVIR
-  texte=texte+'option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
-  texte=texte+'rm       = '+str(RM)           +POIVIR
-  texte=texte+'rc       = '+str(RC)           +POIVIR
-  texte=texte+'alphac   = '+str(ALPHA)        +POIVIR
-  texte=texte+'epc      = '+str(EP)           +POIVIR
-  texte=texte+'surep    = '+str(SUREP)        +POIVIR       
-  texte=texte+'lgv      = '+str(LTCLIM)       +POIVIR
-  texte=texte+'lt       = '+str(LTCHAR)       +POIVIR
-  texte=texte+"typembou = '"+TYPEMB+"'"       +POIVIR
-  texte=texte+'nx       = '+str(NBEP)         +POIVIR
-  texte=texte+'ny       = '+str(NY)           +POIVIR
-  texte=texte+"pos      = 'bidon'"            +POIVIR
-  texte=texte+'l1       = 0.'                 +POIVIR
-  texte=texte+'lbloc    = 0.'                 +POIVIR
-  texte=texte+'crit     = 0.0001'             +POIVIR
-  texte=texte+'crit2    = 0.01'               +POIVIR
-  texte=texte+'epsit    = 1.e-3'              +POIVIR
-  texte=texte+'pirad    = '+str(pi)           +POIVIR
-  texte=texte+'nzc      = '+str(NZC)          +POIVIR
-  texte=texte+'teta_f   = '+str(pi/2.)        +POIVIR
-  texte=texte+'zpp31    = '+str(CZ)           +POIVIR
-  texte=texte+'daxbtu   = '+str(DENEXT)       +POIVIR
-  texte=texte+'daxhtu   = '+str(DELTAZ)       +POIVIR
-  texte=texte+'daxbgv   = '+str(DELTAZ)       +POIVIR
-  texte=texte+'daxhgv   = '+str(DENEXT)       +POIVIR
-  texte=texte+'nzt      = '+str(NZT)          +POIVIR
-  texte=texte+'nzgv     = '+str(NZGV)         +POIVIR
-  texte=texte+'*\n'
-  texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
-  fdgib=open(nomFichierDATG,'w')
-  fdgib.write(texte)
-  fdgib.close()
-  
-################################################################################
-################################################################################
-################################################################################
-# ------------------------------------------------------------------------------
-def macr_ascouf_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,COUDE,
-                              SOUS_EPAIS_COUDE,SOUS_EPAIS_MULTI,
-                              FISS_COUDE,IMPRESSION,INFO,**args):
-  """
-     Ecriture de la macro MACR_ASCOUF_MAIL
-  """
-  from Accas import _F
-  import types
-  import aster 
-
-  ier=0
-  
-# On importe les definitions des commandes a utiliser dans la macro
-  EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
-  PRE_GIBI      =self.get_cmd('PRE_GIBI')
-  LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
-  DEFI_GROUP    =self.get_cmd('DEFI_GROUP')
-  MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
-  AFFE_MODELE   =self.get_cmd('AFFE_MODELE')
-  CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
-  DEFI_FICHIER  =self.get_cmd('DEFI_FICHIER')
-  IMPR_RESU     =self.get_cmd('IMPR_RESU')
-
-# La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-
-  
-  TYPELE = TYPE_ELEM
-  NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
-  PRECIS = 0.01
-  CRITER = 'RELATIF'
-  CAR3   = ('IFDRO','IEXDR','IEXTR','IEXGA','IFGAU','IINGA','IINTR','IINDR')
-  CAR4   = ('NOFDRO','NOEXDR','NOEXTR','NOEXGA','NOFGAU','NOINGA','NOINTR','NOINDR')
-  CAR5   = ('NEFDRO','NEEXDR','NEEXTR','NEEXGA','NEFGAU','NEINGA','NEINTR','NEINDR')
-  CAR6   = ('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
-  SECT   = ('MI','TU','GV')  
-  
-#
-################################################################################
-#     --- caracteristiques du coude ---
-################################################################################
-#
-  GEOM    =COUDE['TRANSFORMEE']
-  ALPHA   =COUDE['ANGLE']
-  RC      =COUDE['R_CINTR']
-  LTCHAR  =COUDE['L_TUBE_P1']
-  LTCLIM  =COUDE['L_TUBE_P2']
-  NBEP    =COUDE['NB_ELEM_EPAIS']
-  SYME    =COUDE['SYME']
-  SUREP   =0.0
-  TYPBOL  = None
-#
-  if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
-     SUREP=COUDE['SUR_EPAIS']
-     TYPBOL  =COUDE['BOL_P2']
-     DEXT   = COUDE['DEXT']
-     EP1    = COUDE['EPAIS']
-     EP2    = EP1
-     EPI    = 0.0
-     TETA1  = 0.0
-     TETA2  = 0.0
-     LTRAN  = 0.0
-     NBTRAN = 0
-  else:
-     NBTRAN = 1
-     if COUDE['SYME']!='ENTIER':
-        print ' <MACR_ASCOUF_MAIL> les quart et demi structure'
-        print ' <MACR_ASCOUF_MAIL> ne peuvent etre realisees '
-        print ' <MACR_ASCOUF_MAIL> sur un modele comportant une transition '
-        print ' <MACR_ASCOUF_MAIL> d epaisseur '
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-#
-     DEXT  = COUDE['DEXT_T1']
-     EP1   = COUDE['EPAIS_T1']
-     EP2   = COUDE['EPAIS_T2']
-     TETA1 = COUDE['ANGL_TETA1']
-     TETA2 = 0.0
-     EPI   = 0.0
-     if COUDE['ANGL_TETA2']!=None :
-       NBTRAN = 2
-       TETA2 = COUDE['ANGL_TETA2']
-       EPI   = COUDE['EPAIS_TI']
-#
-     if COUDE['ABSC_CURV_TRAN']!=None :
-       LTRAN   = COUDE['ABSC_CURV_TRAN']
-     else :
-       LTRAN   = COUDE['POSI_ANGU_TRAN']* RC * pi / 180.0
-#
-  RM  = (DEXT-EP1)/2.0
-  RM2 = RM + (EP2-EP1)/2.0
-  R1  = RC
-  R2  = RM
-  E   = EP1
-#
-  if COUDE['SYME']!='ENTIER' and (LTCHAR!=LTCLIM) :
-     print ' <MACR_ASCOUF_MAIL> les deux embouts doivent etre'
-     print ' <MACR_ASCOUF_MAIL> de meme longueur pour les cas de symetrie '
-     self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-     ier = ier+1
-     return ier
-#
-  LAMOR = 3.0/2.0 * sqrt( RM*RM*RM / EP1)
-  if LTCHAR<LAMOR :
-     print ' <MACR_ASCOUF_MAIL> longueur d embout P1 inferieure'
-     print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
-     print ' <A> <MACR_ASCOUF_MAIL> alarme'
-#
-  LAMOR = 3.0/2.0 * sqrt( RM2*RM2*RM2 / EP2)
-  if LTCLIM<LAMOR :
-     print ' <MACR_ASCOUF_MAIL> longueur d embout P2 inferieure'
-     print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
-     print ' <A> <MACR_ASCOUF_MAIL> alarme'
-#
-  if TYPBOL!=None:
-   if TYPBOL[:1]=='GV' :
-     print ' <MACR_ASCOUF_MAIL> la condition aux limites raccord'
-     print ' <MACR_ASCOUF_MAIL> 3d-poutre appliquee avec la macro de calcul'
-     print ' <MACR_ASCOUF_MAIL> ascouf n est pas licite avec un embout'
-     print ' <MACR_ASCOUF_MAIL> de type conique'
-     print ' <A> <MACR_ASCOUF_MAIL> alarme'
-#
-################################################################################
-#     --- caracteristiques de la fissure ---
-################################################################################
-#
-  if FISS_COUDE!=None:
-     if NBEP!=3:
-        print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l epaisseur'
-        print ' <MACR_ASCOUF_MAIL> du coude n est pas parametrable pour'
-        print ' <MACR_ASCOUF_MAIL> un coude avec fissure'
-        print ' <MACR_ASCOUF_MAIL> mot-cle NB_ELEM_EPAIS ignore'
-        print ' <A> <MACR_ASCOUF_MAIL> alarme'
-     FPROF = FISS_COUDE['PROFONDEUR']
-     FAXI  = FISS_COUDE['AXIS']
-     if FAXI=='NON' and FISS_COUDE['LONGUEUR']==None :
-        print ' <MACR_ASCOUF_MAIL> pour les fissures non axisymetriques'
-        print ' <MACR_ASCOUF_MAIL> la longueur doit etre specifiee '
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-     if FAXI=='OUI' and FISS_COUDE['LONGUEUR']!=None :
-        print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : on ne'
-        print ' <MACR_ASCOUF_MAIL> tient pas compte de la longueur specifiee'
-        print ' <A> <MACR_ASCOUF_MAIL> alarme'
-     if FISS_COUDE['LONGUEUR']!=None : FLONG = FISS_COUDE['LONGUEUR']
-     if FAXI=='OUI' :
-####    on prend une marge de securite a cause des modifs dans ascfis
-        FLONG = 2.0 * pi * (RM + EP1)
-     if FISS_COUDE['ABSC_CURV']!=None :
-         SF     = FISS_COUDE['ABSC_CURV']
-         LDEFAU = SF
-         BETA   = 0.0
-     else:
-         SF     = 0.0
-         BETA   = FISS_COUDE['POSI_ANGUL']
-         LDEFAU = BETA * RC * pi / 180.0
-     AZIM   = FISS_COUDE['AZIMUT']
-     ORIEN  = FISS_COUDE['ORIEN']
-     POSIT  = FISS_COUDE['FISSURE']
-     NT     = FISS_COUDE['NB_TRANCHE']
-     NS     = FISS_COUDE['NB_SECTEUR']
-     NC     = FISS_COUDE['NB_COURONNE']
-     if FISS_COUDE['RAYON_TORE']!=None    : RC0 = FISS_COUDE['RAYON_TORE']
-     else :                                 RC0 = 0.
-     if FISS_COUDE['COEF_MULT_RC2']!=None : RC2 = FISS_COUDE['COEF_MULT_RC2']
-     else :                                 RC2 = 0.
-     if FISS_COUDE['COEF_MULT_RC3']!=None : RC3 = FISS_COUDE['COEF_MULT_RC3']
-     else :                                 RC3 = 0.
-     EPSI   = FISS_COUDE['ANGL_OUVERTURE']
-     OR     = ORIEN
-     AZ     = AZIM
-     POS    = POSIT
-     DGAXEC = FLONG/2.0
-     DC     = DGAXEC
-     if ORIEN!=90.0 and NBTRAN!=0 :
-        print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
-        print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-     if ORIEN!=90.0 and NBTRAN!=0 :
-        print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
-        print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-     if ORIEN!=90.0 and COUDE['SYME']!='ENTIER' :
-        print ' <MACR_ASCOUF_MAIL> l orientation de la fissure doit'
-        print ' <MACR_ASCOUF_MAIL> etre transverse (orien : 90.) pour modeliser '
-        print ' <MACR_ASCOUF_MAIL> un quart ou une demi structure '
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-     if ORIEN!=90.0 and FAXI=='OUI' :
-        print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : son'
-        print ' <MACR_ASCOUF_MAIL> orientation doit etre transverse (ORIEN : 90.)'
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-#
-################################################################################
-#     --- caracteristiques des sous epaisseurs ---
-################################################################################
-#
-  isep = 0
-  MCL_SOUS_EPAIS = None
-  if SOUS_EPAIS_MULTI!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_MULTI
-  if SOUS_EPAIS_COUDE!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_COUDE
-  if SOUS_EPAIS_MULTI!=None and NBTRAN!=0 :
-     print ' <MACR_ASCOUF_MAIL> il ne peut pas y avoir plusieurs'
-     print ' <MACR_ASCOUF_MAIL> sous-epaisseurs en meme temps qu une'
-     print ' <MACR_ASCOUF_MAIL> transition d epaisseur : si une seule'
-     print ' <MACR_ASCOUF_MAIL> sous-epaisseur utiliser sous_epais_coude'
-     self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-     ier = ier+1
-     return ier
-  if SOUS_EPAIS_COUDE!=None and FISS_COUDE!=None and NBTRAN!=0 :
-     print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
-     print ' <MACR_ASCOUF_MAIL> il doit obligatoirement y avoir un defaut'
-     print ' <MACR_ASCOUF_MAIL> soit une fissure  soit une sous-epaisseur'
-     self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-     ier = ier+1
-     return ier
-  if MCL_SOUS_EPAIS!=None :
-     AZIM = 90.0
-     if MCL_SOUS_EPAIS.__class__.__name__  !='MCList' : MCL_SOUS_EPAIS=[MCL_SOUS_EPAIS,]
-     if len(MCL_SOUS_EPAIS)!=1 and COUDE['SYME']!='ENTIER' :
-        print ' <MACR_ASCOUF_MAIL> ne modeliser qu une seule'
-        print ' <MACR_ASCOUF_MAIL> sous-epaisseur pour un quart ou demi-coude'
-        self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-        ier = ier+1
-        return ier
-     for ssep in MCL_SOUS_EPAIS :
-        isep=isep+1
-        if ssep['AXE_CIRC']!=None and ssep['TYPE']=='AXIS' :
-           print ' <MACR_ASCOUF_MAIL> vous ne pouvez declarer la sous-'
-           print ' <MACR_ASCOUF_MAIL> epaisseur comme axisymetrique et donner'
-           print ' <MACR_ASCOUF_MAIL> une taille d axe circonferentiel'
-           self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-           ier = ier+1
-           return ier
-        if ssep['AXE_CIRC']==None and ssep['TYPE']=='ELLI' :
-           print ' <MACR_ASCOUF_MAIL> vous devez donner une taille d axe'
-           print ' <MACR_ASCOUF_MAIL> circonferentiel pour une sous-epaisseur de'
-           print ' <MACR_ASCOUF_MAIL> type elliptique'
-           self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-           ier = ier+1
-           return ier
-        if ssep['POSI_CURV_LONGI']!=None:
-           if ssep['POSI_CURV_LONGI']>(ALPHA*RC*pi/180.0) :
-              print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-              print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
-              print ' <MACR_ASCOUF_MAIL> abscisse curv. longit. :',ssep['POSI_CURV_LONGI']
-              print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(ALPHA*RC*pi/180.0)
-              self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-              ier = ier+1
-              return ier
-           LDEFAU = ssep['POSI_CURV_LONGI'] + ssep['AXE_LONGI']/2.0
-           BETA = 0.0
-        else:
-           BETA=ssep['POSI_ANGUL']
-           if (BETA<0.) or (BETA>ALPHA) :
-              print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-              print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
-              print ' <MACR_ASCOUF_MAIL> position angulaire centre sous-ep :',BETA
-              print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',ALPHA
-              self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-              ier = ier+1
-              return ier
-           LDEFAU = (BETA*RC*pi/180.0) + ssep['AXE_LONGI']/2.0
-#
-        if ssep['POSI_CURV_CIRC']!=None:
-           if ssep['POSI_CURV_CIRC']>(2*pi*RM) :
-              print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-              print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
-              print ' <MACR_ASCOUF_MAIL> abscisse curv. circonf. :',ssep['POSI_CURV_CIRC']
-              print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(2*pi*RM)
-              self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-              ier = ier+1
-              return ier
-           if ssep['POSI_CURV_CIRC']!=(pi*RM) and ssep['TYPE']=='AXIS':
-              print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
-              print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados (pi*RM)'
-              self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-              ier = ier+1
-              return ier
-        else:
-           ssep.IPHIC=ssep['AZIMUT']
-           if ssep['AZIMUT']!=180. and ssep['TYPE']=='AXIS':
-              print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
-              print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados'
-              print ' <MACR_ASCOUF_MAIL> l azimut est fixe a 180 degres'
-              self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-              ier = ier+1
-              return ier
-#        l_ITYPE.append(ssep['TYPE'           ])
-#        l_ICIRC.append(ssep['AXE_CIRC'       ])
-#        l_ILONC.append(ssep['AXE_LONGI'      ])
-#        l_IPROC.append(ssep['PROFONDEUR'     ])
-#        l_ISLC.append( ssep['POSI_CURV_LONGI'])
-#        l_IBETC.append(BETA)
-        ssep.BETA=BETA
-#        l_ISCC.append( ssep['POSI_CURV_CIRC' ])
-#        l_IPHIC.append(ssep['AZIMUT'         ])
-#        l_IPOS.append( ssep['SOUS_EPAIS'     ])
-#        l_INBEL.append(ssep['NB_ELEM_LONGI'  ])
-#        l_INBEC.append(ssep['NB_ELEM_CIRC'   ])
-#        l_IEVID.append(ssep['EMPREINTE'      ])
-
-     if SOUS_EPAIS_COUDE!=None and COUDE['NB_ELEM_EPAIS']!=3 :
-        print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l'
-        print ' <MACR_ASCOUF_MAIL> epaisseur du coude n est pas parametrable pour'
-        print ' <MACR_ASCOUF_MAIL> la version 2 de la procedure de plaque avec sous'
-        print ' <MACR_ASCOUF_MAIL> -epaisseur : mot-cle NB_ELEM_EPAIS ignore'
-        print ' <A> <MACR_ASCOUF_MAIL> alarme'
-#
-################################################################################
-#     --- verifications de coherences ---
-################################################################################
-#
-# donnees globales
-  if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
-    if SUREP<0. or SUREP>(RM-EP1/2.0):
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> surepaisseur :',SUREP
-       print ' <MACR_ASCOUF_MAIL> valeur limite autorisee (RM-EP1/2) :',(RM-EP1/2.0)
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-  if RC<=(RM+EP1/2.0):
-     print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-     print ' <MACR_ASCOUF_MAIL> le rayon de cintrage :',RC
-     print ' <MACR_ASCOUF_MAIL> doit etre superieur a (RM+EP1/2) :',(RM+EP1/2.0)
-     self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-     ier = ier+1
-     return ier
-#
-# coude fissure
-#
-  if FISS_COUDE!=None:
-    if (RM/EP1)<5. or (RM/EP1)>50.:
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite (5,50)'
-       print ' <MACR_ASCOUF_MAIL> rapport RM/EP1 :',(RM/EP1)
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-    if FISS_COUDE['ABSC_CURV']!=None:
-     if SF<0. or SF>(ALPHA*RC*pi/180.0) :
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> abscisse curviligne centre fissure :',SF
-       print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',(ALPHA*RC*pi/180.0)
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-    if (NT-2*(NT/2))!=0:
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> nombre de tranches :',NT
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-    if FISS_COUDE['ABSC_CURV'] and ((BETA<0.) or (BETA>ALPHA)):
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> position angulaire  centre fissure :',BETA
-       print ' <MACR_ASCOUF_MAIL> posi_angul doit etre >= 0 et <= ',ALPHA
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-#
-# transition d epaisseur
-#
-  if NBTRAN!=0:
-    LCOUDE = ALPHA * RC * pi / 180.0
-    DEXT = 2.0*RM + EP1
-    if (LTRAN<LDEFAU) and (LTRAN>LCOUDE) :
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> debut transition d epaisseur :',LTRAN
-       print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',LDEFAU
-       print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',LCOUDE
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-    if (TETA1<0.) or (TETA1>30.) :
-       print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-       print ' <MACR_ASCOUF_MAIL> angle de transition TETA1 :',TETA1
-       print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
-       print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',30.
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-#
-# transition d epaisseur a une pente
-#
-    if NBTRAN==1:
-       if (EP1<12.) or (EP1>80.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> epaisseur avant la transition :',EP1
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',12.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',80.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP2<20.) or (EP2>110.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> epaisseur apres la transition :',EP2
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',20.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',110.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP1>EP2) :
-          print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
-          print ' <MACR_ASCOUF_MAIL> doit etre inferieure '
-          print ' <MACR_ASCOUF_MAIL> a celle apres la transition'
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       LTRANF = LTRAN + ((EP2-EP1)/(tan(TETA1)))
-       if (LTRANF>LCOUDE) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
-          print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if DEXT<112. or DEXT>880. :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',DEXT
-          print ' <MACR_ASCOUF_MAIL> valeur minimum autorisee :',112.
-          print ' <MACR_ASCOUF_MAIL> valeur maximum autorisee :',880.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-#
-# transition d epaisseur a une pente
-#
-    else:
-       if (TETA2<0.) or (TETA2>45.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> angle de transition TETA2 :',TETA2
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',45.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP1<7.) or (EP1>35.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> epaisseur avant 1ere transition :',EP1
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',7.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',35.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP2<15.) or (EP2>40.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> epaisseur avant 2eme transition :',EP2
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EPI<15.) or (EPI>40.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> epaisseur intermediaire :',EPI
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP1>EPI) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
-          print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (EP2<EPI) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> l epaisseur apres la transition'
-          print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       LTRANF = LTRAN  + (EPI-EP1)/(tan(TETA1))
-       LTRANF = LTRANF + (EP2-EPI)/(tan(TETA2))
-       if (LTRANF>LCOUDE) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
-          print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-       if (DEXT<77.) or (DEXT>355.) :
-          print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
-          print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',LTRANF
-          print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',77.
-          print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',355.
-          self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
-          ier = ier+1
-          return ier
-#
-################################################################################
-#     --- calcul taille initiale des defauts sur la plaque ---
-################################################################################
-#
-#
-  if FISS_COUDE!=None:
-     DSF=(FISS_COUDE['ABSC_CURV']!=None)
-     AXEAP,AXECP,SFP = ASCFIS(ALPHA, RM, RC, EP1, SUREP, GEOM, FPROF,
-                              DGAXEC, AZIM, POSIT, SF, DSF, BETA, ORIEN)
-  elif MCL_SOUS_EPAIS!=None :
-     ier= ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP1,GEOM,SYME)
-     for ssep in MCL_SOUS_EPAIS:
-         ssep.IDENL = ssep.ILONP/ssep['NB_ELEM_LONGI']*180./(pi*RC)
-         ssep.IDENC = ssep.ICIRP/ssep['NB_ELEM_CIRC']*180./(pi*RM)
-     if SYME=='QUART' :
-#       quart de structure     
-        ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
-        = ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM)
-     else :
-#       demi-structure ou entiere
-        ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
-        = ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM)
-#
-#
-  loc_gibi=aster.repout()
-  logiel = EXEC_MAILLAGE['LOGICIEL'  ]
-  UNITD  = EXEC_MAILLAGE['UNITE_DATG']
-  UNITP  = EXEC_MAILLAGE['UNITE_MGIB']
-  if   logiel=='GIBI98'  : logiel = loc_gibi+'gibi98'
-  elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
-  else                   :
-       self.cr.fatal("<F> <MACR_ASCOUF_MAIL> seuls gibi98 et gibi2000 sont appelableS")
-       ier = ier+1
-       return ier
-#
-#     --- ecriture sur le fichier .datg  de la procedure ---
-#
-# Nom du fichier de commandes pour GIBI
-  nomFichierDATG = 'fort.'+str(UNITD)
-# Nom du fichier de maillage GIBI
-  nomFichierGIBI = 'fort.'+str(UNITP)
-  loc_datg = aster.repdex()
-#
-  if FISS_COUDE!=None:
-#   procedure coude fissure (MOT-CLE FISS_COUDE)
-    write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
-                           TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,SFP,
-                           ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME,loc_datg)
-  elif MCL_SOUS_EPAIS!=None :
-     if SOUS_EPAIS_MULTI==None :
-#      procedure coude sous-ep.: (MOT-CLE SOUS_EPAIS_COUDE)  
-       write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
-                              EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
-                              SYME,NBEP,NLX,NLY,NIVMAG,loc_datg)
-       write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY)
-     else:
-#      procedure coude sous-ep.:(MOT-CLE SOUS_EPAIS_MULTI)
-       write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg)
-       write_file_pgib_ASCSDO(RM,RC,ALPHA,EP1,LTCLIM,LTCHAR,NBEP,
-                              NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
-                              DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME)
-       write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY)
-  else:
-#   procedure coude regle
-    write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP1,SUREP,
-                           LTCLIM,LTCHAR,NBEP,loc_datg)
-
-  
-# GIBI  
-  EXEC_LOGICIEL( LOGICIEL = logiel ,
-                 ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
-                              _F(NOM_PARA=nomFichierGIBI), ), )
-# PRE_GIBI
-  PRE_GIBI()
-
-  if SYME == 'QUART' : self.DeclareOut('nomres',self.sd)
-# LIRE_MAILLAGE
-  nomres=LIRE_MAILLAGE(INFO=INFO)
-
-# DEFI_GROUP  1
-
-  motscles={}
-  l_CREA_GROUP_NO=[]
-  l_CREA_GROUP_NO.append('BORD1')
-  l_CREA_GROUP_NO.append('CLGV')
-  l_CREA_GROUP_NO.append('BORD2')
-  l_CREA_GROUP_NO.append('PEAUINT')
-  l_CREA_GROUP_NO.append('PEAUEXT') 
-
-# cas des fissures axisymetriques
-  if FISS_COUDE!=None:
-    if FISS_COUDE['AXIS']=='OUI':
-      motscles['CREA_GROUP_MA']=[]
-      motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
-                                          NOM      = 'MAIL_ORI',
-                                          POSITION = 'INIT'    , ),) 
-
-# conversion des groupes de mailles en groupes du bloc fissure  
-  if FISS_COUDE!=None:
-    if SYME == 'ENTIER':
-      l_CREA_GROUP_NO.append('NOLIG1')
-      l_CREA_GROUP_NO.append('FACE1')
-    l_CREA_GROUP_NO.append('NOLIG2')
-    l_CREA_GROUP_NO.append('FACE2')
-    l_CREA_GROUP_NO.append('FONDFISS')
-
-  motscles['CREA_GROUP_NO']=[]
-  motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=tuple(l_CREA_GROUP_NO)))
-
-# conversion des groupes de mailles en groupes de noeuds pour les
-# ligaments des sous-ep.
-  if MCL_SOUS_EPAIS!=None:
-    issep=0
-    for ssep in MCL_SOUS_EPAIS:
-      issep=issep+1
-      if ssep['TYPE']=='ELLI':
-        for k in range(2*NLX[issep-1]+1):
-          chtmp=str(issep)+'_'+str(k+1)
-          ch1='CIR'+chtmp
-          ch2='ICI'+chtmp
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch2,
-                                              GROUP_MA = ch1,),)
-        motscles['CREA_GROUP_NO'].append(_F(NOM      = 'IPCEN'+str(issep),
-                                            GROUP_MA = 'PCENT'+str(issep),),)
-        for k in range(2*NLY[issep-1]+1):
-          chtmp=str(issep)+'_'+str(k+1)
-          ch1='LON'+chtmp
-          ch2='ILO'+chtmp
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch2,
-                                              GROUP_MA = ch1,),)
-        for k in range(2*NLX[issep-1]+1):
-          chtmp=str(issep)+'_'+str(k+1)
-          ch1='ICI'+chtmp
-          ch2='OCI'+chtmp
-          ch3='ECI'+chtmp
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch2,
-                                              INTERSEC = ('PEAUEXT',ch1),),)
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch3,
-                                              INTERSEC = ('PEAUINT',ch1),),)
-        motscles['CREA_GROUP_NO'].append(_F(NOM      = 'OPCEN'+str(issep),
-                                            INTERSEC = ('PEAUEXT','IPCEN'+str(issep),),),)
-        motscles['CREA_GROUP_NO'].append(_F(NOM      = 'EPCEN'+str(issep),
-                                            INTERSEC = ('PEAUINT','IPCEN'+str(issep),),),)
-        for k in range(2*NLY[issep-1]+1):
-          chtmp=str(issep)+'_'+str(k+1)
-          ch1='ILO'+chtmp
-          ch2='OLO'+chtmp
-          ch3='ELO'+chtmp
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch2,
-                                              INTERSEC =  ('PEAUEXT',ch1),),)
-          motscles['CREA_GROUP_NO'].append(_F(NOM      = ch3,
-                                              INTERSEC =  ('PEAUINT',ch1),),)
-        for k in range(2*NLX[issep-1]+1):
-          chtmp=str(issep)+'_'+str(k+1)
-          ch1='CIR'+chtmp
-          ch2='ICI'+chtmp
-          ch3='OCI'+chtmp
-          ch4='ECI'+chtmp  
-          motscles['CREA_GROUP_NO'].append(_F(OPTION        = 'SEGM_DROI_ORDO',
-                                              NOM           = ch1,
-                                              GROUP_NO      = ch2,
-                                              GROUP_NO_ORIG = ch3,
-                                              GROUP_NO_EXTR = ch4,
-                                              PRECISION     = PRECIS,
-                                              CRITERE       = CRITER,),)
-        motscles['CREA_GROUP_NO'].append(_F(OPTION        = 'SEGM_DROI_ORDO',
-                                            NOM           = 'PCENT'+str(issep),
-                                            GROUP_NO      = 'IPCEN'+str(issep),
-                                            GROUP_NO_ORIG = 'OPCEN'+str(issep),
-                                            GROUP_NO_EXTR = 'EPCEN'+str(issep),
-                                            PRECISION     =  PRECIS,
-                                            CRITERE       =  CRITER,),)
-        for k in range(2*NLY[issep-1]+1):
-           chtmp=str(issep)+'_'+str(k+1)
-           ch1='LON'+chtmp
-           ch2='ILO'+chtmp
-           ch3='OLO'+chtmp
-           ch4='ELO'+chtmp  
-           motscles['CREA_GROUP_NO'].append(_F(OPTION        = 'SEGM_DROI_ORDO',
-                                               NOM           = ch1,
-                                               GROUP_NO      = ch2,
-                                               GROUP_NO_ORIG = ch3,
-                                               GROUP_NO_EXTR = ch4,
-                                               PRECISION     = PRECIS,
-                                               CRITERE       = CRITER,),)
-#     1/ noms intermediaires des groupes de noeuds representant les ligaments
-#        des sections: TU,MI,GV et sous-ep.     
-      for k in range(8):
-        motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR3[k]+str(issep),
-                                             GROUP_MA = CAR6[k]+str(issep),),)
-
-    for k in range(3):
-      if SYME == 'ENTIER' or k!=2:
-        for j in range(8):
-          motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR3[j]+SECT[k],
-                                               GROUP_MA = CAR6[j]+SECT[k],),)
-
-#   2/ determination et nommage des noeuds origine et extremite des groupes de noeuds
-#      representant les ligaments de la ou des sections: sous-ep.
-    issep=0
-    for ssep in MCL_SOUS_EPAIS:
-      issep=issep+1
-      for k in range(8):
-        motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR4[k]+str(issep),
-                                             INTERSEC = ('PEAUEXT',CAR3[k]+str(issep),),),)
-        motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR5[k]+str(issep),
-                                             INTERSEC = ('PEAUINT',CAR3[k]+str(issep),),),)        
-#     3/ nommage final des groupes de noeuds representant les ligaments 
-#        de la ou des sections: sous-ep.
-      for k in range(8):
-        motscles['CREA_GROUP_NO'].append(_F(OPTION        = 'SEGM_DROI_ORDO',
-                                            NOM           = CAR6[k]+str(issep),
-                                            GROUP_NO      = CAR3[k]+str(issep),
-                                            GROUP_NO_ORIG = CAR4[k]+str(issep),
-                                            GROUP_NO_EXTR = CAR5[k]+str(issep),
-                                            PRECISION     = PRECIS,
-                                            CRITERE       = CRITER,),)
-
-#   4/ determination et nommage des noeuds origine et extremite des groupes de noeuds
-#      representant les ligaments des sections: TU,MI,GV
-    for k in range(3):
-      if SYME == 'ENTIER' or k!=2:
-        for j in range(8):
-           motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR4[j]+SECT[k],
-                                                INTERSEC = ('PEAUEXT',CAR3[j]+SECT[k],),),) 
-           motscles['CREA_GROUP_NO'].append(_F( NOM      = CAR5[j]+SECT[k],
-                                                INTERSEC = ('PEAUINT',CAR3[j]+SECT[k],),),) 
-#       5/ nommage final des groupes de noeuds representant les ligaments des sections: TU,MI,GV   
-        for j in range(8):    
-           motscles['CREA_GROUP_NO'].append(_F(OPTION        = 'SEGM_DROI_ORDO',
-                                               NOM           = CAR6[j]+SECT[k],
-                                               GROUP_NO      = CAR3[j]+SECT[k],
-                                               GROUP_NO_ORIG = CAR4[j]+SECT[k],
-                                               GROUP_NO_EXTR = CAR5[j]+SECT[k],
-                                               PRECISION     = PRECIS,
-                                               CRITERE       = CRITER,),)
-    
-
-  nomres=DEFI_GROUP(reuse   =nomres,
-                      MAILLAGE=nomres,
-                      **motscles )
-#
-# DEFI_GROUP  2
-  if FISS_COUDE!=None:
-# creation des groupes petit axe et grand axe fissure par
-# intersection de groupes existants
-    motscles={}
-    motscles['CREA_GROUP_NO']=[]
-    l_peau=[]
-    l_intersec=[]
-    if POSIT == 'DEB_INT':
-        l_peau.append('PEAUINT')
-    else:
-        l_peau.append('PEAUEXT')
-    
-    if SYME == 'ENTIER' :
-      l_intersec.append('FACE1')
-      motscles['CREA_GROUP_NO'].append(_F(NOM      = 'P_AXE_1',
-                                          INTERSEC = ('NOLIG1','FACE1'),),)
-      motscles['CREA_GROUP_NO'].append(_F(NOM      = 'G_AXE_1',
-                                          INTERSEC =  tuple(l_peau+l_intersec),),)  
-    l_intersec=[]
-    l_intersec.append('FACE2')  
-    motscles['CREA_GROUP_NO'].append(_F(NOM      = 'P_AXE_2',
-                                        INTERSEC = ('NOLIG2','FACE2'),),)
-    motscles['CREA_GROUP_NO'].append(_F(NOM      = 'G_AXE_2',
-                                        INTERSEC =  tuple(l_peau+l_intersec),),)
-   
-    nomres=DEFI_GROUP(reuse   =nomres,
-                        MAILLAGE=nomres,
-                        **motscles )    
-# AFFE_MODELE
-  __MODELE=AFFE_MODELE( MAILLAGE=nomres,
-                        AFFE=_F( GROUP_MA     = 'COUDE'      ,
-                                 PHENOMENE    = 'MECANIQUE'  ,
-                                 MODELISATION = '3D'         , )
-                         )
-
-# MODI_MAILLAGE  1
-  motscles={}
-  if GEOM == 'COUDE':
-    motscles['TUBE_COUDE']=[]
-    motscles['TUBE_COUDE'].append(_F(ANGLE=ALPHA,
-                                    R_CINTR=RC,
-                                    L_TUBE_P1=LTCHAR),)
-  motscles['PLAQ_TUBE']=[]
-  D_PLAQ_TUBE={}
-  D_PLAQ_TUBE['DEXT']=DEXT
-  D_PLAQ_TUBE['EPAIS']=EP1
-  D_PLAQ_TUBE['L_TUBE_P1']=LTCHAR
-  if SYME == 'QUART' : D_PLAQ_TUBE['COUTURE']='NON'
-  if FISS_COUDE!=None:
-      D_PLAQ_TUBE['AZIMUT']=AZIM
-  elif SOUS_EPAIS_COUDE!=None :
-      D_PLAQ_TUBE['AZIMUT']=MCL_SOUS_EPAIS[0].IPHIC
-  else:pass
-  motscles['PLAQ_TUBE'].append(_F(**D_PLAQ_TUBE),) 
-  nomres=MODI_MAILLAGE( reuse   =nomres,
-                          MAILLAGE=nomres,
-                          **motscles )
-# MODI_MAILLAGE  2
-  motscles={}
-  motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE'),)
-  if FISS_COUDE!=None:
-    if FISS_COUDE['FISSURE'] == 'DEB_INIT':
-      motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE','FACE1','FACE2'),)  
-  nomres=MODI_MAILLAGE(reuse   =nomres,
-                       MAILLAGE=nomres,
-                       MODELE  =__MODELE,
-                       **motscles)
-
-# CREA_MAILLAGE
-  if SYME != 'QUART':
-    self.DeclareOut('nomre2',self.sd)
-    motscles={}
-    motscles['CREA_POI1']=[]
-    motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P1',
-                                    GROUP_NO='P1'),)
-    if TYPBOL == None :
-      motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P2',
-                                    GROUP_NO='P2'),)    
-    nomre2=CREA_MAILLAGE( MAILLAGE=nomres,
-                          **motscles)
-  else:  
-    nomre2=nomres
-
-# IMPRESSSION
-  if IMPRESSION!=None:
-     if IMPRESSION.__class__.__name__  !='MCList' : IMPRESSION  =[IMPRESSION,]
-     for impr in IMPRESSION :
-#
-         motscles={}
-         if impr['FORMAT']=='IDEAS'  : motscles['VERSION']   =impr['VERSION']
-         if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI'] =impr['NIVE_GIBI']
-         if impr['UNITE']!=None      : motscles['UNITE']     =impr['UNITE']
-         impr_resu = _F( MAILLAGE = nomre2,)
-#
-         IMPR_RESU( RESU = impr_resu,
-                    FORMAT= impr['FORMAT'],**motscles)
-
-
-
-  return ier
-
-
diff --git a/Aster/Cata/Macro/macr_aspic_calc_ops.py b/Aster/Cata/Macro/macr_aspic_calc_ops.py
deleted file mode 100644 (file)
index 5426c39..0000000
+++ /dev/null
@@ -1,827 +0,0 @@
-#@ MODIF macr_aspic_calc_ops Macro  DATE 08/02/2005   AUTEUR CIBHHLV L.VIVAN 
-# -*- 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.        
-# ======================================================================
-
-
-def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
-                             FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
-                             PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
-                             THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
-                             INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE ,**args):          
-  """
-     Ecriture de la macro MACR_ASPIC_CALC
-  """
-  from Accas import _F
-  import types
-  ier=0
-#------------------------------------------------------------------
-  # On recopie le mot cle affe_materiau pour le proteger
-  mc_AFFE_MATERIAU=AFFE_MATERIAU
-#------------------------------------------------------------------
-  # On importe les definitions des commandes a utiliser dans la macro
-  AFFE_MODELE      =self.get_cmd('AFFE_MODELE'     )
-  AFFE_MATERIAU    =self.get_cmd('AFFE_MATERIAU'   )
-  AFFE_CARA_ELEM   =self.get_cmd('AFFE_CARA_ELEM'  )
-  AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
-  THER_LINEAIRE    =self.get_cmd('THER_LINEAIRE'   )
-  AFFE_CHAR_MECA   =self.get_cmd('AFFE_CHAR_MECA'  )
-  STAT_NON_LINE    =self.get_cmd('STAT_NON_LINE'   )
-  CALC_ELEM        =self.get_cmd('CALC_ELEM'       )
-  POST_RELEVE_T    =self.get_cmd('POST_RELEVE_T'   )
-  IMPR_TABLE       =self.get_cmd('IMPR_TABLE'      )
-  POST_RCCM        =self.get_cmd('POST_RCCM'       )
-  DEFI_FOND_FISS   =self.get_cmd('DEFI_FOND_FISS'  )
-  CALC_THETA       =self.get_cmd('CALC_THETA'      )
-  CALC_G_THETA_T   =self.get_cmd('CALC_G_THETA_T'  )
-  CALC_G_LOCAL_T   =self.get_cmd('CALC_G_LOCAL_T'  )
-  IMPR_RESU        =self.get_cmd('IMPR_RESU'       )
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-#------------------------------------------------------------------
-# data
-  GRMAIL= ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP')
-  NOMNOE= ('P1_CORP','P2_CORP','P_TUBU ')
-  IMPRT1= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
-           'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
-           'SIXX'      ,'SIXY'    ,'SIXZ'   )
-  IMPRT2= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
-           'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
-           'SIYY'      ,'SIXY'    ,'SIYZ'   )
-  IMPRT3= ('NUME_ORDRE','INTITULE','RESU'  ,'NOM_CHAM',
-           'ABSC_CURV' ,'COOR_X'  ,'COOR_Y','COOR_Z'  ,
-           'TEMP'   )
-  APPRES= ('PEAUINT ','LEVRTUBU','LEVRCORP')
-#------------------------------------------------------------------
-#
-  i=0
-  for mate in mc_AFFE_MATERIAU:
-     if mate['RCCM']=='OUI' :
-        i=i+1
-        MRCCM=mate['MATER']
-  if i>1 :
-     ier=ier+1
-     self.cr.fatal("""<E> <MACR_ASPIC_CALC> vous affectez plus d un materiau contenant l option rccm""")
-     return ier
-#
-  if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
-     ier=ier+1
-     self.cr.fatal("""<E> <MACR_ASPIC_CALC> pour les piquages sains, TUBULURE doit etre renseigne""")
-     return ier
-#
-  if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
-     ier=ier+1
-     self.cr.fatal("""<E> <MACR_ASPIC_CALC> EQUILIBRE[NOEUD] : on attend 'P1_CORP ' ou 'P2_CORP'""")
-     return ier
-#
-  if PRES_REP['EFFE_FOND']=='OUI' :
-     if PRES_REP['NOEUD']==None :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASPIC_CALC> il faut preciser un noeud pour EFFE_FOND""")
-       return ier
-     if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASPIC_CALC> PRES_REP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
-       return ier
-     if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque""")
-       return ier
-#
-  if TORS_CORP!=None :
-     for tors in TORS_CORP :
-         if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
-            ier=ier+1
-            self.cr.fatal("""<E> <MACR_ASPIC_CALC> TORS_CORP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
-            return ier
-         if tors['NOEUD']==EQUILIBRE['NOEUD'] :
-           ier=ier+1
-           self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque""")
-           return ier
-#
-  if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
-     ier=ier+1
-     self.cr.fatal("""<E> <MACR_ASPIC_CALC> si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible""")
-     return ier
-#
-  if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
-    if BORNES==None :
-       ier=ier+1
-       self.cr.fatal("""<E> <MACR_ASPIC_CALC> mot-clef <BORNES> obligatoire avec cette option""")
-       return ier
-#
-  if IMPRESSION!=None :
-    if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
-      if IMPRESSION['NOM_CHAM']==None :
-        ier=ier+1
-        self.cr.fatal("""<E> <MACR_ASPIC_CALC> impression de resultats demandée sans preciser le nom des champs
-                                               cf. la documentation utilisateur : U4.PC.20.""")
-        return ier
-#
-#------------------------------------------------------------------
-#
-#     --- commande AFFE_MODELE ---
-#
-  if MODELE!=None : self.DeclareOut('modele',MODELE)
-  mcfact=[]
-  if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
-     mcfact.append(_F(GROUP_MA=GRMAIL,     PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
-  else:
-     mcfact.append(_F(GROUP_MA=GRMAIL[:-2],PHENOMENE='MECANIQUE',MODELISATION='3D'    ))
-  mcfact.append(   _F(GROUP_MA='P1_CORP'  ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
-  mcfact.append(   _F(GROUP_MA='P2_CORP'  ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
-  mcfact.append(   _F(GROUP_MA='P_TUBU'   ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
-  modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
-                        AFFE     = mcfact    )
-  if ECHANGE!=None :                                # modele thermique
-     __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
-                             AFFE     = _F(GROUP_MA    =GRMAIL[:-2],
-                                           PHENOMENE   ='THERMIQUE',
-                                           MODELISATION='3D' )       )
-#
-#     --- commande AFFE_MATERIAU ---
-#
-  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 ,
-                          MODELE   = modele ,
-                          AFFE     = mcfact    )
-#
-#     --- commande AFFE_CARA_ELEM ---
-#
-  if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
-  carael = AFFE_CARA_ELEM( MODELE   = modele ,
-                           DISCRET  = ( _F( GROUP_MA='P1_CORP' ,
-                                            CARA    ='K_TR_D_N',
-                                            VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
-                                        _F( GROUP_MA='P2_CORP' ,
-                                            CARA    ='K_TR_D_N',
-                                            VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
-                                        _F( GROUP_MA='P_TUBU' ,
-                                            CARA    ='K_TR_D_N',
-                                            VALE    = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
-#
-#     --- commande AFFE_CHAR_THER_F ---
-#         condition aux limites
-#
-  if ECHANGE!=None :
-     __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
-                                  ECHANGE=( _F(GROUP_MA='PEAUTUBU',
-                                               COEF_H  =ECHANGE['COEF_H_TUBU'],
-                                               TEMP_EXT=ECHANGE['TEMP_EXT'],),
-                                            _F(GROUP_MA='PEAUCORP',
-                                               COEF_H  =ECHANGE['COEF_H_CORP'],
-                                               TEMP_EXT=ECHANGE['TEMP_EXT'],),))
-#
-#     --- calcul thermique ---
-#
-     if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
-     mcsimp={}
-     if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
-     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 ,
-                             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_CHAR_MECA ---
-#         condition aux limites
-#
-  if     EQUILIBRE['NOEUD']=='P1_CORP' :
-         NENCAS = EQUILIBRE['NOEUD']
-         AEFOCO = 'EXCORP2'
-         ATORCO = 'P2_CORP'
-         LINTC  = 'L_INT_C2'
-  elif   EQUILIBRE['NOEUD']=='P2_CORP' :
-         NENCAS = EQUILIBRE['NOEUD']
-         AEFOCO = 'EXCORP1'
-         ATORCO = 'P1_CORP'
-         LINTC  = 'L_INT_C1'
-  __conlim = AFFE_CHAR_MECA( MODELE   = modele ,
-                             LIAISON_ELEM  = ( _F( OPTION    ='3D_POU'  ,
-                                                   GROUP_MA_1='EXCORP1',
-                                                   GROUP_NO_2='P1_CORP'),
-                                               _F( OPTION    ='3D_POU'  ,
-                                                   GROUP_MA_1='EXCORP2' ,
-                                                   GROUP_NO_2='P2_CORP'),
-                                               _F( OPTION    ='3D_POU'  ,
-                                                   GROUP_MA_1='EXTUBU',
-                                                   GROUP_NO_2='P_TUBU'), ),
-                             DDL_IMPO      =   _F( GROUP_NO  = NENCAS  ,
-                                                   DX        = 0.0 ,
-                                                   DY        = 0.0 ,
-                                                   DZ        = 0.0 ,
-                                                   DRX       = 0.0 ,
-                                                   DRY       = 0.0 ,
-                                                   DRZ       = 0.0 , ) )
-#
-#     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique : pres_rep, effet de fond 
-#
-  motscles={}
-  if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
-      motscles['PRES_REP'  ]= _F(GROUP_MA=APPRES,   PRES=PRES_REP['PRES'])
-  else :
-      motscles['PRES_REP'  ]= _F(GROUP_MA=APPRES[0],PRES=PRES_REP['PRES'])
-  if  PRES_REP['EFFE_FOND' ]!=None :
-      motscles['EFFE_FOND' ]=(_F(GROUP_MA    ='EXTUBU  ',
-                                 GROUP_MA_INT='L_INT_TU',
-                                 PRES        =PRES_REP['PRES']),
-                              _F(GROUP_MA    =AEFOCO,
-                                 GROUP_MA_INT=LINTC,
-                                 PRES        =PRES_REP['PRES']))
-  __chpres = AFFE_CHAR_MECA( MODELE   = modele ,**motscles)
-#
-#     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique : torseur sur le corps
-#
-  if TORS_CORP!=None:
-     __chtrc = [None]*6
-     i=0
-     for tors in TORS_CORP :
-       mcsimp={}
-       if tors['FX']!=None : mcsimp['FX']=tors['FX']
-       if tors['FY']!=None : mcsimp['FY']=tors['FY']
-       if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
-       if tors['MX']!=None : mcsimp['MX']=tors['MX']
-       if tors['MY']!=None : mcsimp['MY']=tors['MY']
-       if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
-       mcfact=_F(GROUP_NO=ATORCO,**mcsimp)
-       __chtrc[i] = AFFE_CHAR_MECA( MODELE       = modele ,
-                                    FORCE_NODALE = mcfact , )
-       i=i+1
-#
-#     --- commande AFFE_CHAR_MECA ---
-#         chargement mecanique : torseur sur la tubulure
-#
-  if TORS_TUBU!=None:
-     __chtrt = [None]*6
-     i=0
-     for tors in TORS_TUBU :
-       mcsimp={}
-       if tors['FX']!=None : mcsimp['FX']=tors['FX']
-       if tors['FY']!=None : mcsimp['FY']=tors['FY']
-       if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
-       if tors['MX']!=None : mcsimp['MX']=tors['MX']
-       if tors['MY']!=None : mcsimp['MY']=tors['MY']
-       if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
-       mcfact=_F(GROUP_NO='P_TUBU  ',**mcsimp)
-       __chtrt[i] = AFFE_CHAR_MECA( MODELE       = modele ,
-                                    FORCE_NODALE = mcfact , )
-       i=i+1
-#
-#     --- commande STAT_NON_LINE ---
-#
-  motscles={}
-#
-  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 :
-     mcfex.append(_F(CHARGE=__chpres,))
-  if TORS_CORP!=None:
-     i=0
-     for tors in TORS_CORP :
-       if tors['FONC_MULT']!=None :
-          mcfex.append(_F(CHARGE=__chtrc[i],FONC_MULT=tors['FONC_MULT']))
-       else :
-          mcfex.append(_F(CHARGE=__chtrc[i],))
-       i=i+1
-  if TORS_TUBU!=None:
-     i=0
-     for tors in TORS_TUBU :
-       if tors['FONC_MULT']!=None :
-          mcfex.append(_F(CHARGE=__chtrt[i],FONC_MULT=tors['FONC_MULT']))
-       else :
-          mcfex.append(_F(CHARGE=__chtrt[i],))
-       i=i+1
-  motscles['EXCIT'] =mcfex
-#
-  mcfci=[]  # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
-  if COMP_INCR!=None :
-    mcfci.append(_F(TOUT    ='OUI' ,RELATION=COMP_INCR['RELATION']))
-  mcfci.append(  _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
-  motscles['COMP_INCR'] =mcfci
-#
-  if COMP_ELAS!=None :
-    motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
-#
-  dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-  for i in dSolveur.keys():
-      if dSolveur[i]==None : del dSolveur[i]
-#
-  dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
-  for i in dConverg.keys():
-      if dConverg[i]==None : del dConverg[i]
-#
-  dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
-  for i in dNewton.keys():
-      if dNewton[i]==None : del dNewton[i]
-#
-  dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
-  for i in dRechlin.keys():
-      if dRechlin[i]==None : del dRechlin[i]
-#
-  dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
-  for i in dIncrem.keys():
-      if dIncrem[i]==None : del dIncrem[i]
-#
-  if TITRE!=None :
-    motscles['TITRE'        ] =TITRE
-  motscles  ['SOLVEUR'      ] =dSolveur
-  motscles  ['CONVERGENCE'  ] =dConverg
-  motscles  ['NEWTON'       ] =dNewton
-  motscles  ['RECH_LINEAIRE'] =dRechlin
-  motscles  ['INCREMENT'    ] =dIncrem
-  self.DeclareOut('nomres',self.sd)
-  nomres = STAT_NON_LINE( MODELE     = modele ,
-                          CHAM_MATER = affmat ,
-                          CARA_ELEM  = carael ,
-                          INFO       = INFO   , **motscles)
-#
-  nomres = CALC_ELEM( reuse      = nomres,
-                      RESULTAT   = nomres ,
-                      TOUT_ORDRE = 'OUI'  ,
-                      OPTION     = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
-                      INFO       = INFO ,)
-#
-#-----------------------------------------------------------------------
-  if TYPE_MAILLAGE[:4]=='SAIN' :
-#-----------------------------------------------------------------------
-#
-#     --- post traitement :  POST_RELEVE_T  --- azimuts droits
-#
-#     ----  champs de contrainte SI, SII ET SIII  ----
-#
-    if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
-    else                          : NBAZIM = 48
-    mcfact=[]
-    TYPSOU=None
-    if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
-    for i in range(1,NBAZIM+1,PAS_AZIMUT):
-      if i<10 : NUME = '0'+str(i)
-      else    : NUME =     str(i)
-      mcsimp={}
-      if TYPSOU=='TYPE_1':
-          mcsimp['REPERE' ]='CYLINDRIQUE',
-          mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
-          mcsimp['AXE_Z'  ]=( 0.0 , 0.0 , 1.0 )
-          INTITD = 'AZI_'+NUME+'_D-REP_CYL'
-      else:
-          mcsimp['REPERE' ]='LOCAL'
-          mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
-          INTITD = 'AZI_'+NUME+'_D-REP_LOC'
-      mcsimp['INTITULE' ]=INTITD
-      mcsimp['GROUP_NO' ]='LD'+str(i)
-      mcfact.append( _F( RESULTAT   = nomres,
-                         TOUT_ORDRE ='OUI',
-                         NOM_CHAM   ='SIEF_ELNO_ELGA',
-                         PRECISION  =55.E-1,
-                         TOUT_CMP   ='OUI',
-                         OPERATION  ='EXTRACTION',**mcsimp))
-    __noposd=POST_RELEVE_T(ACTION = mcfact,
-                           TITRE  = '-- TRAITEMENT DES AZIMUTS DROITS --')
-#
-#     --- IMPR_TABLE dans un repere cylindrique ou local
-#         des champs de contrainte SI, SII ET SIII
-#
-    if TYPSOU=='TYPE_1' : nompara=IMPRT1
-    else                : nompara=IMPRT2
-    IMPR_TABLE(TABLE    = __noposd,
-               NOM_PARA = nompara   )
-#
-#     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
-#
-    if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['INTITULE'   ]='LD'+str(i)
-        mcsimp['GROUP_NO'   ]='LD'+str(i)
-        mcsimp['RESULTAT'   ]=nomres
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['OPERATION'  ]='EXTRACTION'
-        mcfact.append( _F(**mcsimp) )
-      __prelsd=POST_RELEVE_T(ACTION=mcfact)
-      __pmpbsd=POST_RCCM(OPTION         = 'PM_PB',
-                         TYPE_RESU_MECA = 'EVOLUTION',
-                         TYPE_RESU      = 'VALE_MAX',
-                         MATER          = MRCCM,
-                         TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
-                         TITRE       = '-- TRAITEMENT DES AZIMUTS DROITS --',)
-      IMPR_TABLE(TABLE = __pmpbsd, )
-#
-#     ----  champ de temperature, si il a ete calcule, sur les lignes de depouillement  ----
-#
-    if ECHANGE!=None :
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['GROUP_NO'   ]='LD'+str(i)
-        mcsimp['RESULTAT'   ]=resuth
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='TEMP'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['INTITULE'   ]='AZI_'+NUME+'_D'
-        mcsimp['OPERATION'  ]='EXTRACTION'
-        mcfact.append( _F(**mcsimp) )
-      __rthazd=POST_RELEVE_T(ACTION=mcfact)
-      IMPR_TABLE(TABLE = __rthazd, )
-#
-#     ----  parametres caracterisant la distribution de temperature,
-#           si elle a ete calculee, dans l epaisseur du ligament  ----
-#
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['GROUP_NO'   ]='LD'+str(i)
-        mcsimp['RESULTAT'   ]=resuth
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='TEMP'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['INTITULE'   ]='AZI_'+NUME+'_D'
-        mcsimp['OPERATION'  ]='MOYENNE'
-        mcfact.append( _F(**mcsimp) )
-      __rmothd=POST_RELEVE_T(ACTION=mcfact)
-      IMPR_TABLE(TABLE = __rmothd, )
-#
-#-----------------------------------------------------------------------
-#
-#     --- post traitement :  POST_RELEVE_T  --- azimuts inclines
-#     --- champs de contrainte SI, SII ET SIII  ----
-#
-    mcfact=[]
-    for i in range(1,NBAZIM+1,PAS_AZIMUT):
-      if i<10 : NUME = '0'+str(i)
-      else    : NUME =     str(i)
-      mcsimp={}
-      mcsimp['GROUP_NO'   ]='LI'+str(i)
-      mcsimp['RESULTAT'   ]=nomres
-      mcsimp['TOUT_ORDRE' ]='OUI'
-      mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
-      mcsimp['PRECISION'  ]=55.E-1
-      mcsimp['TOUT_CMP'   ]='OUI'
-      mcsimp['REPERE'     ]='LOCAL'
-      mcsimp['VECT_Y'     ]=( 0.0 , 0.0 , 1.0 )
-      mcsimp['INTITULE'   ]='AZI_'+NUME+'_I-REP_LOC'
-      mcsimp['OPERATION'  ]='EXTRACTION'
-      mcfact.append( _F(**mcsimp) )
-    __noposi=POST_RELEVE_T(ACTION=mcfact)
-    IMPR_TABLE(TABLE = __noposi, )
-#
-#     ----  Pm, Pm+Pb sur les lignes de depouillement  ----
-#
-    if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['INTITULE'   ]='LI'+str(i)
-        mcsimp['GROUP_NO'   ]='LI'+str(i)
-        mcsimp['RESULTAT'   ]=nomres
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='SIEF_ELNO_ELGA'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['OPERATION'  ]='EXTRACTION'
-        mcfact.append( _F(**mcsimp) )
-      __prelsi=POST_RELEVE_T(ACTION=mcfact)
-      __pmpbsi=POST_RCCM(OPTION         = 'PM_PB',
-                         TYPE_RESU_MECA = 'EVOLUTION',
-                         TYPE_RESU      = 'VALE_MAX',
-                         MATER          = MRCCM,
-                         TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
-                         TITRE       = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
-      IMPR_TABLE(TABLE = __pmpbsi, )
-#
-#     ----  champs de temperature,si il a ete calcule, sur les lignes de depouillement  ----
-#
-    if ECHANGE!=None :
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['GROUP_NO'   ]='LI'+str(i)
-        mcsimp['RESULTAT'   ]=resuth
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='TEMP'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
-        mcsimp['OPERATION'  ]='EXTRACTION'
-        mcfact.append( _F(**mcsimp) )
-      __rthazi=POST_RELEVE_T(ACTION=mcfact)
-      IMPR_TABLE(TABLE    = __rthazi,
-                 NOM_PARA = IMPRT3 )
-#
-#     ----  parametres caracterisant la distribution de temperature,
-#           si elle a ete calculee, dans l epaisseur du ligament  ----
-#
-      mcfact=[]
-      for i in range(1,NBAZIM+1,PAS_AZIMUT):
-        if i<10 : NUME = '0'+str(i)
-        else    : NUME =     str(i)
-        mcsimp={}
-        mcsimp['GROUP_NO'   ]='LI'+str(i)
-        mcsimp['RESULTAT'   ]=resuth
-        mcsimp['TOUT_ORDRE' ]='OUI'
-        mcsimp['NOM_CHAM'   ]='TEMP'
-        mcsimp['PRECISION'  ]=55.E-1
-        mcsimp['TOUT_CMP'   ]='OUI'
-        mcsimp['INTITULE'   ]='AZI_'+NUME+'_I'
-        mcsimp['OPERATION'  ]='MOYENNE'
-        mcfact.append( _F(**mcsimp) )
-      __rmothi=POST_RELEVE_T(ACTION=mcfact)
-      IMPR_TABLE(TABLE = __rmothi, )
-#
-#-----------------------------------------------------------------------
-  elif TYPE_MAILLAGE[:4]=='FISS' :
-#-----------------------------------------------------------------------
-#
-    NOMGRO=[]
-    NOMGRE=[]
-    TABMA8=[]
-    NOMMA =[]
-    if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
-       NBFIS = 1
-       NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
-       NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
-       TABMA8.append('FONDFISS')
-       if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
-       else :
-          FERME=1
-          NOMMA.append('MAIL_ORI')
-    elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
-       NBFIS = 2
-       NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
-       NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
-       NOMGRO.append(('PI_FON1','PI_FIS1'),)
-       NOMGRE.append(('PI_FON2','PI_FIS2'),)
-       TABMA8.append('FOND_SUP')
-       TABMA8.append('FOND_INF')
-       if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
-       else :
-          FERME=1
-          NOMMA.append('MA_ORI_S')
-          NOMMA.append('MA_ORI_I')
-#
-    if ECHANGE!=None:
-#
-#     ----  champs de temperature en fond de fissure
-#           si il a ete calcule, cas 1 fond de fissure  ----
-#
-      if NBFIS==1:
-        __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FONDFISS',
-                                         RESULTAT   =resuth,
-                                         TOUT_ORDRE ='OUI',
-                                         NOM_CHAM   ='TEMP',
-                                         PRECISION  =55.E-1,
-                                         TOUT_CMP   ='OUI',
-                                         INTITULE   ='FONDFISS',
-                                         OPERATION  ='EXTRACTION',))
-        IMPR_TABLE(TABLE = __rthfis, )
-#
-#     ----  champs de temperature en fond de fissure
-#           si il a ete calcule, cas 2 fonds de fissure  ----
-#
-      elif NBFIS==2:
-#
-        __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_SUP',
-                                          RESULTAT   =resuth,
-                                          TOUT_ORDRE ='OUI',
-                                          NOM_CHAM   ='TEMP',
-                                          PRECISION  =55.E-1,
-                                          TOUT_CMP   ='OUI',
-                                          INTITULE   ='FOND_SUP',
-                                          OPERATION  ='EXTRACTION',))
-        IMPR_TABLE(TABLE = __rthfis1, )
-        __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO   ='FOND_INF',
-                                          RESULTAT   =resuth,
-                                          TOUT_ORDRE ='OUI',
-                                          NOM_CHAM   ='TEMP',
-                                          PRECISION  =55.E-1,
-                                          TOUT_CMP   ='OUI',
-                                          INTITULE   ='FOND_INF',
-                                          OPERATION  ='EXTRACTION',))
-        IMPR_TABLE(TABLE = __rthfis2, )
-#
-#        boucle sur le nombre de fond de fissure
-#
-    fond3d = [None]*2
-    for j in range(NBFIS):
-      if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
-      if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
-#
-#          --- commande DEFI_FOND_FISS ---
-#
-      motscles={}
-      if not FERME:
-         motscles['FOND_FISS']=_F(GROUP_MA     =TABMA8[j],
-                                  GROUP_NO_ORIG=NOMGRO[j][0],
-                                  GROUP_NO_EXTR=NOMGRE[j][0],)
-         motscles['VECT_GRNO_ORIG']=NOMGRO[j]
-         motscles['VECT_GRNO_EXTR']=NOMGRE[j]
-      else:
-         if TYPE_MAILLAGE.find('AXIS')!=-1  : grnoorig=NOMGRE[j][0]
-#                  si AXIS, P_FON1 est remplace par P_FON2 pour
-#                  fermer le fond de fissure
-         else                               : grnoorig=NOMGRO[j][0]
-         motscles['FOND_FERME']=_F(GROUP_MA     =TABMA8[j],
-                                   GROUP_NO_ORIG=grnoorig,
-                                   GROUP_MA_ORIG=NOMMA[j],)
-      fond3d[j]=DEFI_FOND_FISS( MAILLAGE  = MAILLAGE,
-                                LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
-                                LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
-      if THETA_3D!=None:
-        for tht3d in THETA_3D : 
-#
-#          --- commande CALC_THETA ---
-#
-          __theta = CALC_THETA( MODELE    = modele,
-                                FOND_FISS = fond3d[j],
-                                THETA_3D  = _F( TOUT    = 'OUI',
-                                                MODULE  =  1.0 ,
-                                                R_INF   = tht3d['R_INF'],
-                                                R_SUP   = tht3d['R_SUP'], ) )
-#
-#          --- commande CALC_G_THETA_T ---
-#
-          montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
-          motscles={}
-          if COMP_ELAS!=None:  motscles['COMP_ELAS']=  _F(TOUT     = 'OUI',
-                                                          RELATION = COMP_ELAS['RELATION'],)
-          if COMP_INCR!=None:  motscles['COMP_INCR']=  _F(RELATION = COMP_INCR['RELATION'],)
-          print motscles
-          __gtheta = CALC_G_THETA_T( MODELE     = modele,
-                                     CHAM_MATER = affmat,
-                                     THETA      = __theta,
-                                     RESULTAT   = nomres,
-                                     TOUT_ORDRE = 'OUI',
-                                     TITRE      = montit,**motscles)
-          IMPR_TABLE(TABLE = __gtheta, )
-#
-#           recherche du g max
-#
-          if OPTION=='CALC_G_MAX' :
-            if BORNES!=None:
-              mcfact=[]
-              for born in BORNES :
-                mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
-                                  VALE_MIN   = born['VALE_MIN'  ] ,
-                                  VALE_MAX   = born['VALE_MAX'  ]   ) )
-              __gbil = CALC_G_THETA_T( MODELE     = modele,
-                                       CHAM_MATER = affmat,
-                                       THETA      = __theta,
-                                       RESULTAT   = nomres,
-                                       TOUT_ORDRE = 'OUI',
-                                       COMP_ELAS  =  _F(TOUT     = 'OUI',
-                                                        RELATION = COMP_ELAS['RELATION'],),
-                                       TITRE    = montit,
-                                       OPTION   = OPTION,
-                                       BORNES   = mcfact,)
-              IMPR_TABLE(TABLE = __gbil, )
-#
-#          --- commande CALC_G_LOCAL_T ---
-#
-          montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
-          motscles={}
-          if COMP_ELAS!=None:  motscles['COMP_ELAS'    ]=  _F(TOUT     = 'OUI',
-                                                              RELATION = COMP_ELAS['RELATION'],)
-          if FERME:
-                               motscles['LISSAGE_THETA']= 'LAGRANGE'
-                               motscles['LISSAGE_G'    ]= 'LAGRANGE'
-          __glocal = CALC_G_LOCAL_T( MODELE     = modele,
-                                     CHAM_MATER = affmat,
-                                     FOND_FISS  = fond3d[j],
-                                     RESULTAT   = nomres,
-                                     TOUT_ORDRE = 'OUI',
-                                     R_INF      = tht3d['R_INF'],
-                                     R_SUP      = tht3d['R_SUP'],
-                                     TITRE      = montit,**motscles)
-#
-#          recherche du g max local
-#
-          if OPTION=='CALC_G_MAX_LOCAL' :
-            if BORNES!=None:
-              motscles={}
-              mcfact=[]
-              if FERME:
-                        motscles['LISSAGE_THETA']= 'LAGRANGE'
-                        motscles['LISSAGE_G'    ]= 'LAGRANGE'
-              for born in BORNES :
-                mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
-                                  VALE_MIN   = born['VALE_MIN'  ] ,
-                                  VALE_MAX   = born['VALE_MAX'  ]   ) )
-              motscles['BORNES']=mcfact
-              __glbil = CALC_G_LOCAL_T( MODELE     = modele,
-                                        CHAM_MATER = affmat,
-                                        FOND_FISS  = fond3d[j],
-                                        RESULTAT   = nomres,
-                                        TOUT_ORDRE = 'OUI',
-                                        COMP_ELAS  =  _F(TOUT     = 'OUI',
-                                                         RELATION = COMP_ELAS['RELATION'],),
-                                        TITRE      = montit,
-                                        OPTION     = 'CALC_G_MAX',
-                                        R_INF      = tht3d['R_INF'],
-                                        R_SUP      = tht3d['R_SUP'],**motscles)
-              IMPR_TABLE(TABLE = __glbil, )
-#
-#     --- commande IMPR_RESU  ---
-#
-  if IMPRESSION!=None:
-    mcfresu =[]
-    motscles={}
-    motsclei={}
-    if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
-      ncham   =[]
-      if IMPRESSION['NOM_CHAM']!=None :
-         if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
-         else                                                                : ncham=[IMPRESSION['NOM_CHAM'],]
-      if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('DEPL','EQUI_ELNO_SIGM')
-      elif (len(ncham)==1) and (ncham[0][:4]!='TEMP')  :
-                                  motscles['NOM_CHAM'  ]= ncham[0]['NOM_CHAM']
-      elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP')  :
-                                  motscles['NOM_CHAM'  ]=(ncham[0]['NOM_CHAM'],ncham[1]['NOM_CHAM'])
-      elif (len(ncham)==2) and (ncham[0][:4]=='TEMP')  :
-                                  motscles['NOM_CHAM'  ]= ncham[1]['NOM_CHAM']
-      elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
-                                  motscles['NOM_CHAM'  ]= ncham[0]['NOM_CHAM']
-      if   IMPRESSION['TOUT_ORDRE']!=None :
-                                  motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
-      elif IMPRESSION['NUME_ORDRE']!=None :
-                                  motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
-      elif IMPRESSION['INST']!=None :
-                                  motscles['INST'      ]= IMPRESSION['INST']
-    if IMPRESSION['FORMAT']=='IDEAS' :
-                                  motsclei['VERSION'   ]= IMPRESSION['VERSION']
-    if IMPRESSION['FORMAT']=='CASTEM' :
-                                  motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
-    mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
-    if ECHANGE!=None:
-      motscles={}
-      if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
-        if    len(ncham)==3       : motscles['NOM_CHAM'  ]=('TEMP',)
-        elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
-                                    motscles['NOM_CHAM'  ]= ncham[0]['NOM_CHAM']
-        elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
-                                    motscles['NOM_CHAM'  ]= ncham[0]['NOM_CHAM']
-        elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
-                                    motscles['NOM_CHAM'  ]= ncham[1]['NOM_CHAM']
-        if   IMPRESSION['TOUT_ORDRE']!=None :
-                                    motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
-        elif IMPRESSION['NUME_ORDRE']!=None :
-                                    motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
-        elif IMPRESSION['INST']!=None :
-                                    motscles['INST'      ]= IMPRESSION['INST']
-      if IMPRESSION['FORMAT']=='IDEAS' :
-                                    motsclei['VERSION'   ]= IMPRESSION['VERSION']
-      if IMPRESSION['FORMAT']=='CASTEM' :
-                                    motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
-      mcfresu.append(_F(RESULTAT=nomres,**motscles))
-    IMPR_RESU( MODELE = modele,
-               RESU   = mcfresu,
-               FORMAT=IMPRESSION['FORMAT'],**motsclei)
-#
-  return ier
diff --git a/Aster/Cata/Macro/macr_aspic_mail_ops.py b/Aster/Cata/Macro/macr_aspic_mail_ops.py
deleted file mode 100644 (file)
index 296cab1..0000000
+++ /dev/null
@@ -1,845 +0,0 @@
-#@ MODIF macr_aspic_mail_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- 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.        
-# ======================================================================
-
-
-
-from math import sqrt,cos,sin,pi,pow,tan
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID0
-def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
-                           ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
-                           ITYPSO, DPENE, NIVMAG, loc_datg) :
-
-# Ouverture du fichier d'entrée de commandes
-  fdgib=open(nomFichierDATG,'w')
-  POIVIR = ' ;                                         \n'
-  texte='****************************************************************\n'
-  texte=texte+'opti echo 0 ;                                                   \n'
-  texte=texte+'epT1   = '+str(EPT1)         +POIVIR
-  texte=texte+'DeT1   = '+str(DET1)         +POIVIR
-  texte=texte+'d1     = '+str(D1)           +POIVIR
-  texte=texte+'d2     = '+str(D2)           +POIVIR
-  texte=texte+'epT2   = '+str(EPT2)         +POIVIR
-  texte=texte+'DeT2   = '+str(DET2)         +POIVIR
-  texte=texte+'Zmax   = '+str(ZMAX)         +POIVIR
-  texte=texte+'type_s = '+str(ITYPSO)       +POIVIR
-  texte=texte+'d_pene = '+str(DPENE)        +POIVIR
-  texte=texte+'h      = '+str(H)            +POIVIR
-  texte=texte+'angl_s = '+str(ALPHA)        +POIVIR
-  texte=texte+'jeu    = '+str(JEU)          +POIVIR
-  texte=texte+'epC    = '+str(EPC)          +POIVIR
-  texte=texte+'DeC    = '+str(DEC)          +POIVIR
-  texte=texte+'Xmax   = '+str(XMAX)         +POIVIR
-  texte=texte+'typmai =  MOT '+TYPMAI       +POIVIR
-  texte=texte+'theta  = '+str(THETA)        +POIVIR
-  texte=texte+'typele =  MOT '+TYPELE       +POIVIR
-  texte=texte+'typ_eque = MOT '+'SAINE'     +POIVIR
-  texte=texte+'nivmag = '+str(NIVMAG)       +POIVIR
-  texte=texte+'*                                                               \n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
-  print texte
-  fdgib.write(texte)
-  fdgib.close()
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID1
-def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
-                           ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
-                           A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
-                           TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
-
-# Ouverture du fichier d'entrée de commandes
-  fdgib=open(nomFichierDATG,'w')
-  POIVIR = ' ;                                         \n'
-  texte='****************************************************************\n'
-  texte=texte+'opti echo 0 ;                                                   \n'
-  texte=texte+'epT1   = '+str(EPT1)         +POIVIR
-  texte=texte+'DeT1   = '+str(DET1)         +POIVIR
-  texte=texte+'d1     = '+str(D1)           +POIVIR
-  texte=texte+'d2     = '+str(D2)           +POIVIR
-  texte=texte+'epT2   = '+str(EPT2)         +POIVIR
-  texte=texte+'DeT2   = '+str(DET2)         +POIVIR
-  texte=texte+'Zmax   = '+str(ZMAX)         +POIVIR
-  texte=texte+'type_s = '+str(ITYPSO)       +POIVIR
-  texte=texte+'d_pene = '+str(DPENE)        +POIVIR
-  texte=texte+'h      = '+str(H)            +POIVIR
-  texte=texte+'angl_s = '+str(ALPHA)        +POIVIR
-  texte=texte+'jeu    = '+str(JEU)          +POIVIR
-  texte=texte+'epC    = '+str(EPC)          +POIVIR
-  texte=texte+'DeC    = '+str(DEC)          +POIVIR
-  texte=texte+'Xmax   = '+str(XMAX)         +POIVIR
-  texte=texte+'typmai =  MOT '+TYPMAI       +POIVIR
-  texte=texte+'theta  = '+str(THETA)        +POIVIR
-  texte=texte+'a      = '+str(A)            +POIVIR
-  texte=texte+'c      = '+str(C)            +POIVIR
-  texte=texte+'zeta   = '+str(ZETA)         +POIVIR
-  texte=texte+'eps    = '+str(EPS)          +POIVIR
-  texte=texte+'rc0    = '+str(RC0)          +POIVIR
-  texte=texte+'ns     = '+str(NS)           +POIVIR
-  texte=texte+'nc     = '+str(NC)           +POIVIR
-  texte=texte+'nt     = '+str(NT)           +POIVIR
-  texte=texte+'dir_fiss = MOT '+POSI        +POIVIR
-  texte=texte+'pos_fiss = MOT '+TFISS       +POIVIR
-  texte=texte+'ndt    = '+str(NDT)          +POIVIR
-  texte=texte+'f_etir_f = '+str(FETIRF)     +POIVIR
-  texte=texte+'f_etir_p = '+str(FETIRP)     +POIVIR
-  texte=texte+'typ_eque = MOT '+'FISS_LON'  +POIVIR
-  texte=texte+'nivmag = '+str(NIVMAG)       +POIVIR
-  texte=texte+'*                                                               \n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
-  print texte
-  fdgib.write(texte)
-  fdgib.close()
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID2
-def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
-                           H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
-                           THETA, A, C, EPS, RC0, RC1, RC2, RC3,
-                           ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
-                           ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
-# 
-  CALPHA = cos(ALPHA*pi/180.)
-  SALPHA = sin(ALPHA*pi/180.)
-  CTHETA = cos(THETA*pi/180.)
-  STHETA = sin(THETA*pi/180.)
-#
-  AOLD = A
-#
-  if (ITYPSO == 1) :
-# PIQUAGE TYPE 1
-     if (POSI == 'DROIT') :
-#    PIQUAGE DROIT
-        if (TFISS == 'DEB_INT') :
-#       POSITION INTERNE
-           SGAMMA = STHETA * (DET1/2.0)/( (DEC/2.0) -EPC)
-           SGAMME = STHETA * (DET1/2.0)/( (DEC/2.0) )
-           RAPPA = sqrt(1.0 - pow(SGAMMA,2))
-           RAPPE = sqrt(1.0 - pow(SGAMME,2))
-           AP =  A - (1.0 - RAPPA)*A  
-           RAPP = (AP/EPC*RAPPE) + (1.0-(AP/EPC))*RAPPA
-           XA = (DET1/2.0) * CTHETA 
-           YA = (DET1/2.0) * STHETA      
-           ZA = ((DEC/2.0) -EPC) * sqrt(1.0 - pow(SGAMMA,2))
-           ZA0 = (DEC/2.0) - EPC
-           XA0 = DET1/2.0
-           XN0 = XA0
-           YN0 = 0.0 
-           ZN0 = ZA0 + A
-           XN = XN0 * CTHETA 
-           YN = XN0 * STHETA
-           SGAMN = YN / ZN0
-           ZN = ZN0 * sqrt(1.0 - (SGAMN*SGAMN))
-           D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
-           DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
-           RAPP = D0N0 / DN
-           ECART = (1.0 - RAPP) * D0N0
-           A = A - ECART
-        elif (TFISS == 'DEB_EXT') :
-#       POSITION EXTERNE
-           SGAMME = STHETA * (DET1/2.0)/ (DEC/2.0) 
-           RAPPE = sqrt(1.0 - pow(SGAMME,2))
-           A =  A  -(1.0 - RAPPE)*A  
-
-     elif (POSI == 'INCLINE') :
-#    PIQUAGE INCLINE
-        SGAMMA = STHETA * (DET1/2.0)/ ( (DEC/2.0) -EPC)
-        XA = (DET1/2.0) * CTHETA 
-        YA = (DET1/2.0) * STHETA     
-        ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
-        ZA0 = (DEC/2.0) - EPC
-        ZD0 = DEC/2.0
-        XA0 = DET1/2.0
-        XD0 = XA0 + (tan(ALPHA*pi/180.0) * EPC)   
-        A0D0 = sqrt( pow((ZD0 - ZA0),2) + pow((XD0 - XA0),2) )
-        EPSIL = STHETA * tan(ALPHA*pi/180.0) 
-        PHI = (EPSIL * ZA) - YA
-        DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
-        if (THETA > 0) :          
-           YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-        else :
-          YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-
-        ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))  
-
-        if ( (abs(THETA - 0.0) < 1.e-3) or ((abs(THETA - 180.0)) < 1.e-3) ) :
-           XD = CTHETA * XD0
-        else :
-           XD = YD / tan(THETA*pi/180.0)
-
-        AD = sqrt( pow((XA - XD),2) + pow((YA - YD),2) + pow((ZA - ZD),2) )       
-        RAPP =  A0D0 / AD          
-
-        if (TFISS == 'DEB_EXT') :       
-           XN0 = XD0 - A*SALPHA 
-           YN0 = 0.0 
-           ZN0 = ZD0 - A*CALPHA 
-           XN = XN0 * CTHETA 
-           YN = XN0 * STHETA
-           SGAMN = YN / ZN0
-           ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
-           D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
-           DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )       
-           RAPP = D0N0 / DN
-           ECART = (RAPP - 1.0) * D0N0
-           A = A + ECART
-           
-        if (TFISS == 'DEB_INT') :
-           XN0 = XA0 + A*SALPHA 
-           YN0 = 0.0
-           ZN0 = ZA0 + A*CALPHA 
-           XN = XN0 * CTHETA 
-           YN = XN0 * STHETA
-           SGAMN = YN / ZN0
-           ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
-           D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
-           DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )       
-           RAPP = D0N0 / DN
-           ECART = (RAPP - 1.0) * D0N0
-           A = A + ECART
-
-  elif (ITYPSO == 2) :
-# PIQUAGE TYPE 2
-     if (POSI == 'DROIT') :
-#    PIQUAGE DROIT
-        SGAMMI = STHETA * ((DET1/2.0) - EPT1)/(DEC/2.0)
-        XI = ((DET1/2.0) - EPT1) * CTHETA 
-        YI = ((DET1/2.0) - EPT1) * STHETA
-        ZI =  (DEC/2.0)  * sqrt(1.0 - pow(SGAMMI,2))
-        XI0 = (DET1/2.0) -EPT1
-        YI0 = 0.0 
-        ZI0 = (DEC/2.0)
-        
-        SGAMMA = STHETA * (DET1/2.0)/((DEC/2.0) -EPC)
-        YA = (DET1/2.0) * STHETA     
-        ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
-        TGALP = H / EPC
-        EPSIL =  STHETA * TGALP
-        PHI = (EPSIL * ZA) - YA
-        DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2)) 
-        if (THETA > 0) :          
-           YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-        else :
-           YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-
-        ZD = sqrt( pow((DEC/2.0),2) - pow(YD,2) )
-        if ( (abs(THETA - 0.0) < 1.0e-3) or
-             (abs(THETA - 180.0) < 1.0e-3) or
-             (abs(THETA + 180.0) < 1.0e-3) or
-             (abs(THETA + 90.0) < 1.0e-3) or
-             (abs(THETA - 90.0) < 1.0e-3) ) :
-           XD = CTHETA * ((DET1/2.0) + H)
-        else :
-           XD = YD / (tan(THETA*pi/180.0))
-
-        XD0 = (DET1/2.0) + H 
-        YD0 = 0.0 
-        ZD0 = (DEC/2.0) 
-        
-        if (TFISS == 'DEB_EXT') :
-           XN0 = XD0 - A
-           YN0 = 0.0 
-           ZN0 = ZI0 
-           XN = XN0 * CTHETA 
-           YN = XN0 * STHETA 
-           DZID = abs(ZI - ZD) 
-           DXYID = sqrt( pow((XD - XI),2) + pow((YD - YI),2) )
-           DXYIN = sqrt( pow((XN - XI),2) + pow((YN - YI),2) )
-           DZIN = (DXYIN * DZID) / DXYID
-           ZN = ZI - DZIN         
-           D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
-           DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) ) 
-           RAPP = D0N0 / DN 
-           ECART = DN - D0N0 
-           A = A - ECART
-
-        if (TFISS == 'DEB_INT') :
-           XN0 = XI0 + A
-           YN0 = 0.0 
-           ZN0 = ZI0 
-           XN = XN0 * CTHETA
-           YN = XN0 * STHETA 
-           SGAMN = YN / ZN0 
-           ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
-           I0N0 = sqrt( pow((XI0 - XN0),2) + pow((ZI0 - ZN0),2) ) 
-           IN = sqrt( pow((XI - XN),2) + pow((YI - YN),2) + pow((ZI - ZN),2) ) 
-           RAPP = I0N0 / IN 
-           ECART = I0N0 * ( 1.0 - RAPP ) 
-           A = A - ECART
-        
-     elif (POSI == 'INCLINE') :
-#    PIQUAGE INCLINE
-        TGALPHA = SALPHA/CALPHA
-        REPB = (DEC/2.0) + JEU + (EPT1*TGALPHA) 
-        SGAMB = (STHETA * DET1/2.0 ) / REPB 
-        CGAMB = sqrt(1.0 - pow(SGAMB,2)) 
-        XB = (DET1/2.0) * CTHETA
-        YB = (DET1/2.0) * STHETA
-        ZB = ( (DEC/2.0) + JEU + (EPT1*TGALPHA) ) * CGAMB
-        XB0 = (DET1/2.0)
-        YB0 = 0.0
-        ZB0 = (DEC/2.0) + JEU + (EPT1*TGALPHA)
-#
-        RIT1 = (DET1/2.0) - EPT1 
-        REPG = (DEC/2.0) + JEU 
-        SGAMG = ((STHETA ) * RIT1) / REPG
-        CGAMG = sqrt(1.0 - pow(SGAMG,2))
-        XG = RIT1 * CTHETA
-        YG = RIT1 * STHETA
-        ZG = ((DEC/2.0) + JEU) * CGAMG
-        XG0 = RIT1
-        YG0 = 0.0
-        ZG0 = (DEC/2.0) + JEU
-#
-        if (TFISS == 'DEB_INT')  :
-           XN0 = XG0 + A*CALPHA 
-           YN0 = 0.0
-           ZN0 = ZG0 + A*SALPHA 
-           XN = XN0 * CTHETA 
-           YN = XN0 * STHETA
-           SGAMN = YN / ZN0
-           ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
-           G0N0 = sqrt( pow((XG0 - XN0),2) + pow((ZG0 - ZN0),2) )
-           GN = sqrt( pow((XG - XN),2) + pow((YG - YN),2) + pow((ZG - ZN),2) )
-           RAPP = G0N0 / GN
-           ECART = (RAPP - 1.0) * G0N0
-           A = A + ECART
-
-        if (TFISS == 'DEB_EXT') :
-           XN0 = XB0 - A*CALPHA
-           YN0 = 0.0
-           ZN0 = ZB0 - A*SALPHA
-           XN = XN0 * CTHETA
-           YN = XN0 * STHETA
-           SGAMN = YN / ZN0
-           ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
-           B0N0 = sqrt( pow((XB0 - XN0),2) + pow((ZB0 - ZN0),2) )
-           BN = sqrt( pow((XB - XN),2) + pow((YB - YN),2) + pow((ZB - ZN),2) )
-           RAPP = B0N0 / BN
-           ECART = (RAPP - 1.0) * B0N0
-           A = A + ECART
-
-  print ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT'
-  print ' PROFONDEUR SUR PIQUAGE   : ', AOLD
-  print ' PROFONDEUR SUR EQUERRE   : ', A
-
-# Ouverture du fichier d'entrée de commandes
-
-  fdgib=open(nomFichierDATG,'w')
-  POIVIR = ' ;                                         \n'
-  texte='****************************************************************\n'
-  texte=texte+'opti echo 0 ;                                                   \n'
-  texte=texte+'epT1   = '+str(EPT1)         +POIVIR
-  texte=texte+'DeT1   = '+str(DET1)         +POIVIR
-  texte=texte+'d1     = '+str(D1)           +POIVIR
-  texte=texte+'d2     = '+str(D2)           +POIVIR
-  texte=texte+'epT2   = '+str(EPT2)         +POIVIR
-  texte=texte+'DeT2   = '+str(DET2)         +POIVIR
-  texte=texte+'Zmax   = '+str(ZMAX)         +POIVIR
-  texte=texte+'type_s = '+str(ITYPSO)       +POIVIR
-  texte=texte+'d_pene = '+str(DPENE)        +POIVIR
-  texte=texte+'h      = '+str(H)            +POIVIR
-  texte=texte+'angl_s = '+str(ALPHA)        +POIVIR
-  texte=texte+'jeu    = '+str(JEU)          +POIVIR
-  texte=texte+'epC    = '+str(EPC)          +POIVIR
-  texte=texte+'DeC    = '+str(DEC)          +POIVIR
-  texte=texte+'Xmax   = '+str(XMAX)         +POIVIR
-  texte=texte+'typmai =  MOT '+TYPMAI       +POIVIR
-  texte=texte+'theta  = '+str(THETA)        +POIVIR
-  texte=texte+'a      = '+str(A)            +POIVIR
-  texte=texte+'c      = '+str(C)            +POIVIR
-  texte=texte+'zeta   = '+str(ZETA)         +POIVIR
-  texte=texte+'eps    = '+str(EPS)          +POIVIR
-  texte=texte+'rc0    = '+str(RC0)          +POIVIR
-  texte=texte+'rc1    = '+str(RC1)          +POIVIR
-  texte=texte+'rc2    = '+str(RC2)          +POIVIR
-  texte=texte+'rc3    = '+str(RC3)          +POIVIR
-  texte=texte+'alpha  = '+str(ALP)          +POIVIR
-  texte=texte+'beta   = '+str(BETA)         +POIVIR
-  texte=texte+'ns     = '+str(NS)           +POIVIR
-  texte=texte+'nc     = '+str(NC)           +POIVIR
-  texte=texte+'nt     = '+str(NT)           +POIVIR
-  texte=texte+'dir_fiss = MOT '+POSI        +POIVIR
-  texte=texte+'pos_fiss = MOT '+TFISS       +POIVIR
-  texte=texte+'ndt    = '+str(NDT)          +POIVIR
-  texte=texte+'nsdt   = '+str(NSDT)         +POIVIR
-  texte=texte+'typ_eque = MOT '+'FISS_COU'  +POIVIR
-  texte=texte+'nivmag = '+str(NIVMAG)       +POIVIR
-  texte=texte+'*                                                               \n'
-  texte=texte+'list epc ;\n'
-  texte=texte+'opti donn '
-  texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
-  print texte
-  fdgib.write(texte)
-  fdgib.close()
-
-def macr_aspic_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,RAFF_MAIL,TUBULURE,
-                             SOUDURE,CORPS,FISS_SOUDURE,IMPRESSION,INFO,
-                        **args):
-  """
-     Ecriture de la macro MACR_ASPIC_MAIL
-  """
-  from Accas import _F
-  import types
-  import aster 
-  ier=0
-  
-# On importe les definitions des commandes a utiliser dans la macro
-  EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
-  PRE_GIBI      =self.get_cmd('PRE_GIBI')
-  LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
-  DEFI_GROUP    =self.get_cmd('DEFI_GROUP')
-  MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
-  AFFE_MODELE   =self.get_cmd('AFFE_MODELE')
-  CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
-  IMPR_RESU     =self.get_cmd('IMPR_RESU')
-
-# La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-
-  TYPELE = TYPE_ELEM
-  NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
-#
-#     --- raffinement maillage ---
-#
-  TYPMAI = RAFF_MAIL
-  GROS   = (TYPMAI=='GROS')
-  if GROS : NBAZIT = 40
-  else    : NBAZIT = 48
-#
-#     --- caracteristiques de la tubulure ---
-#
-  EPT1  = TUBULURE['E_BASE'   ]
-  DET1  = TUBULURE['DEXT_BASE']
-  D1    = TUBULURE['L_BASE'   ]
-  D2    = TUBULURE['L_CHANF'  ]
-  EPT2  = TUBULURE['E_TUBU'   ]
-  DET2  = TUBULURE['DEXT_TUBU']
-  ZMAX  = TUBULURE['Z_MAX'    ]
-  TYPSOU= TUBULURE['TYPE'     ]
-  DPENE = TUBULURE['L_PENETR' ]
-  if TYPSOU=='TYPE_2' and DPENE>0.0 : 
-    self.cr.fatal("<F> <MACR_ASPIC_MAIL> les piquages penetrants sont autorises uniquement avec les soudures de type 1")
-    ier = ier+1
-    return ier
-  if TYPSOU=='TYPE_2' :
-     ITYPSO = 2
-  else :
-     ITYPSO = 1
-#
-#     --- caracteristiques de la soudure ---
-#
-  H     = SOUDURE['H_SOUD'   ]
-  ALPHA = SOUDURE['ANGL_SOUD']
-  JEU   = SOUDURE['JEU_SOUD' ]
-#
-#     --- caracteristiques du corps ---
-#
-  EPC   = CORPS  ['E_CORP'   ]
-  DEC   = CORPS  ['DEXT_CORP']
-  XMAX  = CORPS  ['X_MAX'    ]
-  EPSI  = 1.E-03
-  RMB   = ( DET1 - EPT1 ) / 2.0
-  VAL1  = 1.5 * sqrt( RMB**3 / EPT1 )
-  VAL3  = 3.0 * sqrt( RMB    * EPT1 )
-  RMT   = ( DET2 - EPT2 ) / 2.0
-  VAL2  = 1.5 * sqrt( RMT**3 / EPT2 )
-  VAL4  = 3.0 * sqrt( RMT    * EPT2 )
-  LZMAX = max ( VAL1 , VAL2, VAL3, VAL4 )
-  ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
-  LOK = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
-  if not LOK :
-    print ' <MACR_ASPIC_MAIL> erreur donnees'
-    print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE   : ', ZMAX
-    print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE  : ', ZMAXC
-    self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
-    ier = ier+1
-    return ier
-  RMC   = ( DEC - EPC ) / 2.0
-  VAL1  = 1.5 * sqrt( RMC**3 / EPC )
-  VAL2  = 3.0 * sqrt( RMC    * EPC )
-  LXMAX = max( VAL1 , VAL2 )
-  XMAXC = LXMAX + ( DET1 / 2.0 )
-  LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
-  if not LOK :
-    print ' <MACR_ASPIC_MAIL> erreur donnees'
-    print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE   : ', ZMAX
-    print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE  : ', ZMAXC
-    self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
-    ier = ier+1
-    return ier
-  print ' MACR_ASPIC_MAIL / X_MAX CALCULEE : ',XMAX
-  print ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : ',XMAXC
-#
-#     --- caracteristiques de la fissure ---
-#
-  SAIN   = 0
-  FISLON = 0
-  FISCOU = 0
-  THETA  = 0.0
-  TFISS  = None
-  if FISS_SOUDURE==None :
-     SAIN = 1
-  else :
-     if   FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
-     elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
-     THETA = FISS_SOUDURE['AZIMUT'        ]
-     EPS   = FISS_SOUDURE['ANGL_OUVERTURE']
-     AXIS  = FISS_SOUDURE['AXIS'          ]
-     POSI  = FISS_SOUDURE['POSITION'      ]
-     TFISS = FISS_SOUDURE['FISSURE'       ]
-     A     = FISS_SOUDURE['PROFONDEUR'    ]
-     if      FISS_SOUDURE['LONGUEUR'      ]!=None :
-        C  = FISS_SOUDURE['LONGUEUR'      ]
-        N1 = 1
-     else : N1 = 0
-     if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) : 
-       print ' <MACR_ASPIC_MAIL> erreur donnees'
-       print ' <MACR_ASPIC_MAIL> dans le cas de fissures'
-       print ' <MACR_ASPIC_MAIL> inclinees debouchant en peau interne avec'
-       print ' <MACR_ASPIC_MAIL> piquage penetrant le jeu doit etre nul'
-       self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
-       ier = ier+1
-       return ier
-     ZETA = 0.5
-     if TFISS not in ('DEB_INT','DEB_EXT') :
-        if FISS_SOUDURE['LIGA_INT']==None : 
-           print ' <MACR_ASPIC_MAIL> erreur donnees'
-           print ' <MACR_ASPIC_MAIL> dans le cas de fissures internes'
-           print ' <MACR_ASPIC_MAIL> (NON_DEB) le ligament inferieur est obligatoire'
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
-           ier = ier+1
-           return ier
-        LIGA  = FISS_SOUDURE['LIGA_INT']
-        if POSI=='DROIT' :
-           if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
-           else         : ZETA = (A+LIGA)/(EPT1+H)
-        else :
-           if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
-           else         : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
-        if ZETA < 0.1   :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
-           ier = ier+1
-           return ier
-        if ZETA > 0.9   :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
-           ier = ier+1
-           return ier
-        if LIGA < 0.1*EPC :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
-           ier = ier+1
-           return ier
-        if (LIGA + 2.0*A) > 0.9*EPC :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
-           ier = ier+1
-           return ier
-     if N1==0 :
-        if FISCOU      :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures courte il faut preciser la longueur ")
-           ier = ier+1
-           return ier
-        if AXIS=='NON' :
-           self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
-           ier = ier+1
-           return ier
-        C = 0.0
-     else :
-        if AXIS=='OUI' : print '<A> <MACR_ASPIC_MAIL> fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne'
-     C = 0.5 * C
-     LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
-#
-# LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
-# ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
-#
-     LPIQ=pi*(DET1)
-     if AXIS=='OUI' : C=100.0*LPIQ
-     RAPL=LEQU/LPIQ
-     if FISCOU :
-        RAP=A/C
-        CAS1=RAP<0.3499
-        CAS3=RAP>0.4999
-        CAS2= not (CAS1 or CAS3)
-        if CAS1 : ALP=0.8
-        if CAS2 : ALP=0.4
-        if CAS3 : ALP=0.0
-        BETA=1.0
-        if GROS and not CAS1 :
-          NDT=1
-          NSDT=2
-        else :
-          NDT=2
-          NSDT=4
-#
-     if FISLON :
-       if GROS :
-         NDT=2
-         FETIRF=30.*RAPL
-         FETIRP=60.*RAPL
-       else :
-         NDT=3
-         FETIRF=15.*RAPL
-         FETIRP=30.*RAPL
-#
-     RC0 = FISS_SOUDURE['RAYON_TORE']
-     if (FISCOU and RC0==None) :
-       if GROS : RC0=0.12
-       else    : RC0=0.10
-       if CAS1 : RC0=0.08
-       RC0=RC0*A
-     if (FISLON and RC0==None) : RC0=A/(NDT+1)
-#
-     RC1 = FISS_SOUDURE['COEF_MULT_RC1']
-     if (FISCOU and RC1==None) :
-       if GROS : RC1=1.2
-       else    : RC1=1.0
-#
-     RC2 = FISS_SOUDURE['COEF_MULT_RC2']
-     if (FISCOU and RC2==None) :
-       if GROS : RC2=1.4
-       else    : RC2=1.2
-#
-     RC3 = FISS_SOUDURE['COEF_MULT_RC3']
-     if (FISCOU and RC3==None) :
-       if GROS :
-          if CAS1 : RC3=2.5
-          else    : RC3=1.0  # valeur non utilisee
-       else : 
-          if CAS3 : RC3=2.2
-          else    : RC3=2.0
-#
-     NT = FISS_SOUDURE['NB_TRANCHE']
-     if (FISCOU and NT==None) :
-       if GROS : NT = 8
-       else    : NT = 16
-       if CAS1 : NT = NT*2
-     if (FISLON and NT==None) : NT=0
-#
-     NS = FISS_SOUDURE['NB_SECTEUR']
-     if (FISCOU and NS==None) :
-       if GROS : NS = 2
-       else    : NS = 4
-     if (FISLON and NS==None) :
-       if GROS : NS = 2
-       else    : NS = 4
-#
-     NC = FISS_SOUDURE['NB_COURONNE']
-     if (FISCOU and NC==None) :
-       if GROS : NC = 3
-       else    : NC = 4
-     if (FISLON and NC==None) :
-       if GROS : NC = 3
-       else    : NC = 4
-#
-  loc_gibi=aster.repout()
-  logiel = EXEC_MAILLAGE['LOGICIEL'  ]
-  UNITD  = EXEC_MAILLAGE['UNITE_DATG']
-  UNITS  = EXEC_MAILLAGE['UNITE_MGIB']
-  if   logiel=='GIBI98'  : logiel = loc_gibi+'gibi98'
-  elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
-  else                   :
-       self.cr.fatal("<F> <MACR_ASPIC_MAIL> seuls gibi98 et gibi2000 sont appelableS")
-       ier = ier+1
-       return ier
-#
-#     --- ecriture sur le fichier .datg  de la procedure ---
-#
-# Nom du fichier de commandes pour GIBI
-  nomFichierDATG = 'fort.'+str(UNITD)
-# Nom du fichier de maillage GIBI
-  nomFichierGIBI = 'fort.'+str(UNITS)
-  loc_datg = aster.repdex()
-  if SAIN   : write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
-                                     ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
-                                     ITYPSO, DPENE, NIVMAG,loc_datg)
-  if FISLON : write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
-                                     ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
-                                     A,C,EPS, RC0,NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
-                                     TFISS,ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
-  if FISCOU : write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
-                                     H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
-                                     THETA, A, C, EPS, RC0, RC1, RC2, RC3,
-                                     ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
-                                     ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
-#
-  EXEC_LOGICIEL( LOGICIEL = logiel ,
-                 ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
-                              _F(NOM_PARA=nomFichierGIBI), ), )
-#
-  PRE_GIBI()
-#
-  __MAPROV=LIRE_MAILLAGE(INFO=INFO)
-#
-  motscles={}
-  motscles['CREA_GROUP_MA']=[]
-  l_CREA_GROUP_NO=[]
-  if SAIN :
-     l_CREA_GROUP_NO.append('S_LAT1')
-     l_CREA_GROUP_NO.append('S_LAT2')
-  else :
-     l_CREA_GROUP_NO.append('S_LAT1_C')
-     l_CREA_GROUP_NO.append('S_LAT2_C')
-     l_CREA_GROUP_NO.append('S_LAT1_T')
-     l_CREA_GROUP_NO.append('S_LAT2_T')
-     if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
-        l_CREA_GROUP_NO.append('PFONDINF')
-        l_CREA_GROUP_NO.append('PFONDSUP')
-     else :
-        l_CREA_GROUP_NO.append('PFONDFIS')
-     if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
-        motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
-                                            NOM      = 'MAIL_ORI',
-                                            POSITION = 'INIT'     ))
-     if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
-        motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
-                                            NOM      = 'MAIL_ORI',
-                                            POSITION = 'INIT'     ))
-     if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
-        motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
-                                            NOM      = 'MA_ORI_S',
-                                            POSITION = 'INIT'     ))
-        motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
-                                            NOM      = 'MA_ORI_I',
-                                            POSITION = 'INIT'     ))
-  l_CREA_GROUP_NO.append('S_FOND1')
-  l_CREA_GROUP_NO.append('S_FOND2')
-  l_CREA_GROUP_NO.append('EQUERRE')
-  motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
-#
-  __MAPROV=DEFI_GROUP(reuse   =__MAPROV,
-                      MAILLAGE=__MAPROV,
-                      **motscles )
-#
-  if not SAIN :
-     motscles={}
-     motscles['CREA_GROUP_NO']=[]
-     if not (TFISS=='NON_DEB')  :
-        motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
-     if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
-        motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
-     __MAPROV=DEFI_GROUP(reuse   =__MAPROV,
-                         MAILLAGE=__MAPROV,
-                         **motscles )
-#
-  __MAPROV=MODI_MAILLAGE(reuse   =__MAPROV,
-                         MAILLAGE=__MAPROV,
-                         EQUE_PIQUA=_F( GROUP_NO  = 'EQUERRE' ,
-                                        E_BASE    = EPT1  ,
-                                        DEXT_BASE = DET1  ,
-                                        L_BASE    = D1    ,
-                                        L_CHANF   = D2    ,
-                                        TYPE      = TYPSOU,
-                                        H_SOUD    = H     , 
-                                        ANGL_SOUD = ALPHA ,
-                                        JEU_SOUD  = JEU   ,
-                                        E_CORP    = EPC   , 
-                                        DEXT_CORP = DEC   ,
-                                        AZIMUT    = THETA ,
-                                        RAFF_MAIL = TYPMAI,
-                                        X_MAX     = XMAX  , )
-                         )
-#
-  __MODELE=AFFE_MODELE( MAILLAGE=__MAPROV,
-                        AFFE=_F( GROUP_MA     = ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU'),
-                                 PHENOMENE    = 'MECANIQUE'  ,
-                                 MODELISATION = '3D'         , )
-                         )
-#
-  motscles={}
-  if TFISS=='DEB_INT' :
-     motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
-  else :
-     motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
-  __MAPROV=MODI_MAILLAGE(reuse   =__MAPROV,
-                         MAILLAGE=__MAPROV,
-                         MODELE  =__MODELE,
-                         **motscles
-                         )
-#
-  if SAIN :
-     __MAPROV=DEFI_GROUP(reuse         = __MAPROV,
-                         MAILLAGE      = __MAPROV,
-                         CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
-#
-     for i in range(1,NBAZIT+1):
-       prec = EPC / 5.0
-       __MAPROV=DEFI_GROUP(reuse         = __MAPROV,
-                           MAILLAGE      = __MAPROV,
-                         CREA_GROUP_NO = ( _F( NOM       = 'NID'+str(i) ,
-                                               GROUP_NO  = 'NIDXT'      ,
-                                               NUME_INIT = i            ,
-                                               NUME_FIN  = i            ,),
-                                           _F( NOM       = 'NED'+str(i) ,
-                                               GROUP_NO  = 'NEDXT'      ,
-                                               NUME_INIT = i            ,
-                                               NUME_FIN  = i            ,),
-                                           _F( NOM       = 'NII'+str(i) ,
-                                               GROUP_NO  = 'NIIXT'      ,
-                                               NUME_INIT = i            ,
-                                               NUME_FIN  = i            ,),
-                                           _F( NOM       = 'NEI'+str(i) ,
-                                               GROUP_NO  = 'NEIXT'      ,
-                                               NUME_INIT = i            ,
-                                               NUME_FIN  = i            ,),
-                                           _F( NOM       = 'LDN'+str(i) ,
-                                               GROUP_MA  = 'LD' +str(i) ,),
-                                           _F( NOM       = 'LD' +str(i) ,
-                                               GROUP_NO  = 'LDN'+str(i) ,
-                                               OPTION    = 'SEGM_DROI_ORDO',
-                                               PRECISION =  prec        ,
-                                               CRITERE   = 'ABSOLU'     ,
-                                               GROUP_NO_ORIG   = 'NID'+str(i),
-                                               GROUP_NO_EXTR   = 'NED'+str(i),),
-                                           _F( NOM       = 'LIN'+str(i) ,
-                                               GROUP_MA  = 'LI' +str(i) ,),
-                                           _F( NOM       = 'LI' +str(i) ,
-                                               GROUP_NO  = 'LIN'+str(i) ,
-                                               OPTION    = 'SEGM_DROI_ORDO',
-                                               PRECISION =  prec        ,
-                                               CRITERE   = 'ABSOLU'     ,
-                                               GROUP_NO_ORIG   = 'NII'+str(i),
-                                               GROUP_NO_EXTR   = 'NEI'+str(i),),))
-#
-#
-#     --- commande CREA_MAILLAGE ---
-#
-  self.DeclareOut('nomres',self.sd)
-  nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
-                        CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
-                                          GROUP_NO     = 'P1_CORP ' , ),
-                                      _F( NOM_GROUP_MA = 'P2_CORP ' ,
-                                          GROUP_NO     = 'P2_CORP ' , ),
-                                      _F( NOM_GROUP_MA = 'P_TUBU ' ,
-                                          GROUP_NO     = 'P_TUBU ' ,  ),)
-                         )
-#
-  if IMPRESSION!=None:
-     for impr in IMPRESSION :
-#
-         motscles={}
-         if impr['FORMAT']=='IDEAS'  : motscles['VERSION']  =impr['VERSION']
-         if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
-         if impr['UNITE']!=None      : motscles['UNITE']    =impr['UNITE']
-         impr_resu = _F( MAILLAGE = nomres,)
-#
-         IMPR_RESU( RESU = impr_resu, 
-                    FORMAT = impr['FORMAT'],**motscles )
-#
-  return ier
-
diff --git a/Aster/Cata/Macro/macr_cabri_calc_ops.py b/Aster/Cata/Macro/macr_cabri_calc_ops.py
deleted file mode 100644 (file)
index a829425..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-#@ MODIF macr_cabri_calc_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-
-def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
-    CHAR_MECA,RESU_THER,
-    AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON, 
-    INCREMENT,CHAM_MATER,**args):
-   """
-     Ecriture de la macro MACR_CABRI_CALC
-   """
-   
-   #################################################################
-   ########## PREPARATION MACRO
-   #################################################################
-
-   from Accas import _F
-
-   ier =0
-   
-   # On met certains mots-clefs dans des variables locales pour les proteger
-   affemateriau = AFFE_MATERIAU
-   mail         = MAILLAGE  
-   
-
-   # On importe les definitions des commandes a utiliser dans la macro
-   # Le nom de la variable doit etre obligatoirement le nom de la commande
-   DEFI_GROUP       = self.get_cmd('DEFI_GROUP')
-   AFFE_MATERIAU    = self.get_cmd('AFFE_MATERIAU')
-   AFFE_MODELE      = self.get_cmd('AFFE_MODELE') 
-   MODI_MAILLAGE    = self.get_cmd('MODI_MAILLAGE')   
-   AFFE_CHAR_THER_F = self.get_cmd('AFFE_CHAR_THER_F')
-   AFFE_CHAR_THER   = self.get_cmd('AFFE_CHAR_THER')  
-   AFFE_CHAR_MECA_F = self.get_cmd('AFFE_CHAR_MECA_F')
-   AFFE_CHAR_MECA   = self.get_cmd('AFFE_CHAR_MECA')  
-   DEFI_FONCTION    = self.get_cmd('DEFI_FONCTION')
-   DEFI_LIST_REEL   = self.get_cmd('DEFI_LIST_REEL')
-   THER_LINEAIRE    = self.get_cmd('THER_LINEAIRE')
-   STAT_NON_LINE    = self.get_cmd('STAT_NON_LINE')
-
-   # La macro compte pour 1 dans la numerotation des commandes
-   self.set_icmd(1)
-
-   # Le concept sortant (de type evol_noli) est nomme 'resumeca' dans 
-   # le contexte de la macro
-   self.DeclareOut('resumeca',self.sd)
-   self.DeclareOut('mail',MAILLAGE)
-           
-   #################################################################
-   ########## PREPARATION DES MODELES
-   #################################################################
-
-   # Definition des groupes
-   mail=DEFI_GROUP(reuse =mail,MAILLAGE=mail,
-                        CREA_GROUP_NO=(
-                                  _F(GROUP_MA='M_GOU',NOM='N_M_GOU',),
-                                  _F(GROUP_MA='M_JOI',NOM='N_M_JOI',),
-                                  _F(GROUP_MA='SCBJ',NOM='N_SCBJ',),
-                                  _F(GROUP_MA='SCJB',NOM='N_SCJB',),
-                                  _F(GROUP_MA='M_L_AA',NOM='N_M_L_AA',),
-                                  _F(GROUP_MA='SCEG',NOM='N_SCEG',),
-                                  _F(GROUP_MA='SCGE',NOM='N_SCGE',),),)
-
-   # Creation du modele thermique
-   if MODELE_THER != None:
-      self.DeclareOut('modther',MODELE_THER)
-         
-   modther=AFFE_MODELE(MAILLAGE=mail,
-                          AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
-                          'M_L_AA','M_INT','M_L_SA','M_EXT','SCEG','SCGE',),
-                                  PHENOMENE='THERMIQUE',
-                                  MODELISATION='3D_DIAG',),
-                         );
-
-   # Creation du modele mecanique
-   if MODELE_MECA != None:
-      self.DeclareOut('modmeca',MODELE_MECA)
-         
-   modmeca = AFFE_MODELE(MAILLAGE=mail,
-                          AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
-                          'M_L_AA','M_L_SA','SCEG','SCGE','M_INT','M_EXT',),
-                                  PHENOMENE='MECANIQUE',
-                                  MODELISATION='3D',),
-                         );
-
-   # Orientation des mailles
-   mail=MODI_MAILLAGE(reuse =mail,
-                 MAILLAGE=mail,
-                 ORIE_PEAU_3D=(_F(GROUP_MA=('M_INT','M_TUB',),),
-                               _F(GROUP_MA=('M_L_AA','M_JOI','M_L_SA',),),),
-                 MODELE=modmeca,);
-
-
-
-   # Affectation des materiaux
-   if CHAM_MATER != None:
-      self.DeclareOut('_cham',CHAM_MATER)
-   motscles={}
-   motscles['AFFE']=[]
-   for mat in affemateriau:
-      if mat['TOUT'] == None:
-         # Creation de mots-cles pour les AFFE_CHAR_MECA
-         motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
-                                    MATER = mat['MATER'],
-                                    TEMP_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'],) )
-      
-   _cham = AFFE_MATERIAU(MAILLAGE=mail,
-                    MODELE=modther,
-                    AFFE=motscles['AFFE'],
-                   )
-
-   #################################################################
-   ########## CONDITIONS AUX LIMITES THERMIQUES
-   #################################################################   
-   # Recuperation des parametres thermiques
-
-   if DEFI_CHAR_THER != None:
-      temp_ini = DEFI_CHAR_THER['TEMP_INIT']
-      if DEFI_CHAR_THER['COEF_H_FLUI']!=None:
-         coef_int = DEFI_CHAR_THER['COEF_H_FLUI']
-      else:
-         coef_int = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,0.016,
-                       7200.0,0.016,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);      
-      if DEFI_CHAR_THER['TEMP_EXT_FLUI']!=None:
-         temp_int = DEFI_CHAR_THER['TEMP_EXT_FLUI']
-      else:
-         temp_int = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
-                          600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);    
-      if DEFI_CHAR_THER['COEF_H_AIR']!=None:
-         coef_ext = DEFI_CHAR_THER['COEF_H_AIR']
-      else:
-         coef_ext = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,1e-05,7200.0,1e-05,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);
-     
-      if DEFI_CHAR_THER['TEMP_EXT_AIR']!=None:
-         temp_ext = DEFI_CHAR_THER['TEMP_EXT_AIR']
-      else:
-         temp_ext = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,20.0,7200.0,20.0,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);    
-      if DEFI_CHAR_THER['LIST_INST']!=None:
-         transi1  = DEFI_CHAR_THER['LIST_INST']
-      else:
-         transi1  = DEFI_LIST_REEL(DEBUT=0.0,
-                     INTERVALLE=(_F(JUSQU_A=1.0,
-                                    NOMBRE=1,),
-                                 _F(JUSQU_A=11.0,
-                                    NOMBRE=10,),
-                                 _F(JUSQU_A=600.0,
-                                    NOMBRE=10,),
-                                 _F(JUSQU_A=610.0,
-                                    NOMBRE=30,),
-                                 _F(JUSQU_A=1800.0,
-                                    NOMBRE=30,),
-                                 _F(JUSQU_A=7200.0,
-                                    NOMBRE=10,),),);                                                        
-   else:
-      temp_ini = DEFI_CHAR_THER['TEMP_INIT']
-      coef_int = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,0.016,
-                       7200.0,0.016,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);      
-      temp_int = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
-                          600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);    
-      coef_ext = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,1e-05,7200.0,1e-05,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);    
-      temp_ext = DEFI_FONCTION(NOM_PARA='INST',
-                    VALE=(0.0,20.0,7200.0,20.0,),
-                    PROL_DROITE='CONSTANT',
-                    PROL_GAUCHE='CONSTANT',);                                       
-      transi1  = DEFI_LIST_REEL(DEBUT=0.0,
-                     INTERVALLE=(_F(JUSQU_A=1.0,
-                                    NOMBRE=1,),
-                                 _F(JUSQU_A=11.0,
-                                    NOMBRE=10,),
-                                 _F(JUSQU_A=600.0,
-                                    NOMBRE=10,),
-                                 _F(JUSQU_A=610.0,
-                                    NOMBRE=30,),
-                                 _F(JUSQU_A=1800.0,
-                                    NOMBRE=30,),
-                                 _F(JUSQU_A=7200.0,
-                                    NOMBRE=10,),),);     
-   # Que sauver ?
-   if CHAR_THER != None:
-      for m in CHAR_THER:
-         if m['TYPE']=="BRIDE_FLUIDE":
-            self.DeclareOut('cl_th1',m['CHARGE'])
-         if m['TYPE']=="BRIDE_AIR":
-            self.DeclareOut('cl_th2',m['CHARGE'])
-         if m['TYPE']=="ECROU_GOUJON":
-            self.DeclareOut('cl_th3',m['CHARGE'])
-         if m['TYPE']=="BRIDE_JOINT":
-            self.DeclareOut('cl_th4',m['CHARGE'])
-
-   # Echanges thermiques internes entre le fluide et la bride
-   cl_th1=AFFE_CHAR_THER_F(MODELE=modther,
-                           ECHANGE=_F(GROUP_MA = 'M_INT',
-                                      COEF_H   = coef_int,
-                                      TEMP_EXT = temp_int,),);
-
-   # Echanges thermiques externes entre bride et air ambiant
-   cl_th2=AFFE_CHAR_THER_F(MODELE=modther,
-                           ECHANGE=_F(GROUP_MA='M_EXT',
-                                   COEF_H=coef_ext,
-                                   TEMP_EXT=temp_ext,),);
-
-   # Echanges thermiques entre ecrou et goujon
-   cl_th3=AFFE_CHAR_THER(MODELE=modther,
-                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
-                                        GROUP_NO_2='N_SCGE',
-                                        DDL_1='TEMP',
-                                        COEF_MULT_1=1.0,
-                                        DDL_2='TEMP',
-                                        COEF_MULT_2=-1.0,
-                                        COEF_IMPO=0.0,),);
-
-   # Echanges thermiques entre bride et joint
-   cl_th4=AFFE_CHAR_THER(MODELE=modther,
-                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCBJ',
-                                        GROUP_NO_2='N_SCJB',
-                                        DDL_1='TEMP',
-                                        COEF_MULT_1=1.0,
-                                        DDL_2='TEMP',
-                                        COEF_MULT_2=-1.0,
-                                        COEF_IMPO=0.0,),);
-
-
-
-   #################################################################
-   ########## CALCUL THERMIQUE
-   #################################################################   
-   if RESU_THER != None:
-      self.DeclareOut('resuther',RESU_THER)   
-
-   resuther=THER_LINEAIRE(MODELE=modther,
-                  CHAM_MATER=_cham,
-                  EXCIT=(_F(CHARGE=cl_th1,),
-                         _F(CHARGE=cl_th2,),
-                         _F(CHARGE=cl_th3,),
-                         _F(CHARGE=cl_th4,),),
-                  INCREMENT=_F(LIST_INST=transi1,),
-                  TEMP_INIT=_F(VALE=temp_ini,),
-                  TITRE='CABRI THERMIQUE &DATE &HEURE',);
-   
-   #################################################################
-   ########## CONDITIONS AUX LIMITES MECANIQUES
-   #################################################################   
-   # Recuperation des parametres mecaniques
-   if DEFI_CHAR_MECA != None:
-     if DEFI_CHAR_MECA['PRETENS']!=None:
-         f_pret = DEFI_CHAR_MECA['PRETENS']
-     else:
-         f_pret=DEFI_FONCTION(NOM_PARA='INST',
-                     VALE=(0.0,0.0,1.0,-0.02,),
-                     PROL_DROITE='CONSTANT',
-                     PROL_GAUCHE='CONSTANT',);                                 
-     if DEFI_CHAR_MECA['PRES_REP']!=None:
-         pre_int = DEFI_CHAR_MECA['PRES_REP']
-     else:
-         pre_int = DEFI_FONCTION(NOM_PARA='INST',
-                      VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
-                      PROL_DROITE='CONSTANT',
-                      PROL_GAUCHE='CONSTANT',);  
-     if DEFI_CHAR_MECA['EFFE_FOND']!=None:
-         eff_fond = DEFI_CHAR_MECA['EFFE_FOND']
-     else:
-         eff_fond=DEFI_FONCTION(NOM_PARA='INST',
-                       VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
-                       PROL_DROITE='CONSTANT',
-                       PROL_GAUCHE='CONSTANT',);
-   else:
-      f_pret=DEFI_FONCTION(NOM_PARA='INST',
-                     VALE=(0.0,0.0,1.0,-0.02,),
-                     PROL_DROITE='CONSTANT',
-                     PROL_GAUCHE='CONSTANT',);                                 
-
-      pre_int = DEFI_FONCTION(NOM_PARA='INST',
-                      VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
-                      PROL_DROITE='CONSTANT',
-                      PROL_GAUCHE='CONSTANT',);  
-
-      eff_fond=DEFI_FONCTION(NOM_PARA='INST',
-                       VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
-                       PROL_DROITE='CONSTANT',
-                       PROL_GAUCHE='CONSTANT',);     
-   # Que sauver ?
-   if CHAR_MECA != None:
-      for m in CHAR_MECA:
-         if m['TYPE']=="BLOC_BAS_GOUJ":
-            self.DeclareOut('cl_me1',m['CHARGE'])
-         if m['TYPE']=="BLOC_BAS_JOINT":
-            self.DeclareOut('cl_me2',m['CHARGE'])
-         if m['TYPE']=="BLOC_LAT_ALES":
-            self.DeclareOut('cl_me3',m['CHARGE'])
-         if m['TYPE']=="BLOC_LAT_NALES":
-            self.DeclareOut('cl_me4',m['CHARGE'])
-         if m['TYPE']=="PLAN_TUBE":
-            self.DeclareOut('cl_me5',m['CHARGE'])
-         if m['TYPE']=="PRES_FLU":
-            self.DeclareOut('cl_me6',m['CHARGE'])
-         if m['TYPE']=="EFFET_FOND":
-            self.DeclareOut('cl_me7',m['CHARGE'])
-         if m['TYPE']=="CONT_JOINT":
-            self.DeclareOut('cl_me8',m['CHARGE'])
-         if m['TYPE']=="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":
-            self.DeclareOut('cl_me11',m['CHARGE'])            
-                            
-
-   # Blocage bas du goujon
-   cl_me1=AFFE_CHAR_MECA(MODELE=modmeca,
-                      DDL_IMPO=_F(GROUP_NO='N_M_GOU',
-                                  DZ=0.0,),
-                      INFO=2,);
-   # Blocage bas du joint
-   cl_me2=AFFE_CHAR_MECA(MODELE=modmeca,
-                      DDL_IMPO=_F(GROUP_NO='N_M_JOI',
-                                  DZ=0.0,),
-                      INFO=2,);
-
-   # Blocage lateral, face laterale avec alesage
-   cl_me3=AFFE_CHAR_MECA(MODELE=modmeca,
-                      DDL_IMPO=_F(GROUP_NO='N_M_L_AA',
-                                  DY=0.0,),
-                      INFO=2,);
-
-   # Face laterale sans alesage
-   cl_me4=AFFE_CHAR_MECA(MODELE=modmeca,
-                      FACE_IMPO=_F(GROUP_MA='M_L_SA',
-                                   DNOR=0.0,),
-                      INFO=2,);
-
-   # Condition de planeite de la face de coupe du tube
-   cl_me5=AFFE_CHAR_MECA(MODELE=modmeca,
-                      LIAISON_UNIF=_F(GROUP_MA='M_TUB',
-                                      DDL='DZ',),
-                      INFO=2,);
-   # Pression due au fluide
-   cl_me6=AFFE_CHAR_MECA_F(MODELE=modmeca,
-                           PRES_REP=_F(GROUP_MA='M_INT',
-                                     PRES=pre_int,),
-                           INFO=2,);
-
-   # Effet de fond
-   cl_me7=AFFE_CHAR_MECA_F(MODELE=modmeca,
-                           PRES_REP=_F(GROUP_MA='M_TUB',
-                                     PRES=eff_fond,),
-                           INFO=2,);
-
-   # Contact zone de joint
-   cl_me8=AFFE_CHAR_MECA(MODELE=modmeca,
-                        CONTACT=_F(GROUP_MA_MAIT='SCBJ',
-                                   GROUP_MA_ESCL='SCJB',),
-                        INFO=2,);
-   # 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,
-                         LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
-                                          GROUP_NO_2='N_SCGE',
-                                          DDL_1='DZ',
-                                          COEF_MULT_1=1.0,
-                                          DDL_2='DZ',
-                                          COEF_MULT_2=-1.0,
-                                          COEF_IMPO=f_pret,),
-                      INFO=2,);
-
-   cl_me11=AFFE_CHAR_MECA(MODELE=modmeca,
-                       LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
-                                        GROUP_NO_2='N_SCGE',
-                                        DDL_1='DX',
-                                        COEF_MULT_1=1.0,
-                                        DDL_2='DX',
-                                        COEF_MULT_2=-1.0,
-                                        COEF_IMPO=0.0,),
-                      INFO=2,);
-
-
-   #################################################################
-   ########## CALCUL MECANIQUE
-   #################################################################  
-   # Options de convergence        
-   solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-   
-   # Elimination des valeurs "None"
-   for i in solveur.keys():
-      if solveur[i]==None : del solveur[i]
-
-
-   transi2 = DEFI_LIST_REEL(DEBUT=0.0,
-                     INTERVALLE=(_F(JUSQU_A=1.0,
-                                    NOMBRE=2,),
-                                 _F(JUSQU_A=11.0,
-                                    NOMBRE=20,),
-                                 _F(JUSQU_A=600.0,
-                                    NOMBRE=20,),
-                                 _F(JUSQU_A=610.0,
-                                    NOMBRE=20,),
-                                 _F(JUSQU_A=1800.0,
-                                    NOMBRE=20,),
-                                 _F(JUSQU_A=7200.0,
-                                    NOMBRE=20,),),);   
-
-   # Options d'incrementation  
-   if INCREMENT != None:
-      if INCREMENT['LIST_INST'] != None:
-         listinst = INCREMENT['LIST_INST']
-      else:
-         listinst = transi2   
-   
-      increment=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
-   
-      # Elimination des valeurs "None"
-      for i in increment.keys():
-         if increment[i]==None : del increment[i]
-      
-      increment['LIST_INST'] = listinst
-            
-   else:
-      listinst  = transi2
-      increment =_F(
-               LIST_INST       = listinst,
-               ),       
-                              
-   # Options de Newton     
-   newton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
-   # Elimination des valeurs "None"
-   for i in newton.keys():
-      if newton[i]==None : del newton[i]   
-
-   # Options de convergence        
-   convergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste) 
-   # Elimination des valeurs "None"
-   for i in convergence.keys():
-      if convergence[i]==None : del convergence[i]
-
-   # Options de comportement
-   # Type incremental (=1) ou elastique (=0)
-   comp_incr = 0
-   if RELATION:
-      relation=RELATION
-      if relation == 'VMIS_ISOT_TRAC':
-         comp_incr = 1
-      else:
-         comp_incr = 0
-   else:
-      relation = 'ELAS'
-      comp_incr = 0
-
-         
-   # Parametres du calcul
-   if comp_incr == 1:
-      resumeca=STAT_NON_LINE(MODELE=modmeca,
-                  CHAM_MATER=_cham,
-                  EXCIT=(_F(CHARGE=cl_me1,),
-                         _F(CHARGE=cl_me2,),
-                         _F(CHARGE=cl_me3,),
-                         _F(CHARGE=cl_me4,),
-                         _F(CHARGE=cl_me5,),
-                         _F(CHARGE=cl_me6,), 
-                         _F(CHARGE=cl_me7,), 
-                         _F(CHARGE=cl_me8,), 
-                         _F(CHARGE=cl_me9,), 
-                         _F(CHARGE=cl_me10,), 
-                         _F(CHARGE=cl_me11,),                            
-                  ),
-                  SOLVEUR        = solveur, 
-                  COMP_INCR      =_F(RELATION=relation,),
-                  NEWTON         = newton,
-                  INCREMENT      = increment,
-                  CONVERGENCE    = convergence,
-                  TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
-   else:
-      resumeca=STAT_NON_LINE(MODELE=modmeca,
-                  CHAM_MATER=_cham,
-                  EXCIT=(_F(CHARGE=cl_me1,),
-                         _F(CHARGE=cl_me2,),
-                         _F(CHARGE=cl_me3,),
-                         _F(CHARGE=cl_me4,),
-                         _F(CHARGE=cl_me5,),
-                         _F(CHARGE=cl_me6,), 
-                         _F(CHARGE=cl_me7,), 
-                         _F(CHARGE=cl_me8,), 
-                         _F(CHARGE=cl_me9,), 
-                         _F(CHARGE=cl_me10,), 
-                         _F(CHARGE=cl_me11,),                            
-                  ),
-                  SOLVEUR        = solveur, 
-                  COMP_ELAS      =_F(RELATION=relation,),
-                  NEWTON         = newton,
-                  INCREMENT      = increment,
-                  CONVERGENCE    = convergence,
-                  TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);                  
-
-   return ier
-
diff --git a/Aster/Cata/Macro/macr_cabri_mail_dat.py b/Aster/Cata/Macro/macr_cabri_mail_dat.py
deleted file mode 100644 (file)
index 7d67325..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-#@ MODIF macr_cabri_mail_dat Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-# Données pour les brides standards
-
-
-
-# Pour ajouter une bride x:
-#  Définir un dico_bride_x comme ci-dessous puis ajoutez-le à dico_bride_std
-
-# dictionnaire pour la description des variables
-dico_var_geo = {'nbgouj':'Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)',
-            'dint':'Diamètre intérieur de la bride (BRID_D_INT)',
-            'dex1':'Diamétre extérieur de la conduite (TUBU_D_EXT)',
-            'dex2':'Position (diamètre) du congé de la bride (BRID_D_CONGE)',
-            'dex3':'Diamètre de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_D_EPAUL)',
-            'dtrou':'Position des alésages de la bride permettant l''introduction des goujons (BRID_P_ALESAG)',
-            'dext':'Diamètre extérieur de la bride (BRID_D_EXT)',
-            'dt':'Diamètre des alésages de la bride permettant l''introduction des goujons (BRID_D_ALESAG)',
-            'drd':'Diamètre de la rondelle (GOUJ_D_RONDEL)',
-            'dg':'Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)',
-            'dec':'Diamètre de l''écrou (GOUJ_D_ECROU)',
-            'rcong':'Rayon du congé de la bride (BRID_R_CONGE)',
-            'he':'Epaisseur de la rondelle (GOUJ_E_RONDEL)',
-            'e':'Epaisseur de l''écrou (GOUJ_E_ECROU)',
-            'hc1':'Hauteur de la bride (BRID_H)',
-            'hcg1':'Hauteur de conduite (TUBU_H)',
-            'hb':'Hauteur de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_H_EPAUL)',
-            'htrou':'Hauteur des alésages de la bride permettant l''introduction des goujons (BRID_H_ALESAG)',
-            'pf':'Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)',
-            'j':'Epaisseur du joint au niveau de l''interface d''étanchéité (ETAN_E_JOINT)'}
-
-dico_var_msh = {'nrad':'Nombre d''éléments radiaux (NBR_RAD)',
-            'ncir':'Nombre d''éléments circonférentiels (NBR_CIR)',
-            'nver':'Nombre d''éléments verticaux (NBR_VER)',
-            'nsect':'Nombre d''éléments de l''alésage (NBR_ALE)',
-            'temps':'Temps d''analyse'}
-
-# dictionnaires des brides standards
-dico_bride_A = {'nbgouj': 4,
-                'dint':   15.76,
-                'dex1':   21.3,
-                'dex2':   38.,
-                'dex3':   48.,
-                'dtrou':  67.,
-                'dext':   95.,
-                'dt':     14.,
-                'drd':    25.,
-                'dg':     12.,
-                'dec':    18.,
-                'rcong':  3.,
-                'he':     12.,
-                'e':      2.5,
-                'hc1':    46.5,
-                'hcg1':   20,
-                'hb':     1.5,
-                'htrou':  20.,
-                'pf':     1.5,
-                'j':      2}
-
-dico_bride_AA = {'nbgouj': 32,
-                'dint':   336.5,
-                'dex1':   355.6,
-                'dex2':   395.,
-                'dex3':   415.,
-                'dtrou':  460.,
-                'dext':   515.,
-                'dt':     22.,
-                'drd':    36.,
-                'dg':     20.,
-                'dec':    30.,
-                'rcong':  5.,
-                'he':     20.,
-                'e':      3.,
-                'hc1':    115.,
-                'hcg1':   115./2.,
-                'hb':     3.,
-                'htrou':  47.,
-                'pf':     2.2,
-                'j':      2}
-
-dico_bride_B = {'nbgouj': 4,
-                'dint':   26.64,
-                'dex1':   33.4,
-                'dex2':   53.,
-                'dex3':   63.,
-                'dtrou':  88.,
-                'dext':   123.,
-                'dt':     16.,
-                'drd':    27.,
-                'dg':     14.,
-                'dec':    21.,
-                'rcong':  4.,
-                'he':     14.,
-                'e':      2.5,
-                'hc1':    59.,
-                'hcg1':   59./2.,
-                'hb':     1.5,
-                'htrou':  27.5,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_B1 = {'nbgouj': 4,
-                'dint':   24.3,
-                'dex1':   33.4,
-                'dex2':   53.,
-                'dex3':   63.,
-                'dtrou':  88.,
-                'dext':   123.,
-                'dt':     16.,
-                'drd':    27.,
-                'dg':     14.,
-                'dec':    21.,
-                'rcong':  4.,
-                'he':     14.,
-                'e':      2.5,
-                'hc1':    59.,
-                'hcg1':   59./2.,
-                'hb':     1.5,
-                'htrou':  27.5,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_C = {'nbgouj': 8,
-                'dint':   52.48,
-                'dex1':   60.3,
-                'dex2':   84.,
-                'dex3':   100.,
-                'dtrou':  127.,
-                'dext':   165.,
-                'dt':     18.,
-                'drd':    30,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  4.,
-                'he':     16.,
-                'e':      3,
-                'hc1':    70.,
-                'hcg1':   70./2.,
-                'hb':     1.5,
-                'htrou':  21.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_D = {'nbgouj': 8,
-                'dint':   42.9,
-                'dex1':   60.3,
-                'dex2':   84.,
-                'dex3':   100.,
-                'dtrou':  127.,
-                'dext':   165.,
-                'dt':     18.,
-                'drd':    30,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    87.6,
-                'hcg1':   87.6/2.,
-                'hb':     1.5,
-                'htrou':  38.5,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_D1 = {'nbgouj': 8,
-                'dint':   49.22,
-                'dex1':   60.3,
-                'dex2':   84.,
-                'dex3':   100.,
-                'dtrou':  127.,
-                'dext':   165.,
-                'dt':     18.,
-                'drd':    30,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    87.6,
-                'hcg1':   87.6/2.,
-                'hb':     1.5,
-                'htrou':  38.5,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_E = {'nbgouj': 8,
-                'dint':   83.1,
-                'dex1':   88.9,
-                'dex2':   117.5,
-                'dex3':   135.,
-                'dtrou':  165.,
-                'dext':   209.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    80.,
-                'hcg1':   80./2.,
-                'hb':     2.,
-                'htrou':  27.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_F = {'nbgouj': 8,
-                'dint':   73.66,
-                'dex1':   88.9,
-                'dex2':   117.5,
-                'dex3':   135.,
-                'dtrou':  165.,
-                'dext':   209.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    89.,
-                'hcg1':   89./2.,
-                'hb':     2.,
-                'htrou':  36.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_FF = {'nbgouj': 32,
-                'dint':   396.99,
-                'dex1':   406.4,
-                'dex2':   440.,
-                'dex3':   455.,
-                'dtrou':  485.,
-                'dext':   535.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    99.,
-                'hcg1':   99./2.,
-                'hb':     3.,
-                'htrou':  40.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_G = {'nbgouj': 12,
-                'dint':   66.7,
-                'dex1':   88.9,
-                'dex2':   117.5,
-                'dex3':   135.,
-                'dtrou':  165.,
-                'dext':   209.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    98.,
-                'hcg1':   98./2.,
-                'hb':     2.,
-                'htrou':  45.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_GG = {'nbgouj': 36,
-                'dint':   381.,
-                'dex1':   406.4,
-                'dex2':   445.,
-                'dex3':   460.,
-                'dtrou':  495.,
-                'dext':   545.,
-                'dt':     22.,
-                'drd':    36,
-                'dg':     20.,
-                'dec':    30.,
-                'rcong':  5.,
-                'he':     20.,
-                'e':      3.,
-                'hc1':    129.,
-                'hcg1':   129./2.,
-                'hb':     3.,
-                'htrou':  63.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_H = {'nbgouj': 12,
-                'dint':   108.2,
-                'dex1':   114.3,
-                'dex2':   146.,
-                'dex3':   157.,
-                'dtrou':  190.,
-                'dext':   225.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    89.,
-                'hcg1':   89./2.,
-                'hb':     2.,
-                'htrou':  33.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_H1 = {'nbgouj': 12,
-                'dint':   102.6,
-                'dex1':   114.3,
-                'dex2':   146.,
-                'dex3':   157.,
-                'dtrou':  190.,
-                'dext':   225.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    89.,
-                'hcg1':   89./2.,
-                'hb':     2.,
-                'htrou':  33.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_I = {'nbgouj': 18,
-                'dint':   92.1,
-                'dex1':   114.3,
-                'dex2':   146.,
-                'dex3':   160.,
-                'dtrou':  200.,
-                'dext':   255.,
-                'dt':     20.,
-                'drd':    32.,
-                'dg':     18.,
-                'dec':    27.,
-                'rcong':  5.,
-                'he':     18.,
-                'e':      3.,
-                'hc1':    99.,
-                'hcg1':   99./2.,
-                'hb':     2.,
-                'htrou':  43.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_J = {'nbgouj': 18,
-                'dint':   87.34,
-                'dex1':   114.3,
-                'dex2':   146.,
-                'dex3':   160.,
-                'dtrou':  200.,
-                'dext':   255.,
-                'dt':     20.,
-                'drd':    32.,
-                'dg':     18.,
-                'dec':    27.,
-                'rcong':  5.,
-                'he':     18.,
-                'e':      3.,
-                'hc1':    111.,
-                'hcg1':   111./2.,
-                'hb':     2.,
-                'htrou':  55.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_J1 = {'nbgouj': 18,
-                'dint':   87.3,
-                'dex1':   114.3,
-                'dex2':   146.,
-                'dex3':   160.,
-                'dtrou':  200.,
-                'dext':   255.,
-                'dt':     22.,
-                'drd':    36.,
-                'dg':     20.,
-                'dec':    30.,
-                'rcong':  5.,
-                'he':     20.,
-                'e':      3.,
-                'hc1':    111.,
-                'hcg1':   111./2.,
-                'hb':     2.,
-                'htrou':  55.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_K = {'nbgouj': 8,
-                'dint':   161.5,
-                'dex1':   168.3,
-                'dex2':   192.,
-                'dex3':   210.,
-                'dtrou':  235.,
-                'dext':   280.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    84.,
-                'hcg1':   84./2.,
-                'hb':     2.,
-                'htrou':  28.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_L = {'nbgouj': 16,
-                'dint':   154.8,
-                'dex1':   168.3,
-                'dex2':   206.,
-                'dex3':   220.,
-                'dtrou':  255.,
-                'dext':   317.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    96.,
-                'hcg1':   96./2.,
-                'hb':     2.,
-                'htrou':  40.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_L1 = {'nbgouj': 16,
-                'dint':   154.8,
-                'dex1':   168.3,
-                'dex2':   206.,
-                'dex3':   220.,
-                'dtrou':  255.,
-                'dext':   317.,
-                'dt':     20.,
-                'drd':    32.,
-                'dg':     18.,
-                'dec':    27.,
-                'rcong':  5.,
-                'he':     18.,
-                'e':      3.,
-                'hc1':    96.,
-                'hcg1':   96./2.,
-                'hb':     2.,
-                'htrou':  40.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_M = {'nbgouj': 16,
-                'dint':   139.7,
-                'dex1':   168.3,
-                'dex2':   206.,
-                'dex3':   220.,
-                'dtrou':  250.,
-                'dext':   290.,
-                'dt':     24.,
-                'drd':    40.,
-                'dg':     22.,
-                'dec':    32.,
-                'rcong':  5.,
-                'he':     22.,
-                'e':      3.,
-                'hc1':    135.,
-                'hcg1':   135./2.,
-                'hb':     3.,
-                'htrou':  62.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_N = {'nbgouj': 12,
-                'dint':   131.9,
-                'dex1':   168.3,
-                'dex2':   220.,
-                'dex3':   240.,
-                'dtrou':  290.,
-                'dext':   365.,
-                'dt':     30.,
-                'drd':    48.,
-                'dg':     27.,
-                'dec':    41.,
-                'rcong':  5.,
-                'he':     27.,
-                'e':      4.,
-                'hc1':    148.,
-                'hcg1':   148./2.,
-                'hb':     3.,
-                'htrou':  75.,
-                'pf':     2.6,
-                'j':      2}
-dico_bride_O = {'nbgouj': 12,
-                'dint':   211.58,
-                'dex1':   219.1,
-                'dex2':   248.,
-                'dex3':   260.,
-                'dtrou':  292.,
-                'dext':   335.,
-                'dt':     20.,
-                'drd':    32.,
-                'dg':     18.,
-                'dec':    27.,
-                'rcong':  5.,
-                'he':     18.,
-                'e':      3.,
-                'hc1':    87.,
-                'hcg1':   87./2.,
-                'hb':     3.,
-                'htrou':  30.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_P = {'nbgouj': 16,
-                'dint':   202.74,
-                'dex1':   219.1,
-                'dex2':   248.,
-                'dex3':   260.,
-                'dtrou':  292.,
-                'dext':   335.,
-                'dt':     20.,
-                'drd':    32,
-                'dg':     18.,
-                'dec':    27.,
-                'rcong':  5.,
-                'he':     18.,
-                'e':      3.,
-                'hc1':    99.,
-                'hcg1':   99./2.,
-                'hb':     3.,
-                'htrou':  42.,
-                'pf':     2.2,
-                'j':      2}
-dico_bride_S = {'nbgouj': 16,
-                'dint':   264.62,
-                'dex1':   273.,
-                'dex2':   305.,
-                'dex3':   315.,
-                'dtrou':  350.,
-                'dext':   390.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    89.,
-                'hcg1':   89./2.,
-                'hb':     3.,
-                'htrou':  32.,
-                'pf':     1.7,
-                'j':      2}
-dico_bride_T = {'nbgouj': 16,
-                'dint':   254.56,
-                'dex1':   273.,
-                'dex2':   320.,
-                'dex3':   340.,
-                'dtrou':  385.,
-                'dext':   444.,
-                'dt':     27.,
-                'drd':    45.,
-                'dg':     24.,
-                'dec':    36.,
-                'rcong':  5.,
-                'he':     24.,
-                'e':      4.,
-                'hc1':    128.,
-                'hcg1':   128./2.,
-                'hb':     3.,
-                'htrou':  55.,
-                'pf':     2.6,
-                'j':      2}
-dico_bride_W = {'nbgouj': 28,
-                'dint':   314.76,
-                'dex1':   323.9,
-                'dex2':   360.,
-                'dex3':   385.,
-                'dtrou':  415.,
-                'dext':   460.,
-                'dt':     18.,
-                'drd':    30.,
-                'dg':     16.,
-                'dec':    24.,
-                'rcong':  5.,
-                'he':     16.,
-                'e':      3.,
-                'hc1':    96.,
-                'hcg1':   96./2.,
-                'hb':     3.,
-                'htrou':  37.,
-                'pf':     1.7,
-                'j':      2}
-
-
-# dictionnaire pour faire le lien entre l'option de bride et les valeurs normalisées
-dico_bride_std = {'AA':dico_bride_AA,
-                  'A':dico_bride_A,
-                  'B':dico_bride_B,
-                  'B1':dico_bride_B1,
-                  'C':dico_bride_C,
-                  'D':dico_bride_D,
-                  'D1':dico_bride_D1,
-                  'E':dico_bride_E,
-                  'F':dico_bride_F,
-                  'FF':dico_bride_FF,
-                  'G':dico_bride_G,
-                  'GG':dico_bride_GG,
-                  'H':dico_bride_H,
-                  'H1':dico_bride_H1,
-                  'I':dico_bride_I,
-                  'J':dico_bride_J,
-                  'J1':dico_bride_J1,
-                  'K':dico_bride_K,
-                  'L':dico_bride_L,
-                  'L1':dico_bride_L1,
-                  'M':dico_bride_M,
-                  'N':dico_bride_N,
-                  'O':dico_bride_O,
-                  'P':dico_bride_P,
-                  'S':dico_bride_S,
-                  'T':dico_bride_T,
-                  'W':dico_bride_W}
diff --git a/Aster/Cata/Macro/macr_cabri_mail_ops.py b/Aster/Cata/Macro/macr_cabri_mail_ops.py
deleted file mode 100644 (file)
index 9215454..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-#@ MODIF macr_cabri_mail_ops Macro  DATE 07/02/2005   AUTEUR MABBAS M.ABBAS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-import os
-
-def macr_cabri_mail_ops(self,EXEC_MAILLAGE,RAFF_MAILLAGE,VERI_MAIL,GEOM_BRID,
-                        IMPRESSION,**args):
-  """
-     Ecriture de la macro MACR_CABRI_MAIL
-  """
-  import types
-  from Accas import _F
-
-  ier=0
-
-  # On importe les definitions des commandes a utiliser dans la macro
-  # Le nom de la variable doit etre obligatoirement le nom de la commande
-  EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL')
-  LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE')
-  PRE_GIBI      = self.get_cmd('PRE_GIBI')
-  IMPR_RESU     = self.get_cmd('IMPR_RESU')
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-
-  # Le concept sortant (de type mail) est nommé 'nomres' dans 
-  # le contexte de la macro
-  
-  self.DeclareOut('nomres',self.sd)
-  
-  # Chemin de Gibi
-  import aster
-  loc_gibi=aster.repout()
-  gibi2000=loc_gibi+'gibi'
-  
-  # Unité pour le fichier maillage produit (format GIBI)
-  unite_mgib = EXEC_MAILLAGE['UNITE_MGIB']
-  # Unité pour le fichier de commandes GIBI
-  unite_datg = EXEC_MAILLAGE['UNITE_DATG']
-  # Niveau gibi
-  niveau_gibi = EXEC_MAILLAGE['NIVE_GIBI']
-  # Verif mail
-  ver_apla = VERI_MAIL['APLAT']
-  ver_veri = VERI_MAIL['VERIF']
-  
-  # Impression
-  if IMPRESSION['UNITE']!=None:
-   imp_unit = IMPRESSION['UNITE']
-   imp_unitF = 1
-  else:
-   imp_unitF = 0  
-  if IMPRESSION['FORMAT']!=None:
-   imp_form = IMPRESSION['FORMAT']
-   imp_formF = 1
-  else:
-   imp_formF = 0 
-#  if IMPRESSION['FICHIER']!=None:
-#   imp_fich = IMPRESSION['FICHIER']
-#   imp_fichF = 1
-#  else:
-#   imp_fichF = 0 
-  # Maillage  
-  nrad = RAFF_MAILLAGE['NB_RADIAL']
-  ncir = RAFF_MAILLAGE['NB_CIRCONF']
-  nver = RAFF_MAILLAGE['NB_VERTICAL']
-  nsect = RAFF_MAILLAGE['NB_ALESAGE']
-  temps = 5.
-    
-  maillage = {'nrad': nrad,
-              'ncir': ncir,
-              'nver': nver,
-              'nsect': nsect,
-              'temps' : temps,}
-
-  # Création du fichier datg
-  
-  if GEOM_BRID['NORME'] == 'OUI':
-    # Bride standard
-    type_bride = GEOM_BRID['TYPE']
-    ### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
-    write_file_dgib_STD(unite_mgib,unite_datg,maillage,type_bride) 
-  else:
-    # Bride quelconque
-    geo_bride_qqe = {'nbgouj': GEOM_BRID['GOUJ_N_GOUJON'],
-                'dint':   GEOM_BRID['BRID_D_INT'],
-                'dex1':   GEOM_BRID['TUBU_D_EXT'],
-                'dex2':   GEOM_BRID['BRID_D_CONGE'],
-                'dex3':   GEOM_BRID['BRID_D_EPAUL'],
-                'dtrou':  GEOM_BRID['BRID_P_ALESAG'],
-                'dext':   GEOM_BRID['BRID_D_EXT'],
-                'dt':     GEOM_BRID['BRID_D_ALESAG'],
-                'drd':    GEOM_BRID['GOUJ_D_RONDEL'],
-                'dg':     GEOM_BRID['GOUJ_D_GOUJON'],
-                'dec':    GEOM_BRID['GOUJ_D_ECROU'],
-                'rcong':  GEOM_BRID['BRID_R_CONGE'],
-                'he':     GEOM_BRID['GOUJ_E_ECROU'],
-                'e':      GEOM_BRID['GOUJ_E_RONDEL'],
-                'hc1':    GEOM_BRID['BRID_H'],
-                'hcg1':   GEOM_BRID['TUBU_H'],
-                'hb':     GEOM_BRID['BRID_H_EPAUL'],
-                'htrou':  GEOM_BRID['BRID_H_ALESAG'],
-                'pf':     GEOM_BRID['GOUJ_E_FILET'],
-                'j':      GEOM_BRID['ETAN_E_JOINT']}  
-    ### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
-    write_file_dgib_QQE(unite_mgib,unite_datg,maillage,geo_bride_qqe)  
-
-  fichier_datg = 'fort.'+str(unite_datg)
-  fichier_mgib = 'fort.'+str(unite_mgib)
-  
-  # Lancement de GIBI
-  EXEC_LOGICIEL(
-               LOGICIEL=gibi2000,
-               ARGUMENT=(_F(NOM_PARA=fichier_datg),
-                         _F(NOM_PARA=fichier_mgib),
-                         )
-               )
-  # Lecture du maillage GIBI dans ASTER
-  PRE_GIBI(
-          UNITE_GIBI = unite_mgib,
-          )
-  
-  nomres = LIRE_MAILLAGE(VERI_MAIL=_F(APLAT = ver_apla,
-                                      VERIF = ver_veri ),)
-                                      
-#  if (imp_fichF == 1):  
-#   print imp_fich
-  if (imp_formF == 1):  
-   print imp_form
-  if (imp_unitF == 1):  
-   print imp_unit    
-  # Impression du fichier maillage
-  if (imp_formF == 1):
-    if (imp_form == 'CASTEM'):
-      imp_ngib = IMPRESSION['NIVE_GIBI']
-      IMPR_RESU( RESU = _F(MAILLAGE=nomres, ),
-                 FORMAT = 'CASTEM', NIVE_GIBI = imp_ngib )
-    if (imp_form == 'IDEAS'):
-      imp_nver = IMPRESSION['VERSION']
-      IMPR_RESU(RESU = _F(MAILLAGE=nomres,),
-                FORMAT = 'IDEAS', VERSION = imp_nver )
-                                
-  return ier
-
-
-##############################################################################################
-# Liste des fonctions
-##############################################################################################
-
-#############
-## EXTERNES (appelables depuis l'extérieur)
-#############
-
-### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
-# null = write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride)
-
-### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
-# null = write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride)
-
-### Imprime tout le catalogue des brides standards disponibles dans un fichier texte
-# null = print_bride_std(nom_fichier)
-### Catalogue complet des brides standards disponibles
-# txt = bride_std()
-
-#############
-## INTERNES (réservées au travail interne)
-#############
-
-### Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
-# NomFichier(txt) = name_file_mgib(unite_mgib):
-
-### Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
-# NomFichier(txt) = name_file_datg(unite_datg):
-
-### Récupère un fichier texte DATG
-# Txt = text_datg(fichier_datg):
-
-### Génération du texte pour les variables
-# Txt = para_text(dico_var,var): 
-
-
-
-#=============================================================================================
-# Importation des modules Python
-#=============================================================================================
-
-from Macro.macr_cabri_mail_dat import dico_var_geo,dico_var_msh,dico_bride_std
-
-#=============================================================================================
-# Fonctions principales
-#=============================================================================================
-# Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
-def write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride):
-
-    # Nom du fichier maillage produit par GIBI
-    nomFichierMGIB = name_file_mgib(unite_mgib)
-    # Nom du fichier de commandes pour GIBI
-    nomFichierDATG = name_file_datg(unite_datg)
-        
-    # Ouverture du fichier d'entrée de commandes
-    fdgib=open(nomFichierDATG,'w')
-    
-    # En-tete
-    text =        "**************************************************************\n"
-    text = text + "* Fichier GIBI pour le maillage d'une bride \n"
-    text = text + "**************************************************************\n"
-    text = text + "\n"
-    text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
-    text = text + "* Ne pas modifier\n"
-    text = text + "\n"    
-    text = text + "**************************************************************\n"
-    text = text + "* Type bride: Bride standard \n"
-    text = text + "**************************************************************\n"
-    text = text + "titre '"+"Bride standard"+"';\n"
-    text = text + "** Type bride standard: "+geo_bride+"\n"
-   
-    text = text + "\n"
-    text = text + "nomfich = CHAINE \n"
-    if len(nomFichierMGIB)>72:
-      raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
-         'pour GIBI) :\n',nomFichierMGIB
-    elif len(nomFichierMGIB)<=69:
-      text = text + "'"+nomFichierMGIB+"';\n"
-    else:
-      text = text + "'"+nomFichierMGIB[:69]+"'\n" \
-                  + "'"+nomFichierMGIB[69:]+"';\n"
-    text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
-    text = text + "dens 1;\n"
-    text = text + "\n"
-    fdgib.write(text)
-    
-    # Procédures internes supplémentaires
-    text =        "**************************************************************\n"
-    text = text + "* Procédures supplémentaires \n"
-    text = text + "**************************************************************\n"
-    text = text + text_datg_pro()
-    fdgib.write(text)
-    
-    # Début de procédure de création du maillage
-    text =        "**************************************************************\n"
-    text = text + "**************************************************************\n"
-    text = text + "********* Début de procédure de création du maillage *********\n"
-    text = text + "**************************************************************\n"
-    text = text + "**************************************************************\n"
-    text = text + "\n debproc constru;\n"
-    fdgib.write(text)
-
-    # Paramètres géométriques
-    car_bride = dico_bride_std[geo_bride]
-    text =        "**************************************************************\n"
-    text = text + "* Paramètres géométriques \n"
-    text = text + "**************************************************************\n"
-    text = text + para_text(dico_var_geo,car_bride)
-    fdgib.write(text) 
-
-    # Paramètres du maillage
-    text =        "**************************************************************\n"
-    text = text + "* Paramètres physiques \n"
-    text = text + "**************************************************************\n"
-    text = text + para_text(dico_var_msh,msh_bride)
-    fdgib.write(text) 
-
-    # Algorithme du maillage
-    text =        "**************************************************************\n"
-    text = text + "* Algorithme de maillage \n"
-    text = text + "**************************************************************\n"
-    text = text + text_datg_std()
-    fdgib.write(text)
-    
-    # Fermeture du fichier maillage
-    fdgib.close()
-    
-    
-# Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
-def write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride):
-        
-    # Nom du fichier maillage produit par GIBI
-    nomFichierMGIB = name_file_mgib(unite_mgib)
-    # Nom du fichier de commandes pour GIBI
-    nomFichierDATG = name_file_datg(unite_datg)
-      
-    # Ouverture du fichier d'entree de commandes
-    fdgib=open(nomFichierDATG,'w')
-    
-    # En-tete
-    text =        "**************************************************************\n"
-    text = text + "* Fichier GIBI pour le maillage d'une bride \n"
-    text = text + "**************************************************************\n"
-    text = text + "\n"
-    text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
-    text = text + "* Ne pas modifier\n"
-    text = text + "\n"    
-    text = text + "**************************************************************\n"
-    text = text + "* Type bride: Bride quelconque\n"
-    text = text + "**************************************************************\n"
-    text = text + "titre '"+"Bride Quelconque"+"';\n"
-    text = text + "\n"
-    text = text + "nomfich = CHAINE \n"
-    if len(nomFichierMGIB)>72:
-      raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
-         'pour GIBI) :\n',nomFichierMGIB
-    elif len(nomFichierMGIB)<=69:
-      text = text + "'"+nomFichierMGIB+"';\n"
-    else:
-      text = text + "'"+nomFichierMGIB[:69]+"'\n" \
-                  + "'"+nomFichierMGIB[69:]+"';\n"
-    text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
-    text = text + "dens 1;\n"
-    text = text + "\n"
-    fdgib.write(text)
-    
-    # Procédures internes supplémentaires
-    text =        "**************************************************************\n"
-    text = text + "* Procédures supplémentaires \n"
-    text = text + "**************************************************************\n"
-    text = text + text_datg_pro()
-    fdgib.write(text)
-    
-    # Début de procédure de création du maillage
-    text =        "**************************************************************\n"
-    text = text + "**************************************************************\n"
-    text = text + "********* Début de procédure de création du maillage *********\n"
-    text = text + "**************************************************************\n"
-    text = text + "**************************************************************\n"
-    text = text + "\n debproc constru;\n"
-    fdgib.write(text)
-
-    # Paramètres géométriques
-    text =        "**************************************************************\n"
-    text = text + "* Paramètres géométriques \n"
-    text = text + "**************************************************************\n"
-    text = text + para_text(dico_var_geo,geo_bride)
-    fdgib.write(text) 
-
-    # Paramètres du maillage
-    text =        "**************************************************************\n"
-    text = text + "* Paramètres physiques \n"
-    text = text + "**************************************************************\n"
-    text = text + para_text(dico_var_msh,msh_bride)
-    fdgib.write(text) 
-
-    # Algorithme du maillage
-    text =        "**************************************************************\n"
-    text = text + "* Algorithme de maillage \n"
-    text = text + "**************************************************************\n"
-    text = text + text_datg_qqe()
-    fdgib.write(text)
-    
-    # Fermeture du fichier maillage
-    fdgib.close()
-
-# Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
-def name_file_mgib(unite_mgib):
-    cur_dir = os.getcwd()
-    nomFichier = cur_dir+'/fort.'+str(unite_mgib)
-    return nomFichier
-
-
-# Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
-def name_file_datg(unite_datg):
-    cur_dir = os.getcwd()
-    nomFichier = cur_dir+'/fort.'+str(unite_datg)
-    return nomFichier
-
-# Récupère un fichier texte DATG: texte GIBI pour procédures
-def text_datg_pro():
-   import aster
-   loc_datg = aster.repdex()
-   datg_bridePro  = loc_datg+"macr_cabri_mail_proc.datg"
-   fproc=open(datg_bridePro,'r')
-   procText = fproc.read()
-   fproc.close()
-
-   return procText
-
-# Récupère un fichier texte DATG: texte GIBI pour bride quelconque
-def text_datg_qqe():
-   import aster
-   loc_datg = aster.repdex()
-   datg_brideQqe  = loc_datg+"macr_cabri_mail_qqe.datg"      
-   fproc=open(datg_brideQqe,'r')
-   procText = fproc.read()
-   fproc.close()
-
-   return procText
-
-# Récupère un fichier texte DATG: texte GIBI pour bride standard
-def text_datg_std():
-   import aster
-   loc_datg = aster.repdex()
-   datg_brideStd  = loc_datg+"macr_cabri_mail_std.datg"      
-   fproc=open(datg_brideStd,'r')
-   procText = fproc.read()
-   fproc.close()
-
-   return procText
-
-# Génération du texte pour les variables
-def para_text(dico_var,var):
-    text = '\n'
-    for nom_var in var.keys():
-        text = text+"* "+dico_var[nom_var]+"\n"
-        text = text+nom_var+" = "+`var[nom_var]`+";\n"
-    return text
-
-#=============================================================================================
-# Accès au catalogue des brides standards
-# (les brides standards sont décrites dans le fichier Data_Brides.py)
-#=============================================================================================
-
-
-
-# Imprime tout le catalogue des brides standards disponibles dans un fichier texte
-def print_bride_std(nom_fichier):
-    text = bride_std()
-    # Ouverture du fichier
-    finfo=open(nom_fichier,'w')
-    # Ecriture des infos
-    finfo.write(text)
-    # Fermeture du fichier
-    finfo.close()
-
-# Catalogue complet des brides standards disponibles
-def bride_std():
-    # Ligne d'info
-    text = "Liste des brides standards avec leurs dimensions\n"
-    # Première ligne
-    text = text+"\t"
-    for nom_variable in dico_var_geo.keys():      
-        text = text + nom_variable+"\t\t"
-    text = text + "\n"
-    # Lignes suivantes
-    for nom_bride in dico_bride_std.keys():
-        bride = dico_bride_std[nom_bride]    
-        text = text + nom_bride + '\t'
-        for nom_var in dico_var_geo.keys():
-            chaine = "%f" % (bride[nom_var])
-            text = text+chaine+"\t"               
-        text = text + "\n"
-    return text
diff --git a/Aster/Cata/Macro/macr_cara_poutre_ops.py b/Aster/Cata/Macro/macr_cara_poutre_ops.py
deleted file mode 100644 (file)
index e0849af..0000000
+++ /dev/null
@@ -1,816 +0,0 @@
-#@ MODIF macr_cara_poutre_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-
-def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
-                              GROUP_MA,ORIG_INER,**args):
-  """
-     Ecriture de la macro MACR_CARA_POUTRE
-  """
-  import types
-  from Accas import _F
-  ier=0
-  # On importe les definitions des commandes a utiliser dans la macro
-  # Le nom de la variable doit etre obligatoirement le nom de la commande
-  LIRE_MAILLAGE   =self.get_cmd('LIRE_MAILLAGE')
-  DEFI_GROUP      =self.get_cmd('DEFI_GROUP')
-  CREA_MAILLAGE   =self.get_cmd('CREA_MAILLAGE')
-  AFFE_MODELE     =self.get_cmd('AFFE_MODELE')
-  DEFI_MATERIAU   =self.get_cmd('DEFI_MATERIAU')
-  AFFE_MATERIAU   =self.get_cmd('AFFE_MATERIAU')
-  DEFI_FONCTION   =self.get_cmd('DEFI_FONCTION')
-  DEFI_CONSTANTE  =self.get_cmd('DEFI_CONSTANTE')
-  AFFE_CHAR_THER  =self.get_cmd('AFFE_CHAR_THER')
-  AFFE_CHAR_THER_F=self.get_cmd('AFFE_CHAR_THER_F')
-  THER_LINEAIRE   =self.get_cmd('THER_LINEAIRE')
-  CALC_VECT_ELEM  =self.get_cmd('CALC_VECT_ELEM')
-  CALC_MATR_ELEM  =self.get_cmd('CALC_MATR_ELEM')
-  NUME_DDL        =self.get_cmd('NUME_DDL')
-  ASSE_VECTEUR    =self.get_cmd('ASSE_VECTEUR')
-  POST_ELEM       =self.get_cmd('POST_ELEM')
-  CALC_ELEM       =self.get_cmd('CALC_ELEM')
-  INTE_MAIL_2D    =self.get_cmd('INTE_MAIL_2D')
-  POST_RELEVE_T   =self.get_cmd('POST_RELEVE_T')
-  IMPR_TABLE      =self.get_cmd('IMPR_TABLE')
-  IMPR_CO         =self.get_cmd('IMPR_CO')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans 
-  # le contexte de la macro
-  
-  self.DeclareOut('nomres',self.sd)
-
-#  if GROUP_MA_BORD and GROUP_MA:
-#     if not LIAISON:
-#        ier=ier+1
-#        self.cr.fatal("<F> <MACR_CARA_POUTRE> Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
-#        return ier
-#
-  __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
-
-  __nomamo=AFFE_MODELE(MAILLAGE=__nomlma,
-                       AFFE=_F(TOUT='OUI',
-                               PHENOMENE='MECANIQUE',
-                               MODELISATION='D_PLAN',),   )
-
-  __nomdma=DEFI_MATERIAU(ELAS=_F(E=1.0,NU=0.,RHO=1.0),)
-
-
-  __nomama=AFFE_MATERIAU(MAILLAGE=__nomlma,
-                         AFFE=_F(TOUT='OUI',
-                                 MATER=__nomdma,),  )
-
-# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
-#     ------------------------------------------------------
-
-  motsimps={}
-  if GROUP_MA  : motsimps['GROUP_MA']  = GROUP_MA
-  if SYME_X    : motsimps['SYME_X']    = SYME_X
-  if SYME_Y    : motsimps['SYME_Y']    = SYME_Y
-  motsimps['ORIG_INER'] = ORIG_INER
-  mfact=_F(TOUT='OUI',**motsimps)
-  nomres=POST_ELEM(MODELE=__nomamo,
-                   CHAM_MATER=__nomama,
-                   CARA_GEOM=mfact    )
-
-# nb  :  si GROUP_MA n existe pas : le mot clé est ignoré
-
-#
-#     ==================================================================
-# --- = CALCUL DE LA CONSTANTE DE TORSION SUR TOUT LE MAILLAGE         =
-# --- =     OU DU  CENTRE DE TORSION/CISAILLEMENT                      =
-# --- =        DES COEFFICIENTS DE CISAILLEMENT                        =
-# --- =     ET DE L INERTIE DE GAUCHISSEMENT                           =
-# --- =        DU RAYON DE TORSION SUR TOUT LE MAILLAGE 
-# --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION    =
-# --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS=
-#     ==================================================================
-
-  if GROUP_MA_BORD and not GROUP_MA:
-# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
-# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
-#     ---------------------------------------------------------
-     motscles={}
-     if type(GROUP_MA_BORD)==types.StringType:
-        motscles['CREA_GROUP_NO']=_F(GROUP_MA=GROUP_MA_BORD,)
-     else:
-        motscles['CREA_GROUP_NO']=[]
-        for grma in GROUP_MA_BORD:
-           motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=grma,))
-     __nomlma=DEFI_GROUP(reuse=__nomlma,
-                         MAILLAGE=__nomlma,
-                         **motscles)
-  
-
-
-# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
-# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
-# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
-#     ---------------------------------------------------------------
-
-     __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
-                            REPERE=_F(TABLE=nomres,
-                                      NOM_ORIG='CDG',  ),  )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-#     ------------------------------------------------------
-
-     __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
-                          AFFE=_F(TOUT='OUI',
-                                  PHENOMENE='THERMIQUE',
-                                  MODELISATION='PLAN',), )
-
-# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON  DEFINIT UN
-# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
-# --- LAMBDA = 1, RHO*CP = 0 :
-#     ----------------------
-
-     __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,RHO_CP=0.,),)
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-#     ---------------------------------------------------------
-
-     __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
-                            AFFE=_F(TOUT='OUI',
-                                    MATER=__nomath,),   )
-
-#
-#     ------------------------------------------------------------
-# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION         -
-# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2            -
-# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION :    -
-# --- -    LAPLACIEN(PHI) = -2 DANS LA SECTION                   -
-# --- -    PHI = 0 SUR LE CONTOUR :                              -
-#     ------------------------------------------------------------
-#
-# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
-# --- DE LA SECTION
-# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
-#     -------------------------------------------------------
-
-     motscles={}
-     if args.has_key('GROUP_MA_INTE'):
-        if args['GROUP_MA_INTE'] != None :
-           motscles['LIAISON_UNIF']=_F(GROUP_MA=args['GROUP_MA_INTE'],DDL='TEMP'),
-     __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
-                             TEMP_IMPO   =_F(GROUP_NO=GROUP_MA_BORD,
-                                             TEMP=0. ),
-                             SOURCE      =_F(TOUT='OUI',
-                                             SOUR=2.0),
-                             **motscles  )
-
-# ---  POUR CHAQUE TROU DE LA SECTION :
-# ---  .ON A IMPOSE QUE PHI EST CONSTANT SUR LE CONTOUR INTERIEUR
-# ---   EN FAISANT LE LIAISON_UNIF DANS LE AFFE_CHAR_THER PRECEDENT
-# ---  .ON IMPOSE EN PLUS D(PHI)/DN = 2*AIRE(TROU)/L(TROU)
-# ---        OU D/DN DESIGNE LA DERIVEE PAR RAPPORT A LA
-# ---        NORMALE ET L DESIGNE LA LONGUEUR DU BORD DU TROU :
-#     -------------------------------------------------------
-
-     if args.has_key('GROUP_MA_INTE'):
-        lgmaint=args['GROUP_MA_INTE']
-        if lgmaint != None :
-           __tbaire=POST_ELEM(MODELE=__nomoth,
-                           AIRE_INTERNE=_F(GROUP_MA_BORD=args['GROUP_MA_INTE'],),  )
-
-           motscles={}
-           motscles['FLUX_REP']=[]
-        
-           if type(lgmaint)==types.StringType:
-              motscles['FLUX_REP']=_F(GROUP_MA=args['GROUP_MA_INTE'],CARA_TORSION=__tbaire)
-           else:
-              motscles['FLUX_REP']=[]
-              for grma in lgmaint:
-                 motscles['FLUX_REP'].append(_F(GROUP_MA=grma,CARA_TORSION=__tbaire),)
-           __chart2=AFFE_CHAR_THER(MODELE=__nomoth,**motscles)
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -2
-# --- AVEC PHI = 0 SUR LE CONTOUR :
-#     ----------------------------------------
-
-     motscles={}
-     motscles['EXCIT']=[_F(CHARGE=__chart1,),]
-     if args.has_key('GROUP_MA_INTE'):
-        if lgmaint != None :
-           motscles['EXCIT'].append(_F(CHARGE=__chart2,))
-     __tempe1=THER_LINEAIRE(MODELE=__nomoth,
-                            CHAM_MATER=__chmath,
-                            SOLVEUR=_F(STOP_SINGULIER='NON',),
-                            **motscles   )
-
-#
-#     ----------------------------------------------
-# --- - CALCUL DU  CENTRE DE TORSION/CISAILLEMENT  -
-# --- - ET DES COEFFICIENTS DE CISAILLEMENT :      -
-#     ----------------------------------------------
-#
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Y :
-#     --------------------------
-
-     __fnsec1=DEFI_FONCTION(NOM_PARA='X',
-                            VALE=(0.,0.,10.,10.),
-                            PROL_DROITE='LINEAIRE',
-                            PROL_GAUCHE='LINEAIRE',
-                           )
-
-     __fnsec0=DEFI_CONSTANTE(VALE=0.,)
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
-#     --------------------------------------------------
-
-
-     motscles={}
-     if args.has_key('NOEUD'):
-        motscles['TEMP_IMPO']=(_F(NOEUD=args['NOEUD'],TEMP=__fnsec0))
-     __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
-                               SOURCE=_F(TOUT='OUI',
-                                         SOUR=__fnsec1,),
-                               **motscles   )
-
-# --- RESOLUTION DE     LAPLACIEN(PHI) = -Y
-# ---              AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-#     ------------------------------------------------
-
-     __tempe2=THER_LINEAIRE(MODELE=__nomoth,
-                            CHAM_MATER=__chmath,
-                            EXCIT=_F(CHARGE=__chart2,), 
-                            SOLVEUR=_F(STOP_SINGULIER='NON',),
-                           )
-
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Z :
-#     --------------------------
-
-     __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
-                            VALE=(0.,0.,10.,10.),
-                            PROL_DROITE='LINEAIRE',
-                            PROL_GAUCHE='LINEAIRE',
-                           )
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
-#     --------------------------------------------------
-
-     motscles={}
-     if args.has_key('NOEUD'):
-        motscles['TEMP_IMPO']=_F(NOEUD=args['NOEUD'],TEMP=__fnsec0)
-     __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
-                               SOURCE=_F(TOUT='OUI',
-                                         SOUR=__fnsec2,),
-                               **motscles)
-
-# --- RESOLUTION DE     LAPLACIEN(PHI) = -Z
-# ---              AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-#     ------------------------------------------------
-
-     __tempe3=THER_LINEAIRE(MODELE=__nomoth,
-                            CHAM_MATER=__chmath,
-                            EXCIT=_F(CHARGE=__chart3,), 
-                            SOLVEUR=_F(STOP_SINGULIER='NON',),
-                           )
-
-# --- CALCUL DU RAYON DE TORSION :
-#     --------------------------
-
-#    CALCUL DU RAYON DE TORSION EXTERNE : rtext
-
-     __tempe1=CALC_ELEM(reuse=__tempe1,
-                       RESULTAT=__tempe1,
-                       MODELE=__nomoth,
-                       CHAM_MATER=__chmath,
-                       TOUT_ORDRE='OUI',
-                       OPTION='FLUX_ELNO_TEMP',
-                      )
-
-     __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
-                         DEFI_CHEMIN=_F(GROUP_MA=GROUP_MA_BORD),
-                         INFO=2,)
-
-     __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
-                             CHEMIN=__chem,
-                             RESULTAT=__tempe1,
-                             NOM_CHAM='FLUX_ELNO_TEMP',
-                             TRAC_NOR='OUI',
-                             NOM_CMP=('FLUX','FLUY'),
-                             OPERATION='MOYENNE'))
-
-     __m1=abs(__flun['TRAC_NOR',3])
-     __m2=abs(__flun['TRAC_NOR',4])
-     __rtext=max(__m1,__m2)
-     
- #    CALCUL DU RAYON DE TORSION : rt
- #    rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
-     if args.has_key('GROUP_MA_INTE'):
-       if args['GROUP_MA_INTE'] != None :
-         if type(args['GROUP_MA_INTE'])==types.StringType :
-           l_group_ma_inte=[args['GROUP_MA_INTE'],]
-         else:
-           l_group_ma_inte=args['GROUP_MA_INTE']
-         for i in range(0,len(l_group_ma_inte)):
-           __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
-                               DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[i]),
-                               INFO=2,)
-           __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
-                                          CHEMIN=__chem,
-                                          RESULTAT=__tempe1,
-                                          NOM_CHAM='FLUX_ELNO_TEMP',
-                                          TRAC_NOR='OUI',
-                                          NOM_CMP=('FLUX','FLUY'),
-                                          OPERATION='MOYENNE'))
-           __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
-           if __m1 > __rtext :
-             __rtext=__m1
-
-     __rt=__rtext
-         
-# --- CALCUL DE LA CONSTANTE DE TORSION :
-#     ---------------------------------
-
-     motscles={}
-     if args.has_key('GROUP_MA_INTE'):
-        lgmaint=args['GROUP_MA_INTE']
-        if lgmaint != None :
-           motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
-                                   LAPL_PHI=__tempe1,
-                                   RT=__rt,
-                                   TOUT='OUI',
-                                   OPTION='CARA_TORSION',
-                                   GROUP_MA_INTE=args['GROUP_MA_INTE'],)
-        else:
-           motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
-                                    LAPL_PHI=__tempe1,
-                                    RT=__rt,  
-                                    TOUT='OUI',
-                                    OPTION='CARA_TORSION',      )
-     nomres=POST_ELEM(reuse=nomres,
-                      MODELE=__nomoth,
-                      CHAM_MATER=__chmath,
-                      **motscles  )
-
-# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
-# --- CENTRE DE CISAILLEMENT/TORSION :
-#     ------------------------------
-
-     nomres=POST_ELEM(reuse=nomres,
-                      MODELE=__nomoth,
-                      CHAM_MATER=__chmath,
-                      CARA_POUTRE=_F(CARA_GEOM=nomres,
-                                     LAPL_PHI_Y=__tempe2,
-                                     LAPL_PHI_Z=__tempe3,
-                                     TOUT='OUI',
-                                     OPTION='CARA_CISAILLEMENT',),  )
-     
-
-#
-#     ------------------------------------------------------------
-# --- - CALCUL DE L INERTIE DE GAUCHISSEMENT PAR RESOLUTION  DE  -
-# --- -    LAPLACIEN(OMEGA) = 0     DANS LA SECTION              -
-# --- -    AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ   SUR LE               -
-# --- -    CONTOUR DE LA SECTION                                 -
-# --- -    NY ET NZ SONT LES COMPOSANTES DU VECTEUR N NORMAL     -
-# --- -    A CE CONTOUR                                          -
-# --- -    ET SOMME_S(OMEGA.DS) = 0                              -
-# --- -    OMEGA EST LA FONCTION DE GAUCHISSEMENT                -
-# --- -    L INERTIE DE GAUCHISSEMENT EST SOMME_S(OMEGA**2.DS)   -
-#     ------------------------------------------------------------
-#
-# --- CREATION D UN MAILLAGE DONT LES COORDONNEES SONT EXPRIMEES
-# --- DANS LE REPERE PRINCIPAL D INERTIE MAIS AVEC COMME ORIGINE
-# --- LE CENTRE DE TORSION DE LA SECTION, ON VA DONC UTILISER
-# --- LE MAILLAGE DE NOM NOMAPI DONT LES COORDONNEES SONT
-# --- EXPRIMEES DANS LE REPERE PRINCIPAL D'INERTIE, L'ORIGINE
-# --- ETANT LE CENTRE DE GRAVITE DE LA SECTION (QUI EST DONC
-# --- A CHANGER)  :
-#     ----------
-
-     __nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi,
-                            REPERE=_F(TABLE=nomres,
-                                      NOM_ORIG='TORSION',)  )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-#     ------------------------------------------------------
-
-     __nomot2=AFFE_MODELE(MAILLAGE=__nomapt,
-                          AFFE=_F(TOUT='OUI',
-                                  PHENOMENE='THERMIQUE',
-                                  MODELISATION='PLAN', )  )
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-#     ---------------------------------------------------------
-
-     __chmat2=AFFE_MATERIAU(MAILLAGE=__nomapt,
-                            AFFE=_F(TOUT='OUI',
-                                    MATER=__nomath, ), )
-
-# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
-# --- LA COMPOSANTE SELON Y DU FLUX A IMPOSER SUR LE CONTOUR
-# --- PAR UNE FONCTION EGALE A -X :
-#     ---------------------------
-
-     __fnsec3=DEFI_FONCTION(NOM_PARA='X',
-                            VALE=(0.,0.,10.,-10.),
-                            PROL_DROITE='LINEAIRE',
-                            PROL_GAUCHE='LINEAIRE',
-                           )
-
-# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
-# --- LA COMPOSANTE SELON X DU FLUX A IMPOSER SUR LE CONTOUR
-# --- PAR UNE FONCTION EGALE A Y :
-#     --------------------------
-
-     __fnsec4=DEFI_FONCTION(NOM_PARA='Y',
-                            VALE=(0.,0.,10.,10.),
-                            PROL_DROITE='LINEAIRE',
-                            PROL_GAUCHE='LINEAIRE',
-                           )
-
-# --- DANS LE BUT D IMPOSER LA RELATION LINEAIRE ENTRE DDLS
-# ---  SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL)
-# --- ON CALCULE LE VECTEUR DE CHARGEMENT DU A UN TERME SOURCE EGAL
-# --- A 1., LES TERMES DE CE VECTEUR SONT EGAUX A
-# --- SOMME_SECTION(NI.DS) ET SONT DONC LES COEFFICIENTS DE
-# --- LA RELATION LINEAIRE A IMPOSER.
-# --- ON DEFINIT DONC UN CHARGEMENT DU A UN TERME SOURCE EGAL A 1 :
-#     -----------------------------------------------------------
-
-     __chart4=AFFE_CHAR_THER(MODELE=__nomot2,
-                             SOURCE=_F(TOUT='OUI',
-                                       SOUR=1.0),  )
-
-# --- ON CALCULE LE VECT_ELEM DU AU CHARGEMENT PRECEDENT
-# --- IL S AGIT DES VECTEURS ELEMENTAIRES DONT LE TERME
-# --- AU NOEUD COURANT I EST EGAL A SOMME_SECTION(NI.DS) :
-#     --------------------------------------------------
-
-     __vecel=CALC_VECT_ELEM(CHARGE=__chart4,
-                            OPTION='CHAR_THER'
-                            )
-
-# --- ON CALCULE LE MATR_ELEM DES MATRICES ELEMENTAIRES
-# --- DE CONDUCTIVITE UNIQUEMENT POUR GENERER LE NUME_DDL
-# --- SUR-LEQUEL S APPUIERA LE CHAMNO UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-#     ----------------------------
-
-     __matel=CALC_MATR_ELEM(MODELE=__nomot2,
-                            CHAM_MATER=__chmat2,
-                            CHARGE=__chart4,
-                            OPTION='RIGI_THER',)
-
-# --- ON DEFINIT LE NUME_DDL ASSOCIE AU MATR_ELEM DEFINI
-# --- PRECEDEMMENT POUR CONSTRUIRE LE CHAMNO UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-#     ----------------------------
-
-     __numddl=NUME_DDL(MATR_RIGI=__matel,
-                       METHODE='LDLT',    )
-
-# --- ON CONSTRUIT LE CHAMNO QUI VA ETRE UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-#     ----------------------------
-
-     __chamno=ASSE_VECTEUR(VECT_ELEM=__vecel,
-                           NUME_DDL=__numddl,    )
-
-# --- ON IMPOSE LA RELATION LINEAIRE ENTRE DDLS
-# ---  SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL)
-# --- POUR IMPOSER CETTE RELATION ON PASSE PAR LIAISON_CHAMNO,
-# --- LES TERMES DU CHAMNO (I.E. SOMME_SECTION(NI.DS))
-# --- SONT LES COEFFICIENTS DE LA RELATION LINEAIRE :
-#     ---------------------------------------------
-
-     __chart5=AFFE_CHAR_THER(MODELE=__nomot2,
-                             LIAISON_CHAMNO=_F(CHAM_NO=__chamno,
-                                               COEF_IMPO=0.),    )
-
-# --- LE CHARGEMENT EST UN FLUX REPARTI NORMAL AU CONTOUR
-# --- DONT LES COMPOSANTES SONT +Z (I.E. +Y) ET -Y (I.E. -X)
-# --- SELON LA DIRECTION NORMALE AU CONTOUR :
-#     -------------------------------------
-
-     __chart6=AFFE_CHAR_THER_F(MODELE=__nomot2,
-                               FLUX_REP=_F(GROUP_MA=GROUP_MA_BORD,
-                                           FLUX_X  =__fnsec4,
-                                           FLUX_Y  =__fnsec3,),    )
-
-# --- RESOLUTION DE     LAPLACIEN(OMEGA) = 0
-# --- AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ   SUR LE CONTOUR DE LA SECTION
-# --- ET SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL)  :
-#     -------------------------------
-
-     __tempe4=THER_LINEAIRE(MODELE=__nomot2,
-                            CHAM_MATER=__chmat2,
-                            EXCIT=(_F(CHARGE=__chart5,),
-                                   _F(CHARGE=__chart6,),),
-                            SOLVEUR=_F(METHODE='LDLT',
-                                       RENUM='SANS',
-                                       STOP_SINGULIER='NON',),   )
-    
-# --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
-#     -------------------------------------
-
-     nomres=POST_ELEM(reuse=nomres,
-                      MODELE=__nomot2,
-                      CHAM_MATER=__chmat2,
-                      CARA_POUTRE=_F(CARA_GEOM=nomres,
-                                     LAPL_PHI=__tempe4,
-                                     TOUT='OUI',
-                                     OPTION='CARA_GAUCHI'),  )
-
-     
-#
-#     ==================================================================
-# --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE            =
-# --- =     ET DU RAYON DE TORSION SUR CHAQUE GROUPE                   =
-# --- =        DU  CENTRE DE TORSION/CISAILLEMENT                      =
-# --- =        DES COEFFICIENTS DE CISAILLEMENT                        =
-#     ==================================================================
-
-
-#
-
-
-  if GROUP_MA_BORD and GROUP_MA:
-
-     if type(GROUP_MA_BORD)==types.StringType :
-        l_group_ma_bord=[GROUP_MA_BORD,]
-     else:
-        l_group_ma_bord= GROUP_MA_BORD
-     if type(GROUP_MA)==types.StringType :
-        l_group_ma=[GROUP_MA,]
-     else:
-        l_group_ma= GROUP_MA
-
-     if args.has_key('NOEUD'):
-       if type(args['NOEUD'])==types.StringType :
-          l_noeud=[args['NOEUD'],]
-       else:
-          l_noeud= args['NOEUD']
-
-     if len(l_group_ma)!=len(l_group_ma_bord):
-        ier=ier+1
-        self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et GROUP_MA_BORD incoherents")
-        return ier
-     if args.has_key('NOEUD') and (len(l_group_ma)!=len(l_noeud)):
-        ier=ier+1
-        self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et NOEUD incoherents")
-        return ier
-
-     for i in range(0,len(l_group_ma_bord)):
-
-# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
-# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
-#     ---------------------------------------------------------
-
-        __nomlma=DEFI_GROUP(reuse=__nomlma,
-                            MAILLAGE=__nomlma,
-                            CREA_GROUP_NO=_F(GROUP_MA=l_group_ma_bord[i],)  )
-
-
-# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
-# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
-# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
-#     ---------------------------------------------------------------
-
-        __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
-                               REPERE=_F(TABLE=nomres,
-                                         NOM_ORIG='CDG',
-                                         GROUP_MA=l_group_ma[i],  ),  )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-#     ------------------------------------------------------
-
-        __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
-                             AFFE=_F(GROUP_MA=l_group_ma[i],
-                                     PHENOMENE='THERMIQUE',
-                                     MODELISATION='PLAN',  )  )
-
-# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON  DEFINIT UN
-# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
-# --- LAMBDA = 1, RHO*CP = 0 :
-#     ----------------------
-
-        __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,
-                                       RHO_CP=0.0,  ),  )
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-#     ---------------------------------------------------------
-
-        __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
-                               AFFE=_F(TOUT='OUI',
-                                       MATER=__nomath ),  )
-
-#
-#     ------------------------------------------------------------
-# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION         -
-# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2            -
-# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION :    -
-# --- -    LAPLACIEN(PHI) = -2 DANS LA SECTION                   -
-# --- -    PHI = 0 SUR LE CONTOUR :                              -
-#     ------------------------------------------------------------
-#
-# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
-# --- DE LA SECTION
-# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
-#     -------------------------------------------------------
-
-        __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
-                                TEMP_IMPO=_F(GROUP_NO=l_group_ma_bord[i],
-                                             TEMP=0.0       ),
-                                SOURCE=_F(TOUT='OUI',
-                                          SOUR=2.0       )          )
-
-# --- RESOLUTION DE     LAPLACIEN(PHI) = -2
-# ---              AVEC PHI = 0 SUR LE CONTOUR :
-#     ----------------------------------------
-
-        __tempe1=THER_LINEAIRE(MODELE=__nomoth,
-                               CHAM_MATER=__chmath,
-                               EXCIT=_F(CHARGE=__chart1, ),
-                               SOLVEUR=_F(STOP_SINGULIER='NON',)    )
-
-#
-#     ----------------------------------------------
-# --- - CALCUL DU  CENTRE DE TORSION/CISAILLEMENT  -
-# --- - ET DES COEFFICIENTS DE CISAILLEMENT :      -
-#     ----------------------------------------------
-#
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Y :
-#     --------------------------
-
-        __fnsec1=DEFI_FONCTION(NOM_PARA='X',
-                               VALE=(0.,0.,10.,10.),
-                               PROL_DROITE='LINEAIRE',
-                               PROL_GAUCHE='LINEAIRE',        )
-
-        __fnsec0=DEFI_CONSTANTE(VALE=0.,)
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
-#     --------------------------------------------------
-
-        __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
-                                  TEMP_IMPO=_F(NOEUD=l_noeud[i],
-                                               TEMP=__fnsec0),
-                                  SOURCE=_F(TOUT='OUI',
-                                            SOUR=__fnsec1)       )
-
-# --- RESOLUTION DE     LAPLACIEN(PHI) = -Y
-# ---              AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-#     ------------------------------------------------
-
-        __tempe2=THER_LINEAIRE(MODELE=__nomoth,
-                               CHAM_MATER=__chmath,
-                               EXCIT=_F(CHARGE=__chart2, ),
-                               SOLVEUR=_F(STOP_SINGULIER='NON',)         )
-
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Z :
-#     --------------------------
-
-        __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
-                               VALE=(0.,0.,10.,10.),
-                               PROL_DROITE='LINEAIRE',
-                               PROL_GAUCHE='LINEAIRE',        )
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
-#     --------------------------------------------------
-
-        __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
-                                  TEMP_IMPO=_F(NOEUD=l_noeud[i],
-                                               TEMP=__fnsec0),
-                                  SOURCE=_F(TOUT='OUI',
-                                            SOUR=__fnsec2)       )
-
-# --- RESOLUTION DE     LAPLACIEN(PHI) = -Z
-# ---              AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-#     ------------------------------------------------
-
-        __tempe3=THER_LINEAIRE(MODELE=__nomoth,
-                               CHAM_MATER=__chmath,
-                               EXCIT=_F(CHARGE=__chart3, ),
-                               SOLVEUR=_F(STOP_SINGULIER='NON',)         )
-        
-# --- CALCUL DU RAYON DE TORSION :
-#     --------------------------
-
-#    CALCUL DU RAYON DE TORSION EXTERNE : rtext
-
-        __tempe1=CALC_ELEM(reuse=__tempe1,
-                            RESULTAT=__tempe1,
-                            MODELE=__nomoth,
-                            CHAM_MATER=__chmath,
-                            TOUT_ORDRE='OUI',
-                            OPTION='FLUX_ELNO_TEMP',
-                           )
-
-        __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
-                            DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_bord[i]),
-                            INFO=2,)
-
-        __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
-                                       CHEMIN=__chem,
-                                       RESULTAT=__tempe1,
-                                       NOM_CHAM='FLUX_ELNO_TEMP',
-                                       TRAC_NOR='OUI',
-                                       NOM_CMP=('FLUX','FLUY'),
-                                       OPERATION='MOYENNE'))
-
-        __m1=abs(__flun['TRAC_NOR',3])
-        __m2=abs(__flun['TRAC_NOR',4])
-        __rtext=max(__m1,__m2)
-
-#    CALCUL DU RAYON DE TORSION : rt
-#    rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
-
-        if args.has_key('GROUP_MA_INTE'):
-          if args['GROUP_MA_INTE'] != None :
-            if type(args['GROUP_MA_INTE'])==types.StringType :
-              l_group_ma_inte=[args['GROUP_MA_INTE'],]
-            else:
-              l_group_ma_inte=args['GROUP_MA_INTE']
-            for j in range(0,len(l_group_ma_inte)):
-              __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
-                                  DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[j]),
-                                  INFO=2,)
-              __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
-                                             CHEMIN=__chem,
-                                             RESULTAT=__tempe1,
-                                             NOM_CHAM='FLUX_ELNO_TEMP',
-                                             TRAC_NOR='OUI',
-                                             NOM_CMP=('FLUX','FLUY'),
-                                             OPERATION='MOYENNE'))        
-              __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
-              if __m1 > __rtext :
-                __rtext=__m1
-
-        __rt=__rtext
-                
-# --- CALCUL DE LA CONSTANTE DE TORSION :
-#     ---------------------------------
-             
-        nomres=POST_ELEM(reuse=nomres,
-                         MODELE=__nomoth,
-                         CHAM_MATER=__chmath,
-                         CARA_POUTRE=_F(CARA_GEOM=nomres,
-                                        LAPL_PHI=__tempe1,
-                                        RT=__rt,
-                                        GROUP_MA=l_group_ma[i],
-                                        OPTION='CARA_TORSION' ),     )
-
-# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
-# --- CENTRE DE CISAILLEMENT/TORSION :
-#     ------------------------------
-
-        nomres=POST_ELEM(reuse=nomres,
-                         MODELE=__nomoth,
-                         CHAM_MATER=__chmath,
-                         CARA_POUTRE=_F(CARA_GEOM=nomres,
-                                        LAPL_PHI_Y=__tempe2,
-                                        LAPL_PHI_Z=__tempe3,
-                                        GROUP_MA=l_group_ma[i],
-                                        LONGUEUR=args['LONGUEUR'],
-                                        MATERIAU=args['MATERIAU'],
-                                        LIAISON =args['LIAISON'],
-                                        OPTION='CARA_CISAILLEMENT' ),   )
-  IMPR_TABLE(TABLE=nomres)
-
-  return ier
diff --git a/Aster/Cata/Macro/macr_ecla_pg_ops.py b/Aster/Cata/Macro/macr_ecla_pg_ops.py
deleted file mode 100644 (file)
index 8bfada7..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#@ MODIF macr_ecla_pg_ops Macro  DATE 09/11/2004   AUTEUR VABHHTS 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.        
-# ======================================================================
-
-########################################################################
-def macr_ecla_pg_ops(self,RESULTAT,MAILLAGE,RESU_INIT,MODELE_INIT,
-                     TOUT, GROUP_MA, MAILLE,
-                     SHRINK, TAILLE_MIN,
-                     NOM_CHAM, TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, INST, LIST_INST, PRECISION, CRITERE,  
-                     **args):
-    """
-       Ecriture de la macro macr_ecla_pg
-    """
-    import os, string
-    from Accas import _F
-    from Noyau.N_utils import AsType
-    ier=0
-
-    # On importe les definitions des commandes a utiliser dans la macro
-    CREA_MAILLAGE  =self.get_cmd('CREA_MAILLAGE')
-    CREA_RESU      =self.get_cmd('CREA_RESU')
-
-
-    # La macro compte pour 1 dans la numerotation des commandes
-    self.set_icmd(1)
-    
-
-    # Appel à CREA_MAILLAGE :
-    motscles={}
-    if   TOUT      : motscles['TOUT']       =TOUT
-    if   GROUP_MA  : motscles['GROUP_MA']   =GROUP_MA
-    if   MAILLE    : motscles['MAILLE']     =MAILLE
-    
-    self.DeclareOut('ma2',MAILLAGE)
-    ma2=CREA_MAILLAGE(ECLA_PG=_F( MODELE = MODELE_INIT,  NOM_CHAM=NOM_CHAM,
-                                  SHRINK = SHRINK, TAILLE_MIN=TAILLE_MIN, **motscles ));
-                                   
-                                   
-
-    # Appel à CREA_RESU :
-    typ2=AsType(RESU_INIT).__name__ 
-    if   TOUT_ORDRE    : motscles['TOUT_ORDRE']     =TOUT_ORDRE
-    if   NUME_ORDRE    : motscles['NUME_ORDRE']     =NUME_ORDRE
-    if   LIST_ORDRE    : motscles['LIST_ORDRE']     =LIST_ORDRE
-    if   LIST_INST     : motscles['LIST_INST']      =LIST_INST
-    if   INST          : motscles['INST']           =INST
-    if   TOUT_ORDRE    : motscles['TOUT_ORDRE']     =TOUT_ORDRE
-
-    self.DeclareOut('resu2',RESULTAT)
-    resu2=CREA_RESU( OPERATION='ECLA_PG', TYPE_RESU=string.upper(typ2),
-                    ECLA_PG=_F( MODELE_INIT= MODELE_INIT, RESU_INIT=RESU_INIT, NOM_CHAM=NOM_CHAM,
-                                MAILLAGE= ma2, **motscles ));
-    return ier                                                           
-############################################################################################
-
diff --git a/Aster/Cata/Macro/macr_fiab_impr_ops.py b/Aster/Cata/Macro/macr_fiab_impr_ops.py
deleted file mode 100644 (file)
index 08ac8d1..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#@ MODIF macr_fiab_impr_ops Macro  DATE 24/01/2005   AUTEUR DURAND C.DURAND 
-# -*- 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.        
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_fiab_impr_ops(self, INFO,
-                       TABLE_CIBLE, NOM_PARA_CIBLE, GRADIENTS, **args):
-#
-#
-#  1. args est le dictionnaire des arguments
-#    args.keys() est la liste des mots-clés
-#    args.keys()[0] est la premiere valeur de cette liste
-#    args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-#    args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-#
-  """ Macro-commande réalisant l'impression des valeurs pour le logiciel de fiabilite. """
-#
-# On charge les modules nécessaires
-  from Accas import _F
-#
-#____________________________________________________________________
-#
-# 1. Préalables
-#____________________________________________________________________
-#
-  erreur = 0
-#
-# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
-#
-  self.set_icmd(1)
-#
-# 1.2 ==> On importe les définitions des commandes Aster utilisées
-#         dans la macro
-#
-  DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
-  IMPR_TABLE   = self.get_cmd("IMPR_TABLE")
-#
-# 1.3. ==> Des constantes
-#          Atention : le numéro d'unité utilisé ici et celui
-#                     utlisé dans le python d'échange lance_aster_5
-#                     doivent correspondre.
-#
-  Unite_Fichier_ASTER_vers_FIABILITE = 91
-  Nom_Symbolique_Fichier_ASTER_vers_FIABILITE = "ASTER_vers_FIABILITE"
-  FORMAT_R="1PE17.10"
-#____________________________________________________________________
-#
-# 2. Définition d'un fichier d'échange
-#____________________________________________________________________
-# 
-  DEFI_FICHIER ( ACTION= "ASSOCIER",
-#                FICHIER = Nom_Symbolique_Fichier_ASTER_vers_FIABILITE,
-                 UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
-                 TYPE = "ASCII",
-                 INFO = INFO )
-#____________________________________________________________________
-#
-# 4. Ecriture de la valeur cible
-#____________________________________________________________________
-#
-  IMPR_TABLE ( TABLE = TABLE_CIBLE,
-               NOM_PARA = NOM_PARA_CIBLE,
-               UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
-               FORMAT_R = FORMAT_R,
-               INFO = INFO )
-#____________________________________________________________________
-#
-# 5. Ecritures des gradients
-#____________________________________________________________________
-#
-  if GRADIENTS is not None :
-#
-    for val in GRADIENTS :
-#
-      IMPR_TABLE ( TABLE = val["TABLE"],
-                   SENSIBILITE = val["PARA_SENSI"],
-                   NOM_PARA = (val["NOM_PARA"]),
-                   UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
-                   FORMAT_R = FORMAT_R,
-                   INFO = INFO )
-#____________________________________________________________________
-#
-# 6. Libération du fichier d'échange
-#____________________________________________________________________
-# 
-  DEFI_FICHIER ( ACTION= "LIBERER",
-                 UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
-                 INFO = INFO )
-#
-#--------------------------------------------------------------------
-# 7. C'est fini !
-#--------------------------------------------------------------------
-#
-  return erreur
diff --git a/Aster/Cata/Macro/macr_fiabilite_ops.py b/Aster/Cata/Macro/macr_fiabilite_ops.py
deleted file mode 100644 (file)
index 62a10eb..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-#@ MODIF macr_fiabilite_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- 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.        
-# ======================================================================
-
-
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_fiabilite_ops(self, INFO,
-                       LOGICIEL, VERSION,
-                       UNITE_ESCL, MESS_ASTER,
-                       SEUIL, SEUIL_TYPE,
-                       VARIABLE,
-                       **args ) :
-#
-#    args est le dictionnaire des arguments optionnels
-#    args.keys() est la liste des mots-clés
-#    args.keys()[0] est la premiere valeur de cette liste
-#    args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-#    args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-###  print args
-###  print args.keys()
-###  if len (args.keys())>0 : print args.keys()[0]
-#
-  """ Macro-commande réalisant le pilotage du logiciel de fiabilite. """
-#
-# On charge les modules nécessaires
-  from Accas import _F
-  from Macro import fiabilite_mefisto
-  import aster
-  import os
-  import string
-  import sys
-  import Numeric
-#
-#____________________________________________________________________
-#
-# 1. Préalables
-#____________________________________________________________________
-#
-# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
-#
-  self.set_icmd(1)
-#
-# 1.2 ==> On importe les définitions des commandes Aster utilisées
-#         dans la macro
-#
-  EXEC_LOGICIEL  = self.get_cmd("EXEC_LOGICIEL")
-  DEFI_LIST_REEL = self.get_cmd("DEFI_LIST_REEL")
-#
-# 1.3 ==> Le nom du programme de fiabilite à lancer
-#
-  repertoire_outils = aster.repout()
-  fiabilite      = repertoire_outils + "fiabilite"
-#
-# 1.4 ==> Initialisations
-#
-  erreur = 0
-  erreur_partiel = [0]
-  Rep_Calc_ASTER = os.getcwd()
-  Nom_Exec_ASTER = sys.executable
-#
-  messages_erreur = { 0 : "Tout va bien",
-                      1 : "Impossible de créer le répertoire de travail pour le logiciel de fiabilité.",
-                      2 : "Probleme d'ouverture du fichier.",
-                     10 : "Erreur dans le choix du logiciel de fiabilité.",
-                     11 : "Erreur dans la création des données pour le logiciel de fiabilité.",
-                    100 : "Erreur." }
-#
-  while not erreur :
-#
-#____________________________________________________________________
-#
-# 2. Répertoires et fichiers
-#____________________________________________________________________
-#
-# 2.1. ==> Création du répertoire pour l'exécution du logiciel de fiabilité
-#
-    Nom_Rep_local = "tmp_fiabilite"
-    Rep_Calc_LOGICIEL_local = os.path.join(".",Nom_Rep_local)
-    Rep_Calc_LOGICIEL_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
-#
-    try :
-      os.mkdir(Rep_Calc_LOGICIEL_global)
-    except os.error,erreur_partiel :
-      self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
-      self.cr.fatal("Impossible de créer le répertoire de travail pour le logiciel de fiabilité : "+Rep_Calc_LOGICIEL_global)
-      erreur = erreur + 1
-      break
-#
-# 2.2. ==> On crée un fichier annexe pour transmettre des données à la procédure
-#          de lancement des calculs ASTER par le LOGICIEL.
-#          Ce fichier est créé dans le répertoire d'exécution du logiciel de fiabilité.
-#          On fait ainsi car les arguments passés ont du mal à transiter via l'exécutable.
-#          On stocke :
-#          1. Le niveau d'information
-#          2. L'unité logique associée au jeu de commandes déterministes
-#          3. La gestion des sorties ASTER
-#          4. Le nom de l'exécutable ASTER
-#          5. Le type de seuil du problème (maximum ou minimum)
-#
-    fic_Info_ASTER = os.path.join(Rep_Calc_LOGICIEL_global,"InfoExecASTER")
-    try :
-      f_execAster = open(fic_Info_ASTER, "w")
-    except os.error,erreur_partiel :
-      self.cr.warn("Fichier : "+fic_Info_ASTER)
-      self.cr.warn("Code d'erreur de open : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
-      erreur = 2
-      break
-#
-    f_execAster.write(str(INFO)+"\n")
-    f_execAster.write(str(UNITE_ESCL)+"\n")
-    f_execAster.write(str(MESS_ASTER)+"\n")
-    f_execAster.write(str(Nom_Exec_ASTER)+"\n")
-    f_execAster.write(str(SEUIL_TYPE))
-    f_execAster.close()
-    fichier = open (fic_Info_ASTER,"r")
-#
-    if INFO >= 2 :
-      print "\nContenu du fichier " + fic_Info_ASTER," :"
-      les_lignes = fichier.readlines()
-      fichier.close()
-      print les_lignes, "\n"
-#
-#____________________________________________________________________
-#
-# 3. Les variables par defaut
-#____________________________________________________________________
-#
-# 3.1. ==> Dictionnaire des valeurs physiques et liées à la loi
-#
-    valeurs_lois = { }
-#
-    for m in VARIABLE :
-#
-      v_moy_physique = None
-      v_moy_loi = None
-      v_min_loi = None
-      v_max_loi = None
-      sigma_loi = None
-#
-# 3.1.1. ==> loi uniforme : transfert des min et max
-#            on définit une moyennne comme étant la médiane des extremes.
-#
-      if m["LOI"] == "UNIFORME" :
-        v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
-        v_min_loi = m["VALE_MIN"]
-        v_max_loi = m["VALE_MAX"]
-#
-# 3.1.2. ==> loi normale : transfert des moyennne et écart-type.
-#
-      elif m["LOI"] == "NORMALE" :
-        v_moy_loi = m["VALE_MOY"]
-        v_moy_physique = v_moy_loi
-        sigma_loi = m["ECART_TYPE"]
-#
-# 3.1.3. ==> loi lognormale : identité du min, conversion pour le reste
-#
-      elif m["LOI"] == "LOGNORMALE" :
-        v_min_loi = m["VALE_MIN"]
-        if m["VALE_MOY_PHY"] is None :
-          v_moy_loi = m["VALE_MOY"]
-          sigma_loi = m["ECART_TYPE"]
-          aux = Numeric.exp(0.5*sigma_loi*sigma_loi+v_moy_loi)
-          v_moy_physique = v_min_loi + aux
-        else :
-          v_moy_physique = m["VALE_MOY_PHY"]
-          aux = m["ECART_TYPE_PHY"]/(m["VALE_MOY_PHY"]-m["VALE_MIN"])
-          aux1 = 1. + aux*aux
-          aux2 = Numeric.sqrt(aux1)
-          v_moy_loi = Numeric.log((m["VALE_MOY_PHY"]-m["VALE_MIN"])/aux2)
-          aux2 = Numeric.log(aux1)
-          sigma_loi = Numeric.sqrt(aux2)
-#
-# 3.1.4. ==> loi normale tronquée : transfert des moyenne, mini/maxi et écart-type
-#            on définit une moyennne comme étant la médiane des extremes.
-#
-      else :
-        v_moy_loi = m["VALE_MOY"]
-        v_min_loi = m["VALE_MIN"]
-        v_max_loi = m["VALE_MAX"]
-        sigma_loi = m["ECART_TYPE"]
-        v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
-#
-      d = { }
-      d["v_moy_physique"] = v_moy_physique
-      d["v_moy_loi"] = v_moy_loi
-      d["v_min_loi"] = v_min_loi
-      d["v_max_loi"] = v_max_loi
-      d["sigma_loi"] = sigma_loi
-      valeurs_lois[m] = d
-#
-#____________________________________________________________________
-#
-# 4. Création des fichiers pour le logiciel de fiabilite
-#____________________________________________________________________
-#
-    if ( LOGICIEL == "MEFISTO" ) :
-#
-# 4.1. ==> MEFISTO
-#
-      erreur = fiabilite_mefisto.fiabilite_mefisto ( self, Rep_Calc_LOGICIEL_global,
-                                                     INFO, VERSION,
-                                                     SEUIL, SEUIL_TYPE,
-                                                     VARIABLE,
-                                                     valeurs_lois,
-                                                     **args )
-#
-# 4.2. ==> Erreur si autre logiciel
-#
-    else :
-#
-     self.cr.warn("Logiciel de fiabilité : "+LOGICIEL)
-     erreur = 10
-#
-# 4.3. ==> Arret en cas d'erreur
-#
-    if erreur :
-      break
-#
-#____________________________________________________________________
-#
-# 5. Ecriture de la commande d"exécution du logiciel de fiabilité
-#
-#   Remarque : dans la donnée de la version du logiciel de fiabilité, il faut remplacer
-#              le _ de la donnée par un ., qui
-#              est interdit dans la syntaxe du langage de commandes ASTER
-#   Remarque : il faut remplacer le N majuscule de la donnee par
-#              un n minuscule, qui est interdit dans la syntaxe du langage
-#              de commandes ASTER
-#____________________________________________________________________
-#
-#
-    VERSION=string.replace(VERSION,"_",".")
-    VERSION=string.replace(VERSION,"N","n")
-#
-    EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_LOGICIEL_global), # nom du repertoire
-                                _F(NOM_PARA=LOGICIEL),             # nom du logiciel de fiabilité
-                                _F(NOM_PARA=VERSION),         # version du logiciel de fiabilité
-                               ),
-                    LOGICIEL = fiabilite
-                   )
-#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
-#
-    break
-#
-# 6.1. ==> Arret en cas d'erreur
-#
-  if erreur :
-    if not messages_erreur.has_key(erreur) :
-      erreur = 100
-    self.cr.fatal(messages_erreur[erreur])
-#
-# 6.2. ==> Si tout va bien, on crée une liste de réels pour le retour
-#          A terme, il serait intéressant d'y mettre les résultats
-#          de l'analyse fiabiliste. Pour le moment, on se contente de
-#          mettre une valeur nulle qui permet de faire un test dans
-#          les commandes appelantes.
-#
-  aux = [float(erreur)]
-#
-  self.DeclareOut("nomres",self.sd)
-  nomres = DEFI_LIST_REEL( VALE = aux , INFO = 1 )
-#
-  return
-#
-##########################  Fin de la fonction##################################
-#
-##########################   Auto-test##################################
-#
-if __name__ == "__main__" :
-#
-  import os
-  import sys
-  import tempfile
-#
-  Rep_Calc_LOGICIEL_global = tempfile.mktemp()
-  os.mkdir(Rep_Calc_LOGICIEL_global)
-#
-  classe = None
-  INFO = 2
-  LOGICIEL = "MEFISTO"
-  VERSION = "V3_2"
-  UNITE_ESCL = 38
-  MESS_ASTER = "DERNIER"
-  SEUIL = 1789.
-  SEUIL_TYPE = "MAXIMUM"
-  VARIABLE = []
-  args = {}
-#
-  lr8 = macr_fiabilite_ops(classe, INFO,
-                       LOGICIEL, VERSION,
-                       UNITE_ESCL, MESS_ASTER,
-                       SEUIL, SEUIL_TYPE,
-                       VARIABLE,
-                       **args )
-###  print "lr8 = ", lr8
-  Liste = os.listdir(Rep_Calc_LOGICIEL_global)
-#
-  for nomfic in Liste :
-    fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
-    os.chmod  (fic_total,0755)
-    os.remove (fic_total)
-  os.rmdir (Rep_Calc_LOGICIEL_global)
-#
-  sys.exit("blabla")
diff --git a/Aster/Cata/Macro/macr_lign_coupe_ops.py b/Aster/Cata/Macro/macr_lign_coupe_ops.py
deleted file mode 100644 (file)
index 107ec4a..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-#@ MODIF macr_lign_coupe_ops Macro  DATE 14/02/2005   AUTEUR DURAND C.DURAND 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# 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.
-# ======================================================================
-
-
-
-########################################################################
-# script PYTHON de creation d un maillage de ligne de coupe
-
-def crea_mail_lig_coup(dimension,lignes,groups):
-
-  import os,sys,copy
-
-# construction du maillage au format Aster des segments de lignes de coupe
-
-  nblig=len(lignes)
-  nbngr=len(groups)
-
-  resu='TITRE\n'
-  titre='Maillage ligne de coupe'+'\n'
-  resu=resu+'FINSF\n'
-  resu=resu+'COOR_'+str(dimension)+'D\n'
-
-# creation des noeuds
-  nbno=0
-  for i in range(nblig):
-    pt1           = lignes[i][0]
-    pt2           = lignes[i][1]
-    nbp_lig_coupe = lignes[i][2]
-    for j in range(nbp_lig_coupe):
-      if dimension==2:
-        x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
-        y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
-        nbno=nbno+1
-        noeud='  N'+str(nbno)+'   '+str(x)+'    '+str(y)+'\n'
-        resu=resu+noeud
-      elif dimension==3:
-        x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
-        y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
-        z=pt1[2]+j*(pt2[2]-pt1[2])/(nbp_lig_coupe-1)
-        nbno=nbno+1
-        noeud='  N'+str(nbno)+'   '+str(x)+'   '+str(y)+'   '+str(z)+'\n'
-        resu=resu+noeud
-  for i in range(nbngr):
-    for pt in groups[i][1:]:
-      if dimension==2:
-        nbno=nbno+1
-        noeud='  N'+str(nbno)+' '+str(pt[0])+'    '+str(pt[1])+'\n'
-        resu=resu+noeud
-      elif dimension==3:
-        nbno=nbno+1
-        noeud='  N'+str(nbno)+' '+str(pt[0])+'    '+str(pt[1])+'    '+str(pt[2])+'\n'
-        resu=resu+noeud
-  resu=resu+'FINSF\n'
-
-# creation des mailles
-  nbma=0
-  for i in range(nblig):
-    nbp_lig_coupe = lignes[i][2]
-    resu=resu+'SEG2\n'
-    for j in range(nbp_lig_coupe-1):
-        nbma=nbma+1
-        maille='  M'+str(nbma)+' N'+str(nbma+i)+' N'+str(nbma+1+i)+'\n'
-        resu=resu+maille
-    resu=resu+'FINSF\n'
-  for i in range(nbngr):
-    resu=resu+'SEG2\n'
-    for pt in groups[i][1:-1]:
-        nbma=nbma+1
-        maille='  M'+str(nbma)+' N'+str(nbma+nblig+i)+' N'+str(nbma+nblig+1+i)+'\n'
-        resu=resu+maille
-    resu=resu+'FINSF\n'
-
-# creation des groupes de mailles (1 par ligne de coupe)
-  nbma=0
-  for i in range(nblig):
-    resu=resu+'GROUP_MA\n'
-    resu=resu+'  LICOU'+str(i+1)
-    nbp_lig_coupe = lignes[i][2]
-    for j in range(nbp_lig_coupe-1):
-        nbma=nbma+1
-        resu=resu+'  M'+str(nbma)+'\n'
-    resu=resu+'\n'
-    resu=resu+'FINSF\n'
-  for i in range(nbngr):
-    resu=resu+'GROUP_MA\n'
-    resu=resu+groups[i][0]
-    nbp_lig_coupe = len(groups[i])-1
-    for j in range(nbp_lig_coupe-1):
-        nbma=nbma+1
-        resu=resu+'  M'+str(nbma)+'\n'
-    resu=resu+'\n'
-    resu=resu+'FINSF\n'
-  resu=resu+'FIN\n'
-
-  return resu
-
-
-########################################################################
-def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,MODELE,**args):
-  """
-     Ecriture de la macro MACR_LIGN_COUPE
-  """
-  import os,string,types
-  from Accas import _F
-  from Noyau.N_utils import AsType
-  import aster
-  ier=0
-
-  # On importe les definitions des commandes a utiliser dans la macro
-  LIRE_MAILLAGE  =self.get_cmd('LIRE_MAILLAGE')
-  DEFI_GROUP     =self.get_cmd('DEFI_GROUP')
-  AFFE_MODELE    =self.get_cmd('AFFE_MODELE')
-  PROJ_CHAMP     =self.get_cmd('PROJ_CHAMP')
-  POST_RELEVE_T  =self.get_cmd('POST_RELEVE_T')
-  CREA_TABLE     =self.get_cmd('CREA_TABLE')
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  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:
-       ier=ier+1
-       self.cr.fatal("<F> <MACR_LIGN_COUPE> nom du modele absent dans le concept resultat "+nomresu)
-       return ier
-     else : n_modele=MODELE.nom
-  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')
-
-  lignes=[]
-  groups=[]
-  minidim=dime
-  for m in LIGN_COUPE :
-      if m['NB_POINTS'] !=None :
-         lignes.append((m['COOR_ORIG'],m['COOR_EXTR'],m['NB_POINTS']))
-         minidim=min(minidim,len(m['COOR_ORIG']),len(m['COOR_EXTR']))
-      elif m['GROUP_NO']!=None :
-        ngrno=m['GROUP_NO'].ljust(8).upper()
-        if ngrno not in collgrno.keys() :
-          ier=ier+1
-          self.cr.fatal("<F> <MACR_LIGN_COUPE> le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
-          return ier
-        grpn=collgrno[ngrno]
-        l_coor_group=[ngrno,]
-        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 minidim!=dime:
-    ier=ier+1
-    self.cr.fatal("<F> <MACR_LIGN_COUPE> dimensions de maillage et de coordonnees incoherentes")
-    return ier
-
-
-  # Création du maillage des NB_POINTS segments entre COOR_ORIG et COOR_EXTR
-  # ainsi que des segments reliant les noeuds issus des group_no demandés
-  # par appel au script python crea_mail_lig_coup
-  # le maillage est ensuite recopié dans l unité logique UNITE_MAILLAGE
-
-  resu_mail=crea_mail_lig_coup(dime,lignes,groups)
-  cur_dir=os.getcwd()
-  nomFichierSortie   =cur_dir+'/fort.'+str(UNITE_MAILLAGE)
-  fproc=open(nomFichierSortie,'w')
-  fproc.write(resu_mail)
-  fproc.close()
-
-  # Lecture du maillage de seg2 contenant toutes les lignes de coupe
-
-  __macou=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,);
-
-  motscles={}
-  iocc=1
-  motscles['CREA_GROUP_NO']=[]
-  for m in LIGN_COUPE :
-      if m['NB_POINTS'] !=None :
-        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') :
-    __mocou=AFFE_MODELE(MAILLAGE=__macou,
-                        AFFE=_F(TOUT='OUI',
-                                PHENOMENE='MECANIQUE',
-                                MODELISATION='BARRE',),);
-  elif AsType(RESULTAT).__name__ in ('evol_ther',) :
-    __mocou=AFFE_MODELE(MAILLAGE=__macou,
-                        AFFE=_F(TOUT='OUI',
-                                PHENOMENE='THERMIQUE',
-                                MODELISATION='PLAN',),);
-
-  __recou=PROJ_CHAMP(METHODE='ELEM',
-                     RESULTAT=RESULTAT,
-                     MODELE_1=self.jdc.current_context[n_modele],
-                     MODELE_2=__mocou,
-                     TYPE_CHAM='NOEU',
-                     NOM_CHAM=NOM_CHAM,);
-
-  # Production d'une table pour toutes les lignes de coupe
-
-  ioc2=0
-  mcACTION=[]
-  for m in LIGN_COUPE :
-      if m['NB_POINTS'] !=None :
-        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,
-                          RESULTAT  = __recou,
-                          GROUP_NO  = groupe,
-                          NOM_CHAM  = NOM_CHAM,
-                          TOUT_CMP  = 'OUI',
-                          OPERATION = 'EXTRACTION', )           )
-
-  __tabitm=POST_RELEVE_T(ACTION=mcACTION,);
-
-  # on repasse par les tables python pour supprimer les paramètres inutiles
-  # NOEUD (car il est propre au maillage de la ligne) et RESU
-
-  self.DeclareOut('nomres',self.sd)
-  dictab=__tabitm.EXTR_TABLE()
-  listpara=dictab.para
-  listpara.remove('NOEUD')
-  listpara.remove('RESU')
-
-  coltab=[]
-  for key in listpara :
-      val=dictab[key].values()[key]
-      if   type(val[0])==types.IntType :
-         coltab.append(_F(PARA=key,LISTE_I=val))
-      elif type(val[0])==types.FloatType :
-         coltab.append(_F(PARA=key,LISTE_R=val))
-      elif type(val[0])==types.StringType :
-         coltab.append(_F(PARA=key,LISTE_K=val,TYPE_K='K16'))
-  nomres=CREA_TABLE(LISTE=coltab)
-
-  return ier
diff --git a/Aster/Cata/Macro/macr_recal_ops.py b/Aster/Cata/Macro/macr_recal_ops.py
deleted file mode 100644 (file)
index 17597e9..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#@ MODIF macr_recal_ops Macro  DATE 14/03/2005   AUTEUR DURAND C.DURAND 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC, 
-                        ITER_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI,
-                        GRAPHIQUE, **args ):
-   """Macro commande réalisant le recalage de modèles Aster""",
-   # Initialisation du compteur d'erreurs
-   ier=0
-   # On essaie d'importer Numeric -> ERREUR FATALE
-   try:
-     import Numeric
-   except ImportError:
-     ier=ier+1
-     self.cr.fatal("<F> <MACR_RECAL> Le module Numeric de Python n'a pu etre chargé")
-     return ier
-   # On essaie d'importer Gnuplot -> PAS DE GRAPHIQUE
-   try:
-     import Gnuplot
-     gnuplot=1
-   except ImportError:
-     gnuplot=0
-   import string
-   import copy
-   import types
-   import Macro
-   from Cata import cata
-   from Cata.cata import DEFI_LIST_REEL
-   from Macro.recal import gestion,transforme_list_Num,calcul_F,graphique
-   from Macro import reca_message
-   from Macro import reca_algo
-   from Macro import reca_interp
-   # La macro compte pour 1 dans l'execution des commandes
-   #self.icmd=1
-   self.set_icmd(1)
-
-   self.DeclareOut('nomres',self.sd)
-
-   #_______________________________________________
-   #
-   # GESTION DE L'OPTION FACULTATIVE POUR LES POIDS
-   #_______________________________________________
-   if( POIDS == None):
-      POIDS=Numeric.ones(len(RESU_EXP))
-      
-   #_____________________________________________
-   #
-   # GESTION DES ERREURS DE SYNTAXE
-   #_____________________________________________
-   texte_erreur = gestion(UNITE_ESCL,LIST_PARA,RESU_CALC,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU)
-   if (texte_erreur != ""):
-      ier=ier+1
-      texte_erreur='<F> <MACR_RECAL>'+texte_erreur
-      self.cr.fatal(texte_erreur)
-      return ier
-
-   #_____________________________________________
-   #
-   # DECLARATION DE TOUTES LES COMMANDES ASTER
-   #_____________________________________________
-   for k,v in cata.__dict__.items() :
-     if type(v)==types.InstanceType:
-        if v.__class__.__name__ in ('OPER','MACRO'):
-           self.current_context[k]= v
-   self.current_context['_F']=cata.__dict__['_F']
-
-   #_____________________________________________
-   #
-   # INITIALISATIONS
-   #_____________________________________________
-   iter = 0
-   restant,temps_iter=0.,0.
-   restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
-   para,val,borne_inf,borne_sup = transforme_list_Num(LIST_PARA,RESU_EXP)
-   val_init = copy.copy(val)
-   L_init = calcul_F(self,UNITE_ESCL,para,val,RESU_CALC)
-   #instance de la classe gérant l'affichage des resultats du calcul de l'optimisation
-   Mess = reca_message.Message(para,RESU_EXP,copy.copy(val_init),UNITE_RESU) 
-   #instances des classes pour le calcul de l'erreur et le dimensionnemnt/adim
-   Simul = reca_interp.Sim_exp(RESU_EXP,POIDS)
-   Dim = reca_algo.Dimension(copy.copy(val_init),para)
-   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(self,UNITE_ESCL,L_init,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
-   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))
-   Mess.affiche_result_iter(iter,J,val,residu,Numeric.array([]),UNITE_RESU)
-   # On teste un manque de temps CPU
-   restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
-   if (err==1):
-      ier=ier+1
-      return ier
-   
-   #_____________________________________________
-   #
-   # BOUCLE PRINCIPALE DE L'ALGORITHME
-   #_____________________________________________
-   epsilon = 10.*RESI_GLOB_RELA
-   while((residu > RESI_GLOB_RELA) & (iter<ITER_MAXI)):  
-      iter = iter +1
-      new_val, s, l, Act = reca_algo.Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,UNITE_RESU) 
-      L_F = calcul_F(self,UNITE_ESCL,para,new_val,RESU_CALC)
-      new_L_J,new_erreur = Simul.multi_interpole(L_F, RESU_CALC)
-      new_J = Simul.norme_J(L_J_init,new_L_J,UNITE_RESU)
-      l = reca_algo.actualise_lambda(l,Dim.adim(val),Dim.adim(new_val),A,erreur,new_J,J)
-      val = copy.copy(new_val)
-      erreur = copy.copy(new_erreur)
-      J = new_J
-      A = Simul.sensibilite(self,UNITE_ESCL,L_F,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
-      A = Dim.adim_sensi(A)
-      residu = reca_algo.test_convergence(gradient_init,erreur,A,s)
-      Mess.affiche_result_iter(iter,J,val,residu,Act,UNITE_RESU)
-      if (gnuplot):
-         if (GRAPHIQUE):
-            GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
-            interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
-            graphique(L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
-      # On teste un manque de temps CPU
-      restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
-      if (err==1):
-         ier=ier+1
-         return ier
-   #_____________________________________________
-   #
-   # FIN DES ITERATIONS
-   # CONVERGENCE OU ECHEC
-   #_____________________________________________
-   Mess.affiche_etat_final_convergence(iter,ITER_MAXI,RESI_GLOB_RELA,residu,Act,UNITE_RESU)
-   reca_algo.calcul_etat_final(para,A,iter,ITER_MAXI,RESI_GLOB_RELA,residu,Mess,UNITE_RESU)
-   #_____________________________________________
-   #
-   # CREATIONS DE LA LISTE DE REELS CONTENANT 
-   # LES VALEURS DES PARAMETRES A CONVERGENCE
-   #_____________________________________________
-   lival=[]
-   for i in range(len(val)):
-       lival.append(val[i])
-   nomres=DEFI_LIST_REEL(VALE=lival)
-   return 
diff --git a/Aster/Cata/Macro/macro_elas_mult_ops.py b/Aster/Cata/Macro/macro_elas_mult_ops.py
deleted file mode 100644 (file)
index 38d6e26..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-#@ MODIF macro_elas_mult_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL,
-                        CHAR_MECA_GLOBAL,CHAR_CINE_GLOBAL,LIAISON_DISCRET,
-                        CAS_CHARGE,SOLVEUR,**args):
-  """
-     Ecriture de la macro MACRO_ELAS_MULT
-  """
-  ier=0
-  import types
-  from Accas import _F
-
-  # On met le mot cle NUME_DDL dans une variable locale pour le proteger
-  numeddl=NUME_DDL
-  # On importe les definitions des commandes a utiliser dans la macro
-  CALC_MATR_ELEM  =self.get_cmd('CALC_MATR_ELEM')
-  NUME_DDL        =self.get_cmd('NUME_DDL')
-  ASSE_MATRICE    =self.get_cmd('ASSE_MATRICE')
-  FACT_LDLT       =self.get_cmd('FACT_LDLT')
-  CALC_VECT_ELEM  =self.get_cmd('CALC_VECT_ELEM')
-  ASSE_VECTEUR    =self.get_cmd('ASSE_VECTEUR')
-  RESO_LDLT       =self.get_cmd('RESO_LDLT')
-  CREA_RESU       =self.get_cmd('CREA_RESU')
-  CALC_ELEM       =self.get_cmd('CALC_ELEM')
-  CALC_NO         =self.get_cmd('CALC_NO')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  # Le concept sortant (de type mult_elas ou fourier_elas) est nommé
-  # 'nomres' dans le contexte de la macro
-  
-  self.DeclareOut('nomres',self.sd)
-
-  ielas = 0
-  ifour = 0
-  for m in CAS_CHARGE:
-     if m['NOM_CAS']:
-        ielas=1                 # mot clé NOM_CAS      présent sous CAS_CHARGE
-        tyresu = 'MULT_ELAS'
-     else:
-        ifour=1                 # mot clé MODE_FOURIER présent sous CAS_CHARGE
-        tyresu = 'FOURIER_ELAS'
-  if ielas==1 and ifour==1:
-     ier=ier+1
-     self.cr.fatal("""<F> <MACRO_ELAS_MULT> On ne peut avoir a la fois NOM_CAS et MODE_FOURIER""")
-     return ier
-
-  if (numeddl in self.sdprods) or (numeddl==None):
-    # Si le concept numeddl est dans self.sdprods ou n est pas nommé
-    # il doit etre  produit par la macro
-    # il faudra donc appeler la commande NUME_DDL
-    lnume = 1
-  else:
-    lnume = 0
-
-  if ielas==1 :
-     motscles={}
-     if   CHAR_MECA_GLOBAL: motscles['CHARGE']    =CHAR_MECA_GLOBAL
-     elif CHAR_CINE_GLOBAL: motscles['CHARGE']    =CHAR_CINE_GLOBAL
-     if   CHAM_MATER      : motscles['CHAM_MATER']=CHAM_MATER
-     if   CARA_ELEM       : motscles['CARA_ELEM'] =CARA_ELEM
-     __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
-  
-     if lnume:
-       # On peut passer des mots cles egaux a None. Ils sont ignores
-       motscles={}
-       if SOLVEUR:
-          motscles['METHODE'] =SOLVEUR['METHODE']
-          motscles['RENUM']   =SOLVEUR['RENUM']
-       else:
-          motscles['METHODE'] ='MULT_FRONT'
-          motscles['RENUM']   ='METIS'
-       if numeddl!=None:
-          self.DeclareOut('num',numeddl)
-          num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
-       else:
-          _num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
-          num=_num
-     else:
-       num=numeddl
-
-     __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
-
-     __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
-
-#####################################################################
-# boucle sur les items de CAS_CHARGE
-
-  nomchn=[]
-  iocc=0
-  for m in CAS_CHARGE:
-     iocc=iocc+1
-
-     if ifour:
-        motscles={}
-        if   CHAR_MECA_GLOBAL: motscles['CHARGE']       =CHAR_MECA_GLOBAL
-        elif CHAR_CINE_GLOBAL: motscles['CHARGE']       =CHAR_CINE_GLOBAL
-        if   CHAM_MATER      : motscles['CHAM_MATER']   =CHAM_MATER
-        if   CARA_ELEM       : motscles['CARA_ELEM']    =CARA_ELEM
-        motscles['MODE_FOURIER'] =m['MODE_FOURIER']
-        __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
-
-        if lnume:
-           _num=NUME_DDL(MATR_RIGI=__nomrig,METHODE=SOLVEUR['METHODE'],RENUM=SOLVEUR['RENUM'])
-           num=_num
-           lnume=0
-
-        __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
-
-        __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
-
-
-     if m['VECT_ASSE']==None :
-        motscles={}
-        if   CHAM_MATER      : motscles['CHAM_MATER']   =CHAM_MATER
-        if   CARA_ELEM       : motscles['CARA_ELEM']    =CARA_ELEM
-        if   ifour           : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
-        if   m['CHAR_MECA']  : motscles['CHARGE']       =m['CHAR_MECA']
-        elif m['CHAR_CINE']  : motscles['CHARGE']       =m['CHAR_CINE']
-        __nomvel=CALC_VECT_ELEM(OPTION='CHAR_MECA',**motscles)
-        __nomasv=ASSE_VECTEUR(VECT_ELEM=__nomvel,NUME_DDL=num)
-     else :
-        __nomasv=m['VECT_ASSE']
-
-
-     __nomchn=RESO_LDLT(MATR_FACT=__nomraf,CHAM_NO=__nomasv,TITRE=m['SOUS_TITRE'])
-     nomchn.append(__nomchn)
-
-# fin de la boucle sur les items de CAS_CHARGE
-#####################################################################
-
-  motscles={}
-  iocc=0
-  motscle2={}
-  if CHAM_MATER : motscle2['CHAM_MATER']=CHAM_MATER
-  if CARA_ELEM  : motscle2['CARA_ELEM']=CARA_ELEM
-  if CHAM_MATER or CARA_ELEM :
-    if ielas : 
-       motscles['AFFE']=[]
-       for m in CAS_CHARGE:
-          motscles['AFFE'].append(_F(MODELE=MODELE,
-                                     CHAM_GD=nomchn[iocc],
-                                     NOM_CAS=m['NOM_CAS'],
-                                     **motscle2) )
-          iocc=iocc+1
-    else :
-       motscles['AFFE']=[]
-       for m in CAS_CHARGE:
-          motscles['AFFE'].append(_F(MODELE=MODELE,
-                                     CHAM_GD=nomchn[iocc],
-                                     NUME_MODE=m['MODE_FOURIER'],
-                                     TYPE_MODE=m['TYPE_MODE'],
-                                     **motscle2) )
-          iocc=iocc+1
-  else:
-    if ielas : 
-       motscles['AFFE']=[]
-       for m in CAS_CHARGE:
-          motscles['AFFE'].append(_F(MODELE=MODELE,
-                                     CHAM_GD=nomchn[iocc],
-                                     NOM_CAS=m['NOM_CAS'],) )
-          iocc=iocc+1
-    else :
-       motscles['AFFE']=[]
-       for m in CAS_CHARGE:
-          motscles['AFFE'].append(_F(MODELE=MODELE,
-                                     CHAM_GD=nomchn[iocc],
-                                     NUME_MODE=m['MODE_FOURIER'],
-                                     TYPE_MODE=m['TYPE_MODE'],) )
-          iocc=iocc+1
-
-
-  nomres=CREA_RESU(OPERATION='AFFE',TYPE_RESU=tyresu,NOM_CHAM='DEPL',**motscles)
-
-#####################################################################
-# boucle sur les items de CAS_CHARGE pour CALC_ELEM ete CALC_NO
-
-  iocc=0
-  for m in CAS_CHARGE:
-     iocc=iocc+1
-
-     if m['OPTION']:
-        nbel=0
-        nbno=0
-        liste_el=[]
-        liste_no=[]
-        if type(m['OPTION'])==types.StringType:
-           if m['OPTION'] in ('FORC_NODA','REAC_NODA',
-                              'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
-                              'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
-              nbno=nbno+1
-              liste_no.append(m['OPTION'])
-           else:
-              nbel=nbel+1
-              liste_el.append(m['OPTION'])
-        else:
-           for opt in m['OPTION']:
-              if opt in ('FORC_NODA','REAC_NODA',
-                         'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
-                         'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
-                 nbno=nbno+1
-                 liste_no.append(opt)
-              else:
-                 nbel=nbel+1
-                 liste_el.append(opt)
-
-        lreac=0
-        if nbel:
-           motscles={}
-           if   CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
-           if   CARA_ELEM  : motscles['CARA_ELEM']  =CARA_ELEM
-           if ielas:
-              motscles['NOM_CAS']=m['NOM_CAS']
-           else:
-              motscles['NUME_MODE']=m['MODE_FOURIER']
-           motscles['EXCIT']=[]
-           if   m['CHAR_MECA'] :
-              for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
-           elif m['CHAR_CINE'] :
-              for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
-           if   CHAR_MECA_GLOBAL:            motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
-           elif CHAR_CINE_GLOBAL:            motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
-           CALC_ELEM(reuse=nomres,
-                     RESULTAT=nomres,
-                     MODELE=MODELE,
-                     NIVE_COUCHE=m['NIVE_COUCHE'],
-                     NUME_COUCHE=m['NUME_COUCHE'],
-                     OPTION=tuple(liste_el),
-                     **motscles)
-        if nbno:
-           motscles={}
-           if   CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
-           if   CARA_ELEM  : motscles['CARA_ELEM']  =CARA_ELEM
-           if ielas:
-              motscles['NOM_CAS']=m['NOM_CAS']
-           else:
-              motscles['NUME_MODE']=m['MODE_FOURIER']
-           motscles['EXCIT']=[]
-           if   m['CHAR_MECA'] :
-              for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
-           elif m['CHAR_CINE'] :
-              for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
-           if   CHAR_MECA_GLOBAL:            motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
-           elif CHAR_CINE_GLOBAL:            motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
-           CALC_NO(reuse=nomres,
-                   RESULTAT=nomres,
-                   MODELE=MODELE,
-                   OPTION=tuple(liste_no),
-                   **motscles)
-
-# fin de la boucle sur les items de CAS_CHARGE
-#####################################################################
-  return ier
-
diff --git a/Aster/Cata/Macro/macro_matr_ajou_ops.py b/Aster/Cata/Macro/macro_matr_ajou_ops.py
deleted file mode 100644 (file)
index 3459592..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-#@ MODIF macro_matr_ajou_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- 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.        
-# ======================================================================
-
-
-def macro_matr_ajou_ops(self,MAILLAGE,GROUP_MA_FLUIDE,GROUP_MA_INTERF,MODELISATION,MODE_MECA,DEPL_IMPO,
-                             NUME_DDL_GENE,MODELE_GENE,MATR_MASS_AJOU,MATR_AMOR_AJOU,MATR_RIGI_AJOU,
-                             NOEUD_DOUBLE,FLUIDE,DDL_IMPO,DIST_REFE,SOLVEUR,INFO,AVEC_MODE_STAT,
-                             MODE_STAT,MONO_APPUI,
-                             FORC_AJOU,ECOULEMENT,**args):
-  """
-     Ecriture de la macro MACRO_MATR_AJOU
-  """
-  from Accas import _F
-  import types
-  ier=0
-  
-  # On importe les definitions des commandes a utiliser dans la macro
-  DEFI_MATERIAU      =self.get_cmd('DEFI_MATERIAU')
-  AFFE_MATERIAU      =self.get_cmd('AFFE_MATERIAU')
-  AFFE_MODELE        =self.get_cmd('AFFE_MODELE')
-  AFFE_CHAR_THER     =self.get_cmd('AFFE_CHAR_THER')
-  CALC_MATR_AJOU     =self.get_cmd('CALC_MATR_AJOU')
-  THER_LINEAIRE      =self.get_cmd('THER_LINEAIRE')
-  CALC_FORC_AJOU     =self.get_cmd('CALC_FORC_AJOU')
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  self.set_icmd(1)
-  if len(FLUIDE)==1 :
-     print '<I> <MACRO_MATR_AJOU> tout le domaine fluide specifie dans GROUP_MA_INTERF et GROUP_MA_FLUIDE'
-     print '                      sera affecte par la masse volumique RHO = ',FLUIDE['RHO']
-     if FLUIDE['GROUP_MA']!=None :
-       print '<I> <MACRO_MATR_AJOU> cas fluide simple : le group_ma dans lequel vous affectez la masse'
-       print 'volumique RHO doit etre la reunion de GROUP_MA_INTERF et GROUP_MA_FLUIDE.'
-  else :
-     for flu in FLUIDE :
-         if flu['GROUP_MA']==None :
-            self.cr.fatal("<F> <MACRO_MATR_AJOU> cas fluides multiples : precisez le GROUP_MA dans lequel vous affectez  la masse volumique RHO.")
-            ier=ier+1
-            return ier
-
-  IOCFLU=len(FLUIDE)
-
-#  ---------------------------------------------------------------
-#  definition du materiau fluide par caracteristique
-#  thermique equivalente
-
-# CAS FLUIDE SIMPLE
-  if IOCFLU==1 :
-     __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
-                                        RHO_CP = FLUIDE[0]['RHO']))
-     __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
-                             AFFE     = _F( GROUP_MA = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
-                                            MATER    =  __NOMMAT),    )
-
-#  ---------------------------------------------------------------
-#  cas fluides multiples
-  else :
-     affmat=[]
-     for flu in FLUIDE:
-        __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
-                                           RHO_CP = flu['RHO']))
-        mfact=_F(GROUP_MA=flu['GROUP_MA'],MATER=__NOMMAT)
-        affmat.append(mfact)
-
-     __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
-                             AFFE     = affmat  )
-
-#  ---------------------------------------------------------------
-#  commande AFFE_MODELE modele fluide
-  __NOMFLU=AFFE_MODELE( MAILLAGE = MAILLAGE,
-                        AFFE     = _F( GROUP_MA     = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
-                                       MODELISATION = MODELISATION,
-                                       PHENOMENE    = 'THERMIQUE'    ), )
-
-#  ---------------------------------------------------------------
-#  commande AFFE_MODELE modele interface
-  __NOMINT=AFFE_MODELE( MAILLAGE = MAILLAGE,
-                        AFFE     = _F( GROUP_MA     = GROUP_MA_INTERF,
-                                       MODELISATION = MODELISATION,
-                                       PHENOMENE    = 'THERMIQUE'    ), )
-
-#  ---------------------------------------------------------------
-#  commande AFFE_CHAR_THER condition de pression imposee
-#  en un point ou un groupe du fluide
-  affimp=[]
-  nflui=0
-  for DDL in DDL_IMPO :
-     if DDL['PRES_FLUIDE']!=None :
-        nflui=nflui+1
-        if DDL['NOEUD']   !=None : mfact=_F(NOEUD   =DDL['NOEUD'],   TEMP=DDL['PRES_FLUIDE'])
-        if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_FLUIDE'])
-        affimp.append(mfact)
-  if nflui==0:
-     self.cr.fatal("<F> <MACRO_MATR_AJOU> PRES_FLUIDE obligatoire une fois")
-     ier=ier+1
-     return ier
-
-  __CHARGE=AFFE_CHAR_THER( MODELE    = __NOMFLU,
-                           TEMP_IMPO = affimp )
-
-#  ---------------------------------------------------------------
-#  calcul des masses, rigidites et amortissements ajoutes en theorie
-#  potentielle
-#  commande CALC_MATR_AJOU, calcul de la masse ajoutee
-
-  if MATR_MASS_AJOU!=None :
-     self.DeclareOut('MASSAJ',MATR_MASS_AJOU)
-     solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-     mostcles={}
-     if   NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
-     if   INFO         !=None : mostcles['INFO']          =INFO
-     if   MODE_MECA    !=None : mostcles['MODE_MECA']     =MODE_MECA
-     elif DEPL_IMPO    !=None : mostcles['CHAM_NO']       =DEPL_IMPO
-     elif MODELE_GENE  !=None :
-                                mostcles['MODELE_GENE']   =MODELE_GENE
-                                mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
-                                mostcles['DIST_REFE']     =DIST_REFE
-     if   NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE']  =NOEUD_DOUBLE
-
-     MASSAJ = CALC_MATR_AJOU(MODELE_FLUIDE    = __NOMFLU,
-                             MODELE_INTERFACE = __NOMINT,
-                             CHARGE           = __CHARGE,
-                             CHAM_MATER       = __NOMCMA,
-                             OPTION           = 'MASS_AJOU',
-                             SOLVEUR          = solveur,
-                             **mostcles)
-
-#  ---------------------------------------------------------------
-#  calcul de l amortissement ajoute
-  if (MATR_AMOR_AJOU!=None ) or (MATR_RIGI_AJOU!=None ):
-
-#  ---------------------------------------------------------------
-#  on definit un nouveau modele fluide pour calculer
-#  le potentiel stationnaire - AFFE_MODELE
-     grma=[GROUP_MA_FLUIDE,]
-     if ECOULEMENT!=None :
-        grma.append(ECOULEMENT['GROUP_MA_1'])
-        grma.append(ECOULEMENT['GROUP_MA_2'])
-     __NOFLUI=AFFE_MODELE( MAILLAGE = MAILLAGE,
-                           AFFE     = _F( GROUP_MA     = grma,
-                                          MODELISATION = MODELISATION,
-                                          PHENOMENE    = 'THERMIQUE'    ), )
-     affimp=[]
-     for DDL in DDL_IMPO :
-        if DDL['PRES_SORTIE']!=None :
-           if DDL['NOEUD']   !=None : mfact=_F(NOEUD   =DDL['NOEUD'],   TEMP=DDL['PRES_SORTIE'])
-           if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_SORTIE'])
-           affimp.append(mfact)
-
-     affecl=[]
-     for ECL in ECOULEMENT :
-           mfact=_F(GROUP_MA=ECL['GROUP_MA_1'],FLUN=ECL['VNOR_1'])
-           affecl.append(mfact)
-           mfact=_F(GROUP_MA=ECL['GROUP_MA_2'],FLUN=ECL['VNOR_2'])
-           affecl.append(mfact)
-     __CHARG2=AFFE_CHAR_THER( MODELE    = __NOFLUI,
-                              TEMP_IMPO = affimp ,
-                              FLUX_REP  = affecl )
-
-     __POTEN = THER_LINEAIRE( MODELE     = __NOFLUI,
-                              CHAM_MATER = __NOMCMA ,
-                              EXCIT      = _F( CHARGE = __CHARG2 ) )
-
-#  ---------------------------------------------------------------
-#  calcul amortissement proprement dit
-  if MATR_AMOR_AJOU!=None :
-     self.DeclareOut('AMORAJ',MATR_AMOR_AJOU)
-     solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-     mostcles={}
-     if   NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
-     if   INFO         !=None : mostcles['INFO']          =INFO
-     if   MODE_MECA    !=None : mostcles['MODE_MECA']     =MODE_MECA
-     elif DEPL_IMPO    !=None : mostcles['CHAM_NO']       =DEPL_IMPO
-     else :
-       self.cr.fatal("<F> <MACRO_MATR_AJOU> amortissement ajoute sur modele generalise non encore implante")
-       ier=ier+1
-       return ier
-
-     AMORAJ = CALC_MATR_AJOU(MODELE_FLUIDE    = __NOMFLU,
-                             MODELE_INTERFACE = __NOMINT,
-                             CHARGE           = __CHARGE,
-                             CHAM_MATER       = __NOMCMA,
-                             OPTION           = 'AMOR_AJOU',
-                             SOLVEUR          = solveur,
-                             POTENTIEL        = __POTEN,
-                             **mostcles)
-
-#  ---------------------------------------------------------------
-#  calcul de la rigidite ajoutee
-  if MATR_RIGI_AJOU!=None :
-     self.DeclareOut('RIGIAJ',MATR_RIGI_AJOU)
-     solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-     mostcles={}
-     if   NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
-     if   INFO         !=None : mostcles['INFO']          =INFO
-     if   MODE_MECA    !=None : mostcles['MODE_MECA']     =MODE_MECA
-     elif DEPL_IMPO    !=None : mostcles['CHAM_NO']       =DEPL_IMPO
-     else :
-       self.cr.fatal("<F> <MACRO_MATR_AJOU> rigidite ajoutee sur modele generalise non encore implante")
-       ier=ier+1
-       return ier
-
-     RIGIAJ = CALC_MATR_AJOU(MODELE_FLUIDE    = __NOMFLU,
-                             MODELE_INTERFACE = __NOMINT,
-                             CHARGE           = __CHARGE,
-                             CHAM_MATER       = __NOMCMA,
-                             OPTION           = 'RIGI_AJOU',
-                             SOLVEUR          = solveur,
-                             POTENTIEL        = __POTEN,
-                             **mostcles)
-
-#  ---------------------------------------------------------------
-#  boucle sur le nombre de vecteurs a projeter, commande CALC_FORC_AJOU
-  if FORC_AJOU!=None :
-     for FORCAJ in FORC_AJOU:
-       self.DeclareOut('VECTAJ',FORCAJ['VECTEUR'])
-       solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-       mostcles={}
-       if   NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
-       if   MODE_MECA    !=None : mostcles['MODE_MECA']     =MODE_MECA
-       elif MODELE_GENE  !=None :
-                                  mostcles['MODELE_GENE']   =MODELE_GENE
-                                  mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
-                                  mostcles['DIST_REFE']     =DIST_REFE
-       if   NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE']  =NOEUD_DOUBLE
-       if   MODE_STAT    !=None :
-         mostcles['MODE_STAT']                                =MODE_STAT
-         if FORCAJ['NOEUD']    !=None : mostcles['NOEUD']     =FORCAJ['NOEUD']
-         if FORCAJ['GROUP_NO'] !=None : mostcles['GROUP_NO']  =FORCAJ['GROUP_NO']
-       else                     :
-                                  mostcles['MONO_APPUI']    =MONO_APPUI
-
-       VECTAJ = CALC_FORC_AJOU(DIRECTION        = FORCAJ['DIRECTION'],
-                               MODELE_FLUIDE    = __NOMFLU,
-                               MODELE_INTERFACE = __NOMINT,
-                               CHARGE           = __CHARGE,
-                               CHAM_MATER       = __NOMCMA,
-                               SOLVEUR          = solveur,
-                               **mostcles)
-
-
-  return ier
diff --git a/Aster/Cata/Macro/macro_matr_asse_ops.py b/Aster/Cata/Macro/macro_matr_asse_ops.py
deleted file mode 100644 (file)
index 4c7f99f..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-#@ MODIF macro_matr_asse_ops Macro  DATE 01/04/2005   AUTEUR VABHHTS J.PELLET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
-                        SOLVEUR,NUME_DDL,CHARGE,INST,**args):
-  """
-     Ecriture de la macro MACRO_MATR_ASSE
-  """
-  ier=0
-
-  # On met le mot cle NUME_DDL dans une variable locale pour le proteger
-  numeddl=NUME_DDL
-  # On importe les definitions des commandes a utiliser dans la macro
-  # Le nom de la variable doit etre obligatoirement le nom de la commande
-  CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
-  NUME_DDL      =self.get_cmd('NUME_DDL')
-  ASSE_MATRICE  =self.get_cmd('ASSE_MATRICE')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  if SOLVEUR:
-    methode=SOLVEUR['METHODE']
-    if methode=='LDLT':
-      if SOLVEUR['RENUM']:
-         renum=SOLVEUR['RENUM']
-      else:
-         renum='RCMK'
-      if renum not in ('SANS','RCMK'):
-        ier=ier+1
-        self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode LDLT, RENUM doit etre SANS ou RCMK.")
-        return ier
-    elif methode=='MULT_FRONT':
-      if SOLVEUR['RENUM']:
-         renum=SOLVEUR['RENUM']
-      else:
-         renum='MDA'
-      if renum not in ('MDA','MD','METIS'):
-        ier=ier+1
-        self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK.")
-        return ier
-    elif methode=='MUMPS':
-      if SOLVEUR['RENUM']:
-         renum=SOLVEUR['RENUM']
-      else:
-         renum='SANS'
-      if renum not in ('SANS',):
-        ier=ier+1
-        self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode MUMPS, RENUM doit etre SANS.")
-        return ier
-    elif methode=='GCPC':
-      if SOLVEUR['RENUM']:
-         renum=SOLVEUR['RENUM']
-      else:
-         renum='SANS'
-      if renum not in ('SANS','RCMK'):
-        ier=ier+1
-        self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode GCPC, RENUM doit etre SANS ou RCMK.")
-        return ier
-  else:
-    methode='MULT_FRONT'
-    renum  ='MDA'
-
-  if numeddl in self.sdprods:
-    # Si le concept numeddl est dans self.sdprods
-    # il doit etre  produit par la macro
-    # il faudra donc appeler la commande NUME_DDL
-    lnume = 1
-  else:
-    lnume = 0
-  lrigel = 0
-  lmasel = 0
-
-# decalage eventuel en premiere position dans la liste de l occurence de MATR_ASSE contenant
-# l option de rigidite
-  try :
-    for m in MATR_ASSE:
-      option=m['OPTION']
-      if option in ('RIGI_MECA','RIGI_MECA_LAGR','RIGI_THER','RIGI_ACOU') :
-         decal=m
-         MATR_ASSE.remove(decal)
-         MATR_ASSE.insert(0,decal)
-         break
-  except: pass
-
-  iocc=0
-  for m in MATR_ASSE:
-    iocc=iocc+1
-    option=m['OPTION']
-    if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
-                                                   'RIGI_THER','RIGI_ACOU')      :
-      ier=ier+1
-      self.cr.fatal("<F> <MACRO_MATR_ASSE> UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
-      return ier
-
-
-    motscles={'OPTION':option}
-    if option == 'AMOR_MECA':
-       if (not lrigel or not lmasel):
-          ier=ier+1
-          self.cr.fatal("""<F> <MACRO_MATR_ASSE> POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE
-                           RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)""")
-          return ier
-       if CHAM_MATER != None:
-          motscles['RIGI_MECA']   =rigel
-          motscles['MASS_MECA']   =masel
-    if CHARGE     != None:
-       if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
-                           motscles['CHARGE']      =CHARGE
-    if CHAM_MATER != None: motscles['CHAM_MATER']  =CHAM_MATER
-    if CARA_ELEM  != None: motscles['CARA_ELEM']   =CARA_ELEM
-    if INST       != None: motscles['INST']        =INST
-
-    try : motscles['SIEF_ELGA']   =m['SIEF_ELGA']
-    except IndexError : pass
-
-    try : motscles['MODE_FOURIER']   =m['MODE_FOURIER']
-    except IndexError : pass
-
-    try : motscles['THETA']   =m['THETA']
-    except IndexError : pass
-
-    try : motscles['PROPAGATION']   =m['PROPAGATION']
-    except IndexError : pass
-    print motscles
-    __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
-
-    if option == 'RIGI_MECA':
-      rigel  = __a
-      lrigel = 1
-    if option == 'MASS_MECA':
-      masel  = __a
-      lmasel = 1
-
-    if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
-      self.DeclareOut('num',numeddl)
-      # On peut passer des mots cles egaux a None. Ils sont ignores
-      num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum)
-    else:
-      num=numeddl
-
-    self.DeclareOut('mm',m['MATRICE'])
-    mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num)
-  return ier
diff --git a/Aster/Cata/Macro/macro_miss_3d_ops.py b/Aster/Cata/Macro/macro_miss_3d_ops.py
deleted file mode 100644 (file)
index 0d5d360..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#@ MODIF macro_miss_3d_ops Macro  DATE 03/11/2004   AUTEUR ACBHHCD G.DEVESA 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
-                           UNITE_MODELE_SOL,UNITE_RESU_IMPE,
-                           PROJET,REPERTOIRE,OPTION,VERSION,**args):
-  """
-     Ecriture de la macro MACRO_MISS_3D
-  """
-  import types
-  from Accas import _F
-
-  ier=0
-  # On importe les definitions des commandes a utiliser dans la macro
-  # Le nom de la variable doit etre obligatoirement le nom de la commande
-  DEFI_FICHIER  =self.get_cmd('DEFI_FICHIER')
-  EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  DEFI_FICHIER(ACTION='LIBERER',UNITE=UNITE_IMPR_ASTER)
-
-  import aster 
-  loc_fic=aster.repout()
-  miss3d=loc_fic+'miss3d'
-  #miss3d='/home/acbhhcd/MISS3D/V6.4/miss3d.csh'
-
-  if OPTION['TOUT']!=None:
-      MODUL2='COMPLET'
-  elif OPTION['MODULE']=='MISS_IMPE':
-      MODUL2='CALC_IMPE'
-  elif OPTION['MODULE']=='MISS_EVOL':
-      MODUL2='MISS_PTAS'
-  elif OPTION['MODULE']=='PRE_MISS':
-      MODUL2='GTASTER'
-
-  ETUDE = PROJET
-  BASE  = REPERTOIRE
-  paste = 'fort.'+str(UNITE_IMPR_ASTER)
-  popti = 'fort.'+str(UNITE_OPTI_MISS)
-  pdsol = 'fort.'+str(UNITE_MODELE_SOL)
-  primp = 'fort.'+str(UNITE_RESU_IMPE)
-
-  EXEC_LOGICIEL(
-                LOGICIEL=miss3d,
-                ARGUMENT=(_F(NOM_PARA=MODUL2),
-                          _F(NOM_PARA=ETUDE),
-                          _F(NOM_PARA=BASE),
-                          _F(NOM_PARA=paste),
-                          _F(NOM_PARA=popti),
-                          _F(NOM_PARA=pdsol),
-                          _F(NOM_PARA=primp),
-                          _F(NOM_PARA=VERSION),  ),
-                )
-
-  return ier
diff --git a/Aster/Cata/Macro/macro_mode_meca_ops.py b/Aster/Cata/Macro/macro_mode_meca_ops.py
deleted file mode 100644 (file)
index efbd4db..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#@ MODIF macro_mode_meca_ops Macro  DATE 30/11/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
-                        VERI_MODE,NORM_MODE,FILTRE_MODE,IMPRESSION,**args):
-  """
-     Ecriture de la macro MACRO_MODE_MECA
-  """
-  from Accas import _F
-  ier=0
-    
-  #  on protege le contenu du mot cle NORM_MODE pour eviter les confusions
-  #  avec la commande du meme nom
-  
-  normode=NORM_MODE
-  
-  # On importe les definitions des commandes a utiliser dans la macro
-  MODE_ITER_SIMULT  =self.get_cmd('MODE_ITER_SIMULT')
-  NORM_MODE         =self.get_cmd('NORM_MODE')
-  IMPR_RESU         =self.get_cmd('IMPR_RESU')
-  EXTR_MODE         =self.get_cmd('EXTR_MODE')
-  DETRUIRE          =self.get_cmd('DETRUIRE')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  nompro=None
-  iocc=0
-  if CALC_FREQ['FREQ']:
-     nnfreq=len(CALC_FREQ['FREQ'])
-  else:
-     lborne=[]
-     nnfreq= CALC_FREQ['NB_BLOC_FREQ']+1
-     zlborn=(CALC_FREQ['FREQ_MAX']-CALC_FREQ['FREQ_MIN'])/(nnfreq-1)
-     for i in range(0,nnfreq):
-         lborne.append(CALC_FREQ['FREQ_MIN']+i*zlborn)
-
-  motscles={}
-  motscles['FILTRE_MODE']=[]
-  for i in range(0,nnfreq-1):
-     motscit={}
-     motscfa={}
-     if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
-     if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
-     if CALC_FREQ['FREQ']:
-        motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
-     else:
-        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)
-     motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
-                             SEUIL      =VERI_MODE['SEUIL'],
-                             STURM      =VERI_MODE['STURM'],
-                             PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
-     motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
-
-     if METHODE=='TRI_DIAG':
-        if args.has_key('NMAX_ITER_ORTHO'):
-           motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
-        if args.has_key('PREC_ORTHO'):
-           motscit['PREC_ORTHO']      =args['PREC_ORTHO']
-        if args.has_key('PREC_LANCZOS'):
-           motscit['PREC_LANCZOS']    =args['PREC_LANCZOS']
-        if args.has_key('MAX_ITER_QR'):
-           motscit['NMAX_ITER_QR']    =args['NMAX_ITER_QR']
-     elif METHODE=='JACOBI':
-        if args.has_key('NMAX_ITER_BATHE'):
-           motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
-        if args.has_key('PREC_BATHE'):
-           motscit['PREC_BATHE']      =args['PREC_BATHE']
-        if args.has_key('NMAX_ITER_JACOBI'):
-           motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
-        if args.has_key('PREC_JACOBI'):
-           motscit['PREC_JACOBI']     =args['PREC_JACOBI']
-     elif METHODE=='SORENSEN':
-        if args.has_key('NMAX_ITER_SOREN'):
-           motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
-        if args.has_key('PARA_ORTHO_SOREN'):
-           motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
-        if args.has_key('PREC_SOREN'):
-           motscit['PREC_SOREN']      =args['PREC_SOREN']
-
-     __nomre0=MODE_ITER_SIMULT(MATR_A  =MATR_A,
-                                  MATR_B  =MATR_B,
-                                  INFO    =INFO,
-                                  METHODE =METHODE,
-                                  OPTION  =OPTION,
-                                  **motscit)
-
-     __nomre0=NORM_MODE(reuse     =__nomre0,
-                        MASS_INER =normode['MASS_INER'],
-                        MODE      =__nomre0,
-                        NORME     =normode['NORME'],
-                        INFO      =normode['INFO'],)
-
-     if IMPRESSION['TOUT_PARA']=='OUI':
-        IMPR_RESU(RESU=_F(RESULTAT=__nomre0,
-                          TOUT_ORDRE='OUI',
-                          TOUT_CHAM ='NON',
-                          TOUT_PARA ='OUI',) )
-
-     if FILTRE_MODE :
-        motscles['FILTRE_MODE'].append(_F(MODE      =__nomre0,
-                                          CRIT_EXTR =FILTRE_MODE['CRIT_EXTR'],
-                                          SEUIL     =FILTRE_MODE['SEUIL'], ))
-     else:
-        motscles['FILTRE_MODE'].append(_F(MODE      =__nomre0,
-                                          TOUT_ORDRE='OUI',) )
-     
-
-  motscles['IMPRESSION']=_F(CUMUL    =IMPRESSION['CUMUL'],
-                            CRIT_EXTR=IMPRESSION['CRIT_EXTR'],)
-  self.DeclareOut('nomres',self.sd)
-  nomres=EXTR_MODE(**motscles)
-  DETRUIRE(CONCEPT=_F(NOM='__nomre0',),ALARME='NON')
-  return ier
diff --git a/Aster/Cata/Macro/macro_proj_base_ops.py b/Aster/Cata/Macro/macro_proj_base_ops.py
deleted file mode 100644 (file)
index edfee02..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#@ MODIF macro_proj_base_ops Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-def macro_proj_base_ops(self,BASE,NB_VECT,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args):
-  """
-     Ecriture de la macro MACRO_PROJ_BASE
-  """
-  ier=0
-  # On importe les definitions des commandes a utiliser dans la macro
-  NUME_DDL_GENE  =self.get_cmd('NUME_DDL_GENE')
-  PROJ_MATR_BASE =self.get_cmd('PROJ_MATR_BASE')
-  PROJ_VECT_BASE =self.get_cmd('PROJ_VECT_BASE')
-  # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
-  self.set_icmd(1)
-
-  _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
-  if MATR_ASSE_GENE:
-    for m in MATR_ASSE_GENE:
-      motscles={}
-      if   m['MATR_ASSE']     :  motscles['MATR_ASSE']     =m['MATR_ASSE']
-      elif m['MATR_ASSE_GENE']:  motscles['MATR_ASSE_GENE']=m['MATR_ASSE_GENE']
-      else:
-          ier=ier+1
-          self.cr.fatal("<F> <MACRO_PROJ_BASE> MATR_ASSE et MATR_ASSE_GENE absents")
-          return ier
-      self.DeclareOut('mm',m['MATRICE'])
-      mm=PROJ_MATR_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
-
-  if VECT_ASSE_GENE:
-    _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
-    for v in VECT_ASSE_GENE:
-      motscles={}
-      if   v['VECT_ASSE']     :  motscles['VECT_ASSE']     =v['VECT_ASSE']
-      elif v['VECT_ASSE_GENE']:  motscles['VECT_ASSE_GENE']=v['VECT_ASSE_GENE']
-      else:
-          ier=ier+1
-          self.cr.fatal("<F> <MACRO_PROJ_BASE>MATR_ASSE et MATR_ASSE_GENE absents")
-          return ier
-      motscles['TYPE_VECT']=v['TYPE_VECT']
-      self.DeclareOut('vv',v['VECTEUR'])
-      vv=PROJ_VECT_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
-
-  return ier
diff --git a/Aster/Cata/Macro/reca_algo.py b/Aster/Cata/Macro/reca_algo.py
deleted file mode 100644 (file)
index 65e02bd..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-#@ MODIF reca_algo Macro  DATE 14/03/2005   AUTEUR DURAND C.DURAND 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-import Numeric
-from Numeric import take
-import copy,os
-import LinearAlgebra 
-from Cata.cata import INFO_EXEC_ASTER
-from Cata.cata import DETRUIRE
-from Accas import _F
-
-
-def calcul_gradient(A,erreur):
-   grad = Numeric.dot(Numeric.transpose(A),erreur)
-   return grad
-
-
-#-------------------------------------------
-#classe gérant l'adimensionnement et le dimensionnemnt
-class Dimension:
-   #le constructeur calcul la matrice D et son inverse
-   def __init__(self,val_initiales,para):
-      self.val_init = val_initiales
-      dim =len(self.val_init)
-      self.D = Numeric.zeros((dim,dim),Numeric.Float)
-      for i in range(dim):
-         self.D[i][i] = self.val_init[i]
-      self.inv_D=LinearAlgebra.inverse(self.D)
-   
-
-   def adim_sensi(self,A):
-      for i in range(A.shape[0]):
-         for j in range(A.shape[1]):
-            A[i,j] = A[i,j] * self.val_init[j]
-      return A
-
-
-
-   def redim_sensi(self,A):
-      for i in range(A.shape[0]):
-         for j in range(A.shape[1]):
-            A[i,j] = A[i,j] / self.val_init[j]
-      return A
-
-
-   def adim(self,tab):
-      tab_adim = Numeric.dot(self.inv_D,copy.copy(tab))
-      return tab_adim
-
-
-   def redim(self,tab_adim):
-      tab = Numeric.dot(self.D,tab_adim)
-      return tab
-   
-#------------------------------------------
-def cond(matrix):
-    e1=LinearAlgebra.eigenvalues(matrix)
-    e=map(abs,e1)
-    size=len(e)
-    e=Numeric.sort(e)
-    try:
-      condi=e[size-1]/e[0]
-    except ZeroDivisionError:
-      condi=0.0
-    return condi,e[size-1],e[0]
-
-#-----------------------------------------
-def norm(matrix):
-    e=LinearAlgebra.Heigenvalues(matrix)
-    size=len(e)
-    e=Numeric.sort(e)
-    norm=e[size-1]
-    return norm
-
-#-----------------------------------------
-def lambda_init(matrix):
-# Routine qui calcule la valeur initial du parametre
-# de regularisation l.
-     condi,emax,emin=cond(matrix)
-     id=Numeric.identity(matrix.shape[0])
-     if (condi==0.0):
-         l=1.e-3*norm(matrix)
-     elif (condi<=10000):
-         l=1.e-16*norm(matrix)
-     elif (condi>10000):
-         l=abs(10000.*emin-emax)/10001.
-     return l
-
-#-----------------------------------------
-
-
-def temps_CPU(self,restant_old,temps_iter_old):
-   # Fonction controlant le temps CPU restant
-   CPU=INFO_EXEC_ASTER(LISTE_INFO = ("CPU_RESTANT",))
-   TEMPS=CPU['CPU_RESTANT',1]
-   DETRUIRE(CONCEPT=_F(NOM='CPU'),INFO=1)
-   err=0
-   # Indique une execution interactive
-   if (TEMPS>1.E+9):
-     return 0.,0.,0
-   # Indique une execution en batch
-   else:
-      restant=TEMPS
-      # Initialisation
-      if (restant_old==0.):
-         temps_iter=-1.
-      else:
-         # Première mesure
-         if (temps_iter_old==-1.):
-            temps_iter=(restant_old-restant)
-         # Mesure courante
-         else:
-            temps_iter=(temps_iter_old + (restant_old-restant))/2.
-         if ((temps_iter>0.96*restant)or(restant<0.)):
-            err=1
-            self.cr.fatal("<F> <MACR_RECAL> Arret de MACR_RECAL par manque de temps CPU")
-   return restant,temps_iter,err
-
-
-
-
-def Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,ul_out):  
-   # on resoud le système par contraintes actives:
-   #    Q.dval + s + d =0
-   #    soumis à :
-   #    borne_inf < dval < borne_sup 
-   #            0 <  s
-   #            s.(borne_inf - dval)=0
-   #            s.(borne_sup - dval)=0
-   dim = len(val)
-   id = Numeric.identity(dim)
-   # Matrice du système
-   Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
-   # Second membre du système
-   d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
-   # Ens. de liaisons actives
-   Act=Numeric.array([])
-   k=0
-   done=0
-   # Increment des parametres 
-   dval=Numeric.zeros(dim,Numeric.Float)
-   while done <1 :
-      k=k+1
-      I=Numeric.ones(dim)
-      for i in Act:
-         I[i]=0
-      I=Numeric.nonzero(Numeric.greater(I,0))
-      s=Numeric.zeros(dim,Numeric.Float)
-      for i in Act:
-         # test sur les bornes (on stocke si on est en butée haute ou basse)
-         if (val[i]+dval[i]>=borne_sup[i]):
-            dval[i]=borne_sup[i]-val[i]
-            s[i]=1.
-         if (val[i]+dval[i]<=borne_inf[i]):
-            dval[i]=borne_inf[i]-val[i]
-            s[i]=-1.
-      if (len(I)!=0):
-         # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
-          xi=-LinearAlgebra.solve_linear_equations(take(take(Q,I),I,1),(take(d,I)+Numeric.dot(take(take(Q,I),Act,1),take(Dim.adim(dval),Act))))
-          for i in Numeric.arange(len(I)):
-             dval[I[i]]=xi[i]*val_init[I[i]]
-      if (len(Act)!=0):
-         # s(Av)=-d(Act)-Q(Act,:).dval
-         sa=-take(d,Act)-Numeric.dot(take(Q,Act),Dim.adim(dval))
-         for i in range(len(Act)):
-            if (s[Act[i]]==-1.):
-               s[Act[i]]=-sa[i]
-            else:
-               s[Act[i]]=sa[i]
-      # Nouvel ens. de liaisons actives
-      Act=Numeric.concatenate((Numeric.nonzero(Numeric.greater(dval,borne_sup-val)),Numeric.nonzero(Numeric.less(dval,borne_inf-val)),Numeric.nonzero(Numeric.greater(s,0.))))
-      done=(max(val+dval-borne_sup)<=0)&(min(val+dval-borne_inf)>=0)&(min(s)>=0.0)
-      # Pour éviter le cyclage
-      if (k>50):
-         try:
-            l=l*2
-            Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
-            k=0
-         except:
-             res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
-             res.write('\n\nQ = \n'+Numeric.array2string(Q-l*id,array_output=1,separator=','))
-             res.write('\n\nd = '+Numeric.array2string(d,array_output=1,separator=','))
-             res.write('\n\nval = '+Numeric.array2string(val,array_output=1,separator=','))
-             res.write('\n\nval_ini= '+Numeric.array2string(val_init,array_output=1,separator=','))
-             res.write('\n\nborne_inf= '+Numeric.array2string(borne_inf,array_output=1,separator=','))
-             res.write('\n\nborne_sup= '+Numeric.array2string(borne_sup,array_output=1,separator=','))
-             self.cr.fatal("<F> <MACR_RECAL> Erreur dans l'algorithme de bornes de MACR_RECAL")
-             return 
-   newval=copy.copy(val+dval)
-   return newval,s,l,Act
-
-
-def actualise_lambda(l,val,new_val,A,erreur,new_J,old_J):
-   dim = len(val)
-   id = Numeric.identity(dim)
-   # Matrice du système
-   Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
-   # Second membre du système
-   d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
-   old_Q=old_J
-   new_Q=old_J+0.5*Numeric.dot(Numeric.transpose(new_val-val),Numeric.dot(Q,new_val-val))+Numeric.dot(Numeric.transpose(new_val-val),d)
-   # Ratio de la décroissance réelle et de l'approx. quad.
-   try:
-      R=(old_J-new_J)/(old_Q-new_Q)
-      if (R<0.25):
-         l = l*10.
-      elif (R>0.75):
-         l = l/15.
-   except ZeroDivisionError:
-      if (old_J>new_J):
-         l = l*10.
-      else:
-         l = l/10.
-   return l
-
-
-def test_convergence(gradient_init,erreur,A,s):
-   gradient = calcul_gradient(A,erreur)+s
-   epsilon = Numeric.dot(gradient,gradient)/Numeric.dot(gradient_init,gradient_init)
-   epsilon = epsilon**0.5
-   return epsilon
-
-
-# fonction appellée quand la convergence est atteinte
-# on calcule le Hessien et les valeurs propres et vecteurs 
-# propre associés au Hessien
-#  A    = sensibilite
-#  At*A = hessien
-def calcul_etat_final(para,A,iter,max_iter,prec,residu,Messg,ul_out):
-   if ((iter < max_iter) or (residu < prec)):
-      Hessien = Numeric.matrixmultiply(Numeric.transpose(A),A)
-      valeurs_propres,vecteurs_propres = LinearAlgebra.eigenvectors(Hessien) 
-      sensible=Numeric.nonzero(Numeric.greater(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-1))
-      insensible=Numeric.nonzero(Numeric.less(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-2))
-      Messg.affiche_calcul_etat_final(para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out)
-
-
-
-
-
diff --git a/Aster/Cata/Macro/reca_interp.py b/Aster/Cata/Macro/reca_interp.py
deleted file mode 100644 (file)
index 00ad62d..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-#@ MODIF reca_interp Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-import os
-import Numeric
-import Macro
-from Macro.recal import calcul_F
-
-#===========================================================================================
-
-
-# INTERPOLATION, CALCUL DE SENSIBILITE, ETC....
-
-#--------------------------------------
-class Sim_exp :
-
-   def __init__ (self,result_exp,poids) :
-      self.resu_exp = result_exp
-      self.poids = poids
-
-# Distance verticale d'un point M à une ligne brisée composée de n points
-             
-   def DistVertAdimPointLigneBrisee (self, M, points) :
-   # M      = Point               (2 colonnes, 1 ligne)
-   # points = Tableau de n points (2 colonnes, n lignes)
-   # on suppose qu'il existe au moins 2 points, 
-   # et que les points sont classés selon les abscisses croissantes
-         n = len(points)
-         if ( M[0] < points[0][0] ) or ( M[0] > points[n-1][0] ) :
-           return 0.
-         i = 1
-         while M[0] > points[i][0] :
-            i = i+1
-         y_proj_vert = (M[0]-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1]  
-         d = (M[1] - y_proj_vert)
-              # Attention: la distance n'est pas normalisée
-              # Attention: problème si points[0][0] = points[1][0] = M[0]
-              # Attention: problème si M[1] = 0
-         return d
-
-
-# La Fonction Interpole ,interpole une et une seule F_calc sur F_exp et renvoie l'erreur seulement
-   def Interpole (self, F_calc,experience,poids) :   #ici on passe en argument "une" experience
-      n = 0
-      resu_num = F_calc
-      n_exp = len(experience)    # nombre de points sur la courbe expérimentale num.i    
-      stockage = Numeric.ones(n_exp, Numeric.Float)     # matrice de stockage des erreurs en chaque point
-      for j in xrange(n_exp) :
-         d = self.DistVertAdimPointLigneBrisee(experience[j], resu_num)
-         try:
-            stockage[n] = d/experience[j][1]
-         except ZeroDivisionError:
-            stockage[n] = d
-         n = n + 1         # on totalise le nombre de points valables
-      err = Numeric.ones(n, Numeric.Float) 
-      for i in xrange(n) :
-          err[i] = poids*stockage[i]
-      return  err
-
-   #cette fonction appelle la fonction interpole et retourne les sous fonctionnelle J et l'erreur
-   def multi_interpole(self,L_F, reponses):    #on interpole toutes les reponses une à une en appelent la methode interpole
-      L_erreur=[]
-      for i in range(len(reponses)):   
-         err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
-         L_erreur.append(err)
-      #on transforme L_erreur en tab num
-      dim=[]
-      J=[]
-      for i in range(len(L_erreur)):
-         dim.append(len(L_erreur[i]))
-      dim_totale = Numeric.sum(dim)
-      L_J = self.calcul_J(L_erreur)
-      a=0
-      erreur = Numeric.zeros((dim_totale),Numeric.Float)
-      for n in range(len(L_erreur)):
-         for i in range(dim[n]):
-            erreur[i+a] = L_erreur[n][i]
-         a = dim[n]
-      del(L_erreur) #on vide la liste puisqu'on n'en a plus besoin
-      return L_J,erreur
-
-   #cette fonction retourne seulement l'erreur ,je l'appelle dans la methode sensibilité
-   #on interpole toutes les reponses une à une en appelent la methode interpole
-   def multi_interpole_sensib(self,L_F,reponses):    
-      L_erreur=[]
-      for i in range(len(reponses)):   
-         err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
-         L_erreur.append(err)
-      #on transforme L_erreur en tab num
-      return L_erreur
-       
-   def calcul_J(self,L_erreur):
-      L_J = []
-      for i in range(len(L_erreur)):
-         total = 0
-         for j in range(len(L_erreur[i])):
-            total = total + L_erreur[i][j]**2
-         L_J.append(total)
-      return L_J
-   
-   def norme_J(self,L_J_init,L_J,unite_resu):
-   #cette fonction calcul une valeur normée de J
-      for i in range(len(L_J)):
-         try:
-            L_J[i] = L_J[i]/L_J_init[i]
-         except ZeroDivisionError:
-            fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
-            fic.write('\n Problème de division par zéro dans la normalisation de la fonctionnelle.')
-            fic.write('\n Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :'+ str(L_J_init))
-            fic.close()
-            self.cr.fatal("<F> <MACR_RECAL> Problème de division par zéro dans la normalisation de la fonctionnelle.\nUne des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :"+ str(L_J_init))
-            return
-            
-      J = Numeric.sum(L_J)
-      J = J/len(L_J)
-      return J  
-   
-   def sensibilite(self,objet,UL,F,val,para,reponses,pas,unite_resu):
-      F_interp=self.multi_interpole_sensib(F, reponses)  #F_interp est une liste contenant des tab num des reponses interpolés
-      L_A=[]                              #creation de la liste des matrices de sensibilités
-      for i in range(len(reponses)):     
-         L_A.append(Numeric.zeros((len(self.resu_exp[i]),len(val)),Numeric.Float) )
-      #calcul de la sensibilité 
-      fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
-      fic.write('\nCalcul de la sensibilité par rapport à :')
-      fic.close() 
-      for k in range(len(val)): #pour une colone de A
-         h = val[k]*pas
-         val[k] = val[k] + h
-         F_perturbe = calcul_F(objet,UL,para,val,reponses)
-         fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
-         fic.write(' '+para[k])
-         fic.close() 
-         F_perturbe_interp =self.multi_interpole_sensib(F_perturbe, reponses)
-         val[k] = val[k] - h
-         for j in range(len(reponses)):
-            for i in range(len(self.resu_exp[j])):
-               try:
-                  L_A[j][i,k] = -1*(F_interp[j][i] - F_perturbe_interp[j][i])/h
-               except ZeroDivisionError:
-                  fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
-                  fic.write('\n Probleme de division par zéro dans le calcul de la matrice de sensiblité')
-                  fic.write('\n Le parametre '+para[k]+'est nul ou plus petit que la précision machine')
-                  fic.close() 
-                  self.cr.fatal("<F> <MACR_RECAL> Probleme de division par zéro dans le calcul de la matrice de sensiblité.\n Le parametre "+para[k]+"est nul ou plus petit que la précision machine")
-                  return
-      #on construit la matrice de sensiblité sous forme d'un tab num
-      dim =[]
-      for i in range(len(L_A)):
-         dim.append(len(L_A[i]))
-      dim_totale = Numeric.sum(dim)
-      a=0
-      A = Numeric.zeros((dim_totale,len(val)),Numeric.Float)
-      for n in range(len(L_A)):
-         for k in range(len(val)):
-            for i in range(dim[n]):
-               A[i+a][k] = L_A[n][i,k]
-         a=dim[n]
-      del(L_A) #on ecrase tout ce qu'il y a dans L_A puisqu'on n'en a plus besoin   
-      return A
-
-
-
diff --git a/Aster/Cata/Macro/reca_message.py b/Aster/Cata/Macro/reca_message.py
deleted file mode 100644 (file)
index 0691b78..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-#@ MODIF reca_message Macro  DATE 14/09/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-import os,Numeric
-
-#===========================================================================================
-
-
-# AFFICHAGE DES MESSAGES
-
-class Message :
-   """classe gérant l'affichage des messages concernant le déroulement de l'optmisation """
-   #Constructeur de la classe
-   def __init__(self,para,val_init,resu_exp,ul_out):
-      self.nom_para = para
-      self.res_exp = resu_exp
-      res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
-      res.write(' <INFO>  MACR_RECAL V1.1 \n\n\n')
-      res.close()
-      
-   
-   def affiche_result_iter(self,iter,J,val,residu,Act,ul_out):
-      res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
-      res.write('\n=======================================================\n')
-      res.write('Iteration '+str(iter)+' :\n')
-      res.write('\n=> Fonctionnelle = '+str(J))
-      res.write('\n=> Résidu        = '+str(residu))
-      res.write('\n=> Paramètres    = ')
-      for i in range(len(val)):
-         res.write('\n         '+ self.nom_para[i]+' = '+str(val[i]) )
-      if (len(Act)!=0):
-         if (len(Act)==1):
-            res.write('\n\n Le paramètre ')
-         else:
-            res.write('\n\n Les paramètres ')
-         for i in Act:
-            res.write(self.nom_para[i]+' ')
-         if (len(Act)==1):
-            res.write('\n est en butée sur un bord de leur domaine admissible.')
-         else:
-            res.write('\n sont en butée sur un bord de leur domaine admissible.')
-      res.write('\n=======================================================\n\n')
-      res.close()
-   
-   def affiche_etat_final_convergence(self,iter,max_iter,prec,residu,Act,ul_out):
-      res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
-      if ((iter < max_iter) or (residu < prec)):
-        res.write('\n=======================================================\n') 
-        res.write('                   CONVERGENCE ATTEINTE                ')
-        if (len(Act)!=0):
-           res.write("\n\n         ATTENTION : L'OPTIMUM EST ATTEINT AVEC      ")
-           res.write("\n           DES PARAMETRES EN BUTEE SUR LE BORD     ")
-           res.write("\n               DU DOMAINE ADMISSIBLE                 ")
-        res.write('\n=======================================================\n') 
-        res.close()
-      else:
-        res.write("\n=======================================================\n")
-        res.write('               CONVERGENCE  NON ATTEINTE              ')
-        res.write("\n  Le nombre maximal  d'itération ("+str(max_iter)+") a été dépassé")                    
-        res.write('\n=======================================================\n')
-        res.close()
-
-   def affiche_calcul_etat_final(self,para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out):
-        res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
-        res.write('\n\nValeurs propres du Hessien:\n')
-        res.write(str( valeurs_propres))
-        res.write('\n\nVecteurs propres associés:\n')
-        res.write(str( vecteurs_propres))
-        res.write('\n\n              --------')
-        res.write('\n\nOn peut en déduire que :')
-        # Paramètres sensibles
-        if (len(sensible)!=0):
-           res.write('\n\nLes combinaisons suivantes de paramètres sont prépondérantes pour votre calcul :\n')
-           k=0
-           for i in sensible:
-              k=k+1
-              colonne=vecteurs_propres[:,i]
-              numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
-              res.write('\n   '+str(k)+') ')
-              for j in numero:
-                 res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
-              res.write('\n      associée à la valeur propre %3.1E \n' %valeurs_propres[i])
-        # Paramètres insensibles
-        if (len(insensible)!=0):
-           res.write('\n\nLes combinaisons suivantes de paramètres sont insensibles pour votre calcul :\n')
-           k=0
-           for i in insensible:
-              k=k+1
-              colonne=vecteurs_propres[:,i]
-              numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
-              res.write('\n   '+str(k)+') ')
-              for j in numero:
-                 res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
-              res.write('\n      associée à la valeur propre %3.1E \n' %valeurs_propres[i])
-        res.close()
-      
-   
-
diff --git a/Aster/Cata/Macro/recal.py b/Aster/Cata/Macro/recal.py
deleted file mode 100644 (file)
index 591614c..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-#@ MODIF recal Macro  DATE 14/03/2005   AUTEUR DURAND C.DURAND 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
-# (AT YOUR OPTION) ANY LATER VERSION.                                                  
-#                                                                       
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
-#                                                                       
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
-# ======================================================================
-
-
-
-
-import string
-import copy
-import Numeric
-import types
-import Gnuplot
-import Cata
-from Cata.cata import INCLUDE,DETRUIRE
-from Accas import _F
-
-import os
-
-
-#_____________________________________________
-#
-# DIVERS UTILITAIRES POUR LA MACRO
-#_____________________________________________
-
-
-# Transforme les donneés entrées par l'utilsateur en tableau Numeric
-def transforme_list_Num(parametres,res_exp):
-   dim_para = len(parametres)  #donne le nb de parametres
-   val_para = Numeric.zeros(dim_para,Numeric.Float)
-   borne_inf = Numeric.zeros(dim_para,Numeric.Float)
-   borne_sup = Numeric.zeros(dim_para,Numeric.Float)
-   para = []
-   for i in range(dim_para):
-      para.append(parametres[i][0])
-      val_para[i] = parametres[i][1]
-      borne_inf[i] = parametres[i][2]
-      borne_sup[i] = parametres[i][3]
-   return para,val_para,borne_inf,borne_sup
-
-def mes_concepts(list_concepts=[],base=None):
-  # Fonction qui liste les concepts créés
-   for e in base.etapes:
-      if e.nom in ('INCLUDE','MACR_RECAL',) :
-        list_concepts=list(mes_concepts(list_concepts=list_concepts,base=e))
-      elif (e.sd != None) and (e.parent.nom=='INCLUDE') :
-        nom_concept=e.sd.get_name()
-        if not(nom_concept in list_concepts):
-          list_concepts.append( nom_concept )
-   return tuple(list_concepts)
-
-
-def detr_concepts(self):
-     liste_concepts=mes_concepts(base=self.parent)
-     for e in liste_concepts:
-        nom = string.strip(e)
-        DETRUIRE( CONCEPT =self.g_context['_F'](NOM = nom),INFO=1)
-        if self.jdc.g_context.has_key(nom) : del self.jdc.g_context[nom]
-     del(liste_concepts)
-
-
-def calcul_F(self,UL,para,val,reponses):
-      fic = open('fort.'+str(UL),'r')
-      #On stocke le contenu de fort.UL dans la variable fichier qui est un string 
-      fichier=fic.read()
-      #On stocke le contenu initial de fort.UL dans la variable fichiersauv 
-      fichiersauv=copy.copy(fichier)
-      fic.close()
-
-      #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 
-      #on ajoute ces blocs dans la liste Fichier_Resu
-      Fichier_Resu=[]                      
-      
-      try: 
-         #cherche l'indice de DEBUT()
-         index_deb=string.index(fichier,'DEBUT(')
-         while( fichier[index_deb]!='\n'):
-            index_deb=index_deb+1
-         #on restreind fichier en enlevant 'DEBUT();'
-         fichier = fichier[index_deb+1:]   
-      except :
-         #on va dans l'except si on a modifié le fichier au moins une fois
-         pass 
-         
-      try:
-         #cherche l'indice de FIN()
-         index_fin = string.index(fichier,'FIN(')
-         #on restreind fichier en enlevant 'FIN();'
-         fichier = fichier[:index_fin]   
-      except : pass
-      #--------------------------------------------------------------------------------
-      #on cherche à délimiter le bloc des parametres dans le fichier
-      #Tout d'abord on cherche les indices  d'apparition des paras dans le fichier 
-      #en effet l'utilisateur n'est pas obligé de rentrer les paras dans optimise
-      #avec le meme ordre de son fichier de commande
-      index_para = Numeric.zeros(len(para))
-      for i in range(len(para)):
-         index_para[i] = string.index(fichier,para[i])
-      #On range les indices par ordre croissant afin de déterminer
-      #les indice_max et indice_min
-      index_para = Numeric.sort(index_para)
-      index_first_para = index_para[0]
-      index_last_para = index_para[len(index_para)-1]
-      
-      
-      #on va délimiter les blocs intermédiaires entre chaque para "utiles" à l'optimsation
-      bloc_inter ='\n'
-      for i in range(len(para)-1):
-         j = index_para[i]
-         k = index_para[i+1]
-         while(fichier[j]!= '\n'):
-            j=j+1
-         bloc_inter=bloc_inter + fichier[j:k] + '\n'
-         
-      #on veut se placer sur le premier retour chariot que l'on trouve sur la ligne du dernier para
-      i = index_last_para 
-      while(fichier[i] != '\n'):
-         i = i + 1
-      index_last_para  = i
-      #on délimite les blocs suivants:
-      pre_bloc = fichier[:index_first_para]       #fichier avant premier parametre
-      post_bloc = fichier[ index_last_para+ 1:]    #fichier après dernier parametre
-      
-      #on ajoute dans L tous ce qui est avant le premier paramètre 
-      Fichier_Resu.append(pre_bloc)
-      Fichier_Resu.append('\n')
-      #On ajoute la nouvelle valeur des parametres
-      dim_para=len(para)
-      for j in range(dim_para):
-         Fichier_Resu.append(para[j]+'='+str(val[j]) + ';' + '\n')
-      #On ajoute à Fichier_Resu tous ce qui est entre les parametres
-      Fichier_Resu.append(bloc_inter)
-      
-      Fichier_Resu.append(post_bloc)
-      #--------------------------------------------------------------------------------
-      #on va ajouter la fonction d'extraction du numarray de la table par la méthode Array 
-      #et on stocke les réponses calculées dans la liste Lrep
-      #qui va etre retournée par la fonction calcul_F
-      self.g_context['Lrep'] = []
-      Fichier_Resu.append('Lrep=[]'+'\n')
-      for i in range(len(reponses)):
-         Fichier_Resu.append('t'+str(reponses[i][0])+'='+str(reponses[i][0])+'.EXTR_TABLE()'+'\n')
-         Fichier_Resu.append('F = '+'t'+str(reponses[i][0])+'.Array('+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\n')
-         Fichier_Resu.append('Lrep.append(F)'+'\n')
-      
-      #ouverture du fichier fort.3 et mise a jour de celui ci
-      x=open('fort.'+str(UL),'w')
-      x.writelines('from Accas import _F \nfrom Cata.cata import * \n')
-      x.writelines(Fichier_Resu)
-      x.close()
-      del(Fichier_Resu)
-      del(pre_bloc)
-      del(post_bloc)
-      del(fichier)
-      
-      INCLUDE(UNITE = UL)
-      detr_concepts(self)
-      # on remet le fichier dans son etat initial
-      x=open('fort.'+str(UL),'w')
-      x.writelines(fichiersauv)
-      x.close()
-      return self.g_context['Lrep']
-
-#_____________________________________________
-#
-# IMPRESSIONS GRAPHIQUES
-#_____________________________________________
-
-def graphique(L_F,res_exp,reponses,iter,UL_out,interactif):
-   graphe=[]
-   impr=Gnuplot.Gnuplot()
-   Gnuplot.GnuplotOpts.prefer_inline_data=1
-   impr('set data style linespoints')
-   impr('set grid')
-   impr('set pointsize 2.')
-   impr('set terminal postscript color')
-   impr('set output "fort.'+str(UL_out)+'"')
-   for i in range(len(L_F)):
-         if interactif:
-            graphe.append(Gnuplot.Gnuplot(persist=0))
-            graphe[i]('set data style linespoints')
-            graphe[i]('set grid')
-            graphe[i]('set pointsize 2.')
-            graphe[i].xlabel(reponses[i][1])
-            graphe[i].ylabel(reponses[i][2])
-            graphe[i].title(reponses[i][0]+'  Iteration '+str(iter))
-            graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-            graphe[i]('pause 5')
-#
-         impr.xlabel(reponses[i][1])
-         impr.ylabel(reponses[i][2])
-         impr.title(reponses[i][0]+'  Iteration '+str(iter))
-         impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-
-
-#_____________________________________________
-#
-# CONTROLE DES ENTREES UTILISATEUR
-#_____________________________________________
-
-def erreur_de_type(code_erreur,X):
-   #code_erreur ==0 --> X est une liste
-   #code erreur ==1 --> X est un char
-   #code erreur ==2 --> X est un float
-   #test est un boolean (test = 0 défaut et 1 si un test if est verifier
-   txt=""
-   if(code_erreur == 0 ):
-      if type(X) is not types.ListType:
-         txt="\nCette entrée: " +str(X)+" n'est pas une liste valide"
-   if(code_erreur == 1 ):
-      if type(X) is not types.StringType:
-         txt="\nCette entrée: " +str(X)+" n'est pas une chaine de caractère valide ; Veuillez la ressaisir en lui appliquant le type char de python"
-   if(code_erreur == 2 ):
-      if type(X) is not types.FloatType:
-         txt="\nCette entrée:  " +str(X)+" n'est pas une valeur float valide ; Veuillez la ressaisir en lui appliquant le type float de python"
-   return txt
-   
-   
-def erreur_dimension(PARAMETRES,REPONSES):
-#On verifie que la dimension de chaque sous_liste de parametre est 4
-#et que la dimension de chaque sous_liste de REPONSES est 3
-   txt=""
-   for i in range(len(PARAMETRES)):
-      if (len(PARAMETRES[i]) != 4):
-         txt=txt + "\nLa sous-liste de la variable paramètre numéro " + str(i+1)+" n'est pas de longueur 4"
-   for i in range(len(REPONSES)):
-      if (len(REPONSES[i]) != 3):
-         txt=txt + "\nLa sous-liste de la variable réponse numéro " + str(i+1)+" n'est pas de longueur 3"
-   return txt
-
-
-def compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP):
-   # X et Y sont deux arguments qui doivent avoir la meme dimension
-   # pour éviter l'arret du programme
-   txt=""
-   if( len(REPONSES) != len(RESU_EXP)):
-      txt="\nVous avez entré " +str(len(REPONSES))+ " réponses et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de réponses que de résultats expérimentaux"
-   return txt
-
-def compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP):
-   # POIDS et Y sont deux arguments qui doivent avoir la meme dimension
-   # pour éviter l'arret du programme
-   txt=""
-   if( len(POIDS) != len(RESU_EXP)):
-      txt="\nVous avez entré " +str(len(POIDS))+ " poids et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de poids que de résultats expérimentaux"
-   return txt
-
-
-def verif_fichier(UL,PARAMETRES,REPONSES):
-#On verifie les occurences des noms des PARAMETRES et REPONSES 
-#dans le fichier de commande ASTER
-   txt=""
-   fichier = open('fort.'+str(UL),'r')
-   fic=fichier.read()
-   for i in range(len(PARAMETRES)):
-      if((string.find(fic,PARAMETRES[i][0])==-1) or ((string.find(fic,PARAMETRES[i][0]+'=')==-1) and (string.find(fic,PARAMETRES[i][0]+' ')==-1))):
-         txt=txt + "\nLe paramètre "+PARAMETRES[i][0]+" que vous avez entré pour la phase d'optimisation n'a pas été trouvé dans votre fichier de commandes ASTER"
-   for i in range(len(REPONSES)):
-      if((string.find(fic,REPONSES[i][0])==-1) or ((string.find(fic,REPONSES[i][0]+'=')==-1) and (string.find(fic,REPONSES[i][0]+' ')==-1))):
-         txt=txt + "\nLa réponse  "+REPONSES[i][0]+" que vous avez entrée pour la phase d'optimisation n'a pas été trouvée dans votre fichier de commandes ASTER"
-   return txt
-
-
-def verif_valeurs_des_PARAMETRES(PARAMETRES):
-#On verifie que pour chaque PARAMETRES de l'optimisation
-# les valeurs entrées par l'utilisateur sont telles que :
-#              val_inf<val_sup
-#              val_init appartient à [borne_inf, borne_sup] 
-#              val_init!=0         
-#              borne_sup!=0         
-#              borne_inf!=0         
-   txt=""
-   #verification des bornes
-   for i in range(len(PARAMETRES)):
-      if( PARAMETRES[i][2] >PARAMETRES[i][3]):
-         txt=txt + "\nLa borne inférieure "+str(PARAMETRES[i][2])+" de  "+PARAMETRES[i][0]+ "est plus grande que sa borne supérieure"+str(PARAMETRES[i][3])
-   #verification de l'encadrement de val_init 
-   for i in range(len(PARAMETRES)):
-      if( (PARAMETRES[i][1] < PARAMETRES[i][2]) or (PARAMETRES[i][1] > PARAMETRES[i][3])):
-         txt=txt + "\nLa valeur initiale "+str(PARAMETRES[i][1])+" de "+PARAMETRES[i][0]+ " n'est pas dans l'intervalle [borne_inf,born_inf]=["+str(PARAMETRES[i][2])+" , "+str(PARAMETRES[i][3])+"]"
-   #verification que val_init !=0
-   for  i in range(len(PARAMETRES)):
-      if (PARAMETRES[i][1] == 0. ):
-         txt=txt + "\nProblème de valeurs initiales pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur initiale nulle mais un ordre de grandeur."
-   #verification que borne_sup !=0
-   for  i in range(len(PARAMETRES)):
-      if (PARAMETRES[i][3] == 0. ):
-         txt=txt + "\nProblème de borne supérieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
-   #verification que borne_inf !=0
-   for  i in range(len(PARAMETRES)):
-      if (PARAMETRES[i][2] == 0. ):
-         txt=txt + "\nProblème de borne inférieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
-   return txt
-
-
-def verif_UNITE(GRAPHIQUE,UNITE_RESU):
-   # On vérifie que les unités de résultat et 
-   # de graphique sont différentes
-   txt=""
-   GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
-   if (GRAPHE_UL_OUT==UNITE_RESU):
-       txt=txt + "\nLes unités logiques des fichiers de résultats graphiques et de résultats d'optimisation sont les memes."
-   return txt
-
-
-
-def gestion(UL,PARAMETRES,REPONSES,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU):
-   #Cette methode va utiliser les methodes de cette classe declarée ci_dessus
-   #test  est un boolean: test=0 -> pas d'erreur
-   #                      test=1 -> erreur détectée
-
-   texte=""
-   #On vérifie d'abord si PARAMETRES, REPONSES, RESU_EXP sont bien des listes au sens python
-   #test de PARAMETRES
-   texte = texte + erreur_de_type(0,PARAMETRES)
-   #test de REPONSES
-   texte = texte + erreur_de_type(0,REPONSES)
-   #test de RESU_EXP
-   texte = texte + erreur_de_type(0,RESU_EXP) 
-   
-   #On vérifie si chaque sous liste de PARAMETRES, REPONSES,  possède le type adéquat
-   #test des sous_listes de PARAMETRES
-   for i in range(len(PARAMETRES)):
-      texte = texte +  erreur_de_type(0,PARAMETRES[i]) 
-   #test des sous_listes de REPONSES
-   for i in range(len(REPONSES)):
-      texte = texte + erreur_de_type(0,REPONSES[i])
-   #On verifie si la dimension de chaque sous-liste de : PARAMETRES, REPONSES
-   #il faut que:la dimension d'une sous-liste de PARAMETRES = 4
-   #et   que    la dimension d'une sous liste de REPONSES   = 3
-   texte = texte + erreur_dimension(PARAMETRES,REPONSES)
-
-   #on verifie que l'on a autant de réponses que de résultats expérimentaux
-   texte = texte + compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP)
-   #on verifie que l'on a autant de poids que de résultats expérimentaux
-   texte = texte + compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP)
-
-   #on verifie les types des arguments de chaque sous liste de PARAMETRES et REPONSES
-      #verification du type stringet type float des arguments de PARAMETRES
-   for i in range(len(PARAMETRES)):
-      texte = texte + erreur_de_type(1,PARAMETRES[i][0])
-      for k in [1,2,3]:
-         texte = texte + erreur_de_type(2,PARAMETRES[i][k])
-         
-   #verification du type string pour les arguments  de REPONSES
-   for i in range(len(REPONSES)):
-      for j in range(len(REPONSES[i])):
-         texte = texte + erreur_de_type(1,REPONSES[i][j])
-   
-   #verification du fichier de commndes ASTER
-   texte = texte + verif_fichier(UL,PARAMETRES,REPONSES)
-
-   #verifiaction des valeurs des PARAMETRES entrées par l'utilisteur 
-   texte = texte + verif_valeurs_des_PARAMETRES(PARAMETRES)
-
-   #verifiaction des unités logiques renseignées par l'utilisateur
-   texte = texte + verif_UNITE(GRAPHIQUE,UNITE_RESU)
-
-   return texte
-   
-
diff --git a/Aster/Cata/Macro/stanley_ops.py b/Aster/Cata/Macro/stanley_ops.py
deleted file mode 100644 (file)
index a38f280..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#@ MODIF stanley_ops Macro  DATE 30/11/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- 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.        
-# ======================================================================
-
-
-
-def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,**args):
-
-  """
-     Importation et lancement de Stanley
-  """
-
-  import os,string
-  import aster
-  from Accas import _F
-  from Noyau.N_utils import AsType
-  from Utilitai.Utmess import UTMESS
-
-  ier=0
-
-  # La macro compte pour 1 dans la numerotation des commandes
-  self.icmd=1
-
-
-  # On ne lance Stanley que si la variable DISPLAY est définie
-  if os.environ.has_key('DISPLAY'):
-  
-    import Stanley
-    from Stanley import stanley
-  
-    if (RESULTAT and MODELE and CHAM_MATER):
-      _MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE    .NOMA        ' )
-      _MAIL = string.strip(_MAIL[0])
-      MAILLAGE = self.jdc.g_context[_MAIL]
-      if CARA_ELEM:
-        stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM)
-      else:
-        stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
-    else:
-      stanley.PRE_STANLEY()
-
-  else:
-      UTMESS('A','STANLEY',
-            """Aucune variable d'environnement DISPLAY définie !
-               STANLEY ne pourra pas fonctionner. On l'ignore.
-
-               Si vous etes en Interactif, cochez le bouton Suivi Interactif
-               dans ASTK.""")
-
-  return ier
diff --git a/Aster/Cata/Macro/test_fichier_ops.py b/Aster/Cata/Macro/test_fichier_ops.py
deleted file mode 100644 (file)
index 5f4ac11..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-#@ MODIF test_fichier_ops Macro  DATE 03/11/2004   AUTEUR MCOURTOI M.COURTOIS 
-# -*- 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.        
-# ======================================================================
-
-#-------------------------------------------------------------------------------
-def test_fichier_ops(self, UNITE, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
-   """
-     Macro TEST_FICHIER permettant de tester la non-regression d'un fichier
-     'a une tolerance' pres pour les nombres reels en calculant
-     le md5sum.
-   """
-   import aster
-   from Accas import _F
-   ier=0
-   # La macro compte pour 1 dans la numerotation des commandes
-   #self.icmd=1
-   self.set_icmd(1)
-
-   # On importe les definitions des commandes a utiliser dans la macro
-   # Le nom de la variable doit etre obligatoirement le nom de la commande
-   INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
-   DETRUIRE        = self.get_cmd('DETRUIRE')
-   CREA_TABLE      = self.get_cmd('CREA_TABLE')
-   TEST_TABLE      = self.get_cmd('TEST_TABLE')
-
-   import os.path
-   import re
-   from types import StringType
-   from Macro.test_fichier_ops import md5file
-
-   # vérifie la syntaxe des expressions régulières fournies
-   l_regexp=[]
-   if args['EXPR_IGNORE']:
-      if type(args['EXPR_IGNORE']) is StringType:
-         lexp = [args['EXPR_IGNORE']]
-      else:
-         lexp = args['EXPR_IGNORE']
-      for exp in lexp:
-         try:
-            obj=re.compile(exp)
-         except re.error, s:
-            print '<F> <TEST_FICHIER> <INVALID_REGEXP> '+str(s)+' pour "'+exp+'"'
-         else:
-            l_regexp.append(exp)
-      if len(l_regexp) < len(lexp):
-         self.cr.fatal(' <F> <TEST_FICHIER> Expression régulière invalide (voir <INVALID_REGEXP>)')
-
-
-   is_ok=0
-
-   # vérifier que le fichier a été fermé
-   tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
-   
-   if tinfo__['ETAT_UNITE',1].find('OUVERT')>-1:
-      print "<A> <TEST_FICHIER> LE FICHIER N'A PAS ETE FERME :\n",FICHIER
-
-   # fichier correctement fermé
-   else:
-      # calcule le md5sum du fichier
-      ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
-      if ier != 0:
-         if ier==4:
-            texte_erreur='Fichier inexistant : '+FICHIER
-         else:
-            texte_erreur='Erreur dans md5file, code retour = '+str(ier)
-         texte_erreur='<S> <TEST_FICHIER> '+texte_erreur
-         # aujourd'hui, je ne sais pas déclencher autre chose que <F>...
-         self.cr.fatal(texte_erreur)
-         return ier
-
-      # comparaison a la reference
-      if INFO > 0 :
-         print ' %-20s : %32s' % ('REFERENCE',VALE_K)
-         print
-
-      if mdsum == VALE_K:
-         is_ok=1
-
-   # produit le TEST_TABLE
-   tab1__=CREA_TABLE(LISTE=(_F(PARA='TEST',
-                               TYPE_K='K8',
-                               LISTE_K='VALEUR  ',),
-                            _F(PARA='BOOLEEN',
-                               LISTE_I=is_ok,),),)
-   if args['REFERENCE'] == 'NON_REGRESSION':
-      TEST_TABLE(UNITE=UNITE,
-                 TABLE=tab1__,
-                 FILTRE=_F(NOM_PARA='TEST',
-                           VALE_K='VALEUR  ',),
-                 NOM_PARA='BOOLEEN',
-                 VALE_I=1,
-                 PRECISION=1.e-3,
-                 CRITERE='ABSOLU',
-                 REFERENCE=args['REFERENCE'],
-                 VERSION=args['VERSION'],)
-   else:
-      TEST_TABLE(UNITE=UNITE,
-                 TABLE=tab1__,
-                 FILTRE=_F(NOM_PARA='TEST',
-                           VALE_K='VALEUR  ',),
-                 NOM_PARA='BOOLEEN',
-                 VALE_I=1,
-                 PRECISION=1.e-3,
-                 CRITERE='ABSOLU',
-                 REFERENCE=args['REFERENCE'],)
-
-   DETRUIRE(CONCEPT=_F(NOM=('tinfo__','tab1__'),),
-            ALARME='NON',INFO=1,)
-   return ier
-
-
-#-------------------------------------------------------------------------------
-def md5file(fich,nbch,epsi,regexp_ignore=[],info=0):
-   """
-   Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
-   reels a la valeur significative.
-   IN :
-      fich          : nom du fichier
-      nbch          : nombre de decimales significatives
-      epsi          : valeur en deca de laquelle on prend 0
-      regexp_ignore : liste d'expressions régulières permettant d'ignorer
-         certaines lignes
-   OUT :
-      code retour : 0 si ok, >0 sinon
-      md5sum
-   """
-   import os.path
-   import re
-   import string
-   import math
-   import md5
-   #      1 Mo   10 Mo   100 Mo
-   # v0   2.6 s  20.4 s  196.6 s
-   # v1   2.0 s  10.3 s  94.9 s (pas de distinction entier/reel)
-   # remplacer le try/except par if re.search(...), 80% plus lent
-   if not os.path.isfile(fich):
-      return 4, ''
-   f=open(fich,'r')
-   format_float='%'+str(nbch+7)+'.'+str(nbch)+'g'
-   m=md5.new()
-   i=0
-   for ligne in f:
-      i=i+1
-      if info>=2:
-         print 'LIGNE',i,
-      keep=True
-      for exp in regexp_ignore:
-         if re.search(exp,ligne):
-            keep=False
-            if info>=2:
-               print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
-            break
-      if keep:
-         #r=string.split(ligne)
-         # découpe des nombres collés : 1.34E-142-1.233D+09
-         r=string.split(re.sub('([0-9]+)\-','\g<1> -',ligne))
-         for x in r:
-            try:
-               if abs(float(x))<epsi:
-                  s='0'
-               else:
-                  s=format_float % float(x)
-            except ValueError:
-               s=x
-            if info>=2:
-               print (' %'+str(nbch+7)+'s') % s,
-            m.update(s)
-      if info>=2:
-         print
-   f.close()
-   md5sum=m.hexdigest()
-   if info>=1:
-      form=' %-20s : %32s'
-      print form % ('Fichier',fich)
-      print form % ('Nombre de lignes',str(i))
-      print form % ('Format des reels',format_float)
-      print form % ('Epsilon',str(epsi))
-      print form % ('md5sum',md5sum)
-   return 0, md5sum