Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / VirtualPolymer / lienDB.py
index ba2b1a715366b74afe7c844f6a7890ae906c90d3..a53b62e213866f9039e2d5f1911f399dad63fc4b 100644 (file)
@@ -1,4 +1,5 @@
 # coding: utf-8\r
+\r
 import types\r
 import sys,os\r
 \r
@@ -7,23 +8,45 @@ import listesDB
 \r
 maClasseDelistesDB = listesDB.classeListesDB()\r
 monModele=listesDB.sModele().monModele\r
+monPost=listesDB.sModele().monPost\r
+\r
+import types\r
+class Tuple:\r
+    def __init__(self,ntuple):\r
+        self.ntuple=ntuple\r
+\r
+    def __convert__(self,valeur):\r
+        if type(valeur) == types.StringType:\r
+            return None\r
+        if len(valeur) != self.ntuple:\r
+            return None\r
+        return valeur\r
 \r
+    def info(self):\r
+        return "Tuple de %s elements" % self.ntuple\r
+\r
+    __repr__=info\r
+    __str__=info\r
+\r
+\r
+dicoAgingFactor={ '40years BR top' : {'temperature' : 50, 'simulationTime' : 350640}}\r
 \r
 # --------------------------------------\r
 # Fonctions appellees depuis le catalogue\r
 # --------------------------------------\r
\r
+\r
 # --------------------------------------\r
 # Dans Equation\r
 # --------------------------------------\r
 \r
 def recupereDicoEquation(monMC):\r
-    # Equation_reaction (ds 2 blocs)\r
-    #  ou dans Equation b_type_show b_reaction_type\r
-    #  ou dans Equation b_type_show b_aging_type\r
+        # Equation_reaction (ds 2 blocs)\r
+        #  ou dans Equation b_type_show b_reaction_type\r
+        #  ou dans Equation b_type_show b_aging_type\r
 \r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     editor=monMC.jdc.editor\r
+    monMC.dsMaFunct = True\r
 \r
     valeurDB=editor.getValeur('Equation','Equation_DB',())\r
     maClasseDelistesDB.metAJour(valeurDB)\r
@@ -32,48 +55,50 @@ def recupereDicoEquation(monMC):
     valeurEquationListe=editor.getValeur('Equation','Equation_Liste',('b_type_show',))\r
     valeurAgingType=editor.getValeur('Equation','Equation_reaction',('b_type_show','b_reaction_type',))\r
     if valeurAgingType == None :\r
-       valeurAgingType=editor.getValeur('Equation','Equation_reaction',('b_type_show','b_aging_type',))\r
+        valeurAgingType=editor.getValeur('Equation','Equation_reaction',('b_type_show','b_aging_type',))\r
     if valeurAgingType == None : monMC.dsMaFunct = False; return\r
 \r
     listeEquationPourIhm = []\r
     listeReprEquationPourIhm = []\r
     dicoListAffiche = {}\r
-   \r
+\r
     for equation in listEquation :\r
         if valeurEquationListe == 'aging_type' :\r
-           if equation.type_vieil == valeurAgingType : \r
-              listeEquationPourIhm.append(equation)\r
-              listeReprEquationPourIhm.append(equation.representation)\r
-              dicoListAffiche[equation.representation]=equation\r
+            if equation.type_vieil == valeurAgingType :\r
+                listeEquationPourIhm.append(equation)\r
+                listeReprEquationPourIhm.append(equation.representation)\r
+                dicoListAffiche[equation.representation]=equation\r
         else:\r
-           if equation.type_react == valeurAgingType : \r
-              listeEquationPourIhm.append(equation)\r
-              listeReprEquationPourIhm.append(equation.representation)\r
-              dicoListAffiche[equation.representation]=equation\r
+            if equation.type_react == valeurAgingType :\r
+                listeEquationPourIhm.append(equation)\r
+                listeReprEquationPourIhm.append(equation.representation)\r
+                dicoListAffiche[equation.representation]=equation\r
     maClasseDelistesDB.dicoListAffiche = dicoListAffiche\r
 \r
     change=editor.changeIntoDefMC('Equation', ('b_type_show','ListeEquation'), listeReprEquationPourIhm )\r
     if change :\r
