Salome HOME
Pour Telemac et qques bugs
[tools/eficas.git] / generator / generator_openturns_study.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_study',
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       self.texteSTD="""#!/usr/bin/env python
67       import sys
68       print "Invalid file. Check build process."
69       sys.exit(1)
70       """
71
72    def gener(self,obj,format='brut',config=None):
73       print "IDM: gener dans generator_openturns_study.py"
74       self.initDico()
75       self.text=PythonGenerator.gener(self,obj,format)
76       self.genereSTD()
77       return self.text
78
79    def generMCSIMP(self,obj) :
80       """
81       Convertit un objet MCSIMP en texte python
82       Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
83       """
84       s=PythonGenerator.generMCSIMP(self,obj)
85       if self.TraiteMCSIMP == 1 : 
86          self.dictMCVal[obj.nom]=obj.valeur
87       else :
88          self.dictTempo[obj.nom]=obj.valeur
89       return s
90
91
92    def generETAPE(self,obj):
93       print "IDM: generETAPE dans generator_openturns_study.py"
94       print "IDM: obj.nom=", obj.nom
95       if obj.nom in ( "DISTRIBUTION", ) :
96          self.TraiteMCSIMP=0
97          self.dictTempo={}
98       s=PythonGenerator.generETAPE(self,obj)
99       if obj.nom in ( "DISTRIBUTION", ) :
100          self.dictMCLois[obj.sd]=self.dictTempo
101          self.dictTempo={}
102       self.TraiteMCSIMP=1
103       return s
104
105    def generPROC_ETAPE(self,obj):
106       print "IDM: generPROC_ETAPE dans generator_openturns_study.py"
107       print "IDM: obj.nom=", obj.nom
108       if obj.nom in ( "VARIABLE",  ) :
109          self.TraiteMCSIMP=0
110          self.dictTempo={}
111       s=PythonGenerator.generPROC_ETAPE(self,obj)
112       if obj.nom in ( "VARIABLE", ) :
113          self.listeVariables.append(self.dictTempo)
114          self.dictTempo={}
115       self.TraiteMCSIMP=1
116       return s
117
118    def genereSTD(self):
119       print "IDM: genereSTD dans generator_openturns_study.py"
120       print "IDM: self.listeVariables=", self.listeVariables
121       MonGenerateur=self.getGenerateur()
122       #try :
123       if 1== 1 :
124          self.texteSTD=MonGenerateur.CreeSTD()
125       #except :
126       else :
127          self.texteSTD=tr("Il y a un pb a la Creation du STD")
128
129    def writeDefault(self, fn):
130       fileSTD = fn[:fn.rfind(".")] + '.py'
131       with open(fileSTD, 'w') as f:
132         f.write(self.texteSTD)
133
134    def getGenerateur (self):
135       print "IDM: getGenerateur dans generator_openturns_study.py"
136       print "IDM: self.dictMCVal=", self.dictMCVal
137       print "IDM: self.listeVariables=", self.listeVariables
138       print "IDM: self.dictMCLois=", self.dictMCLois
139       MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, self.listeVariables, self.dictMCLois)
140       MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
141       return MonGenerateur