Salome HOME
dernieres modifs
[tools/eficas.git] / generator / generator_openturns.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21     Ce module contient le plugin generateur de fichier au format 
22     openturns pour EFICAS.
23
24 """
25 import traceback
26 import types,string,re
27 from Extensions.i18n import tr
28
29
30 from generator_python import PythonGenerator
31 from OpenturnsBase import Generateur 
32 #from OpenturnsXML import XMLGenerateur 
33 #from OpenturnsSTD import STDGenerateur 
34
35 def entryPoint():
36    """
37        Retourne les informations necessaires pour le chargeur de plugins
38
39        Ces informations sont retournees dans un dictionnaire
40    """
41    return {
42         # Le nom du plugin
43           'name' : 'openturns',
44         # La factory pour creer une instance du plugin
45           'factory' : OpenturnsGenerator,
46           }
47
48
49 class OpenturnsGenerator(PythonGenerator):
50    """
51        Ce generateur parcourt un objet de type JDC et produit
52        un texte au format eficas et 
53        un texte au format xml 
54
55    """
56    # Les extensions de fichier permis?
57    extensions=('.comm',)
58
59    def initDico(self):
60        self.dictMCVal={}
61        self.listeVariables=[]
62        self.listeFichiers=[]
63        self.dictMCLois={}
64        self.dictTempo={}
65        self.TraiteMCSIMP=1
66
67    def gener(self,obj,format='brut',config=None):
68        #print "IDM: gener dans generator_openturns.py"
69        self.initDico()
70        self.text=PythonGenerator.gener(self,obj,format)
71        self.genereXML()
72        self.genereSTD()
73        return self.text
74
75    def generMCSIMP(self,obj) :
76        """
77        Convertit un objet MCSIMP en texte python
78        Remplit le dictionnaire des MCSIMP si nous ne sommes pas ni dans une loi, ni dans une variable
79        """
80        s=PythonGenerator.generMCSIMP(self,obj)
81        if self.TraiteMCSIMP == 1 : 
82           self.dictMCVal[obj.nom]=obj.valeur
83        else :
84           self.dictTempo[obj.nom]=obj.valeur
85        return s
86
87    def generMCFACT(self,obj):
88        # Il n est pas possible d utiliser obj.valeur qui n est pas 
89        # a jour pour les nouvelles variables ou les modifications 
90        if obj.nom == "Variables" or "Files":
91           self.TraiteMCSIMP=0
92           self.dictTempo={}
93        s=PythonGenerator.generMCFACT(self,obj)
94        if obj.nom == "Variables" :
95           self.listeVariables.append(self.dictTempo)
96           self.dictTempo={}
97        else :
98           self.listeFichiers.append(self.dictTempo)
99        self.TraiteMCSIMP=1
100        return s
101
102    def generETAPE(self,obj):
103        if obj.nom == "DISTRIBUTION" :
104           self.TraiteMCSIMP=0
105           self.dictTempo={}
106        s=PythonGenerator.generETAPE(self,obj)
107        if obj.nom == "DISTRIBUTION" :
108           self.dictMCLois[obj.sd]=self.dictTempo
109           self.dictTempo={}
110        self.TraiteMCSIMP=1
111        return s
112
113    def genereXML(self):
114        #print "IDM: genereXML dans generator_openturns.py"
115        if self.listeFichiers != [] :
116           self.dictMCVal["exchange_file"]=self.listeFichiers
117        MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
118        MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
119        #try :
120        if 1== 1 :
121           self.texteXML=MonGenerateur.CreeXML()
122        #except :
123        else :
124           self.texteXML=tr("Il y a un pb a la Creation du XML")
125
126    def genereSTD(self):
127        MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
128        MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
129        #try :
130        if 1== 1 :
131           self.texteSTD=MonGenerateur.CreeSTD()
132        #except :
133        else :
134           self.texteSTD=tr("Il y a un pb a la Creation du STD")
135
136    def getOpenturnsXML(self):
137        return self.texteXML
138
139    def getOpenturnsSTD(self):
140        return self.texteSTD