]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
push fin du traitement MC incertain avant merge avec version d eric. le generator...
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Mon, 27 Jun 2022 08:35:37 +0000 (10:35 +0200)
committerPASCALE NOYRET <pascale.noyret@edf.fr>
Mon, 27 Jun 2022 08:35:37 +0000 (10:35 +0200)
Ihm/I_MCSIMP.py
InterfaceQT4/feuille.py
Noyau/N_JDC_CATA.py
Noyau/N_SIMP.py
ReacteurNumerique/cata_RN_UQ.py
ReacteurNumerique/cata_UQ.py
generator/generator_UQ.py
generator/generator_python.py

index c224e5448366994feef14b4cd530680bbfd10768..7a796d81bd2f166a16ffd7236881fc548aa657a4 100644 (file)
@@ -902,6 +902,9 @@ class MCSIMP(I_OBJECT.OBJECT):
         if etapeIncertitude == [] :
            self.jdc.editor.tree.racine.appendChild('ExpressionIncertitude', 'last')
            etapeIncertitude=self.jdc.getEtapesByName('ExpressionIncertitude')
+           # Ou la la, que c est generique
+           # ajouter un op_construction
+           etapeIncertitude[0].buildSd()
         etapeIncertitude=etapeIncertitude[0]
         incertitudeInput = etapeIncertitude.getChildOrChildInBloc('Input')
         nodeVariableProbabiliste=incertitudeInput.node.appendChild('VariableProbabiliste', 'first')
index 4d075a3777cebd93f7d010128d2dfac01ced4a5a..3ddc322563fff5848e10c6fd8968634124237a78 100644 (file)
@@ -55,9 +55,9 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
         self.setupUi(self)
         self.prendLeFocus=0
 
-        maPolice= QFont("Times", 10)
-        self.setFont(maPolice)
-        self.setFocusPolicy(Qt.StrongFocus)
+        #maPolice= QFont("Times", 10)
+        #self.setFont(maPolice)
+        #self.setFocusPolicy(Qt.StrongFocus)
 
         self.parentQt=parentQt
         self.editor=self.node.editor
@@ -82,7 +82,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
         self.setZoneInfo()
         self.setUnite()
         #inhibition incertitude
-        #if  hasattr(self,'checkBoxUQ') : self.checkBoxUQ.close()
+        self.inhibeSignal = False
         self.setUQ()
 
 
@@ -107,7 +107,14 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
         self.checkBoxUQ.toggled.connect(self.setEnabledUQ)
 
     def setEnabledUQ(self) :
-        if self.checkBoxUQ.isChecked() : self.objSimp.lieVariableUQ()
+        if self.inhibeSignal : self.inhibeSignal=False; return
+        if self.checkBoxUQ.isChecked() : 
+            if self.objSimp.etape.nature == 'OPERATEUR' and not(self.objSimp.etape.sd):
+              QMessageBox.warning( self,tr('Attention'),tr('Il faut d abord nommer '+self.objSimp.etape.nom + ' avant de pourvoir choisir des variables incertaines'))
+              self.inhibeSignal = True
+              self.checkBoxUQ.setCheckState(False) 
+              return
+            self.objSimp.lieVariableUQ()
         else :   
            ret = self.objSimp.delieVariableUQ()  
            if not ret : QMessageBox.warning( self,tr( "Variable associée non trouvée "),tr( "prevenez la maintenance"))
index 3f6fcafa7e66c5513cbbc354a21fb61d3a2ee7ed..2c37bb8cc6596e63dea9ac565c89276446e88d37 100644 (file)
@@ -51,7 +51,7 @@ class JDC_CATA(N_ENTITE.ENTITE):
     def __init__(self, code='', execmodul=None, regles=(), niveaux=(),fichierSource=None, fr='', ang ='', **args):
         """
         on se laisse la possibilite d initier fichierSource avec autre chose que le nom du fichier
-        au cas ou ... pour pouvoir changer le nom du 'sous code' implementer (cf readercata)
+        au cas ou ... pour pouvoir changer le nom du 'sous code' implemente (cf readercata)
         """
         self.code = code
         self.fr = fr
