From 9b15af810e571fe34ec6374a086fffa2177f8b3f Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Fri, 21 Sep 2018 12:26:03 +0200 Subject: [PATCH] modif pour VP --- InterfaceQT4/editor.py | 47 +-- InterfaceQT4/editorSsIhm.py | 131 ++++-- InterfaceQT4/eficas_go.py | 17 + InterfaceQT4/monWidgetFact.py | 11 + VirtualPolymer/VP_Cata_V2.py | 722 ++++++++++++++++++++-------------- VirtualPolymer/lienDB.py | 692 ++++++++------------------------ VirtualPolymer/prefs_VP.py | 1 + 7 files changed, 700 insertions(+), 921 deletions(-) diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index a95c1c62..fb0acf82 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -112,7 +112,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True if self.code in ['TELEMAC',] : self.enteteQTree='premier' else : self.enteteQTree='complet' - if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True + if self.code in ['Adao','ADAO','TELEMAC','VP'] : self.affichePlie=True else : self.affichePlie=False self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue @@ -420,7 +420,6 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # si possible on renomme l objet comme le noeud couper if (self.QWParent.edit == "couper"): - #print ('je pass la') if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee ')) @@ -521,9 +520,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): nodeOuAjouter=self.node_selected[0] if nodeOuAjouter != self.tree.racine : while nodeOuAjouter.treeParent != self.tree.racine: - #print (nodeOuAjouter) nodeOuAjouter=nodeOuAjouter.treeParent - #print (nodeOuAjouter.parent == self.tree.racine) nouveau=nodeOuAjouter.appendBrother(nomEtape) try : self.node_selected[0].setSelected(False) @@ -993,47 +990,6 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): # dans le JDC self.jdc.suppEntite(etape) - #-------------------------------------# - def deleteMC(self,etape,MCFils,listeAvant=()): - #-------------------------------------# - # dans le JDC - ouChercher=etape - for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - monMC=ouChercher.getChild(MCFils,restreint="oui") - if monMC != None : ouChercher.suppEntite(monMC) - ouChercher.state='changed' - ouChercher.isValid() - - #-------------------------------------# - def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()): - #-------------------------------------# - # dans le JDC - ouChercher=etape - for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - monMC=etape.getChild(ouChercher,restreint="oui") - if monMC== None : monMC= ouChercher.addEntite(MCFils) - monMC.valeur=valeurs - monMC.val=valeurs - monMC.state='changed' - monMC.isValid() - - #----------------------------------------------# - def ajoutMCFact(self,etape,MCFils,listeAvant=()): - #----------------------------------------------# - # dans le JDC - #print ('ajoutMCFact') - ouChercher=etape - #print (ouChercher) - for mot in listeAvant : - ouChercher=ouChercher.getChild(mot,restreint="oui") - #print (mot) - #print (ouChercher) - monMC=etape.getChild(ouChercher,restreint="oui") - if monMC== None : monMC= ouChercher.addEntite(MCFils) - monMC.isValid() - #----------------------------------------- def initSplitterSizes(self, nbWidget=3): @@ -1115,7 +1071,6 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget): #----------------------- def getEtapeCourante(self) : #----------------------- - #print (self.tree.selectedItems()) if len(self.tree.selectedItems()) != 1 : return None etape=self.tree.selectedItems()[0].item.object.getEtape() return etape diff --git a/InterfaceQT4/editorSsIhm.py b/InterfaceQT4/editorSsIhm.py index 66c2f887..4fc4772d 100755 --- a/InterfaceQT4/editorSsIhm.py +++ b/InterfaceQT4/editorSsIhm.py @@ -640,60 +640,115 @@ class JDCEditorSsIhm : # dans le JDC ouChercher=etape for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") - monMC=ouChercher.get_child(MCFils,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") if monMC != None : ouChercher.suppentite(monMC) ouChercher.state='changed' ouChercher.isvalid() - #-------------------------------------# + #--------------------------------------------------------# def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()): - #-------------------------------------# + #--------------------------------------------------------# # dans le JDC + debug=False + if debug : print ('ajoutMC', etape,MCFils,valeurs,listeAvant) ouChercher=etape + if debug : print (ouChercher) for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") - monMC=etape.get_child(ouChercher,restreint="oui") - if monMC== None : monMC= ouChercher.addentite(MCFils) + ouChercher=ouChercher.getChild(mot,restreint="oui", debug=1) + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC == None : monMC = ouChercher.addEntite(MCFils) monMC.valeur=valeurs monMC.val=valeurs monMC.state='changed' monMC.isvalid() + return 1 + + #--------------------------------------------------------# + def ajoutMCinMCFactUnique(self,etape,MCFils,valeurs,listeAvant=()): + # Attention si +sieursMCFACT + #--------------------------------------------------------# + # dans le JDC + debug=False + if debug : print ('ajoutMC', etape,MCFils,valeurs,listeAvant) + ouChercher=etape + if debug : print (ouChercher) + for mot in listeAvant : + ouChercher=ouChercher.getChild(mot,restreint="oui", debug=1) + # Attention si +sieursMCFACT + ouChercher=ouChercher[0] + if debug : print (ouChercher) + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC == None : monMC = ouChercher.addEntite(MCFils) + monMC.valeur=valeurs + monMC.val=valeurs + monMC.state='changed' + monMC.isValid() + return 1 #----------------------------------------------# def ajoutMCFact(self,etape,MCFils,listeAvant=()): #----------------------------------------------# # dans le JDC - print ('ajoutMCFact') ouChercher=etape - print (ouChercher) for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") - print (mot) - print (ouChercher) - monMC=etape.get_child(ouChercher,restreint="oui") - if monMC== None : monMC= ouChercher.addentite(MCFils) + ouChercher=ouChercher.getChild(mot,restreint="oui") + monMC=etape.getChild(ouChercher,restreint="oui") + if monMC== None : monMC= ouChercher.addEntite(MCFils) monMC.isvalid() + #-----------------------------------------------------------------# + def setValeurMCSimpInEtape(self,etape,listeAvant,valeur): + #-----------------------------------------------------------------# + # pour VP + monObj=etape + for mot in listeAvant : + monObj=monObj.getChild(mot,restreint="oui") + if monObj==None : return False + if monObj == None : return False + if monObj.valeur != valeur : + # PNPN le setValeur fait des bugs --> pourquoi + #monObj.setValeur(valeur) + monObj.valeur=valeur + monObj.isValid() + return True + #-------------------------------------------------# def getValeur(self,nomEtape,MCFils,listeAvant=()): #-------------------------------------------------# # dans le JDC + debug=0 ouChercher=None for e in self.jdc.etapes: if e.nom == nomEtape : ouChercher=e; break if debug : print ('etape trouvee', ouChercher) if ouChercher==None : return None for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") if debug : print (mot, ouChercher) if ouChercher==None : return None - monMC=ouChercher.get_child(MCFils,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") if debug : print ('monMC', monMC) if monMC== None : return None return monMC.valeur + #-------------------------------------------------# + def getMCDsEtape(self,etape,MCFils,listeAvant=()): + #-------------------------------------------------# + # dans le JDC + + if etape==None : return None + ouChercher=etape + debug=0 + for mot in listeAvant : + ouChercher=ouChercher.getChild(mot,restreint="oui") + if debug : print (mot, ouChercher) + if ouChercher==None : return None + monMC=ouChercher.getChild(MCFils,restreint="oui") + if debug : print ('monMC', monMC) + return monMC + #-----------------------------------------------------------# def setValeur(self,nomEtape,MCFils,valeur,listeAvant=()): #--------------------------------------------------------# @@ -704,10 +759,10 @@ class JDCEditorSsIhm : if e.nom == nomEtape : ouChercher=e; break if ouChercher==None : return None for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") #print (mot, ouChercher) if ouChercher==None : return None - monMC=ouChercher.get_child(MCFils,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") monMC.set_valeur(valeur) monMC.isvalid() @@ -723,10 +778,10 @@ class JDCEditorSsIhm : if ouChercher==None : return for mot in listeAvant : - ouChercher=ouChercher.get_child(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") if ouChercher==None : return - monMC=ouChercher.get_child(MCFils,restreint="oui") - if monMC== None : monMC= ouChercher.addentite(MCFils) + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC== None : monMC= ouChercher.addEntite(MCFils) monMC.definition.into=valeurs from Noyau.N_VALIDATOR import IntoProtocol @@ -743,11 +798,11 @@ class JDCEditorSsIhm : for mot in listeAvant : try : - ouChercher=ouChercher.get_child(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") # Le mot clef n est pas la except : return 0 try : - monMC=ouChercher.get_child(MCFils,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") # Le mot clef n est pas la except : return 0 if monMC == None : return 0 @@ -784,23 +839,29 @@ class JDCEditorSsIhm : return 1 #------------------------------------------------# - def changeIntoDefMC(self,nomEtape,listeMC,valeurs): + def changeIntoDefMC(self,etape,listeMC,valeurs): #------------------------------------------------# # dans le MDD #definitionEtape=getattr(self.jdc.cata[0],nomEtape) - definitionEtape=getattr(self.jdc.cata,nomEtape) - ouChercher=definitionEtape + #definitionEtape=getattr(self.jdc.cata,nomEtape) + print ( 'changeIntoDefMC ',etape,listeMC,valeurs) + ouChercher=getattr(self.jdc.cata,etape.nom) - if len(listeMC) > 1 : - for mc in listeMC[0:-1]: - mcfact=ouChercher.entites[mc] - ouChercher=mcfact - mcAccas=ouChercher.entites[listeMC[-1]] + #if len(listeMC) > 1 : + # for mc in listeMC[0:-1]: + # mcfact=ouChercher.entites[mc] + # ouChercher=mcfact + #mcAccas=ouChercher.entites[listeMC[-1]] + + for mc in listeMC : + mcAccas=ouChercher.entites[mc] + ouChercher=mcAccas + if ouChercher == None : return 0 if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into else : oldValeurs=None - if oldValeurs==valeurs : return 0 + if oldValeurs==valeurs : return 1 mcAccas.into=valeurs from Noyau.N_VALIDATOR import IntoProtocol mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max) @@ -895,11 +956,11 @@ class JDCEditorSsIhm : ouChercher = etape for mot in listeMC[:-1] : - ouChercher=ouChercher.get_child(mot,restreint="oui") + ouChercher=ouChercher.getChild(mot,restreint="oui") if ouChercher==None : return MCFils=listeMC[-1] - monMC=ouChercher.get_child(MCFils,restreint="oui") - if monMC== None : monMC= etape.addentite(MCFils) + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC== None : monMC= etape.addEntite(MCFils) monMC.definition.into=into monMC.valeur=valeurs diff --git a/InterfaceQT4/eficas_go.py b/InterfaceQT4/eficas_go.py index d7aea420..e5ef13ef 100755 --- a/InterfaceQT4/eficas_go.py +++ b/InterfaceQT4/eficas_go.py @@ -77,6 +77,23 @@ def lanceEficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'): res=app.exec_() sys.exit(res) +def lanceEficasMap2(code=None,fichier=None,ssCode=None,multi=True,langue='en'): + from Editeur import session + options=session.parse(sys.argv) + from InterfaceQT4.qtEficas import Appli + app = QApplication(sys.argv) + Eficas=Appli(code='Map2',salome=0,ssCode='V2',multi=False,langue=langue) + Eficas.show() + + Eficas.fileNew() + Eficas.ssCode='V2017' + Eficas.readercata.demandeCatalogue='V2017' + Eficas.fileNew() + Eficas.fileNew() + + + res=app.exec_() + sys.exit(res) def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'): """ diff --git a/InterfaceQT4/monWidgetFact.py b/InterfaceQT4/monWidgetFact.py index 38f5805b..d756cb28 100644 --- a/InterfaceQT4/monWidgetFact.py +++ b/InterfaceQT4/monWidgetFact.py @@ -41,6 +41,9 @@ class MonWidgetFactCommun(Groupe): self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse) self.parentQt.commandesLayout.insertWidget(insertIn,self) self.doitAfficherOptionnel=False + min,max=obj.getMinMax() + if max < 2 and hasattr(self, 'RBPlus') : self.RBPlus.close() + if max > 1 and hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB) def enterEvent(self,event): #print "enterEvent ", self.node.item.getLabelText()[0] @@ -57,6 +60,14 @@ class MonWidgetFactCommun(Groupe): #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel() + def ajouteMCParPB(self): + texteListeNom="+"+self.obj.nom + parentOuAjouter=self.parentQt + from .monWidgetBloc import MonWidgetBloc + while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) : + parentOuAjouter=parentOuAjouter.parentQt + parentOuAjouter.ajoutMC(texteListeNom) + class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun): def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1): diff --git a/VirtualPolymer/VP_Cata_V2.py b/VirtualPolymer/VP_Cata_V2.py index 271a46ba..93a6008a 100644 --- a/VirtualPolymer/VP_Cata_V2.py +++ b/VirtualPolymer/VP_Cata_V2.py @@ -1,303 +1,419 @@ -# coding: utf-8 -import types -from Accas import * - -import lienDB -import listesDB - -monDico= { 'Equation_Liste' : ('initiation', 'propagation', 'termination', 'stabilization'), - 'Modele_TechnicalUse' : ('cable', 'coating', 'pipes'), - 'Aging_Factor' : { 'predefinedSimulationTime' : ('40years BR top', '40years BR bottom')}, - 'Boundary_Conditions' : ('flux_volume','flux_surface','constant_constration','convection_flux'), - 'posttraitement_Typ' : ('chimique','mecanique','physique'), - } - -monModele=listesDB.sModele().monModele -monPost=listesDB.sModele().monPost - -import types -class Tuple: - def __init__(self,ntuple): - self.ntuple=ntuple - - def __convert__(self,valeur): - if type(valeur) == types.StringType: - return None - if len(valeur) != self.ntuple: - return None - return valeur - - def info(self): - return "Tuple de %s elements" % self.ntuple - - -JdC = JDC_CATA(code='VP', - execmodul=None, - ) - - -#--------------------------------- -Equation = PROC (nom="Equation", - op=None, -#--------------------------------- - Equation_DB=SIMP(statut= 'o',typ= 'TXM', into=("Approved data base", "My data base") ), - #b_suite = BLOC(condition = "Equation_DB == 'My data base' ", - Equation_Type = SIMP(statut= 'o',typ= 'TXM', into=("Show equation database", "Equation creation"),), - #), - #b_suite_2 = BLOC(condition = "Equation_DB == 'Approved data base' ", - #Equation_Type = SIMP(statut= 'o',typ= 'TXM', into=("Show equation database", ),), - #), - -# --------------------------------------------------------------------------- - b_type_show = BLOC(condition = " Equation_Type == 'Show equation database'", -# --------------------------------------------------------------------------- - Equation_Liste=SIMP(statut= 'o',typ= 'TXM', into=('reaction_type','aging_type')), - - b_reaction_type = BLOC(condition = " Equation_Liste == 'reaction_type'", - Equation_reaction=SIMP(statut= 'o',typ= 'TXM', into=monDico['Equation_Liste'],siValide=lienDB.recupereDicoEquation), - ), # Fin b_reaction_type - - b_aging_type = BLOC(condition = " Equation_Liste == 'aging_type'", - Equation_reaction=SIMP(statut= 'o',typ= 'TXM', into=('All', 'thermo', 'radio'),siValide=lienDB.recupereDicoEquation), - ), # Fin b_reaction_type - - ListeEquation = SIMP(statut='o', typ='TXM', homo='SansOrdreNiDoublon',siValide=lienDB.afficheValeurEquation), - #ListeEquation = SIMP(statut='o', typ='TXM', homo='SansOrdreNiDoublon'), - b_modification = BLOC(condition = " ListeEquation != None ", - modification = SIMP(typ = bool, statut = 'o',defaut = False, fr='toto', ang='toto en anglais', siValide=lienDB.instancieChemicalFormulation), - - b_modif = BLOC(condition = "modification == True", - Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Equation_Liste'],), - Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max='**', homo='SansOrdreNiDoublon', into=('All', 'thermo', 'radio'),), - ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = 'POOH -> 2P'), - - OptionnelConstituant = FACT ( statut = 'f',max = '**', - Constituant = SIMP (statut = 'o', typ = 'TXM'), - Differential_Equation = SIMP(statut= 'o',typ= 'TXM'), - ), # fin Const_Equa - OptionnelleConstante = FACT (statut = 'f', max = '**', - ConstanteName= SIMP (statut = 'o', typ = 'TXM',), - ConstanteType = SIMP(statut= 'o',typ= 'TXM', min=1,into=('Arrhenius type','non Arrhenius type'),defaut='Arrhenius type'), - ),# fin ConstanteOptionnelle - Commentaire = SIMP (statut = 'f', typ = 'TXM', defaut = ' '), - - - ),# fin b_modif - - ), # fin b_modification - ), # Fin b_type_show - - -# --------------------------------------------------------------------------- - b_type_creation = BLOC(condition = " Equation_Type == 'Equation creation'", -# --------------------------------------------------------------------------- - Equation_Modification = FACT ( statut = 'o', - - ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = 'POOH -> 2P'), - - Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Equation_Liste'],), - Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max='**', homo='SansOrdreNiDoublon', into=('All', 'thermo', 'radio'),), - - Constituants = FACT ( statut = 'o', - ConstituantPOOH = SIMP (statut = 'f', typ = 'TXM', into = ('POOH',)), - b_pooh = BLOC(condition = " ConstituantPOOH == 'POOH'" , - Differential_Equation_POOH = SIMP(statut= 'o',typ= 'TXM', defaut = '-ku1*POOH'), - ), # Fin b_pooh - #ConstituantP = SIMP (statut = 'f', typ = 'TXM', into = ('P',)), - #b_p = BLOC(condition = " ConstituantP == 'P'" , - # Differential_Equation_P = SIMP(statut= 'o',typ= 'TXM', defaut = '2*ku1*POOH'), - #), # Fin b_p - ConstituantP = FACT ( statut = 'f', - ConstituantP = SIMP (statut = 'f', typ = 'TXM', into = ('P',)), - Differential_Equation_P = SIMP(statut= 'o',typ= 'TXM', defaut = '2*ku1*POOH'), - ), # Fin ConstituantP - - OptionnelConstituant = FACT ( statut = 'f',max = '**', - Constituant = SIMP (statut = 'o', typ = 'TXM'), - Differential_Equation = SIMP(statut= 'o',typ= 'TXM'), - ), # fin Const_Equa - ),# Fin Constituants - - Constante = FACT ( statut = 'o', - Constanteku1 = SIMP (statut = 'f', typ = 'TXM', into = ('ku1',), defaut= 'ku1'), - b_cku1 = BLOC(condition = "Constanteku1 == 'ku1'" , - ConstanteType = SIMP(statut= 'o',typ= 'TXM', into=('Arrhenius type','non Arrhenius type'),defaut='Arrhenius type'), - ), - OptionnelleConstante = FACT (statut = 'f', max = '**', - ConstanteName= SIMP (statut = 'o', typ = 'TXM',), - ConstanteType = SIMP(statut= 'o',typ= 'TXM', min=1,into=('Arrhenius type','non Arrhenius type'),defaut='Arrhenius type'), - ),# fin ConstanteOptionnelle - ), # fin constante - Commentaire = SIMP (statut = 'f', typ = 'TXM', defaut = ' '), - - ), # Fin Equation_Modification - ), # fin b_type_creation - - -) # Fin Equation - -#--------------------------------- -Modele = PROC (nom="Modele", - op=None, - Modele_DB=SIMP(statut= 'o',typ= 'TXM', into=("Approved data base", "My data base"),siValide=lienDB.recupereDicoModele ), - Modele_Type = SIMP(statut= 'o',typ= 'TXM', into=("Show modele database", "Modele creation"),siValide=lienDB.creeListeEquation), -# --------------------------------------------------------------------------- - b_type_creation = BLOC(condition = " Modele_Type == 'Modele creation'", -# --------------------------------------------------------------------------- - ID=FACT(statut='o', - technicalUse= SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse'],defaut=monModele.technical_use ), - modeleName=SIMP(statut='o',typ='TXM',defaut=monModele.nom,), - material=SIMP(statut='o',typ='TXM',defaut=monModele.materiaux[0],), - agingType=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon', into=('All', 'thermo', 'radio'), defaut=monModele.type_vieil), - stabilizer = SIMP(typ = bool, statut = 'o',defaut = monModele.stabilise), - material_thickness = SIMP(typ = 'TXM', statut = 'o',defaut = monModele.thickness, into = ['thin','thick']), - # il faudrait que position=global_jdc fonctionne - model_developed_by_for_EDF = SIMP(typ = bool, statut = 'o',defaut = monModele.dvt_EDF[0]), - documentation=SIMP(statut='o',typ='TXM',defaut=monModele.reference,), - - ), # fin ID - # ajouter la liste des equations et le remove (il faut garder ceux qu on a enlever) - - Chemical_Equation = FACT( statut='o', - Initial_Equation_List=SIMP(statut='o',typ='TXM',max="**",homo='SansOrdreNiDoublon',into=[],defaut=[], siValide=lienDB.recupereModeleEquation), - - AjoutEquation=SIMP(statut= 'o',typ= bool, defaut=False, siValide=lienDB.recupereModeleEquation), - b_ajout_equation = BLOC(condition = " AjoutEquation == True", - listeEquation_initiation=SIMP(statut='o', typ='TXM',homo='SansOrdreNiDoublon', max='**', min=0, defaut=[],siValide=lienDB.ajoutDUneEquation ), - listeEquation_propagation=SIMP(statut='o', typ='TXM',homo='SansOrdreNiDoublon', max='**', min=0, defaut=[],siValide=lienDB.ajoutDUneEquation ), - listeEquation_termination=SIMP(statut='o', typ='TXM',homo='SansOrdreNiDoublon', max='**', min=0, defaut=[],siValide=lienDB.ajoutDUneEquation ), - listeEquation_stabilization=SIMP(statut='o',typ='TXM', homo='SansOrdreNiDoublon', max='**', min=0, defaut=[],siValide=lienDB.ajoutDUneEquation ), - ),# fin b_ajout_equation - - ), # fin Equation - # coefficients monModele.coef = liste de dictionnaire mais il faut prendre que le 0 - # on enleve ceux qui commence par D, S et B(casse imprtante) - # la clef est le coef, puis les valeurs - - - #b_material_thickness = BLOC(condition = "material_thickness == 'thick'", - # si position=global fonctionne - Transport = FACT( statut = 'o', - #Diffusion = SIMP(typ = bool, statut = 'o',defaut = monModele.diffusion,siValide = lienDB.prepareDiffusion), - Diffusion = SIMP(typ = bool, statut = 'o',defaut = False ,siValide = lienDB.prepareDiffusion), - - b_diffusion = BLOC(condition = " Diffusion == True", - listeProduitPourLaDiffusion=SIMP(statut='o', typ='TXM', max='**', min=1,homo='SansOrdreNiDoublon', into = [],siValide=lienDB.ajouteDiffusion), - ), # fin b_diffusion - - Evaporation = SIMP(typ = bool, statut = 'o',defaut = False ,siValide = lienDB.prepareDiffusion), - b_evaporation = BLOC(condition = " Evaporation == True", - listeProduitPourLEvaporation=SIMP(statut='o', typ='TXM', max='**', min=1,homo='SansOrdreNiDoublon', into = [],siValide=lienDB.ajouteEvaporation), - ), # fin b_evaporation - - - ), # fin TRANSPORT - #), # fin b_material_thickness - - Coefficients = FACT( statut = 'o', - Coef_k2 = SIMP (statut ='o', typ='R'), - Coef_ku1 = SIMP (statut ='o', typ=Tuple(2),validators = VerifTypeTuple(('R','R')),), - ), - Parametres_Initiaux = FACT( statut = 'o', - Param_POOH=SIMP (statut ='o', typ='R'), - # La liste est la meme que le INTO des listeProduitsPourlaDiffusion - # la valeur par defaut si elle existe est contenue dans modele.param_ini['POOH'] - ), - - - #AjoutEquation=Fact(statut='f', - # Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Equation_Liste'],siValide=lienDB.recupereModeleEquation), - #), # fin AjoutEquation - ), # fin Creation -# --------------------------------------------------------------------------- - b_type_modification = BLOC(condition = " Modele_Type == 'Show modele database'", -# --------------------------------------------------------------------------- - technicalUse= SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse'],siValide=lienDB.creeListeMateriauxSelonModele), - b_technicalUse = BLOC (condition = 'technicalUse != None and technicalUse != ""', - material= SIMP (statut ='o', typ='TXM',siValide=lienDB.creeListeModelesPossibles), - modele= SIMP (statut ='o', typ='TXM',siValide=lienDB.choisitModele), - b_modele = BLOC (condition = 'modele != None and modele != ""', - action = SIMP (statut ='o', typ='TXM',into = ['display','use','modify'], siValide=lienDB.choisitActionModele), -# --------------------------------------------------------------------------- - b_type_modify = BLOC(condition = " action == 'modify'", -# --------------------------------------------------------------------------- - ID=FACT(statut='o', - modeleName=SIMP(statut='o',typ='TXM'), - technicalUse= SIMP(statut= 'o',typ= 'TXM', into=monDico['Modele_TechnicalUse'] ), - material=SIMP(statut='o',typ='TXM'), - agingType=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon', into=('All', 'thermo', 'radio')), - stabilizer = SIMP(typ = bool, statut = 'o',), - material_thickness = SIMP(typ = 'TXM', statut = 'o', into = ['thin','thick']), - # il faudrait que position=global_jdc fonctionne - model_developed_by_for_EDF = SIMP(typ = bool, statut = 'o',), - documentation=SIMP(statut='o',typ='TXM',), - - -# il faut recopier toute la suite en changeant eventuellement le nom du modele -# il faut cocher toutes les equations par defaut - - ), # fin ID - ), # fin b_type_modify -# --------------------------------------------------------------------------- - b_type_use = BLOC(condition = " action == 'use'", -# --------------------------------------------------------------------------- - simulationName=SIMP(statut='o',typ='TXM'), - outputFolder = SIMP(statut="o", typ="Repertoire",siValide=lienDB.creeCoefAModifier), - ), # fin b_type_use -# --------------------------------------------------------------------------- - b_type_use2 = BLOC(condition = " action == 'use'", -# --------------------------------------------------------------------------- - Aging_Factor = FACT(statut='o', - predefinedSimulationTime = SIMP(statut='o',typ='TXM',into=monDico['Aging_Factor']['predefinedSimulationTime'],siValide=lienDB.remplirAgingFactor), - simulationTime=SIMP(statut='o',typ='R',), - numberOfNodes=SIMP(statut='o',typ='I',val_min=3,siValide=lienDB.creeInitialParameter), - sampleThickness=SIMP(statut='o',typ='R',), - #debitOfDose=SIMP(statut='o',typ='R',), - temperature=SIMP(statut='o',typ='R',), - oxygenPressure=SIMP(statut='o',typ='R',), - polymerConcentration=SIMP(statut='o',typ='R',), - ), - Initial_Parameter = FACT(statut='o', - max='**', - ), - Boundary_Conditions_Param = FACT(statut='o', - diffusionSpecies=SIMP(statut='o',typ='TXM',defaut='O2', into=['O2',]), - nodeNumber = SIMP(statut='o',typ='I',defaut=1, into=[1]), # tjours1 - Boundary_Conditions_O2_1 = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), - BC_Value_Espece_1=SIMP(statut='o',typ='R'), - nodeNumber_Espece_4 = SIMP(statut='o',typ='I',defaut=4, into=[4]), # numberOfNodes+1 - Boundary_Conditions_Espece_4 = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), - BC_Value_Espece_4=SIMP(statut='o',typ='R'), - ), - - ), # fin b_type_use2 - ), # fin b_modele - ), # fin b_technicalUse - ), # fin modification - - Commentaire = SIMP (statut = 'f', typ = 'TXM'), -) # Fin Modele -#--------------------------------- -Posttraitement = PROC (nom="Posttraitement", - op=None, - posttraitement_DB=SIMP(statut= 'o',typ= 'TXM', into=("Approved data base", "My data base") ), - posttraitement_Type = SIMP(statut= 'o',typ= 'TXM', into=("Show post-traitement database", "post-traitement creation"),), -# --------------------------------------------------------------------------- - b_post_creation = BLOC(condition = " posttraitement_Type == 'post-traitement creation'", - posttraitement_Name=SIMP(statut= 'o',typ= 'TXM',defaut=monPost.nom,), - generic=SIMP(statut= 'o',typ= bool,defaut=monPost.general,), - posttraitement_Typ = SIMP(statut= 'o',typ= 'TXM', into=monDico['posttraitement_Typ'],homo='SansOrdreNiDoublon',max='**',defaut=monPost.type_post), - calculation= FACT(statut='o', - # il faut un fact horizontal - calculation_results=SIMP(statut= 'o',typ= 'TXM', min=0,max='**', intoSug=monPost.calculation_results,defaut=monPost.calculation_results), - results_units=SIMP(statut= 'o',typ= 'TXM', min=0,max='**', intoSug=monPost.results_units,defaut=monPost.results_units), - #integrate=SIMP(statut= 'o',typ= 'TXM', min=0,max='**', intoSug=monPost.results_units,defaut=monPost.results_units), - prerequisite=SIMP(statut= 'o',typ= 'TXM', min=0,max='**', intoSug=monPost.prerequisite,defaut=monPost.prerequisite), - - ), - constituant=SIMP(statut= 'o',typ= 'TXM', min=0,max='**', intoSug=monPost.constituants,defaut=monPost.constituants) - - )# fin b_post_creation -# --------------------------------------------------------------------------- -#--------------------------------- -) #Posttraitement +# -*- coding: utf-8 -*- +import types +from Accas import * + +import lienDB + +monDico= { 'Equation_Liste' : ('initiation', 'propagation', 'termination', 'stabilization'), + 'Modele_TechnicalUse' : ('cable', 'coating', 'pipes'), + 'Aging_Factor' : { 'predefinedSimulationTime' : ('40years BR top', '40years BR bottom')}, + 'Boundary_Conditions' : ('flux_volume','flux_surface','constant_constration','convection_flux'), + 'posttraitement_Typ' : ('chimique','mecanique','physique'), + } + +from mapy.virtual_polymer_common import class_data +monMechanisticModel=class_data.Modele() +monMechanisticEquation=class_data.Equation() +if monMechanisticEquation.comment == "" : monMechanisticEquation.comment = ' ' + +def chercheConstituant(laClasse): + lesArgs={} + lesArgs['statut']='o' + for constituant in laClasse.constituants : + monIndex=laClasse.constituants.index(constituant) + valdefaut=laClasse.equation[monIndex] + monSimp=SIMP(statut = 'o', typ = bool, defaut=True) + lesArgs[constituant]=monSimp + + lesArgsBloc={} + nomEquation = ' differentiel_'+constituant + monSimp2 = SIMP(statut= 'o',typ= 'TXM', defaut = valdefaut) + laCondition= constituant+' == True' + lesArgsBloc['condition']=laCondition + lesArgsBloc[nomEquation]=monSimp2 + nomBloc = 'b_'+constituant + leBloc = BLOC(**lesArgsBloc) + lesArgs[nomBloc]=BLOC(**lesArgsBloc) + return FACT(**lesArgs) + +def chercheConstantes(laClasse): + lesArgs={} + lesArgs['statut']='o' + for constante in laClasse.const_cine_nom : + monSimp=SIMP(statut = 'o', typ = bool, defaut=True) + lesArgs[constante]=monSimp + return FACT(**lesArgs) + + +import types +class Tuple: + def __init__(self,ntuple): + self.ntuple=ntuple + + def __convert__(self,valeur): + if type(valeur) == types.StringType: + return None + if len(valeur) != self.ntuple: + return None + return valeur + + def info(self): + return "Tuple de %s elements" % self.ntuple + + +JdC = JDC_CATA(code='VP', + execmodul=None, + ) + +# ------------------------------------------ +Database = PROC (nom="Database", op=None, +# ------------------------------------------ + Database_Type = SIMP(statut= 'o',typ= 'TXM', into=("Local database", "Standard database"),), + Model_Type = SIMP(statut= 'o',typ= 'TXM', into=("master model", "analytic model" ,"mechanistic model") ), + + +# ------------------------------------------------------------------------ + b_Model_Mechanistic = BLOC(condition = "Model_Type == 'mechanistic model'", +# ------------------------------------------------------------------------ + Type_chgt = SIMP (statut= 'o',typ= 'TXM',into=('modify equation', 'create equation', 'modify model', 'create model'),), + + b_creation_equation = BLOC (condition = 'Type_chgt == "create equation"', + # toutes les valeurs sont par defaut class_data.Equation + # generer le catalogue avec un fact + # Aging_Type type_vieil, + Creation = FACT ( statut = 'o', + ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = monMechanisticEquation.representation ), + Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('All', 'thermo', 'radio'), defaut = monMechanisticEquation.type_vieil[0]), + Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=monDico['Equation_Liste'], defaut = monMechanisticEquation.type_react), + Constituants = chercheConstituant(monMechanisticEquation), + New = SIMP (statut = 'o', typ = bool, defaut=False), + b_new = BLOC(condition = " New == True" , + Constituant = FACT ( statut = 'o', min=1, max='**', + Name = SIMP(statut= 'o',typ= 'TXM'), + Differential_Equation = SIMP(statut= 'o',typ= 'TXM'), + ), + ), # b new + + Constantes = chercheConstantes(monMechanisticEquation), + New_Cst = SIMP (statut = 'o', typ = bool, defaut=False), + b_new_cst = BLOC(condition = " New_Cst == True" , + Constante = FACT ( statut = 'o', min=1, max='**', + Name = SIMP (statut = 'o', typ = 'TXM'), + ), # fin constante + ), #fin b_new + + Arrhenius = SIMP (statut = 'o', typ = bool, defaut=monMechanisticEquation.arrhenius), + Comment = SIMP(statut= 'o',typ= 'TXM', defaut = monMechanisticEquation.comment), + ), # fin creation mechanistic model + ), # fin b_create_equation + + b_modify_equation = BLOC (condition = 'Type_chgt == "modify equation"', +# les valeurs par defaut seront lues dans la base de données + Filtre = FACT (statut='o', + Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Equation_Liste'], siValide=lienDB.remplitMechanisticModifyEquationListeEquation), +# Filtre getMechanisticEquation(Reaction_Type) +# diictionnaire key : nom de l equation / valeur classe instancies liste de nom d'equation + Equation_List=SIMP(statut= 'o',typ= 'TXM', siValide=lienDB.remplitModificationEquation), + ), + # lorsque le choix est fait on peut recuperer les valeurs par defaut + + #ChemicalFormulation = SIMP(statut='o', typ='TXM', defaut = 'POOH -> 2P'), + Modification = FACT (statut='o', + ChemicalFormulation = SIMP(statut='o', typ='TXM', ), # classe.representation + Reaction_Type=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Equation_Liste']), # classe.type_react + Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('All', 'thermo', 'radio'),), # classe.type_vieil + + Constituants = FACT ( statut = 'o', # classe.constituants --> liste de nom. les equations sont dans le meme ordre self.equation + POOH = SIMP (statut = 'o', typ = bool, defaut=False), + b_pooh = BLOC(condition = " POOH == True" , + Differential_Equation_POOH = SIMP(statut= 'o',typ= 'TXM', defaut = '-ku1*POOH'), + ), # Fin b_pooh + PO = SIMP (statut = 'o', typ = bool, defaut=False), + b_po = BLOC(condition = " PO == True" , + Differential_Equation_PO = SIMP(statut= 'o',typ= 'TXM', defaut = '-ku1*POOH'), + ), # Fin b_po + New = SIMP (statut = 'o', typ = bool, defaut=False), + b_new = BLOC(condition = " New == True" , + Constituant = FACT ( statut = 'o', min=1, max='**', + Name = SIMP (statut = 'o', typ = 'TXM'), + Differential_Equation = SIMP(statut= 'o',typ= 'TXM'), + ), # Fin Constituant + ), # Fin b_new + ),# Fin Constituants + + Constantes = FACT ( statut = 'o', # self.const_cine_nom + KU1 = SIMP (statut = 'o', typ = bool, defaut=False), + New = SIMP (statut = 'o', typ = bool, defaut=False), + b_new = BLOC(condition = " New == True" , + Constante = FACT ( statut = 'o', min=1, max='**', + Name = SIMP (statut = 'o', typ = 'TXM'), + ), # fin constante + ), #fin b_new + ), # fin constantes + Arrhenius = SIMP (statut = 'o', typ = bool, ), # classe.arrhenius[0] + Comment = SIMP(statut= 'o',typ= 'TXM',), # classe.comment + ), # fin modification + ), # fin b_modify_equation + + + b_create_model = BLOC (condition = 'Type_chgt == "create model"', +# Filtre getMechanisticTechnicalUse(Filtre_TechnicalUse) +# dictionnaire key : nom du modele / valeur classe instancies liste de nom modele +# la classe par defaut getDefaultMechanistic +# renvoie un obj instancie + # toutes les valeurs sont par defaut class_data.Equation + # generer le catalogue avec un fact + Creation = FACT (statut='o', + ID=FACT (statut='o', + Name =SIMP(statut='o',typ='TXM'), # obj.nom + Material=SIMP(statut='o',typ='TXM',),# obj.materiaux[0] + TechnicalUse = SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse']),#defaut=obj.technical_use + Reference=SIMP(statut='o',typ='TXM',), # defaut=monModele.reference, momModele = obj par la suite + Model_Developed_For_EDF = SIMP(typ = bool, statut = 'o'), #defaut = monModele.dvt_EDF[0] + Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('all', 'thermo', 'radio'),), # defaut = monModele.type_vieil +# attention c est une liste --> a reflechir + Stabilizer = SIMP(typ = bool, statut = 'o'), #,defaut = monModele.stabilise + material_thickness = SIMP(typ = 'TXM', statut = 'o', into = ['thin','thick']), # monModele.thickness + Diffusion = SIMP(typ = bool, statut = 'o'),# defaut = monModele.diffusion ,siValide = lienDB.prepareDiffusion + Evaporation = SIMP(typ = bool, statut = 'o'), # defaut monModele.evaporation + Comment = SIMP(statut= 'o',typ= 'TXM',), # classe.comment + ), #fin id + Equations = FACT (statut = 'o', +# remplir avec getEquation sur modele +# dictionnaire avec comme clef 'base' puis initiation ... + Liste=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P [k]' , 'A [K5,Y5]', 'B', 'C']), +# quand coche je recupere le nom entre crochet + split sur , attention sans blanc +# et on cree le SIMP apres pour recuperer la valeur + K5=SIMP (statut = 'o', typ = 'R' ), + New = SIMP (statut = 'o', typ = bool, defaut=False), +# + b_new = BLOC(condition = " New == True" , + Add=FACT(statut = 'o',max='**', + Filtre = SIMP(statut= 'o',typ= 'TXM',into=monDico['Equation_Liste']), + Equations=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P' , 'A', 'B', 'C']) + ) + ), # b new + ) # fin equations + ), #fin creation + ), # fin create model + + b_modify_model = BLOC (condition = 'Type_chgt == "modify model"', +# Filtre getMechanisticTechnicalUse(Filtre_TechnicalUse) +# dictionnaire key : nom du modele / valeur classe instancies liste de nom modele +# la classe par defaut getDefaultMechanistic +# renvoie un obj instancie + Filtre = FACT (statut='o', + TechnicalUse=SIMP(statut= 'o',typ= 'TXM', min=1,into=monDico['Modele_TechnicalUse'],), +# si valide + ModeleName=SIMP(statut='o',typ='TXM',into=['A','B']), # a choisir dans la liste des clefs + ), + Modification = FACT (statut='o', + ID=FACT (statut='o', + Name =SIMP(statut='o',typ='TXM'), # obj.nom + Material=SIMP(statut='o',typ='TXM',),# obj.materiaux[0] + TechnicalUse = SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse']),#defaut=obj.technical_use + Reference=SIMP(statut='o',typ='TXM',), # defaut=monModele.reference, momModele = obj par la suite + Model_Developed_For_EDF = SIMP(typ = bool, statut = 'o'), #defaut = monModele.dvt_EDF[0] + Aging_Type=SIMP(statut= 'o',typ= 'TXM', min=1,max=1, into=('all', 'thermo', 'radio'),), # defaut = monModele.type_vieil +# attention c est une liste --> a reflechir + Stabilizer = SIMP(typ = bool, statut = 'o'), #,defaut = monModele.stabilise + material_thickness = SIMP(typ = 'TXM', statut = 'o', into = ['thin','thick']), # monModele.thickness + Diffusion = SIMP(typ = bool, statut = 'o'),# defaut = monModele.diffusion ,siValide = lienDB.prepareDiffusion + Evaporation = SIMP(typ = bool, statut = 'o'), # defaut monModele.evaporation + Comment = SIMP(statut= 'o',typ= 'TXM',), # classe.comment + ), #fin id + Equations = FACT (statut = 'o', +# remplir avec getEquation sur modele +# dictionnaire avec comme clef 'base' puis initiation ... + Liste=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P [k]' , 'A [K5,Y5]', 'B', 'C']), +# quand coche je recupere le nom entre crochet + split sur , attention sans blanc +# et on cree le SIMP apres pour recuperer la valeur + K5=SIMP (statut = 'o', typ = 'R' ), + New = SIMP (statut = 'o', typ = bool, defaut=False), +# + b_new = BLOC(condition = " New == True" , + Add=FACT(statut = 'o',max='**', + Filtre = SIMP(statut= 'o',typ= 'TXM',into=monDico['Equation_Liste']), + Equations=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['POOH -> 2P' , 'A', 'B', 'C']) + ) + ), # b new + ) # fin equations + ), #fin modification + ), # fin modify model + + ), # Fin mechanistic +# ------------------------------------------------------------------------ + b_Model_Analytic = BLOC(condition = "Model_Type == 'analytic model'", + Type_chgt = SIMP (statut= 'o',typ= 'TXM',into=('modify equation', 'create equation', 'modify model', 'create model') ), + + b_creation_equation = BLOC (condition = 'Type_chgt == "create equation"', + Creation = FACT(statut = 'o', + Name=SIMP(statut= 'o',typ= 'TXM',), # defaut o.nom + Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=monDico['posttraitement_Typ']), # defaut o.type_equa + PostProcessing = SIMP (statut = 'o', typ = bool,),# o.post_processing + Calculation_Result = SIMP(statut= 'o',typ= 'TXM'), # defaut o.calculation_result +# dans o.parameters on a une liste + Parameters=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'Ea', 'C']), + New = SIMP (statut = 'o', typ = bool, defaut=False), + b_new = BLOC(condition = " New == True" , + Param = FACT(statut = 'o', max='**', + Name=SIMP(statut= 'o',typ= 'TXM',), + ), #param + ), # b_new + Equation = SIMP(statut= 'o',typ= 'TXM'), # defaut o.equation + Universal_Constants=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'B', 'C']), + Results_Unit = SIMP(statut= 'o',typ= 'TXM'), # defaut o.results_unit + Integrate = SIMP (statut = 'o', typ = bool),# defaut o.integrate + Comment = SIMP(statut= 'o',typ= 'TXM'), # defaut o.comment + ),# Fact creation + ), #bloc b_creation_equation + + b_modification_equation = BLOC (condition = 'Type_chgt == "modify equation"', + Filtre = FACT(statut = 'o', + Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=monDico['posttraitement_Typ']), # defaut o.type_equa + Equation_Choice = SIMP(statut= 'o',typ= 'TXM',into=['A','B','C']), + ), + Modification = FACT(statut = 'o', + Name=SIMP(statut= 'o',typ= 'TXM',), # defaut o.nom + Equation_Type = SIMP(statut= 'o',typ= 'TXM',into=monDico['posttraitement_Typ']), # defaut o.type_equa + PostProcessing = SIMP (statut = 'o', typ = bool,),# o.post_processing + Calculation_Result = SIMP(statut= 'o',typ= 'TXM'), # defaut o.calculation_result +# dans o.parameters on a une liste + Parameters=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'Ea', 'C']), + New = SIMP (statut = 'o', typ = bool, defaut=False), + b_new = BLOC(condition = " New == True" , + Param = FACT(statut = 'o', max='**', + Name=SIMP(statut= 'o',typ= 'TXM',), + ), #param + ), # b_new + Equation = SIMP(statut= 'o',typ= 'TXM'), # defaut o.equation + Universal_Constants=SIMP(statut= 'o',typ='TXM', min=1,max='**', homo='SansOrdreNiDoublon',into =['A', 'B', 'C']), + Results_Unit = SIMP(statut= 'o',typ= 'TXM'), # defaut o.results_unit + Integrate = SIMP (statut = 'o', typ = bool),# defaut o.integrate + Comment = SIMP(statut= 'o',typ= 'TXM'), # defaut o.comment + ),# Fact Modification + + ), #bloc b_modification_equation + ), # Fin model analytic +# ------------------------------------------------------------------------ +# --------------------------------------------------------------------------- + + b_model_master=BLOC(condition = 'Model_Type == "master model"', + Type_chgt = SIMP (statut= 'o',typ= 'TXM',into=('modify model', 'create model') ), + ), +) + + +# ---------------------------------------------- +Calculation = PROC (nom="Calculation", op=None, +# ---------------------------------------------- + Database=SIMP(statut= 'o',typ= 'TXM', into=("local database", "standard database") ), + Model=SIMP(statut= 'o',typ= 'TXM', into=("master model", "analytic model" ,"mechanistic model"),), + #b_Model_Name = BLOC(condition = 'Model in ("master model","mechanistic model")', + #b_Model_Name_1 = BLOC(condition = 'Model == "master model"', + # pose un pb si 2 blocs sont generes ??? + # TechnicalUse= SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse'],),#defaut=monModele.technical_use , + # ModeleName=SIMP(statut='o',typ='TXM',),#defaut=monModele.nom,, +# filtre_calculation_mechanistic - > 3 dictionnaires +# la clef du 1er niveau est le modele qui remplit SimulationName + #), + + +# MASTER MODEL + b_simulation_modele = BLOC(condition = 'Model == "master model"', + TechnicalUse= SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse'],),#defaut=monModele.technical_use , + ModeleName=SIMP(statut='o',typ='TXM',),#defaut=monModele.nom,, + Analytical_Equations = FACT(statut= 'o', max='**', + Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Equation A"), + Clef1=SIMP(statut='o',typ='R'), + Clef2=SIMP(statut='o',typ='R'), + ), + ChemicalKinetics = FACT ( statut = 'o', + SimulationName=SIMP(statut='o',typ='TXM'), + OutputFolder = SIMP(statut="o", typ="Repertoire"), + Time=SIMP(statut='o',typ='R',), + Temperature=SIMP(statut='o',typ='R',), + DebitOfDose=SIMP(statut='o',typ='R',), + Thickness=SIMP(statut='o',typ='R',), + Dicretization= SIMP(statut='o',typ='R',), +# remplir les equations + InitialValue = SIMP(statut ='o', typ=Tuple(2),validators = VerifTypeTuple(('TXM','R')),max='**'), + + Boundary_Conditions = FACT(statut='o', + Product=FACT(statut='o', max='**', +# a remplir avec le filtre une liste des boundary +# ----------------------------------- + Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Diffusion Product"), + Node_0 = FACT (statut='o', + Boundary_Condition_Type = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), + Value=SIMP(statut='o',typ='R',defaut=0), + ), + Node_N = FACT (statut='o', + Boundary_Condition_Type = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), + Value=SIMP(statut='o',typ='R',defaut=0), + ), + ), + ), + ),# fin ChemicalKinetics + Analytical_Equations_PostTreatment = FACT(statut= 'o', max='**', + Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Equation A"), + InitialValue = SIMP(statut ='o', typ=Tuple(2),validators = VerifTypeTuple(('TXM','R')),max='**'), + Clef1=SIMP(statut='o',typ='R'), + Clef2=SIMP(statut='o',typ='R'), + ), + ), # fin bloc b_simulation_modele + + + +# MECHANISTIC MODEL +# filtre_calculation_mechanistic - > 3 dictionnaires +# la clef du 1er niveau est le modele qui remplit SimulationName +# + b_mechanistic = BLOC(condition = 'Model == "mechanistic model"', + TechnicalUse= SIMP(statut= 'o',typ= 'TXM',into=monDico['Modele_TechnicalUse'], siValide=lienDB.remplitMechanisticModeleName),#defaut=monModele.technical_use , + ModeleName=SIMP(statut='o',typ='TXM', siValide = lienDB.remplitChimicalKineticsMechanistic),#defaut=monModele.nom,, + ChimicalKinetics = FACT ( statut = 'o', + SimulationName=SIMP(statut='o',typ='TXM'), + OutputFolder = SIMP(statut="o", typ="Repertoire"), + Time=SIMP(statut='o',typ='R',), + Temperature=SIMP(statut='o',typ='R',), +# si dans le dictionnaire debit_of_dose = True je rentre la ligne suivante + DebitOfDose=SIMP(statut='f',typ='R',), + Thickness=SIMP(statut='o',typ='R',), + Dicretization= SIMP(statut='o',typ='R',), +# initial_parameter pour remplir cela + InitialValue = SIMP(statut ='o', typ=Tuple(2),validators = VerifTypeTuple(('TXM','R')),max='**'), + ), + +# si la liste est vide pas de Boundary_Conditions_Param sinon on cree les products + Boundary_Conditions_Param = FACT(statut='f', + Product=FACT(statut='o', max='**', +# a remplir avec le filtre une liste des boundary qui sont contenues dans diffusion du dico de remplitChimicalKinetics +# ----------------------------------- + Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Diffusion Product"), + Node_0 = FACT (statut='o', + Boundary_Condition_Type = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), + Value=SIMP(statut='o',typ='R',defaut=0), + ), + Node_N = FACT (statut='o', + Boundary_Condition_Type = SIMP(statut='o',typ='TXM',into=monDico['Boundary_Conditions']), + Value=SIMP(statut='o',typ='R',defaut=0), + ), + ), + ), + ), # fin bloc b_simulation_modele + +# ANALYTIC MODEL + b_analytic_model = BLOC(condition = 'Model == "analytic model"', + Equation_Ty = SIMP(statut= 'o',typ= 'TXM',into=monDico['posttraitement_Typ'],siValide=lienDB.remplitAnalyticModeleName), + ModeleName=SIMP(statut='o',typ='TXM', siValide=lienDB.remplitChimicalKineticsAnalytic,), + ChimicalKinetics = FACT ( statut = 'o', + SimulationName=SIMP(statut='o',typ='TXM'), + OutputFolder = SIMP(statut="o", typ="Repertoire"), +# remplir les equations +# dictionnaire cief de filtre_calculation_analitic avec clef = clef1, clef2... et valeur = coef[cle1] + Coefficients = SIMP(statut ='o', typ=Tuple(2),validators = VerifTypeTuple(('TXM','R')),max='**'), + ), + ), # fin bloc b_analytic_model + +) diff --git a/VirtualPolymer/lienDB.py b/VirtualPolymer/lienDB.py index b834fc4d..21dcffc6 100644 --- a/VirtualPolymer/lienDB.py +++ b/VirtualPolymer/lienDB.py @@ -1,537 +1,155 @@ -# coding: utf-8 - -import types -import sys,os - -import listesDB - - -maClasseDelistesDB = listesDB.classeListesDB() -monModele=listesDB.sModele().monModele -monPost=listesDB.sModele().monPost - -import types -class Tuple: - def __init__(self,ntuple): - self.ntuple=ntuple - - def __convert__(self,valeur): - if type(valeur) == types.StringType: - return None - if len(valeur) != self.ntuple: - return None - return valeur - - def info(self): - return "Tuple de %s elements" % self.ntuple - - __repr__=info - __str__=info - - -dicoAgingFactor={ '40years BR top' : {'temperature' : 50, 'simulationTime' : 350640}} - -# -------------------------------------- -# Fonctions appellees depuis le catalogue -# -------------------------------------- - -# -------------------------------------- -# Dans Equation -# -------------------------------------- - -def recupereDicoEquation(monMC): - # Equation_reaction (ds 2 blocs) - # ou dans Equation b_type_show b_reaction_type - # ou dans Equation b_type_show b_aging_type - - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - monMC.dsMaFunct = True - - valeurDB=editor.getValeur('Equation','Equation_DB',()) - maClasseDelistesDB.metAJour(valeurDB) - listEquation=maClasseDelistesDB.getListEquation() - - valeurEquationListe=editor.getValeur('Equation','Equation_Liste',('b_type_show',)) - valeurAgingType=editor.getValeur('Equation','Equation_reaction',('b_type_show','b_reaction_type',)) - if valeurAgingType == None : - valeurAgingType=editor.getValeur('Equation','Equation_reaction',('b_type_show','b_aging_type',)) - if valeurAgingType == None : monMC.dsMaFunct = False; return - - listeEquationPourIhm = [] - listeReprEquationPourIhm = [] - dicoListAffiche = {} - - for equation in listEquation : - if valeurEquationListe == 'aging_type' : - if equation.type_vieil == valeurAgingType : - listeEquationPourIhm.append(equation) - listeReprEquationPourIhm.append(equation.representation) - dicoListAffiche[equation.representation]=equation - else: - if equation.type_react == valeurAgingType : - listeEquationPourIhm.append(equation) - listeReprEquationPourIhm.append(equation.representation) - dicoListAffiche[equation.representation]=equation - maClasseDelistesDB.dicoListAffiche = dicoListAffiche - - change=editor.changeIntoDefMC('Equation', ('b_type_show','ListeEquation'), listeReprEquationPourIhm ) - if change : - editor.reCalculeValiditeMCApresChgtInto('Equation', 'listeEquation', ('b_type_show',)) - if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - monMC.dsMaFunct = False - -def afficheValeurEquation(monMC): - # Equation b_modification modification - print (monMC) - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - valeur=monMC.valeur - if valeur == None : return - maClasseDelistesDB.valeurEquationChoisie=str(valeur) - monEquation=maClasseDelistesDB.dicoListAffiche[str(valeur)] - - aAfficher=str(monEquation) - editor=monMC.jdc.editor - editor._viewText(aAfficher, "Id",largeur=80,hauteur=300) - - monMC.dsMaFunct = False - - -def instancieChemicalFormulation(monMC): - print ('instancieChemicalFormulation pour ', monMC.nom) - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur == False : return - - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - editor.dsMaFunct = True - - for e in monMC.jdc.etapes: - if e.nom == 'Equation' :break - print ('ds instancie') - v=maClasseDelistesDB.valeurEquationChoisie - monEquation=maClasseDelistesDB.dicoListAffiche[v] - type_react=monEquation.type_react - type_vieil=monEquation.type_vieil - - editor.changeIntoMCandSet('Equation', ('b_type_show','b_modification','b_modif','ChemicalFormulation'),( v,),v ) - print ("je passe la") - change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Reaction_Type'),type_react ) - change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Aging_Type'), type_vieil ) - - for index,valeurConstituant in enumerate(monEquation.constituants): - valeurEquation=monEquation.equation[index] - - #PNPNPN --> decider des noms SVP ave un nom python - monMcl1=('Constituant','TXM',{'statut':'o','defaut':valeurConstituant}) - monMcl2=('Differential_Equation','TXM',{'statut':'o','defaut':valeurEquation}) - listeMC=(monMcl1,monMcl2) - editor.ajoutDefinitionMCFact ('Equation',('b_type_show','b_modification','b_modif',),valeurConstituant,listeMC,statut='f') - #editor.ajoutMCFact (e,('b_type_show','b_modification','b_modif',),valeurConstituant) - print (index,valeurConstituant,valeurEquation) - - #OptionnelConstituant = FACT ( statut = 'f',max = '**', - # Constituant = SIMP (statut = 'o', typ = 'TXM'), - # Differential_Equation = SIMP(statut= 'o',typ= 'TXM'), - - for index,valeurConstituant in enumerate(monEquation.const_cine_nom): - valeurArrhe=monEquation.arrhenius[index] - if valeurArrhe : valeurConstanteType='Arrhenius type' - else : valeurConstanteType='non Arrhenius type' - monMcl1=('ConstanteName','TXM',{'statut':'o','defaut':valeurConstituant}) - monMcl2=('ConstanteType','TXM',{'statut':'o','defaut':valeurConstanteType,'into': ('Arrhenius type','non Arrhenius type') }) - listeMC=(monMcl1,monMcl2) - editor.ajoutDefinitionMCFact ('Equation',('b_type_show','b_modification','b_modif',),valeurConstituant,listeMC,statut='f') - #editor.ajoutMC(e,MCFils,mesValeurs,('b_type_creation','b_diffusion',)) - - - change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Commentaire'),monEquation.comment ) - print (monEquation.comment ) - if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - - monMC.dsMaFunct = False - editor.dsMaFunct = False - - - - -def recupereDicoModele(monMC): - if monMC.valeur == None: return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - monMC.dsMaFunct = True - print ('je passe dans recupereDicoModele') - - editor=monMC.jdc.editor - valeurDB=editor.getValeur('Modele','Modele_DB',()) - maClasseDelistesDB.metAJour(valeurDB) - - print ('fin recupereDicoModele') - monMC.dsMaFunct = False - - -def creeListeEquation(monMC): - if monMC.valeur == None: return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - editor.dsMaFunct = True - print ('debut de creeListeEquation') - - listeEquationsAAfficher=[] - listeConstantesAAfficher=[] - listeInitialEquations=[] - - listEquation=maClasseDelistesDB.getListEquation() - for index,equation in enumerate( listEquation): - if index in monModele.equa: - listeEquationsAAfficher.append(equation.representation) - listeConstantesAAfficher.append(equation.const_cine_nom) - t=equation.representation+'\t\t\t\t '+str(equation.const_cine_nom) - listeInitialEquations.append(t) - - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','Initial_Equation_List'),listeInitialEquations ) - maClasseDelistesDB.listeEquationsAAfficher = listeEquationsAAfficher - maClasseDelistesDB.listeConstantesAAfficher = listeConstantesAAfficher - monMC.dsMaFunct = False - print ('fin de creeListeEquation') - - editor.dsMaFunct = False - - # listeEquation_stabilization=SIMP(statut='o', homo='SansOrdreNiDoublon', max='**', min=0 ), - -def recupereModeleEquation(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur==False : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - editor.dsMaFunct = True - print ('je suis dans recupereModeleEquation') - - editor.dsMaFunct = True - dicoListeEquationAAfficher={} - - from VP_Cata_V2 import monDico - listEquation=maClasseDelistesDB.getListEquation() - for valeurReactionType in monDico['Equation_Liste']: - dicoListeEquationAAfficher[valeurReactionType] = [] - for index,equation in enumerate( listEquation): - if equation.type_react==valeurReactionType : - dicoListeEquationAAfficher[valeurReactionType].append(equation.representation) - maClasseDelistesDB.dictParametresInitiaux[equation.representation]=equation - #print (dicoListeEquationAAfficher) - #print('maClasseDelistesDB.dictParametresInitiaux', maClasseDelistesDB.dictParametresInitiaux) - prepareDiffusionSansMC(editor,monMC.nom) - - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_initiation'),dicoListeEquationAAfficher['initiation']) - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_propagation'),dicoListeEquationAAfficher['propagation'] ) - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_termination'),dicoListeEquationAAfficher['termination'] ) - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_stabilization'),dicoListeEquationAAfficher['stabilization'] ) - if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - - print ('fin recupereModeleEquation') - monMC.dsMaFunct = False - editor.dsMaFunct = False - -def ajoutDUneEquation(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur==False : return - editor=monMC.jdc.editor - prepareDiffusionSansMC(editor,monMC.nom) - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - editor.dsMaFunct = False - monMC.dsMaFunct = False - -def prepareDiffusion(monMC): - if monMC.valeur==False : return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - monMC.dsMaFunct=True - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - editor.dsMaFunct = True - print ('je suis dans prepareDiffusion', monMC.nom) - prepareDiffusionSansMC(editor,monMC.nom) - print ('fin de prepareDiffusion', monMC.nom) - monMC.dsMaFunct=False - editor.dsMaFunct = False - -def prepareDiffusionSansMC(editor,monMCNom): - lInitialBadCoche=editor.getValeur('Modele', 'Initial_Equation_List',('b_type_creation','Chemical_Equation'),) - lInitialCoche=[] - for equ in lInitialBadCoche: lInitialCoche.append(equ.split('\t')[0]) - lInititiationCoche=editor.getValeur('Modele','listeEquation_initiation', ('b_type_creation','Chemical_Equation',)) - lPropagationCoche =editor.getValeur('Modele', 'listeEquation_propagation',('b_type_creation','Chemical_Equation',)) - lTerminationCoche=editor.getValeur('Modele','listeEquation_termination', ('b_type_creation','Chemical_Equation',)) - lStabilizationCoche=editor.getValeur('Modele','listeEquation_stabilization', ('b_type_creation','Chemical_Equation',)) - - print (lInitialCoche,lInititiationCoche,lPropagationCoche,lTerminationCoche,lStabilizationCoche) - for liste in (lInitialCoche,lInititiationCoche,lPropagationCoche,lTerminationCoche,lStabilizationCoche): - # Il est possible qu'une liste soit vide lors de l initialisation - if liste == None : continue - for equation in liste : - print (equation) - for const in maClasseDelistesDB.dictParametresInitiaux[equation].constituants : - if const not in maClasseDelistesDB.listeParametresInitiaux : maClasseDelistesDB.listeParametresInitiaux.append(const) - #for coef in maClasseDelistesDB.dictParametresInitiaux[equation].const_cine_nom : - # if coef not in maClasseDelistesDB.listeCoefInitiaux : maClasseDelistesDB.listeCoefInitiaux.append(coef) - for num,coef in enumerate(maClasseDelistesDB.dictParametresInitiaux[equation].const_cine_nom ): - maClasseDelistesDB.dicoCoefAffichageArr[coef]=maClasseDelistesDB.dictParametresInitiaux[equation].arrhenius[num] - if coef not in maClasseDelistesDB.listeCoefInitiaux : maClasseDelistesDB.listeCoefInitiaux.append(coef) - - #print('maClasseDelistesDB.dictParametresInitiaux', maClasseDelistesDB.dictParametresInitiaux) - if monMCNom == 'Diffusion' : - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Transport','b_diffusion','listeProduitPourLaDiffusion'), maClasseDelistesDB.listeParametresInitiaux ) - if monMCNom == 'Evaporation' : - change=editor.changeIntoDefMC('Modele', ('b_type_creation','Transport','b_evaporation','listeProduitPourLEvaporation'), maClasseDelistesDB.listeParametresInitiaux ) - - if monMCNom in ('Evaporation','Diffusion') : - for c in list(monModele.coef[0].keys()) : - if c[0]=='D': - clef=c[1:] - if clef in maClasseDelistesDB.listeParametresInitiaux : - maClasseDelistesDB.listeCoefD.append(clef) - maClasseDelistesDB.listeCoefInitiaux.append('D'+clef) - maClasseDelistesDB.listeCoefInitiaux.append('S'+clef) - else : - maClasseDelistesDB.listeCoefASupprimer.append('S'+clef) - maClasseDelistesDB.listeCoefASupprimer.append('D'+clef) - if c[0]=='B': - clef=c[1:] - if clef in maClasseDelistesDB.listeParametresInitiaux : - maClasseDelistesDB.listeCoefB.append(clef) - maClasseDelistesDB.listeCoefInitiaux.append(c) - else : - maClasseDelistesDB.listeCoefASupprimer.append(c) - print ('aClasseDelistesDB.listeCoefB',maClasseDelistesDB.listeCoefB) - print ('aClasseDelistesDB.listeCoefB',maClasseDelistesDB.listeCoefD) - print ('maClasseDelistesDB.listeCoefInitiaux',maClasseDelistesDB.listeCoefInitiaux) - print ('maClasseDelistesDB.listeCoefASupprimer',maClasseDelistesDB.listeCoefASupprimer) - print ('maClasseDelistesDB.listeParametresInitiaux',maClasseDelistesDB.listeParametresInitiaux) - # au lieu des print il faut mettre a jour le MC Fact Coefficients avec ,maClasseDelistesDB.listeCoefInitiaux et le MC FACT - # Paraetres_initiaux avec maClasseDelistesDB.listeParametresInitiaux - # TO DO TO DO PNPN - # si on arrive avex - # if monMC.nom = Diffusion - if monMCNom == 'Diffusion' : - editor.setValeur('Modele','listeProduitPourLaDiffusion' ,maClasseDelistesDB.listeCoefD, ('b_type_creation','Transport','b_diffusion',)) - #editor.changeValeur(....,'listeProduitPourLaDiffusion',maClasseDelistesDB.listeCoefD') - # if monMCNom == 'Evaporation' : - #editor.changeValeur(....,'listeProduitPourLaDiffusion',maClasseDelistesDB.listeCoefB') - - - -def ajouteEvaporation(monMC): - print ('je suis dans ajouteDiffusion') - if monMC.valeur == None : return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - - monMC.dsMaFunct=True - for v in monMC.valeur : - clef='B'+v - if clef not in maClasseDelistesDB.listeCoefInitiaux : - maClasseDelistesDB.listeCoefInitiaux.append(clef) - - print ('sortie de ajouteDiffusion' , maClasseDelistesDB.listeCoefInitiaux) - monMC.dsMaFunct=False - editor.dsMaFunct = False - -def ajouteDiffusion(monMC): - print ('je suis dans ajouteDiffusion') - if monMC.valeur == None : return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - - monMC.dsMaFunct=True - for v in monMC.valeur : - clef='D'+v - if clef not in maClasseDelistesDB.listeCoefInitiaux : - maClasseDelistesDB.listeCoefInitiaux.append(clef) - maClasseDelistesDB.listeCoefInitiaux.append('S'+v) - maClasseDelistesDB.dicoCoefAffichageArr[clef] = True - maClasseDelistesDB.dicoCoefAffichageArr['S'+v] = False - #maClasseDelistesDB.dicoCoefAffichageArr['B'+v] = True - - # on affiche dans l interface un mot clef avec clef comme nom et - # 2 reels si ce commence par D soit iniitialise a 0 si pas de valeur - # soit avec comme deifaut nomCoef in monModele.coef[0].keys() - print ('sortie de ajouteDiffusion' , maClasseDelistesDB.listeCoefInitiaux) - - for nomCoef in maClasseDelistesDB.listeCoefInitiaux: - #A jout Ds Coef d'un MC - nomMC='Coef_'+nomCoef - if maClasseDelistesDB.dicoCoefAffichageArr[nomCoef] == True: - print ('2 r'), - if nomCoef in monModele.coef[0].keys() : - print (monModele.coef[0][nomCoef]) - else : - print ((0,0)) - else : - print ('1 r') - if nomCoef in monModele.coef[0].keys() : - print (monModele.coef[0][nomCoef]) - else : - print (0) - - print ('______________________') - #for v in monMC.valeur : - # print (v) - # mesValeurs=editor.dicoCoefS[v] - # MCFils='S'+v - # for e in monMC.jdc.etapes: - # if e.nom == 'Modele' :break - # editor.ajoutDefinitionMC(e,('b_type_creation','b_diffusion'),MCFils,typ='TXM',statut='o' ) - # editor.ajoutMC(e,MCFils,mesValeurs,('b_type_creation','b_diffusion',)) - # print ('______') - #if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - monMC.dsMaFunct=False - editor.dsMaFunct = False - - -# -------------------------------------------------------------------------------------------- -# pour les modeles en modification ou en utilisation -# -------------------------------------------------------------------------------------------- -def creeListeMateriauxSelonModele(monMC): - if monMC.valeur == None : return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - - valeurDB=editor.getValeur('Modele','Modele_DB',()) - maClasseDelistesDB.metAJour(valeurDB) - listModele=maClasseDelistesDB.getListModele() - listModeleFiltre=[] - listMateriauxFiltre=[] - for modele in listModele : - if modele.technical_use == monMC.valeur : - maClasseDelistesDB.dicoModeleFiltre[modele.nom]=modele - listModeleFiltre.append(modele.nom) - if type(modele.materiaux) not in (list, tuple): modeleATraiter= modele.materiaux - else : modeleATraiter= modele.materiaux[0] - if modeleATraiter not in listMateriauxFiltre : - listMateriauxFiltre.append(modeleATraiter) - maClasseDelistesDB.dicoMateriauxFiltre[modeleATraiter]=[modele.nom,] - else : - maClasseDelistesDB.dicoMateriauxFiltre[modeleATraiter].append(modele.nom) - - - - change=editor.changeIntoDefMC('Modele', ('b_type_modification','b_technicalUse','material'),listMateriauxFiltre ) - - monMC.dsMaFunct=False - editor.dsMaFunct = False - -def creeListeModelesPossibles(monMC): - if monMC.valeur == None : return - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - editor=monMC.jdc.editor - if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return - change=editor.changeIntoDefMC('Modele', ('b_type_modification','b_technicalUse','modele'),maClasseDelistesDB.dicoMateriauxFiltre[monMC.valeur] ) - - monMC.dsMaFunct=False - editor.dsMaFunct = False - -def choisitModele(monMC): - # Equation b_modification modification - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - valeur=monMC.valeur - if valeur == None : return - modele=maClasseDelistesDB.dicoModeleFiltre[monMC.valeur] - maClasseDelistesDB.monModele=modele - monMC.dsMaFunct = False - -def choisitActionModele(monMC): - if monMC.valeur == 'display' : afficheModele(monMC) - if monMC.valeur == 'modify' : changeValeurDefautModele(monMC) - -def afficheModele(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - valeur=monMC.valeur - aAfficher=str(maClasseDelistesDB.monModele) - editor=monMC.jdc.editor - editor._viewText(aAfficher, "Id",largeur=700,hauteur=500) - - monMC.dsMaFunct = False - -def changeValeurDefautModele(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - monMC.dsMaFunct = True - editor=monMC.jdc.editor - change=editor.changeIntoMCandSet('Modele', ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID','modeleName'),(maClasseDelistesDB.monModele.nom,),maClasseDelistesDB.monModele.nom, ) - editor.setValeur('Modele','technicalUse',maClasseDelistesDB.monModele.technical_use, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - - editor.setValeur('Modele','material',maClasseDelistesDB.monModele.materiaux, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - editor.setValeur('Modele','agingType',maClasseDelistesDB.monModele.type_vieil, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - - if maClasseDelistesDB.monModele.stabilise == 'True' : monBool = True - else : monBool = False - editor.setValeur('Modele','stabilizer',monBool, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - editor.setValeur('Modele','material_thickness',maClasseDelistesDB.monModele.thickness, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - - if maClasseDelistesDB.monModele.dvt_EDF == 'True' : monBool = True - else : monBool = False - editor.setValeur('Modele','model_developed_by_for_EDF',monBool, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - editor.setValeur('Modele','documentation',maClasseDelistesDB.monModele.reference, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID')) - if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - monMC.dsMaFunct = False - - - -def creeCoefAModifier(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur == None : return - monMC.dsMaFunct = True - editor=monMC.jdc.editor - dicoArr={} - dicoNonArr={} - for coef in maClasseDelistesDB.monModele.coef[0] : - if len (maClasseDelistesDB.monModele.coef[0][coef]) == 1 : - dicoNonArr[coef]=maClasseDelistesDB.monModele.coef[0][coef][0] - else : - dicoArr[coef]=maClasseDelistesDB.monModele.coef[0][coef] - if coef[0] == 'D' : maClasseDelistesDB.listeDiffusion.append(coef[1:]) - print (dicoNonArr) - print (dicoArr) - if 'ri' in dicoNonArr : - print ('ajoutDefinitionMC debitOfDose') - editor.ajoutDefinitionMC('Modele', ('b_type_modification','b_technicalUse','b_modele','b_type_use2','Aging_Factor'), 'debitOfDose',typ='R',statut='o' ) - - for coef in dicoNonArr : - print (coef) - # attention, notation scientifique - editor.ajoutDefinitionMC('Modele',('b_type_modification','b_technicalUse','b_modele','b_type_use',),coef, 'R', statut='o',defaut=dicoNonArr[coef]) - # a faire marcher - # pour les Arr il faut un tuple(2) - - # il fait creer un fact Boundary_Conditions_Param pour chacque espece de listeDiffusion - - if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau() - - monMC.dsMaFunct = False - - -def remplirAgingFactor(monMC): - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur == None : return - monMC.dsMaFunct = True - editor=monMC.jdc.editor - if monMC.valeur in dicoAgingFactor: - print (monMC.valeur, 'trouve') - for MC in dicoAgingFactor[monMC.valeur]: - print (MC) - print (dicoAgingFactor[monMC.valeur][MC]), - editor.setValeur('Modele',MC,dicoAgingFactor[monMC.valeur][MC],('b_type_modification','b_technicalUse','b_modele','b_type_use2','Aging_Factor')) - monMC.dsMaFunct = False - - -def creeInitialParameter(monMC): - print ('je passe dans creeInitialParameter') - if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return - if monMC.valeur == None : return - monMC.dsMaFunct = True - editor=monMC.jdc.editor - for coef in maClasseDelistesDB.monModele.param_ini: - editor.ajoutDefinitionMC('Modele',('b_type_modification','b_technicalUse','b_modele','b_type_use2','Initial_Parameter'),coef, 'R', statut='o',defaut=maClasseDelistesDB.monModele.param_ini[coef][0]) - monMC.dsMaFunct = False - # creer nbdenode = monMC.valeur Initial_Parameter +import logging +import types +import os + +from mapy.virtual_polymer_common import class_data, pckdb +from mapy.virtual_polymer_common import for_eficace +#database='/home/A96028/MAPVp/my_map_installdir/share/map/tests/components/c_pre_polymer_data_management/local/' +database='/home/A96028/MAPVp/my_map_installdir/share/map/tests/components/c_pre_polymer_kinetics_study/local/' + + +# -------------------------------------- +class sModele : +# -------------------------------------- + + _instance = None + + def __new__(cls, *args, **kwargs): + if not cls._instance: + cls._instance = super(sModele, cls).__new__( + cls, *args, **kwargs) + + return cls._instance + + def __init__ (self): + self.dicoTU = {} + self.dicoTUForCreation = {} + self.valeurTUEnCours = None + self.valeurModeleNameEnCours = None + self.dicoAnalytic = None + self.valeurEquationEnCours = None + self.valeurTUEnCoursForCreation = None + +monModele=sModele() + + +# -------------------------------------- +# decorateur +# -------------------------------------- +def entoure(func): + def wrapper( monMC): + if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return + editor=monMC.jdc.editor + monMC.dsMaFunct = True + retour =func(monMC,editor) + monMC.dsMaFunct = False + return wrapper + +# -------------------------------------- +# MECHANISTIC +# -------------------------------------- + +# __________________ Creation ___________________ +@entoure +def remplitChimicalKineticsMechanistic(monMC, editor) : + print ('in remplitChimicalKinetics') + etape=monMC.getEtape() + valeurModeleName=monMC.valeur + monModele.valeurModeleNameEnCours=valeurModeleName + dico=monModele.dicoTU[monModele.valeurTUEnCours][valeurModeleName] + if 'debit_of_dose' in dico : + change = editor.ajoutMCinMCFactUnique(etape,'DebitOfDose', None ,('b_mechanistic','ChimicalKinetics')) + if 'initial_parameter' in dico : + valeurs=[] + for k in dico['initial_parameter'].keys(): + # on prend la 1ere valeur + valeurs.append((k,dico['initial_parameter'][k][0])) + change = editor.ajoutMCinMCFactUnique(etape,'InitialValue', valeurs ,('b_mechanistic','ChimicalKinetics')) + #dico['diffusion']=('O2','POOH') + # PNPN a developper + if 'diffusion' in dico and dico['diffusion'] != [] : + change = editor.ajoutMCFact(etape,'Boundary_Conditions_Param', ('b_mechanistic',)) + #for produit in dico['diffusion'] : + # il faut ajouter les produits en tant que FACT et y mettre le nom + + +@entoure +def remplitMechanisticModeleName(monMC, editor) : + print ('in remplitMechanisticModeleName') + etape=monMC.getEtape() + valeurTU=monMC.valeur + dico = for_eficace.filtre_calculation_mechanistic(database, valeurTU) + monModele.dicoTU[valeurTU]=dico + monModele.valeurTUEnCours=valeurTU + + listeModeleName=list(dico.keys()) + change = editor.changeIntoDefMC(etape,('b_mechanistic','ModeleName'),listeModeleName) + + + +# __________________ Modification ___________________ + +@entoure +def remplitMechanisticModifyEquationListeEquation(monMC, editor): + print ('in remplitMechanisticModifyEquationListeEquation') + etape=monMC.getEtape() + valeurTU=monMC.valeur + print (valeurTU) + dico = for_eficace.filtre_calculation_mechanistic(database, valeurTU) + print (' --------------------') + print (database) + print (valeurTU) + print (dico) + print (' --------------------') + monModele.dicoTUForCreation[valeurTU]=dico + monModele.valeurTUEnCoursForCreation=valeurTU + + listeEquation=list(dico.keys()) + print (listeEquation) + change = editor.changeIntoDefMC(etape,('b_mechanistic','b_modify_equation','Filtre','Equation_List'),listeEquation) + print (change) + + +@entoure +def remplitModificationEquation(monMC, editor) : + print ('in remplitMechanisticModify') + +# -------------------------------------- +# ANALYTIC +# -------------------------------------- + +@entoure +def remplitAnalyticModeleName(monMC,editor) : + print ('in prepareAnalytic') + etape=monMC.getEtape() + equationTy=monMC.valeur + dico = for_eficace.filtre_calculation_analitic(database, equationTy) + monModele.dicoAnalytic=dico + monModele.valeurEquationEnCours=equationTy + + listeModeleName=list(dico.keys()) + change = editor.changeIntoDefMC(etape,('b_analytic_model','ModeleName'),listeModeleName) + +@entoure +def remplitChimicalKineticsAnalytic(monMC, editor) : + print ('in remplitChimicalKineticsAnalytic') + etape=monMC.getEtape() + valeurModeleName=monMC.valeur + monModele.valeurModeleNameEnCours=valeurModeleName + dico=monModele.dicoAnalytic[valeurModeleName] + if 'coef' in dico : + valeurs=[] + for k in dico['coef'].keys(): + valeurs.append((k,float(dico['coef'][k]))) + change = editor.ajoutMCinMCFactUnique(etape,'Coefficients', valeurs ,('b_analytic_model','ChimicalKinetics')) + #dico['diffusion']=('O2','POOH') + + + +#def filtre_calculation_mechanistic (dbdescription, technical_use): +#def filtre_calculation_analitic (dbdescription, technical_use): +#def filtre_data_model (dbdescription, physical,technical_use): +#def analytic_equation_creaction(): +# +if __name__=='__main__': + print ('in lienDB') diff --git a/VirtualPolymer/prefs_VP.py b/VirtualPolymer/prefs_VP.py index 33c5cfdc..0d8010ce 100644 --- a/VirtualPolymer/prefs_VP.py +++ b/VirtualPolymer/prefs_VP.py @@ -43,3 +43,4 @@ closeEntete = True #closeArbre = True afficheOptionnelVide=False +#### il faut afficher les listes pliees -- 2.39.2