-       editor.reCalculeValiditeMCApresChgtInto('Equation', 'listeEquation', ('b_type_show',)) \r
-       if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
+        editor.reCalculeValiditeMCApresChgtInto('Equation', 'listeEquation', ('b_type_show',))\r
+        if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
     monMC.dsMaFunct = False\r
 \r
 def afficheValeurEquation(monMC):\r
     # Equation b_modification modification\r
+    print (monMC)\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     valeur=monMC.valeur\r
     if valeur == None : return\r
     maClasseDelistesDB.valeurEquationChoisie=str(valeur)\r
     monEquation=maClasseDelistesDB.dicoListAffiche[str(valeur)]\r
 \r
-    aAfficher='jkljkljk \n je ne sais plus \njfkqsljqfkl\nkfsjqklfjkl\n'\r
+    aAfficher=str(monEquation)\r
     editor=monMC.jdc.editor\r
-    editor._viewText(aAfficher, "Rapport",largeur=30,hauteur=150)\r
-    \r
+    editor._viewText(aAfficher, "Id",largeur=80,hauteur=300)\r
+\r
     monMC.dsMaFunct = False\r
-              \r
+\r
 \r
 def instancieChemicalFormulation(monMC):\r
+    print ('instancieChemicalFormulation pour ', monMC.nom)\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     if monMC.valeur == False : return\r
 \r
@@ -81,6 +106,8 @@ def instancieChemicalFormulation(monMC):
     if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
     editor.dsMaFunct = True\r
 \r
+    for e in monMC.jdc.etapes:\r
+        if e.nom == 'Equation' :break\r
     print ('ds instancie')\r
     v=maClasseDelistesDB.valeurEquationChoisie\r
     monEquation=maClasseDelistesDB.dicoListAffiche[v]\r
@@ -88,13 +115,19 @@ def instancieChemicalFormulation(monMC):
     type_vieil=monEquation.type_vieil\r
 \r
     editor.changeIntoMCandSet('Equation', ('b_type_show','b_modification','b_modif','ChemicalFormulation'),( v,),v )\r
-    return\r
-    #change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Reaction_Type'),type_react )\r
+    print ("je passe la")\r
+    change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Reaction_Type'),type_react )\r
     change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Aging_Type'), type_vieil )\r
 \r
     for index,valeurConstituant in enumerate(monEquation.constituants):\r
-        valeurEquation=monEquation.equation[index] \r
-        editor.ajoutMC(monMC.etape,'OptionnelConstituant',None,('b_type_show','b_modification','b_modif',))\r
+        valeurEquation=monEquation.equation[index]\r
+\r
+        #PNPNPN --> decider des noms SVP ave un nom python\r
+        monMcl1=('Constituant','TXM',{'statut':'o','defaut':valeurConstituant})\r
+        monMcl2=('Differential_Equation','TXM',{'statut':'o','defaut':valeurEquation})\r
+        listeMC=(monMcl1,monMcl2)\r
+        editor.ajoutDefinitionMCFact ('Equation',('b_type_show','b_modification','b_modif',),valeurConstituant,listeMC,statut='f')\r
+        #editor.ajoutMCFact (e,('b_type_show','b_modification','b_modif',),valeurConstituant)\r
         print (index,valeurConstituant,valeurEquation)\r
 \r
             #OptionnelConstituant =  FACT ( statut = 'f',max = '**',\r
@@ -102,13 +135,15 @@ def instancieChemicalFormulation(monMC):
             #    Differential_Equation =  SIMP(statut= 'o',typ= 'TXM'),\r
 \r
     for index,valeurConstituant in enumerate(monEquation.const_cine_nom):\r
