]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
menage
authorpascale.noyret <pascale.noyret@edf.fr>
Thu, 9 Feb 2017 17:14:44 +0000 (18:14 +0100)
committerpascale.noyret <pascale.noyret@edf.fr>
Thu, 9 Feb 2017 17:14:44 +0000 (18:14 +0100)
generator/CMakeLists.txt
generator/DefautASTER.py [deleted file]
generator/generator_asterv5.py [deleted file]
generator/oldCodes/DefautASTER.py [new file with mode: 0644]
generator/oldCodes/generator_asterv5.py [new file with mode: 0644]

index 708741bb896ddb4c8ffa5b1de535bf0b337a9d04..5b33fb6f4e1c8e89802a05ea860e18a38263237d 100644 (file)
@@ -24,27 +24,8 @@ install ( FILES __init__.py generator_python.py Formatage.py generator_aplat.py
           DESTINATION ${CMAKE_INSTALL_PREFIX}/generator
         )
 
-# Installation des fichiers : Open TURNS
-if (WITH_OPENTURNS)
-  install ( FILES generator_openturns.py generator_openturns_study.py generator_openturns_wrapper.py
-                  OpenturnsBase.py OpenturnsSTD.py OpenturnsXML.py
-            DESTINATION ${CMAKE_INSTALL_PREFIX}/generator
-          )
-endif (WITH_OPENTURNS)
 
-# Installation des fichiers : Aster
-if (WITH_ASTER)
-  install ( FILES generator_asterv5.py generator_GroupMA.py generator_vers3DSalome.py 
-            DESTINATION ${CMAKE_INSTALL_PREFIX}/generator
-          )
-endif (WITH_ASTER)
 
-# Installation des fichiers : ZCRACKS
-if (WITH_ASTER)
-  install ( FILES generator_ZCracks.py
-            DESTINATION ${CMAKE_INSTALL_PREFIX}/generator
-          )
-endif (WITH_ASTER)
 
 # Installation des fichiers : MAP
 if (WITH_MAP)
