]> SALOME platform Git repositories - tools/eficas.git/blob - generator/OpenturnsBase.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[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, DictMCVal, ListeVariables, DictLois ) :
34   #---------------------------------------------------------#
35     self.ListeVariables = ListeVariables
36     self.ListeVariablesIn = []
37     self.DictLois = DictLois
38     self.DictMCVal = DictMCVal
39     self.DictTypeVar = {}
40     self.nbVarIn = 0
41     self.creeInfoVar()
42     #
43     # On charge eventuellement le Solver par defaut
44     # et les valeurs par defaut du Solver (dans l init)
45     #
46     try :
47     #if 1 :
48         Solver = self.DictMCVal["PhysicalSolver"]
49         import_name = "Defaut"+Solver
50         self.module = __import__( import_name, globals(), locals() )
51         monDefaut = self.module.Defaut( self )
52     #else :
53     except:
54         self.module = None
55
56
57   def getSTDGenerateur(self) :
58   #--------------------------#
59     try :
60         gener = self.module.__dict__["MonSTDGenerateur"]
61         monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.DictLois )
62     except :
63         from OpenturnsSTD import STDGenerateur
64         monSTDGenerateur = STDGenerateur( self.DictMCVal, self.ListeVariablesIn, self.DictLois )
65     return monSTDGenerateur
66       
67   def getXMLGenerateur(self) :
68   #--------------------------#
69     try :
70         gener = self.module.__dict__["MonXMLGenerateur"]
71         monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois )
72     except :
73         from OpenturnsXML import XMLGenerateur
74         monXMLGenerateur = XMLGenerateur( self.DictMCVal, self.ListeVariables, self.DictLois )
75     return monXMLGenerateur
76       
77   def creeInfoVar (self) :
78   #----------------------#
79     """
80     On repere les variables in/out et on les numerote.
81     """
82     num = 0
83     liste = []
84     for DictVariable in self.ListeVariables :
85       if not DictVariable.has_key("Type") : DictVariable["Type"] = "in"
86       self.DictTypeVar[num] = DictVariable["Type"]
87       if DictVariable["Type"] == "in" : 
88          self.nbVarIn = self.nbVarIn + 1
89          self.ListeVariablesIn.append( DictVariable )
90       liste.append( DictVariable )
91       num = num + 1
92     self.ListeVariables = liste
93
94
95   def ajouteDictMCVal(self, dicoPlus) :
96   #-----------------------------------#
97   # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
98   # enrichit self.DictMCVal avec les valeurs donnees dans dicoPlus
99   # si elles ne sont pas deja dans le dictionnaire
100
101     for clef in dicoPlus.keys():
102         if not self.DictMCVal.has_key(clef) :
103            self.DictMCVal[clef] = dicoPlus[clef]
104
105   def ajouteInfoVariables (self, dicoVariablesIn, dicoVariablesOut) :
106   #-----------------------------------------------------------------#
107   # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
108   # met a jour les dictionnaires qui decrivent les variables (regexp par exemple)
109     liste=[]
110     num = 0
111     for dictVariable in self.ListeVariables:
112          if self.DictTypeVar[num] == "in" :
113             dico = dicoVariablesIn
114          else :
115             dico = dicoVariablesOut
116          for nouvelleVariable in dico.keys() :
117             if not dictVariable.has_key(nouvelleVariable):
118                dictVariable[nouvelleVariable] = dico[nouvelleVariable]
119          liste.append( dictVariable )
120          num = num + 1