-         valeurArrhe=monEquation.arrhenius[index] \r
-         if valeurArrhe : valeurConstanteType='Arrhenius type'\r
-         else           : valeurConstanteType='non Arrhenius type'\r
-         print (index,valeurConstituant,valeurConstanteType)\r
-            #OptionnelleConstante  = FACT (statut = 'f', max = '**',\r
-            #     ConstanteName= SIMP (statut = 'o', typ = 'TXM',),\r
-            #    ConstanteType =  SIMP(statut= 'o',typ= 'TXM', min=1,into=('Arrhenius type','non Arrhenius type'),defaut='Arrhenius type'),\r
+        valeurArrhe=monEquation.arrhenius[index]\r
+        if valeurArrhe : valeurConstanteType='Arrhenius type'\r
+        else           : valeurConstanteType='non Arrhenius type'\r
+        monMcl1=('ConstanteName','TXM',{'statut':'o','defaut':valeurConstituant})\r
+        monMcl2=('ConstanteType','TXM',{'statut':'o','defaut':valeurConstanteType,'into': ('Arrhenius type','non Arrhenius type') })\r
+        listeMC=(monMcl1,monMcl2)\r
+        editor.ajoutDefinitionMCFact ('Equation',('b_type_show','b_modification','b_modif',),valeurConstituant,listeMC,statut='f')\r
+        #editor.ajoutMC(e,MCFils,mesValeurs,('b_type_creation','b_diffusion',))\r
+\r
 \r
     change=editor.changeDefautDefMC('Equation', ('b_type_show','b_modification','b_modif','Commentaire'),monEquation.comment )\r
     print (monEquation.comment )\r
@@ -116,114 +151,387 @@ def instancieChemicalFormulation(monMC):
 \r
     monMC.dsMaFunct = False\r
     editor.dsMaFunct = False\r
\r
-# TEMPORAIRE \r
-# TODO TODO TODO\r
-# PNPNPNPNPN\r
+\r
 \r
 \r
 \r
 def recupereDicoModele(monMC):\r
     if monMC.valeur == None: return\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    monMC.dsMaFunct = True\r
     print ('je passe dans recupereDicoModele')\r
-    listEquation, listModele,listPostTraitement=recupereDicoGenerique(monMC)\r
+\r
     editor=monMC.jdc.editor\r
-    editor.maClasseVisuEquation = classeVisuEquation({},listEquation, listModele,listPostTraitement)\r
+    valeurDB=editor.getValeur('Modele','Modele_DB',())\r
+    maClasseDelistesDB.metAJour(valeurDB)\r
+\r
+    print ('fin recupereDicoModele')\r
     monMC.dsMaFunct = False\r
 \r
 \r
 def creeListeEquation(monMC):\r
     if monMC.valeur == None: return\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
-\r
     editor=monMC.jdc.editor\r
-# TEMPORAIRE \r
-# TODO TODO TODO\r
+    if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+    editor.dsMaFunct = True\r
+    print ('debut de creeListeEquation')\r
+\r
     listeEquationsAAfficher=[]\r
     listeConstantesAAfficher=[]\r
-    for index,equation in enumerate( editor.maClasseVisuEquation.listEquation):\r
+    listeInitialEquations=[]\r
+\r
+    listEquation=maClasseDelistesDB.getListEquation()\r
+    for index,equation in enumerate( listEquation):\r
         if index in monModele.equa:\r
             listeEquationsAAfficher.append(equation.representation)\r
             listeConstantesAAfficher.append(equation.const_cine_nom)\r
+            t=equation.representation+'\t\t\t\t    '+str(equation.const_cine_nom)\r
+            listeInitialEquations.append(t)\r
 \r
+    change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','Initial_Equation_List'),listeInitialEquations )\r
+    maClasseDelistesDB.listeEquationsAAfficher = listeEquationsAAfficher\r
+    maClasseDelistesDB.listeConstantesAAfficher = listeConstantesAAfficher\r
     monMC.dsMaFunct = False\r
+    print ('fin de creeListeEquation')\r
 \r
-  #        listeEquation_stabilization=SIMP(statut='o', homo='SansOrdreNiDoublon', max='**', min=0 ),\r
+    editor.dsMaFunct = False\r
+\r
+    #        listeEquation_stabilization=SIMP(statut='o', homo='SansOrdreNiDoublon', max='**', min=0 ),\r
 \r
 def recupereModeleEquation(monMC):\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     if monMC.valeur==False : return\r
     editor=monMC.jdc.editor\r
     if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+    editor.dsMaFunct = True\r
+    print ('je suis dans  recupereModeleEquation')\r
 \r
     editor.dsMaFunct = True\r
     dicoListeEquationAAfficher={}\r
 \r
+    from VP_Cata_V2 import monDico\r
+    listEquation=maClasseDelistesDB.getListEquation()\r
     for valeurReactionType in monDico['Equation_Liste']:\r