diff --git a/generator/DefautASTER.py b/generator/DefautASTER.py
deleted file mode 100644 (file)
index 7a120f3..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-# Copyright (C) 2007-2013   EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
-Ce module contient les variables
-par defaut pour Aster
-"""
-
-from OpenturnsSTD import STDGenerateur
-from OpenturnsXML import XMLGenerateur
-
-#====================================================
-# Preparation du fichier STD
-#====================================================
-# C.1. Parties du texte en dur dans le fichier STD
-#-------------------------------------------------
-
-DecalSTD     = "  "
-DecalSTDsaut = "\n  "
-
-TexteSTDFIN ="\n\nexcept : \n"
-TexteSTDFIN += DecalSTD + "error_message = sys.exc_type\n"
-TexteSTDFIN += "\nif error_message is not None :\n"
-TexteSTDFIN += DecalSTD + "texte  = \"\\n=================================================\""
-TexteSTDFIN += DecalSTD + "texte += \"\\nMessage d'erreur : \" + str(error_message)"
-TexteSTDFIN += DecalSTD + "texte += \"\\n=================================================\\n\""
-TexteSTDFIN += DecalSTD + "print (texte)"
-TexteSTDFIN += DecalSTD + "\nsys.exit(error_message)\n"
-
-# C.2. Definition de composants dans le fichier STD
-#--------------------------------------------------
-
-NomFunction              = "myFunction"
-NomPhysicalStartingPoint = "myPhysicalStartingPoint"
-NomCollection            = "myCollection"
-NomCopule                = "myCopula"
-NomDistribution          = "myDistribution"
-NomRandomVector_in       = "myRandomVector_in"
-NomRandomVector_out      = "myRandomVector_out"
-NomEvent                 = "myEvent"
-NomMethod                = "myMethod"
-NomAlgo                  = "myAlgo"
-NomRoot                  = "myRoot"
-NomSampling              = "mySampling"
-NomSolverSD              = "mySolver"
-NomResu                  = "myResu"
-
-class Defaut :
-# Cette classe ajoute les parametres par defaut propres au Solver Aster
-# Elle va d abord enrichir le dictionnaire DictMCVal avec des valeurs par defaut
-# C est la methode enrichitMCVal
-# Elle va ensuite enrichir les variables
-# C est la methode enrichitListeVariables
-  
-  def __init__(self, parent) :
-       self.parent=parent
-       self.enrichitMCVal()
-       self.enrichitListeVariables()
-
-
-  def enrichitMCVal(self) :
-  #=====================
-      # InformationSolver : nom du wrapper, type de fichiers d'echange, etc
-      #----------------------------------------------------------------------
-      # Ajoute les informations sur le wrapper 
-      #        nom du wrapper, type de fichiers d'echange, etc.
-       dico = { "WrapperPath" : "Code_Aster.so",
-                 "FunctionName" : "Code_Aster",
-                 "WrapCouplingMode" : "fork",
-                 "State" : "shared",
-                 "InDataTransfer" : "files",
-                 "OutDataTransfer" : "files",
-              }
-
-       self.parent.ajouteDictMCVal(dico)
-
-      #InformationSolverFile : parametres par defaut pour les fichiers d'echange
-      #--------------------------------------------------------------------------
-
-       liste = []
-       dicoIn = { "Id" : "file_in", "Type" : "in", "Name" : "StdIn", "Path" : "commandes_aster" }
-       liste.append(dicoIn)
-       dicoOut = { "Id" : "file_out", "Type" : "out", "Name" : "StdOut", "Path" : "resultats_aster", }
-       liste.append(dicoOut)
-       dicoFile={"exchange_file" : liste} 
-       self.parent.ajouteDictMCVal(dicoFile)
-
-# D.2. InformationSolverCommande : arguments, etc
-#-------------------------------------------------------------------------
-# InformationSolverCommande est un dictionnaire indexe par le nom du solveur externe appele.
-# InformationSolverCommande[solveur] est lui-meme un dictionnaire qui contient les parametres
-# supplementaires pour la commande.
-# Des parametres sont donnes sous forme de tuple : (ok/nok, "mot-cle") ou (ok/nok, "mot-cle", valeur)
-# . On ajoute seulement si ok
-# . Avec (ok/nok, "mot-cle"), on ajoute en arguments les couples ("mot-cle", nom_du_parametre)
-# . Avec (ok/nok, "mot-cle", valeur), on ajoute en arguments les couples ("mot-cle", valeur)
-
-
-#       dico = { "file_out"    : (1, "-fic_de_aster_vers_ot"),
-#                "variable_in" : (1, "-variable") }
-#       self.parent.InformationSolverCommande["Code_Aster"] = dico          
-
-
-  def enrichitListeVariables(self) :
-       # parametres par defaut pour chaque variable
-       #--------------------------------------------
-
-       dico_in = { "Regexp" : '"^" , "Name", "(.*)= *[0-9eE.+-]+([)]?;?)$"',
-                   "Format" : '"Name", "\\1=%20.13G\\2"'
-                 }
-       dico_out = { "Regexp" : '"(.*)"' }
-       self.parent.ajouteInfoVariables(dico_in,dico_out)          
-
-class MonSTDGenerateur(STDGenerateur) :
-
-  def CreeResu (self) :
-  #------------------
-    '''
-    Le resultat :
-    . Donnees :
-      . l'algorithme choisi.
-    . Resultats :
-      . Ecriture des odres d'impression.
-    '''
-    if self.DictMCVal.has_key("Analysis"):
-       self.Analysis = str(self.DictMCVal["Analysis"])
-    else :
-       self.Analysis = None
-    self.fic_resu_OpenTURNS = "fic_resu_OpenTURNS_glop"
-    Algorithm = str (self.DictMCVal["Algorithm"])
-    texte  = "\n\n# Le resultat\n"
-    texte += DecalSTDsaut + NomResu + " = " + NomAlgo +  ".getResult()"
-    texte += DecalSTDsaut + "###" + "print ( " + NomResu+")"
-    texte += DecalSTDsaut + "text_resu  = \"Resultats\\n=======\\n\""
-
-#   Particularites des algorithmes de fiabilite
-
-    if self.Analysis in ( "Reliability", ) :
-      texte += DecalSTDsaut + "aux = " + NomResu + ".getIsStandardPointOriginInFailureSpace()"
-      texte += DecalSTDsaut + "if aux :"
-      texte += DecalSTDsaut + DecalSTD + "texte_bis = \"est\""
-      texte += DecalSTDsaut + "else :"
-      texte += DecalSTDsaut + DecalSTD + "texte_bis = \"n\'est pas\""
-      texte += DecalSTDsaut + "text_resu += \"\\nLe point initial \" + texte_bis + \" dans l\'espace de defaillance.\""
-      l_aux = [ ("Probabilite de defaillance", "EventProbability") ]
-      l_aux.append ( ("Indice de confiance generalise", "GeneralisedReliabilityIndex") )
-      l_aux.append ( ("Indice de confiance de Hasofer", "HasoferReliabilityIndex") )
-      for t_aux in l_aux :
-        texte += DecalSTDsaut + "text_resu += \"\\n" + t_aux[0] + " = \" + str(" \
-                              + NomResu + ".get" + t_aux[1] + "())"
-      l_aux = []
-      l_aux.append("StandardSpaceDesignPoint")
-      l_aux.append("PhysicalSpaceDesignPoint")
-      l_aux.append("ImportanceFactors")
-      texte += DecalSTDsaut + "l_aux_var = []"
-      for DictVariable in self.ListeVariables :
-        if ( DictVariable["Type"] == "in" ) :
-          texte += DecalSTDsaut + "l_aux_var.append(\"" + DictVariable["Name"] + "\")"
-      texte += DecalSTDsaut + "l_aux = []"
-      for type_resu in l_aux :
-        texte += DecalSTDsaut + "l_aux.append(" + NomResu + ".get" + type_resu + "())"
-      texte += DecalSTDsaut + "for resu in l_aux :"       
-      texte += DecalSTDsaut + DecalSTD + "if not resu.isEmpty() :"       
-      texte += DecalSTDsaut + DecalSTD + DecalSTD + "text_resu += \"\\n\" + resu.getName() + \" :\""       
-      texte += DecalSTDsaut + DecalSTD + DecalSTD + "size = resu.getDimension()"       
-      texte += DecalSTDsaut + DecalSTD + DecalSTD + "l_aux_1 = resu.getCollection()"       
-      texte += DecalSTDsaut + DecalSTD + DecalSTD + "for iaux in range(size) :"       
-      texte += DecalSTDsaut + DecalSTD + DecalSTD + DecalSTD + "text_resu += \"\\n. \" + l_aux_var[iaux] + \" : \" + str(l_aux_1[iaux])"       
-
-#   Particularites des algorithmes de simulation
-
-    if self.Analysis in ( "Simulation", ) :
-      l_aux = [ ("Probabilite de defaillance", "ProbabilityEstimate") ]
-      l_aux.append ( ("Variance", "VarianceEstimate") )
-      l_aux.append ( ("Nombre d\'iterations", "OuterSampling") )
-      for t_aux in l_aux :
-        texte += DecalSTDsaut + "text_resu += \"\\n" + t_aux[0] + " = \" + str(" \
-                              + NomResu + ".get" + t_aux[1] + "())"
-      texte += DecalSTDsaut + "text_resu += \"\\nNombre d'evaluations de l'etat limite = \" + str(" \
-                               + NomResu + ".getOuterSampling()*" + NomResu + ".getBlockSize())"
-      if self.DictMCVal.has_key("ConfidenceIntervalProbability") :
-        aux = self.DictMCVal["ConfidenceIntervalProbability"]
-        texte += DecalSTDsaut + "proba = " + NomResu + ".getProbabilityEstimate()"
-        texte += DecalSTDsaut + "t_aux = "
-        if ( type(aux) is type(0.) ) :
-          texte += "(" + str(aux) + ")"
-          t_aux = [ str(aux) ]
-        else :
-          texte += str(aux)
-        texte += DecalSTDsaut + "for val in t_aux :"
-        texte += DecalSTDsaut + DecalSTD + "length = " + NomResu + ".getConfidenceLength(val)"
-        texte += DecalSTDsaut + DecalSTD + "vinf = str( proba - 0.5*length )"
-        texte += DecalSTDsaut + DecalSTD + "vsup = str( proba + 0.5*length )"
-        texte += DecalSTDsaut + DecalSTD + "text_resu += \"\\nIntervalle de confiance a \" + str(val) + \" = [ \" "
-        texte += "+ vinf + \" , \" + vsup + \" ]\""
-
-#   Generalites
-
-    texte += DecalSTDsaut + "d_aux = {}"
-    texte += DecalSTDsaut + "d_aux[\"E\"] = ( \"de la fonction\", " + NomFunction + ".getEvaluationCallsNumber() )"
-    texte += DecalSTDsaut + "d_aux[\"G\"] = ( \"du gradient\", " + NomFunction + ".getGradientCallsNumber() )"
-    texte += DecalSTDsaut + "d_aux[\"H\"] = ( \"du hessien\", " + NomFunction + ".getHessianCallsNumber() )"
-    texte += DecalSTDsaut + "for cle in d_aux.keys() :"
-    texte += DecalSTDsaut + DecalSTD + "if d_aux[cle][1] > 0 :"
-    texte += DecalSTDsaut + DecalSTD + DecalSTD + "text_resu += \"\\nNombre d\'appels au solveur pour le calcul \"" \
-                                + " + d_aux[cle][0] + \" = \" + str(d_aux[cle][1])"
-
-#   Impression
-
-    texte += DecalSTDsaut + "print ( \"\\n\", text_resu, \" ) \\n\""
-    texte += DecalSTDsaut + "file_resu = open(\"" + self.fic_resu_OpenTURNS + "\", \"w\")"
-    texte += DecalSTDsaut + "file_resu.write(text_resu)"
-    texte += DecalSTDsaut + "file_resu.close()"
-    texte += DecalSTDsaut + "probability = " + NomResu + ".getEventProbability()"
-
-    return texte
-
diff --git a/generator/generator_asterv5.py b/generator/generator_asterv5.py
deleted file mode 100644 (file)
index d544321..0000000
+++ /dev/null
@@ -1,510 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
-    Ce module contient le plugin generateur de fichier au format asterv5 pour EFICAS.
-
-
-"""
-import traceback
-import types,string
-from Extensions.i18n import tr
-from Extensions.eficas_exception import EficasException
-from Noyau import N_CR
-from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
-from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
-from Accas import GEOM,ASSD
-from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
-from Formatage import Formatage
-
-def entryPoint():
-   """
-       Retourne les informations necessaires pour le chargeur de plugins
-
-       Ces informations sont retournees dans un dictionnaire
-   """
-   return {
-        # Le nom du plugin
-          'name' : 'asterv5',
-        # La factory pour creer une instance du plugin
-          'factory' : AsterGenerator,
-          }
-
-
-class AsterGenerator:
-   """
-       Ce generateur parcourt un objet de type JDC et produit
-       un fichier au format asterv5
-
-       L'acquisition et le parcours sont realises par la methode
-       generator.gener(objet_jdc,format)
-
-       L'ecriture du fichier au format asterv5 est realisee par appel de la methode
-       generator.writefile(nom_fichier)
-
-       Ses caracteristiques principales sont exposees dans des attributs 
-       de classe :
-         - extensions : qui donne une liste d'extensions de fichier preconisees
-
-   """
-   # Les extensions de fichier preconisees
-   extensions=('.comm',)
-
-   def __init__(self,cr=None):
-      # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
-      if cr :
-         self.cr=cr
-      else:
-         self.cr=N_CR.CR(debut='CR generateur format asterv5',
-                         fin='fin CR format asterv5')
-      # Le texte au format asterv5 est stocke dans l'attribut text
-      self.text=''
-
-   def writefile(self,filename):
-      fp=open(filename,'w')
-      fp.write(self.text)
-      fp.close()
-
-   def gener(self,obj,format='brut'):
-      """
-          Retourne une representation du JDC obj sous une
-          forme qui est parametree par format.
-          Si format vaut 'brut',      retourne une liste de listes de ...
-          Si format vaut 'standard',  retourne un texte obtenu par concatenation de la liste
-          Si format vaut 'beautifie', retourne le meme texte beautifie
-      """
-      liste= self.generator(obj)
-      if format == 'brut':
-         self.text=liste
-      elif format == 'standard':
-         self.text=string.join(liste)
-      elif format == 'beautifie':
-         jdc_formate = Formatage(liste,sep=':',l_max=72)
-         self.text=jdc_formate.formate_jdc()
-      else:
-         raise EficasException(tr("Format pas implemente : %s", format))
-      return self.text
-
-   def generator(self,obj):
-      """
-         Cette methode joue un role d'aiguillage en fonction du type de obj
-         On pourrait utiliser les methodes accept et visitxxx à la
-         place (depend des gouts !!!)
-      """
-      # ATTENTION a l'ordre des tests : il peut avoir de l'importance (heritage)
-      if isinstance(obj,PROC_ETAPE):
-         return self.generPROC_ETAPE(obj)
-      elif isinstance(obj,MACRO_ETAPE):
-         return self.generMACRO_ETAPE(obj)
-      elif isinstance(obj,FORM_ETAPE):
-         return self.generFORM_ETAPE(obj)
-      elif isinstance(obj,ETAPE):
-         return self.generETAPE(obj)
-      elif isinstance(obj,MCFACT):
-         return self.generMCFACT(obj)
-      elif isinstance(obj,MCList):
-         return self.generMCList(obj)
-      elif isinstance(obj,MCBLOC):
-         return self.generMCBLOC(obj)
-      elif isinstance(obj,MCSIMP):
-         return self.generMCSIMP(obj)
-      elif isinstance(obj,ASSD):
-         return self.generASSD(obj)
-      elif isinstance(obj,ETAPE_NIVEAU):
-         return self.generETAPE_NIVEAU(obj)
-      elif isinstance(obj,COMMENTAIRE):
-         return self.generCOMMENTAIRE(obj)
-      # Attention doit etre place avant PARAMETRE (raison : heritage)
-      elif isinstance(obj,PARAMETRE_EVAL):
-         return self.generPARAMETRE_EVAL(obj)
-      elif isinstance(obj,PARAMETRE):
-         return self.generPARAMETRE(obj)
-      elif isinstance(obj,EVAL):
-         return self.generEVAL(obj)
-      elif isinstance(obj,COMMANDE_COMM):
-         return self.generCOMMANDE_COMM(obj)
-      elif isinstance(obj,JDC):
-         return self.generJDC(obj)
-      else:
-         raise EficasException(tr("Type d'objet non prevu : %s", repr(obj)))
-
-   def generJDC(self,obj):
-      """
-         Cette methode convertit un objet JDC en une liste de chaines de 
-         caracteres à la syntaxe asterv5
-      """
-      l=[]
-      if obj.definition.l_niveaux == ():
-         # Il n'y a pas de niveaux
-         for etape in obj.etapes:
-            l.append(self.generator(etape))
-      else:
-         # Il y a des niveaux
-         for etape_niveau in obj.etapes_niveaux:
-            l.extend(self.generator(etape_niveau))
-      if l != [] : 
-         # Si au moins une etape, on ajoute le retour chariot sur la derniere etape
-         if type(l[-1])==types.ListType:
-            l[-1][-1] = l[-1][-1]+'\n'
-         elif type(l[-1])==types.StringType:
-            l[-1] = l[-1]+'\n' 
-      return l
-
-   def generCOMMANDE_COMM(self,obj):
-      """
-         Cette methode convertit un COMMANDE_COMM
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      l_lignes = string.split(obj.valeur,'\n')
-      txt=''
-      for ligne in l_lignes:
-          txt = txt + '%%'+ligne+'\n'
-      return txt
-
-   def generEVAL(self,obj):
-      """
-         Cette methode convertit un EVAL
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      return 'EVAL(u"'+ obj.valeur +'")'
-
-   def generCOMMENTAIRE(self,obj):
-      """
-         Cette methode convertit un COMMENTAIRE
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      l_lignes = string.split(obj.valeur,'\n')
-      txt=''
-      for ligne in l_lignes:
-        txt = txt + '%'+ligne+'\n'
-      return txt
-
-   def generPARAMETRE_EVAL(self,obj):
-      """
-         Cette methode convertit un PARAMETRE_EVAL
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      if obj.valeur == None:
-         return obj.nom + ' = None ;\n'
-      else:
-         return obj.nom + ' = '+ self.generator(obj.valeur) +';\n'
-
-   def generPARAMETRE(self,obj):
-      """
-         Cette methode convertit un PARAMETRE
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      if type(obj.valeur) == types.StringType:
-        return obj.nom + " = '" + obj.valeur + "';\n"
-      else:
-        return obj.nom + ' = ' + str(obj.valeur) + ';\n'
-
-   def generETAPE_NIVEAU(self,obj):
-      """
-         Cette methode convertit une etape niveau
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      l=[]
-      if obj.etapes_niveaux == []:
-        for etape in obj.etapes:
-          l.append(self.generator(etape))
-      else:
-        for etape_niveau in obj.etapes_niveaux:
-          l.extend(self.generator(etape_niveau))
-      return l
-
-   def generETAPE(self,obj):
-      """
-         Cette methode convertit une etape
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      try:
-        if obj.reuse != None:
-          sdname= "&" + self.generator(obj.reuse)
-        else:
-          sdname= self.generator(obj.sd)
-      except:
-        sdname='sansnom'
-      l=[]
-      label=sdname + '='+obj.definition.nom+'('
-      l.append(label)
-      for v in obj.mc_liste:
-        if isinstance(v,MCBLOC) or isinstance(v,MCList):
-          liste=self.generator(v)
-          for mocle in liste :
-            l.append(mocle)
-        else:
-          l.append(self.generator(v))
-      if len(l) == 1:
-        l[0]=label+');'
-      else :
-        l.append(');')
-      return l
-
-   def generFORM_ETAPE(self,obj):
-        """
-            Methode particuliere pour les objets de type FORMULE
-        """
-        l=[]
-        nom = obj.get_nom()
-        if nom == '' : nom = 'sansnom'
-        if len(obj.mc_liste)>0:
-            l.append(nom + ' = FORMULE(')
-            s=obj.type_retourne + ' = ' + "'''" + obj.arguments + ' = ' + obj.corps+"'''"
-            l.append(s)
-            l.append(');')
-        else:
-            l.append(nom+' = FORMULE();')
-        return l
-
-   def generMACRO_ETAPE(self,obj):
-      """
-         Cette methode convertit une macro-etape
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      if obj.definition.nom == 'FORMULE' : return self.gen_ast_formule(obj)
-      try:
-        if obj.reuse != None:
-          sdname= "&" + self.generator(obj.reuse)+'='
-        elif obj.sd == None:
-          sdname=''
-        else:
-          sdname= self.generator(obj.sd)+'='
-      except:
-        sdname='sansnom='
-      l=[]
-      label = sdname + obj.definition.nom+'('
-      l.append(label)
-      for v in obj.mc_liste:
-        if isinstance(v,MCBLOC) or isinstance(v,MCList):
-          liste=self.generator(v)
-          for mocle in liste :
-            l.append(mocle)
-        else:
-          # MCFACT ou MCSIMP
-          l.append(self.generator(v))
-      if len(l) == 1:
-        l[0]=label+');'
-      else :
-        l.append(');')
-      return l
-
-   def gen_ast_formule(self,obj):
-      """ 
-           Methode gen_ast particuliere aux objets de type FORMULE 
-      """
-      label='!FORMULE('
-      try:
-        sdname= self.generator(obj.sd)
-      except:
-        sdname='sansnom'
-      l=[]
-      l.append(label)
-      for v in obj.mc_liste:
-        s=''
-        s= v.nom+':'+sdname+'('+v.valeur+')'
-        l.append(s)
-      if len(l) == 1:
-        l[0]=label+');'
-      else :
-        l.append(');')
-      return l
-
-   def generPROC_ETAPE(self,obj):
-      """
-         Cette methode convertit une etape
-         en une liste de chaines de caracteres à la syntaxe asterv5
-      """
-      l=[]
-      label=obj.definition.nom+'('
-      l.append(label)
-      for v in obj.mc_liste:
-        if isinstance(v,MCBLOC) or isinstance(v,MCList):
-          liste=self.generator(v)
-          for mocle in liste :
-            l.append(mocle)
-        else:
-          l.append(self.generator(v))
-      if len(l) == 1:
-        l[0]=label+');'
-      else :
-        l.append(');')
-      return l
-
-   def generMCSIMP(self,obj) :
-      """
-          Convertit un objet MCSIMP en une liste de chaines de caracteres à la
-          syntaxe asterv5
-      """
-      if type(obj.valeur) == types.TupleType :
-        s = '('
-        for val in obj.valeur :
-          if s != '(': s = s + ','
-          if type(val) == types.InstanceType :
-            if isinstance(val,PARAMETRE):
-              # il ne faut pas prendre la string que retourne gen_ast
-              # mais seulement le nom dans le cas d'un parametre
-              s = s + val.nom
-            else:
-              s = s + self.generator(val)
-          elif self.wait_geom(obj):
-            s = s + val
-          elif type(val) == types.FloatType :
-            #s = s + self.repr_float(val)
-            s = s + str(val)
-          else :
-            s = s + `val`
-        s = s + ')'
-        s=obj.nom+':'+s+' '
-        return s
-      else :
-        if type(obj.valeur) == types.InstanceType :
-          if isinstance(obj.valeur,PARAMETRE):
-            # il ne faut pas prendre la string que retourne gen_ast
-            # mais seulement str dans le cas d'un parametre
-            s = obj.valeur.nom
-          else:
-            s =  self.generator(obj.valeur)
-        elif self.wait_geom(obj):
-            s = obj.valeur
-        elif type(obj.valeur) == types.FloatType :
-            #s = self.repr_float(obj.valeur)
-            s = str(obj.valeur)
-        else :
-          s = `obj.valeur`
-        s=obj.nom+':'+s+' '
-        return s
-
-   def wait_geom(self,obj):
-      for typ in obj.definition.type:
-        if type(typ) == types.ClassType :
-          if issubclass(typ,GEOM) : return 1
-      return 0
-
-   def repr_float(self,valeur):
-      """ 
-          Cette fonction represente le reel valeur comme une chaîne de caracteres
-          sous forme mantisse exposant si necessaire cad si le nombre contient plus de 5 caracteres
-          NB : valeur est un reel au format Python ou une chaîne de caracteres representant un reel
-      """
-      if type(valeur) == types.StringType : valeur = eval(valeur)
-      if valeur == 0. : return '0.0'
-      if abs(valeur) > 1. :
-        if abs(valeur) < 10000. : return repr(valeur)
-      else :
-        if abs(valeur) > 0.01 : return repr(valeur)
-      t=repr(valeur)
-      if string.find(t,'e') != -1 or string.find(t,'E') != -1 :
-        # le reel est dejà sous forme mantisse exposant !
-        # --> on remplace e par E
-        t=string.replace(t,'e','E')
-        # --> on doit encore verifier que la mantisse contient bien un '.'
-        if string.find(t,'.')!= -1:
-          return t
-        else:
-          # -->il faut rajouter le point avant le E
-          t=string.replace(t,'E','.E')
-          return t
-      s=''
-      neg = 0
-      if t[0]=='-':
-        s=s+t[0]
-        t=t[1:]
-      cpt = 0
-      if string.atof(t[0]) == 0.:
-        # reel plus petit que 1
-        neg = 1
-        t=t[2:]
-        cpt=1
-        while string.atof(t[0]) == 0. :
-          cpt = cpt+1
-          t=t[1:]
-        s=s+t[0]+'.'
-        for c in t[1:]:
-          s=s+c
-      else:
-        # reel plus grand que 1
-        s=s+t[0]+'.'
-        if string.atof(t[1:]) == 0.:
-          l=string.split(t[1:],'.')
-          cpt = len(l[0])
-        else:
-          r=0
-          pt=0
-          for c in t[1:]:
-            r=r+1
-            if c != '.' :
-              if pt != 1 : cpt = cpt + 1
-              s=s+c
-            else:
-              pt = 1
-              if r+1 == len(t) or string.atof(t[r+1:]) == 0.:break
-      s=s+'E'+neg*'-'+repr(cpt)
-      return s
-
-   def generASSD(self,obj):
-      """
-          Convertit un objet derive d'ASSD en une chaine de caracteres à la
-          syntaxe asterv5
-      """
-      return obj.get_name()
-
-   def generMCFACT(self,obj):
-      """
-          Convertit un objet MCFACT en une liste de chaines de caracteres à la
-          syntaxe asterv5
-      """
-      l=[]
-      label=obj.nom + ':('
-      l.append(label)
-      for v in obj.mc_liste:
-        if isinstance(v,MCBLOC) or isinstance(v,MCList):
-          liste=self.generator(v)
-          for mocle in liste :
-            l.append(mocle)
-        else:
-          l.append(self.generator(v))
-      l.append(')')
-      return l
-
-   def generMCList(self,obj):
-      """
-          Convertit un objet MCList en une liste de chaines de caracteres à la
-          syntaxe asterv5
-      """
-      l=[]
-      for mcfact in obj.data:
-         l.append(self.generator(mcfact))
-      return l
-
-   def generMCBLOC(self,obj):
-      """
-          Convertit un objet MCBLOC en une liste de chaines de caracteres à la
-          syntaxe asterv5
-      """
-      l=[]
-      for v in obj.mc_liste:
-        if isinstance(v,MCBLOC) or isinstance(v,MCList):
-          liste=self.generator(v)
-          for mocle in liste :
-            l.append(mocle)
-        else:
-          l.append(self.generator(v))
-      return l
-
diff --git a/generator/oldCodes/DefautASTER.py b/generator/oldCodes/DefautASTER.py
new file mode 100644 (file)
index 0000000..7a120f3
--- /dev/null
@@ -0,0 +1,232 @@
+# Copyright (C) 2007-2013   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+Ce module contient les variables
+par defaut pour Aster
+"""
+
+from OpenturnsSTD import STDGenerateur
+from OpenturnsXML import XMLGenerateur
+
+#====================================================
+# Preparation du fichier STD
+#====================================================
+# C.1. Parties du texte en dur dans le fichier STD
+#-------------------------------------------------
+
+DecalSTD     = "  "
+DecalSTDsaut = "\n  "
+
+TexteSTDFIN ="\n\nexcept : \n"
+TexteSTDFIN += DecalSTD + "error_message = sys.exc_type\n"
+TexteSTDFIN += "\nif error_message is not None :\n"
+TexteSTDFIN += DecalSTD + "texte  = \"\\n=================================================\""
+TexteSTDFIN += DecalSTD + "texte += \"\\nMessage d'erreur : \" + str(error_message)"
+TexteSTDFIN += DecalSTD + "texte += \"\\n=================================================\\n\""
+TexteSTDFIN += DecalSTD + "print (texte)"
+TexteSTDFIN += DecalSTD + "\nsys.exit(error_message)\n"
+
+# C.2. Definition de composants dans le fichier STD
+#--------------------------------------------------
+
+NomFunction              = "myFunction"
+NomPhysicalStartingPoint = "myPhysicalStartingPoint"
+NomCollection            = "myCollection"
+NomCopule                = "myCopula"
+NomDistribution          = "myDistribution"
+NomRandomVector_in       = "myRandomVector_in"
+NomRandomVector_out      = "myRandomVector_out"
+NomEvent                 = "myEvent"
+NomMethod                = "myMethod"
+NomAlgo                  = "myAlgo"
+NomRoot                  = "myRoot"
+NomSampling              = "mySampling"
+NomSolverSD              = "mySolver"
+NomResu                  = "myResu"
+
+class Defaut :
+# Cette classe ajoute les parametres par defaut propres au Solver Aster
+# Elle va d abord enrichir le dictionnaire DictMCVal avec des valeurs par defaut
+# C est la methode enrichitMCVal
+# Elle va ensuite enrichir les variables
+# C est la methode enrichitListeVariables
+  
+  def __init__(self, parent) :
+       self.parent=parent
+       self.enrichitMCVal()
+       self.enrichitListeVariables()
+
+
+  def enrichitMCVal(self) :
+  #=====================
+      # InformationSolver : nom du wrapper, type de fichiers d'echange, etc
+      #----------------------------------------------------------------------
+      # Ajoute les informations sur le wrapper 
+      #        nom du wrapper, type de fichiers d'echange, etc.
+       dico = { "WrapperPath" : "Code_Aster.so",
+                 "FunctionName" : "Code_Aster",
+                 "WrapCouplingMode" : "fork",
+                 "State" : "shared",
+                 "InDataTransfer" : "files",
+                 "OutDataTransfer" : "files",
+              }
+
+       self.parent.ajouteDictMCVal(dico)
+
+      #InformationSolverFile : parametres par defaut pour les fichiers d'echange
+      #--------------------------------------------------------------------------
+
+       liste = []
+       dicoIn = { "Id" : "file_in", "Type" : "in", "Name" : "StdIn", "Path" : "commandes_aster" }
+       liste.append(dicoIn)
+       dicoOut = { "Id" : "file_out", "Type" : "out", "Name" : "StdOut", "Path" : "resultats_aster", }
+       liste.append(dicoOut)
+       dicoFile={"exchange_file" : liste} 
+       self.parent.ajouteDictMCVal(dicoFile)
+
+# D.2. InformationSolverCommande : arguments, etc
+#-------------------------------------------------------------------------
+# InformationSolverCommande est un dictionnaire indexe par le nom du solveur externe appele.
+# InformationSolverCommande[solveur] est lui-meme un dictionnaire qui contient les parametres
+# supplementaires pour la commande.
+# Des parametres sont donnes sous forme de tuple : (ok/nok, "mot-cle") ou (ok/nok, "mot-cle", valeur)
+# . On ajoute seulement si ok
+# . Avec (ok/nok, "mot-cle"), on ajoute en arguments les couples ("mot-cle", nom_du_parametre)
+# . Avec (ok/nok, "mot-cle", valeur), on ajoute en arguments les couples ("mot-cle", valeur)
+
+
+#       dico = { "file_out"    : (1, "-fic_de_aster_vers_ot"),
+#                "variable_in" : (1, "-variable") }
+#       self.parent.InformationSolverCommande["Code_Aster"] = dico          
+
+
+  def enrichitListeVariables(self) :
+       # parametres par defaut pour chaque variable
+       #--------------------------------------------
+
+       dico_in = { "Regexp" : '"^" , "Name", "(.*)= *[0-9eE.+-]+([)]?;?)$"',
+                   "Format" : '"Name", "\\1=%20.13G\\2"'
+                 }
+       dico_out = { "Regexp" : '"(.*)"' }
+       self.parent.ajouteInfoVariables(dico_in,dico_out)          
+
+class MonSTDGenerateur(STDGenerateur) :
+
+  def CreeResu (self) :
+  #------------------
+    '''
+    Le resultat :
+    . Donnees :
+      . l'algorithme choisi.
+    . Resultats :
+      . Ecriture des odres d'impression.
+    '''
+    if self.DictMCVal.has_key("Analysis"):
+       self.Analysis = str(self.DictMCVal["Analysis"])
+    else :
+       self.Analysis = None
+    self.fic_resu_OpenTURNS = "fic_resu_OpenTURNS_glop"
+    Algorithm = str (self.DictMCVal["Algorithm"])
+    texte  = "\n\n# Le resultat\n"
+    texte += DecalSTDsaut + NomResu + " = " + NomAlgo +  ".getResult()"
+    texte += DecalSTDsaut + "###" + "print ( " + NomResu+")"
+    texte += DecalSTDsaut + "text_resu  = \"Resultats\\n=======\\n\""
+
+#   Particularites des algorithmes de fiabilite
+
+    if self.Analysis in ( "Reliability", ) :
+      texte += DecalSTDsaut + "aux = " + NomResu + ".getIsStandardPointOriginInFailureSpace()"
+      texte += DecalSTDsaut + "if aux :"
+      texte += DecalSTDsaut + DecalSTD + "texte_bis = \"est\""
+      texte += DecalSTDsaut + "else :"
+      texte += DecalSTDsaut + DecalSTD + "texte_bis = \"n\'est pas\""
+      texte += DecalSTDsaut + "text_resu += \"\\nLe point initial \" + texte_bis + \" dans l\'espace de defaillance.\""
+      l_aux = [ ("Probabilite de defaillance", "EventProbability") ]
+      l_aux.append ( ("Indice de confiance generalise", "GeneralisedReliabilityIndex") )
+      l_aux.append ( ("Indice de confiance de Hasofer", "HasoferReliabilityIndex") )
+      for t_aux in l_aux :
+        texte += DecalSTDsaut + "text_resu += \"\\n" + t_aux[0] + " = \" + str(" \
+                              + NomResu + ".get" + t_aux[1] + "())"
+      l_aux = []
+      l_aux.append("StandardSpaceDesignPoint")
+      l_aux.append("PhysicalSpaceDesignPoint")
+      l_aux.append("ImportanceFactors")
+      texte += DecalSTDsaut + "l_aux_var = []"
+      for DictVariable in self.ListeVariables :
+        if ( DictVariable["Type"] == "in" ) :
+          texte += DecalSTDsaut + "l_aux_var.append(\"" + DictVariable["Name"] + "\")"
+      texte += DecalSTDsaut + "l_aux = []"
+      for type_resu in l_aux :
+        texte += DecalSTDsaut + "l_aux.append(" + NomResu + ".get" + type_resu + "())"
+      texte += DecalSTDsaut + "for resu in l_aux :"       
+      texte += DecalSTDsaut + DecalSTD + "if not resu.isEmpty() :"       
+      texte += DecalSTDsaut + DecalSTD + DecalSTD + "text_resu += \"\\n\" + resu.getName() + \" :\""       
+      texte += DecalSTDsaut + DecalSTD + DecalSTD + "size = resu.getDimension()"       
+      texte += DecalSTDsaut + DecalSTD + DecalSTD + "l_aux_1 = resu.getCollection()"       
+      texte += DecalSTDsaut + DecalSTD + DecalSTD + "for iaux in range(size) :"       
+      texte += DecalSTDsaut + DecalSTD + DecalSTD + DecalSTD + "text_resu += \"\\n. \" + l_aux_var[iaux] + \" : \" + str(l_aux_1[iaux])"       
+
+#   Particularites des algorithmes de simulation
+
+    if self.Analysis in ( "Simulation", ) :
+      l_aux = [ ("Probabilite de defaillance", "ProbabilityEstimate") ]
+      l_aux.append ( ("Variance", "VarianceEstimate") )
+      l_aux.append ( ("Nombre d\'iterations", "OuterSampling") )
+      for t_aux in l_aux :
+        texte += DecalSTDsaut + "text_resu += \"\\n" + t_aux[0] + " = \" + str(" \
+                              + NomResu + ".get" + t_aux[1] + "())"
+      texte += DecalSTDsaut + "text_resu += \"\\nNombre d'evaluations de l'etat limite = \" + str(" \
+                               + NomResu + ".getOuterSampling()*" + NomResu + ".getBlockSize())"
+      if self.DictMCVal.has_key("ConfidenceIntervalProbability") :
+        aux = self.DictMCVal["ConfidenceIntervalProbability"]
+        texte += DecalSTDsaut + "proba = " + NomResu + ".getProbabilityEstimate()"
+        texte += DecalSTDsaut + "t_aux = "
+        if ( type(aux) is type(0.) ) :
+          texte += "(" + str(aux) + ")"
+          t_aux = [ str(aux) ]
+        else :
+          texte += str(aux)
+        texte += DecalSTDsaut + "for val in t_aux :"
+        texte += DecalSTDsaut + DecalSTD + "length = " + NomResu + ".getConfidenceLength(val)"
+        texte += DecalSTDsaut + DecalSTD + "vinf = str( proba - 0.5*length )"
+        texte += DecalSTDsaut + DecalSTD + "vsup = str( proba + 0.5*length )"
+        texte += DecalSTDsaut + DecalSTD + "text_resu += \"\\nIntervalle de confiance a \" + str(val) + \" = [ \" "
+        texte += "+ vinf + \" , \" + vsup + \" ]\""
+
+#   Generalites
+
+    texte += DecalSTDsaut + "d_aux = {}"
+    texte += DecalSTDsaut + "d_aux[\"E\"] = ( \"de la fonction\", " + NomFunction + ".getEvaluationCallsNumber() )"
+    texte += DecalSTDsaut + "d_aux[\"G\"] = ( \"du gradient\", " + NomFunction + ".getGradientCallsNumber() )"
+    texte += DecalSTDsaut + "d_aux[\"H\"] = ( \"du hessien\", " + NomFunction + ".getHessianCallsNumber() )"
+    texte += DecalSTDsaut + "for cle in d_aux.keys() :"
+    texte += DecalSTDsaut + DecalSTD + "if d_aux[cle][1] > 0 :"
+    texte += DecalSTDsaut + DecalSTD + DecalSTD + "text_resu += \"\\nNombre d\'appels au solveur pour le calcul \"" \
+                                + " + d_aux[cle][0] + \" = \" + str(d_aux[cle][1])"
+
+#   Impression
+
+    texte += DecalSTDsaut + "print ( \"\\n\", text_resu, \" ) \\n\""
+    texte += DecalSTDsaut + "file_resu = open(\"" + self.fic_resu_OpenTURNS + "\", \"w\")"
+    texte += DecalSTDsaut + "file_resu.write(text_resu)"
+    texte += DecalSTDsaut + "file_resu.close()"
+    texte += DecalSTDsaut + "probability = " + NomResu + ".getEventProbability()"
+
+    return texte
+
diff --git a/generator/oldCodes/generator_asterv5.py b/generator/oldCodes/generator_asterv5.py
new file mode 100644 (file)
index 0000000..d544321
--- /dev/null
@@ -0,0 +1,510 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+    Ce module contient le plugin generateur de fichier au format asterv5 pour EFICAS.
+
+
+"""
+import traceback
+import types,string
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
+from Noyau import N_CR
+from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
+from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
+from Accas import GEOM,ASSD
+from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
+from Formatage import Formatage
+
+def entryPoint():
+   """
+       Retourne les informations necessaires pour le chargeur de plugins
+
+       Ces informations sont retournees dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'asterv5',
+        # La factory pour creer une instance du plugin
+          'factory' : AsterGenerator,
+          }
+
+
+class AsterGenerator:
+   """
+       Ce generateur parcourt un objet de type JDC et produit
+       un fichier au format asterv5
+
+       L'acquisition et le parcours sont realises par la methode
+       generator.gener(objet_jdc,format)
+
+       L'ecriture du fichier au format asterv5 est realisee par appel de la methode
+       generator.writefile(nom_fichier)
+
+       Ses caracteristiques principales sont exposees dans des attributs 
+       de classe :
+         - extensions : qui donne une liste d'extensions de fichier preconisees
+
+   """
+   # Les extensions de fichier preconisees
+   extensions=('.comm',)
+
+   def __init__(self,cr=None):
+      # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
+      if cr :
+         self.cr=cr
+      else:
+         self.cr=N_CR.CR(debut='CR generateur format asterv5',
+                         fin='fin CR format asterv5')
+      # Le texte au format asterv5 est stocke dans l'attribut text
+      self.text=''
+
+   def writefile(self,filename):
+      fp=open(filename,'w')
+      fp.write(self.text)
+      fp.close()
+
+   def gener(self,obj,format='brut'):
+      """
+          Retourne une representation du JDC obj sous une
+          forme qui est parametree par format.
+          Si format vaut 'brut',      retourne une liste de listes de ...
+          Si format vaut 'standard',  retourne un texte obtenu par concatenation de la liste
+          Si format vaut 'beautifie', retourne le meme texte beautifie
+      """
+      liste= self.generator(obj)
+      if format == 'brut':
+         self.text=liste
+      elif format == 'standard':
+         self.text=string.join(liste)
+      elif format == 'beautifie':
+         jdc_formate = Formatage(liste,sep=':',l_max=72)
+         self.text=jdc_formate.formate_jdc()
+      else:
+         raise EficasException(tr("Format pas implemente : %s", format))
+      return self.text
+
+   def generator(self,obj):
+      """
+         Cette methode joue un role d'aiguillage en fonction du type de obj
+         On pourrait utiliser les methodes accept et visitxxx à la
+         place (depend des gouts !!!)
+      """
+      # ATTENTION a l'ordre des tests : il peut avoir de l'importance (heritage)
+      if isinstance(obj,PROC_ETAPE):
+         return self.generPROC_ETAPE(obj)
+      elif isinstance(obj,MACRO_ETAPE):
+         return self.generMACRO_ETAPE(obj)
+      elif isinstance(obj,FORM_ETAPE):
+         return self.generFORM_ETAPE(obj)
+      elif isinstance(obj,ETAPE):
+         return self.generETAPE(obj)
+      elif isinstance(obj,MCFACT):
+         return self.generMCFACT(obj)
+      elif isinstance(obj,MCList):
+         return self.generMCList(obj)
+      elif isinstance(obj,MCBLOC):
+         return self.generMCBLOC(obj)
+      elif isinstance(obj,MCSIMP):
+         return self.generMCSIMP(obj)
+      elif isinstance(obj,ASSD):
+         return self.generASSD(obj)
+      elif isinstance(obj,ETAPE_NIVEAU):
+         return self.generETAPE_NIVEAU(obj)
+      elif isinstance(obj,COMMENTAIRE):
+         return self.generCOMMENTAIRE(obj)
+      # Attention doit etre place avant PARAMETRE (raison : heritage)
+      elif isinstance(obj,PARAMETRE_EVAL):
+         return self.generPARAMETRE_EVAL(obj)
+      elif isinstance(obj,PARAMETRE):
+         return self.generPARAMETRE(obj)
+      elif isinstance(obj,EVAL):
+         return self.generEVAL(obj)
+      elif isinstance(obj,COMMANDE_COMM):
+         return self.generCOMMANDE_COMM(obj)
+      elif isinstance(obj,JDC):
+         return self.generJDC(obj)
+      else:
+         raise EficasException(tr("Type d'objet non prevu : %s", repr(obj)))
+
+   def generJDC(self,obj):
+      """
+         Cette methode convertit un objet JDC en une liste de chaines de 
+         caracteres à la syntaxe asterv5
+      """
+      l=[]
+      if obj.definition.l_niveaux == ():
+         # Il n'y a pas de niveaux
+         for etape in obj.etapes:
+            l.append(self.generator(etape))
+      else:
+         # Il y a des niveaux
+         for etape_niveau in obj.etapes_niveaux:
+            l.extend(self.generator(etape_niveau))
+      if l != [] : 
+         # Si au moins une etape, on ajoute le retour chariot sur la derniere etape
+         if type(l[-1])==types.ListType:
+            l[-1][-1] = l[-1][-1]+'\n'
+         elif type(l[-1])==types.StringType:
+            l[-1] = l[-1]+'\n' 
+      return l
+
+   def generCOMMANDE_COMM(self,obj):
+      """
+         Cette methode convertit un COMMANDE_COMM
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      l_lignes = string.split(obj.valeur,'\n')
+      txt=''
+      for ligne in l_lignes:
+          txt = txt + '%%'+ligne+'\n'
+      return txt
+
+   def generEVAL(self,obj):
+      """
+         Cette methode convertit un EVAL
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      return 'EVAL(u"'+ obj.valeur +'")'
+
+   def generCOMMENTAIRE(self,obj):
+      """
+         Cette methode convertit un COMMENTAIRE
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      l_lignes = string.split(obj.valeur,'\n')
+      txt=''
+      for ligne in l_lignes:
+        txt = txt + '%'+ligne+'\n'
+      return txt
+
+   def generPARAMETRE_EVAL(self,obj):
+      """
+         Cette methode convertit un PARAMETRE_EVAL
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      if obj.valeur == None:
+         return obj.nom + ' = None ;\n'
+      else:
+         return obj.nom + ' = '+ self.generator(obj.valeur) +';\n'
+
+   def generPARAMETRE(self,obj):
+      """
+         Cette methode convertit un PARAMETRE
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      if type(obj.valeur) == types.StringType:
+        return obj.nom + " = '" + obj.valeur + "';\n"
+      else:
+        return obj.nom + ' = ' + str(obj.valeur) + ';\n'
+
+   def generETAPE_NIVEAU(self,obj):
+      """
+         Cette methode convertit une etape niveau
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      l=[]
+      if obj.etapes_niveaux == []:
+        for etape in obj.etapes:
+          l.append(self.generator(etape))
+      else:
+        for etape_niveau in obj.etapes_niveaux:
+          l.extend(self.generator(etape_niveau))
+      return l
+
+   def generETAPE(self,obj):
+      """
+         Cette methode convertit une etape
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      try:
+        if obj.reuse != None:
+          sdname= "&" + self.generator(obj.reuse)
+        else:
+          sdname= self.generator(obj.sd)
+      except:
+        sdname='sansnom'
+      l=[]
+      label=sdname + '='+obj.definition.nom+'('
+      l.append(label)
+      for v in obj.mc_liste:
+        if isinstance(v,MCBLOC) or isinstance(v,MCList):
+          liste=self.generator(v)
+          for mocle in liste :
+            l.append(mocle)
+        else:
+          l.append(self.generator(v))
+      if len(l) == 1:
+        l[0]=label+');'
+      else :
+        l.append(');')
+      return l
+
+   def generFORM_ETAPE(self,obj):
+        """
+            Methode particuliere pour les objets de type FORMULE
+        """
+        l=[]
+        nom = obj.get_nom()
+        if nom == '' : nom = 'sansnom'
+        if len(obj.mc_liste)>0:
+            l.append(nom + ' = FORMULE(')
+            s=obj.type_retourne + ' = ' + "'''" + obj.arguments + ' = ' + obj.corps+"'''"
+            l.append(s)
+            l.append(');')
+        else:
+            l.append(nom+' = FORMULE();')
+        return l
+
+   def generMACRO_ETAPE(self,obj):
+      """
+         Cette methode convertit une macro-etape
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      if obj.definition.nom == 'FORMULE' : return self.gen_ast_formule(obj)
+      try:
+        if obj.reuse != None:
+          sdname= "&" + self.generator(obj.reuse)+'='
+        elif obj.sd == None:
+          sdname=''
+        else:
+          sdname= self.generator(obj.sd)+'='
+      except:
+        sdname='sansnom='
+      l=[]
+      label = sdname + obj.definition.nom+'('
+      l.append(label)
+      for v in obj.mc_liste:
+        if isinstance(v,MCBLOC) or isinstance(v,MCList):
+          liste=self.generator(v)
+          for mocle in liste :
+            l.append(mocle)
+        else:
+          # MCFACT ou MCSIMP
+          l.append(self.generator(v))
+      if len(l) == 1:
+        l[0]=label+');'
+      else :
+        l.append(');')
+      return l
+
+   def gen_ast_formule(self,obj):
+      """ 
+           Methode gen_ast particuliere aux objets de type FORMULE 
+      """
+      label='!FORMULE('
+      try:
+        sdname= self.generator(obj.sd)
+      except:
+        sdname='sansnom'
+      l=[]
+      l.append(label)
+      for v in obj.mc_liste:
+        s=''
+        s= v.nom+':'+sdname+'('+v.valeur+')'
+        l.append(s)
+      if len(l) == 1:
+        l[0]=label+');'
+      else :
+        l.append(');')
+      return l
+
+   def generPROC_ETAPE(self,obj):
+      """
+         Cette methode convertit une etape
+         en une liste de chaines de caracteres à la syntaxe asterv5
+      """
+      l=[]
+      label=obj.definition.nom+'('
+      l.append(label)
+      for v in obj.mc_liste:
+        if isinstance(v,MCBLOC) or isinstance(v,MCList):
+          liste=self.generator(v)
+          for mocle in liste :
+            l.append(mocle)
+        else:
+          l.append(self.generator(v))
+      if len(l) == 1:
+        l[0]=label+');'
+      else :
+        l.append(');')
+      return l
+
+   def generMCSIMP(self,obj) :
+      """
+          Convertit un objet MCSIMP en une liste de chaines de caracteres à la
+          syntaxe asterv5
+      """
+      if type(obj.valeur) == types.TupleType :
+        s = '('
+        for val in obj.valeur :
+          if s != '(': s = s + ','
+          if type(val) == types.InstanceType :
+            if isinstance(val,PARAMETRE):
+              # il ne faut pas prendre la string que retourne gen_ast
+              # mais seulement le nom dans le cas d'un parametre
+              s = s + val.nom
+            else:
+              s = s + self.generator(val)
+          elif self.wait_geom(obj):
+            s = s + val
+          elif type(val) == types.FloatType :
+            #s = s + self.repr_float(val)
+            s = s + str(val)
+          else :
+            s = s + `val`
+        s = s + ')'
+        s=obj.nom+':'+s+' '
+        return s
+      else :
+        if type(obj.valeur) == types.InstanceType :
+          if isinstance(obj.valeur,PARAMETRE):
+            # il ne faut pas prendre la string que retourne gen_ast
+            # mais seulement str dans le cas d'un parametre
+            s = obj.valeur.nom
+          else:
+            s =  self.generator(obj.valeur)
+        elif self.wait_geom(obj):
+            s = obj.valeur
+        elif type(obj.valeur) == types.FloatType :
+            #s = self.repr_float(obj.valeur)
+            s = str(obj.valeur)
+        else :
+          s = `obj.valeur`
+        s=obj.nom+':'+s+' '
+        return s
+
+   def wait_geom(self,obj):
+      for typ in obj.definition.type:
+        if type(typ) == types.ClassType :
+          if issubclass(typ,GEOM) : return 1
+      return 0
+
+   def repr_float(self,valeur):
+      """ 
+          Cette fonction represente le reel valeur comme une chaîne de caracteres
+          sous forme mantisse exposant si necessaire cad si le nombre contient plus de 5 caracteres
+          NB : valeur est un reel au format Python ou une chaîne de caracteres representant un reel
+      """
+      if type(valeur) == types.StringType : valeur = eval(valeur)
+      if valeur == 0. : return '0.0'
+      if abs(valeur) > 1. :
+        if abs(valeur) < 10000. : return repr(valeur)
+      else :
+        if abs(valeur) > 0.01 : return repr(valeur)
+      t=repr(valeur)
+      if string.find(t,'e') != -1 or string.find(t,'E') != -1 :
+        # le reel est dejà sous forme mantisse exposant !
+        # --> on remplace e par E
+        t=string.replace(t,'e','E')
+        # --> on doit encore verifier que la mantisse contient bien un '.'
+        if string.find(t,'.')!= -1:
+          return t
+        else:
+          # -->il faut rajouter le point avant le E
+          t=string.replace(t,'E','.E')
+          return t
+      s=''
+      neg = 0
+      if t[0]=='-':
+        s=s+t[0]
+        t=t[1:]
+      cpt = 0
+      if string.atof(t[0]) == 0.:
+        # reel plus petit que 1
+        neg = 1
+        t=t[2:]
+        cpt=1
+        while string.atof(t[0]) == 0. :
+          cpt = cpt+1
+          t=t[1:]
+        s=s+t[0]+'.'
+        for c in t[1:]:
+          s=s+c
+      else:
+        # reel plus grand que 1
+        s=s+t[0]+'.'
+        if string.atof(t[1:]) == 0.:
+          l=string.split(t[1:],'.')
+          cpt = len(l[0])
+        else:
+          r=0
+          pt=0
+          for c in t[1:]:
+            r=r+1
+            if c != '.' :
+              if pt != 1 : cpt = cpt + 1
+              s=s+c
+            else:
+              pt = 1
+              if r+1 == len(t) or string.atof(t[r+1:]) == 0.:break
+      s=s+'E'+neg*'-'+repr(cpt)
+      return s
+
+   def generASSD(self,obj):
+      """
+          Convertit un objet derive d'ASSD en une chaine de caracteres à la
+          syntaxe asterv5
+      """
+      return obj.get_name()
+
+   def generMCFACT(self,obj):
+      """
+          Convertit un objet MCFACT en une liste de chaines de caracteres à la
+          syntaxe asterv5
+      """
+      l=[]
+      label=obj.nom + ':('
+      l.append(label)
+      for v in obj.mc_liste:
+        if isinstance(v,MCBLOC) or isinstance(v,MCList):
+          liste=self.generator(v)
+          for mocle in liste :
+            l.append(mocle)
+        else:
+          l.append(self.generator(v))
+      l.append(')')
+      return l
+
+   def generMCList(self,obj):
+      """
+          Convertit un objet MCList en une liste de chaines de caracteres à la
+          syntaxe asterv5
+      """
+      l=[]
+      for mcfact in obj.data:
+         l.append(self.generator(mcfact))
+      return l
+
+   def generMCBLOC(self,obj):
+      """
+          Convertit un objet MCBLOC en une liste de chaines de caracteres à la
+          syntaxe asterv5
+      """
+      l=[]
+      for v in obj.mc_liste:
+        if isinstance(v,MCBLOC) or isinstance(v,MCList):
+          liste=self.generator(v)
+          for mocle in liste :
+            l.append(mocle)
+        else:
+          l.append(self.generator(v))
+      return l
+