]> SALOME platform Git repositories - tools/eficas.git/blob - generator/OpenturnsBase.py
Salome HOME
*** empty log message ***
[tools/eficas.git] / generator / OpenturnsBase.py
1 #@ AJOUT OpenturnsSolver Macro
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE
4
5 """
6 Ce module contient la partie commune 
7 aux generateurs XML et Etude d Openturns
8 """
9
10 __revision__ = "V1.0"
11
12 import os
13 import sys
14
15 path=os.getcwd()
16 pathDef=path+"DefautOpenturns"
17
18 sys.path.append(pathDef)
19
20
21 #=============================================
22 # La classe generale
23 #=============================================
24
25 class Generateur :
26
27   '''
28   Classe generale du generateur
29   DictMCVal : dictionnaire des mots-cles
30   ListeVariables : chaque variable est decrite par un dictionnaire ; cette liste les regroupe
31   DictLois : dictionnaires des lois
32   '''
33   def __init__ (self, appli, DictMCVal = {}, ListeVariables = [], DictLois = {}, DictVariables = {} ) :
34   #---------------------------------------------------------#
35     self.ListeVariables = ListeVariables
36     self.ListeVariablesIn = []
37     self.ListeVariablesOut = []
38     self.DictLois = DictLois
39     self.DictVariables = DictVariables
40     self.DictMCVal = DictMCVal
41     self.DictTypeVar = {}
42     self.nbVarIn = 0
43     self.nbVarOut = 0
44     self.creeInfoVar()
45     self.appli = appli
46     #
47     # On charge eventuellement le Solver par defaut
48     # et les valeurs par defaut du Solver (dans l init)
49     #
50     try :
51     #if 1 :
52         Solver = self.DictMCVal["PhysicalSolver"]
53         import_name = "Defaut"+Solver
54         self.module = __import__( import_name, globals(), locals() )
55         monDefaut = self.module.Defaut( self )
56     #else :
57     except:
58         self.module = None
59
60
61   def getSTDGenerateur(self) :
62   #--------------------------#
63     try :
64         gener = self.module.__dict__["MonSTDGenerateur"]
65         monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
66     except :
67         from OpenturnsSTD import STDGenerateur
68         monSTDGenerateur = STDGenerateur( self.appli, self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
69     return monSTDGenerateur
70       
71   def getXMLGenerateur(self) :
72   #--------------------------#
73     try :
74         gener = self.module.__dict__["MonXMLGenerateur"]
75         monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois )
76     except :
77         from OpenturnsXML import XMLGenerateur
78         monXMLGenerateur = XMLGenerateur( self.appli, self.DictMCVal, self.DictVariables )
79     return monXMLGenerateur
80       
81   def creeInfoVar (self) :
82   #----------------------#
83     """
84     On repere les variables in/out et on les numerote.
85     """
86     num = 0
87     liste = []
88     for DictVariable in self.ListeVariables :
89       if not DictVariable.has_key("Type") : DictVariable["Type"] = "in"
90       self.DictTypeVar[num] = DictVariable["Type"]
91       if DictVariable["Type"] == "in" : 
92          self.nbVarIn = self.nbVarIn + 1
93          self.ListeVariablesIn.append( DictVariable )
94          print "OpenturnsBase.py: new input variable = ", DictVariable
95       else:
96          self.nbVarOut = self.nbVarOut + 1
97          self.ListeVariablesOut.append( DictVariable )
98          print "OpenturnsBase.py: new output variable = ", DictVariable
99       liste.append( DictVariable )
100       num = num + 1
101     self.ListeVariables = liste
102
103
104   def ajouteDictMCVal(self, dicoPlus) :
105   #-----------------------------------#
106   # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
107   # enrichit self.DictMCVal avec les valeurs donnees dans dicoPlus
108   # si elles ne sont pas deja dans le dictionnaire
109
110     for clef in dicoPlus.keys():
111         if not self.DictMCVal.has_key(clef) :
112            self.DictMCVal[clef] = dicoPlus[clef]
113
114   def ajouteInfoVariables (self, dicoVariablesIn, dicoVariablesOut) :
115   #-----------------------------------------------------------------#
116   # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
117   # met a jour les dictionnaires qui decrivent les variables (regexp par exemple)
118     liste=[]
119     num = 0
120     for dictVariable in self.ListeVariables:
121          if self.DictTypeVar[num] == "in" :
122             dico = dicoVariablesIn
123          else :
124             dico = dicoVariablesOut
125          for nouvelleVariable in dico.keys() :
126             if not dictVariable.has_key(nouvelleVariable):
127                dictVariable[nouvelleVariable] = dico[nouvelleVariable]
128          liste.append( dictVariable )
129          num = num + 1