-      dicoListeEquationAAfficher[valeurReactionType] = [] \r
-      for index,equation in enumerate( editor.maClasseVisuEquation.listEquation):\r
-        if equation.type_react==valeurReactionType : \r
-           dicoListeEquationAAfficher[valeurReactionType].append(equation.representation)\r
-    print (dicoListeEquationAAfficher)\r
-       \r
-    change=editor.changeIntoDefMC('Modele', ('b_type_creation','b_ajout_equation','listeEquation_initiation'),dicoListeEquationAAfficher['initiation'] )\r
-    change=editor.changeIntoDefMC('Modele', ('b_type_creation','b_ajout_equation','listeEquation_propagation'),dicoListeEquationAAfficher['propagation'] )\r
-    change=editor.changeIntoDefMC('Modele', ('b_type_creation','b_ajout_equation','listeEquation_termination'),dicoListeEquationAAfficher['termination'] )\r
-    change=editor.changeIntoDefMC('Modele', ('b_type_creation','b_ajout_equation','listeEquation_stabilization'),dicoListeEquationAAfficher['stabilization'] )\r
+        dicoListeEquationAAfficher[valeurReactionType] = []\r
+        for index,equation in enumerate( listEquation):\r
+            if equation.type_react==valeurReactionType :\r
+                dicoListeEquationAAfficher[valeurReactionType].append(equation.representation)\r
+                maClasseDelistesDB.dictParametresInitiaux[equation.representation]=equation\r
+    #print (dicoListeEquationAAfficher)\r
+    #print('maClasseDelistesDB.dictParametresInitiaux', maClasseDelistesDB.dictParametresInitiaux)\r
+    prepareDiffusionSansMC(editor,monMC.nom)\r
+\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_initiation'),dicoListeEquationAAfficher['initiation'])\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_propagation'),dicoListeEquationAAfficher['propagation'] )\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_termination'),dicoListeEquationAAfficher['termination'] )\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_creation','Chemical_Equation','b_ajout_equation','listeEquation_stabilization'),dicoListeEquationAAfficher['stabilization'] )\r
     if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
+\r
+    print ('fin recupereModeleEquation')\r
+    monMC.dsMaFunct = False\r
     editor.dsMaFunct = False\r
 \r
+def ajoutDUneEquation(monMC):\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    if monMC.valeur==False : return\r
+    editor=monMC.jdc.editor\r
+    prepareDiffusionSansMC(editor,monMC.nom)\r
+    if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+    editor.dsMaFunct = False\r
+    monMC.dsMaFunct = False\r
+\r
 def prepareDiffusion(monMC):\r
-    print ('je suis dans prepareDiffusion')\r
     if monMC.valeur==False : return\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     monMC.dsMaFunct=True\r
     editor=monMC.jdc.editor\r
     if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
     editor.dsMaFunct = True\r
-    editor.dicoCoefS={}\r
-    editor.dicoCoefD={}\r
-    for c in monModele.coef[0].keys() :\r
-        if c[0]=='S':\r
-           clef=c[1:]\r
-           valeur= monModele.coef[0][c]\r
-           editor.dicoCoefS[clef]=valeur\r
-        if c[0]=='D':\r
-           clef=c[1:]\r
-           valeur= monModele.coef[0][c]\r
-           editor.dicoCoefD[clef]=valeur\r
-    print (editor.dicoCoefS,editor.dicoCoefD)\r
+    print ('je suis dans prepareDiffusion', monMC.nom)\r
+    prepareDiffusionSansMC(editor,monMC.nom)\r
+    print ('fin de prepareDiffusion', monMC.nom)\r
     monMC.dsMaFunct=False\r
     editor.dsMaFunct = False\r
 \r