index b61b0a11d4a291c5de756cdb1e4915f5c79eddd5..5c9608378358c9786e21f6af9455fb2162ed9521 100644 (file)
@@ -155,12 +155,20 @@ class SIMP(N_ENTITE.ENTITE):
     def changeInto(self, listeDesIntos):
         self.into=listeDesIntos
 
+    def changeIntoSelonValeurs(self, mcRecepteur):
+        mcRecepteur.changeInto(self.valeurs)
+
     def addInto(self, nvlInto):
+        if self.into == None : self.into=[]
+        if nvlInto in self.into : return
         self.into.append(nvlInto)
 
     def changeStatut(self, nvlStatut):
         self.statut=nvlStatut
 
+    def changeSiValide(self, nvlFonction):
+        self.siValide=nvlFonction
+
     def verifCata(self):
         """
             Cette methode sert à valider les attributs de l'objet de définition
index e950f9e581207904a83c08d55f56a48472251432..7a3a2159538b82850939cc6824cc938de4917969 100644 (file)
@@ -23,17 +23,15 @@ dictUQ = {'initial_power' : ({'Uniform' : {}}, {'TruncatedNormal' : {}}, {'UserD
           # modifier la partie Accas pour garder une reference a l objet nomme
          }
 
-#listeDesSortiesPossibles = ("Average_mass_flux", "Boiling_power_fraction", "Boron_concentration", "Enthalpy", "Fuel_power_fraction", "Fuel_temperature", "Kinetic_reactivity", "Liquid_power", "Mass_flux", "Mass_fraction", "Mass_title", "Mixture_density", "Mixture_specific_enthalpy", "Mixture_temperature", "Neutronic_power", "Outlet_pressure", "Pollutant_concentration", "Pressure ", "Rowlands_fuel_effective_temp", "Thermal_power", "Water_density", "Water_temperature", "Power_level" )
-listeDesSortiesNeutro = ( "Boron_concentration",   "Kinetic_reactivity",   "Neutronic_power",  )
-listeDesSortiesTherm = ("Average_mass_flux", "Boiling_power_fraction",  "Enthalpy",  "Fuel_temperature", "Liquid_power", "Mass_flux", "Mass_fraction", "Mass_title", "Mixture_density", "Mixture_specific_enthalpy", "Mixture_temperature", "Outlet_pressure", "Pollutant_concentration", "Pressure ", "Rowlands_fuel_effective_temp", "Thermal_power", "Water_density", "Water_temperature", )
+listeDesSortiesNeutro = ( "Boron concentration",   "Kinetic reactivity",   "Neutronic power",  )
+listeDesSortiesThermo = ("Average mass flux", "Boiling power fraction",  "Enthalpy",  "Fuel temperature", "Liquid power", "Mass flux", "Mass fraction", "Mass title", "Mixture density", "Mixture specific enthalpy", "Mixture temperature", "Outlet pressure", "Pollutant concentration", "Pressure ", "Rowlands fuel effective temp", "Thermal power", "Water density", "Water temperature", )
 
-dicoDesSortiesPossibles={'Neutro':listeDesSortiesNeutro,'Thermo':listeDesSortiesTherm}
-#dicoDesSortiesPossibles={'Neutro':listeDesSortiesNeutro}
+dicoDesSortiesPossibles={'Neutronics':listeDesSortiesNeutro,'Thermalhydraulics':listeDesSortiesThermo}
+#dicoDesSortiesPossibles={'Thermalhydraulics':listeDesSortiesThermo}
 from cata_UQ import creeOperExpressionIncertitude
 ExpressionIncertitude=creeOperExpressionIncertitude(dictUQ, dicoDesSortiesPossibles)
 
 
-
 #autonome=1
 autonome=0
 if autonome : 
index ffcec4e39520e9bfd1dab58d2fff87474f103401..46e81ef388a2503c9c1ecc5a7b7c5ee5338d8959 100644 (file)
@@ -12,36 +12,14 @@ from Noyau.N_VALIDATOR import Valid
 
 #TODO --> si UserDefined et Uranie alors UserDefined
 
-#def creeLienVPVD(monMC):
-#   if monMC.valeur == () or monMC.valeur == None : return
-#    print (monMC)
-
 # a faire
 class infFrereMC(Valid):
     def __init__(self,nomMCFrere):
         self.nomMCFrere = nomMCFrere
 # 
-listeLoiDistribution= (  #"Beta", 
-                         #"Exponential",
-                         #"Gamma",
-                         #"Geometric",
-                         #"Gumbel",
-                         #"Histogram",
-                         #"Laplace",
-                         #"Logistic",
-                         #"LogNormal",
-                         #"MultiNomial",
-                         #"NonCentralStudent",
-                         #"Normal",
-                         #"Poisson",
-                         #"Rayleigh",
-                         #"Student",
-                         #"Triangular",
-                         "TruncatedNormal",
-                         "Uniform",
-                         "UserDefined",
-                         #"Weibull",
-                         ),
+#listeLoiDistribution= (  #"Beta", #"Exponential", #"Gamma", #"Geometric", #"Gumbel", #"Histogram", #"Laplace", #"Logistic", #"LogNormal", #"MultiNomial",
+                         #"NonCentralStudent", #"Normal", #"Poisson", #"Rayleigh", #"Student", #"Triangular", "TruncatedNormal", "Uniform", "UserDefined",
+                         #"Weibull",),
 
 ##====
 ## Definition des parametres selon le type de la loi
@@ -671,44 +649,6 @@ def creeUserDefined ():
 #
 #
 #
-##================================
-## Definition du modele physique
-##================================
-#
-#
-#Deterministic_variable = OPER ( nom = "Deterministic_variable",
-#            sd_prod = variable,
-#            op = None,
-#            fr = "Variable deterministe",
-#            ang = "Deterministic variable",
-#            UIinfo={"groupes":("UQ",)},
-#            
-#  N = SIMP( statut = 'o',
-#             typ = "TXM",
-#             fr = "Nom",
-#             ang = "Name",
-#             ),
-#            
-#  T = SIMP( statut = 'o',
-#             defaut = "in",
-#             into = ( "in" , "out", ),
-#             typ = "TXM",
-#             fr = "Type",
-#             ang = "Type",
-#             ),
-#            
-#  R = SIMP( statut = 'o',
-#             defaut = 0,
-#             typ = "I",
-#             fr = "Rang",
-#             ang = "Rank",
-#             ),
-#            
-#) # Fin OPER DETERMINISTICVARIABLE
-#
-#
-#
-#
 #Correlation = PROC ( nom = 'Correlation',
 #                     op = None,
 #                     docu = "",
@@ -745,265 +685,6 @@ def creeUserDefined ():
 #
 #
 #
-##================================
-## Definition de l'etude
-##================================
-#
-## Nota : les variables de type PROC doivent etre en majuscules !
-#Criteria = PROC ( nom = "Criteria",
-#                  op = None,
-#                  docu = "",
-#                  fr = "Critère de l'étude d'incertitudes",
-#                  ang = "Uncertainty study criteria",
-#                  UIinfo={"groupes":("UQ",)},
-#
-#
-#
-#  Type = SIMP( statut = "o",
-#                typ = "TXM",
-#                into = ( "Min/Max", "Central Uncertainty", "Threshold Exceedence" ),
-#                fr = "Type du critère",
-#                ang = "Criteria type",
-#                ),
-#
-#
-#
-#
-#
-#
-#
-#  MinMax = BLOC( condition = " Type in ( 'Min/Max', ) ",
-#
-#                  Method = SIMP( statut = "o",
-#                                  typ = "TXM",
-#                                  into = ( "Experiment Plane", "Random Sampling" ),
-#                                  fr = "Methode",
-#                                  ang = "Method",
-#                                  ),
-#                  # UC 3.1.1
-#                  ExperimentPlaneSettings = BLOC( condition = " Method in ( 'Experiment Plane', ) ",
-#
-#                          ExperimentPlane = SIMP( statut = "o",
-#                                                   typ = "TXM",
-#                                                   into = ( "Axial", "Factorial", "Composite", ),
-#                                                   fr = "Type du plan d'expérience",
-#                                                   ang = "Experiment plane type",
-#                                                   ),
-#
-#                          Levels = SIMP( statut = "o",
-#                                          typ = "R",
-#                                          val_min = 0.0,
-#                                          max = '**',    
-#                                          fr = "Liste de niveaux dans chaque direction",
-#                                          ang = "Levels in each direction",
-#                                          ),
-#
-#                          # Scaled Vector
-#                          UnitPerDimension = SIMP( statut = "o",
-#                                          typ = "R",
-#                                          max = '**',    
-#                                          fr = "Unité par dimension (autant que de variables declarées)",
-#                                          ang = "Units per dimension (as much as declared variables)",
-#                                          ),
-#
-#                          # Translation Vector
-#                          Center = SIMP( statut = "o",
-#                                          typ = "R",
-#                                          max = '**',    
-#                                          fr = "Centre du plan d'expérience",
-#                                          ang = "Experiment plan center",
-#                                          ),
-#
-#                    ), # Fin BLOC ExperimentPlaneSettings
-#
-#
-#
-#                  RandomSamplingSettings = BLOC( condition = " Method in ( 'Random Sampling', ) ",
-#
-#                          SimulationsNumber = SIMP( statut = "o",
-#                                                typ = "I",
-#                                                val_min = 1,
-#                                                fr = "Nombre de points",
-#                                                ang = "Points number",
-#                                                ),
-#
-#                    ), # Fin BLOC RandomSamplingSettings
-#
-#                  Result = SIMP(  statut = "o",
-#                                   typ = "TXM",
-#                                   into = ( "Min/Max", ),
-#                                   defaut = "Min/Max",
-#                                   fr = "Le minimum et le maximum de la variable d'intérêt",
-#                                   ang = "The min and max values",
-#                                   ),
-#
-#
-#  ), # Fin BLOC MinMax
-#
-#
-#
-#
-#  CentralUncertainty = BLOC( condition = " Type in ( 'Central Uncertainty', ) ",
-#
-#                  Method = SIMP( statut = "o",
-#                                  typ = "TXM",
-#                                  into = ( "Taylor Variance Decomposition", "Random Sampling" ),
-#                                  fr = "Methode",
-#                                  ang = "Method",
-#                                  ),
-#                              
-#                  # UC 3.2.
-#                  TaylorVarianceDecompositionSettings = BLOC( condition = " Method in ( 'Taylor Variance Decomposition', ) ",
-#
-#                      Result = FACT ( statut = "o",
-#                                      min = 1,
-#                                      max = "**",
-#
-#                              MeanFirstOrder = SIMP( statut = "o",
-#                                                typ = 'TXM',
-#                                                into = ( 'yes', 'no' ),
-#                                                defaut = 'yes',
-#                                                max = 1,
-#                                                fr = "Moyenne au premier ordre",
-#                                                ang = "MeanFirstOrder",
-#                                                ),
-#
-#                              StandardDeviationFirstOrder = SIMP( statut = "o",
-#                                                                   typ = 'TXM',
-#                                                                   into = ( 'yes', 'no' ),
-#                                                                   defaut = 'yes',
-#                                                                   max = 1,
-#                                                                   fr = "Ecart-type au premier ordre",
-#                                                                   ang = "StandardDeviationFirstOrder",
-#                                                                   ),
-#
-#                              MeanSecondOrder = SIMP( statut = "o",
-#                                                       typ = 'TXM',
-#                                                       into = ( 'yes', 'no' ),
-#                                                       defaut = 'no',
-#                                                       max = 1,
-#                                                       fr = "Moyenne au second ordre",
-#                                                       ang = "MeanSecondOrder",
-#                                                       ),
-#
-#                              ImportanceFactor = SIMP( statut = "o",
-#                                                        typ = 'TXM',
-#                                                        into = ( 'yes', 'no' ),
-#                                                        defaut = 'yes',
-#                                                        max = 1,
-#                                                        fr = "Facteur d'importance pour variable de sortie scalaire",
-#                                                        ang = "ImportanceFactor",
-#                                                        ),
-#                              ImportanceFactorSettings = BLOC( condition = " ImportanceFactor in ( 'yes', ) ",
-#
-#                                     ImportanceFactorDrawingFilename = SIMP( statut = "o",
-#                                                                              typ = "TXM",
-#                                                                              max = 1,
-#                                                                              fr = "Nom du fichier graphique des facteurs d'importance",
-#                                                                              ang = "Importance Factor Drawing Filename",
-#                                                                              ),
-#                                                                             
-#
-#                              ), # Fin BLOC ImportanceFactorSettings
-#                                      
-#                      ), # Fin FACT Result
-#                                                               
-#                  ), # Fin BLOC TaylorVarianceDecompositionSettings
-#
-#
-#
-#                  RandomSamplingSettings = BLOC( condition = " Method in ( 'Random Sampling', ) ",
-#
-#                          SimulationsNumber = SIMP( statut = "o",
-#                                                typ = "I",
-#                                                val_min = 1,
-#                                                fr = "Nombre de points",
-#                                                ang = "Points number",
-#                                                ),
-#
-#                       Result = FACT ( statut = "o",
-#                                      min = 1,
-#                                      max = "**",
-#
-#                              EmpiricalMean = SIMP( statut = "o",
-#                                                     typ = 'TXM',
-#                                                     into = ( 'yes', 'no' ),
-#                                                     defaut = 'yes',
-#                                                     max = 1,
-#                                                     fr = "Moyenne empirique",
-#                                                     ang = "Empirical mean",
-#                                                     ),
-#
-#                              EmpiricalStandardDeviation = SIMP( statut = "o",
-#                                                                  typ = 'TXM',
-#                                                                  into = ( 'yes', 'no' ),
-#                                                                  defaut = 'yes',
-#                                                                  max = 1,
-#                                                                  fr = "Ecart-type empirique",
-#                                                                  ang = "Empirical standard deviation",
-#                                                                  ),
-#
-#                              EmpiricalQuantile = SIMP( statut = "o",
-#                                                         typ = 'TXM',
-#                                                         into = ( 'yes', 'no' ),
-#                                                         defaut = 'yes',
-#                                                         max = 1,
-#                                                         fr = "Quantile empirique",
-#                                                         ang = "Empirical quantile",
-#                                                         ),
-#
-#                              EmpiricalQuantileSettings = BLOC( condition = " EmpiricalQuantile in ( 'yes', ) ",
-#
-#                                  EmpiricalQuantile_Order = SIMP( statut = "o",
-#                                                                   typ = 'R',
-#                                                                   defaut = 0.95,
-#                                                                   max = 1,
-#                                                                   val_min = 0.0,
-#                                                                   val_max = 1.0,
-#                                                                   fr = "Ordre du quantile empirique",
-#                                                                   ang = "Empirical quantile order",
-#                                                                   ),
-#
-#                              ), # Fin BLOC EmpiricalQuantileSettings
-#
-#                              CorrelationAnalysis = SIMP( statut = "o",
-#                                                            typ = 'TXM',
-#                                                            into = ( 'yes', 'no' ),
-#                                                            defaut = 'yes',
-#                                                            max = 1,
-#                                                            fr = "Correlations analysees",
-#                                                            ang = "Analysed correlations",
-#                                                            ),
-#
-#                              KernelSmoothing = SIMP( statut = "o",
-#                                                       typ = 'TXM',
-#                                                       into = ( 'yes', 'no' ),
-#                                                       defaut = 'yes',
-#                                                       max = 1,
-#                                                       fr = "Kernel smoothing de l'echantillon",
-#                                                       ang = "Kernel smoothing of the sample",
-#                                                       ),
-#
-#                              KernelSmoothingSettings = BLOC( condition = " KernelSmoothing in ( 'yes', ) ",
-#
-#                                     KernelSmoothingDrawingFilename = SIMP( statut = "o",
-#                                                                              typ = "TXM",
-#                                                                              max = 1,
-#                                                                              fr = "Nom du fichier graphique de la reconstruction a noyau",
-#                                                                              ang = "Kernel Smoothing Drawing Filename",
-#                                                                              ),
-#                                                                             
-#
-#                              ), # Fin BLOC KernelSmoothingSettings
-#                                      
-#                      ), # Fin FACT Result
-#                                                               
-#                  ), # Fin BLOC RandomSamplingSettings
-#
-#  ), # Fin BLOC CentralUncertainty
-#
-#
-#
 #
 #  ThresholdExceedence = BLOC( condition = " Type in ( 'Threshold Exceedence', ) ",
 #
@@ -1510,68 +1191,6 @@ def creeUserDefined ():
 #) # Fin PROC CRITERIA
 #
 #
-## --------------------------------------------------
-## Niveau de Journalisation
-## --------------------------------------------------
-#
-#Journalisation_Code = PROC ( nom = "Journalisation_Code",
-#             docu = "",
-#             UIinfo={"groupes":("UQ",)},
-#               
-#  DebugMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'no',
-#                 fr = "Affichage du niveau de debug de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library debug level print",
-#                 ),
-#               
-#  WrapperMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'no',
-#                 fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library debug level print",
-#                 ),
-#               
-#  UserMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'no',
-#                 fr = "Affichage du niveau de user de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library user level print",
-#                 ),
-#               
-#  InfoMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'yes',
-#                 fr = "Affichage du niveau de info de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library info level print",
-#                 ),
-#               
-#  WarningMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'yes',
-#                 fr = "Affichage du niveau de warning de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library warning level print",
-#                 ),
-#               
-#  ErrorMessages = SIMP( statut = "o",
-#                 typ = "TXM",
-#                 into = ( 'yes', 'no' ),
-#                 defaut = 'yes',
-#                 fr = "Affichage du niveau de error de la bibliotheque Open TURNS",
-#                 ang = "Open TURNS library error level print",
-#                 ),
-#               
-#) # Fin Niveaux_Log_Code 
-#
-#
-#
-#
-#
 
 def affineDistribution(monDicoVarDeter,var,loi):
      nomLoi=list(monDicoVarDeter[var].keys())[0]
@@ -1602,42 +1221,66 @@ def creeDistributionsSelonVariable(monDicoVarDeter):
             nomBloc     = 'b_Model_Variable_' + var+'_'+nomLoi
             dicoDistribution[nomBloc]=bloc
         lesBlocs[nomBlocVar]= BLOC(condition=laCondition, Distribution = distribution, **dicoDistribution)
-        print (lesBlocs)
     return lesBlocs
 
 
+def definitIntoOuput(objExpression, contexte):
+    # protege par un gros try -)
+    debug=0
+    if debug : print (objExpression)
+    jdc=objExpression.jdc
+    if not jdc : return
+    if debug : print (jdc)
+    monScenario=jdc.getEtapesByName('Scenario_data')[0]
+    if debug : print (monScenario)
+    mesPostPro=monScenario.getChildOrChildInBloc('post_processing')
+    if debug : print (mesPostPro)
+    if not mesPostPro : return
+    mesPostPro.definition.changeSiValide(changeIntoOuput)
+    changeIntoOuput(mesPostPro)
+
+
+def changeIntoOuput(objPostPro):
+    mesPostProVal=objPostPro.valeur
+    contexte=objPostPro.etape.parent.g_context
+    for (variable,fonct) in mesPostProVal :
+        if fonct == 'MED' : continue
+        nomVar=variable.split('@')[0]
+        phys=variable.split('@')[1]
+        nomAProposer= variable+'@'+fonct
+        nomBloc    = 'b_physique_' + phys 
+        nomBlocVar = ('b_var_'+nomVar).replace( ' ','__')
+        maDef=contexte['ExpressionIncertitude'].entites['Output'].entites['VariableDeSortie'].entites[nomBloc].entites[nomBlocVar].entites['VariablePosttraiteeAssociee']
+        maDef.addInto(nomAProposer)
+    
+
 def creeOutput(monDicoVarSortie):
     intoVariable=list(monDicoVarSortie.keys())
-    if len(intoVariable) == 1 : 
-        listeDesVariablesSortiePossibles = monDicoVarSortie[list(monDicoVarSortie.keys())[0]]
-        output = FACT (max=1, statut ='o',
-            VariableDeSortie = FACT ( max='**', statut ='o',
-                Physique        = SIMP (statut = "o", typ = "TXM",into = intoVariable,defaut=intoVariable[0]),
-                NomDeLaVariable = SIMP ( statut = "o", typ = "TXM", into = listeDesVariablesSortiePossibles),
-                FonctionDAggregation = SIMP(statut = 'o', typ= 'TXM', into = ('Max', 'Min', 'Med', 'Moy', 'Sum'),defaut=('Max'), max='**', homo='SansOrdreNiDoublon'),
-                Unit      = SIMP ( statut = "f", typ = "TXM", fr = "Unite", ang = "Unit",), 
-                Format   = SIMP ( statut = "f", typ = "TXM", fr = "Format de sortie", ang = "format", into =['med', 'csv']), 
-            ),
-        )
-        return output 
-    else :
-        lesBlocs={}
-        Physique = SIMP (statut = "o", typ = "TXM",into = intoVariable,defaut=intoVariable[0])
-        for phys in intoVariable : 
-            laCondition ="Physique == '" + phys + "'"
-            NomDeLaVariable = SIMP ( statut = "o", typ = "TXM", into = monDicoVarSortie[phys], )
-            nomBloc     = 'b_physique_' + phys 
-            lesBlocs[nomBloc] = BLOC (condition=laCondition, NomDeLaVariable = NomDeLaVariable)
-        FonctionDAggregation = SIMP(statut = 'o', typ= 'TXM', into = ('Max', 'Min', 'Med', 'Moy', 'Sum'),defaut=('Max'), max='**', homo='SansOrdreNiDoublon')
+    lesBlocs={}
+    Physique = SIMP (statut = "o", typ = "TXM",into = intoVariable,defaut=intoVariable[0])
+    for phys in intoVariable : 
+        laCondition          = "Physique == '" + phys + "'"
+        VariablePhysique     =  SIMP(statut = "o", typ = "TXM", into = monDicoVarSortie[phys], )
         Unit     = SIMP ( statut = "f", typ = "TXM", fr = "Unite", ang = "Unit",) 
         Format   = SIMP ( statut = "f", typ = "TXM", fr = "Format de sortie", ang = "format", into =['med', 'csv']) 
-        VariableDeSortie = FACT ( max='**', statut ='o', Physique=Physique, **lesBlocs, FonctionDAggregation=FonctionDAggregation, Unit=Unit,Format=Format)
-        output = FACT (max=1, statut ='o', VariableDeSortie=VariableDeSortie)
-        return output
+        lesBlocsVar={}
+        for v in monDicoVarSortie[phys] :
+            VariablePosttraiteeAssociee = SIMP ( statut = "o", typ = "TXM", into=[])
+            Consigne =  SIMP(statut="o", homo="information", typ="TXM", defaut="la Variable Post Traitée associée doit être présente dans la variable post_processing de Scenario_Data")
+            laConditionVar ="VariablePhysique == '" + v + "'"
+            nomBlocVar=('b_var_'+v).replace( ' ','__')
+            lesBlocsVar[nomBlocVar]= BLOC (condition=laConditionVar, VariablePosttraiteeAssociee=VariablePosttraiteeAssociee, Consigne=Consigne)
+        nomBloc     = 'b_physique_' + phys 
+        lesBlocs[nomBloc] = BLOC (condition=laCondition, VariablePhysique = VariablePhysique, **lesBlocsVar)
+    FonctionDAggregation = SIMP(statut = 'o', typ= 'TXM', into = ('Max', 'Min', 'Med', 'Moy', 'Sum'),
+                                defaut=('Max'), max='**', homo='SansOrdreNiDoublon')
+    VariableDeSortie = FACT ( max='**', statut ='o', Physique=Physique, **lesBlocs, FonctionDAggregation=FonctionDAggregation, Unit=Unit,Format=Format)
+    output = FACT (max=1, statut ='o', VariableDeSortie=VariableDeSortie)
+    return output
 
 def creeOperExpressionIncertitude(monDicoVarDeter, monDicoVarSortie):
     listeDesVariablesPossibles = list(monDicoVarDeter.keys())
-    monOutput = creeOutput(monDicoVarSortie)
+    #monOutput = creeOutput(monDicoVarSortie)
     objectName =  SIMP ( statut = "f", typ =  'TXM', into=[],  fenetreIhm='menuDeroulant', homo='constant' ) # on ne met pas [] pour la projection XSD, intoXML=?
     modelVariable = SIMP ( statut = "o",
             typ = ( 'TXM'),
@@ -1647,20 +1290,20 @@ def creeOperExpressionIncertitude(monDicoVarDeter, monDicoVarSortie):
             fenetreIhm='menuDeroulant',
             homo='constant',
     )
-    laConsigne =  SIMP(statut="o", homo="information", typ="TXM", defaut=' ')
+    Consigne =  SIMP(statut="o", homo="information", typ="TXM", defaut=' ')
     MCPath = SIMP(statut='d', typ='TXM', defaut=(), max='**', min=0,)
     blocs=creeDistributionsSelonVariable(monDicoVarDeter)
     # Attention
     # l ordre des motclefs en 3.7 a l air de dépendre de l ordre de creation des objets
     # et non d un dict ordonné. on retombe toujours sur ce pb
-    return  PROC ( nom = "ExpressionIncertitude",  UIinfo={"groupes":("CACHE",)},
+    return  PROC ( nom = "ExpressionIncertitude",  UIinfo={"groupes":("CACHE",)}, op_init=definitIntoOuput,
         Input = FACT( max=1, statut ='o',
             VariableProbabiliste = FACT ( max='**', statut ='cache',
                 fr  = "Variable probabiliste",
                 ang = "Probabilistic variable",
                 ObjectName = objectName,
                 ModelVariable = modelVariable,
-                Consigne = laConsigne,
+                Consigne = Consigne,
                 MCPath = MCPath,
                 **blocs
             ),
@@ -1740,7 +1383,7 @@ def creeOperExpressionIncertitude(monDicoVarDeter, monDicoVarSortie):
             Methode = SIMP( statut = "o", typ = "TXM", max=1, into = ('SRS', 'Sobol'), defaut='Sobol'),
           ), # fin UraniePropagation
         ), # fin Propagation
-        Output=monOutput,
+        Output=creeOutput(monDicoVarSortie),
         Execution = FACT (max=1, statut ='o',
              bloc_OT = BLOC (condition = 'UncertaintyTool == "OpenTurns"',
                 ExecutionMode = SIMP ( statut = "o", typ = "TXM", into = ['desktop', 'cluster']),
index d030c4607ff77d106c3c6c80c0f3d86284faaed4..2e5861defeca2631fc402e60da904421e58ef754 100644 (file)
@@ -120,6 +120,8 @@ class UQGenerator(PythonGenerator):
         # DU coup qu est ce que xxx
 
     def generMCSIMP(self,obj) :
+        # inutile tant que FACT et BLOC ne sont pas surcharges
+        if self.nom=='Consigne' : return
         if not self.inGenerUQ : return PythonGenerator.generMCSIMP(self,obj)
         if not obj in self.mcIncertains : return PythonGenerator.generMCSIMP(self,obj)
         else : 
index e48832cb08a1138bc679f44c554ace008a637c05..7d27406dd7d5c1ff3adf12c9f795825507bcb0e8 100644 (file)
@@ -512,7 +512,7 @@ class PythonGenerator(object):
                     data[0]=v.nom+'='+data[0]
                 else:
                     data=v.nom+'='+data
-                l.append(data)
+                if v.nom != 'Consigne'  : l.append(data)
         return l