Salome HOME
debug intempestif
[tools/eficas.git] / VirtualPolymer / VP_Cata_Database.py
1 # -*- coding: utf-8 -*-
2 import os, sys
3 import types
4 from Accas import *
5
6 MAP_DIRECTORY=os.getenv('MAP_DIRECTORY')
7 if MAP_DIRECTORY == None  : print ('sourcer l environnement Map SVP'); exit()
8 sys.path.append(MAP_DIRECTORY)
9 sys.path.append(os.path.join(MAP_DIRECTORY,'lib/python2.7/site-packages/mapy/virtual_polymer_common'))
10 sys.path.append(os.path.join(MAP_DIRECTORY,'lib/python2.7/site-packages'))
11
12 import types
13 class Tuple:
14   def __init__(self,ntuple):
15     self.ntuple=ntuple
16
17   def __convert__(self,valeur):
18     if type(valeur) == types.StringType: return None
19     if len(valeur) != self.ntuple: return None
20     return valeur
21
22   def info(self):
23     return "Tuple de %s elements" % self.ntuple
24
25 from for_eficace import filtre_calculation_mechanistic
26 from for_eficace import filtre_calculation_analitic
27 from for_eficace import filtre_data_model
28 #print filtre_calculation_analitic
29
30 database = os.path.join(MAP_DIRECTORY,'share/map/tests/components/c_pre_polymer_data_management/local/')
31 database="/home/A96028/MAPVp/my_map_installdir/share/map/tests/components/c_pre_polymer_data_management/local/"
32 #database = "/home/A96028/MAPVp/my_map_installdir/lib/python2.7/site-packages/mapy/virtual_polymer_common"
33
34 dicoInfoGenerales= {
35            'Type_D_Equation'      : ('initiation', 'propagation', 'termination', 'stabilization'),
36            'Modele_TechnicalUse' : ('cable', 'coating', 'pipes'),
37            'Aging_Factor'        : { 'predefinedSimulationTime' : ('40years BR top', '40years BR bottom')},
38            'Boundary_Conditions' : ('flux_volume','flux_surface','constant_constration','convection_flux'),
39            'posttraitement_Typ'  : ('chimique','mecanique','physique'),
40          }
41
42
43 dicoTechnicalUse = {}
44 dicoEquations    = {}
45 dicoEquationsParTechnicalUseParModelePartypeDEquation={}
46 for technicalUse in dicoInfoGenerales['Modele_TechnicalUse'] :
47     dicoTechnicalUse[technicalUse] = filtre_calculation_mechanistic(database, technicalUse)
48     dicoEquations[technicalUse]    = filtre_data_model(database, 'mechanistic_models',technicalUse)
49
50 #print (dicoEquations)
51 #print (1,dicoTechnicalUse)
52 print (dicoEquations.keys())
53 #print (dicoEquations['pipes'])
54 #print (dicoEquations['cable']['base']['initiation'])
55 #print (dicoTechnicalUse.keys())
56
57 # --------------------------- blocPourCalculationForMechanisticSelonModeleTechnicalUse ------------
58
59 def calculGeneralInformations(technicalUse, modelName):
60 # la class contient l objet modele 
61     monObj = dicoEquations[technicalUse][modelName]['class']
62     Material             = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.materiaux[2:-2]) 
63     stabilized           = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.stabilise) 
64     EDF_developpement    = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.dvt_EDF) 
65     Documentation_report = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.reference) 
66     Thickness            = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.thickness) 
67     Aging_conditions     = SIMP(statut='o', typ ='TXM', homo = 'constant', defaut = monObj.type_vieil[1:-1]) 
68     Diffusion            = SIMP(statut='o', typ = bool, homo = 'constant', defaut = monObj.diffusion)
69     Evaporation          = SIMP(statut='o', typ = bool, homo = 'constant', defaut = monObj.evaporation)
70     Model_takes_into_account = FACT(statut ='o', Diffusion=Diffusion, Evaporation=Evaporation)
71     return FACT(statut = 'o',Material=Material,stabilized=stabilized,EDF_developpement=EDF_developpement,Documentation_report=Documentation_report,Thickness=Thickness,Aging_conditions=Aging_conditions,Model_takes_into_account=Model_takes_into_account)
72     
73
74
75 def calculAnalyticalEquations(technicalUse,modelName):
76 # PN il faut ameliorer l algo
77     dicoArgs={}
78     dicoListeEquation={}
79     Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = 'Les equations ne sont pas modifiables')
80
81     for debutEquation in dicoInfoGenerales['Type_D_Equation']:
82         liste=[]
83         for nomEquation in dicoEquations[technicalUse][modelName]['equations'].keys():
84             if nomEquation.find(debutEquation) != -1 :
85                liste.append(dicoEquations[technicalUse][modelName]['equations'][nomEquation] )
86         dicoListeEquation[debutEquation]=liste
87     for debutEquation in dicoInfoGenerales['Type_D_Equation']:
88         dicoArgsDuFact={}
89         for chaineEquation in dicoListeEquation[debutEquation]:
90            nom,params=chaineEquation.split("\t\t")
91            dicoArgsDuFact[nom]=SIMP(statut = 'o', typ ='TXM', defaut = params, homo= 'constant')
92         dicoArgs[debutEquation]=FACT(statut = 'o',**dicoArgsDuFact)
93     Equations = FACT(statut = 'o',Consigne = Consigne,**dicoArgs)
94
95     # on le garde pour pouvoir l utiliser plus tard dans DataBase
96     dicoEquationsParTechnicalUseParModelePartypeDEquation[technicalUse][modelName]=dicoListeEquation
97    
98     dicoArgs={}
99     dicoArgsArrhenius={}
100     
101     # Attention coef est une liste
102     for constante in dicoEquations[technicalUse][modelName]['class'].coef[0].keys():
103         v=dicoEquations[technicalUse][modelName]['class'].coef[0][constante]
104         if len(v) == 2 :
105            dicoArgsArrhenius [constante] =  SIMP(statut ="o",typ=Tuple(2),validators = VerifTypeTuple(('R','R')),defaut =v )
106         else : 
107            dicoArgs [constante] =  SIMP(statut ="o",typ='R',defaut =v[0] )
108     ConstantesNonArrhenius = FACT(statut = 'o',**dicoArgs)
109     ConstantesArrhenius    = FACT(statut = 'o',**dicoArgsArrhenius)
110     Constantes = FACT(statut = 'o',ConstantesNonArrhenius = ConstantesNonArrhenius, ConstantesArrhenius=ConstantesArrhenius)
111
112     
113     return FACT(statut = 'o',Equations = Equations, Constantes=Constantes)
114
115 def calculAgingParameters():
116     Time          = SIMP(statut='o',typ='R',)
117     Temperature   = SIMP(statut='o',typ='R',)
118     DoseRate      = SIMP(statut='o',typ='R',)
119     Thickness     = SIMP(statut='o',typ='R',)
120     return FACT(statut='o', Time=Time, Temperature=Temperature,DoseRate=DoseRate,Thickness=Thickness)
121     #dicoArgs['Dicretization'] = SIMP(statut='o',typ='R',)
122
123 def calculInitialParameters(technicalUse,modelName):
124 # Attention les parametres initiaux sont renvoyes sous forme de liste alors que la valeur attendue est un reel
125     dicoArgs={}
126     for (k,v) in dicoTechnicalUse[technicalUse][modelName]['initial_parameter'].items():
127         dicoArgs[k]= SIMP(statut='o',typ='R', defaut=v[0])
128     return FACT(statut='o',**dicoArgs)
129     
130
131
132 def blocPourCalculationForMechanisticSelonModeleTechnicalUse(technicalUse):
133 # technicalUse = ['pipes', 'coating', 'cable']
134     dicoArgs={}
135     dicoEquationsParTechnicalUseParModelePartypeDEquation[technicalUse]={}
136
137     condition = "TechnicalUse == '" + technicalUse + "'"
138     ModelName      = SIMP(statut='o',typ='TXM', into = dicoTechnicalUse[technicalUse].keys(),)
139     SimulationName = SIMP(statut='o',typ='TXM')
140
141     for modeleName in dicoTechnicalUse[technicalUse].keys() :
142     # modeleName est le modele par exmple radio_oxydation_PE_tetra_stabilization
143        dicoBloc = {}
144        dicoBloc['condition' ] = "ModelName == '" + modeleName + "'"
145        dicoBloc['GeneralInformations'] = calculGeneralInformations(technicalUse,modeleName)
146        dicoBloc['AnalyticalEquation']  = calculAnalyticalEquations(technicalUse,modeleName)
147        dicoBloc['AgingParameters']     = calculAgingParameters()
148        dicoBloc['InitialParameters']   = calculInitialParameters(technicalUse,modeleName)
149        if dicoBloc != None : dicoArgs['b_ModelName_' + modeleName] =  BLOC(**dicoBloc)
150     return BLOC(condition=condition, ModelName = ModelName,SimulationName=SimulationName,**dicoArgs)
151
152
153
154 JdC = JDC_CATA ( code='VP',
155           execmodul=None,
156          ) 
157
158
159 # ---------------------------------------------------------------------------------
160 Calculation_for_Mechanistic =  PROC (nom="Calculation_for_Mechanistic", op=None, 
161 # ---------------------------------------------------------------------------------
162      TechnicalUse= SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['Modele_TechnicalUse'], defaut = 'cable'),
163      b_cable   =  blocPourCalculationForMechanisticSelonModeleTechnicalUse('cable'),
164      b_pipes   =  blocPourCalculationForMechanisticSelonModeleTechnicalUse('pipes'),
165      b_coating =  blocPourCalculationForMechanisticSelonModeleTechnicalUse('coating'),
166
167 )
168
169
170
171 from mapy.virtual_polymer_common import class_data
172 monMechanisticModel=class_data.Modele()
173 monMechanisticEquation=class_data.Equation()
174 if monMechanisticEquation.comment == "" : monMechanisticEquation.comment = ' ' 
175  
176
177
178 def chercheConstituant(laClasse):
179     lesArgs={}
180     lesArgs['statut']='o'
181     for constituant in laClasse.constituants :
182        monIndex=laClasse.constituants.index(constituant)
183        valdefaut=laClasse.equation[monIndex] 
184        monSimp=SIMP(statut = 'o', typ = bool, defaut=True)
185        lesArgs[constituant]=monSimp
186
187        lesArgsBloc={}
188        nomEquation = ' differentiel_'+constituant
189        monSimp2 = SIMP(statut= 'o',typ= 'TXM', defaut = valdefaut)
190        laCondition= constituant+' == True'
191        lesArgsBloc['condition']=laCondition
192        lesArgsBloc[nomEquation]=monSimp2
193        nomBloc     = 'b_'+constituant
194        leBloc = BLOC(**lesArgsBloc)
195        lesArgs[nomBloc]=BLOC(**lesArgsBloc)
196     return FACT(**lesArgs)
197
198 def chercheConstantes(laClasse):
199     lesArgs={}
200     lesArgs['statut']='o'
201     for constante in laClasse.const_cine_nom :
202        monSimp=SIMP(statut = 'o', typ = bool, defaut=True)
203        lesArgs[constante]=monSimp
204     return FACT(**lesArgs)
205        
206
207 def calculBlocAnalyticalEquationsForModification():
208 # PN refaire l algo
209 #print (dicoEquations['cable']['base']['initiation'])
210     #for technicalUse in dicoInfoGenerales['Modele_TechnicalUse']:
211     #condition = "TechnicalUse == '" + technicalUse + "'"
212     for technicalUse in ('cable',):
213         dicoArgs={}
214         typeReaction = SIMP (statut='o', typ='TXM', into = dicoInfoGenerales['Type_D_Equation'])
215         for typeDeLaReaction in dicoInfoGenerales['Type_D_Equation']:
216             lesArgsBloc={}
217             laCondition= "typeReaction  ==  '" + typeDeLaReaction + "'" 
218             dicoListeEquation=dicoEquations[technicalUse]['base'][typeDeLaReaction]
219             ListeEquation =  dicoListeEquation.keys()
220             equationsAModifier=SIMP (statut='o', typ='TXM', max="**", homo = 'SansOrdreNiDoublon', into=ListeEquation)
221             #print (equationsAModifier)
222             dicoArgs['b_'+typeDeLaReaction]=BLOC(condition=laCondition, equationsAModifier=equationsAModifier)
223     return FACT(statut='o', typeReaction = typeReaction, **dicoArgs)
224
225     #for debutEquation in dicoInfoGenerales['Type_D_Equation']:
226     #    dicoArgsDuFact={}
227     #    for chaineEquation in dicoListeEquation[debutEquation]:
228     #       nom,params=chaineEquation.split("\t\t")
229     #       dicoArgsDuFact[nom]=SIMP(statut = 'o', typ ='TXM', defaut = params, homo= 'constant')
230     #    dicoArgs[debutEquation]=FACT(statut = 'o',**dicoArgsDuFact)
231     #Equations = FACT(statut = 'o',Consigne = Consigne,**dicoArgs)
232
233     #dicoArgs={}
234     #dicoArgsArrhenius={}
235
236     # Attention coef est une liste
237     #for constante in dicoEquation[technicalUse]['class'].coef[0].keys():
238     #    v=dicoEquation[technicalUse]['class'].coef[0][constante]
239     #    if len(v) == 2 :
240     #       dicoArgsArrhenius [constante] =  SIMP(statut ="o",typ=Tuple(2),validators = VerifTypeTuple(('R','R')),defaut =v )
241     #    else :
242     #       dicoArgs [constante] =  SIMP(statut ="o",typ='R',defaut =v[0] )
243     #ConstantesNonArrhenius = FACT(statut = 'o',**dicoArgs)
244     #ConstantesArrhenius    = FACT(statut = 'o',**dicoArgsArrhenius)
245     #Constantes = FACT(statut = 'o',ConstantesNonArrhenius = ConstantesNonArrhenius, ConstantesArrhenius=ConstantesArrhenius)
246
247     return FACT(statut = 'o',Equations = Equations, Constantes=Constantes)
248
249
250
251
252 # ------------------------------------------
253 Database =  PROC (nom="Database", op=None, 
254 # ------------------------------------------
255
256
257 #     ------------------------------------------------------------------------
258           Type_chgt   = SIMP (statut= 'o',typ= 'TXM',into=('modify equation', 'create equation', 'modify model', 'create model'),), 
259
260           b_creation_equation = BLOC (condition  = 'Type_chgt == "create equation"',
261           # toutes les valeurs sont par defaut class_data.Equation
262           # generer le catalogue avec un fact
263           # Aging_Type type_vieil, 
264             Creation = FACT ( statut = 'o',
265                  ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = monMechanisticEquation.representation ),
266                  Aging_Type          = SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('All', 'thermo', 'radio'), defaut = monMechanisticEquation.type_vieil[0]),
267                  Reaction_Type       = SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=dicoInfoGenerales['Type_D_Equation'], defaut = monMechanisticEquation.type_react),
268                  Constituants        = chercheConstituant(monMechanisticEquation), 
269                  New = SIMP (statut = 'o', typ = bool, defaut=False),
270                  b_new =  BLOC(condition = " New == True" ,
271                       Constituant = FACT ( statut = 'o', min=1, max='**',
272                             Name                  =  SIMP(statut= 'o',typ= 'TXM'),
273                             Differential_Equation =  SIMP(statut= 'o',typ= 'TXM'),
274                       ),
275                   ), # b new
276
277                  Constantes = chercheConstantes(monMechanisticEquation), 
278                  New_Cst = SIMP (statut = 'o', typ = bool, defaut=False),
279                  b_new_cst =  BLOC(condition = " New_Cst == True" ,
280                      Constante = FACT ( statut = 'o', min=1, max='**',
281                      Name  = SIMP (statut = 'o', typ = 'TXM'),
282                  ), # fin constante
283             ),  #fin b_new 
284
285             Arrhenius = SIMP (statut = 'o', typ = bool, defaut=monMechanisticEquation.arrhenius),
286             Comment   = SIMP(statut= 'o',typ= 'TXM', defaut = monMechanisticEquation.comment),
287          ), # fin creation mechanistic model
288        ), # fin b_create_equation
289
290        b_modify_equation = BLOC (condition  = 'Type_chgt == "modify equation"',
291 # les valeurs par defaut seront lues dans la base de données
292             Filtre = calculBlocAnalyticalEquationsForModification(),
293             #Filtre = FACT (statut='o',
294             #    #Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=dicoInfoGenerales['Type_D_Equation'], siValide=lienDB.remplitMechanisticModifyEquationListeEquation),
295             #    Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=dicoInfoGenerales['Type_D_Equation'],),# siValide=lienDB.remplitMechanisticModifyEquationListeEquation),
296 # Filtre getMechanisticEquation(Reaction_Type) 
297 # diictionnaire key : nom de l equation / valeur classe instancies liste de nom d'equation
298            #     Equation_List=SIMP(statut= 'o',typ= 'TXM'), #siValide=lienDB.remplitModificationEquation),
299            # ),
300             # lorsque le choix est fait on peut recuperer les valeurs par defaut
301
302             #ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = 'POOH -> 2P'),
303             Modification = FACT (statut='o',
304             ChemicalFormulation = SIMP(statut='o', typ='TXM', ), # classe.representation
305             Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=dicoInfoGenerales['Type_D_Equation']), # classe.type_react
306             Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('All', 'thermo', 'radio'),), # classe.type_vieil
307
308             Constituants = FACT ( statut = 'o', # classe.constituants --> liste de nom. les equations sont dans le meme ordre self.equation
309                POOH = SIMP (statut = 'o', typ = bool, defaut=False),
310                b_pooh =  BLOC(condition = " POOH == True" ,
311                   Differential_Equation_POOH =  SIMP(statut= 'o',typ= 'TXM', defaut = '-ku1*POOH'),
312                            ), # Fin b_pooh
313                PO = SIMP (statut = 'o', typ = bool, defaut=False),
314                b_po =  BLOC(condition = " PO == True" ,
315                   Differential_Equation_PO =  SIMP(statut= 'o',typ= 'TXM', defaut = '-ku1*POOH'),
316                            ), # Fin b_po
317                New = SIMP (statut = 'o', typ = bool, defaut=False),
318                b_new =  BLOC(condition = " New == True" ,
319                  Constituant = FACT ( statut = 'o', min=1, max='**',
320                    Name  = SIMP (statut = 'o', typ = 'TXM'),
321                    Differential_Equation =  SIMP(statut= 'o',typ= 'TXM'),
322                                     ), # Fin Constituant
323                           ), # Fin b_new
324                       ),# Fin Constituants
325
326             Constantes = FACT ( statut = 'o', # self.const_cine_nom
327                KU1 = SIMP (statut = 'o', typ = bool, defaut=False),
328                New = SIMP (statut = 'o', typ = bool, defaut=False),
329                b_new =  BLOC(condition = " New == True" ,
330                  Constante = FACT ( statut = 'o', min=1, max='**',
331                    Name  = SIMP (statut = 'o', typ = 'TXM'),
332                                  ), # fin constante
333                     ),  #fin b_new 
334                ), # fin constantes
335             Arrhenius = SIMP (statut = 'o', typ = bool, ), # classe.arrhenius[0]
336             Comment   = SIMP(statut= 'o',typ= 'TXM',), # classe.comment
337              ), # fin modification
338           ), # fin b_modify_equation
339
340
341           b_create_model = BLOC (condition  = 'Type_chgt == "create model"',
342 # Filtre getMechanisticTechnicalUse(Filtre_TechnicalUse) 
343 # dictionnaire key : nom du modele  / valeur classe instancies liste de nom modele 
344 # la classe par defaut getDefaultMechanistic
345 # renvoie un obj instancie
346           # toutes les valeurs sont par defaut class_data.Equation
347           # generer le catalogue avec un fact
348              Creation = FACT (statut='o',
349              ID=FACT (statut='o',
350                 Name  =SIMP(statut='o',typ='TXM'), # obj.nom 
351                 Material=SIMP(statut='o',typ='TXM',),# obj.materiaux[0]
352                 TechnicalUse = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['Modele_TechnicalUse']),#defaut=obj.technical_use 
353                 Reference=SIMP(statut='o',typ='TXM',), # defaut=monModele.reference, momModele = obj par la suite
354                 Model_Developed_For_EDF = SIMP(typ = bool, statut = 'o'), #defaut = monModele.dvt_EDF[0]
355                 Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('all', 'thermo', 'radio'),), # defaut = monModele.type_vieil
356 # attention c est une liste --> a reflechir
357                 Stabilizer = SIMP(typ = bool, statut = 'o'), #,defaut = monModele.stabilise
358                 material_thickness = SIMP(typ = 'TXM', statut = 'o', into = ['thin','thick']), # monModele.thickness
359                 Diffusion = SIMP(typ = bool, statut = 'o'),# defaut = monModele.diffusion  ,siValide = lienDB.prepareDiffusion
360                 Evaporation = SIMP(typ = bool, statut = 'o'), # defaut monModele.evaporation
361                 Comment   = SIMP(statut= 'o',typ= 'TXM',), # classe.comment
362                 ), #fin id
363               Equations = FACT (statut = 'o',
364 # remplir avec getEquation sur modele
365 # dictionnaire avec comme clef 'base' puis initiation ...
366                 Liste=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P  [k]' , 'A   [K5,Y5]', 'B', 'C']),
367 # quand coche je recupere le nom entre crochet + split sur , attention sans blanc
368 # et on cree le SIMP apres pour recuperer la valeur
369                 K5=SIMP (statut = 'o', typ = 'R' ),
370                New = SIMP (statut = 'o', typ = bool, defaut=False),
371
372                b_new =  BLOC(condition = " New == True" ,
373                  Add=FACT(statut = 'o',max='**',
374                  Filtre = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['Type_D_Equation']),
375                  Equations=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P' , 'A', 'B', 'C'])
376                  )
377                 ), # b new
378                 ) # fin equations
379               ), #fin creation
380              ), # fin create model
381
382           b_modify_model = BLOC (condition  = 'Type_chgt == "modify model"',
383 # Filtre getMechanisticTechnicalUse(Filtre_TechnicalUse) 
384 # dictionnaire key : nom du modele  / valeur classe instancies liste de nom modele 
385 # la classe par defaut getDefaultMechanistic
386 # renvoie un obj instancie
387             Filtre = FACT (statut='o',
388              TechnicalUse=SIMP(statut= 'o',typ= 'TXM', min=1,into=dicoInfoGenerales['Modele_TechnicalUse'],),
389 # si valide
390              ModeleName=SIMP(statut='o',typ='TXM',into=['A','B']), # a choisir dans la liste des clefs
391               ),
392              Modification = FACT (statut='o',
393              ID=FACT (statut='o',
394                 Name  =SIMP(statut='o',typ='TXM'), # obj.nom 
395                 Material=SIMP(statut='o',typ='TXM',),# obj.materiaux[0]
396                 TechnicalUse = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['Modele_TechnicalUse']),#defaut=obj.technical_use 
397                 Reference=SIMP(statut='o',typ='TXM',), # defaut=monModele.reference, momModele = obj par la suite
398                 Model_Developed_For_EDF = SIMP(typ = bool, statut = 'o'), #defaut = monModele.dvt_EDF[0]
399                 Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('all', 'thermo', 'radio'),), # defaut = monModele.type_vieil
400 # attention c est une liste --> a reflechir
401                 Stabilizer = SIMP(typ = bool, statut = 'o'), #,defaut = monModele.stabilise
402                 material_thickness = SIMP(typ = 'TXM', statut = 'o', into = ['thin','thick']), # monModele.thickness
403                 Diffusion = SIMP(typ = bool, statut = 'o'),# defaut = monModele.diffusion  ,siValide = lienDB.prepareDiffusion
404                 Evaporation = SIMP(typ = bool, statut = 'o'), # defaut monModele.evaporation
405                 Comment   = SIMP(statut= 'o',typ= 'TXM',), # classe.comment
406                 ), #fin id
407               Equations = FACT (statut = 'o',
408 # remplir avec getEquation sur modele
409 # dictionnaire avec comme clef 'base' puis initiation ...
410                 Liste=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P  [k]' , 'A   [K5,Y5]', 'B', 'C']),
411 # quand coche je recupere le nom entre crochet + split sur , attention sans blanc
412 # et on cree le SIMP apres pour recuperer la valeur
413                 K5=SIMP (statut = 'o', typ = 'R' ),
414                New = SIMP (statut = 'o', typ = bool, defaut=False),
415
416                b_new =  BLOC(condition = " New == True" ,
417                  Add=FACT(statut = 'o',max='**',
418                  Filtre = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['Type_D_Equation']),
419                  Equations=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P' , 'A', 'B', 'C'])
420                  )
421                 ), # b new
422                 ) # fin equations
423               ), #fin modification
424              ), # fin modify model
425
426 #     ------------------------------------------------------------------------
427 #      b_Model_Analytic = BLOC(condition = "Model_Type == 'analytic model'",
428 #          Type_chgt   = SIMP (statut= 'o',typ= 'TXM',into=('modify equation', 'create equation', 'modify model', 'create model') ),
429 #
430 #         b_creation_equation = BLOC (condition  = 'Type_chgt == "create equation"',
431 #          Creation = FACT(statut = 'o',
432 #             Name=SIMP(statut= 'o',typ= 'TXM',),   # defaut o.nom
433 #             Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['posttraitement_Typ']), # defaut o.type_equa
434 #             PostProcessing = SIMP (statut = 'o', typ = bool,),# o.post_processing 
435 #             Calculation_Result = SIMP(statut= 'o',typ= 'TXM'), # defaut o.calculation_result
436 ## dans o.parameters on a une liste
437 #             Parameters=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'Ea', 'C']),
438 #             New = SIMP (statut = 'o', typ = bool, defaut=False),
439 #             b_new =  BLOC(condition = " New == True" ,
440 #               Param = FACT(statut = 'o', max='**',
441 #                 Name=SIMP(statut= 'o',typ= 'TXM',), 
442 #               ), #param
443 #             ),  # b_new
444 #             Equation = SIMP(statut= 'o',typ= 'TXM'), # defaut o.equation
445 #             Universal_Constants=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'B', 'C']),
446 #             Results_Unit = SIMP(statut= 'o',typ= 'TXM'), # defaut o.results_unit
447 #             Integrate = SIMP (statut = 'o', typ = bool),# defaut o.integrate
448 #             Comment = SIMP(statut= 'o',typ= 'TXM'), # defaut o.comment
449 #          ),# Fact creation
450 #         ), #bloc b_creation_equation
451
452 #         b_modification_equation = BLOC (condition  = 'Type_chgt == "modify equation"',
453 #          Filtre = FACT(statut = 'o',
454 #             Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['posttraitement_Typ']), # defaut o.type_equa
455 #             Equation_Choice = SIMP(statut= 'o',typ= 'TXM',into=['A','B','C']),
456 #          ),
457 #          Modification = FACT(statut = 'o',
458 #             Name=SIMP(statut= 'o',typ= 'TXM',),   # defaut o.nom
459 #             Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=dicoInfoGenerales['posttraitement_Typ']), # defaut o.type_equa
460 #             PostProcessing = SIMP (statut = 'o', typ = bool,),# o.post_processing 
461 #             Calculation_Result = SIMP(statut= 'o',typ= 'TXM'), # defaut o.calculation_result # dans o.parameters on a une liste
462 #             Parameters=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'Ea', 'C']),
463 #             New = SIMP (statut = 'o', typ = bool, defaut=False),
464 #             b_new =  BLOC(condition = " New == True" ,
465 #               Param = FACT(statut = 'o', max='**',
466 #                 Name=SIMP(statut= 'o',typ= 'TXM',), 
467 #               ), #param
468 #             ),  # b_new
469 #             Equation = SIMP(statut= 'o',typ= 'TXM'), # defaut o.equation
470 #             Universal_Constants=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'B', 'C']),
471 #             Results_Unit = SIMP(statut= 'o',typ= 'TXM'), # defaut o.results_unit
472 #             Integrate = SIMP (statut = 'o', typ = bool),# defaut o.integrate
473 #             Comment = SIMP(statut= 'o',typ= 'TXM'), # defaut o.comment
474 #          ),# Fact Modification
475
476 #         ), #bloc b_modification_equation
477 #      ), # Fin model analytic
478 #     ------------------------------------------------------------------------
479 #        ---------------------------------------------------------------------------
480
481 )