+def prepareDiffusionSansMC(editor,monMCNom):\r
+    lInitialBadCoche=editor.getValeur('Modele', 'Initial_Equation_List',('b_type_creation','Chemical_Equation'),)\r
+    lInitialCoche=[]\r
+    for equ in lInitialBadCoche: lInitialCoche.append(equ.split('\t')[0])\r
+    lInititiationCoche=editor.getValeur('Modele','listeEquation_initiation', ('b_type_creation','Chemical_Equation',))\r
+    lPropagationCoche =editor.getValeur('Modele', 'listeEquation_propagation',('b_type_creation','Chemical_Equation',))\r
+    lTerminationCoche=editor.getValeur('Modele','listeEquation_termination', ('b_type_creation','Chemical_Equation',))\r
+    lStabilizationCoche=editor.getValeur('Modele','listeEquation_stabilization', ('b_type_creation','Chemical_Equation',))\r
+\r
+    print (lInitialCoche,lInititiationCoche,lPropagationCoche,lTerminationCoche,lStabilizationCoche)\r
+    for liste in (lInitialCoche,lInititiationCoche,lPropagationCoche,lTerminationCoche,lStabilizationCoche):\r
+            # Il est possible qu'une liste soit vide lors de l initialisation\r
+        if liste == None : continue\r
+        for equation in liste :\r
+            print (equation)\r
+            for const in maClasseDelistesDB.dictParametresInitiaux[equation].constituants :\r
+                if const not in maClasseDelistesDB.listeParametresInitiaux : maClasseDelistesDB.listeParametresInitiaux.append(const)\r
+            #for coef in maClasseDelistesDB.dictParametresInitiaux[equation].const_cine_nom :\r
+            #  if coef not in maClasseDelistesDB.listeCoefInitiaux : maClasseDelistesDB.listeCoefInitiaux.append(coef)\r
+            for num,coef in enumerate(maClasseDelistesDB.dictParametresInitiaux[equation].const_cine_nom ):\r
+                maClasseDelistesDB.dicoCoefAffichageArr[coef]=maClasseDelistesDB.dictParametresInitiaux[equation].arrhenius[num]\r
+                if coef not in maClasseDelistesDB.listeCoefInitiaux : maClasseDelistesDB.listeCoefInitiaux.append(coef)\r
+\r
+    #print('maClasseDelistesDB.dictParametresInitiaux', maClasseDelistesDB.dictParametresInitiaux)\r
+    if monMCNom == 'Diffusion' :\r
+        change=editor.changeIntoDefMC('Modele', ('b_type_creation','Transport','b_diffusion','listeProduitPourLaDiffusion'), maClasseDelistesDB.listeParametresInitiaux )\r
+    if monMCNom == 'Evaporation' :\r
+        change=editor.changeIntoDefMC('Modele', ('b_type_creation','Transport','b_evaporation','listeProduitPourLEvaporation'), maClasseDelistesDB.listeParametresInitiaux )\r
+\r
+    if monMCNom in ('Evaporation','Diffusion') :\r
+        for c in list(monModele.coef[0].keys()) :\r
+            if c[0]=='D':\r
+                clef=c[1:]\r
+                if clef in maClasseDelistesDB.listeParametresInitiaux :\r
+                    maClasseDelistesDB.listeCoefD.append(clef)\r
+                    maClasseDelistesDB.listeCoefInitiaux.append('D'+clef)\r
+                    maClasseDelistesDB.listeCoefInitiaux.append('S'+clef)\r
+                else :\r
+                    maClasseDelistesDB.listeCoefASupprimer.append('S'+clef)\r
+                    maClasseDelistesDB.listeCoefASupprimer.append('D'+clef)\r
+            if c[0]=='B':\r
+                clef=c[1:]\r
+                if clef in maClasseDelistesDB.listeParametresInitiaux :\r
+                    maClasseDelistesDB.listeCoefB.append(clef)\r
+                    maClasseDelistesDB.listeCoefInitiaux.append(c)\r
+                else :\r
+                    maClasseDelistesDB.listeCoefASupprimer.append(c)\r
+    print ('aClasseDelistesDB.listeCoefB',maClasseDelistesDB.listeCoefB)\r
+    print ('aClasseDelistesDB.listeCoefB',maClasseDelistesDB.listeCoefD)\r
+    print ('maClasseDelistesDB.listeCoefInitiaux',maClasseDelistesDB.listeCoefInitiaux)\r
+    print ('maClasseDelistesDB.listeCoefASupprimer',maClasseDelistesDB.listeCoefASupprimer)\r
+    print ('maClasseDelistesDB.listeParametresInitiaux',maClasseDelistesDB.listeParametresInitiaux)\r
+    # au lieu des print il faut mettre a jour le MC Fact Coefficients avec ,maClasseDelistesDB.listeCoefInitiaux et le MC FACT\r
+    # Paraetres_initiaux avec maClasseDelistesDB.listeParametresInitiaux\r
+    # TO DO TO DO PNPN\r
+    # si on arrive avex\r
+    # if monMC.nom = Diffusion\r
+    if monMCNom == 'Diffusion' :\r
+        editor.setValeur('Modele','listeProduitPourLaDiffusion' ,maClasseDelistesDB.listeCoefD, ('b_type_creation','Transport','b_diffusion',))\r
+    #editor.changeValeur(....,'listeProduitPourLaDiffusion',maClasseDelistesDB.listeCoefD')\r
+    # if monMCNom == 'Evaporation' :\r
+    #editor.changeValeur(....,'listeProduitPourLaDiffusion',maClasseDelistesDB.listeCoefB')\r
+\r
+\r
+\r
+def ajouteEvaporation(monMC):\r
+    print ('je suis dans ajouteDiffusion')\r
+    if monMC.valeur == None : return\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    editor=monMC.jdc.editor\r
+    if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+\r
+    monMC.dsMaFunct=True\r
+    for v in monMC.valeur :\r
+        clef='B'+v\r
+        if clef not in maClasseDelistesDB.listeCoefInitiaux :\r
+            maClasseDelistesDB.listeCoefInitiaux.append(clef)\r
+\r
+    print ('sortie de ajouteDiffusion' , maClasseDelistesDB.listeCoefInitiaux)\r
+    monMC.dsMaFunct=False\r
+    editor.dsMaFunct = False\r
 \r
 def ajouteDiffusion(monMC):\r
     print ('je suis dans ajouteDiffusion')\r
     if monMC.valeur == None : return\r
-    print (monMC.valeur)\r
     if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    editor=monMC.jdc.editor\r
+    if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+\r
     monMC.dsMaFunct=True\r
+    for v in monMC.valeur :\r
+        clef='D'+v\r
+        if clef not in maClasseDelistesDB.listeCoefInitiaux :\r
+            maClasseDelistesDB.listeCoefInitiaux.append(clef)\r
+            maClasseDelistesDB.listeCoefInitiaux.append('S'+v)\r
+            maClasseDelistesDB.dicoCoefAffichageArr[clef] = True\r
+            maClasseDelistesDB.dicoCoefAffichageArr['S'+v] = False\r
+            #maClasseDelistesDB.dicoCoefAffichageArr['B'+v] = True\r
+\r
+        # on affiche dans l interface  un mot clef avec clef comme nom et\r
+        # 2 reels si ce commence par D soit iniitialise a 0 si pas de valeur\r
+        # soit avec comme deifaut nomCoef in monModele.coef[0].keys()\r
+    print ('sortie de ajouteDiffusion' , maClasseDelistesDB.listeCoefInitiaux)\r
+\r
+    for nomCoef in maClasseDelistesDB.listeCoefInitiaux:\r
+        #A jout Ds Coef d'un MC\r
+        nomMC='Coef_'+nomCoef\r
+        if maClasseDelistesDB.dicoCoefAffichageArr[nomCoef]  == True:\r
+            print ('2 r'),\r
+            if nomCoef in monModele.coef[0].keys() :\r
+                print (monModele.coef[0][nomCoef])\r
+            else :\r
+                print ((0,0))\r
+        else :\r
+            print ('1 r')\r
+            if nomCoef in monModele.coef[0].keys() :\r
+                print (monModele.coef[0][nomCoef])\r
+            else :\r
+                print (0)\r
+\r
+    print ('______________________')\r
+    #for v in monMC.valeur :\r
+    #    print (v)\r
+    #    mesValeurs=editor.dicoCoefS[v]\r
+    #    MCFils='S'+v\r
+    #    for e in monMC.jdc.etapes:\r
+    #        if e.nom == 'Modele' :break\r
+    #    editor.ajoutDefinitionMC(e,('b_type_creation','b_diffusion'),MCFils,typ='TXM',statut='o' )\r
+    #    editor.ajoutMC(e,MCFils,mesValeurs,('b_type_creation','b_diffusion',))\r
+    #    print ('______')\r
+    #if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
+    monMC.dsMaFunct=False\r
+    editor.dsMaFunct = False\r
+\r
+\r
+# --------------------------------------------------------------------------------------------\r
+# pour les modeles en modification ou en utilisation\r
+# --------------------------------------------------------------------------------------------\r
+def creeListeMateriauxSelonModele(monMC):\r
+    if monMC.valeur == None : return\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
     editor=monMC.jdc.editor\r
     if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
-    editor.dsMaFunct = True\r
 \r
+    valeurDB=editor.getValeur('Modele','Modele_DB',())\r
+    maClasseDelistesDB.metAJour(valeurDB)\r
+    listModele=maClasseDelistesDB.getListModele()\r
+    listModeleFiltre=[]\r
+    listMateriauxFiltre=[]\r
+    for modele in listModele :\r
+        if modele.technical_use == monMC.valeur :\r
+            maClasseDelistesDB.dicoModeleFiltre[modele.nom]=modele\r
+            listModeleFiltre.append(modele.nom)\r
+            if type(modele.materiaux) not in (list, tuple): modeleATraiter= modele.materiaux\r
+            else : modeleATraiter= modele.materiaux[0]\r
+            if modeleATraiter not in listMateriauxFiltre :\r
+                listMateriauxFiltre.append(modeleATraiter)\r
+                maClasseDelistesDB.dicoMateriauxFiltre[modeleATraiter]=[modele.nom,]\r
+            else :\r
+                maClasseDelistesDB.dicoMateriauxFiltre[modeleATraiter].append(modele.nom)\r
+\r
+\r
+\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_modification','b_technicalUse','material'),listMateriauxFiltre )\r
+\r
+    monMC.dsMaFunct=False\r
+    editor.dsMaFunct = False\r
+\r
+def creeListeModelesPossibles(monMC):\r
+    if monMC.valeur == None : return\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    editor=monMC.jdc.editor\r
+    if hasattr(editor,'dsMaFunct') and editor.dsMaFunct== True : return\r
+    change=editor.changeIntoDefMC('Modele', ('b_type_modification','b_technicalUse','modele'),maClasseDelistesDB.dicoMateriauxFiltre[monMC.valeur] )\r
 \r
-    for v in monMC.valeur :\r
-        print (v)\r
-        mesValeurs=editor.dicoCoefS[v]\r
-        print (editor.dicoCoefS)\r
-        print (mesValeurs) \r
-        MCFils='S'+v\r
-        for e in monMC.jdc.etapes:\r
-            if e.nom == Modele :break\r
-\r
-        print (e)\r
-        editor.ajoutDefinitionMC(e,('b_type_creation','b_diffusion'),MCFils,typ='TXM',statut='o' )\r
-        print ('ggggg')\r
-        editor.ajoutMC(e,MCFils,mesValeurs,('b_type_creation','b_diffusion',))\r
-        print ('______')\r
-    if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
     monMC.dsMaFunct=False\r
     editor.dsMaFunct = False\r
 \r
+def choisitModele(monMC):\r
+    # Equation b_modification modification\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    valeur=monMC.valeur\r
+    if valeur == None : return\r
+    modele=maClasseDelistesDB.dicoModeleFiltre[monMC.valeur]\r
+    maClasseDelistesDB.monModele=modele\r
+    monMC.dsMaFunct = False\r
+\r
+def choisitActionModele(monMC):\r
+    if monMC.valeur == 'display' : afficheModele(monMC)\r
+    if monMC.valeur == 'modify' : changeValeurDefautModele(monMC)\r
+\r
+def afficheModele(monMC):\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    valeur=monMC.valeur\r
+    aAfficher=str(maClasseDelistesDB.monModele)\r
+    editor=monMC.jdc.editor\r
+    editor._viewText(aAfficher, "Id",largeur=700,hauteur=500)\r
+\r
+    monMC.dsMaFunct = False\r
+\r
+def changeValeurDefautModele(monMC):\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    monMC.dsMaFunct = True\r
+    editor=monMC.jdc.editor\r
+    change=editor.changeIntoMCandSet('Modele', ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID','modeleName'),(maClasseDelistesDB.monModele.nom,),maClasseDelistesDB.monModele.nom, )\r
+    editor.setValeur('Modele','technicalUse',maClasseDelistesDB.monModele.technical_use, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+\r
+    editor.setValeur('Modele','material',maClasseDelistesDB.monModele.materiaux, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+    editor.setValeur('Modele','agingType',maClasseDelistesDB.monModele.type_vieil, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+\r
+    if maClasseDelistesDB.monModele.stabilise == 'True' : monBool = True\r
+    else : monBool = False\r
+    editor.setValeur('Modele','stabilizer',monBool, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+    editor.setValeur('Modele','material_thickness',maClasseDelistesDB.monModele.thickness, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+\r
+    if maClasseDelistesDB.monModele.dvt_EDF == 'True' : monBool = True\r
+    else : monBool = False\r
+    editor.setValeur('Modele','model_developed_by_for_EDF',monBool, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+    editor.setValeur('Modele','documentation',maClasseDelistesDB.monModele.reference, ('b_type_modification','b_technicalUse','b_modele','b_type_modify','ID'))\r
+    if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
+    monMC.dsMaFunct = False\r
+\r
+\r
+\r
+def creeCoefAModifier(monMC):\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    if monMC.valeur == None : return\r
+    monMC.dsMaFunct = True\r
+    editor=monMC.jdc.editor\r
+    dicoArr={}\r
+    dicoNonArr={}\r
+    for coef in maClasseDelistesDB.monModele.coef[0] :\r
+        if len (maClasseDelistesDB.monModele.coef[0][coef]) == 1 :\r
+            dicoNonArr[coef]=maClasseDelistesDB.monModele.coef[0][coef][0]\r
+        else :\r
+            dicoArr[coef]=maClasseDelistesDB.monModele.coef[0][coef]\r
+            if coef[0] == 'D' : maClasseDelistesDB.listeDiffusion.append(coef[1:])\r
+    print (dicoNonArr)\r
+    print (dicoArr)\r
+    if 'ri' in dicoNonArr :\r
+        print ('ajoutDefinitionMC debitOfDose')\r
+        editor.ajoutDefinitionMC('Modele', ('b_type_modification','b_technicalUse','b_modele','b_type_use2','Aging_Factor'), 'debitOfDose',typ='R',statut='o' )\r
+\r
+    for coef in dicoNonArr :\r
+        print (coef)\r
+        # attention, notation scientifique\r
+        editor.ajoutDefinitionMC('Modele',('b_type_modification','b_technicalUse','b_modele','b_type_use',),coef, 'R', statut='o',defaut=dicoNonArr[coef])\r
+        # a faire marcher\r
+        # pour les Arr il faut un tuple(2)\r
+\r
+    # il fait creer un fact Boundary_Conditions_Param pour chacque espece de listeDiffusion\r
+\r
+    if editor.fenetreCentraleAffichee : editor.fenetreCentraleAffichee.node.affichePanneau()\r
+\r
+    monMC.dsMaFunct = False\r
+\r
+\r
+def remplirAgingFactor(monMC):\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    if monMC.valeur == None : return\r
+    monMC.dsMaFunct = True\r
+    editor=monMC.jdc.editor\r
+    if monMC.valeur in dicoAgingFactor:\r
+        print (monMC.valeur, 'trouve')\r
+        for MC in dicoAgingFactor[monMC.valeur]:\r
+            print (MC)\r
+            print (dicoAgingFactor[monMC.valeur][MC]),\r
+            editor.setValeur('Modele',MC,dicoAgingFactor[monMC.valeur][MC],('b_type_modification','b_technicalUse','b_modele','b_type_use2','Aging_Factor'))\r
+    monMC.dsMaFunct = False\r
+\r
+\r
+def creeInitialParameter(monMC):\r
+    print ('je passe dans creeInitialParameter')\r
+    if hasattr(monMC,'dsMaFunct') and monMC.dsMaFunct== True : return\r
+    if monMC.valeur == None : return\r
+    monMC.dsMaFunct = True\r
+    editor=monMC.jdc.editor\r
+    for coef in maClasseDelistesDB.monModele.param_ini:\r
+        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])\r
+    monMC.dsMaFunct = False\r
+    # creer nbdenode = monMC.valeur Initial_Parameter\r