TexteSTDFIN += DecalSTD + "texte = \"\\n=================================================\""
TexteSTDFIN += DecalSTD + "texte += \"\\nMessage d'erreur : \" + str(error_message)"
TexteSTDFIN += DecalSTD + "texte += \"\\n=================================================\\n\""
-TexteSTDFIN += DecalSTD + "print texte"
+TexteSTDFIN += DecalSTD + "print (texte)"
TexteSTDFIN += DecalSTD + "\nsys.exit(error_message)\n"
# C.2. Definition de composants dans le fichier STD
Algorithm = str (self.DictMCVal["Algorithm"])
texte = "\n\n# Le resultat\n"
texte += DecalSTDsaut + NomResu + " = " + NomAlgo + ".getResult()"
- texte += DecalSTDsaut + "###" + "print " + NomResu
+ texte += DecalSTDsaut + "###" + "print ( " + NomResu+")"
texte += DecalSTDsaut + "text_resu = \"Resultats\\n=======\\n\""
# Particularites des algorithmes de fiabilite
# Impression
- texte += DecalSTDsaut + "print \"\\n\", text_resu, \"\\n\""
+ texte += DecalSTDsaut + "print ( \"\\n\", text_resu, \" ) \\n\""
texte += DecalSTDsaut + "file_resu = open(\"" + self.fic_resu_OpenTURNS + "\", \"w\")"
texte += DecalSTDsaut + "file_resu.write(text_resu)"
texte += DecalSTDsaut + "file_resu.close()"
try:
increment = len(('\n'+self.indent_courant*' ')*ind + element[0])
except:
- print tr('ERREUR')
- print liste
- print element
+ print (tr('ERREUR'))
+ print (liste)
+ print (element)
self.texte_etape = self.texte_etape + (u'\n'+self.indent_courant*' ')*ind + element[0]
length = len(self.indent)
self.indent.insert(length,self.indent[length-1]+len(element[0]))
+++ /dev/null
-# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-"""
-Ce module contient la partie commune
-aux generateurs XML et Etude d Openturns
-"""
-
-__revision__ = "V1.0"
-
-import os
-import sys
-
-path=os.getcwd()
-pathDef=path+"DefautOpenturns"
-
-sys.path.append(pathDef)
-
-
-#=============================================
-# La classe generale
-#=============================================
-
-class Generateur :
-
- '''
- Classe generale du generateur
- DictMCVal : dictionnaire des mots-cles
- ListeVariables : chaque variable est decrite par un dictionnaire ; cette liste les regroupe
- DictLois : dictionnaires des lois
- '''
- def __init__ (self, appli, DictMCVal = {}, ListeVariables = [], DictLois = {}, DictVariables = {} ) :
- #---------------------------------------------------------#
- self.ListeVariables = ListeVariables
- self.ListeVariablesIn = []
- self.ListeVariablesOut = []
- self.DictLois = DictLois
- self.DictVariables = DictVariables
- self.DictMCVal = DictMCVal
- self.DictTypeVar = {}
- self.nbVarIn = 0
- self.nbVarOut = 0
- self.creeInfoVar()
- self.appli = appli
- #
- # On charge eventuellement le Solver par defaut
- # et les valeurs par defaut du Solver (dans l init)
- #
- try :
- #if 1 :
- Solver = self.DictMCVal["PhysicalSolver"]
- import_name = "Defaut"+Solver
- self.module = __import__( import_name, globals(), locals() )
- monDefaut = self.module.Defaut( self )
- #else :
- except:
- self.module = None
-
-
- def getSTDGenerateur(self) :
- #--------------------------#
- try :
- gener = self.module.__dict__["MonSTDGenerateur"]
- monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
- except :
- from OpenturnsSTD import STDGenerateur
- monSTDGenerateur = STDGenerateur( self.appli, self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
- return monSTDGenerateur
-
- def getXMLGenerateur(self) :
- #--------------------------#
- try :
- gener = self.module.__dict__["MonXMLGenerateur"]
- monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois )
- except :
- from OpenturnsXML import XMLGenerateur
- monXMLGenerateur = XMLGenerateur( self.appli, self.DictMCVal, self.DictVariables )
- return monXMLGenerateur
-
- def creeInfoVar (self) :
- #----------------------#
- """
- On repere les variables in/out et on les numerote.
- """
- num = 0
- liste = []
- for DictVariable in self.ListeVariables :
- if not DictVariable.has_key("Type") : DictVariable["Type"] = "in"
- self.DictTypeVar[num] = DictVariable["Type"]
- if DictVariable["Type"] == "in" :
- self.nbVarIn = self.nbVarIn + 1
- self.ListeVariablesIn.append( DictVariable )
- print "OpenturnsBase.py: new input variable = ", DictVariable
- else:
- self.nbVarOut = self.nbVarOut + 1
- self.ListeVariablesOut.append( DictVariable )
- print "OpenturnsBase.py: new output variable = ", DictVariable
- liste.append( DictVariable )
- num = num + 1
- self.ListeVariables = liste
-
-
- def ajouteDictMCVal(self, dicoPlus) :
- #-----------------------------------#
- # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
- # enrichit self.DictMCVal avec les valeurs donnees dans dicoPlus
- # si elles ne sont pas deja dans le dictionnaire
-
- for clef in dicoPlus.keys():
- if not self.DictMCVal.has_key(clef) :
- self.DictMCVal[clef] = dicoPlus[clef]
-
- def ajouteInfoVariables (self, dicoVariablesIn, dicoVariablesOut) :
- #-----------------------------------------------------------------#
- # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
- # met a jour les dictionnaires qui decrivent les variables (regexp par exemple)
- liste=[]
- num = 0
- for dictVariable in self.ListeVariables:
- if self.DictTypeVar[num] == "in" :
- dico = dicoVariablesIn
- else :
- dico = dicoVariablesOut
- for nouvelleVariable in dico.keys() :
- if not dictVariable.has_key(nouvelleVariable):
- dictVariable[nouvelleVariable] = dico[nouvelleVariable]
- liste.append( dictVariable )
- num = num + 1
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-"""
-Ce module contient le generateur Etude pour Openturns
-"""
-
-from Extensions.i18n import tr
-
-__revision__ = "V1.0"
-
-defaultSTD = """#! /usr/bin/env python
-
-class StudyFileGenerationError:
- def __init__ (self, st):
- self.st = st
- def __str__(self):
- return "'%s'" % self.st
-
-raise StudyFileGenerationError, "The study file was not generated. Check analysis type."
-"""
-
-headerSTD = """#! /usr/bin/env python
-
-# Chargement du module systeme
-import sys
-sys.path[:0]=['%s']
-
-# Chargement du module math
-import math
-
-# Chargement du module Open TURNS
-from openturns import *
-
-# Fonction verifiant si un echantillon contient des valeurs non valides (NaN)
-def contain_nan_values(sample):
- for point in sample:
- for val in point:
- if math.isnan(val):
- return True
- return False
-
-results = {}
-
-"""
-
-viewerSTD = """
-from openturns.viewer import View
-
-# Fonction de test du serveur X
-import subprocess
-xserver_available = None
-def is_xserver_available():
- global xserver_available
- if xserver_available is None:
- xserver_available = True
- try:
- subprocess.check_call('python -c "from matplotlib import pyplot;pyplot.figure()" >/dev/null 2>&1', shell = True)
- except:
- xserver_available = False
- return xserver_available
-
-"""
-
-footerSTD = """
-
-# Flush des messages en attente
-Log.Flush()
-
-# Terminaison du fichier
-#sys.exit( 0 )
-"""
-
-#=============================================
-# La classe de creation du fichier STD
-#=============================================
-
-class STDGenerateur :
-
- '''
- Generation du fichier python
- '''
- def __init__ (self, appli, DictMCVal, ListeVariablesIn, ListeVariablesOut, DictLois ) :
- self.DictMCVal = DictMCVal
- self.ListeVariablesIn = ListeVariablesIn
- self.ListeVariablesOut = ListeVariablesOut
- self.DictLois = DictLois
- #print "DictMCVal=", DictMCVal
- print "ListeVariablesIn= %s", ListeVariablesIn
-
-# A REPRENDRE DEPUIS ICI !!
- print "ListeVariablesOut= %s", ListeVariablesOut
- #print "DictLois=", DictLois
- self.texteSTD = defaultSTD
- self.OpenTURNS_path = appli.CONFIGURATION.OpenTURNS_path
-
- # Ce dictionnaire fait la correspondance entre le mot lu dans le dictionnaire des mots-clefs et la methode a appeler
- self.traitement = {
- "Min/Max" :
- ( "MinMax",
- { "Experiment Plane" : "ExperimentPlane",
- "Random Sampling" : "MinMaxRandomSampling",
- },
- ),
- "Central Uncertainty" :
- ( "CentralUncertainty",
- { "Taylor Variance Decomposition" : "TaylorVarianceDecomposition",
- "Random Sampling" : "CentralUncertaintyRandomSampling",
- },
- ),
- "Threshold Exceedence" :
- ( "ThresholdExceedence",
- { "Simulation" : "Simulation",
- "FORM_SORM" : "Analytical",
- "MonteCarlo" : "MonteCarlo",
- "LHS" : "LHS",
- "ImportanceSampling" : "ImportanceSampling",
- "FirstOrder" : "FORM",
- "SecondOrder" : "SORM",
- "Cobyla" : "Cobyla",
- "AbdoRackwitz" : "AbdoRackwitz",
- },
- ),
- }
-
- # Ce dictionnaire liste le nom des variables utilisees dans le script
- # La clef est le nom attendu par les methodes, la valeur est le nom produit dans le fichier de sortie
- # Le fait de passer par un dictionnaire permet de controler que les variables existent et sont correctement nommees
- # meme si clef == valeur
- self.variable = {
- "n" : "n",
- "p" : "p",
- "wrapper" : "wrapper",
- "wrapperdata" : "wrapperdata",
- "frameworkdata" : "frameworkdata",
- "framework" : "framework",
- "studyid" : "studyid",
- "studycase" : "studycase",
- "componentname" : "componentname",
- "model" : "model",
- "scaledVector" : "scaledVector",
- "translationVector" : "translationVector",
- "levels" : "levels",
- "myCenteredReductedGrid" : "myCenteredReductedGrid",
- "myExperimentPlane" : "myExperimentPlane",
- "inputSample" : "inputSample",
- "outputSample" : "outputSample",
- "minValue" : 'results["minValue"]',
- "maxValue" : 'results["maxValue"]',
- "flags" : "flags",
- "inSize" : "inSize",
- "distribution" : "distribution",
- "marginal" : "marginal",
- "collection" : "collection",
- "copula" : "copula",
- "correlation" : "correlation",
- "R" : "R",
- "vars" : "vars",
- "description" : "description",
- "inputRandomVector" : "inputRandomVector",
- "outputRandomVector" : "outputRandomVector",
- "myQuadraticCumul" : "myQuadraticCumul",
- "meanFirstOrder" : 'results["meanFirstOrder"]',
- "meanSecondOrder" : 'results["meanSecondOrder"]',
- "standardDeviationFirstOrder" : 'results["standardDeviationFirstOrder"]',
- "importanceFactors" : 'results["importanceFactors"]',
- "importanceFactorsGraph" : "importanceFactorsGraph",
- "importanceFactorsDrawing" : "importanceFactorsDrawing",
- "empiricalMean" : 'results["empiricalMean"]',
- "empiricalStandardDeviation" : 'results["empiricalStandardDeviation"]',
- "empiricalQuantile" : 'results["empiricalQuantile"]',
- "alpha" : "alpha",
- "beta" : "beta",
- "PCCcoefficient" : 'results["PCCcoefficient"]',
- "PRCCcoefficient" : 'results["PRCCcoefficient"]',
- "SRCcoefficient" : 'results["SRCcoefficient"]',
- "SRRCcoefficient" : 'results["SRRCcoefficient"]',
- "kernel" : "kernel",
- "kernelSmoothedDist" : "kernelSmoothedDist",
- "kernelSmoothedPDFDrawing" : "kernelSmoothedPDFDrawing",
- "kernelSmoothedGraph" : "kernelSmoothedGraph",
- "meanVector" : "meanVector",
- "importanceDensity" : "importanceDensity",
- "myEvent" : "myEvent",
- "myAlgo" : "myAlgo",
- "myResult" : "myResult",
- "probability" : 'results["probability"]',
- "standardDeviation" : 'results["standardDeviation"]',
- "level" : "level",
- "length" : "length",
- "coefficientOfVariation" : 'results["coefficientOfVariation"]',
- "convergenceGraph" : "convergenceGraph",
- "convergenceDrawing" : "convergenceDrawing",
- "simulationNumbers" : 'results["simulationNumbers"]',
- "myOptimizer" : "myOptimizer",
- "specificParameters" : "specificParameters",
- "startingPoint" : "startingPoint",
- "hasoferReliabilityIndex" : 'results["hasoferReliabilityIndex"]',
- "standardSpaceDesignPoint" : 'results["standardSpaceDesignPoint"]',
- "physicalSpaceDesignPoint" : 'results["physicalSpaceDesignPoint"]',
- "eventProbabilitySensitivity" : 'results["eventProbabilitySensitivity"]',
- "hasoferReliabilityIndexSensitivity" : 'results["hasoferReliabilityIndexSensitivity"]',
- "eventProbabilitySensitivityGraph" : "eventProbabilitySensitivityGraph",
- "eventProbabilitySensitivityDrawing" : "eventProbabilitySensitivityDrawing",
- "hasoferReliabilityIndexSensitivityGraph" : "hasoferReliabilityIndexSensitivityGraph",
- "hasoferReliabilityIndexSensitivityDrawing" : "hasoferReliabilityIndexSensitivityDrawing",
- "modelEvaluationCalls" : 'results["modelEvaluationCalls"]',
- "modelGradientCalls" : 'results["modelGradientCalls"]',
- "modelHessianCalls" : 'results["modelHessianCalls"]',
- "tvedtApproximation" : 'results["tvedtApproximation"]',
- "hohenBichlerApproximation" : 'results["hohenBichlerApproximation"]',
- "breitungApproximation" : 'results["breitungApproximation"]',
- }
-
- # Ce dictionnaire fait la correspondance entre le mot-clef du catalogue et le flag de la bibliotheque
- self.logFlags = {
- "DebugMessages" : "Log.DBG",
- "WrapperMessages" : "Log.WRAPPER",
- "UserMessages" : "Log.USER",
- "InfoMessages" : "Log.INFO",
- "WarningMessages" : "Log.WARN",
- "ErrorMessages" : "Log.ERROR",
- }
-
- def CreeSTD (self) :
- '''
- Pilotage de la creation du fichier python
- '''
- TypeAnalyse = None
- if ( self.DictMCVal.has_key( 'Type' ) ):
- TypeAnalyse = self.DictMCVal[ 'Type' ]
-
- Traitement = None
- subDict = {}
- if ( self.traitement.has_key( TypeAnalyse ) ):
- (Traitement, subDict) = self.traitement[ TypeAnalyse ]
-
- if ( Traitement is not None ):
- self.texteSTD = apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
-
- return self.texteSTD
-
- def Header (self) :
- '''
- Imprime l entete commun a tous les fichiers
- '''
- txt = headerSTD % self.OpenTURNS_path
- txt += viewerSTD
- txt += "# Definit le niveau d'affichage de la log\n"
- txt += "%s = Log.NONE\n" % self.variable["flags"]
- for flag in self.logFlags.keys():
- if ( self.DictMCVal.has_key( flag ) ):
- val = self.DictMCVal[ flag ]
- op = "-"
- if val == 'yes' :
- op = "+"
- txt += "%s = %s %s %s\n" % (self.variable["flags"], self.variable["flags"], op, self.logFlags[ flag ])
- txt += "Log.Show( %s )\n" % self.variable["flags"]
- txt += "\n"
- return txt
-
- def Footer (self) :
- '''
- Imprime le pied de page commun a tous les fichiers
- '''
- return footerSTD
-
- def MinMax (self, subDict):
- '''
- Produit le fichier study correspondant a une analyse Min/Max
- '''
- txt = self.Header()
- txt += self.Model()
-
- Methode = None
- if ( self.DictMCVal.has_key( 'Method' ) ):
- Methode = self.DictMCVal[ 'Method' ]
-
- Traitement = None
- if ( subDict.has_key( Methode ) ):
- Traitement = subDict[ Methode ]
-
- if ( Traitement is not None ):
- txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
-
- txt += self.MinMaxResult()
-
- txt += self.Footer()
- return txt
-
- def Model (self):
- '''
- Importe le modele physique
- '''
- if ( self.DictMCVal.has_key( 'FileName' ) ):
- name = self.DictMCVal[ 'FileName' ]
-
- txt = "# Charge le modele physique\n"
- txt += "%s = WrapperFile( '%s' )\n" % (self.variable["wrapper"], name)
- txt += "%s = %s.getWrapperData()\n" % (self.variable["wrapperdata"], self.variable["wrapper"])
-
- txt += "# Ces lignes sont utiles pour le fonctionnement du script sous Salome\n"
- txt += "if globals().has_key('%s'):\n" % self.variable["framework"]
- txt += " %s = %s.getFrameworkData()\n" % (self.variable["frameworkdata"], self.variable["wrapperdata"])
- txt += " %s.studyid_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["studyid"])
- txt += " %s.studycase_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["studycase"])
- txt += " %s.componentname_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["componentname"])
- txt += " %s.setFrameworkData( %s )\n" % (self.variable["wrapperdata"], self.variable["frameworkdata"])
- txt += " %s.setWrapperData( %s )\n" % (self.variable["wrapper"], self.variable["wrapperdata"])
- txt += "# Fin des lignes pour Salome\n"
-
- txt += "%s = NumericalMathFunction( %s )\n" % (self.variable["model"], self.variable["wrapper"],)
- txt += "%s = %s.getInputDimension()\n" % (self.variable["n"], self.variable["model"])
- txt += "\n"
- return txt
-
- def ExperimentPlane (self):
- '''
- Etude par plan d experience
- '''
- txt = "# Etude par plan d'experience\n"
- txt += self.Levels()
- txt += self.CenteredReductedGrid()
- txt += self.ScaledVector()
- txt += self.TranslationVector()
- txt += "%s = %s\n" % (self.variable["inputSample"], self.variable["myExperimentPlane"])
- txt += "\n"
- txt += "# Etude 'Min/Max'\n"
- txt += "# Calcul\n"
- txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"])
- txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
- txt += " raise Exception('Some computations failed')\n"
- txt += "\n"
- return txt
-
- def MinMaxRandomSampling (self):
- '''
- Etude par echantillonage aleatoire
- '''
- size = 0
- if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
- size = self.DictMCVal[ 'SimulationsNumber' ]
-
- txt = "# Etude par echantillonage aleatoire\n"
- txt += self.InputDistribution()
- txt += self.InputRandomVector()
- txt += "\n"
- txt += "# Etude 'Min/Max'\n"
- txt += "# Calcul\n"
- txt += "%s = %d\n" % (self.variable["inSize"], size)
- txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"])
- txt += "%s = %s.getSample( %s )\n" % (self.variable["outputSample"], self.variable["outputRandomVector"], self.variable["inSize"])
- txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
- txt += " raise Exception('Some computations failed')\n"
- return txt
-
- def InputDistribution (self):
- '''
- Cree la loi jointe des variables d entree
- '''
- txt = "# Definit la loi jointe des variables d'entree\n"
- txt += "%s = DistributionCollection( %s )\n" % (self.variable["collection"], self.variable["n"])
- txt += "%s = Description( %s )\n" % (self.variable["description"], self.variable["n"])
- txt += "\n"
-
- dictVariables = {}
- for variable in self.ListeVariablesIn:
- nomVar = variable['ModelVariable'].get_name()
- dictVariables[ nomVar ] = variable['Distribution']
-
- i = 0
- sortedVarNames = dictVariables.keys()
- sortedVarNames.sort()
- for variable in sortedVarNames:
- conceptloi = dictVariables[ variable ]
- loi = self.DictLois[ conceptloi ]
- if loi.has_key( 'Kind' ):
- marginale = "%s_%d" % (self.variable["marginal"], i)
- txt += "# Definit la loi marginale de la composante %d\n" % i
- txt += "%s = %s\n" % (marginale, apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi) ))
- txt += "%s.setName( '%s' )\n" % (marginale, conceptloi.get_name())
- txt += "%s[ %d ] = '%s'\n" % (self.variable["description"], i, variable)
- txt += "%s[ %d ] = Distribution( %s )\n" % (self.variable["collection"], i, marginale)
- txt += "\n"
- i += 1
-
- txt += self.Copula()
-
- txt += "# Definit la loi jointe\n"
- txt += "%s = ComposedDistribution( %s, Copula( %s ) )\n" % (self.variable["distribution"], self.variable["collection"], self.variable["copula"])
- txt += "%s.setDescription( %s )\n" % (self.variable["distribution"], self.variable["description"])
- txt += "\n"
- return txt
-
- def Copula (self):
- '''
- Cree la copule de la loi jointe
- '''
- txt = "# Definit la copule de la loi jointe\n"
-
- if ( not self.DictMCVal.has_key( 'Copula' ) ):
- self.DictMCVal[ 'Copula' ] = 'Independent'
-
- if ( self.DictMCVal[ 'Copula' ] in ( 'Independent', ) ):
- txt += "%s = IndependentCopula( %s )\n" % (self.variable["copula"], self.variable["n"])
- elif ( self.DictMCVal[ 'Copula' ] in ( 'Normal', ) ):
- varList = self.DictMCVal[ 'CorrelationMatrix' ][0]
- dimension = len(varList)
- txt += "%s = {}\n" % self.variable["correlation"]
- for i in range( dimension ):
- txt += "%s['%s'] = {}\n" % (self.variable["correlation"], varList[i])
- for j in range ( dimension ):
- txt += "%s['%s']['%s'] = %g\n" % (self.variable["correlation"], varList[i], varList[j], self.DictMCVal[ 'CorrelationMatrix' ][i+1][j])
- txt += "%s = getCorrelationMatrixFromMap( %s.getVariableList(), %s )\n" % (self.variable["R"], self.variable["wrapperdata"], self.variable["correlation"])
- txt += "%s = NormalCopula( %s )\n" % (self.variable["copula"], self.variable["R"])
-
- txt += "\n"
- return txt
-
- def InputRandomVector (self):
- '''
- Cree le vector aleatoire d entree
- '''
- txt = "# Definit le vecteur aleatoire d'entree\n"
- txt += "%s = RandomVector( %s )\n" % (self.variable["inputRandomVector"], self.variable["distribution"])
- txt += "\n"
- return txt
-
- def OutputRandomVector (self):
- '''
- Cree le vector aleatoire de sortie
- '''
- nomVar = "output"
- for variable in self.ListeVariablesOut:
- nomVar = variable['ModelVariable'].get_name()
-
- txt = "# Definit le vecteur aleatoire de sortie\n"
- txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"])
- txt += "%s.setName( '%s' )\n" % (self.variable["outputRandomVector"], nomVar)
- txt += "\n"
- return txt
-
- def ScaledVector (self):
- '''
- Definit les coefficients multiplicateurs par composante du vecteur
- '''
- dimension = 0
- if ( self.DictMCVal.has_key( 'UnitsPerDimension' ) ):
- unitsPerDimension = self.DictMCVal[ 'UnitsPerDimension' ]
- dimension = len( unitsPerDimension )
-
- txt = "# Definit les facteurs d'echelle dans chaque direction\n"
- txt += "%s = NumericalPoint( %s )\n" % (self.variable["scaledVector"], self.variable["n"])
- for i in range(dimension):
- txt += "%s[%d] = %g\n" % (self.variable["scaledVector"], i, unitsPerDimension[i])
- txt += "%s.scale( %s )\n" % (self.variable["myExperimentPlane"], self.variable["scaledVector"])
- txt += "\n"
- return txt
-
- def TranslationVector (self):
- '''
- Definit le vecteur de translation
- '''
- dimension = 0
- if ( self.DictMCVal.has_key( 'Center' ) ):
- center = self.DictMCVal[ 'Center' ]
- dimension = len( center )
-
- txt = "# Definit le vecteur de translation\n"
- txt += "%s = NumericalPoint( %s )\n" % (self.variable["translationVector"], self.variable["n"])
- for i in range(dimension):
- txt += "%s[%d] = %g\n" % (self.variable["translationVector"], i, center[i])
- txt += "%s.translate( %s )\n" % (self.variable["myExperimentPlane"], self.variable["translationVector"])
- txt += "\n"
- return txt
-
- def Levels (self):
- '''
- Definit les niveaux du plan d experience
- '''
- dimension = 0
- if ( self.DictMCVal.has_key( 'Levels' ) ):
- levels = self.DictMCVal[ 'Levels' ]
- dimension = len( levels )
-
- txt = "# Definit les niveaux de la structure de grille\n"
- txt += "%s = NumericalPoint( %d )\n" % (self.variable["levels"], dimension)
- for i in range(dimension):
- txt += "%s[%d] = %g\n" % (self.variable["levels"], i, levels[i])
- txt += "\n"
- return txt
-
- def CenteredReductedGrid (self):
- '''
- Definit la grille reduite du plan d experience
- '''
- plane = None
- if ( self.DictMCVal.has_key( 'ExperimentPlane' ) ):
- plane = self.DictMCVal[ 'ExperimentPlane' ]
-
- txt = "# Cree le plan d'experience centre reduit\n"
- txt += "%s = %s(%s, %s)\n" % (self.variable["myCenteredReductedGrid"], plane, self.variable["n"], self.variable["levels"])
- txt += "%s = %s.generate()\n" % (self.variable["myExperimentPlane"], self.variable["myCenteredReductedGrid"])
- txt += "\n"
- return txt
-
- def MinMaxResult (self):
- '''
- Produit les resultats de l etude
- '''
- txt = "# Resultats\n"
- txt += "%s = %s.getMin()\n" % (self.variable["minValue"], self.variable["outputSample"])
- txt += "print '%s = ', %s\n" % ("minValue", self.variable["minValue"])
- txt += "\n"
- txt += "%s = %s.getMax()\n" % (self.variable["maxValue"], self.variable["outputSample"])
- txt += "print '%s = ', %s\n" % ("maxValue", self.variable["maxValue"])
- txt += "\n"
- return txt
-
- def CentralUncertainty (self, subDict):
- '''
- Produit le fichier study correspondant a une analyse d incertitude en valeur centrale
- '''
- txt = self.Header()
- txt += self.Model()
- txt += self.InputDistribution()
- txt += self.InputRandomVector()
- txt += self.OutputRandomVector()
-
- Methode = None
- if ( self.DictMCVal.has_key( 'Method' ) ):
- Methode = self.DictMCVal[ 'Method' ]
-
- Traitement = None
- if ( subDict.has_key( Methode ) ):
- Traitement = subDict[ Methode ]
-
- if ( Traitement is not None ):
- txt += "# Etude 'Central Uncertainty'\n"
- txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
-
- txt += self.Footer()
- return txt
-
-
- def TaylorVarianceDecomposition (self):
- '''
- Etude par decomposition de Taylor
- '''
- txt = "# Cumul quadratique (decomposition de Taylor)\n"
- txt += "%s = QuadraticCumul( %s )\n" % (self.variable["myQuadraticCumul"], self.variable["outputRandomVector"])
- txt += "\n"
- txt += "# Resultats\n"
-
- if ( self.DictMCVal.has_key( 'MeanFirstOrder' ) ):
- if ( self.DictMCVal[ 'MeanFirstOrder' ] == "yes" ):
- txt += "%s = %s.getMeanFirstOrder()\n" % (self.variable["meanFirstOrder"], self.variable["myQuadraticCumul"])
- txt += "print '%s = ', %s\n" % ("mean First Order", self.variable["meanFirstOrder"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'MeanSecondOrder' ) ):
- if ( self.DictMCVal[ 'MeanSecondOrder' ] == "yes" ):
- txt += "%s = %s.getMeanSecondOrder()\n" % (self.variable["meanSecondOrder"], self.variable["myQuadraticCumul"])
- txt += "print '%s = ', %s\n" % ("mean Second Order", self.variable["meanSecondOrder"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'StandardDeviationFirstOrder' ) ):
- if ( self.DictMCVal[ 'StandardDeviationFirstOrder' ] == "yes" ):
- txt += "%s = %s.getCovariance()\n" % (self.variable["standardDeviationFirstOrder"], self.variable["myQuadraticCumul"])
- txt += "dim = %s.getDimension()\n" % self.variable["standardDeviationFirstOrder"]
- txt += "for i in range( dim ):\n"
- txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"])
- txt += " print '%s = ', %s[ i, i ]\n" % ("standard Deviation First Order", self.variable["standardDeviationFirstOrder"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'ImportanceFactor' ) ):
- if ( self.DictMCVal[ 'ImportanceFactor' ] == "yes" ):
- txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myQuadraticCumul"])
- txt += "for i in range(%s.getDimension()):\n" % self.variable["importanceFactors"]
- txt += " print %s.getDescription()[i], ':', %s[i]*100., '%%'\n" % (self.variable["distribution"], self.variable["importanceFactors"])
- txt += "\n"
- txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myQuadraticCumul"])
- txt += "%s = '%s'\n" % (self.variable["importanceFactorsDrawing"], self.DictMCVal[ 'ImportanceFactorDrawingFilename' ])
- txt += "%s.draw( %s )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"])
- txt += "#if is_xserver_available():\n"
- txt += "# view = View(%s)\n" % self.variable["importanceFactorsGraph"]
- txt += "# view.show(block=True)\n"
- txt += "#else:\n"
- txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["importanceFactorsGraph"]
- txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["importanceFactorsGraph"]
- txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["importanceFactorsGraph"]
- txt += "\n"
-
- txt += "\n"
- return txt
-
- def CentralUncertaintyRandomSampling (self):
- '''
- Etude par echantillonage aleatoire
- '''
- size = 0
- if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
- size = self.DictMCVal[ 'SimulationsNumber' ]
-
- txt = "# Echantillonnage aleatoire de la variable de sortie\n"
- txt += "%s = %d\n" % (self.variable["inSize"], size)
- txt += "%s = %s.getSample( %s )\n" % (self.variable["inputSample"], self.variable["inputRandomVector"], self.variable["inSize"])
- txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"])
- txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
- txt += " raise Exception('Some computations failed')\n"
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'EmpiricalMean' ) ):
- if ( self.DictMCVal[ 'EmpiricalMean' ] == "yes" ):
- txt += "%s = %s.computeMean()\n" % (self.variable["empiricalMean"], self.variable["outputSample"])
- txt += "print '%s =', %s[0]\n" % ("empirical Mean", self.variable["empiricalMean"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'EmpiricalStandardDeviation' ) ):
- if ( self.DictMCVal[ 'EmpiricalStandardDeviation' ] == "yes" ):
- txt += "%s = %s.computeCovariance()\n" % (self.variable["empiricalStandardDeviation"], self.variable["outputSample"])
- txt += "dim = %s.getDimension()\n" % self.variable["empiricalStandardDeviation"]
- txt += "for i in range( dim ):\n"
- txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"])
- txt += " print '%s = ', %s[ i, i ]\n" % ("empirical Standard Deviation", self.variable["empiricalStandardDeviation"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'EmpiricalQuantile_Order' ) ):
- ordre = self.DictMCVal[ 'EmpiricalQuantile_Order' ]
- txt += "%s = %s.computeQuantile( %s )\n" % (self.variable["empiricalQuantile"], self.variable["outputSample"], ordre)
- txt += "print '%s ( %s ) =', %s\n" % ("empirical Quantile", ordre, self.variable["empiricalQuantile"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'CorrelationAnalysis' ) ):
- if ( self.DictMCVal[ 'CorrelationAnalysis' ] == "yes" ):
- txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"]
- txt += " %s = CorrelationAnalysis.PCC( %s, %s )\n" % (self.variable["PCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
- txt += " print 'PCC Coefficients:'\n"
- txt += " for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["PCCcoefficient"])
- txt += "\n"
- txt += " %s = CorrelationAnalysis.PRCC( %s, %s )\n" % (self.variable["PRCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
- txt += " print 'PRCC Coefficients:'\n"
- txt += " for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["PRCCcoefficient"])
- txt += "\n"
- txt += " %s = CorrelationAnalysis.SRC( %s, %s )\n" % (self.variable["SRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
- txt += " print 'SRC Coefficients:'\n"
- txt += " for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["SRCcoefficient"])
- txt += "\n"
- txt += " %s = CorrelationAnalysis.SRRC( %s, %s )\n" % (self.variable["SRRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
- txt += " print 'SRRC Coefficients:'\n"
- txt += " for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["SRRCcoefficient"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'KernelSmoothing' ) ):
- if ( self.DictMCVal[ 'KernelSmoothing' ] == "yes" ):
- txt += "# Kernel Smoohing\n"
- txt += "%s = KernelSmoothing()\n" % self.variable["kernel"]
- txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"]
- txt += " %s.setName( 'Output' )\n" % self.variable["outputSample"]
- txt += " %s = %s.build( %s, 'TRUE')\n" % (self.variable["kernelSmoothedDist"], self.variable["kernel"], self.variable["outputSample"])
- txt += " %s = %s.drawPDF()\n" % (self.variable["kernelSmoothedGraph"], self.variable["kernelSmoothedDist"])
- txt += " %s = '%s'\n" % (self.variable["kernelSmoothedPDFDrawing"], self.DictMCVal[ 'KernelSmoothingDrawingFilename' ])
- txt += " %s.draw( %s )\n" % (self.variable["kernelSmoothedGraph"], self.variable["kernelSmoothedPDFDrawing"])
- txt += " #if is_xserver_available():\n"
- txt += " # view = View(%s)\n" % self.variable["kernelSmoothedGraph"]
- txt += " # view.show(block=True)\n"
- txt += " #else:\n"
- txt += " # print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["kernelSmoothedGraph"]
- txt += " print 'bitmap =', %s.getBitmap()\n" % self.variable["kernelSmoothedGraph"]
- txt += " print 'postscript =', %s.getPostscript()\n" % self.variable["kernelSmoothedGraph"]
- txt += "\n"
-
- return txt
-
- def ThresholdExceedence (self, subDict):
- '''
- Produit le fichier study correspondant a une analyse de depassement de seuil
- '''
- txt = self.Header()
- txt += "# Etude 'Threshold Exceedence'\n"
-
- txt += self.RandomGenerator()
- txt += self.Model()
- txt += self.InputDistribution()
- txt += self.InputRandomVector()
- txt += self.OutputRandomVector()
- txt += self.Event()
-
- Methode = None
- if ( self.DictMCVal.has_key( 'Method' ) ):
- Methode = self.DictMCVal[ 'Method' ]
-
- Traitement = None
- if ( subDict.has_key( Methode ) ):
- Traitement = subDict[ Methode ]
-
- if ( Traitement is not None ):
- txt += apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
-
- txt += self.Footer()
- return txt
-
- def Simulation (self, subDict):
- '''
- Methodes de simulation
- '''
- Algorithme = None
- if ( self.DictMCVal.has_key( 'Algorithm' ) ):
- Algorithme = self.DictMCVal[ 'Algorithm' ]
-
- Traitement = None
- if ( subDict.has_key( Algorithme ) ):
- Traitement = subDict[ Algorithme ]
-
- if ( Traitement is not None ):
- txt = apply( STDGenerateur.__dict__[ Traitement ], (self,) )
-
- maxOuterSampling = None
- if ( self.DictMCVal.has_key( 'MaximumOuterSampling' ) ):
- maxOuterSampling = self.DictMCVal[ 'MaximumOuterSampling' ]
- txt += "%s.setMaximumOuterSampling( %s )\n" % (self.variable["myAlgo"], maxOuterSampling)
-
- blockSize = None
- if ( self.DictMCVal.has_key( 'BlockSize' ) ):
- blockSize = self.DictMCVal[ 'BlockSize' ]
- txt += "%s.setBlockSize( %s )\n" % (self.variable["myAlgo"], blockSize)
-
- maxCoefficientOfVariation = None
- if ( self.DictMCVal.has_key( 'MaximumCoefficientOfVariation' ) ):
- maxCoefficientOfVariation = self.DictMCVal[ 'MaximumCoefficientOfVariation' ]
- txt += "%s.setMaximumCoefficientOfVariation( %s )\n" % (self.variable["myAlgo"], maxCoefficientOfVariation)
-
- txt += "%s.run()\n" % self.variable["myAlgo"]
- txt += "\n"
- txt += "# Resultats de la simulation\n"
- txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'Probability' ) ):
- if ( self.DictMCVal[ 'Probability' ] == "yes" ):
- txt += "%s = %s.getProbabilityEstimate()\n" % (self.variable["probability"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("probability", self.variable["probability"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'StandardDeviation' ) ):
- if ( self.DictMCVal[ 'StandardDeviation' ] == "yes" ):
- txt += "%s = math.sqrt( %s.getProbabilityEstimate() )\n" % (self.variable["standardDeviation"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("standard Deviation", self.variable["standardDeviation"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'ConfidenceInterval' ) and self.DictMCVal.has_key( 'Probability' ) ):
- if ( ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) and ( self.DictMCVal[ 'Probability' ] == "yes" ) ):
- level = self.DictMCVal[ 'Level' ]
- txt += "%s = %s.getConfidenceLength( %s )\n" % (self.variable["length"], self.variable["myResult"], level)
- txt += "print 'confidence interval at %s = [', %s-0.5*%s, ',', %s+0.5*%s, ']'\n" % (level, self.variable["probability"], self.variable["length"], self.variable["probability"], self.variable["length"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'VariationCoefficient' ) ):
- if ( self.DictMCVal[ 'VariationCoefficient' ] == "yes" ):
- txt += "%s = %s.getCoefficientOfVariation()\n" % (self.variable["coefficientOfVariation"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("coefficient of Variation", self.variable["coefficientOfVariation"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
- if ( self.DictMCVal[ 'SimulationsNumber' ] == "yes" ):
- txt += "%s = %s.getOuterSampling()\n" % (self.variable["simulationNumbers"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("simulation Numbers", self.variable["simulationNumbers"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'ConvergenceGraph' ) and self.DictMCVal.has_key( 'ConfidenceInterval' ) ):
- if ( ( self.DictMCVal[ 'ConvergenceGraph' ] == "yes" ) and ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) ):
- txt += "%s = %s\n" % (self.variable["alpha"], self.DictMCVal[ 'Level' ])
- txt += "%s = %s.drawProbabilityConvergence( %s )\n" % (self.variable["convergenceGraph"], self.variable["myAlgo"], self.variable["alpha"])
- txt += "%s = '%s'\n" % (self.variable["convergenceDrawing"], self.DictMCVal[ 'ConvergenceDrawingFilename' ])
- txt += "%s.draw( %s )\n" % (self.variable["convergenceGraph"], self.variable["convergenceDrawing"])
- txt += "#if is_xserver_available():\n"
- txt += "# view = View(%s)\n" % self.variable["convergenceGraph"]
- txt += "# view.show(block=True)\n"
- txt += "#else:\n"
- txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["convergenceGraph"]
- txt += "\n"
-
- return txt
-
- def Analytical (self, subDict):
- '''
- Methodes analytiques
- '''
- txt = ""
-
- OptimizationAlgo = None
- if ( self.DictMCVal.has_key( 'OptimizationAlgorithm' ) ):
- OptimizationAlgo = self.DictMCVal[ 'OptimizationAlgorithm' ]
-
- Traitement = None
- if ( subDict.has_key( OptimizationAlgo ) ):
- Traitement = subDict[ OptimizationAlgo ]
-
- if ( Traitement is not None ):
- txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
-
- txt += self.OptimizerSettings()
- txt += self.PhysicalStartingPoint()
-
- Approximation = None
- if ( self.DictMCVal.has_key( 'Approximation' ) ):
- Approximation = self.DictMCVal[ 'Approximation' ]
-
- Traitement = None
- if ( subDict.has_key( Approximation ) ):
- Traitement = subDict[ Approximation ]
-
- if ( Traitement is not None ):
- txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
-
- txt += self.RunAlgorithm()
- txt += self.AnalyticalResult()
-
- return txt
-
- def OptimizerSettings (self):
- '''
- Parametrage de l optimiseur
- '''
- txt = ""
-
- simulationNumbers = None
- if ( self.DictMCVal.has_key( 'MaximumIterationsNumber' ) ):
- simulationNumbers = self.DictMCVal[ 'MaximumIterationsNumber' ]
- txt += "%s.setMaximumIterationsNumber( %s )\n" % (self.variable["myOptimizer"], simulationNumbers)
-
- absoluteError = None
- if ( self.DictMCVal.has_key( 'MaximumAbsoluteError' ) ):
- absoluteError = self.DictMCVal[ 'MaximumAbsoluteError' ]
- txt += "%s.setMaximumAbsoluteError( %s )\n" % (self.variable["myOptimizer"], absoluteError)
-
- relativeError = None
- if ( self.DictMCVal.has_key( 'MaximumRelativeError' ) ):
- relativeError = self.DictMCVal[ 'MaximumRelativeError' ]
- txt += "%s.setMaximumRelativeError( %s )\n" % (self.variable["myOptimizer"], relativeError)
-
- residualError = None
- if ( self.DictMCVal.has_key( 'MaximumResidualError' ) ):
- residualError = self.DictMCVal[ 'MaximumResidualError' ]
- txt += "%s.setMaximumResidualError( %s )\n" % (self.variable["myOptimizer"], residualError)
-
- constraintError = None
- if ( self.DictMCVal.has_key( 'MaximumConstraintError' ) ):
- constraintError = self.DictMCVal[ 'MaximumConstraintError' ]
- txt += "%s.setMaximumConstraintError( %s )\n" % (self.variable["myOptimizer"], constraintError)
-
- txt += "\n"
-
- return txt
-
- def PhysicalStartingPoint (self):
- '''
- Point physique de depart
- '''
- txt = "# Point physique de depart\n"
-
- if ( self.DictMCVal.has_key( 'PhysicalStartingPoint' ) ):
- point = self.DictMCVal[ 'PhysicalStartingPoint' ]
- dimension = len( point )
- txt += "%s = NumericalPoint( %d )\n" % (self.variable["startingPoint"], dimension)
- for i in range( dimension ):
- txt += "%s[ %d ] = %g\n" % (self.variable["startingPoint"], i, point[i])
- else:
- txt += "%s = %s.getMean()\n" % (self.variable["startingPoint"], self.variable["inputRandomVector"])
-
- txt += "\n"
-
- return txt
-
- def AnalyticalResult (self):
- '''
- Resultat des methodes analytiques
- '''
- txt = "# Resultat des methodes analytiques\n"
- txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"])
-
- if ( self.DictMCVal.has_key( 'Probability' ) ):
- if ( self.DictMCVal[ 'Probability' ] == "yes" ):
- txt += "%s = %s.getEventProbability()\n" % (self.variable["probability"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'HasoferReliabilityIndex' ) ):
- if ( self.DictMCVal[ 'HasoferReliabilityIndex' ] == "yes" ):
- txt += "%s = %s.getHasoferReliabilityIndex()\n" % (self.variable["hasoferReliabilityIndex"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("hasofer Reliability Index", self.variable["hasoferReliabilityIndex"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'DesignPoint' ) ):
- if ( self.DictMCVal[ 'DesignPoint' ] == "yes" ):
- txt += "%s = %s.getStandardSpaceDesignPoint()\n" % (self.variable["standardSpaceDesignPoint"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("standard Space Design Point", self.variable["standardSpaceDesignPoint"])
- txt += "%s = %s.getPhysicalSpaceDesignPoint()\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("physical Space Design Point", self.variable["physicalSpaceDesignPoint"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'ImportanceFactor' ) ):
- if ( self.DictMCVal[ 'ImportanceFactor' ] == "yes" ):
- txt += "print 'Importance Factors:'\n"
- txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myResult"])
- txt += "for i in range(%s.getDimension()):\n" % self.variable["importanceFactors"]
- txt += " print %s.getDescription()[i], ':', %s[i]*100., '%%'\n" % (self.variable["distribution"], self.variable["importanceFactors"])
- txt += "\n"
- txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myResult"])
- txt += "%s = '%s'\n" % (self.variable["importanceFactorsDrawing"], self.DictMCVal[ 'ImportanceFactorDrawingFilename' ])
- txt += "%s.draw( %s )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"])
- txt += "#if is_xserver_available():\n"
- txt += "# view = View(%s)\n" % self.variable["importanceFactorsGraph"]
- txt += "# view.show(block=True)\n"
- txt += "#else:\n"
- txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["importanceFactorsGraph"]
- txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["importanceFactorsGraph"]
- txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["importanceFactorsGraph"]
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivity' ) ):
- if ( self.DictMCVal[ 'FORMEventProbabilitySensitivity' ] == "yes" ):
- txt += "%s = %s.getEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivity"], self.variable["myResult"])
- txt += "print 'FORM Event Probability Sensitivity:'\n"
- txt += "for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':'\n" % self.variable["distribution"]
- txt += " for j in range( %s[i].getDimension() ):\n" % self.variable["eventProbabilitySensitivity"]
- txt += " print ' ', %s[i].getDescription()[j], ':', %s[i][j]\n" % (self.variable["eventProbabilitySensitivity"], self.variable["eventProbabilitySensitivity"])
- txt += "\n"
- txt += "%s = %s.drawEventProbabilitySensitivity()[0]\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["myResult"])
- txt += "%s = '%s'\n" % (self.variable["eventProbabilitySensitivityDrawing"], self.DictMCVal[ 'FORMEventProbabilitySensitivityDrawingFilename' ])
- txt += "%s.draw( %s )\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["eventProbabilitySensitivityDrawing"])
- txt += "#if is_xserver_available():\n"
- txt += "# view = View(%s)\n" % self.variable["eventProbabilitySensitivityGraph"]
- txt += "# view.show(block=True)\n"
- txt += "#else:\n"
- txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["eventProbabilitySensitivityGraph"]
- txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["eventProbabilitySensitivityGraph"]
- txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["eventProbabilitySensitivityGraph"]
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivity' ) ):
- if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivity' ] == "yes" ):
- txt += "%s = %s.getHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["myResult"])
- txt += "print 'Hasofer Reliability Index Sensitivity:'\n"
- txt += "for i in range( %s ):\n" % self.variable["n"]
- txt += " print %s.getDescription()[i], ':'\n" % self.variable["distribution"]
- txt += " for j in range( %s[i].getDimension() ):\n" % self.variable["hasoferReliabilityIndexSensitivity"]
- txt += " print ' ', %s[i].getDescription()[j], ':', %s[i][j]\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["hasoferReliabilityIndexSensitivity"])
- txt += "\n"
- txt += "%s = %s.drawHasoferReliabilityIndexSensitivity()[0]\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["myResult"])
- txt += "%s = '%s'\n" % (self.variable["hasoferReliabilityIndexSensitivityDrawing"], self.DictMCVal[ 'HasoferReliabilityIndexSensitivityDrawingFilename' ])
- txt += "%s.draw( %s )\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["hasoferReliabilityIndexSensitivityDrawing"])
- txt += "#if is_xserver_available():\n"
- txt += "# view = View(%s)\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
- txt += "# view.show(block=True)\n"
- txt += "#else:\n"
- txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
- txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
- txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'TvedtApproximation' ) ):
- if ( self.DictMCVal[ 'TvedtApproximation' ] == "yes" ):
- txt += "%s = %s.getEventProbabilityTvedt()\n" % (self.variable["tvedtApproximation"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("Tvedt Approximation", self.variable["tvedtApproximation"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'HohenBichlerApproximation' ) ):
- if ( self.DictMCVal[ 'HohenBichlerApproximation' ] == "yes" ):
- txt += "%s = %s.getEventProbabilityHohenBichler()\n" % (self.variable["hohenBichlerApproximation"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("HohenBichler Approximation", self.variable["tvedtApproximation"])
- txt += "\n"
-
- if ( self.DictMCVal.has_key( 'BreitungApproximation' ) ):
- if ( self.DictMCVal[ 'BreitungApproximation' ] == "yes" ):
- txt += "%s = %s.getEventProbabilityBreitung()\n" % (self.variable["breitungApproximation"], self.variable["myResult"])
- txt += "print '%s =', %s\n" % ("Breitung Approximation", self.variable["breitungApproximation"])
- txt += "\n"
-
-
- return txt
-
- def RandomGenerator (self):
- '''
- Generateur Aleatoire
- '''
- txt = ""
-
- seed = None
- if ( self.DictMCVal.has_key( 'RandomGeneratorSeed' ) ):
- seed = self.DictMCVal[ 'RandomGeneratorSeed' ]
- txt += "# Initialise le generateur aleatoire\n"
- txt += "RandomGenerator.SetSeed( %s )\n" % seed
- txt += "\n"
-
- return txt
-
- def Event (self):
- '''
- Definition de l evenement de defaillance
- '''
- operator = None
- if ( self.DictMCVal.has_key( 'ComparisonOperator' ) ):
- operator = self.DictMCVal[ 'ComparisonOperator' ]
-
- threshold = None
- if ( self.DictMCVal.has_key( 'Threshold' ) ):
- threshold = self.DictMCVal[ 'Threshold' ]
-
- txt = "# Evenement de defaillance\n"
- txt += "%s = Event( %s, ComparisonOperator( %s() ), %s )\n" % (self.variable["myEvent"], self.variable["outputRandomVector"], operator, threshold)
- txt += "%s.setName( '%s' )\n" % (self.variable["myEvent"], "myEvent")
- txt += "\n"
- return txt
-
- def MonteCarlo (self):
- '''
- Methode de MonteCarlo
- '''
- txt = "# Simulation par MonteCarlo\n"
- txt += "%s = MonteCarlo( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"])
- txt += "\n"
-
- return txt
-
- def LHS (self):
- '''
- Methode LHS
- '''
- txt = "# Simulation par LHS\n"
- txt += "%s = LHS( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"])
- txt += "\n"
-
- return txt
-
- def ImportanceSampling (self):
- '''
- Methode de tirage d importance
- '''
- dimension = 0
- if ( self.DictMCVal.has_key( 'MeanVector' ) ):
- meanVector = self.DictMCVal[ 'MeanVector' ]
- dimension = len( meanVector )
-
- txt = "# Simulation par Tirage d'importance\n"
- txt += "# Densite d'importance\n"
- txt += "%s = NumericalPoint( %s )\n" % (self.variable["meanVector"], self.variable["n"])
- for i in range(dimension):
- txt += "%s[%d] = %g\n" % (self.variable["meanVector"], i, meanVector[i])
-
- txt += "%s = Normal( %s, CovarianceMatrix( IdentityMatrix( %s ) ) )\n" % (self.variable["importanceDensity"], self.variable["meanVector"], self.variable["n"])
- txt += "%s = ImportanceSampling( %s, Distribution( %s ) )\n" % (self.variable["myAlgo"], self.variable["myEvent"], self.variable["importanceDensity"])
- txt += "\n"
-
- return txt
-
- def FORM (self):
- '''
- Methode FORM
- '''
- txt = "# Algorithme FORM\n"
- txt += "%s = FORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
- txt += "\n"
-
- return txt
-
- def SORM (self):
- '''
- Methode SORM
- '''
- txt = "# Algorithme SORM\n"
- txt += "%s = SORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
- txt += "\n"
-
- return txt
-
- def RunAlgorithm (self):
- '''
- Do the computation
- '''
- txt = ""
- if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
- if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
- txt += "%s = %s.getEvaluationCallsNumber()\n" % (self.variable["modelEvaluationCalls"], self.variable["model"])
- txt += "%s = %s.getGradientCallsNumber()\n" % (self.variable["modelGradientCalls"], self.variable["model"])
- txt += "%s = %s.getHessianCallsNumber()\n" % (self.variable["modelHessianCalls"], self.variable["model"])
- txt += "\n"
-
- txt += "# Perform the computation\n"
- txt += "%s.run()\n" % self.variable["myAlgo"]
- txt += "\n"
-
-
- if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
- if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
- txt += "%s = %s.getEvaluationCallsNumber() - %s\n" % (self.variable["modelEvaluationCalls"], self.variable["model"], self.variable["modelEvaluationCalls"])
- txt += "%s = %s.getGradientCallsNumber() - %s\n" % (self.variable["modelGradientCalls"], self.variable["model"], self.variable["modelGradientCalls"])
- txt += "%s = %s.getHessianCallsNumber() - %s\n" % (self.variable["modelHessianCalls"], self.variable["model"], self.variable["modelHessianCalls"])
- txt += "\n"
- txt += "print '%s =', %s\n" % ("model Evaluation Calls", self.variable["modelEvaluationCalls"])
- txt += "print '%s =', %s\n" % ("model Gradient Calls", self.variable["modelGradientCalls"])
- txt += "print '%s =', %s\n" % ("model Hessian Calls", self.variable["modelHessianCalls"])
- txt += "\n"
-
- return txt
-
- def Cobyla (self):
- '''
- Methode Cobyla
- '''
- txt = "# Optimisation par Cobyla\n"
- txt += "%s = Cobyla()\n" % self.variable["myOptimizer"]
- txt += "#%s = CobylaSpecificParameters()\n" % self.variable["specificParameters"]
- txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
- txt += "\n"
-
- return txt
-
- def AbdoRackwitz (self):
- '''
- Methode AbdoRackwitz
- '''
- txt = "# Optimisation par AbdoRackwitz\n"
- txt += "%s = AbdoRackwitz()\n" % self.variable["myOptimizer"]
- txt += "#%s = AbdoRackwitzSpecificParameters()\n" % self.variable["specificParameters"]
- txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
- txt += "\n"
- return txt
-
- def Beta (self, loi):
- '''
- Definition de la loi Beta
- '''
- settings = {
- "RT" : "Beta.RT",
- "MuSigma" : "Beta.MUSIGMA",
- }
- if loi[ 'Settings' ] == 'RT' :
- arg1 = loi[ 'R' ]
- arg2 = loi[ 'T' ]
- else :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
-
- arg3 = loi[ 'A' ]
- arg4 = loi[ 'B' ]
- txt = "Beta( %g, %g, %g, %g, %s )" % (arg1, arg2, arg3, arg4, settings[ loi[ 'Settings' ] ])
- return txt
-
- def Exponential (self, loi):
- '''
- Definition de la loi Exponential
- '''
- arg1 = loi[ 'Lambda' ]
- arg2 = loi[ 'Gamma' ]
- txt = "Exponential( %g, %g )" % (arg1, arg2)
- return txt
-
- def Gamma (self, loi):
- '''
- Definition de la loi Gamma
- '''
- settings = {
- "KLambda" : "Gamma.KLAMBDA",
- "MuSigma" : "Gamma.MUSIGMA",
- }
- if loi[ 'Settings' ] == 'KLambda' :
- arg1 = loi[ 'K' ]
- arg2 = loi[ 'Lambda' ]
- else :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
-
- arg3 = loi[ 'Gamma' ]
- txt = "Gamma( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
- return txt
-
- def Geometric (self, loi):
- '''
- Definition de la loi Geometric
- '''
- txt = "Geometric( %g )" % loi[ 'P' ]
- return txt
-
- def Gumbel (self, loi):
- '''
- Definition de la loi Gumbel
- '''
- settings = {
- "AlphaBeta" : "Gumbel.ALPHABETA",
- "MuSigma" : "Gumbel.MUSIGMA",
- }
- if loi[ 'Settings' ] == 'AlphaBeta' :
- arg1 = loi[ 'Alpha' ]
- arg2 = loi[ 'Beta' ]
- else :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
-
- txt = "Gumbel( %g, %g, %s )" % (arg1, arg2, settings[ loi[ 'Settings' ] ])
- return txt
-
- def Histogram (self, loi):
- '''
- Definition de la loi Histogram
- '''
- arg1 = loi[ 'First' ]
- arg2 = loi[ 'Values' ]
- txt = "Histogram( %g, %s )" % (arg1, arg2)
- return txt
-
- def Laplace (self, loi):
- '''
- Definition de la loi Laplace
- '''
- arg1 = loi[ 'Lambda' ]
- arg2 = loi[ 'Mu' ]
- txt = "Laplace( %g, %g )" % (arg1, arg2)
- return txt
-
- def Logistic (self, loi):
- '''
- Definition de la loi Logistic
- '''
- arg1 = loi[ 'Alpha' ]
- arg2 = loi[ 'Beta' ]
- txt = "Logistic( %g, %g )" % (arg1, arg2)
- return txt
-
- def LogNormal (self, loi):
- '''
- Definition de la loi LogNormal
- '''
- settings = {
- "MuSigmaLog" : "LogNormal.MUSIGMA_LOG",
- "MuSigma" : "LogNormal.MUSIGMA",
- "MuSigmaOverMu" : "LogNormal.MU_SIGMAOVERMU",
- }
- if loi[ 'Settings' ] == 'MuSigmaLog' :
- arg1 = loi[ 'MuLog' ]
- arg2 = loi[ 'SigmaLog' ]
- elif loi[ 'Settings' ] == 'MuSigmaOverMu' :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'SigmaOverMu' ]
- else :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
-
- arg3 = loi[ 'Gamma' ]
- txt = "LogNormal( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
- return txt
-
- def MultiNomial (self, loi):
- '''
- Definition de la loi MultiNomial
- '''
- arg1 = loi[ 'Values' ]
- arg2 = loi[ 'N' ]
- txt = "MultiNomial( NumericalPoint( %s ) , %d)" % (arg1, arg2)
- return txt
-
- def NonCentralStudent (self, loi):
- '''
- Definition de la loi NonCentralStudent
- '''
- arg1 = loi[ 'Nu' ]
- arg2 = loi[ 'Delta' ]
- arg3 = loi[ 'Gamma' ]
- txt = "NonCentralStudent( %g, %g )" % (arg1, arg2, arg3)
- return txt
-
- def Normal (self, loi):
- '''
- Definition de la loi Normal
- '''
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
- txt = "Normal( %g, %g )" % (arg1, arg2)
- return txt
-
- def TruncatedNormal (self, loi):
- '''
- Definition de la loi TruncatedNormal
- '''
- arg1 = loi[ 'MuN' ]
- arg2 = loi[ 'SigmaN' ]
- arg3 = loi[ 'A' ]
- arg4 = loi[ 'B' ]
- txt = "TruncatedNormal( %g, %g, %g, %g )" % (arg1, arg2, arg3, arg4)
- return txt
-
- def Poisson (self, loi):
- '''
- Definition de la loi Poisson
- '''
- txt = "Poisson( %g )" % loi[ 'Lambda' ]
- return txt
-
- def Rayleigh (self, loi):
- '''
- Definition de la loi Rayleigh
- '''
- arg1 = loi[ 'Sigma' ]
- arg2 = loi[ 'Gamma' ]
- txt = "Rayleigh( %g, %g )" % (arg1, arg2)
- return txt
-
- def Student (self, loi):
- '''
- Definition de la loi Student
- '''
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Nu' ]
- arg3 = loi[ 'Sigma' ]
- txt = "Student( %g, %g, %g )" % (arg1, arg2, arg3)
- return txt
-
- def Triangular (self, loi):
- '''
- Definition de la loi Triangular
- '''
- arg1 = loi[ 'A' ]
- arg2 = loi[ 'M' ]
- arg3 = loi[ 'B' ]
- txt = "Triangular( %g, %g, %g )" % (arg1, arg2, arg3)
- return txt
-
- def Uniform (self, loi):
- '''
- Definition de la loi Uniform
- '''
- arg1 = loi[ 'A' ]
- arg2 = loi[ 'B' ]
- txt = "Uniform( %g, %g )" % (arg1, arg2)
- return txt
-
- def UserDefined (self, loi):
- '''
- Definition de la loi UserDefined
- '''
- txt = "** UserDefined not defined yet **"
- return txt
-
- def Weibull (self, loi):
- '''
- Definition de la loi Weibull
- '''
- settings = {
- "AlphaBeta" : "Weibull.ALPHABETA",
- "MuSigma" : "Weibull.MUSIGMA",
- }
- if loi[ 'Settings' ] == 'AlphaBeta' :
- arg1 = loi[ 'Alpha' ]
- arg2 = loi[ 'Beta' ]
- else :
- arg1 = loi[ 'Mu' ]
- arg2 = loi[ 'Sigma' ]
-
- arg3 = loi[ 'Gamma' ]
- txt = "Weibull( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
- return txt
-
-
-
- def GraphiquePDF (self, loi, chemin, fichier):
- '''
- Produit une image PNG representant la PDF de la loi
- '''
- txt = headerSTD % self.OpenTURNS_path
- txt += "dist = %s\n" % apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi) )
- txt += "graph = dist.drawPDF()\n"
- txt += "graph.draw( '%s/%s' , 640, 480, GraphImplementation.PNG)\n" % (chemin, fichier)
- txt += footerSTD
- return txt
-
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
-Ce module contient le generateur XML pour Openturns
-"""
-import sys
-print sys.path
-from Extensions.i18n import tr
-import openturns
-
-# Dictionnaires de conversion des valeurs lues dans EFICAS
-# en valeurs reconnues par Open TURNS
-# Les clefs 'None' sont les valeurs par defaut
-
-VariableTypeByName = {
- "in" : openturns.WrapperDataVariableType.IN,
- "out" : openturns.WrapperDataVariableType.OUT,
- None : openturns.WrapperDataVariableType.IN,
- }
-
-FileTypeByName = {
- "in" : openturns.WrapperDataFileType.IN,
- "out" : openturns.WrapperDataFileType.OUT,
- None : openturns.WrapperDataFileType.IN,
- }
-
-SymbolProvidedByName = {
- "no" : openturns.WrapperSymbolProvided.NO,
- "yes" : openturns.WrapperSymbolProvided.YES,
- None : openturns.WrapperSymbolProvided.NO,
- }
-
-WrapperStateByName = {
- "shared" : openturns.WrapperState.SHARED,
- "specific" : openturns.WrapperState.SPECIFIC,
- None : openturns.WrapperState.SPECIFIC,
- }
-
-WrapperModeByName = {
- "static-link" : openturns.WrapperMode.STATICLINK,
- "dynamic-link" : openturns.WrapperMode.DYNAMICLINK,
- "fork" : openturns.WrapperMode.FORK,
- None : openturns.WrapperMode.FORK,
- }
-
-WrapperDataTransferByName = {
- "files" : openturns.WrapperDataTransfer.FILES,
- "pipe" : openturns.WrapperDataTransfer.PIPE,
- "arguments" : openturns.WrapperDataTransfer.ARGUMENTS,
- "socket" : openturns.WrapperDataTransfer.SOCKET,
- "corba" : openturns.WrapperDataTransfer.CORBA,
- None : openturns.WrapperDataTransfer.FILES,
- }
-
-#==========================
-# La classe de creation XML
-#==========================
-
-class XMLGenerateur :
-
- '''
- Generation du fichier XML
- '''
- def __init__ (self, appli, DictMCVal, DictVariables ) :
- self.DictMCVal = DictMCVal
- self.DictVariables = DictVariables
- self.appli = appli
-
- def CreeXML (self) :
- '''
- Pilotage general de la creation du fichier XML
- '''
- data = openturns.WrapperData()
- data.setLibraryPath( self.GetMCVal('WrapperPath','') )
- data.setVariableList( self.VariableList() )
- data.setFunctionDescription( self.FunctionDefinition() )
- data.setGradientDescription( self.GradientDefinition() )
- data.setHessianDescription( self.HessianDefinition() )
- data.setFileList( self.FileList() )
- data.setParameters( self.Parameters() )
- #data.setFrameworkData( self.FrameworkData() )
-
- wrapper=openturns.WrapperFile()
- wrapper.setWrapperData( data )
-
- return wrapper
-
-
- class __variable_ordering:
- def __init__ (self, dictVar) :
- self.dictVar = dictVar
-
- def __call__(self, a, b):
- return self.dictVar[a]['numOrdre'] - self.dictVar[b]['numOrdre']
-
- def VariableList (self) :
- '''
- Ecrit la liste des variables
- '''
- varList = openturns.WrapperDataVariableCollection()
- for var in sorted( self.DictVariables.keys(), self.__variable_ordering( self.DictVariables ) ) :
- varList.add( self.Variable( var, self.DictVariables[var] ) )
- return varList
-
- def Variable (self, var, dictVar) :
- '''
- Ecrit le parametrage d une variable
- '''
- variable = openturns.WrapperDataVariable()
- variable.id_ = var
- if dictVar[ 'Type' ] in VariableTypeByName.keys() :
- variable.type_ = VariableTypeByName[ dictVar[ 'Type' ] ]
- if dictVar.has_key('Comment') : variable.comment_ = dictVar[ 'Comment' ]
- if dictVar.has_key('Unit') : variable.unit_ = dictVar[ 'Unit' ]
- if dictVar.has_key('Regexp') : variable.regexp_ = dictVar[ 'Regexp' ]
- if dictVar.has_key('Format') : variable.format_ = dictVar[ 'Format' ]
- return variable
-
- def FunctionDefinition (self) :
- '''
- Ecrit la description de la Fonction
- '''
- func = openturns.WrapperFunctionDescription()
- func.name_ = self.GetMCVal( 'FunctionName', '' )
- if (len(func.name_) != 0) : func.provided_ = SymbolProvidedByName[ 'yes' ]
- return func
-
- def GradientDefinition (self) :
- '''
- Ecrit la description du Gradient
- '''
- grad = openturns.WrapperFunctionDescription()
- grad.name_ = self.GetMCVal( 'GradientName', '' )
- if (len(grad.name_) != 0) : grad.provided_ = SymbolProvidedByName[ 'yes' ]
- return grad
-
- def HessianDefinition (self) :
- '''
- Ecrit la description de la Hessienne
- '''
- hess = openturns.WrapperFunctionDescription()
- hess.name_ = self.GetMCVal( 'HessianName', '' )
- if (len(hess.name_) != 0) : hess.provided_ = SymbolProvidedByName[ 'yes' ]
- return hess
-
-
-
- def FileList (self) :
- '''
- Ecrit la liste des fichiers
- '''
- fileList = openturns.WrapperDataFileCollection()
- for dictFile in self.GetMCVal('Files', []) :
- fileList.add( self.File( dictFile ) )
- return fileList
-
- def File (self, dictFile ) :
- '''
- Ecrit le parametrage d un fichier
- '''
- fich = openturns.WrapperDataFile()
- fich.id_ = dictFile[ 'Id' ]
- if dictFile[ 'Type' ] in FileTypeByName.keys() :
- fich.type_ = FileTypeByName[ dictFile[ 'Type' ] ]
- if dictFile.has_key('Name') : fich.name_ = dictFile[ 'Name' ]
- if dictFile.has_key('Path') : fich.path_ = dictFile[ 'Path' ]
- if dictFile.has_key('Subst') :
- import string
- fich.subst_ = string.join( dictFile[ 'Subst' ], ',' )
- return fich
-
- def Parameters (self) :
- '''
- Ecrit les parametres de couplage au code externe
- '''
- parameters = openturns.WrapperParameter()
- parameters.mode_ = WrapperModeByName[ self.GetMCVal('WrapCouplingMode') ]
- if (parameters.mode_ == openturns.WrapperMode.FORK ):
- parameters.command_ = self.GetMCVal('Command')
- userPrefix = self.GetMCVal('UserPrefix', None)
- if userPrefix != None : parameters.userPrefix_ = userPrefix
- parameters.state_ = WrapperStateByName[ self.GetMCVal('State') ]
- parameters.in_ = WrapperDataTransferByName[ self.GetMCVal('InDataTransfer') ]
- parameters.out_ = WrapperDataTransferByName[ self.GetMCVal('OutDataTransfer') ]
- return parameters
-
- def FrameworkData (self) :
- '''
- Ecrit les donnees liees a l utilisation d un framework englobant
- '''
- framework = openturns.WrapperFrameworkData()
-# framework.studycase_ = "12:23:34"
-# framework.componentname_ = self.GetMCVal('SolverComponentName', 'UNDEFINED')
- CN = self.GetMCVal('SolverComponentName', 'UNDEFINED')
- print 'CN = %s', CN
- framework.componentname_ = CN
- return framework
-
-
- # ---------------------------------------------------------------------------------
-
-
- def GetTag (self, tag) :
- '''
- Recupere la chaine associee au tag dans la table dictTagsXML.
- Leve une exception si le tag n est pas trouve
- '''
- if ( dictTagsXML.has_key(tag) ) :
- return dictTagsXML[tag]
- else :
- raise KeyError, tr("Tag %s non-defini. Ceci est un bogue interne. en informer les developpeurs.", tag)
- pass
-
- def GetMCVal (self, MC, default = None, mandatory = False) :
- '''
- Recupere la chaine associee au MC dans la table DictMCVal.
- Leve une exception si le MC n est pas trouve et mandatory vaut True
- '''
- if ( self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None ) :
- return self.DictMCVal[MC]
- else :
- if ( mandatory ) :
- raise KeyError, tr(" Le mot-cle %s est obligatoire.", MC)
- else :
- return default
- pass
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- CARMEL3D pour EFICAS.
-
-"""
-import traceback
-import types,string,re,os
-from Extensions.i18n import tr
-from generator_python import PythonGenerator
-debut="""
-lqdkqmldk
-"""
-
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'Creation',
- # La factory pour creer une instance du plugin
- 'factory' : CreationGenerator,
- }
-
-
-class CreationGenerator(PythonGenerator):
- """
-
- """
- # Les extensions de fichier permis?
-
- def gener(self,obj,format='brut',config=None):
-
- self.initDico(obj)
- # Cette instruction genère le contenu du fichier de commandes (persistance)
- self.text=PythonGenerator.gener(self,obj,format)
- if obj.isvalid() : self.genereDescription()
- return self.text
-
-
- def genereParam(self):
- listeParam=[]
- for monParam in self.dictParam.keys():
- if self.dico.has_key(monParam) : continue
- listeParam.append(self.dictParam[monParam])
-
- if len(listeParam)== 0 : return
- try:
- jdcDict=self.jdc.jdcDict
- except:
- raise ValueError,tr("toutes les donnees ne sont pas connues")
- for param in listeParam:
- obj=None
- for etape in self.jdc.jdcDict.etapes:
- if str(etape.sdnom) != str(param) :
- continue
- obj=etape
- break
-
- if obj==None:
- raise ValueError,tr("toutes les donnees ne sont pas connues")
- return
-
- texteEtape=self.generETAPE(obj)
-
- def genereDescription(self) :
- '''
- '''
- self.texte=debut
- self.genereParam()
-
- def initDico(self,obj) :
- self.dicoCourant={}
- self.dico={}
- self.dictParam={}
- self.listeParam=[]
- self.jdc=obj.get_jdc_root()
- try :
- self.texte_jdc_aux=self.jdc.recorded_units[999]
- except :
- self.texte_jdc_aux=""
-
-
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en texte python
- Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
- """
-
- #print "MCSIMP", obj.nom, " ", obj.valeur
- from cree_map_cata import param_map
- if isinstance(obj.valeur,param_map):
- self.dicoCourant[obj.nom]=obj.valeur.nom
- self.dictParam[obj.valeur.nom]=obj.valeur
- else :
- self.dicoCourant[obj.nom]=obj.valeur
- s=PythonGenerator.generMCSIMP(self,obj)
- return s
-
- def generPROC_ETAPE(self,obj):
- self.dicoCourant={}
- s=PythonGenerator.generPROC_ETAPE(self,obj)
- self.dico[obj.nom]=self.dicoCourant
- return s
-
- def generETAPE(self,obj):
- #print "ETAPE", obj.nom, " ",obj.sdnom
- self.dicoCourant={}
- s=PythonGenerator.generETAPE(self,obj)
- self.dico[obj.sdnom]=self.dicoCourant
- return s
-
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- SEP pour EFICAS.
-
-"""
-import traceback
-import types,string,re,os
-
-from generator_python import PythonGenerator
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'SEP',
- # La factory pour creer une instance du plugin
- 'factory' : SEPGenerator,
- }
-
-
-class SEPGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format py
-
- """
- # Les extensions de fichier permis?
- extensions=('.comm',)
-
- def gener(self,obj,format='brut',config=None):
- self.initDico()
- # Cette instruction génère le contenu du fichier de commandes (persistance)
- self.text=PythonGenerator.gener(self,obj,format)
- # Cette instruction génère le contenu du fichier de paramètres python
- self.genereSEP()
- return self.text
-
- def getTubePy(self) :
- return self.texteTubePy
-
- def genereSEP(self) :
- '''
- Prépare le contenu du fichier de paramètres python. Le contenu
- peut ensuite être obtenu au moyen de la fonction getTubePy().
- '''
- #self.__genereSEP_withVariables()
- self.__genereSEP_withDico()
-
- def __genereSEP_withVariables(self) :
- '''
- Les paramètres sont transcrits sous forme de variables nom=valeur.
- '''
- self.texteTubePy="# Parametres generes par Eficas \n"
- for MC in self.dictMCVal.keys():
- ligne = MC +"="+ repr(self.dictMCVal[MC])+'\n'
- self.texteTubePy=self.texteTubePy+ligne
-
- print self.texteTubePy
-
- # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
- fichier=os.path.join(os.path.dirname(__file__),"tube.py")
- f=open(fichier,'r')
- for ligne in f.readlines():
- self.texteTubePy=self.texteTubePy+ligne
- f.close
-
- def __genereSEP_withDico(self) :
- """
- Les paramètres sont transcrits sous la forme d'un dictionnaire nom=valeur.
- """
- from Sep import properties
- self.texteTubePy="# -*- coding: utf-8 -*-\n"
- self.texteTubePy+="# ======================================================================================\n"
- self.texteTubePy+="# FICHIER GENERE PAR EFICAS - OUTIL MÉTIER SOUS-EPAISSEUR - "
- self.texteTubePy+="VERSION "+str(properties.version)+" du "+str(properties.date)+"\n"
- self.texteTubePy+="# ======================================================================================\n"
- self.texteTubePy+="\n"
- self.texteTubePy+="# Parametres Utilisateur Eficas \n"
- self.texteTubePy+="parameters={}\n"
-
- for MC in self.dictMCVal.keys():
- ligne = "parameters['"+MC+"']="+ repr(self.dictMCVal[MC])+'\n'
- self.texteTubePy=self.texteTubePy+ligne
-
- # On ajoute des paramètres de configuration pour contrôle de
- # cohérence avec la procédure outil métier
- self.texteTubePy+="# Parametres de Configuration Eficas \n"
- ligne = "parameters['OMVERSION']="+str(properties.version)+"\n"
- self.texteTubePy+=ligne
-
- # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
- self.texteTubePy+="\n"
- self.texteTubePy+="# Exécution de la procédure outil métier \n"
- self.texteTubePy+="import os,sys\n"
- self.texteTubePy+="sys.path.insert(0,os.environ['OM_ROOT_DIR'])\n"
- self.texteTubePy+="import om_data\n"
- self.texteTubePy+="om_data.setParameters(parameters)\n"
- self.texteTubePy+="def run():\n"
- self.texteTubePy+=" import om_smeca\n"
- self.texteTubePy+="\n"
- self.texteTubePy+='if __name__ == "__main__":\n'
- self.texteTubePy+=" run()\n"
-
- # For debug only
- print self.texteTubePy
-
-
- def initDico(self) :
- self.tube=0
- self.coude=0
- self.dictMCVal={}
- self.texteTubePy=""
-
- # __GBO__: surcharge de PythonGenerator:
- # voir example generator_cuve2dg.py (genea)
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en texte python
- Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
- """
- clef=""
- for i in obj.get_genealogie() :
- clef=clef+"__"+i
- #self.dictMCVal[obj.nom]=obj.valeur
- self.dictMCVal[clef]=obj.valeur
-
- s=PythonGenerator.generMCSIMP(self,obj)
- return s
-
- # __GBO__: surcharge de PythonGenerator
- def generMACRO_ETAPE(self,obj):
- print obj.nom
- if obj.nom == "S_EP_INTERNE" :
- self.tube=1
- if obj.nom == "M_COUDE" :
- self.coude=1
- s=PythonGenerator.generMACRO_ETAPE(self,obj)
- return s
-
self.texteDico += '/\t\t\t'+obj.nom +'\n'
self.texteDico += '/------------------------------------------------------/\n'
s=PythonGenerator.generPROC_ETAPE(self,obj)
- #print obj
- #print obj.nom
if obj.nom in TELEMACGenerator.__dict__.keys() : apply(TELEMACGenerator.__dict__[obj.nom],(self,obj))
return s
def generMCSIMP(self,obj) :
"""recuperation de l objet MCSIMP"""
s=PythonGenerator.generMCSIMP(self,obj)
- #if obj.nom == "Title" :
- #print s
- # print str(obj.valeur)
- #print repr(obj.valeur)
# Attention pas sur --> ds certains cas non traite par MCFACT ?
if not( type(obj.valeur) in (types.TupleType,types.ListType) ):
if obj.nom in DicoEnumCasEnInverse.keys():
try : sTelemac=str(DicoEnumCasEnInverse[obj.nom][obj.valeur])
- except : print "generMCSIMP Pb valeur avec ", obj.nom, obj.valeur
+ except : print ("generMCSIMP Pb valeur avec ", obj.nom, obj.valeur)
if type(obj.valeur) in (types.TupleType,types.ListType) :
- #print "je passe pour", obj.nom
if obj.nom in DicoEnumCasEnInverse.keys():
#sT = "'"
sT=''
for v in obj.valeur:
try : sT +=str(DicoEnumCasEnInverse[obj.nom][v]) +";"
- except : print "generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur
+ except : print ("generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur)
#sTelemac=sT[0:-1]+"'"
sTelemac=sT[0:-1]
else :
if obj.nom not in self.dicoCataToCas :
if obj.nom == 'Consigne' : return ""
- print obj.nom , ' non traite'
return s
nom=self.dicoCataToCas[obj.nom]
ligne=nom+ " : " + s3 + "\n"
if len(ligne) > 72 : ligne=self.redecoupeLigne(nom,s3)
self.texteDico+=ligne
- #print "_______________________"
- #print s
- #print ligne
- #print "_______________________"
- return s
def generMCFACT(self,obj):
"""
self.VE=True
self.textVE += str(valeur) +"; "
else : self.textVE += "0.; "
- print self.textPE, self.textFE,self.textVE
def BOUNDARY_CONDITIONS(self,obj):
# sans '; '
def NAME_OF_TRACER(self,obj):
- print dir(obj)
- print obj.get_genealogie_precise()
+ print (dir(obj) )
+ print (obj.get_genealogie_precise())
def Validation(self,obj):
self.texteDico += "VALIDATION : True \n"
an=obj.get_child('Year').valeur
mois=obj.get_child('Month').valeur
jour=obj.get_child('Day').valeur
- #print an, mois, jour
self.texteDico += "ORIGINAL DATE OF TIME :"+ str(an)+ " ,"+str(mois)+ "," +str(jour)+ "\n"
def Original_Hour_Of_Time (self,obj):
hh=obj.get_child('Hour').valeur
mm=obj.get_child('Minute').valeur
ss=obj.get_child('Second').valeur
- #print hh, mm, ss
self.texteDico += "ORIGINAL HOUR OF TIME :"+str(hh)+" ,"+str(mm)+ ","+str(ss)+"\n"
def Type_Of_Advection(self,obj):
self.chercheChildren(obj)
dicoSuf={ 'U_And_V' : 0, 'H' : 1, 'K_And_Epsilon' : 2, 'Tracers' : 3}
for c in self.listeMCAdvection:
- #print c.nom
if c.nom[0:18] == 'Type_Of_Advection_' and c.valeur!=None:
suf=c.nom[18:]
index=dicoSuf[suf]
- #print c.valeur
- #print DicoEnumCasEnInverse['Type_Of_Advection']
listeAdvection[index]=DicoEnumCasEnInverse['Type_Of_Advection'][c.valeur]
if c.nom[0:13] == 'Supg_Option_' and c.valeur!=None:
suf=c.nom[13:]
def writeDefault(self,fn) :
fileZcrack = fn[:fn.rfind(".")] + '.z7p'
f = open( str(fileZcrack), 'wb')
- print self.textePourRun
+ print (self.textePourRun)
self.ajoutRun()
self.textePourRunAvecDouble=self.textePourRun.replace("'",'"')
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- DefaillCUVE pour EFICAS.
-
-"""
-import traceback
-import types,string,re
-
-from Noyau import N_CR
-from Accas import MCSIMP
-from generator_python import PythonGenerator
-
-def entryPoint():
- """
- Retourne les informations nécessaires pour le chargeur de plugins
-
- Ces informations sont retournées dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'cuve2dg',
- # La factory pour créer une instance du plugin
- 'factory' : Cuve2dgGenerator,
- }
-
-
-class Cuve2dgGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format DefaillCUVE
-
- """
- # Les extensions de fichier préconisées
- extensions=('.comm',)
-
- def __init__(self,cr=None):
- # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
- if cr :
- self.cr=cr
- else:
- self.cr=N_CR.CR(debut='CR generateur format DefaillCUVE pour DefaillCUVE',
- fin='fin CR format DefaillCUVE pour DefaillCUVE')
- # Le texte au format DefaillCUVE est stocké dans l'attribut textCuve
- self.textCuve=''
-
- # Ce dictionnaire liste le nom des variables utilisees dans le script
- self.variable = {
- "NiveauImpression" : "MESSAGE_LEVEL",
- "FichierDataIn" : "DATARESUME_FILE",
- "FichierTempSigma" : "TEMPSIG_FILE",
- "FichierCSV" : "CSV_FILE",
- "FichierRESTART" : "RESTART_FILE",
- "FichierEXTR" : "EXTR_FILE",
- "ChoixPlugin" : "CHOIPLUG",
- "GrandeurEvaluee" : "GRANDEUR",
- "IncrementTemporel" : "INCRTPS",
- "IncrementMaxTemperature" : "DTPREC",
- "ChoixExtractionTransitoires" : "CHOIEXTR",
- "IncrementMaxTempsAffichage" : "DTARCH",
- "TraitementGeometrie" : "TYPEGEOM",
- "RayonInterne" : "RINT",
- "RayonInterne_mess" : "RINT_MESSAGE",
- "RayonExterne" : "REXT",
- "RayonExterne_mess" : "REXT_MESSAGE",
- "EpaisseurRevetement" : "LREV",
- "EpaisseurRevetement_mess" : "LREV_MESSAGE",
- "LigamentExterneMin" : "LIGMIN",
- "LigamentExterneMin_mess" : "LIGMIN_MESSAGE",
- "NombreNoeudsMaillage" : "NBNO",
- "TypeInitial" : "TYPEDEF",
- "Orientation" : "ORIEDEF",
- "Position" : "POSDEF",
- "ProfondeurRadiale" : "PROFDEF",
- "ProfondeurRadiale_mess" : "PROFDEF_MESSAGE",
- "ModeCalculLongueur" : "OPTLONG",
- "Longueur" : "LONGDEF",
- "Longueur_mess" : "LONGDEF_MESSAGE",
- "CoefDirecteur" : "PROFSURLONG",
- "CoefDirecteur_mess" : "PROFSURLONG_MESSAGE",
- "Constante" : "LONGCONST",
- "ModeCalculDecalage" : "DECATYP",
- "DecalageNormalise" : "DECANOR",
- "DecalageNormalise_mess" : "DECANOR_MESSAGE",
- "DecalageRadial" : "DECADEF",
- "DecalageRadial_mess" : "DECADEF_MESSAGE",
- "Azimut" : "ANGLDEF",
- "Azimut_mess" : "ANGLDEF_MESSAGE",
- "Altitude_mess" : "ANGLDEF_MESSAGE",
- "Altitude" : "ALTIDEF",
- "Altitude_mess" : "ALTIDEF_MESSAGE",
- "Pointe" : "POINDEF",
- "ModeleFluence" : "MODELFLUENCE",
- "ZoneActiveCoeur_AltitudeSup" : "H1COEUR",
- "ZoneActiveCoeur_AltitudeInf" : "H2COEUR",
- "FluenceMax" : "fmax",
- "KPFrance" : "KPFRANCE",
- "KPUS" : "KPUS",
- "Azimut_0deg" : "COEFFLUENCE1",
- "Azimut_5deg" : "COEFFLUENCE2",
- "Azimut_10deg" : "COEFFLUENCE3",
- "Azimut_15deg" : "COEFFLUENCE4",
- "Azimut_20deg" : "COEFFLUENCE5",
- "Azimut_25deg" : "COEFFLUENCE6",
- "Azimut_30deg" : "COEFFLUENCE7",
- "Azimut_35deg" : "COEFFLUENCE8",
- "Azimut_40deg" : "COEFFLUENCE9",
- "Azimut_45deg" : "COEFFLUENCE10",
- "TypeIrradiation" : "TYPEIRR",
- "RTNDT" : "RTNDT",
- "ModeleIrradiation" : "MODELIRR",
- "TeneurCuivre" : "CU",
- "TeneurCuivre_mess" : "CU_MESSAGE",
- "TeneurNickel" : "NI",
- "TeneurNickel_mess" : "NI_MESSAGE",
- "TeneurPhosphore" : "P",
- "TeneurPhosphore_mess" : "P_MESSAGE",
- "MoyenneRTndt" : "RTimoy",
- "MoyenneRTndt_mess" : "RTimoy_MESSAGE",
- "CoefVariationRTndt" : "RTicov",
- "CoefVariationRTndt_mess" : "RTicov_MESSAGE",
- "EcartTypeRTndt" : "USectDRT",
- "EcartTypeRTndt_mess" : "USectDRT_MESSAGE",
- "NombreEcartTypeRTndt" : "nbectDRTNDT",
- "NombreEcartTypeRTndt_mess" : "nbectDRTNDT_MESSAGE",
- "ModeleTenacite" : "MODELKIC",
- "NombreCaracteristique" : "NBCARAC",
- "NbEcartType_MoyKIc" : "nbectKIc",
- "NbEcartType_MoyKIc_mess" : "nbectKIc_MESSAGE",
- "PalierDuctile_KIc" : "KICPAL",
- "CoefficientVariation_KIc" : "KICCDV",
- "Fractile_KIc" : "fractKIc",
- "Fractile_KIc_mess" : "fractKIc_MESSAGE",
- "Temperature_KIc100" : "T0WALLIN",
- "A1" : "A1",
- "A2" : "A2",
- "A3" : "A3",
- "B1" : "B1",
- "B2" : "B2",
- "B3" : "B3",
- "C1" : "C1",
- "C2" : "C2",
- "C3" : "C3",
- "ChoixCorrectionLongueur" : "CHOIXCL",
- "AttnCorrBeta" : "ATTNCORRBETA",
- "CorrIrwin" : "CORRIRWIN",
- "ArretDeFissure" : "ARRETFISSURE",
- "IncrementTailleFissure" : "INCRDEF",
- "IncrementTailleFissure_mess" : "INCRDEF_MESSAGE",
- "NbEcartType_MoyKIa" : "nbectKIa",
- "PalierDuctile_KIa" : "KIAPAL",
- "CoefficientVariation_KIa" : "KIACDV",
- "ChoixCoefficientChargement" : "CHOIXSIGM",
- "CoefficientDuctile" : "COEFSIGM1",
- "CoefficientFragile" : "COEFSIGM2",
- "InstantInitialisation" : "INSTINIT",
- "ConditionLimiteThermiqueREV" : "KTHREV",
- "TemperatureDeformationNulleREV" : "TREFREV",
- "TemperaturePourCoefDilatThermREV" : "TDETREV",
- "CoefficientPoissonREV" : "NUREV",
- "ConditionLimiteThermiqueMDB" : "KTHMDB",
- "TemperatureDeformationNulleMDB" : "TREFMDB",
- "TemperaturePourCoefDilatThermMDB" : "TDETMDB",
- "CoefficientPoissonMDB" : "NUMDB",
- "TypeConditionLimiteThermique" : "TYPCLTH",
- "Instant_1" : "INSTANT1",
- "Instant_2" : "INSTANT2",
- "Instant_3" : "INSTANT3",
- "DebitAccumule" : "QACCU",
- "DebitInjectionSecurite" : "QIS",
- "TempInjectionSecurite" : "TIS",
- "TempInjectionSecurite_mess" : "TIS_MESSAGE",
- "DiametreHydraulique" : "DH",
- "DiametreHydraulique_mess" : "DH_MESSAGE",
- "SectionEspaceAnnulaire" : "SECTION",
- "SectionEspaceAnnulaire_mess" : "SECTION_MESSAGE",
- "HauteurCaracConvectionNaturelle" : "DELTA",
- "HauteurCaracConvectionNaturelle_mess" : "DELTA_MESSAGE",
- "CritereConvergenceRelative" : "EPS",
- "CoefficientsVestale" : "COEFVESTALE",
- "VolumeMelange_CREARE" : "VMTAB",
- "TemperatureInitiale_CREARE" : "T0",
- "TemperatureInitiale_CREARE_mess" : "T0_MESSAGE",
- "SurfaceEchange_FluideStructure" : "SE",
- "SurfaceEchange_FluideStructure_mess" : "SE_MESSAGE",
- "InstantPerteCirculationNaturelle" : "INST_PCN",
- }
-
- # Ce dictionnaire liste le nom des valeurs proposées utilisees dans le script
- self.valeurproposee = {
- "Aucune impression" : "0",
- "Temps total" : "1",
- "Temps intermediaires" : "2",
- "Facteur de marge KIc/KCP" : "FM_KICSURKCP",
- "Marge KIc-KI" : "MARGE_KI",
- "Marge KIc-KCP" : "MARGE_KCP",
- "Topologie" : "GEOMETRIE",
- "Maillage" : "MAILLAGE",
- "Defaut Sous Revetement" : "DSR",
- "Defaut Decale" : "DECALE",
- "Defaut Debouchant" : "DEBOUCHANT",
- "Longitudinale" : "LONGITUD",
- "Circonferentielle" : "CIRCONF",
- "Virole" : "VIROLE",
- "Joint soude" : "JSOUDE",
- "Valeur" : "VALEUR",
- "Fonction affine de la profondeur" : "FCTAFFINE",
- "Valeur normalisee" : "NORMALISE",
- "A" : "A",
- "B" : "B",
- "A et B" : "BOTH",
- "Exponentiel sans revetement k=9.7 (Reglementaire)" : "Reglementaire",
- "Exponentiel sans revetement k=12.7 (France)" : "France",
- "Exponentiel sans revetement k=0. (ValeurImposee)" : "ValeurImposee",
- "Donnees francaises du palier CPY (SDM)" : "SDM",
- "Regulatory Guide 1.99 rev 2 (USNRC)" : "USNRC",
- "Dossier 900 MWe AP9701 rev 2 (REV_2)" : "REV_2",
- "Lissage du modele ajuste (SDM_Lissage)" : "SDM_Lissage",
- "Donnees francaises du palier CPY ajustees par secteur angulaire (GrandeDev)" : "GrandeDev",
- "Grand developpement (GD_Cuve)" : "GD_Cuve",
- "Exponentiel sans revetement k=9.7 (Reglementaire CUVE1D)" : "Cuve1D",
- "RTndt de la cuve a l instant de l analyse" : "RTNDT",
- "Modele d irradiation" : "FLUENCE",
- "Formule de FIM/FIS Lefebvre modifiee" : "LEFEBnew",
- "Metal de Base : formule de FIM/FIS Houssin" : "HOUSSIN",
- "Metal de Base : formule de FIM/FIS Persoz" : "PERSOZ",
- "Metal de Base : formule de FIM/FIS Lefebvre" : "LEFEBVRE",
- "Metal de Base : Regulatory Guide 1.00 rev 2" : "USNRCmdb",
- "Joint Soude : formulation de FIM/FIS Brillaud" : "BRILLAUD",
- "Joint Soude : Regulatory Guide 1.00 rev 2" : "USNRCsoud",
- "RCC-M/ASME coefficient=2" : "RCC-M",
- "RCC-M/ASME coefficient=2 CUVE1D" : "RCC-M_simpl",
- "RCC-M/ASME coefficient=2.33 (Houssin)" : "Houssin_RC",
- "RCC-M/ASME avec KI=KIpalier" : "RCC-M_pal",
- "RCC-M/ASME avec KI~exponentiel" : "RCC-M_exp",
- "Weibull basee sur la master cuve" : "Wallin",
- "Weibull basee sur la master cuve (REME)" : "REME",
- "Weibull n\xb01 (etude ORNL)" : "ORNL",
- "Weibull n\xb02" : "WEIB2",
- "Weibull n\xb03" : "WEIB3",
- "Weibull generalisee" : "WEIB-GEN",
- "Exponentielle n\xb01 (Frama)" : "Frama",
- "Exponentielle n\xb02 (LOGWOLF)" : "LOGWOLF",
- "Quantile" : "QUANTILE",
- "Ordre" : "ORDRE",
- "Enthalpie" : "ENTHALPIE",
- "Chaleur" : "CHALEUR",
- "Temperature imposee en paroi" : "TEMP_IMPO",
- "Flux de chaleur impose en paroi" : "FLUX_REP",
- "Temperature imposee du fluide et coefficient echange" : "ECHANGE",
- "Debit massique et temperature d injection de securite" : "DEBIT",
- "Temperature imposee du fluide et debit d injection de securite" : "TEMP_FLU",
- "Courbe APRP" : "APRP",
- "Calcul TEMPFLU puis DEBIT" : "TFDEBIT",
- }
-
- # Ce dictionnaire liste le commentaire des variables utilisees dans le script
- self.comment = {
- "NiveauImpression" : "Niveau d impression des messages a l ecran (=0 : rien, =1 : temps calcul total, =2 : temps intermediaires)",
- "FichierDataIn" : "sortie du fichier recapitulatif des donnees d entree {OUI ; NON}",
- "FichierTempSigma" : "sortie des fichiers temperature et contraintes {OUI ; NON}",
- "FichierCSV" : "sortie du fichier resultat template_DEFAILLCUVE.CSV {OUI ; NON}",
- "FichierRESTART" : "sortie du fichier de re-demarrage",
- "FichierEXTR" : "sortie du fichier d extraction des transitoires",
- "ChoixPlugin" : "choix d'un repertoire de plug-in",
- "GrandeurEvaluee" : "choix de la grandeur sous critere evaluee {FM_KICSURKCP ; MARGE_KI ; MARGE_KCP}",
- "IncrementTemporel" : "increment temporel pour l analyse PROBABILISTE (si DETERMINISTE, fixer a 1)",
- "IncrementMaxTemperature" : "increment max de temp/noeud/instant (degC)",
- "ChoixExtractionTransitoires" : "choix d'extraction de transitoires de temp et contraintes",
- "IncrementMaxTempsAffichage" : "increment max de temps pour affichage (s)",
- "TraitementGeometrie" : "traitement de la geometrie de la cuve : {GEOMETRIE, MAILLAGE}",
- "RayonInterne" : "rayon interne (m)",
- "RayonInterne_mess" : "affichage ecran du rayon interne (m)",
- "RayonExterne" : "rayon externe (m)",
- "RayonExterne_mess" : "affichage ecran du rayon externe (m)",
- "EpaisseurRevetement" : "epaisseur revetement (m)",
- "EpaisseurRevetement_mess" : "affichage ecran de l epaisseur revetement (m)",
- "LigamentExterneMin" : "ligament externe minimal avant rupture (% de l'epaisseur de cuve)",
- "LigamentExterneMin_mess" : "affichage ecran du ligament externe minimal avant rupture (% de l'epaisseur de cuve)",
- "NombreNoeudsMaillage" : "nbre de noeuds dans l'epaisseur de la cuve",
- "TypeInitial" : "type initial du defaut : DEBOUCHANT=Defaut Debouchant, DSR=Defaut Sous Revetement, DECALE=Defaut Decale",
- "Orientation" : "orientation (LONGITUD / CIRCONF)",
- "Position" : "Position du defaut (VIROLE / JSOUDE)",
- "ProfondeurRadiale" : "profondeur radiale ou encore hauteur (m)",
- "ProfondeurRadiale_mess" : "affichage ecran de la profondeur radiale ou encore hauteur (m)",
- "ModeCalculLongueur" : "option pour definir la longueur du defaut (VALEUR pour une valeur fixe, FCTAFFINE pour une fct affine de la profondeur)",
- "Longueur" : "longueur (m) pour defaut Sous Revetement",
- "Longueur_mess" : "affichage ecran de la longueur (m) pour defaut Sous Revetement",
- "CoefDirecteur" : "pente de la fonction affine l = h/profsurlong + a0",
- "CoefDirecteur_mess" : "affichage ecran de la pente de la fonction affine l = h/profsurlong + a0",
- "Constante" : "constante de la fonction affine a0",
- "ModeCalculDecalage" : "type de decalage : normalise (NORMALISE) ou reel (VALEUR)",
- "DecalageNormalise" : "decalage radial normalise (valeur comprise entre 0. et 1.) pour defaut Sous Revetement",
- "DecalageNormalise_mess" : "affichage ecran du decalage radial normalise (valeur comprise entre 0. et 1.) pour defaut Sous Revetement",
- "DecalageRadial" : "decalage radial reel (m) pour defaut decale",
- "DecalageRadial_mess" : "affichage ecran du decalage radial reel (m) pour defaut decale",
- "Azimut" : "coordonnee angulaire (degre)",
- "Azimut_mess" : "affichage ecran de la coordonnee angulaire (degre)",
- "Altitude" : "altitude (m) : valeur negative",
- "Altitude_mess" : "affichage ecran de l altitude (m) : valeur negative",
- "Pointe" : "choix du(des) point(s) du defaut considere {'A','B','BOTH'} pour DSR et DECALE (pour DEBOUCHANT : automatiquement 'B')",
- "ModeleFluence" : "modele de fluence : {Reglementaire, France, ValeurImposee, SDM, USNRC, REV_2, SDM_Lissage, GrandeDev, GD_Cuve, Cuve1D}",
- "ZoneActiveCoeur_AltitudeSup" : "cote superieure de la zone active de coeur (ici pour cuve palier 900Mw)",
- "ZoneActiveCoeur_AltitudeInf" : "cote inferieure de la zone active de coeur (ici pour cuve palier 900Mw)",
- "FluenceMax" : "fluence maximale assimilee par la cuve (n/cm2)",
- "KPFrance" : "parametre exponentiel du modele France",
- "KPUS" : "parametre exponentiel du modele US",
- "Azimut_0deg" : "fluence a l'azimut 0 (10^19 n/cm)",
- "Azimut_5deg" : "fluence a l'azimut 5 (10^19 n/cm)",
- "Azimut_10deg" : "fluence a l'azimut 10 (10^19 n/cm)",
- "Azimut_15deg" : "fluence a l'azimut 15 (10^19 n/cm)",
- "Azimut_20deg" : "fluence a l'azimut 20 (10^19 n/cm)",
- "Azimut_25deg" : "fluence a l'azimut 25 (10^19 n/cm)",
- "Azimut_30deg" : "fluence a l'azimut 30 (10^19 n/cm)",
- "Azimut_35deg" : "fluence a l'azimut 35 (10^19 n/cm)",
- "Azimut_40deg" : "fluence a l'azimut 40 (10^19 n/cm)",
- "Azimut_45deg" : "fluence a l'azimut 45 (10^19 n/cm)",
- "TypeIrradiation" : "type irradiation : {RTNDT, FLUENCE}",
- "RTNDT" : "RTNDT finale (degC)",
- "ModeleIrradiation" : "modele d irradiation : LEFEBnew, ou {HOUSSIN, PERSOZ, LEFEBVRE, USNRCmdb} pour virole et {BRILLAUD,USNRCsoud} pour jointsoude",
- "TeneurCuivre" : "teneur en cuivre (%)",
- "TeneurCuivre_mess" : "affichage ecran de la teneur en cuivre (%)",
- "TeneurNickel" : "teneur en nickel (%)",
- "TeneurNickel_mess" : "affichage ecran de la teneur en nickel (%)",
- "TeneurPhosphore" : "teneur en phosphore (%)",
- "TeneurPhosphore_mess" : "affichage ecran de la teneur en phosphore (%)",
- "MoyenneRTndt" : "moyenne de la RTNDT initiale : virole C1 de cuve Chinon : mdb=>-17.degC et js=>42.degC (HT-56/05/038 : p.52)",
- "MoyenneRTndt_mess" : "affichage ecran de la moyenne de la RTNDT initiale",
- "CoefVariationRTndt" : "coef de variation de la RTNDT initiale",
- "CoefVariationRTndt_mess" : "affichage ecran du coef de variation de la RTNDT initiale",
- "EcartTypeRTndt" : "pour modeles USNRCsoud ou USNRCmdb, ecart-type du decalage de RTNDT (°F) (28. pour js et 17. pour mdb)",
- "EcartTypeRTndt_mess" : "affichage ecran, pour modeles USNRCsoud ou USNRCmdb, ecart-type du decalage de RTNDT (°F) (28. pour js et 17. pour mdb)",
- "NombreEcartTypeRTndt" : "Nbre d ecart-type par rapport a la moyenne de DRTNDT si analyse PROBABILISTE (en DETERMINISTE, fixer a 2.)",
- "NombreEcartTypeRTndt_mess" : "affichage ecran du nbre d ecart-type par rapport a la moyenne de DRTNDT si analyse PROBABILISTE",
- "ModeleTenacite" : "modele de tenacite : {RCC-M, RCC-M_pal, RCC-M_exp, RCC-M_simpl, Houssin_RC, Wallin, REME, ORNL, Frama, WEIB3, WEIB2, LOGWOLF, WEIB-GEN}",
- "NombreCaracteristique" : "Nb caracteristique : ORDRE ou QUANTILE",
- "NbEcartType_MoyKIc" : "Nbre d ecart-type par rapport a la moyenne de KIc si analyse PROBABILISTE (en DETERMINISTE, fixer a -2.)",
- "NbEcartType_MoyKIc_mess" : "affichage ecran du nbre d ecart-type par rapport a la moyenne de KIc si analyse PROBABILISTE",
- "PalierDuctile_KIc" : "palier deterministe de K1c (MPa(m^0.5))",
- "CoefficientVariation_KIc" : "coef de variation de la loi normale de K1c",
- "Fractile_KIc" : "valeur caracteristique de KIc exprimee en ordre de fractile (%)",
- "Fractile_KIc_mess" : "affichage ecran de la valeur caracteristique de KIc exprimee en ordre de fractile (%)",
- "Temperature_KIc100" : "parametre T0 du modele Wallin (degC)",
- "A1" : "coef des coefs d une WEIBULL generale",
- "A2" : "",
- "A3" : "",
- "B1" : "",
- "B2" : "",
- "B3" : "",
- "C1" : "",
- "C2" : "",
- "C3" : "",
- "ChoixCorrectionLongueur" : "Activation ou non de la correction de longueur {OUI ; NON}",
- "AttnCorrBeta" : "Attenuation de la correction plastique : {OUI, NON} ==> uniquement pour DSR ou DECALE",
- "CorrIrwin" : "Correction plastique IRWIN : {OUI, NON} ==> uniquement pour DEBOUCHANT",
- "ArretDeFissure" : "prise en compte de l arret de fissure {OUI, NON} (en PROBABILISTE, fixer a NON)",
- "IncrementTailleFissure" : "increment de la taille de fissure (m)",
- "IncrementTailleFissure_mess" : "affichage ecran de l increment de la taille de fissure (m)",
- "NbEcartType_MoyKIa" : "Nbre d ecart-type par rapport a la moyenne de KIa (nb sigma)",
- "PalierDuctile_KIa" : "palier deterministe de K1a quand modele RCC-M (MPa(m^0.5))",
- "CoefficientVariation_KIa" : "coef de variation de la loi normale de K1a",
- "ChoixCoefficientChargement" : "prise en compte de coefficients sur le chargement (OUI/NON)",
- "CoefficientDuctile" : "coefficient multiplicateur pour rupture ductile",
- "CoefficientFragile" : "coefficient multiplicateur pour rupture fragile",
- "InstantInitialisation" : "instant initial (s)",
- "ConditionLimiteThermiqueREV" : "Option 'ENTHALPIE' ou 'CHALEUR'",
- "TemperatureDeformationNulleREV" : "temperature de deformation nulle (degC)",
- "TemperaturePourCoefDilatThermREV" : "temperature de definition du coefficient de dilatation thermique (degC)",
- "CoefficientPoissonREV" : "coefficient de Poisson",
- "ConditionLimiteThermiqueMDB" : "Option 'ENTHALPIE' ou 'CHALEUR'",
- "TemperatureDeformationNulleMDB" : "temperature de deformation nulle (degC)",
- "TemperaturePourCoefDilatThermMDB" : "temperature de definition du coefficient de dilatation thermique (degC)",
- "CoefficientPoissonMDB" : "coefficient de Poisson",
- "TypeConditionLimiteThermique" : "Type de condition thermique en paroi interne {TEMP_IMPO,FLUX_REP,ECHANGE,DEBIT,TEMP_FLU,APRP}",
- "Instant_1" : "Borne superieure de l intervalle de temps du 1er palier TACCU",
- "Instant_2" : "Borne superieure de l intervalle de temps du 2nd palier T1",
- "Instant_3" : "Borne superieure de l intervalle de temps du 3eme palier TIS",
- "DebitAccumule" : "Debit accumule (en m3/h)",
- "DebitInjectionSecurite" : "Debit injection de securite (en m3/h)",
- "TempInjectionSecurite" : "Temperature injection de securite (en degC)",
- "TempInjectionSecurite_mess" : "affichage ecran de la temperature injection de securite",
- "DiametreHydraulique" : "Diametre hydraulique (m)",
- "DiametreHydraulique_mess" : "affichage ecran du diametre hydraulique (m)",
- "SectionEspaceAnnulaire" : "Section espace annulaire (m2)",
- "SectionEspaceAnnulaire_mess" : "affichage ecran de la section espace annulaire (m2)",
- "HauteurCaracConvectionNaturelle" : "Hauteur caracteristique convection naturelle (m)",
- "HauteurCaracConvectionNaturelle_mess" : "affichage ecran de la hauteur caracteristique convection naturelle (m)",
- "CritereConvergenceRelative" : "Critere convergence relative (-)",
- "CoefficientsVestale" : "Application des coefs de Vestale {OUI;NON}",
- "VolumeMelange_CREARE" : "Transitoire de volume de melange CREARE (m3)",
- "TemperatureInitiale_CREARE" : "Temperature initiale CREARE (degC)",
- "TemperatureInitiale_CREARE_mess" : "affichage ecran de la temperature initiale CREARE (degC)",
- "SurfaceEchange_FluideStructure" : "Surface d'echange fluide/structure (m2)",
- "SurfaceEchange_FluideStructure_mess" : "affichage ecran de la surface d'echange fluide/structure (m2)",
- "InstantPerteCirculationNaturelle" : "Instant de perte de circulation naturelle",
- }
-
- # Ce dictionnaire liste la valeur par defaut des variables utilisees dans le script
- self.default = {
- "NiveauImpression" : "1",
- "FichierDataIn" : "NON",
- "FichierTempSigma" : "NON",
- "FichierCSV" : "NON",
- "FichierRESTART" : "NON",
- "FichierEXTR" : "NON",
- "ChoixPlugin" : "NON",
- "GrandeurEvaluee" : "FM_KICSURKCP",
- "IncrementTemporel" : "1",
- "IncrementMaxTemperature" : "0.1",
- "ChoixExtractionTransitoires" : "NON",
- "IncrementMaxTempsAffichage" : "1000.",
- "TraitementGeometrie" : "GEOMETRIE",
- "RayonInterne" : "1.994",
- "RayonInterne_mess" : "NON",
- "RayonExterne" : "2.2015",
- "RayonExterne_mess" : "NON",
- "EpaisseurRevetement" : "0.0075",
- "EpaisseurRevetement_mess" : "NON",
- "LigamentExterneMin" : "0.75",
- "LigamentExterneMin_mess" : "NON",
- "NombreNoeudsMaillage" : "300",
- "TypeInitial" : "DSR",
- "Position" : "VIROLE",
- "ProfondeurRadiale" : "0.006",
- "ProfondeurRadiale_mess" : "NON",
- "ModeCalculLongueur" : "VALEUR",
- "Longueur" : "0.060",
- "Longueur_mess" : "NON",
- "CoefDirecteur" : "10.",
- "CoefDirecteur_mess" : "NON",
- "Constante" : "0.",
- "ModeCalculDecalage" : "VALEUR",
- "DecalageNormalise" : "0.1",
- "DecalageNormalise_mess" : "NON",
- "DecalageRadial" : "0.",
- "DecalageRadial_mess" : "NON",
- "Azimut" : "0.",
- "Azimut_mess" : "NON",
- "Altitude" : "-4.",
- "Altitude_mess" : "NON",
- "Pointe" : "B",
- "ModeleFluence" : "Reglementaire",
- "ZoneActiveCoeur_AltitudeSup" : "-3.536",
- "ZoneActiveCoeur_AltitudeInf" : "-7.194",
- "FluenceMax" : "6.5",
- "KPFrance" : "12.7",
- "KPUS" : "9.4488",
- "Azimut_0deg" : "5.8",
- "Azimut_5deg" : "5.48",
- "Azimut_10deg" : "4.46",
- "Azimut_15deg" : "3.41",
- "Azimut_20deg" : "3.37",
- "Azimut_25deg" : "3.16",
- "Azimut_30deg" : "2.74",
- "Azimut_35deg" : "2.25",
- "Azimut_40deg" : "1.89",
- "Azimut_45deg" : "1.78",
- "TypeIrradiation" : "RTNDT",
- "RTNDT" : "64.",
- "ModeleIrradiation" : "HOUSSIN",
- "TeneurCuivre" : "0.0972",
- "TeneurCuivre_mess" : "NON",
- "TeneurNickel" : "0.72",
- "TeneurNickel_mess" : "NON",
- "TeneurPhosphore" : "0.00912",
- "TeneurPhosphore_mess" : "NON",
- "MoyenneRTndt" : "-12.0",
- "MoyenneRTndt_mess" : "NON",
- "CoefVariationRTndt" : "0.1",
- "CoefVariationRTndt_mess" : "NON",
- "EcartTypeRTndt" : "-2.",
- "EcartTypeRTndt_mess" : "NON",
- "NombreEcartTypeRTndt" : "2.",
- "NombreEcartTypeRTndt_mess" : "NON",
- "ModeleTenacite" : "RCC-M",
- "NombreCaracteristique" : "Quantile",
- "NbEcartType_MoyKIc" : "-2.",
- "NbEcartType_MoyKIc_mess" : "NON",
- "PalierDuctile_KIc" : "195.",
- "CoefficientVariation_KIc" : "0.15",
- "Fractile_KIc" : "5.",
- "Fractile_KIc_mess" : "NON",
- "Temperature_KIc100" : "-27.",
- "A1" : "21.263",
- "A2" : "9.159",
- "A3" : "0.04057",
- "B1" : "17.153",
- "B2" : "55.089",
- "B3" : "0.0144",
- "C1" : "4.",
- "C2" : "0.",
- "C3" : "0.",
- "ChoixCorrectionLongueur" : "OUI",
- "AttnCorrBeta" : "NON",
- "CorrIrwin" : "NON",
- "ArretDeFissure" : "NON",
- "IncrementTailleFissure" : "0.",
- "IncrementTailleFissure_mess" : "NON",
- "NbEcartType_MoyKIa" : "0.",
- "PalierDuctile_KIa" : "0.",
- "CoefficientVariation_KIa" : "0.",
- "ChoixCoefficientChargement" : "NON",
- "CoefficientDuctile" : "1.0",
- "CoefficientFragile" : "1.0",
- "InstantInitialisation" : "-1.",
- "ConditionLimiteThermiqueREV" : "CHALEUR",
- "TemperatureDeformationNulleREV" : "20.",
- "TemperaturePourCoefDilatThermREV" : "287.",
- "CoefficientPoissonREV" : "0.3",
- "ConditionLimiteThermiqueMDB" : "CHALEUR",
- "TemperatureDeformationNulleMDB" : "20.",
- "TemperaturePourCoefDilatThermMDB" : "287.",
- "CoefficientPoissonMDB" : "0.3",
- "TypeConditionLimiteThermique" : "TEMP_IMPO",
- "Instant_1" : "21.",
- "Instant_2" : "45.",
- "Instant_3" : "5870.",
- "DebitAccumule" : "2.3",
- "DebitInjectionSecurite" : "0.375",
- "TempInjectionSecurite" : "9.",
- "TempInjectionSecurite_mess" : "NON",
- "DiametreHydraulique" : "0.3816",
- "DiametreHydraulique_mess" : "NON",
- "SectionEspaceAnnulaire" : "0.21712",
- "SectionEspaceAnnulaire_mess" : "NON",
- "HauteurCaracConvectionNaturelle" : "6.",
- "HauteurCaracConvectionNaturelle_mess" : "NON",
- "CritereConvergenceRelative" : "0.00001",
- "CoefficientsVestale" : "NON",
-# "VolumeMelange_CREARE" : "14.9",
- "TemperatureInitiale_CREARE" : "250.",
- "TemperatureInitiale_CREARE_mess" : "NON",
- "SurfaceEchange_FluideStructure" : "0.",
- "SurfaceEchange_FluideStructure_mess" : "NON",
- "InstantPerteCirculationNaturelle" : "400.",
- }
-
- # Ce dictionnaire liste la rubrique d'appartenance des variables utilisees dans le script
- self.bloc = {
- "NiveauImpression" : "OPTIONS",
- "FichierDataIn" : "OPTIONS",
- "FichierTempSigma" : "OPTIONS",
- "FichierCSV" : "OPTIONS",
- "FichierRESTART" : "OPTIONS",
- "FichierEXTR" : "OPTIONS",
- "ChoixPlugin" : "OPTIONS",
- "GrandeurEvaluee" : "OPTIONS",
- "IncrementTemporel" : "OPTIONS",
- "IncrementMaxTemperature" : "OPTIONS",
- "ChoixExtractionTransitoires" : "OPTIONS",
- "IncrementMaxTempsAffichage" : "OPTIONS",
- "TraitementGeometrie" : "DONNEES DE LA CUVE",
- "RayonInterne" : "DONNEES DE LA CUVE",
- "RayonInterne_mess" : "DONNEES DE LA CUVE",
- "RayonExterne" : "DONNEES DE LA CUVE",
- "RayonExterne_mess" : "DONNEES DE LA CUVE",
- "EpaisseurRevetement" : "DONNEES DE LA CUVE",
- "EpaisseurRevetement_mess" : "DONNEES DE LA CUVE",
- "LigamentExterneMin" : "DONNEES DE LA CUVE",
- "LigamentExterneMin_mess" : "DONNEES DE LA CUVE",
- "NombreNoeudsMaillage" : "DONNEES DE LA CUVE",
- "TypeInitial" : "CARACTERISTIQUES DU DEFAUT",
- "Orientation" : "CARACTERISTIQUES DU DEFAUT",
- "Position" : "CARACTERISTIQUES DU DEFAUT",
- "ProfondeurRadiale" : "CARACTERISTIQUES DU DEFAUT",
- "ProfondeurRadiale_mess" : "CARACTERISTIQUES DU DEFAUT",
- "ModeCalculLongueur" : "CARACTERISTIQUES DU DEFAUT",
- "Longueur" : "CARACTERISTIQUES DU DEFAUT",
- "Longueur_mess" : "CARACTERISTIQUES DU DEFAUT",
- "CoefDirecteur" : "CARACTERISTIQUES DU DEFAUT",
- "CoefDirecteur_mess" : "CARACTERISTIQUES DU DEFAUT",
- "Constante" : "CARACTERISTIQUES DU DEFAUT",
- "ModeCalculDecalage" : "CARACTERISTIQUES DU DEFAUT",
- "DecalageNormalise" : "CARACTERISTIQUES DU DEFAUT",
- "DecalageNormalise_mess" : "CARACTERISTIQUES DU DEFAUT",
- "DecalageRadial" : "CARACTERISTIQUES DU DEFAUT",
- "DecalageRadial_mess" : "CARACTERISTIQUES DU DEFAUT",
- "Azimut" : "CARACTERISTIQUES DU DEFAUT",
- "Azimut_mess" : "CARACTERISTIQUES DU DEFAUT",
- "Altitude" : "CARACTERISTIQUES DU DEFAUT",
- "Altitude_mess" : "CARACTERISTIQUES DU DEFAUT",
- "Pointe" : "CARACTERISTIQUES DU DEFAUT",
- "ModeleFluence" : "MODELES",
- "ZoneActiveCoeur_AltitudeSup" : "MODELES",
- "ZoneActiveCoeur_AltitudeInf" : "MODELES",
- "FluenceMax" : "MODELES",
- "KPFrance" : "MODELES",
- "KPUS" : "MODELES",
- "Azimut_0deg" : "MODELES",
- "Azimut_5deg" : "MODELES",
- "Azimut_10deg" : "MODELES",
- "Azimut_15deg" : "MODELES",
- "Azimut_20deg" : "MODELES",
- "Azimut_25deg" : "MODELES",
- "Azimut_30deg" : "MODELES",
- "Azimut_35deg" : "MODELES",
- "Azimut_40deg" : "MODELES",
- "Azimut_45deg" : "MODELES",
- "TypeIrradiation" : "MODELES",
- "RTNDT" : "MODELES",
- "ModeleIrradiation" : "MODELES",
- "TeneurCuivre" : "MODELES",
- "TeneurCuivre_mess" : "MODELES",
- "TeneurNickel" : "MODELES",
- "TeneurNickel_mess" : "MODELES",
- "TeneurPhosphore" : "MODELES",
- "TeneurPhosphore_mess" : "MODELES",
- "MoyenneRTndt" : "MODELES",
- "MoyenneRTndt_mess" : "MODELES",
- "CoefVariationRTndt" : "MODELES",
- "CoefVariationRTndt_mess" : "MODELES",
- "EcartTypeRTndt" : "MODELES",
- "EcartTypeRTndt_mess" : "MODELES",
- "NombreEcartTypeRTndt" : "MODELES",
- "NombreEcartTypeRTndt_mess" : "MODELES",
- "ModeleTenacite" : "MODELES",
- "NombreCaracteristique" : "MODELES",
- "NbEcartType_MoyKIc" : "MODELES",
- "NbEcartType_MoyKIc_mess" : "MODELES",
- "PalierDuctile_KIc" : "MODELES",
- "CoefficientVariation_KIc" : "MODELES",
- "Fractile_KIc" : "MODELES",
- "Fractile_KIc_mess" : "MODELES",
- "Temperature_KIc100" : "MODELES",
- "A1" : "MODELES",
- "A2" : "MODELES",
- "A3" : "MODELES",
- "B1" : "MODELES",
- "B2" : "MODELES",
- "B3" : "MODELES",
- "C1" : "MODELES",
- "C2" : "MODELES",
- "C3" : "MODELES",
- "ChoixCorrectionLongueur" : "MODELES",
- "AttnCorrBeta" : "MODELES",
- "CorrIrwin" : "MODELES",
- "ArretDeFissure" : "MODELES",
- "IncrementTailleFissure" : "MODELES",
- "IncrementTailleFissure_mess" : "MODELES",
- "NbEcartType_MoyKIa" : "MODELES",
- "PalierDuctile_KIa" : "MODELES",
- "CoefficientVariation_KIa" : "MODELES",
- "ChoixCoefficientChargement" : "ETAT INITIAL",
- "CoefficientDuctile" : "ETAT INITIAL",
- "CoefficientFragile" : "ETAT INITIAL",
- "InstantInitialisation" : "ETAT INITIAL",
- "ConditionLimiteThermiqueREV" : "CARACTERISTIQUES DU REVETEMENT",
- "TemperatureDeformationNulleREV" : "CARACTERISTIQUES DU REVETEMENT",
- "TemperaturePourCoefDilatThermREV" : "CARACTERISTIQUES DU REVETEMENT",
- "CoefficientPoissonREV" : "CARACTERISTIQUES DU REVETEMENT",
- "ConditionLimiteThermiqueMDB" : "CARACTERISTIQUES DU MDB",
- "TemperatureDeformationNulleMDB" : "CARACTERISTIQUES DU MDB",
- "TemperaturePourCoefDilatThermMDB" : "CARACTERISTIQUES DU MDB",
- "CoefficientPoissonMDB" : "CARACTERISTIQUES DU MDB",
- "TypeConditionLimiteThermique" : "TRANSITOIRE",
- "Instant_1" : "TRANSITOIRE",
- "Instant_2" : "TRANSITOIRE",
- "Instant_3" : "TRANSITOIRE",
- "DebitAccumule" : "TRANSITOIRE",
- "DebitInjectionSecurite" : "TRANSITOIRE",
- "TempInjectionSecurite" : "TRANSITOIRE",
- "TempInjectionSecurite_mess" : "TRANSITOIRE",
- "DiametreHydraulique" : "TRANSITOIRE",
- "DiametreHydraulique_mess" : "TRANSITOIRE",
- "SectionEspaceAnnulaire" : "TRANSITOIRE",
- "SectionEspaceAnnulaire_mess" : "TRANSITOIRE",
- "HauteurCaracConvectionNaturelle" : "TRANSITOIRE",
- "HauteurCaracConvectionNaturelle_mess" : "TRANSITOIRE",
- "CritereConvergenceRelative" : "TRANSITOIRE",
- "CoefficientsVestale" : "TRANSITOIRE",
- "VolumeMelange_CREARE" : "TRANSITOIRE",
- "TemperatureInitiale_CREARE" : "TRANSITOIRE",
- "TemperatureInitiale_CREARE_mess" : "TRANSITOIRE",
- "SurfaceEchange_FluideStructure" : "TRANSITOIRE",
- "SurfaceEchange_FluideStructure_mess" : "TRANSITOIRE",
- "InstantPerteCirculationNaturelle" : "TRANSITOIRE",
- }
-
- def gener(self,obj,format='brut'):
- self.text=''
- self.textCuve=''
- self.texteTFDEBIT=''
- self.dico_mot={}
- self.dico_genea={}
- self.text=PythonGenerator.gener(self,obj,format)
- return self.text
-
- def generMCSIMP(self,obj) :
- self.dico_mot[obj.nom]=obj.valeur
- clef=""
- for i in obj.get_genealogie() :
- clef=clef+"_"+i
- self.dico_genea[clef]=obj.valeur
- s=PythonGenerator.generMCSIMP(self,obj)
- return s
-
- def writeCuve2DG(self, filename, file2):
- print "je passe dans writeCuve2DG"
- self.genereTexteCuve()
- f = open( filename, 'wb')
- print self.texteCuve
- f.write( self.texteCuve )
- f.close()
- ftmp = open( "/tmp/data_template", 'wb')
- ftmp.write( self.texteCuve )
- ftmp.close()
-
- self.genereTexteTFDEBIT()
- f2 = open( file2, 'wb')
- print self.texteTFDEBIT
- f2.write( self.texteTFDEBIT )
- f2.close()
-
-
- def entete(self):
- '''
- Ecrit l'entete du fichier data_template
- '''
- texte = "############################################################################################"+"\n"
- texte += "#"+"\n"
- texte += "# OUTIL D'ANALYSE PROBABILISTE DE LA DUREE DE VIE DES CUVES REP"+"\n"
- texte += "# ---------------"+"\n"
- texte += "# FICHIER DE MISE EN DONNEES"+"\n"
- texte += "#"+"\n"
- texte += "# SI CALCUL DETERMINISTE :"+"\n"
- texte += "# - fixer INCRTPS=1, nbectDRTNDT=2., nbectKIc=-2."+"\n"
- texte += "# - les calculs ne sont possibles qu'en une seule pointe du defaut (POINDEF<>BOTH)"+"\n"
- texte += "# SI CALCUL PROBABILISTE :"+"\n"
- texte += "# - fixer ARRETFISSURE=NON"+"\n"
- texte += "#"+"\n"
- texte += "############################################################################################"+"\n"
- texte += "#"+"\n"
- return texte
-
- def rubrique(self, titre):
- '''
- Rubrique
- '''
- texte = "#"+"\n"
- texte += "############################################################################################"+"\n"
- texte += "# " + titre + "\n"
- texte += "############################################################################################"+"\n"
- texte += "#"+"\n"
- return texte
-
- def sousRubrique(self, soustitre, numtitre):
- '''
- Sous-rubrique
- '''
- texte = "#"+"\n"
- texte += "# " + numtitre + soustitre + "\n"
- texte += "#==========================================================================================="+"\n"
- texte += "#"+"\n"
- return texte
-
- def ecritLigne(self, variablelue):
- '''
- Ecrit l'affectation d'une valeur a sa variable, suivie d'un commentaire
- '''
- texte = "%s = %s # %s\n" % (self.variable[variablelue], str(self.dico_mot[variablelue]), self.comment[variablelue])
- return texte
-
- def affecteValeurDefaut(self, variablelue):
- '''
- Affecte une valeur par defaut a une variable, suivie d'un commentaire
- '''
- print "Warning ==> Dans la rubrique",self.bloc[variablelue],", valeur par defaut pour ",variablelue," = ",self.default[variablelue]
- texte = "%s = %s # %s\n" % (self.variable[variablelue], self.default[variablelue], self.comment[variablelue])
- return texte
-
- def affecteValeur(self, variablelue, valeuraffectee):
- '''
- Affecte une valeur a une variable, suivie d'un commentaire
- '''
- texte = "%s = %s # %s\n" % (self.variable[variablelue], valeuraffectee, self.comment[variablelue])
- return texte
-
- def ecritVariable(self, variablelue):
- if self.dico_mot.has_key(variablelue):
- texte = self.ecritLigne(variablelue)
- else :
- texte = self.affecteValeurDefaut(variablelue)
- return texte
-
- def amontAval(self, amont, aval):
- if str(self.dico_mot[amont])=='Continu':
- if str(self.dico_mot[aval])=='Continu':
- texte = 'CC'+"\n"
- if str(self.dico_mot[aval])=='Lineaire':
- texte = 'CL'+"\n"
- if str(self.dico_mot[aval])=='Exclu':
- texte = 'CE'+"\n"
- if str(self.dico_mot[amont])=='Lineaire':
- if str(self.dico_mot[aval])=='Continu':
- texte = 'LC'+"\n"
- if str(self.dico_mot[aval])=='Lineaire':
- texte = 'LL'+"\n"
- if str(self.dico_mot[aval])=='Exclu':
- texte = 'LE'+"\n"
- if str(self.dico_mot[amont])=='Exclu':
- if str(self.dico_mot[aval])=='Continu':
- texte = 'EC'+"\n"
- if str(self.dico_mot[aval])=='Lineaire':
- texte = 'EL'+"\n"
- if str(self.dico_mot[aval])=='Exclu':
- texte = 'EE'+"\n"
- return texte
-
- def genereTexteCuve(self):
- self.texteCuve = ""
- self.texteCuve += self.entete()
-
- # Rubrique OPTIONS
- self.texteCuve += self.rubrique('OPTIONS')
-
- self.texteCuve += self.sousRubrique('Impression a l ecran', '')
- if self.dico_mot.has_key('NiveauImpression'):
- self.texteCuve += self.affecteValeur('NiveauImpression', self.valeurproposee[str(self.dico_mot["NiveauImpression"])])
-
- self.texteCuve += self.sousRubrique('Generation de fichiers', '')
- self.texteCuve += self.ecritVariable('FichierDataIn')
- self.texteCuve += self.ecritVariable('FichierTempSigma')
- self.texteCuve += self.ecritVariable('FichierCSV')
- self.texteCuve += self.ecritVariable('FichierRESTART')
- self.texteCuve += self.ecritVariable('FichierEXTR')
- self.texteCuve += self.ecritVariable('ChoixPlugin')
-
- self.texteCuve += self.sousRubrique('Grandeur evaluee', '')
- if self.dico_mot.has_key('GrandeurEvaluee'):
- self.texteCuve += self.affecteValeur('GrandeurEvaluee', self.valeurproposee[str(self.dico_mot["GrandeurEvaluee"])])
-
- self.texteCuve += self.sousRubrique('Divers', '')
- self.texteCuve += self.ecritVariable('IncrementTemporel')
- self.texteCuve += self.ecritVariable('IncrementMaxTemperature')
-
- #self.texteCuve += self.ecritVariable('ChoixExtractionTransitoires')
- if self.dico_mot.has_key('ChoixExtractionTransitoires'):
- self.texteCuve += self.ecritVariable('ChoixExtractionTransitoires')
- if str(self.dico_mot["ChoixExtractionTransitoires"])=='OUI':
- if self.dico_mot.has_key('ListeAbscisses'):
- self.texteCuve += "# liste des abscisses pour ecriture des transitoires de T et SIG (5 ou moins)"+"\n"
- self.imprime(1,(self.dico_mot["ListeAbscisses"]))
- self.texteCuve+="#"+"\n"
- else :
- print "Warning ==> Dans la rubrique OPTIONS, fournir ListeAbscisses."
- self.texteCuve += "# liste des abscisses pour ecriture des transitoires de T et SIG (5 ou moins)"+"\n"
- self.texteCuve += " 1.994\n"
- self.texteCuve += " 2.000\n"
- self.texteCuve+="#"+"\n"
- else :
- self.texteCuve+="#"+"\n"
-
- self.texteCuve += self.ecritVariable('IncrementMaxTempsAffichage')
- if self.dico_mot.has_key('ListeInstants'):
- self.texteCuve += "# liste des instants pour ecriture des resultats (s)"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.imprime(1,(self.dico_mot["ListeInstants"]))
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.texteCuve+="#"+"\n"
- else :
- print "Warning ==> Dans la rubrique OPTIONS, fournir ListeInstants."
- self.texteCuve += "# liste des instants pour ecriture des resultats (s)"+"\n"
- self.texteCuve += " 0.\n"
- self.texteCuve += " 1.\n"
- self.texteCuve+="#"+"\n"
-
-
- # Rubrique DONNEES DE LA CUVE
- self.texteCuve += self.rubrique('DONNEES DE LA CUVE')
- if self.dico_mot.has_key('TraitementGeometrie'):
- self.texteCuve += self.affecteValeur('TraitementGeometrie', self.valeurproposee[str(self.dico_mot["TraitementGeometrie"])])
- if str(self.dico_mot["TraitementGeometrie"])=='Topologie':
- self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
- self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
- self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
- self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
- self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
- self.texteCuve+="# NBNO"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('RayonInterne')
- self.texteCuve += self.ecritVariable('RayonInterne_mess')
- self.texteCuve += self.ecritVariable('RayonExterne')
- self.texteCuve += self.ecritVariable('RayonExterne_mess')
- self.texteCuve += self.ecritVariable('EpaisseurRevetement')
- self.texteCuve += self.ecritVariable('EpaisseurRevetement_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('LigamentExterneMin')
- self.texteCuve += self.ecritVariable('LigamentExterneMin_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('NombreNoeudsMaillage')
- if str(self.dico_mot["TraitementGeometrie"])=='Maillage':
- self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
- self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
- self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
- self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
- self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
- self.texteCuve+="# NBNO"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('NombreNoeudsMaillage')
- self.imprime(1,(self.dico_mot["ListeAbscisses"]))
- else :
- self.texteCuve += self.affecteValeurDefaut('TraitementGeometrie')
- self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
- self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
- self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
- self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
- self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
- self.texteCuve+="# NBNO"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.affecteValeurDefaut('RayonInterne')
- self.texteCuve += self.affecteValeurDefaut('RayonInterne_mess')
- self.texteCuve += self.affecteValeurDefaut('RayonExterne')
- self.texteCuve += self.affecteValeurDefaut('RayonExterne_mess')
- self.texteCuve += self.affecteValeurDefaut('EpaisseurRevetement')
- self.texteCuve += self.affecteValeurDefaut('EpaisseurRevetement_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.affecteValeurDefaut('LigamentExterneMin')
- self.texteCuve += self.affecteValeurDefaut('LigamentExterneMin_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.affecteValeurDefaut('NombreNoeudsMaillage')
-
-
- # Rubrique CARACTERISTIQUES DU DEFAUT
- self.texteCuve += self.rubrique('CARACTERISTIQUES DU DEFAUT')
-
- if self.dico_mot.has_key('TypeInitial'):
- self.texteCuve += self.affecteValeur('TypeInitial', self.valeurproposee[str(self.dico_mot["TypeInitial"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('TypeInitial')
-
- self.texteCuve+="# Fournir ORIEDEF, (PROFDEF, PROFDEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si DSR, fournir OPTLONG, (LONGDEF,LONGDEF_MESSAGE) ou (PROFSURLONG,PROFSURLONG_MESSAGE,LONGCONST)"+"\n"
- self.texteCuve+="# - Si DECALE, fournir OPTLONG, (LONGDEF,LONGDEF_MESSAGE) ou (PROFSURLONG,PROFSURLONG_MESSAGE,LONGCONST), DECATYP, (DECANOR,DECANOR_MESSAGE) ou (DECADEF,DECADEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si DEBOUCHANT, fournir IRWIN"+"\n"
- self.texteCuve+="# Fournir (ANGLDEF, ANGLDEF_MESSAGE), (ALTIDEF, ALTIDEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si DSR ou DECALE, fournir POINDEF"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Remarque :"+"\n"
- self.texteCuve+="# - si DSR ou DECALE, dans la rubrique 'Modele de tenacite', fournir ATTNCORRBETA (ne pas fournir CORRIRWIN)"+"\n"
- self.texteCuve+="# - si DEBOUCHANT, dans la rubrique 'Modele de tenacite', fournir CORRIRWIN (ne pas fournir ATTNCORRBETA)"+"\n"
-
- self.texteCuve+="#"+"\n"
-
- if self.dico_mot.has_key('Orientation'):
- self.texteCuve += self.affecteValeur('Orientation', self.valeurproposee[str(self.dico_mot["Orientation"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('Orientation')
-
- if self.dico_mot.has_key('Position'):
- self.texteCuve += self.affecteValeur('Position', self.valeurproposee[str(self.dico_mot["Position"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('Position')
-
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('ProfondeurRadiale')
- self.texteCuve += self.ecritVariable('ProfondeurRadiale_mess')
-
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('TypeInitial'):
- if str(self.dico_mot["TypeInitial"])!='Defaut Debouchant':
- if self.dico_mot.has_key('ModeCalculLongueur'):
- self.texteCuve += self.affecteValeur('ModeCalculLongueur', self.valeurproposee[str(self.dico_mot["ModeCalculLongueur"])])
- if str(self.dico_mot["ModeCalculLongueur"])=='Valeur':
- self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
- self.texteCuve += self.ecritVariable('Longueur')
- self.texteCuve += self.ecritVariable('Longueur_mess')
- if str(self.dico_mot["ModeCalculLongueur"])=='Fonction affine de la profondeur':
- self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
- self.texteCuve += self.ecritVariable('CoefDirecteur')
- self.texteCuve += self.ecritVariable('CoefDirecteur_mess')
- self.texteCuve += self.ecritVariable('Constante')
- else :
- self.texteCuve += self.affecteValeurDefaut('ModeCalculLongueur')
- self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
- self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
- self.texteCuve += self.affecteValeurDefaut('Longueur')
- self.texteCuve += self.affecteValeurDefaut('Longueur_mess')
-
- if self.dico_mot.has_key('TypeInitial'):
- if str(self.dico_mot["TypeInitial"])=='Defaut Decale':
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('ModeCalculDecalage'):
- self.texteCuve += self.affecteValeur('ModeCalculDecalage', self.valeurproposee[str(self.dico_mot["ModeCalculDecalage"])])
- if str(self.dico_mot["ModeCalculDecalage"])=='Valeur normalisee':
- self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
- self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
- self.texteCuve += self.ecritVariable('DecalageNormalise')
- self.texteCuve += self.ecritVariable('DecalageNormalise_mess')
- if str(self.dico_mot["ModeCalculDecalage"])=='Valeur':
- self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
- self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
- self.texteCuve += self.ecritVariable('DecalageRadial')
- self.texteCuve += self.ecritVariable('DecalageRadial_mess')
- else :
- self.texteCuve += self.affecteValeurDefaut('ModeCalculDecalage')
- self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
- self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
- self.texteCuve += self.affecteValeurDefaut('DecalageRadial')
- self.texteCuve += self.affecteValeurDefaut('DecalageRadial_mess')
-
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('Azimut')
- self.texteCuve += self.ecritVariable('Azimut_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('Altitude')
- self.texteCuve += self.ecritVariable('Altitude_mess')
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('Pointe'):
- self.texteCuve += self.affecteValeur('Pointe', self.valeurproposee[str(self.dico_mot["Pointe"])])
- #else :
- # self.texteCuve += self.affecteValeurDefaut('Pointe')
-
- # Rubrique MODELES FLUENCE, IRRADIATION, TENACITE
- self.texteCuve += self.rubrique('MODELES FLUENCE, IRRADIATION, TENACITE')
- self.texteCuve += self.sousRubrique('Modele d attenuation de la fluence dans l epaisseur','A.')
-
- if self.dico_mot.has_key('ModeleFluence'):
- self.texteCuve += self.affecteValeur('ModeleFluence', self.valeurproposee[str(self.dico_mot["ModeleFluence"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('ModeleFluence')
-
- self.texteCuve+="# - si France, fournir KPFRANCE"+"\n"
- self.texteCuve+="# - si USNRC, fournir KPUS"+"\n"
- self.texteCuve+="# - si modele GD_Cuve, fournir COEFFLUENCE1, COEFFLUENCE2, ..., COEFFLUENCE9, COEFFLUENCE10"+"\n"
- self.texteCuve+="#"+"\n"
-
- self.texteCuve += self.ecritVariable('ZoneActiveCoeur_AltitudeSup')
- self.texteCuve += self.ecritVariable('ZoneActiveCoeur_AltitudeInf')
- self.texteCuve += self.ecritVariable('FluenceMax')
- if self.dico_mot.has_key('ModeleFluence'):
- if str(self.dico_mot["ModeleFluence"])=='Exponentiel sans revetement k=12.7 (France)':
- self.texteCuve += self.ecritVariable('KPFrance')
- if str(self.dico_mot["ModeleFluence"])=='Regulatory Guide 1.99 rev 2 (USNRC)':
- self.texteCuve += self.ecritVariable('KPUS')
- if str(self.dico_mot["ModeleFluence"])=='Grand developpement (GD_Cuve)':
- self.texteCuve += self.ecritVariable('Azimut_0deg')
- self.texteCuve += self.ecritVariable('Azimut_5deg')
- self.texteCuve += self.ecritVariable('Azimut_10deg')
- self.texteCuve += self.ecritVariable('Azimut_15deg')
- self.texteCuve += self.ecritVariable('Azimut_20deg')
- self.texteCuve += self.ecritVariable('Azimut_25deg')
- self.texteCuve += self.ecritVariable('Azimut_30deg')
- self.texteCuve += self.ecritVariable('Azimut_35deg')
- self.texteCuve += self.ecritVariable('Azimut_40deg')
- self.texteCuve += self.ecritVariable('Azimut_45deg')
-
- self.texteCuve += self.sousRubrique('Irradiation','B.')
-
- if self.dico_mot.has_key('TypeIrradiation'):
- self.texteCuve += self.affecteValeur('TypeIrradiation', self.valeurproposee[str(self.dico_mot["TypeIrradiation"])])
-
- if str(self.dico_mot["TypeIrradiation"])=='RTndt de la cuve a l instant de l analyse':
- self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
- self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('RTNDT')
-
- if str(self.dico_mot["TypeIrradiation"])=='Modele d irradiation':
- self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
- self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('ModeleIrradiation'):
- self.texteCuve += self.affecteValeur('ModeleIrradiation', self.valeurproposee[str(self.dico_mot["ModeleIrradiation"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('ModeleIrradiation')
- self.texteCuve+="# - pour tout modele, fournir (CU, CU_MESSAGE),"+"\n"
- self.texteCuve+="# (NI, NI_MESSAGE),"+"\n"
- self.texteCuve+="# - si HOUSSIN, PERSOZ, LEFEBVRE, BRILLAUD, LEFEBnew, fournir (P, P_MESSAGE)"+"\n"
- self.texteCuve+="# - pour tout modele, fournir (RTimoy, RTimoy_MESSAGE),"+"\n"
- self.texteCuve+="# - si USNRCsoud ou USNRCmdb, fournir (RTicov, RTicov_MESSAGE)"+"\n"
- self.texteCuve+="# (USectDRT, USectDRT_MESSAGE)"+"\n"
- self.texteCuve+="# - pour tout modele, fournir (nbectDRTNDT, nbectDRTNDT_MESSAGE)"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('TeneurCuivre')
- self.texteCuve += self.ecritVariable('TeneurCuivre_mess')
- self.texteCuve += self.ecritVariable('TeneurNickel')
- self.texteCuve += self.ecritVariable('TeneurNickel_mess')
- if str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Houssin' or str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Persoz' or str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Lefebvre' or str(self.dico_mot["ModeleIrradiation"])=='Joint Soude : formulation de FIM/FIS Brillaud' or str(self.dico_mot["ModeleIrradiation"])=='Formule de FIM/FIS Lefebvre modifiee':
- self.texteCuve += self.ecritVariable('TeneurPhosphore')
- self.texteCuve += self.ecritVariable('TeneurPhosphore_mess')
- self.texteCuve += self.ecritVariable('MoyenneRTndt')
- self.texteCuve += self.ecritVariable('MoyenneRTndt_mess')
- if str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : Regulatory Guide 1.00 rev 2' or str(self.dico_mot["ModeleIrradiation"])=='Joint Soude : Regulatory Guide 1.00 rev 2':
- self.texteCuve += self.ecritVariable('CoefVariationRTndt')
- self.texteCuve += self.ecritVariable('CoefVariationRTndt_mess')
- self.texteCuve += self.ecritVariable('EcartTypeRTndt')
- self.texteCuve += self.ecritVariable('EcartTypeRTndt_mess')
- self.texteCuve += self.ecritVariable('NombreEcartTypeRTndt')
- self.texteCuve += self.ecritVariable('NombreEcartTypeRTndt_mess')
- else :
- self.texteCuve += self.affecteValeurDefaut('TypeIrradiation')
- self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
- self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.affecteValeurDefaut('RTNDT')
-
- self.texteCuve += self.sousRubrique('Modele de tenacite','C.')
- self.texteCuve+="# tenacite d amorcage"+"\n"
-
- if self.dico_mot.has_key('ModeleTenacite'):
- self.texteCuve += self.affecteValeur('ModeleTenacite', self.valeurproposee[str(self.dico_mot["ModeleTenacite"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('ModeleTenacite')
- self.texteCuve+="# - si RCC-M, RCC-M_pal, Houssin_RC, fournir (nbectKIc, nbectKIc_MESSAGE), KICPAL, KICCDV"+"\n"
- self.texteCuve+="# - si RCC-M_exp, fournir (nbectKIc, nbectKIc_MESSAGE), KICCDV"+"\n"
- self.texteCuve+="# - si RCC-M_simpl, ne rien fournir"+"\n"
- self.texteCuve+="# - si Frama, LOGWOLF, fournir (nbectKIc, nbectKIc_MESSAGE)"+"\n"
- self.texteCuve+="# - si REME, ORNL, WEIB3, WEIB2, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC"+"\n"
- self.texteCuve+="# - si Wallin, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC,"+"\n"
- self.texteCuve+="# puis T0WALLIN"+"\n"
- self.texteCuve+="# - si WEIB-GEN, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC,"+"\n"
- self.texteCuve+="# puis A1, A2, A3, B1, B2, B3, C1, C2, C3"+"\n"
- self.texteCuve+="# loi de Weibull P(K<x) = 1 - exp{-[ (x-a(T)) / b(T) ]^c(T) }"+"\n"
- self.texteCuve+="# avec a(T) = A1 + A2*exp[A3*(T-RTNDT)]"+"\n"
- self.texteCuve+="# b(T) = B1 + B2*exp[B3*(T-RTNDT)]"+"\n"
- self.texteCuve+="# c(T) = C1 + C2*exp[C3*(T-RTNDT)]"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Correction de la longueur"+"\n"
- self.texteCuve += self.ecritVariable('ChoixCorrectionLongueur')
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('ModeleTenacite'):
- if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' or str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve (REME)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb01 (etude ORNL)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb03' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb02' or str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee' :
- if self.dico_mot.has_key('NombreCaracteristique'):
- self.texteCuve += self.affecteValeur('NombreCaracteristique', self.valeurproposee[str(self.dico_mot["NombreCaracteristique"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('NombreCaracteristique')
- self.texteCuve+="# - Si NBCARAC = QUANTILE, fournir (nbectKIc, nbectKIc_MESSAGE)"+"\n"
- self.texteCuve+="# - Si NBCARAC = ORDRE, fournir (fractKIc, fractKIc_MESSAGE)"+"\n"
-
- if str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME coefficient=2' or str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME avec KI=KIpalier' or str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME coefficient=2.33 (Houssin)' :
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
- self.texteCuve += self.ecritVariable('PalierDuctile_KIc')
- self.texteCuve += self.ecritVariable('CoefficientVariation_KIc')
-
- if str(self.dico_mot["ModeleTenacite"])=='Exponentielle n\xb01 (Frama)' or str(self.dico_mot["ModeleTenacite"])=='Exponentielle n\xb02 (LOGWOLF)' :
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
-
- if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve (REME)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb01 (etude ORNL)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb03' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb02' or str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' or str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee':
- if str(self.dico_mot["NombreCaracteristique"])=='Quantile' :
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
- if str(self.dico_mot["NombreCaracteristique"])=='Ordre' :
- self.texteCuve += self.ecritVariable('Fractile_KIc')
- self.texteCuve += self.ecritVariable('Fractile_KIc_mess')
-
- if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' :
- self.texteCuve += self.ecritVariable('Temperature_KIc100')
-
- if str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee' :
- self.texteCuve += self.ecritVariable('A1')
- self.texteCuve += self.ecritVariable('A2')
- self.texteCuve += self.ecritVariable('A3')
- self.texteCuve += self.ecritVariable('B1')
- self.texteCuve += self.ecritVariable('B2')
- self.texteCuve += self.ecritVariable('B3')
- self.texteCuve += self.ecritVariable('C1')
- self.texteCuve += self.ecritVariable('C2')
- self.texteCuve += self.ecritVariable('C3')
- else :
- self.texteCuve += self.affecteValeurDefaut('NbEcartType_MoyKIc')
- self.texteCuve += self.affecteValeurDefaut('NbEcartType_MoyKIc_mess')
- self.texteCuve += self.affecteValeurDefaut('PalierDuctile_KIc')
- self.texteCuve += self.affecteValeurDefaut('CoefficientVariation_KIc')
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Correction plastique"+"\n"
-
- #DTV if self.dico_mot.has_key('TypeInitial'):
- #DTV if str(self.dico_mot["TypeInitial"])!='Defaut Debouchant':
- if self.dico_mot.has_key('CorrectionPlastique'):
- if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique BETA (pour DSR et defaut decale)':
- self.texteCuve += self.affecteValeur('AttnCorrBeta','NON')
- if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique BETA attenuee (pour DSR et defaut decale)':
- self.texteCuve += self.affecteValeur('AttnCorrBeta','OUI')
- if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique IRWIN (pour defaut debouchant)':
- self.texteCuve += self.affecteValeur('CorrIrwin','OUI')
- else :
- self.texteCuve += self.affecteValeurDefaut('AttnCorrBeta')
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Prise en compte de l'arret de fissure si DETERMINISTE"+"\n"
-
- self.texteCuve += self.ecritVariable('ArretDeFissure')
- self.texteCuve+="# - si ARRETFISSURE=OUI, fournir (INCRDEF, INCRDEF_MESSAGE), nbectKIa, KIAPAL, KIACDV"+"\n"
- if self.dico_mot.has_key('ArretDeFissure'):
- if str(self.dico_mot["ArretDeFissure"])=='OUI':
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('IncrementTailleFissure')
- self.texteCuve += self.ecritVariable('IncrementTailleFissure_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Parametres pour le calcul de la tenacite a l arret"+"\n"
- self.texteCuve += self.ecritVariable('NbEcartType_MoyKIa')
- self.texteCuve += self.ecritVariable('PalierDuctile_KIa')
- self.texteCuve += self.ecritVariable('CoefficientVariation_KIa')
-
- # Rubrique Etat initial
- self.texteCuve += self.rubrique('ETAT INITIAL')
-
- self.texteCuve+="# Profil radial de la temperature initiale dans la cuve"+"\n"
- self.texteCuve+="# abscisse (m) / temp initiale dans la cuve"+"\n"
- self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- if self.dico_mot.has_key('ProfilRadial_TemperatureInitiale'):
- self.imprime(2,(self.dico_mot["ProfilRadial_TemperatureInitiale"]))
- self.texteCuve += self.amontAval('Amont_TemperatureInitiale','Aval_TemperatureInitiale')
- else :
- self.texteCuve+=" 1.9940 287."+"\n"
- self.texteCuve+="CC"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Profils radiaux des contraintes residuelles dans la cuve"+"\n"
- self.texteCuve+="# abscisse (m) / sigma rr / sigma tt / sigma zz"+"\n"
- self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- if self.dico_mot.has_key('ProfilRadial_ContraintesInitiales'):
- self.imprime(4,(self.dico_mot["ProfilRadial_ContraintesInitiales"]))
- self.texteCuve += self.amontAval('Amont_ContraintesInitiales','Aval_ContraintesInitiales')
- else :
- self.texteCuve+="1.994 0. 0. 0."+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Prise en compte de coefficients sur les contraintes"+"\n"
- self.texteCuve += self.ecritVariable('ChoixCoefficientChargement')
- if str(self.dico_mot["ChoixCoefficientChargement"])=='OUI':
- self.texteCuve += self.ecritVariable('CoefficientDuctile')
- self.texteCuve += self.ecritVariable('CoefficientFragile')
- else :
- self.texteCuve+="#"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Instant initial"+"\n"
- self.texteCuve += self.ecritVariable('InstantInitialisation')
-
- # Rubrique CARACTERISTIQUES DU REVETEMENT
- self.texteCuve += self.rubrique('CARACTERISTIQUES DU REVETEMENT')
-
- if self.dico_mot.has_key('ConditionLimiteThermiqueREV'):
- self.texteCuve += self.affecteValeur('ConditionLimiteThermiqueREV', self.valeurproposee[str(self.dico_mot["ConditionLimiteThermiqueREV"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('ConditionLimiteThermiqueREV')
- self.texteCuve+="# - si CHALEUR, fournir Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.texteCuve+="# - si ENTHALPIE, fournir Temperature (degC) / enthalpie (J/kg)"+"\n"
- self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- self.texteCuve+="#"+"\n"
- if self.dico_mot.has_key('ChaleurREV_Fct_Temperature'):
- self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.imprime(2,(self.dico_mot["ChaleurREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_ChaleurREV','Aval_ChaleurREV')
- elif self.dico_mot.has_key('EnthalpieREV_Fct_Temperature'):
- self.texteCuve+="# Temperature (degC) / enthalpie (J/kg)"+"\n"
- self.imprime(2,(self.dico_mot["EnthalpieREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_EnthalpieREV','Aval_EnthalpieREV')
- else :
- self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.texteCuve+="0. 36.03E5 "+"\n"
- self.texteCuve+="20. 36.03E5 "+"\n"
- self.texteCuve+="200. 41.65E5 "+"\n"
- self.texteCuve+="350. 43.47E5 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / conductivite thermique (W/m/degC)"+"\n"
- if self.dico_mot.has_key('ConductiviteREV_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["ConductiviteREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_ConductiviteREV','Aval_ConductiviteREV')
- else :
- self.texteCuve+="0. 14.7 "+"\n"
- self.texteCuve+="20. 14.7 "+"\n"
- self.texteCuve+="200. 17.2 "+"\n"
- self.texteCuve+="350. 19.3 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / module d'Young (MPa)"+"\n"
- if self.dico_mot.has_key('ModuleYoungREV_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["ModuleYoungREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_ModuleYoungREV','Aval_ModuleYoungREV')
- else :
- self.texteCuve+="0. 198500. "+"\n"
- self.texteCuve+="20. 197000. "+"\n"
- self.texteCuve+="200. 184000. "+"\n"
- self.texteCuve+="350. 172000. "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / coefficient de dilatation thermique (degC-1)"+"\n"
- if self.dico_mot.has_key('CoeffDilatThermREV_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["CoeffDilatThermREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_CoeffDilatThermREV','Aval_CoeffDilatThermREV')
- else :
- self.texteCuve+="0. 16.40E-6 "+"\n"
- self.texteCuve+="20. 16.40E-6 "+"\n"
- self.texteCuve+="200. 17.20E-6 "+"\n"
- self.texteCuve+="350. 17.77E-6 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / limite d'elasticite (MPa)"+"\n"
- if self.dico_mot.has_key('LimiteElasticiteREV_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["LimiteElasticiteREV_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_LimiteElasticiteREV','Aval_LimiteElasticiteREV')
- else :
- self.texteCuve+="0. 380. "+"\n"
- self.texteCuve+="20. 370. "+"\n"
- self.texteCuve+="100. 330. "+"\n"
- self.texteCuve+="300. 270. "+"\n"
- self.texteCuve+="LL"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('TemperatureDeformationNulleREV')
- self.texteCuve += self.ecritVariable('TemperaturePourCoefDilatThermREV')
- self.texteCuve += self.ecritVariable('CoefficientPoissonREV')
-
- # Rubrique CARACTERISTIQUES DU METAL DE BASE
- self.texteCuve += self.rubrique('CARACTERISTIQUES DU METAL DE BASE')
-
- if self.dico_mot.has_key('ConditionLimiteThermiqueMDB'):
- self.texteCuve += self.affecteValeur('ConditionLimiteThermiqueMDB', self.valeurproposee[str(self.dico_mot["ConditionLimiteThermiqueMDB"])])
- else :
- self.texteCuve += self.affecteValeurDefaut('ConditionLimiteThermiqueMDB')
-
- self.texteCuve+="# - si CHALEUR, fournir Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.texteCuve+="# - si ENTHALPIE, fournir Temperature (degC) / enthalpie (J/kg)"+"\n"
- self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- self.texteCuve+="#"+"\n"
-
- if self.dico_mot.has_key('ChaleurMDB_Fct_Temperature'):
- self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.imprime(2,(self.dico_mot["ChaleurMDB_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_ChaleurMDB','Aval_ChaleurMDB')
- elif self.dico_mot.has_key('EnthalpieMDB_Fct_Temperature'):
- self.texteCuve+="# Temperature (degC) / enthalpie (J/kg)"+"\n"
- self.imprime(2,(self.dico_mot["EnthalpieMDB_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_EnthalpieMDB','Aval_EnthalpieMDB')
- else :
- self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
- self.texteCuve+="0. 34.88E+05 "+"\n"
- self.texteCuve+="20. 34.88E+05 "+"\n"
- self.texteCuve+="200. 40.87E+05 "+"\n"
- self.texteCuve+="350. 46.02E+05 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / conductivite thermique (W/m/degC)"+"\n"
- if self.dico_mot.has_key('ConductiviteMDB_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["ConductiviteMDB_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_ConductiviteMDB','Aval_ConductiviteMDB')
- else :
- self.texteCuve+="0. 37.7 "+"\n"
- self.texteCuve+="20. 37.7 "+"\n"
- self.texteCuve+="200. 40.5 "+"\n"
- self.texteCuve+="350. 38.7 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / module d'Young (MPa)"+"\n"
- if self.dico_mot.has_key('ModuleYoungMDB_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["ModuleYoungMDB_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Aval_ModuleYoungMDB','Aval_ModuleYoungMDB')
- else :
- self.texteCuve+="0. 205000. "+"\n"
- self.texteCuve+="20. 204000. "+"\n"
- self.texteCuve+="200. 193000. "+"\n"
- self.texteCuve+="350. 180000. "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Temperature (degC) / coefficient de dilatation thermique (degC-1)"+"\n"
- if self.dico_mot.has_key('CoeffDilatThermMDB_Fct_Temperature'):
- self.imprime(2,(self.dico_mot["CoeffDilatThermMDB_Fct_Temperature"]))
- self.texteCuve += self.amontAval('Amont_CoeffDilatThermMDB','Aval_CoeffDilatThermMDB')
- else :
- self.texteCuve+="0. 11.22E-6 "+"\n"
- self.texteCuve+="20. 11.22E-6 "+"\n"
- self.texteCuve+="200. 12.47E-6 "+"\n"
- self.texteCuve+="350. 13.08E-6 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('TemperatureDeformationNulleMDB')
- self.texteCuve += self.ecritVariable('TemperaturePourCoefDilatThermMDB')
- self.texteCuve += self.ecritVariable('CoefficientPoissonMDB')
-
- # Rubrique CARACTERISTIQUES DU TRANSITOIRE MECANIQUE-THERMOHYDRAULIQUE
- self.texteCuve += self.rubrique('CARACTERISTIQUES DU TRANSITOIRE MECANIQUE-THERMOHYDRAULIQUE')
- self.texteCuve += self.sousRubrique('Chargement mecanique : transitoire de pression','')
-
- self.texteCuve+="# instant (s) / pression (MPa)"+"\n"
- self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_Pression'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_Pression"]))
- self.texteCuve += self.amontAval('Amont_Pression','Aval_Pression')
- else :
- self.texteCuve+="0. 15.5 "+"\n"
- self.texteCuve+="20. 0.1 "+"\n"
- self.texteCuve+="200. 0.1 "+"\n"
- self.texteCuve+="1000. 0.1 "+"\n"
- self.texteCuve+="CC"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- self.texteCuve += self.sousRubrique('Chargement thermo-hydraulique','')
- if self.dico_mot.has_key('TypeConditionLimiteThermique'):
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.texteCuve += self.affecteValeur('TypeConditionLimiteThermique', self.valeurproposee[str(self.dico_mot["TypeConditionLimiteThermique"])])
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- else :
- self.texteCuve += self.affecteValeurDefaut('TypeConditionLimiteThermique')
-
- self.texteCuve+="# - si TEMP_IMPO, fournir Instant (s) / Temperature imposee (degC)"+"\n"
- self.texteCuve+="# - si FLUX_REP, fournir Instant (s) / Flux de chaleur impose (W/m2)"+"\n"
- self.texteCuve+="# - si ECHANGE, fournir Instant (s) / Temperature impose (degC)"+"\n"
- self.texteCuve+="# puis Instant (s) / Coefficient d echange (W/m2/K)"+"\n"
- self.texteCuve+="# - si DEBIT, fournir Instant (s) / Debit massique (kg/s)"+"\n"
- self.texteCuve+="# puis Instant (s) / Temperature d injection de securite (degC)"+"\n"
- self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
- self.texteCuve+="# puis Modele CREARE : "+"\n"
- self.texteCuve+="# Instants(s) / Volume de melange CREARE (m3)"+"\n"
- self.texteCuve+="# puis (T0, T0_MESSAGE), (SE, SE_MESSAGE)"+"\n"
- self.texteCuve+="# - si TEMP_FLU, fournir Instant (s) / Temperature du fluide (degC)"+"\n"
- self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
- self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
- self.texteCuve+="# - si TFDEBIT, fournir INST_PCN et TIS"+"\n"
- self.texteCuve+="# fournir Instant (s) / Temperature du fluide (degC)"+"\n"
- self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
- self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
- self.texteCuve+="# puis Modele CREARE : "+"\n"
- self.texteCuve+="# Instants(s) / Volume de melange CREARE (m3)"+"\n"
- self.texteCuve+="# puis (T0, T0_MESSAGE), (SE, SE_MESSAGE)"+"\n"
- self.texteCuve+="# - si APRP, fournir INSTANT1, INSTANT2, INSTANT3, QACCU, QIS, (TIS, TIS_MESSAGE)"+"\n"
- self.texteCuve+="# puis Instant (s) / Temperature du fluide (degC) tel que dans l'exemple ci-dessous"+"\n"
- self.texteCuve+="# 0. 286."+"\n"
- self.texteCuve+="# 12. 20. # 1er palier à T=TACCU"+"\n"
- self.texteCuve+="# 20. 20. # idem que ci-dessus : T=TACCU"+"\n"
- self.texteCuve+="# 21. 999999. # 2nd palier à T=T1 : sera remplace par nouvelle valeur calculee par fonction idoine"+"\n"
- self.texteCuve+="# 45. 999999. # idem que ci-dessus : T=T1"+"\n"
- self.texteCuve+="# 46. 9. # 3eme palier à T=TIS, temperature d injection de securite : sa valeur est reactualisee avec la donnee de TIS ci-dessous"+"\n"
- self.texteCuve+="# 1870. 9. # idem que ci-dessus : T=TIS"+"\n"
- self.texteCuve+="# 1871. 80."+"\n"
- self.texteCuve+="# 3871. 80."+"\n"
- self.texteCuve+="# CC # C pour Constant, E pour Exclu, L pour Lineaire"+"\n"
- self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
- self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
- self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
- self.texteCuve+="#"+"\n"
-
- if self.dico_mot.has_key('TypeConditionLimiteThermique'):
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#"+"\n"
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.texteCuve += self.ecritVariable('InstantPerteCirculationNaturelle')
- self.texteCuve += self.ecritVariable('TempInjectionSecurite')
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP':
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Definition de parametres pour le cas d un transitoire APRP"+"\n"
- self.texteCuve += self.ecritVariable('Instant_1')
- self.texteCuve += self.ecritVariable('Instant_2')
- self.texteCuve += self.ecritVariable('Instant_3')
- self.texteCuve += self.ecritVariable('DebitAccumule')
- self.texteCuve += self.ecritVariable('DebitInjectionSecurite')
- self.texteCuve += self.ecritVariable('TempInjectionSecurite')
- self.texteCuve += self.ecritVariable('TempInjectionSecurite_mess')
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee en paroi' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et coefficient echange' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP' :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / temperature imposee du fluide (degC)"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_TemperatureImposeeFluide'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_TemperatureImposeeFluide"]))
- self.texteCuve += self.amontAval('Amont_TemperatureImposeeFluide','Aval_TemperatureImposeeFluide')
- else :
- self.texteCuve+="0. 286. "+"\n"
- self.texteCuve+="20. 20. "+"\n"
- self.texteCuve+="200. 7. "+"\n"
- self.texteCuve+="1000. 80. "+"\n"
- self.texteCuve+="CC"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Flux de chaleur impose en paroi':
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / flux de chaleur impose (W/m2)"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_FluxChaleur'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_FluxChaleur"]))
- self.texteCuve += self.amontAval('Amont_FluxChaleur','Aval_FluxChaleur')
- self.texteCuve+="#"+"\n"
- else :
- self.texteCuve+="0. -0. "+"\n"
- self.texteCuve+="20. -366290. "+"\n"
- self.texteCuve+="200. -121076. "+"\n"
- self.texteCuve+="1000. -56372."+"\n"
- self.texteCuve+="CC"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP':
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / Debit d injection de securite (kg/s)"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_DebitInjection'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_DebitInjection"]))
- self.texteCuve += self.amontAval('Amont_DebitInjection','Aval_DebitInjection')
- else :
- self.texteCuve+="0. 4590. "+"\n"
- self.texteCuve+="20. 4590. "+"\n"
- self.texteCuve+="200. 340. "+"\n"
- self.texteCuve+="1000. 31.1 "+"\n"
- self.texteCuve+="CC"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et coefficient echange' :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / Coefficient d echange (W/m2/K)"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_CoefficientEchange'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_CoefficientEchange"]))
- self.texteCuve += self.amontAval('Amont_CoefficientEchange','Aval_CoefficientEchange')
- else :
- self.texteCuve+="0. 138454. "+"\n"
- self.texteCuve+="20. 19972. "+"\n"
- self.texteCuve+="200. 2668. "+"\n"
- self.texteCuve+="1000. 2668. "+"\n"
- self.texteCuve+="CC"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / Debit massique (kg/s)"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_DebitMassique'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_DebitMassique"]))
- self.texteCuve += self.amontAval('Amont_DebitMassique','Aval_DebitMassique')
- else :
- self.texteCuve+="0. 18.4 "+"\n"
- self.texteCuve+="20. 18.4 "+"\n"
- self.texteCuve+="200. 31.1 "+"\n"
- self.texteCuve+="1000. 31.1 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / Temperature d injection de securite (degC)"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_TemperatureInjection'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_TemperatureInjection"]))
- self.texteCuve += self.amontAval('Amont_TemperatureInjection','Aval_TemperatureInjection')
- else :
- self.texteCuve+="0. 7.0 "+"\n"
- self.texteCuve+="20. 7.0 "+"\n"
- self.texteCuve+="200. 7.0 "+"\n"
- self.texteCuve+="1000. 7.0 "+"\n"
- self.texteCuve+="CC"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP' :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Transitoire des coefficients d echange : modele VESTALE"+"\n"
- self.texteCuve+="#"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.texteCuve += self.ecritVariable('DiametreHydraulique')
- self.texteCuve += self.ecritVariable('DiametreHydraulique_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('SectionEspaceAnnulaire')
- self.texteCuve += self.ecritVariable('SectionEspaceAnnulaire_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('HauteurCaracConvectionNaturelle')
- self.texteCuve += self.ecritVariable('HauteurCaracConvectionNaturelle_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('CritereConvergenceRelative')
- self.texteCuve += self.ecritVariable('CoefficientsVestale')
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
-
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# Transitoire de temperature fluide locale : modele CREARE"+"\n"
- self.texteCuve+="#"+"\n"
- #self.texteCuve += self.ecritVariable('VolumeMelange_CREARE')
- self.texteCuve+="# instant (s) / Volume de melange CREARE (m3)"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- if self.dico_mot.has_key('ProfilTemporel_VolumeMelange_CREARE'):
- self.imprime(2,(self.dico_mot["ProfilTemporel_VolumeMelange_CREARE"]))
- self.texteCuve += self.amontAval('Amont_VolumeMelange_CREARE','Aval_VolumeMelange_CREARE')
- else :
- self.texteCuve+="0. 14.3 "+"\n"
- self.texteCuve+="20. 14.2 "+"\n"
- self.texteCuve+="CC"+"\n"
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- else :
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('TemperatureInitiale_CREARE')
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- self.texteCuve += self.ecritVariable('TemperatureInitiale_CREARE_mess')
- self.texteCuve+="#"+"\n"
- self.texteCuve += self.ecritVariable('SurfaceEchange_FluideStructure')
- self.texteCuve += self.ecritVariable('SurfaceEchange_FluideStructure_mess')
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
- self.texteCuve+="#BLOC_TFDEBIT"+"\n"
- else :
- self.texteCuve+="#"+"\n"
- self.texteCuve+="# instant (s) / temperature imposee du fluide (degC)"+"\n"
- self.texteCuve+="0. 286. "+"\n"
- self.texteCuve+="20. 20. "+"\n"
- self.texteCuve+="200. 7. "+"\n"
- self.texteCuve+="1000. 80. "+"\n"
- self.texteCuve+="CC"+"\n"
- self.texteCuve+="#"+"\n"
- self.texteCuve+="############################################################################################"+"\n"
-
-
- def genereTexteTFDEBIT(self):
-
- self.texteTFDEBIT = ""
-
- if self.dico_mot.has_key('TypeConditionLimiteThermique'):
- if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' :
- self.texteTFDEBIT+="# instant (s) / pression (MPa)"+"\n"
- self.texteTFDEBIT+=" "+"\n"
- self.imprime2(2,(self.dico_mot["ProfilTemporel_Pression"]))
- self.texteTFDEBIT += self.amontAval('Amont_Pression','Aval_Pression')
-
- # self.texteTFDEBIT+=" "+"\n"
- # self.texteTFDEBIT += self.affecteValeur('TypeConditionLimiteThermique', self.valeurproposee[str(self.dico_mot["TypeConditionLimiteThermique"])])
-
- self.texteTFDEBIT+=" "+"\n"
- self.imprime2(2,(self.dico_mot["ProfilTemporel_TemperatureImposeeFluide"]))
- self.texteTFDEBIT += self.amontAval('Amont_TemperatureImposeeFluide','Aval_TemperatureImposeeFluide')
-
- self.texteTFDEBIT+=" "+"\n"
- self.imprime2(2,(self.dico_mot["ProfilTemporel_DebitInjection"]))
- self.texteTFDEBIT += self.amontAval('Amont_DebitInjection','Aval_DebitInjection')
-
- self.texteTFDEBIT+=" "+"\n"
- self.texteTFDEBIT += self.ecritVariable('DiametreHydraulique')
- self.texteTFDEBIT += self.ecritVariable('DiametreHydraulique_mess')
- self.texteTFDEBIT+="#"+"\n"
- self.texteTFDEBIT += self.ecritVariable('SectionEspaceAnnulaire')
- self.texteTFDEBIT += self.ecritVariable('SectionEspaceAnnulaire_mess')
- self.texteTFDEBIT+="#"+"\n"
- self.texteTFDEBIT += self.ecritVariable('HauteurCaracConvectionNaturelle')
- self.texteTFDEBIT += self.ecritVariable('HauteurCaracConvectionNaturelle_mess')
- self.texteTFDEBIT+="#"+"\n"
- self.texteTFDEBIT += self.ecritVariable('CritereConvergenceRelative')
- self.texteTFDEBIT += self.ecritVariable('CoefficientsVestale')
-
- self.texteTFDEBIT+=" "+"\n"
- self.imprime2(2,(self.dico_mot["ProfilTemporel_VolumeMelange_CREARE"]))
- self.texteTFDEBIT += self.amontAval('Amont_VolumeMelange_CREARE','Aval_VolumeMelange_CREARE')
-
- self.texteTFDEBIT+=" "+"\n"
- self.texteTFDEBIT += self.ecritVariable('SurfaceEchange_FluideStructure')
- self.texteTFDEBIT += self.ecritVariable('SurfaceEchange_FluideStructure_mess')
- self.texteTFDEBIT += self.ecritVariable('InstantPerteCirculationNaturelle')
- self.texteTFDEBIT += self.ecritVariable('TempInjectionSecurite')
- else :
- self.texteTFDEBIT+="Fichier inutile"+"\n"
-
-
- def imprime(self,nbdeColonnes,valeur):
- self.liste=[]
- self.transforme(valeur)
- i=0
- while i < len(self.liste):
- for k in range(nbdeColonnes) :
- self.texteCuve+=str(self.liste[i+k]) +" "
- self.texteCuve+="\n"
- i=i+k+1
-
- def imprime2(self,nbdeColonnes,valeur):
- self.liste=[]
- self.transforme(valeur)
- i=0
- while i < len(self.liste):
- for k in range(nbdeColonnes) :
- self.texteTFDEBIT+=str(self.liste[i+k]) +" "
- self.texteTFDEBIT+="\n"
- i=i+k+1
-
-
- def transforme(self,valeur):
- for i in valeur :
- if type(i) == tuple :
- self.transforme(i)
- else :
- self.liste.append(i)
-
-
-
-
fileDico = fn[:fn.rfind(".")] + '.py'
f = open( str(fileDico), 'wb')
f.write( self.texteDico )
- print self.texteDico
+ print (self.texteDico)
f.close()
#----------------------------------------------------------------------------------------
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- homard pour EFICAS.
-
-"""
-import traceback
-import types,string,re
-
-from Noyau import N_CR
-from Noyau.N_utils import repr_float
-from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
-from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
-from Accas import GEOM,ASSD,MCNUPLET
-from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
-from Formatage import Formatage
-from generator_python import PythonGenerator
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'homard',
- # La factory pour creer une instance du plugin
- 'factory' : HomardGenerator,
- }
-
-
-class HomardGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format homard
-
- """
- # Les extensions de fichier preconis�es
- extensions=('.comm',)
-
- def __init__(self,cr=None):
- # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
- if cr :
- self.cr=cr
- else:
- self.cr=N_CR.CR(debut='CR generateur format homard pour homard',
- fin='fin CR format homard pour homard')
- # Le texte au format homard est stock� dans l'attribut text
- self.dico_mot_clef={}
- self.assoc={}
- self.init_assoc()
- self.text=''
- self.textehomard=[]
-
- def init_assoc(self):
- self.lmots_clef_calcules = ('SuivFron','TypeBila','ModeHOMA','CCAssoci', 'CCNoChaI','HOMaiN__','HOMaiNP1','CCNumOrI', 'CCNumPTI')
- self.lmot_clef = ('CCMaiN__', 'CCNoMN__', 'CCIndica', 'CCSolN__', 'CCFronti', 'CCNoMFro', 'CCMaiNP1',
- 'CCNoMNP1', 'CCSolNP1', 'TypeRaff', 'TypeDera', 'NiveauMa', 'SeuilHau', 'SeuilHRe',
- 'SeuilHPE', 'NiveauMi', 'SeuilBas', 'SeuilBRe', 'SeuilBPE', 'ListeStd', 'NumeIter',
- 'Langue ', 'CCGroFro', 'CCNoChaI', 'CCNumOrI', 'CCNumPTI', 'SuivFron', 'TypeBila',
- 'ModeHOMA', 'HOMaiN__', 'HOMaiNP1','CCCoChaI')
-
-# Bizarre demander a Gerald :
-# CVSolNP1
- self.assoc['CCMaiN__']='FICHIER_MED_MAILLAGE_N'
- self.assoc['CCNoMN__']='NOM_MED_MAILLAGE_N'
- self.assoc['CCIndica']='FICHIER_MED_MAILLAGE_N'
- self.assoc['CCSolN__']='FICHIER_MED_MAILLAGE_N'
- self.assoc['CCFronti']='FIC_FRON'
- self.assoc['CCNoMFro']='NOM_MED_MAILLAGE_FRONTIERE'
- self.assoc['CCMaiNP1']='FICHIER_MED_MAILLAGE_NP1'
- self.assoc['CCNoMNP1']='NOM_MED_MAILLAGE_NP1'
- self.assoc['CCSolNP1']='FICHIER_MED_MAILLAGE_NP1'
- self.assoc['TypeRaff']='RAFFINEMENT'
- self.assoc['TypeDera']='DERAFFINEMENT'
- self.assoc['NiveauMa']='NIVE_MAX'
- self.assoc['SeuilHau']='CRIT_RAFF_ABS'
- self.assoc['SeuilHRe']='CRIT_RAFF_REL'
- self.assoc['SeuilHPE']='CRIT_RAFF_PE'
- self.assoc['NiveauMi']='NIVE_MIN'
- self.assoc['SeuilBas']='CRIT_DERA_ABS'
- self.assoc['SeuilBRe']='CRIT_DERA_REL'
- self.assoc['SeuilBPE']='CRIT_DERA_PE'
- self.assoc['ListeStd']='MESSAGES'
- self.assoc['NumeIter']='NITER'
- self.assoc['Langue ']='LANGUE'
- self.assoc['CCGroFro']='GROUP_MA'
-# self.assoc['CCNoChaI']='NOM_MED' (on doit aussi ajouter 'COMPOSANTE')
- self.assoc['CCNumOrI']='NUME_ORDRE'
- self.assoc['CCNumPTI']='NUME_PAS_TEMPS'
- self.assoc['CCCoChaI']='COMPOSANTE'
-
- self.dico_mot_depend={}
-
- # Attention a la synthaxe
- self.dico_mot_depend['CCIndica'] ='self.dico_mot_clef["RAFFINEMENT"] == "LIBRE" or self.dico_mot_clef["DERAFFINEMENT"] == "LIBRE"'
- self.dico_mot_depend['CCSolN__'] ='self.dico_mot_clef.has_key("NITER")'
- self.dico_mot_depend['CCSolNP1'] ='self.dico_mot_clef.has_key("NITER")'
-
- def gener(self,obj,format='brut',config=None):
- self.text=PythonGenerator.gener(self,obj,format)
- self.genereConfiguration()
- return self.text
-
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en une liste de chaines de caract�res � la
- syntaxe homard
- """
- s=PythonGenerator.generMCSIMP(self,obj)
- clef=obj.nom
- self.dico_mot_clef[clef]=obj.val
- return s
-
- def cherche_dependance(self,mot):
- b_eval = 0
- a_eval=self.dico_mot_depend[mot]
- try :
- b_eval=eval(self.dico_mot_depend[mot])
- except :
- for l in a_eval.split(" or "):
- try:
- b_eval=eval(l)
- if not (b_eval == 0 ):
- break
- except :
- pass
- return b_eval
-
-
- def genereConfiguration(self):
- ligbla=31*' '
- self.textehomard=[]
- for mot in self.lmot_clef:
-
-# on verifie d'abord que le mot clef doit bien etre calcule
- if self.dico_mot_depend.has_key(mot) :
- if self.cherche_dependance(mot) == 0 :
- continue
-
- if mot not in self.lmots_clef_calcules :
- clef_eficas=self.assoc[mot]
- if self.dico_mot_clef.has_key(clef_eficas):
- val=self.dico_mot_clef[clef_eficas]
- if val != None:
- try :
- ligne=mot+' '+val
- except:
- ligne=mot+' '+repr(val)
- ligne.rjust(32)
- self.textehomard.append(ligne)
- else:
- val=apply(HomardGenerator.__dict__[mot],(self,))
- if val != None:
- mot.rjust(8)
- ligne=mot+' '+val
- ligne.rjust(32)
- self.textehomard.append(ligne)
-
- def get_homard(self):
- return self.textehomard
-
- def SuivFron(self):
- val="non"
- if self.dico_mot_clef.has_key('NOM_MED_MAILLAGE_FRONTIERE'):
- if self.dico_mot_clef['NOM_MED_MAILLAGE_FRONTIERE'] != None:
- val="oui"
- return val
-
- def TypeBila(self):
- inttypeBilan = 1
- retour=None
- dict_val={'NOMBRE':7,'INTERPENETRATION':3,'QUALITE':5,'CONNEXITE':11,'TAILLE':13}
- for mot in ('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'):
- if self.dico_mot_clef.has_key(mot):
- if (self.dico_mot_clef[mot] == "OUI"):
- inttypeBilan=inttypeBilan*dict_val[mot]
- retour = repr(inttypeBilan)
- return retour
-
-
- def ModeHOMA(self):
- intModeHOMA=1
- if self.dico_mot_clef.has_key('INFORMATION'):
- if self.dico_mot_clef['INFORMATION'] == "OUI":
- intModeHOMA=2
- return repr(intModeHOMA)
-
- def CCAssoci(self):
- return 'MED'
-
- def CCNoChaI(self):
- if not (self.dico_mot_clef.has_key('NOM_MED')):
- return None
- if (self.dico_mot_clef['NOM_MED']== None):
- return None
- if not (self.dico_mot_clef.has_key('COMPOSANTE')):
- return None
- if (self.dico_mot_clef['COMPOSANTE']== None):
- return None
- chaine=self.dico_mot_clef['COMPOSANTE']+' '+self.dico_mot_clef['NOM_MED']
- return chaine
-
- def HOMaiN__(self):
- chaine=None
- if self.dico_mot_clef.has_key('NITER'):
- if self.dico_mot_clef['NITER'] != None :
- num="M"+repr(self.dico_mot_clef['NITER'])
- chaine=num+" "+num+".hom"
- return chaine
-
- def HOMaiNP1(self):
- chaine=None
- if self.dico_mot_clef.has_key('NITER'):
- if self.dico_mot_clef['NITER'] != None :
- num="M"+repr(self.dico_mot_clef['NITER']+1)
- chaine=num+" "+num+".hom"
- return chaine
-
- def CCNumOrI(self):
- chaine=repr(1)
- if self.dico_mot_clef.has_key('NUME_ORDRE'):
- if self.dico_mot_clef['NUME_ORDRE'] != None :
- chaine=repr(self.dico_mot_clef['NUME_ORDRE'])
- return chaine
-
- def CCNumPTI(self):
- chaine=repr(1)
- if self.dico_mot_clef.has_key('NUME_PAS_TEMPS'):
- if self.dico_mot_clef['NUME_PAS_TEMPS'] != None :
- chaine=repr(self.dico_mot_clef['NUME_PAS_TEMPS'])
- return chaine
def generRUN(self,obj,schema):
if not(obj.isvalid()) :
- print "TODO TODO TODO"
+ print ("TODO TODO TODO")
self.texteEXE=""
self.schema=schema
textComm=self.gener(obj)
texteModification=""\r
for t in obj.editor.dicoNouveauxMC.keys() :\r
# 'ajoutDefinitionMC',etape,listeAvant,nomDuMC,typ,args\r
- print t\r
fonction,Etape,Genea,nomSIMP,typeSIMP,arguments = obj.editor.dicoNouveauxMC[t]\r
texteModification += "MODIFICATION_CATALOGUE(Fonction = '" + str(fonction)+ "',\n"\r
texteModification += " Etape = '" + str(Etape) + "',\n"\r
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- openturns pour EFICAS.
-
-"""
-import traceback
-import types,string,re
-from Extensions.i18n import tr
-
-
-from generator_python import PythonGenerator
-from OpenturnsBase import Generateur
-#from OpenturnsXML import XMLGenerateur
-#from OpenturnsSTD import STDGenerateur
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'openturns',
- # La factory pour creer une instance du plugin
- 'factory' : OpenturnsGenerator,
- }
-
-
-class OpenturnsGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format xml
-
- """
- # Les extensions de fichier permis?
- extensions=('.comm',)
-
- def initDico(self):
- self.dictMCVal={}
- self.listeVariables=[]
- self.listeFichiers=[]
- self.dictMCLois={}
- self.dictTempo={}
- self.TraiteMCSIMP=1
-
- def gener(self,obj,format='brut',config=None):
- #print "IDM: gener dans generator_openturns.py"
- self.initDico()
- self.text=PythonGenerator.gener(self,obj,format)
- self.genereXML()
- self.genereSTD()
- return self.text
-
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en texte python
- Remplit le dictionnaire des MCSIMP si nous ne sommes pas ni dans une loi, ni dans une variable
- """
- s=PythonGenerator.generMCSIMP(self,obj)
- if self.TraiteMCSIMP == 1 :
- self.dictMCVal[obj.nom]=obj.valeur
- else :
- self.dictTempo[obj.nom]=obj.valeur
- return s
-
- def generMCFACT(self,obj):
- # Il n est pas possible d utiliser obj.valeur qui n est pas
- # a jour pour les nouvelles variables ou les modifications
- if obj.nom == "Variables" or "Files":
- self.TraiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generMCFACT(self,obj)
- if obj.nom == "Variables" :
- self.listeVariables.append(self.dictTempo)
- self.dictTempo={}
- else :
- self.listeFichiers.append(self.dictTempo)
- self.TraiteMCSIMP=1
- return s
-
- def generETAPE(self,obj):
- if obj.nom == "DISTRIBUTION" :
- self.TraiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generETAPE(self,obj)
- if obj.nom == "DISTRIBUTION" :
- self.dictMCLois[obj.sd]=self.dictTempo
- self.dictTempo={}
- self.TraiteMCSIMP=1
- return s
-
- def genereXML(self):
- #print "IDM: genereXML dans generator_openturns.py"
- if self.listeFichiers != [] :
- self.dictMCVal["exchange_file"]=self.listeFichiers
- MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
- MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
- #try :
- if 1== 1 :
- self.texteXML=MonGenerateur.CreeXML()
- #except :
- else :
- self.texteXML=tr("Il y a un pb a la Creation du XML")
-
- def genereSTD(self):
- MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
- MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
- #try :
- if 1== 1 :
- self.texteSTD=MonGenerateur.CreeSTD()
- #except :
- else :
- self.texteSTD=tr("Il y a un pb a la Creation du STD")
-
- def getOpenturnsXML(self):
- return self.texteXML
-
- def getOpenturnsSTD(self):
- return self.texteSTD
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- openturns pour EFICAS.
-
-"""
-import traceback
-import types,string,re
-from Extensions.i18n import tr
-
-
-from generator_python import PythonGenerator
-from OpenturnsBase import Generateur
-#from OpenturnsXML import XMLGenerateur
-#from OpenturnsSTD import STDGenerateur
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'openturns_study',
- # La factory pour creer une instance du plugin
- 'factory' : OpenturnsGenerator,
- }
-
-
-class OpenturnsGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format xml
-
- """
- # Les extensions de fichier permis?
- extensions=('.comm',)
-
- def initDico(self):
- self.dictMCVal={}
- self.listeVariables=[]
- self.listeFichiers=[]
- self.dictMCLois={}
- self.dictTempo={}
- self.TraiteMCSIMP=1
- self.texteSTD="""#!/usr/bin/env python
- import sys
- print "Invalid file. Check build process."
- sys.exit(1)
- """
-
- def gener(self,obj,format='brut',config=None):
- print "IDM: gener dans generator_openturns_study.py"
- self.initDico()
- self.text=PythonGenerator.gener(self,obj,format)
- self.genereSTD()
- return self.text
-
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en texte python
- Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
- """
- s=PythonGenerator.generMCSIMP(self,obj)
- if self.TraiteMCSIMP == 1 :
- self.dictMCVal[obj.nom]=obj.valeur
- else :
- self.dictTempo[obj.nom]=obj.valeur
- return s
-
-
- def generETAPE(self,obj):
- print "IDM: generETAPE dans generator_openturns_study.py"
- print "IDM: obj.nom=", obj.nom
- if obj.nom in ( "DISTRIBUTION", ) :
- self.TraiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generETAPE(self,obj)
- if obj.nom in ( "DISTRIBUTION", ) :
- self.dictMCLois[obj.sd]=self.dictTempo
- self.dictTempo={}
- self.TraiteMCSIMP=1
- return s
-
- def generPROC_ETAPE(self,obj):
- print "IDM: generPROC_ETAPE dans generator_openturns_study.py"
- print "IDM: obj.nom=", obj.nom
- if obj.nom in ( "VARIABLE", ) :
- self.TraiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generPROC_ETAPE(self,obj)
- if obj.nom in ( "VARIABLE", ) :
- self.listeVariables.append(self.dictTempo)
- self.dictTempo={}
- self.TraiteMCSIMP=1
- return s
-
- def genereSTD(self):
- print "IDM: genereSTD dans generator_openturns_study.py"
- print "IDM: self.listeVariables=", self.listeVariables
- MonGenerateur=self.getGenerateur()
- #try :
- if 1== 1 :
- self.texteSTD=MonGenerateur.CreeSTD()
- #except :
- else :
- self.texteSTD=tr("Il y a un pb a la Creation du STD")
-
- def writeDefault(self, fn):
- fileSTD = fn[:fn.rfind(".")] + '.py'
- with open(fileSTD, 'w') as f:
- f.write(self.texteSTD)
-
- def getGenerateur (self):
- print "IDM: getGenerateur dans generator_openturns_study.py"
- print "IDM: self.dictMCVal=", self.dictMCVal
- print "IDM: self.listeVariables=", self.listeVariables
- print "IDM: self.dictMCLois=", self.dictMCLois
- MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, self.listeVariables, self.dictMCLois)
- MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
- return MonGenerateur
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013 EDF R&D
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-"""
- Ce module contient le plugin generateur de fichier au format
- openturns pour EFICAS.
-
-"""
-import traceback
-import types,string,re
-from Extensions.i18n import tr
-
-
-from generator_python import PythonGenerator
-from OpenturnsBase import Generateur
-#from OpenturnsXML import XMLGenerateur
-#from OpenturnsSTD import STDGenerateur
-
-def entryPoint():
- """
- Retourne les informations necessaires pour le chargeur de plugins
-
- Ces informations sont retournees dans un dictionnaire
- """
- return {
- # Le nom du plugin
- 'name' : 'openturns_wrapper',
- # La factory pour creer une instance du plugin
- 'factory' : OpenturnsGenerator,
- }
-
-
-class OpenturnsGenerator(PythonGenerator):
- """
- Ce generateur parcourt un objet de type JDC et produit
- un texte au format eficas et
- un texte au format xml
-
- """
- # Les extensions de fichier permis?
- extensions=('.comm',)
-
- def initDico(self):
- self.dictMCVal={}
- self.dictVariables={}
- self.listeFichiers=[]
- self.dictTempo={}
- self.traiteMCSIMP=1
- self.numOrdre=0
- self.texteSTD="""#!/usr/bin/env python
- import sys
- print "Invalid file. Check build process."
- sys.exit(1)
- """
- self.wrapperXML=None
-
- def gener(self,obj,format='brut',config=None):
- #print "IDM: gener dans generator_openturns_wrapper.py"
- self.initDico()
- self.text=PythonGenerator.gener(self,obj,format)
- self.genereXML()
- #self.genereSTD()
- return self.text
-
- def generMCSIMP(self,obj) :
- """
- Convertit un objet MCSIMP en texte python
- Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
- """
- s=PythonGenerator.generMCSIMP(self,obj)
- if not( type(obj.valeur) in (list, tuple)) and (obj.get_min_max()[1] != 1):
- valeur=(obj.valeur,)
- else :
- valeur=obj.valeur
- if self.traiteMCSIMP == 1 :
- self.dictMCVal[obj.nom]=valeur
- else :
- self.dictTempo[obj.nom]=valeur
- return s
-
- def generETAPE(self,obj):
- #print "generETAPE" , obj.nom
- if obj.nom == "VARIABLE" :
- self.traiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generETAPE(self,obj)
- if obj.nom == "VARIABLE" :
- self.dictTempo["numOrdre"]=self.numOrdre
- self.numOrdre = self.numOrdre +1
- if obj.sd == None :
- self.dictVariables["SansNom"]=self.dictTempo
- else :
- self.dictVariables[obj.sd.nom]=self.dictTempo
- self.dictTempo={}
- self.traiteMCSIMP=1
- return s
-
- def generMCFACT(self,obj):
- # Il n est pas possible d utiliser obj.valeur qui n est pas
- # a jour pour les nouvelles variables ou les modifications
- if obj.nom in ( "Files", ) :
- self.traiteMCSIMP=0
- self.dictTempo={}
- s=PythonGenerator.generMCFACT(self,obj)
- self.listeFichiers.append(self.dictTempo)
- self.traiteMCSIMP=1
- return s
-
- def genereXML(self):
- print "IDM: genereXML dans generator_openturns_wrapper.py"
- #print "appli.CONFIGURATION=",self.appli.CONFIGURATION.__dict__
- if self.listeFichiers != [] :
- self.dictMCVal["Files"]=self.listeFichiers
- print "dictMCVal", self.dictMCVal, "dictVariables", self.dictVariables
- MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, [], {} ,self.dictVariables)
- MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
- try :
- #if 1== 1 :
- self.wrapperXML=MonGenerateur.CreeXML()
- except :
- #else :
- self.wrapperXML=None
-
- def writeDefault(self, filename):
- fileXML = filename[:filename.rfind(".")] + '.xml'
- self.wrapperXML.writeFile( str(fileXML) )
"""
self.appli=obj.get_jdc_root().appli
#self.appli=obj.appli
- #print format
liste= self.generator(obj)
if format == 'brut':
self.text=liste
# mais seulement le nom dans le cas d'un parametre
# s = valeur.nom
# else:
- # print valeur
# s = self.generator(valeur)
else :
obj.valeurFormatee.append(val)
else :
obj.valeurFormatee.append(self.format_item(val,obj.etape,obj))
- #print obj.valeurFormatee
if len(obj.valeur) >= 1:
s = '(' + s + '),'
if obj.valeur==[] or obj.valeur==() : s="(),"
else :
obj.valeurFormatee=obj.valeur
s=self.format_item(obj.valeur,obj.etape,obj) + ','
- #print s
return s
def formatColonnes(self,nbrColonnes,listeValeurs,obj):
#try :
- #print listeValeurs
if 1 == 1 :
indice=0
textformat="("
#except :
else :
textformat=str(obj.valeur)
- #print textformat
return textformat
def entryPoint():
"""
- Retourne les informations nécessaires pour le chargeur de plugins
+ Retourne les informations necessaires pour le chargeur de plugins
- Ces informations sont retournées dans un dictionnaire
+ Ces informations sont retournees dans un dictionnaire
"""
return {
# Le nom du plugin
'name' : 'vers3DSalome',
- # La factory pour créer une instance du plugin
+ # La factory pour creer une instance du plugin
'factory' : vers3DSalomeGenerator,
}
self.node=node
self.list_commandes=[];
self.generator(self.node.object)
- #print self.list_commandes
return self.list_commandes
def generator(self,obj):
def generMCFACT(self,obj):
"""
- Convertit un objet MCFACT en une liste de chaines de caractères à la
+ Convertit un objet MCFACT en une liste de chaines de caracteres a la
syntaxe python
"""
self.init_ligne()
val = val[0]
if isinstance (val, Extensions.parametre.PARAMETRE):
val=val.valeur
- print val.__class__
+ print ( val.__class)
context={}
if type(val) == type("aaa") :
for p in self.jdc.params:
context[p.nom]=eval(p.val,self.jdc.const_context, context)
- print context[p.nom]
+ print (context[p.nom])
res=eval(val,self.jdc.const_context, context)
val=res
self.dict_attributs[clef]=val
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+"""
+Ce module contient la partie commune
+aux generateurs XML et Etude d Openturns
+"""
+
+__revision__ = "V1.0"
+
+import os
+import sys
+
+path=os.getcwd()
+pathDef=path+"DefautOpenturns"
+
+sys.path.append(pathDef)
+
+
+#=============================================
+# La classe generale
+#=============================================
+
+class Generateur :
+
+ '''
+ Classe generale du generateur
+ DictMCVal : dictionnaire des mots-cles
+ ListeVariables : chaque variable est decrite par un dictionnaire ; cette liste les regroupe
+ DictLois : dictionnaires des lois
+ '''
+ def __init__ (self, appli, DictMCVal = {}, ListeVariables = [], DictLois = {}, DictVariables = {} ) :
+ #---------------------------------------------------------#
+ self.ListeVariables = ListeVariables
+ self.ListeVariablesIn = []
+ self.ListeVariablesOut = []
+ self.DictLois = DictLois
+ self.DictVariables = DictVariables
+ self.DictMCVal = DictMCVal
+ self.DictTypeVar = {}
+ self.nbVarIn = 0
+ self.nbVarOut = 0
+ self.creeInfoVar()
+ self.appli = appli
+ #
+ # On charge eventuellement le Solver par defaut
+ # et les valeurs par defaut du Solver (dans l init)
+ #
+ try :
+ #if 1 :
+ Solver = self.DictMCVal["PhysicalSolver"]
+ import_name = "Defaut"+Solver
+ self.module = __import__( import_name, globals(), locals() )
+ monDefaut = self.module.Defaut( self )
+ #else :
+ except:
+ self.module = None
+
+
+ def getSTDGenerateur(self) :
+ #--------------------------#
+ try :
+ gener = self.module.__dict__["MonSTDGenerateur"]
+ monSTDGenerateur=gener( self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
+ except :
+ from OpenturnsSTD import STDGenerateur
+ monSTDGenerateur = STDGenerateur( self.appli, self.DictMCVal, self.ListeVariablesIn, self.ListeVariablesOut, self.DictLois )
+ return monSTDGenerateur
+
+ def getXMLGenerateur(self) :
+ #--------------------------#
+ try :
+ gener = self.module.__dict__["MonXMLGenerateur"]
+ monXMLGenerateur=gener( self.DictMCVal, self.ListeVariables, self.DictLois )
+ except :
+ from OpenturnsXML import XMLGenerateur
+ monXMLGenerateur = XMLGenerateur( self.appli, self.DictMCVal, self.DictVariables )
+ return monXMLGenerateur
+
+ def creeInfoVar (self) :
+ #----------------------#
+ """
+ On repere les variables in/out et on les numerote.
+ """
+ num = 0
+ liste = []
+ for DictVariable in self.ListeVariables :
+ if not DictVariable.has_key("Type") : DictVariable["Type"] = "in"
+ self.DictTypeVar[num] = DictVariable["Type"]
+ if DictVariable["Type"] == "in" :
+ self.nbVarIn = self.nbVarIn + 1
+ self.ListeVariablesIn.append( DictVariable )
+ print "OpenturnsBase.py: new input variable = ", DictVariable
+ else:
+ self.nbVarOut = self.nbVarOut + 1
+ self.ListeVariablesOut.append( DictVariable )
+ print "OpenturnsBase.py: new output variable = ", DictVariable
+ liste.append( DictVariable )
+ num = num + 1
+ self.ListeVariables = liste
+
+
+ def ajouteDictMCVal(self, dicoPlus) :
+ #-----------------------------------#
+ # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
+ # enrichit self.DictMCVal avec les valeurs donnees dans dicoPlus
+ # si elles ne sont pas deja dans le dictionnaire
+
+ for clef in dicoPlus.keys():
+ if not self.DictMCVal.has_key(clef) :
+ self.DictMCVal[clef] = dicoPlus[clef]
+
+ def ajouteInfoVariables (self, dicoVariablesIn, dicoVariablesOut) :
+ #-----------------------------------------------------------------#
+ # Appele par le classe Defaut du python specifique au code (exple DefautASTER.py)
+ # met a jour les dictionnaires qui decrivent les variables (regexp par exemple)
+ liste=[]
+ num = 0
+ for dictVariable in self.ListeVariables:
+ if self.DictTypeVar[num] == "in" :
+ dico = dicoVariablesIn
+ else :
+ dico = dicoVariablesOut
+ for nouvelleVariable in dico.keys() :
+ if not dictVariable.has_key(nouvelleVariable):
+ dictVariable[nouvelleVariable] = dico[nouvelleVariable]
+ liste.append( dictVariable )
+ num = num + 1
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+"""
+Ce module contient le generateur Etude pour Openturns
+"""
+
+from Extensions.i18n import tr
+
+__revision__ = "V1.0"
+
+defaultSTD = """#! /usr/bin/env python
+
+class StudyFileGenerationError:
+ def __init__ (self, st):
+ self.st = st
+ def __str__(self):
+ return "'%s'" % self.st
+
+raise StudyFileGenerationError, "The study file was not generated. Check analysis type."
+"""
+
+headerSTD = """#! /usr/bin/env python
+
+# Chargement du module systeme
+import sys
+sys.path[:0]=['%s']
+
+# Chargement du module math
+import math
+
+# Chargement du module Open TURNS
+from openturns import *
+
+# Fonction verifiant si un echantillon contient des valeurs non valides (NaN)
+def contain_nan_values(sample):
+ for point in sample:
+ for val in point:
+ if math.isnan(val):
+ return True
+ return False
+
+results = {}
+
+"""
+
+viewerSTD = """
+from openturns.viewer import View
+
+# Fonction de test du serveur X
+import subprocess
+xserver_available = None
+def is_xserver_available():
+ global xserver_available
+ if xserver_available is None:
+ xserver_available = True
+ try:
+ subprocess.check_call('python -c "from matplotlib import pyplot;pyplot.figure()" >/dev/null 2>&1', shell = True)
+ except:
+ xserver_available = False
+ return xserver_available
+
+"""
+
+footerSTD = """
+
+# Flush des messages en attente
+Log.Flush()
+
+# Terminaison du fichier
+#sys.exit( 0 )
+"""
+
+#=============================================
+# La classe de creation du fichier STD
+#=============================================
+
+class STDGenerateur :
+
+ '''
+ Generation du fichier python
+ '''
+ def __init__ (self, appli, DictMCVal, ListeVariablesIn, ListeVariablesOut, DictLois ) :
+ self.DictMCVal = DictMCVal
+ self.ListeVariablesIn = ListeVariablesIn
+ self.ListeVariablesOut = ListeVariablesOut
+ self.DictLois = DictLois
+ #print "DictMCVal=", DictMCVal
+ print "ListeVariablesIn= %s", ListeVariablesIn
+
+# A REPRENDRE DEPUIS ICI !!
+ print "ListeVariablesOut= %s", ListeVariablesOut
+ #print "DictLois=", DictLois
+ self.texteSTD = defaultSTD
+ self.OpenTURNS_path = appli.CONFIGURATION.OpenTURNS_path
+
+ # Ce dictionnaire fait la correspondance entre le mot lu dans le dictionnaire des mots-clefs et la methode a appeler
+ self.traitement = {
+ "Min/Max" :
+ ( "MinMax",
+ { "Experiment Plane" : "ExperimentPlane",
+ "Random Sampling" : "MinMaxRandomSampling",
+ },
+ ),
+ "Central Uncertainty" :
+ ( "CentralUncertainty",
+ { "Taylor Variance Decomposition" : "TaylorVarianceDecomposition",
+ "Random Sampling" : "CentralUncertaintyRandomSampling",
+ },
+ ),
+ "Threshold Exceedence" :
+ ( "ThresholdExceedence",
+ { "Simulation" : "Simulation",
+ "FORM_SORM" : "Analytical",
+ "MonteCarlo" : "MonteCarlo",
+ "LHS" : "LHS",
+ "ImportanceSampling" : "ImportanceSampling",
+ "FirstOrder" : "FORM",
+ "SecondOrder" : "SORM",
+ "Cobyla" : "Cobyla",
+ "AbdoRackwitz" : "AbdoRackwitz",
+ },
+ ),
+ }
+
+ # Ce dictionnaire liste le nom des variables utilisees dans le script
+ # La clef est le nom attendu par les methodes, la valeur est le nom produit dans le fichier de sortie
+ # Le fait de passer par un dictionnaire permet de controler que les variables existent et sont correctement nommees
+ # meme si clef == valeur
+ self.variable = {
+ "n" : "n",
+ "p" : "p",
+ "wrapper" : "wrapper",
+ "wrapperdata" : "wrapperdata",
+ "frameworkdata" : "frameworkdata",
+ "framework" : "framework",
+ "studyid" : "studyid",
+ "studycase" : "studycase",
+ "componentname" : "componentname",
+ "model" : "model",
+ "scaledVector" : "scaledVector",
+ "translationVector" : "translationVector",
+ "levels" : "levels",
+ "myCenteredReductedGrid" : "myCenteredReductedGrid",
+ "myExperimentPlane" : "myExperimentPlane",
+ "inputSample" : "inputSample",
+ "outputSample" : "outputSample",
+ "minValue" : 'results["minValue"]',
+ "maxValue" : 'results["maxValue"]',
+ "flags" : "flags",
+ "inSize" : "inSize",
+ "distribution" : "distribution",
+ "marginal" : "marginal",
+ "collection" : "collection",
+ "copula" : "copula",
+ "correlation" : "correlation",
+ "R" : "R",
+ "vars" : "vars",
+ "description" : "description",
+ "inputRandomVector" : "inputRandomVector",
+ "outputRandomVector" : "outputRandomVector",
+ "myQuadraticCumul" : "myQuadraticCumul",
+ "meanFirstOrder" : 'results["meanFirstOrder"]',
+ "meanSecondOrder" : 'results["meanSecondOrder"]',
+ "standardDeviationFirstOrder" : 'results["standardDeviationFirstOrder"]',
+ "importanceFactors" : 'results["importanceFactors"]',
+ "importanceFactorsGraph" : "importanceFactorsGraph",
+ "importanceFactorsDrawing" : "importanceFactorsDrawing",
+ "empiricalMean" : 'results["empiricalMean"]',
+ "empiricalStandardDeviation" : 'results["empiricalStandardDeviation"]',
+ "empiricalQuantile" : 'results["empiricalQuantile"]',
+ "alpha" : "alpha",
+ "beta" : "beta",
+ "PCCcoefficient" : 'results["PCCcoefficient"]',
+ "PRCCcoefficient" : 'results["PRCCcoefficient"]',
+ "SRCcoefficient" : 'results["SRCcoefficient"]',
+ "SRRCcoefficient" : 'results["SRRCcoefficient"]',
+ "kernel" : "kernel",
+ "kernelSmoothedDist" : "kernelSmoothedDist",
+ "kernelSmoothedPDFDrawing" : "kernelSmoothedPDFDrawing",
+ "kernelSmoothedGraph" : "kernelSmoothedGraph",
+ "meanVector" : "meanVector",
+ "importanceDensity" : "importanceDensity",
+ "myEvent" : "myEvent",
+ "myAlgo" : "myAlgo",
+ "myResult" : "myResult",
+ "probability" : 'results["probability"]',
+ "standardDeviation" : 'results["standardDeviation"]',
+ "level" : "level",
+ "length" : "length",
+ "coefficientOfVariation" : 'results["coefficientOfVariation"]',
+ "convergenceGraph" : "convergenceGraph",
+ "convergenceDrawing" : "convergenceDrawing",
+ "simulationNumbers" : 'results["simulationNumbers"]',
+ "myOptimizer" : "myOptimizer",
+ "specificParameters" : "specificParameters",
+ "startingPoint" : "startingPoint",
+ "hasoferReliabilityIndex" : 'results["hasoferReliabilityIndex"]',
+ "standardSpaceDesignPoint" : 'results["standardSpaceDesignPoint"]',
+ "physicalSpaceDesignPoint" : 'results["physicalSpaceDesignPoint"]',
+ "eventProbabilitySensitivity" : 'results["eventProbabilitySensitivity"]',
+ "hasoferReliabilityIndexSensitivity" : 'results["hasoferReliabilityIndexSensitivity"]',
+ "eventProbabilitySensitivityGraph" : "eventProbabilitySensitivityGraph",
+ "eventProbabilitySensitivityDrawing" : "eventProbabilitySensitivityDrawing",
+ "hasoferReliabilityIndexSensitivityGraph" : "hasoferReliabilityIndexSensitivityGraph",
+ "hasoferReliabilityIndexSensitivityDrawing" : "hasoferReliabilityIndexSensitivityDrawing",
+ "modelEvaluationCalls" : 'results["modelEvaluationCalls"]',
+ "modelGradientCalls" : 'results["modelGradientCalls"]',
+ "modelHessianCalls" : 'results["modelHessianCalls"]',
+ "tvedtApproximation" : 'results["tvedtApproximation"]',
+ "hohenBichlerApproximation" : 'results["hohenBichlerApproximation"]',
+ "breitungApproximation" : 'results["breitungApproximation"]',
+ }
+
+ # Ce dictionnaire fait la correspondance entre le mot-clef du catalogue et le flag de la bibliotheque
+ self.logFlags = {
+ "DebugMessages" : "Log.DBG",
+ "WrapperMessages" : "Log.WRAPPER",
+ "UserMessages" : "Log.USER",
+ "InfoMessages" : "Log.INFO",
+ "WarningMessages" : "Log.WARN",
+ "ErrorMessages" : "Log.ERROR",
+ }
+
+ def CreeSTD (self) :
+ '''
+ Pilotage de la creation du fichier python
+ '''
+ TypeAnalyse = None
+ if ( self.DictMCVal.has_key( 'Type' ) ):
+ TypeAnalyse = self.DictMCVal[ 'Type' ]
+
+ Traitement = None
+ subDict = {}
+ if ( self.traitement.has_key( TypeAnalyse ) ):
+ (Traitement, subDict) = self.traitement[ TypeAnalyse ]
+
+ if ( Traitement is not None ):
+ self.texteSTD = apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
+
+ return self.texteSTD
+
+ def Header (self) :
+ '''
+ Imprime l entete commun a tous les fichiers
+ '''
+ txt = headerSTD % self.OpenTURNS_path
+ txt += viewerSTD
+ txt += "# Definit le niveau d'affichage de la log\n"
+ txt += "%s = Log.NONE\n" % self.variable["flags"]
+ for flag in self.logFlags.keys():
+ if ( self.DictMCVal.has_key( flag ) ):
+ val = self.DictMCVal[ flag ]
+ op = "-"
+ if val == 'yes' :
+ op = "+"
+ txt += "%s = %s %s %s\n" % (self.variable["flags"], self.variable["flags"], op, self.logFlags[ flag ])
+ txt += "Log.Show( %s )\n" % self.variable["flags"]
+ txt += "\n"
+ return txt
+
+ def Footer (self) :
+ '''
+ Imprime le pied de page commun a tous les fichiers
+ '''
+ return footerSTD
+
+ def MinMax (self, subDict):
+ '''
+ Produit le fichier study correspondant a une analyse Min/Max
+ '''
+ txt = self.Header()
+ txt += self.Model()
+
+ Methode = None
+ if ( self.DictMCVal.has_key( 'Method' ) ):
+ Methode = self.DictMCVal[ 'Method' ]
+
+ Traitement = None
+ if ( subDict.has_key( Methode ) ):
+ Traitement = subDict[ Methode ]
+
+ if ( Traitement is not None ):
+ txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+ txt += self.MinMaxResult()
+
+ txt += self.Footer()
+ return txt
+
+ def Model (self):
+ '''
+ Importe le modele physique
+ '''
+ if ( self.DictMCVal.has_key( 'FileName' ) ):
+ name = self.DictMCVal[ 'FileName' ]
+
+ txt = "# Charge le modele physique\n"
+ txt += "%s = WrapperFile( '%s' )\n" % (self.variable["wrapper"], name)
+ txt += "%s = %s.getWrapperData()\n" % (self.variable["wrapperdata"], self.variable["wrapper"])
+
+ txt += "# Ces lignes sont utiles pour le fonctionnement du script sous Salome\n"
+ txt += "if globals().has_key('%s'):\n" % self.variable["framework"]
+ txt += " %s = %s.getFrameworkData()\n" % (self.variable["frameworkdata"], self.variable["wrapperdata"])
+ txt += " %s.studyid_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["studyid"])
+ txt += " %s.studycase_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["studycase"])
+ txt += " %s.componentname_ = %s['%s']\n" % (self.variable["frameworkdata"], self.variable["framework"], self.variable["componentname"])
+ txt += " %s.setFrameworkData( %s )\n" % (self.variable["wrapperdata"], self.variable["frameworkdata"])
+ txt += " %s.setWrapperData( %s )\n" % (self.variable["wrapper"], self.variable["wrapperdata"])
+ txt += "# Fin des lignes pour Salome\n"
+
+ txt += "%s = NumericalMathFunction( %s )\n" % (self.variable["model"], self.variable["wrapper"],)
+ txt += "%s = %s.getInputDimension()\n" % (self.variable["n"], self.variable["model"])
+ txt += "\n"
+ return txt
+
+ def ExperimentPlane (self):
+ '''
+ Etude par plan d experience
+ '''
+ txt = "# Etude par plan d'experience\n"
+ txt += self.Levels()
+ txt += self.CenteredReductedGrid()
+ txt += self.ScaledVector()
+ txt += self.TranslationVector()
+ txt += "%s = %s\n" % (self.variable["inputSample"], self.variable["myExperimentPlane"])
+ txt += "\n"
+ txt += "# Etude 'Min/Max'\n"
+ txt += "# Calcul\n"
+ txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"])
+ txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
+ txt += " raise Exception('Some computations failed')\n"
+ txt += "\n"
+ return txt
+
+ def MinMaxRandomSampling (self):
+ '''
+ Etude par echantillonage aleatoire
+ '''
+ size = 0
+ if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
+ size = self.DictMCVal[ 'SimulationsNumber' ]
+
+ txt = "# Etude par echantillonage aleatoire\n"
+ txt += self.InputDistribution()
+ txt += self.InputRandomVector()
+ txt += "\n"
+ txt += "# Etude 'Min/Max'\n"
+ txt += "# Calcul\n"
+ txt += "%s = %d\n" % (self.variable["inSize"], size)
+ txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"])
+ txt += "%s = %s.getSample( %s )\n" % (self.variable["outputSample"], self.variable["outputRandomVector"], self.variable["inSize"])
+ txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
+ txt += " raise Exception('Some computations failed')\n"
+ return txt
+
+ def InputDistribution (self):
+ '''
+ Cree la loi jointe des variables d entree
+ '''
+ txt = "# Definit la loi jointe des variables d'entree\n"
+ txt += "%s = DistributionCollection( %s )\n" % (self.variable["collection"], self.variable["n"])
+ txt += "%s = Description( %s )\n" % (self.variable["description"], self.variable["n"])
+ txt += "\n"
+
+ dictVariables = {}
+ for variable in self.ListeVariablesIn:
+ nomVar = variable['ModelVariable'].get_name()
+ dictVariables[ nomVar ] = variable['Distribution']
+
+ i = 0
+ sortedVarNames = dictVariables.keys()
+ sortedVarNames.sort()
+ for variable in sortedVarNames:
+ conceptloi = dictVariables[ variable ]
+ loi = self.DictLois[ conceptloi ]
+ if loi.has_key( 'Kind' ):
+ marginale = "%s_%d" % (self.variable["marginal"], i)
+ txt += "# Definit la loi marginale de la composante %d\n" % i
+ txt += "%s = %s\n" % (marginale, apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi) ))
+ txt += "%s.setName( '%s' )\n" % (marginale, conceptloi.get_name())
+ txt += "%s[ %d ] = '%s'\n" % (self.variable["description"], i, variable)
+ txt += "%s[ %d ] = Distribution( %s )\n" % (self.variable["collection"], i, marginale)
+ txt += "\n"
+ i += 1
+
+ txt += self.Copula()
+
+ txt += "# Definit la loi jointe\n"
+ txt += "%s = ComposedDistribution( %s, Copula( %s ) )\n" % (self.variable["distribution"], self.variable["collection"], self.variable["copula"])
+ txt += "%s.setDescription( %s )\n" % (self.variable["distribution"], self.variable["description"])
+ txt += "\n"
+ return txt
+
+ def Copula (self):
+ '''
+ Cree la copule de la loi jointe
+ '''
+ txt = "# Definit la copule de la loi jointe\n"
+
+ if ( not self.DictMCVal.has_key( 'Copula' ) ):
+ self.DictMCVal[ 'Copula' ] = 'Independent'
+
+ if ( self.DictMCVal[ 'Copula' ] in ( 'Independent', ) ):
+ txt += "%s = IndependentCopula( %s )\n" % (self.variable["copula"], self.variable["n"])
+ elif ( self.DictMCVal[ 'Copula' ] in ( 'Normal', ) ):
+ varList = self.DictMCVal[ 'CorrelationMatrix' ][0]
+ dimension = len(varList)
+ txt += "%s = {}\n" % self.variable["correlation"]
+ for i in range( dimension ):
+ txt += "%s['%s'] = {}\n" % (self.variable["correlation"], varList[i])
+ for j in range ( dimension ):
+ txt += "%s['%s']['%s'] = %g\n" % (self.variable["correlation"], varList[i], varList[j], self.DictMCVal[ 'CorrelationMatrix' ][i+1][j])
+ txt += "%s = getCorrelationMatrixFromMap( %s.getVariableList(), %s )\n" % (self.variable["R"], self.variable["wrapperdata"], self.variable["correlation"])
+ txt += "%s = NormalCopula( %s )\n" % (self.variable["copula"], self.variable["R"])
+
+ txt += "\n"
+ return txt
+
+ def InputRandomVector (self):
+ '''
+ Cree le vector aleatoire d entree
+ '''
+ txt = "# Definit le vecteur aleatoire d'entree\n"
+ txt += "%s = RandomVector( %s )\n" % (self.variable["inputRandomVector"], self.variable["distribution"])
+ txt += "\n"
+ return txt
+
+ def OutputRandomVector (self):
+ '''
+ Cree le vector aleatoire de sortie
+ '''
+ nomVar = "output"
+ for variable in self.ListeVariablesOut:
+ nomVar = variable['ModelVariable'].get_name()
+
+ txt = "# Definit le vecteur aleatoire de sortie\n"
+ txt += "%s = RandomVector( %s, %s )\n" % (self.variable["outputRandomVector"], self.variable["model"], self.variable["inputRandomVector"])
+ txt += "%s.setName( '%s' )\n" % (self.variable["outputRandomVector"], nomVar)
+ txt += "\n"
+ return txt
+
+ def ScaledVector (self):
+ '''
+ Definit les coefficients multiplicateurs par composante du vecteur
+ '''
+ dimension = 0
+ if ( self.DictMCVal.has_key( 'UnitsPerDimension' ) ):
+ unitsPerDimension = self.DictMCVal[ 'UnitsPerDimension' ]
+ dimension = len( unitsPerDimension )
+
+ txt = "# Definit les facteurs d'echelle dans chaque direction\n"
+ txt += "%s = NumericalPoint( %s )\n" % (self.variable["scaledVector"], self.variable["n"])
+ for i in range(dimension):
+ txt += "%s[%d] = %g\n" % (self.variable["scaledVector"], i, unitsPerDimension[i])
+ txt += "%s.scale( %s )\n" % (self.variable["myExperimentPlane"], self.variable["scaledVector"])
+ txt += "\n"
+ return txt
+
+ def TranslationVector (self):
+ '''
+ Definit le vecteur de translation
+ '''
+ dimension = 0
+ if ( self.DictMCVal.has_key( 'Center' ) ):
+ center = self.DictMCVal[ 'Center' ]
+ dimension = len( center )
+
+ txt = "# Definit le vecteur de translation\n"
+ txt += "%s = NumericalPoint( %s )\n" % (self.variable["translationVector"], self.variable["n"])
+ for i in range(dimension):
+ txt += "%s[%d] = %g\n" % (self.variable["translationVector"], i, center[i])
+ txt += "%s.translate( %s )\n" % (self.variable["myExperimentPlane"], self.variable["translationVector"])
+ txt += "\n"
+ return txt
+
+ def Levels (self):
+ '''
+ Definit les niveaux du plan d experience
+ '''
+ dimension = 0
+ if ( self.DictMCVal.has_key( 'Levels' ) ):
+ levels = self.DictMCVal[ 'Levels' ]
+ dimension = len( levels )
+
+ txt = "# Definit les niveaux de la structure de grille\n"
+ txt += "%s = NumericalPoint( %d )\n" % (self.variable["levels"], dimension)
+ for i in range(dimension):
+ txt += "%s[%d] = %g\n" % (self.variable["levels"], i, levels[i])
+ txt += "\n"
+ return txt
+
+ def CenteredReductedGrid (self):
+ '''
+ Definit la grille reduite du plan d experience
+ '''
+ plane = None
+ if ( self.DictMCVal.has_key( 'ExperimentPlane' ) ):
+ plane = self.DictMCVal[ 'ExperimentPlane' ]
+
+ txt = "# Cree le plan d'experience centre reduit\n"
+ txt += "%s = %s(%s, %s)\n" % (self.variable["myCenteredReductedGrid"], plane, self.variable["n"], self.variable["levels"])
+ txt += "%s = %s.generate()\n" % (self.variable["myExperimentPlane"], self.variable["myCenteredReductedGrid"])
+ txt += "\n"
+ return txt
+
+ def MinMaxResult (self):
+ '''
+ Produit les resultats de l etude
+ '''
+ txt = "# Resultats\n"
+ txt += "%s = %s.getMin()\n" % (self.variable["minValue"], self.variable["outputSample"])
+ txt += "print '%s = ', %s\n" % ("minValue", self.variable["minValue"])
+ txt += "\n"
+ txt += "%s = %s.getMax()\n" % (self.variable["maxValue"], self.variable["outputSample"])
+ txt += "print '%s = ', %s\n" % ("maxValue", self.variable["maxValue"])
+ txt += "\n"
+ return txt
+
+ def CentralUncertainty (self, subDict):
+ '''
+ Produit le fichier study correspondant a une analyse d incertitude en valeur centrale
+ '''
+ txt = self.Header()
+ txt += self.Model()
+ txt += self.InputDistribution()
+ txt += self.InputRandomVector()
+ txt += self.OutputRandomVector()
+
+ Methode = None
+ if ( self.DictMCVal.has_key( 'Method' ) ):
+ Methode = self.DictMCVal[ 'Method' ]
+
+ Traitement = None
+ if ( subDict.has_key( Methode ) ):
+ Traitement = subDict[ Methode ]
+
+ if ( Traitement is not None ):
+ txt += "# Etude 'Central Uncertainty'\n"
+ txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+ txt += self.Footer()
+ return txt
+
+
+ def TaylorVarianceDecomposition (self):
+ '''
+ Etude par decomposition de Taylor
+ '''
+ txt = "# Cumul quadratique (decomposition de Taylor)\n"
+ txt += "%s = QuadraticCumul( %s )\n" % (self.variable["myQuadraticCumul"], self.variable["outputRandomVector"])
+ txt += "\n"
+ txt += "# Resultats\n"
+
+ if ( self.DictMCVal.has_key( 'MeanFirstOrder' ) ):
+ if ( self.DictMCVal[ 'MeanFirstOrder' ] == "yes" ):
+ txt += "%s = %s.getMeanFirstOrder()\n" % (self.variable["meanFirstOrder"], self.variable["myQuadraticCumul"])
+ txt += "print '%s = ', %s\n" % ("mean First Order", self.variable["meanFirstOrder"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'MeanSecondOrder' ) ):
+ if ( self.DictMCVal[ 'MeanSecondOrder' ] == "yes" ):
+ txt += "%s = %s.getMeanSecondOrder()\n" % (self.variable["meanSecondOrder"], self.variable["myQuadraticCumul"])
+ txt += "print '%s = ', %s\n" % ("mean Second Order", self.variable["meanSecondOrder"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'StandardDeviationFirstOrder' ) ):
+ if ( self.DictMCVal[ 'StandardDeviationFirstOrder' ] == "yes" ):
+ txt += "%s = %s.getCovariance()\n" % (self.variable["standardDeviationFirstOrder"], self.variable["myQuadraticCumul"])
+ txt += "dim = %s.getDimension()\n" % self.variable["standardDeviationFirstOrder"]
+ txt += "for i in range( dim ):\n"
+ txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["standardDeviationFirstOrder"], self.variable["standardDeviationFirstOrder"])
+ txt += " print '%s = ', %s[ i, i ]\n" % ("standard Deviation First Order", self.variable["standardDeviationFirstOrder"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'ImportanceFactor' ) ):
+ if ( self.DictMCVal[ 'ImportanceFactor' ] == "yes" ):
+ txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myQuadraticCumul"])
+ txt += "for i in range(%s.getDimension()):\n" % self.variable["importanceFactors"]
+ txt += " print %s.getDescription()[i], ':', %s[i]*100., '%%'\n" % (self.variable["distribution"], self.variable["importanceFactors"])
+ txt += "\n"
+ txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myQuadraticCumul"])
+ txt += "%s = '%s'\n" % (self.variable["importanceFactorsDrawing"], self.DictMCVal[ 'ImportanceFactorDrawingFilename' ])
+ txt += "%s.draw( %s )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"])
+ txt += "#if is_xserver_available():\n"
+ txt += "# view = View(%s)\n" % self.variable["importanceFactorsGraph"]
+ txt += "# view.show(block=True)\n"
+ txt += "#else:\n"
+ txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["importanceFactorsGraph"]
+ txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["importanceFactorsGraph"]
+ txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["importanceFactorsGraph"]
+ txt += "\n"
+
+ txt += "\n"
+ return txt
+
+ def CentralUncertaintyRandomSampling (self):
+ '''
+ Etude par echantillonage aleatoire
+ '''
+ size = 0
+ if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
+ size = self.DictMCVal[ 'SimulationsNumber' ]
+
+ txt = "# Echantillonnage aleatoire de la variable de sortie\n"
+ txt += "%s = %d\n" % (self.variable["inSize"], size)
+ txt += "%s = %s.getSample( %s )\n" % (self.variable["inputSample"], self.variable["inputRandomVector"], self.variable["inSize"])
+ txt += "%s = %s( %s )\n" % (self.variable["outputSample"], self.variable["model"], self.variable["inputSample"])
+ txt += "if contain_nan_values( %s ):\n" % (self.variable["outputSample"])
+ txt += " raise Exception('Some computations failed')\n"
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'EmpiricalMean' ) ):
+ if ( self.DictMCVal[ 'EmpiricalMean' ] == "yes" ):
+ txt += "%s = %s.computeMean()\n" % (self.variable["empiricalMean"], self.variable["outputSample"])
+ txt += "print '%s =', %s[0]\n" % ("empirical Mean", self.variable["empiricalMean"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'EmpiricalStandardDeviation' ) ):
+ if ( self.DictMCVal[ 'EmpiricalStandardDeviation' ] == "yes" ):
+ txt += "%s = %s.computeCovariance()\n" % (self.variable["empiricalStandardDeviation"], self.variable["outputSample"])
+ txt += "dim = %s.getDimension()\n" % self.variable["empiricalStandardDeviation"]
+ txt += "for i in range( dim ):\n"
+ txt += " %s[ i, i ] = math.sqrt( %s[ i, i ] )\n" % (self.variable["empiricalStandardDeviation"], self.variable["empiricalStandardDeviation"])
+ txt += " print '%s = ', %s[ i, i ]\n" % ("empirical Standard Deviation", self.variable["empiricalStandardDeviation"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'EmpiricalQuantile_Order' ) ):
+ ordre = self.DictMCVal[ 'EmpiricalQuantile_Order' ]
+ txt += "%s = %s.computeQuantile( %s )\n" % (self.variable["empiricalQuantile"], self.variable["outputSample"], ordre)
+ txt += "print '%s ( %s ) =', %s\n" % ("empirical Quantile", ordre, self.variable["empiricalQuantile"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'CorrelationAnalysis' ) ):
+ if ( self.DictMCVal[ 'CorrelationAnalysis' ] == "yes" ):
+ txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"]
+ txt += " %s = CorrelationAnalysis.PCC( %s, %s )\n" % (self.variable["PCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+ txt += " print 'PCC Coefficients:'\n"
+ txt += " for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["PCCcoefficient"])
+ txt += "\n"
+ txt += " %s = CorrelationAnalysis.PRCC( %s, %s )\n" % (self.variable["PRCCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+ txt += " print 'PRCC Coefficients:'\n"
+ txt += " for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["PRCCcoefficient"])
+ txt += "\n"
+ txt += " %s = CorrelationAnalysis.SRC( %s, %s )\n" % (self.variable["SRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+ txt += " print 'SRC Coefficients:'\n"
+ txt += " for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["SRCcoefficient"])
+ txt += "\n"
+ txt += " %s = CorrelationAnalysis.SRRC( %s, %s )\n" % (self.variable["SRRCcoefficient"], self.variable["inputSample"], self.variable["outputSample"])
+ txt += " print 'SRRC Coefficients:'\n"
+ txt += " for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':', %s[i]\n" % (self.variable["distribution"], self.variable["SRRCcoefficient"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'KernelSmoothing' ) ):
+ if ( self.DictMCVal[ 'KernelSmoothing' ] == "yes" ):
+ txt += "# Kernel Smoohing\n"
+ txt += "%s = KernelSmoothing()\n" % self.variable["kernel"]
+ txt += "if ( %s.getDimension() == 1 ):\n" % self.variable["outputSample"]
+ txt += " %s.setName( 'Output' )\n" % self.variable["outputSample"]
+ txt += " %s = %s.build( %s, 'TRUE')\n" % (self.variable["kernelSmoothedDist"], self.variable["kernel"], self.variable["outputSample"])
+ txt += " %s = %s.drawPDF()\n" % (self.variable["kernelSmoothedGraph"], self.variable["kernelSmoothedDist"])
+ txt += " %s = '%s'\n" % (self.variable["kernelSmoothedPDFDrawing"], self.DictMCVal[ 'KernelSmoothingDrawingFilename' ])
+ txt += " %s.draw( %s )\n" % (self.variable["kernelSmoothedGraph"], self.variable["kernelSmoothedPDFDrawing"])
+ txt += " #if is_xserver_available():\n"
+ txt += " # view = View(%s)\n" % self.variable["kernelSmoothedGraph"]
+ txt += " # view.show(block=True)\n"
+ txt += " #else:\n"
+ txt += " # print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["kernelSmoothedGraph"]
+ txt += " print 'bitmap =', %s.getBitmap()\n" % self.variable["kernelSmoothedGraph"]
+ txt += " print 'postscript =', %s.getPostscript()\n" % self.variable["kernelSmoothedGraph"]
+ txt += "\n"
+
+ return txt
+
+ def ThresholdExceedence (self, subDict):
+ '''
+ Produit le fichier study correspondant a une analyse de depassement de seuil
+ '''
+ txt = self.Header()
+ txt += "# Etude 'Threshold Exceedence'\n"
+
+ txt += self.RandomGenerator()
+ txt += self.Model()
+ txt += self.InputDistribution()
+ txt += self.InputRandomVector()
+ txt += self.OutputRandomVector()
+ txt += self.Event()
+
+ Methode = None
+ if ( self.DictMCVal.has_key( 'Method' ) ):
+ Methode = self.DictMCVal[ 'Method' ]
+
+ Traitement = None
+ if ( subDict.has_key( Methode ) ):
+ Traitement = subDict[ Methode ]
+
+ if ( Traitement is not None ):
+ txt += apply( STDGenerateur.__dict__[ Traitement ], (self, subDict) )
+
+ txt += self.Footer()
+ return txt
+
+ def Simulation (self, subDict):
+ '''
+ Methodes de simulation
+ '''
+ Algorithme = None
+ if ( self.DictMCVal.has_key( 'Algorithm' ) ):
+ Algorithme = self.DictMCVal[ 'Algorithm' ]
+
+ Traitement = None
+ if ( subDict.has_key( Algorithme ) ):
+ Traitement = subDict[ Algorithme ]
+
+ if ( Traitement is not None ):
+ txt = apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+ maxOuterSampling = None
+ if ( self.DictMCVal.has_key( 'MaximumOuterSampling' ) ):
+ maxOuterSampling = self.DictMCVal[ 'MaximumOuterSampling' ]
+ txt += "%s.setMaximumOuterSampling( %s )\n" % (self.variable["myAlgo"], maxOuterSampling)
+
+ blockSize = None
+ if ( self.DictMCVal.has_key( 'BlockSize' ) ):
+ blockSize = self.DictMCVal[ 'BlockSize' ]
+ txt += "%s.setBlockSize( %s )\n" % (self.variable["myAlgo"], blockSize)
+
+ maxCoefficientOfVariation = None
+ if ( self.DictMCVal.has_key( 'MaximumCoefficientOfVariation' ) ):
+ maxCoefficientOfVariation = self.DictMCVal[ 'MaximumCoefficientOfVariation' ]
+ txt += "%s.setMaximumCoefficientOfVariation( %s )\n" % (self.variable["myAlgo"], maxCoefficientOfVariation)
+
+ txt += "%s.run()\n" % self.variable["myAlgo"]
+ txt += "\n"
+ txt += "# Resultats de la simulation\n"
+ txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'Probability' ) ):
+ if ( self.DictMCVal[ 'Probability' ] == "yes" ):
+ txt += "%s = %s.getProbabilityEstimate()\n" % (self.variable["probability"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("probability", self.variable["probability"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'StandardDeviation' ) ):
+ if ( self.DictMCVal[ 'StandardDeviation' ] == "yes" ):
+ txt += "%s = math.sqrt( %s.getProbabilityEstimate() )\n" % (self.variable["standardDeviation"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("standard Deviation", self.variable["standardDeviation"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'ConfidenceInterval' ) and self.DictMCVal.has_key( 'Probability' ) ):
+ if ( ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) and ( self.DictMCVal[ 'Probability' ] == "yes" ) ):
+ level = self.DictMCVal[ 'Level' ]
+ txt += "%s = %s.getConfidenceLength( %s )\n" % (self.variable["length"], self.variable["myResult"], level)
+ txt += "print 'confidence interval at %s = [', %s-0.5*%s, ',', %s+0.5*%s, ']'\n" % (level, self.variable["probability"], self.variable["length"], self.variable["probability"], self.variable["length"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'VariationCoefficient' ) ):
+ if ( self.DictMCVal[ 'VariationCoefficient' ] == "yes" ):
+ txt += "%s = %s.getCoefficientOfVariation()\n" % (self.variable["coefficientOfVariation"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("coefficient of Variation", self.variable["coefficientOfVariation"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'SimulationsNumber' ) ):
+ if ( self.DictMCVal[ 'SimulationsNumber' ] == "yes" ):
+ txt += "%s = %s.getOuterSampling()\n" % (self.variable["simulationNumbers"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("simulation Numbers", self.variable["simulationNumbers"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'ConvergenceGraph' ) and self.DictMCVal.has_key( 'ConfidenceInterval' ) ):
+ if ( ( self.DictMCVal[ 'ConvergenceGraph' ] == "yes" ) and ( self.DictMCVal[ 'ConfidenceInterval' ] == "yes" ) ):
+ txt += "%s = %s\n" % (self.variable["alpha"], self.DictMCVal[ 'Level' ])
+ txt += "%s = %s.drawProbabilityConvergence( %s )\n" % (self.variable["convergenceGraph"], self.variable["myAlgo"], self.variable["alpha"])
+ txt += "%s = '%s'\n" % (self.variable["convergenceDrawing"], self.DictMCVal[ 'ConvergenceDrawingFilename' ])
+ txt += "%s.draw( %s )\n" % (self.variable["convergenceGraph"], self.variable["convergenceDrawing"])
+ txt += "#if is_xserver_available():\n"
+ txt += "# view = View(%s)\n" % self.variable["convergenceGraph"]
+ txt += "# view.show(block=True)\n"
+ txt += "#else:\n"
+ txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["convergenceGraph"]
+ txt += "\n"
+
+ return txt
+
+ def Analytical (self, subDict):
+ '''
+ Methodes analytiques
+ '''
+ txt = ""
+
+ OptimizationAlgo = None
+ if ( self.DictMCVal.has_key( 'OptimizationAlgorithm' ) ):
+ OptimizationAlgo = self.DictMCVal[ 'OptimizationAlgorithm' ]
+
+ Traitement = None
+ if ( subDict.has_key( OptimizationAlgo ) ):
+ Traitement = subDict[ OptimizationAlgo ]
+
+ if ( Traitement is not None ):
+ txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+ txt += self.OptimizerSettings()
+ txt += self.PhysicalStartingPoint()
+
+ Approximation = None
+ if ( self.DictMCVal.has_key( 'Approximation' ) ):
+ Approximation = self.DictMCVal[ 'Approximation' ]
+
+ Traitement = None
+ if ( subDict.has_key( Approximation ) ):
+ Traitement = subDict[ Approximation ]
+
+ if ( Traitement is not None ):
+ txt += apply( STDGenerateur.__dict__[ Traitement ], (self,) )
+
+ txt += self.RunAlgorithm()
+ txt += self.AnalyticalResult()
+
+ return txt
+
+ def OptimizerSettings (self):
+ '''
+ Parametrage de l optimiseur
+ '''
+ txt = ""
+
+ simulationNumbers = None
+ if ( self.DictMCVal.has_key( 'MaximumIterationsNumber' ) ):
+ simulationNumbers = self.DictMCVal[ 'MaximumIterationsNumber' ]
+ txt += "%s.setMaximumIterationsNumber( %s )\n" % (self.variable["myOptimizer"], simulationNumbers)
+
+ absoluteError = None
+ if ( self.DictMCVal.has_key( 'MaximumAbsoluteError' ) ):
+ absoluteError = self.DictMCVal[ 'MaximumAbsoluteError' ]
+ txt += "%s.setMaximumAbsoluteError( %s )\n" % (self.variable["myOptimizer"], absoluteError)
+
+ relativeError = None
+ if ( self.DictMCVal.has_key( 'MaximumRelativeError' ) ):
+ relativeError = self.DictMCVal[ 'MaximumRelativeError' ]
+ txt += "%s.setMaximumRelativeError( %s )\n" % (self.variable["myOptimizer"], relativeError)
+
+ residualError = None
+ if ( self.DictMCVal.has_key( 'MaximumResidualError' ) ):
+ residualError = self.DictMCVal[ 'MaximumResidualError' ]
+ txt += "%s.setMaximumResidualError( %s )\n" % (self.variable["myOptimizer"], residualError)
+
+ constraintError = None
+ if ( self.DictMCVal.has_key( 'MaximumConstraintError' ) ):
+ constraintError = self.DictMCVal[ 'MaximumConstraintError' ]
+ txt += "%s.setMaximumConstraintError( %s )\n" % (self.variable["myOptimizer"], constraintError)
+
+ txt += "\n"
+
+ return txt
+
+ def PhysicalStartingPoint (self):
+ '''
+ Point physique de depart
+ '''
+ txt = "# Point physique de depart\n"
+
+ if ( self.DictMCVal.has_key( 'PhysicalStartingPoint' ) ):
+ point = self.DictMCVal[ 'PhysicalStartingPoint' ]
+ dimension = len( point )
+ txt += "%s = NumericalPoint( %d )\n" % (self.variable["startingPoint"], dimension)
+ for i in range( dimension ):
+ txt += "%s[ %d ] = %g\n" % (self.variable["startingPoint"], i, point[i])
+ else:
+ txt += "%s = %s.getMean()\n" % (self.variable["startingPoint"], self.variable["inputRandomVector"])
+
+ txt += "\n"
+
+ return txt
+
+ def AnalyticalResult (self):
+ '''
+ Resultat des methodes analytiques
+ '''
+ txt = "# Resultat des methodes analytiques\n"
+ txt += "%s = %s.getResult()\n" % (self.variable["myResult"], self.variable["myAlgo"])
+
+ if ( self.DictMCVal.has_key( 'Probability' ) ):
+ if ( self.DictMCVal[ 'Probability' ] == "yes" ):
+ txt += "%s = %s.getEventProbability()\n" % (self.variable["probability"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % (self.variable["probability"], self.variable["probability"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'HasoferReliabilityIndex' ) ):
+ if ( self.DictMCVal[ 'HasoferReliabilityIndex' ] == "yes" ):
+ txt += "%s = %s.getHasoferReliabilityIndex()\n" % (self.variable["hasoferReliabilityIndex"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("hasofer Reliability Index", self.variable["hasoferReliabilityIndex"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'DesignPoint' ) ):
+ if ( self.DictMCVal[ 'DesignPoint' ] == "yes" ):
+ txt += "%s = %s.getStandardSpaceDesignPoint()\n" % (self.variable["standardSpaceDesignPoint"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("standard Space Design Point", self.variable["standardSpaceDesignPoint"])
+ txt += "%s = %s.getPhysicalSpaceDesignPoint()\n" % (self.variable["physicalSpaceDesignPoint"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("physical Space Design Point", self.variable["physicalSpaceDesignPoint"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'ImportanceFactor' ) ):
+ if ( self.DictMCVal[ 'ImportanceFactor' ] == "yes" ):
+ txt += "print 'Importance Factors:'\n"
+ txt += "%s = %s.getImportanceFactors()\n" % (self.variable["importanceFactors"], self.variable["myResult"])
+ txt += "for i in range(%s.getDimension()):\n" % self.variable["importanceFactors"]
+ txt += " print %s.getDescription()[i], ':', %s[i]*100., '%%'\n" % (self.variable["distribution"], self.variable["importanceFactors"])
+ txt += "\n"
+ txt += "%s = %s.drawImportanceFactors()\n" % (self.variable["importanceFactorsGraph"], self.variable["myResult"])
+ txt += "%s = '%s'\n" % (self.variable["importanceFactorsDrawing"], self.DictMCVal[ 'ImportanceFactorDrawingFilename' ])
+ txt += "%s.draw( %s )\n" % (self.variable["importanceFactorsGraph"], self.variable["importanceFactorsDrawing"])
+ txt += "#if is_xserver_available():\n"
+ txt += "# view = View(%s)\n" % self.variable["importanceFactorsGraph"]
+ txt += "# view.show(block=True)\n"
+ txt += "#else:\n"
+ txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["importanceFactorsGraph"]
+ txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["importanceFactorsGraph"]
+ txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["importanceFactorsGraph"]
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'FORMEventProbabilitySensitivity' ) ):
+ if ( self.DictMCVal[ 'FORMEventProbabilitySensitivity' ] == "yes" ):
+ txt += "%s = %s.getEventProbabilitySensitivity()\n" % (self.variable["eventProbabilitySensitivity"], self.variable["myResult"])
+ txt += "print 'FORM Event Probability Sensitivity:'\n"
+ txt += "for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':'\n" % self.variable["distribution"]
+ txt += " for j in range( %s[i].getDimension() ):\n" % self.variable["eventProbabilitySensitivity"]
+ txt += " print ' ', %s[i].getDescription()[j], ':', %s[i][j]\n" % (self.variable["eventProbabilitySensitivity"], self.variable["eventProbabilitySensitivity"])
+ txt += "\n"
+ txt += "%s = %s.drawEventProbabilitySensitivity()[0]\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["myResult"])
+ txt += "%s = '%s'\n" % (self.variable["eventProbabilitySensitivityDrawing"], self.DictMCVal[ 'FORMEventProbabilitySensitivityDrawingFilename' ])
+ txt += "%s.draw( %s )\n" % (self.variable["eventProbabilitySensitivityGraph"], self.variable["eventProbabilitySensitivityDrawing"])
+ txt += "#if is_xserver_available():\n"
+ txt += "# view = View(%s)\n" % self.variable["eventProbabilitySensitivityGraph"]
+ txt += "# view.show(block=True)\n"
+ txt += "#else:\n"
+ txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["eventProbabilitySensitivityGraph"]
+ txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["eventProbabilitySensitivityGraph"]
+ txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["eventProbabilitySensitivityGraph"]
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'HasoferReliabilityIndexSensitivity' ) ):
+ if ( self.DictMCVal[ 'HasoferReliabilityIndexSensitivity' ] == "yes" ):
+ txt += "%s = %s.getHasoferReliabilityIndexSensitivity()\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["myResult"])
+ txt += "print 'Hasofer Reliability Index Sensitivity:'\n"
+ txt += "for i in range( %s ):\n" % self.variable["n"]
+ txt += " print %s.getDescription()[i], ':'\n" % self.variable["distribution"]
+ txt += " for j in range( %s[i].getDimension() ):\n" % self.variable["hasoferReliabilityIndexSensitivity"]
+ txt += " print ' ', %s[i].getDescription()[j], ':', %s[i][j]\n" % (self.variable["hasoferReliabilityIndexSensitivity"], self.variable["hasoferReliabilityIndexSensitivity"])
+ txt += "\n"
+ txt += "%s = %s.drawHasoferReliabilityIndexSensitivity()[0]\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["myResult"])
+ txt += "%s = '%s'\n" % (self.variable["hasoferReliabilityIndexSensitivityDrawing"], self.DictMCVal[ 'HasoferReliabilityIndexSensitivityDrawingFilename' ])
+ txt += "%s.draw( %s )\n" % (self.variable["hasoferReliabilityIndexSensitivityGraph"], self.variable["hasoferReliabilityIndexSensitivityDrawing"])
+ txt += "#if is_xserver_available():\n"
+ txt += "# view = View(%s)\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
+ txt += "# view.show(block=True)\n"
+ txt += "#else:\n"
+ txt += "# print 'Warning: cannot display image', %s.getBitmap(), '(probably because no X server was found)'\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
+ txt += "print 'bitmap =', %s.getBitmap()\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
+ txt += "print 'postscript =', %s.getPostscript()\n" % self.variable["hasoferReliabilityIndexSensitivityGraph"]
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'TvedtApproximation' ) ):
+ if ( self.DictMCVal[ 'TvedtApproximation' ] == "yes" ):
+ txt += "%s = %s.getEventProbabilityTvedt()\n" % (self.variable["tvedtApproximation"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("Tvedt Approximation", self.variable["tvedtApproximation"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'HohenBichlerApproximation' ) ):
+ if ( self.DictMCVal[ 'HohenBichlerApproximation' ] == "yes" ):
+ txt += "%s = %s.getEventProbabilityHohenBichler()\n" % (self.variable["hohenBichlerApproximation"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("HohenBichler Approximation", self.variable["tvedtApproximation"])
+ txt += "\n"
+
+ if ( self.DictMCVal.has_key( 'BreitungApproximation' ) ):
+ if ( self.DictMCVal[ 'BreitungApproximation' ] == "yes" ):
+ txt += "%s = %s.getEventProbabilityBreitung()\n" % (self.variable["breitungApproximation"], self.variable["myResult"])
+ txt += "print '%s =', %s\n" % ("Breitung Approximation", self.variable["breitungApproximation"])
+ txt += "\n"
+
+
+ return txt
+
+ def RandomGenerator (self):
+ '''
+ Generateur Aleatoire
+ '''
+ txt = ""
+
+ seed = None
+ if ( self.DictMCVal.has_key( 'RandomGeneratorSeed' ) ):
+ seed = self.DictMCVal[ 'RandomGeneratorSeed' ]
+ txt += "# Initialise le generateur aleatoire\n"
+ txt += "RandomGenerator.SetSeed( %s )\n" % seed
+ txt += "\n"
+
+ return txt
+
+ def Event (self):
+ '''
+ Definition de l evenement de defaillance
+ '''
+ operator = None
+ if ( self.DictMCVal.has_key( 'ComparisonOperator' ) ):
+ operator = self.DictMCVal[ 'ComparisonOperator' ]
+
+ threshold = None
+ if ( self.DictMCVal.has_key( 'Threshold' ) ):
+ threshold = self.DictMCVal[ 'Threshold' ]
+
+ txt = "# Evenement de defaillance\n"
+ txt += "%s = Event( %s, ComparisonOperator( %s() ), %s )\n" % (self.variable["myEvent"], self.variable["outputRandomVector"], operator, threshold)
+ txt += "%s.setName( '%s' )\n" % (self.variable["myEvent"], "myEvent")
+ txt += "\n"
+ return txt
+
+ def MonteCarlo (self):
+ '''
+ Methode de MonteCarlo
+ '''
+ txt = "# Simulation par MonteCarlo\n"
+ txt += "%s = MonteCarlo( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"])
+ txt += "\n"
+
+ return txt
+
+ def LHS (self):
+ '''
+ Methode LHS
+ '''
+ txt = "# Simulation par LHS\n"
+ txt += "%s = LHS( %s )\n" % (self.variable["myAlgo"], self.variable["myEvent"])
+ txt += "\n"
+
+ return txt
+
+ def ImportanceSampling (self):
+ '''
+ Methode de tirage d importance
+ '''
+ dimension = 0
+ if ( self.DictMCVal.has_key( 'MeanVector' ) ):
+ meanVector = self.DictMCVal[ 'MeanVector' ]
+ dimension = len( meanVector )
+
+ txt = "# Simulation par Tirage d'importance\n"
+ txt += "# Densite d'importance\n"
+ txt += "%s = NumericalPoint( %s )\n" % (self.variable["meanVector"], self.variable["n"])
+ for i in range(dimension):
+ txt += "%s[%d] = %g\n" % (self.variable["meanVector"], i, meanVector[i])
+
+ txt += "%s = Normal( %s, CovarianceMatrix( IdentityMatrix( %s ) ) )\n" % (self.variable["importanceDensity"], self.variable["meanVector"], self.variable["n"])
+ txt += "%s = ImportanceSampling( %s, Distribution( %s ) )\n" % (self.variable["myAlgo"], self.variable["myEvent"], self.variable["importanceDensity"])
+ txt += "\n"
+
+ return txt
+
+ def FORM (self):
+ '''
+ Methode FORM
+ '''
+ txt = "# Algorithme FORM\n"
+ txt += "%s = FORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
+ txt += "\n"
+
+ return txt
+
+ def SORM (self):
+ '''
+ Methode SORM
+ '''
+ txt = "# Algorithme SORM\n"
+ txt += "%s = SORM ( NearestPointAlgorithm( %s ), %s, %s )\n" % (self.variable["myAlgo"], self.variable["myOptimizer"], self.variable["myEvent"], self.variable["startingPoint"])
+ txt += "\n"
+
+ return txt
+
+ def RunAlgorithm (self):
+ '''
+ Do the computation
+ '''
+ txt = ""
+ if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
+ if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
+ txt += "%s = %s.getEvaluationCallsNumber()\n" % (self.variable["modelEvaluationCalls"], self.variable["model"])
+ txt += "%s = %s.getGradientCallsNumber()\n" % (self.variable["modelGradientCalls"], self.variable["model"])
+ txt += "%s = %s.getHessianCallsNumber()\n" % (self.variable["modelHessianCalls"], self.variable["model"])
+ txt += "\n"
+
+ txt += "# Perform the computation\n"
+ txt += "%s.run()\n" % self.variable["myAlgo"]
+ txt += "\n"
+
+
+ if ( self.DictMCVal.has_key( 'FunctionCallsNumber' ) ):
+ if ( self.DictMCVal[ 'FunctionCallsNumber' ] == "yes" ):
+ txt += "%s = %s.getEvaluationCallsNumber() - %s\n" % (self.variable["modelEvaluationCalls"], self.variable["model"], self.variable["modelEvaluationCalls"])
+ txt += "%s = %s.getGradientCallsNumber() - %s\n" % (self.variable["modelGradientCalls"], self.variable["model"], self.variable["modelGradientCalls"])
+ txt += "%s = %s.getHessianCallsNumber() - %s\n" % (self.variable["modelHessianCalls"], self.variable["model"], self.variable["modelHessianCalls"])
+ txt += "\n"
+ txt += "print '%s =', %s\n" % ("model Evaluation Calls", self.variable["modelEvaluationCalls"])
+ txt += "print '%s =', %s\n" % ("model Gradient Calls", self.variable["modelGradientCalls"])
+ txt += "print '%s =', %s\n" % ("model Hessian Calls", self.variable["modelHessianCalls"])
+ txt += "\n"
+
+ return txt
+
+ def Cobyla (self):
+ '''
+ Methode Cobyla
+ '''
+ txt = "# Optimisation par Cobyla\n"
+ txt += "%s = Cobyla()\n" % self.variable["myOptimizer"]
+ txt += "#%s = CobylaSpecificParameters()\n" % self.variable["specificParameters"]
+ txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
+ txt += "\n"
+
+ return txt
+
+ def AbdoRackwitz (self):
+ '''
+ Methode AbdoRackwitz
+ '''
+ txt = "# Optimisation par AbdoRackwitz\n"
+ txt += "%s = AbdoRackwitz()\n" % self.variable["myOptimizer"]
+ txt += "#%s = AbdoRackwitzSpecificParameters()\n" % self.variable["specificParameters"]
+ txt += "#%s.setSpecificParameters( %s )\n" % (self.variable["myOptimizer"], self.variable["specificParameters"])
+ txt += "\n"
+ return txt
+
+ def Beta (self, loi):
+ '''
+ Definition de la loi Beta
+ '''
+ settings = {
+ "RT" : "Beta.RT",
+ "MuSigma" : "Beta.MUSIGMA",
+ }
+ if loi[ 'Settings' ] == 'RT' :
+ arg1 = loi[ 'R' ]
+ arg2 = loi[ 'T' ]
+ else :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+
+ arg3 = loi[ 'A' ]
+ arg4 = loi[ 'B' ]
+ txt = "Beta( %g, %g, %g, %g, %s )" % (arg1, arg2, arg3, arg4, settings[ loi[ 'Settings' ] ])
+ return txt
+
+ def Exponential (self, loi):
+ '''
+ Definition de la loi Exponential
+ '''
+ arg1 = loi[ 'Lambda' ]
+ arg2 = loi[ 'Gamma' ]
+ txt = "Exponential( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def Gamma (self, loi):
+ '''
+ Definition de la loi Gamma
+ '''
+ settings = {
+ "KLambda" : "Gamma.KLAMBDA",
+ "MuSigma" : "Gamma.MUSIGMA",
+ }
+ if loi[ 'Settings' ] == 'KLambda' :
+ arg1 = loi[ 'K' ]
+ arg2 = loi[ 'Lambda' ]
+ else :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+
+ arg3 = loi[ 'Gamma' ]
+ txt = "Gamma( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+ return txt
+
+ def Geometric (self, loi):
+ '''
+ Definition de la loi Geometric
+ '''
+ txt = "Geometric( %g )" % loi[ 'P' ]
+ return txt
+
+ def Gumbel (self, loi):
+ '''
+ Definition de la loi Gumbel
+ '''
+ settings = {
+ "AlphaBeta" : "Gumbel.ALPHABETA",
+ "MuSigma" : "Gumbel.MUSIGMA",
+ }
+ if loi[ 'Settings' ] == 'AlphaBeta' :
+ arg1 = loi[ 'Alpha' ]
+ arg2 = loi[ 'Beta' ]
+ else :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+
+ txt = "Gumbel( %g, %g, %s )" % (arg1, arg2, settings[ loi[ 'Settings' ] ])
+ return txt
+
+ def Histogram (self, loi):
+ '''
+ Definition de la loi Histogram
+ '''
+ arg1 = loi[ 'First' ]
+ arg2 = loi[ 'Values' ]
+ txt = "Histogram( %g, %s )" % (arg1, arg2)
+ return txt
+
+ def Laplace (self, loi):
+ '''
+ Definition de la loi Laplace
+ '''
+ arg1 = loi[ 'Lambda' ]
+ arg2 = loi[ 'Mu' ]
+ txt = "Laplace( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def Logistic (self, loi):
+ '''
+ Definition de la loi Logistic
+ '''
+ arg1 = loi[ 'Alpha' ]
+ arg2 = loi[ 'Beta' ]
+ txt = "Logistic( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def LogNormal (self, loi):
+ '''
+ Definition de la loi LogNormal
+ '''
+ settings = {
+ "MuSigmaLog" : "LogNormal.MUSIGMA_LOG",
+ "MuSigma" : "LogNormal.MUSIGMA",
+ "MuSigmaOverMu" : "LogNormal.MU_SIGMAOVERMU",
+ }
+ if loi[ 'Settings' ] == 'MuSigmaLog' :
+ arg1 = loi[ 'MuLog' ]
+ arg2 = loi[ 'SigmaLog' ]
+ elif loi[ 'Settings' ] == 'MuSigmaOverMu' :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'SigmaOverMu' ]
+ else :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+
+ arg3 = loi[ 'Gamma' ]
+ txt = "LogNormal( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+ return txt
+
+ def MultiNomial (self, loi):
+ '''
+ Definition de la loi MultiNomial
+ '''
+ arg1 = loi[ 'Values' ]
+ arg2 = loi[ 'N' ]
+ txt = "MultiNomial( NumericalPoint( %s ) , %d)" % (arg1, arg2)
+ return txt
+
+ def NonCentralStudent (self, loi):
+ '''
+ Definition de la loi NonCentralStudent
+ '''
+ arg1 = loi[ 'Nu' ]
+ arg2 = loi[ 'Delta' ]
+ arg3 = loi[ 'Gamma' ]
+ txt = "NonCentralStudent( %g, %g )" % (arg1, arg2, arg3)
+ return txt
+
+ def Normal (self, loi):
+ '''
+ Definition de la loi Normal
+ '''
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+ txt = "Normal( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def TruncatedNormal (self, loi):
+ '''
+ Definition de la loi TruncatedNormal
+ '''
+ arg1 = loi[ 'MuN' ]
+ arg2 = loi[ 'SigmaN' ]
+ arg3 = loi[ 'A' ]
+ arg4 = loi[ 'B' ]
+ txt = "TruncatedNormal( %g, %g, %g, %g )" % (arg1, arg2, arg3, arg4)
+ return txt
+
+ def Poisson (self, loi):
+ '''
+ Definition de la loi Poisson
+ '''
+ txt = "Poisson( %g )" % loi[ 'Lambda' ]
+ return txt
+
+ def Rayleigh (self, loi):
+ '''
+ Definition de la loi Rayleigh
+ '''
+ arg1 = loi[ 'Sigma' ]
+ arg2 = loi[ 'Gamma' ]
+ txt = "Rayleigh( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def Student (self, loi):
+ '''
+ Definition de la loi Student
+ '''
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Nu' ]
+ arg3 = loi[ 'Sigma' ]
+ txt = "Student( %g, %g, %g )" % (arg1, arg2, arg3)
+ return txt
+
+ def Triangular (self, loi):
+ '''
+ Definition de la loi Triangular
+ '''
+ arg1 = loi[ 'A' ]
+ arg2 = loi[ 'M' ]
+ arg3 = loi[ 'B' ]
+ txt = "Triangular( %g, %g, %g )" % (arg1, arg2, arg3)
+ return txt
+
+ def Uniform (self, loi):
+ '''
+ Definition de la loi Uniform
+ '''
+ arg1 = loi[ 'A' ]
+ arg2 = loi[ 'B' ]
+ txt = "Uniform( %g, %g )" % (arg1, arg2)
+ return txt
+
+ def UserDefined (self, loi):
+ '''
+ Definition de la loi UserDefined
+ '''
+ txt = "** UserDefined not defined yet **"
+ return txt
+
+ def Weibull (self, loi):
+ '''
+ Definition de la loi Weibull
+ '''
+ settings = {
+ "AlphaBeta" : "Weibull.ALPHABETA",
+ "MuSigma" : "Weibull.MUSIGMA",
+ }
+ if loi[ 'Settings' ] == 'AlphaBeta' :
+ arg1 = loi[ 'Alpha' ]
+ arg2 = loi[ 'Beta' ]
+ else :
+ arg1 = loi[ 'Mu' ]
+ arg2 = loi[ 'Sigma' ]
+
+ arg3 = loi[ 'Gamma' ]
+ txt = "Weibull( %g, %g, %g, %s )" % (arg1, arg2, arg3, settings[ loi[ 'Settings' ] ])
+ return txt
+
+
+
+ def GraphiquePDF (self, loi, chemin, fichier):
+ '''
+ Produit une image PNG representant la PDF de la loi
+ '''
+ txt = headerSTD % self.OpenTURNS_path
+ txt += "dist = %s\n" % apply( STDGenerateur.__dict__[ loi[ 'Kind' ] ], (self, loi) )
+ txt += "graph = dist.drawPDF()\n"
+ txt += "graph.draw( '%s/%s' , 640, 480, GraphImplementation.PNG)\n" % (chemin, fichier)
+ txt += footerSTD
+ return txt
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+Ce module contient le generateur XML pour Openturns
+"""
+import sys
+print sys.path
+from Extensions.i18n import tr
+import openturns
+
+# Dictionnaires de conversion des valeurs lues dans EFICAS
+# en valeurs reconnues par Open TURNS
+# Les clefs 'None' sont les valeurs par defaut
+
+VariableTypeByName = {
+ "in" : openturns.WrapperDataVariableType.IN,
+ "out" : openturns.WrapperDataVariableType.OUT,
+ None : openturns.WrapperDataVariableType.IN,
+ }
+
+FileTypeByName = {
+ "in" : openturns.WrapperDataFileType.IN,
+ "out" : openturns.WrapperDataFileType.OUT,
+ None : openturns.WrapperDataFileType.IN,
+ }
+
+SymbolProvidedByName = {
+ "no" : openturns.WrapperSymbolProvided.NO,
+ "yes" : openturns.WrapperSymbolProvided.YES,
+ None : openturns.WrapperSymbolProvided.NO,
+ }
+
+WrapperStateByName = {
+ "shared" : openturns.WrapperState.SHARED,
+ "specific" : openturns.WrapperState.SPECIFIC,
+ None : openturns.WrapperState.SPECIFIC,
+ }
+
+WrapperModeByName = {
+ "static-link" : openturns.WrapperMode.STATICLINK,
+ "dynamic-link" : openturns.WrapperMode.DYNAMICLINK,
+ "fork" : openturns.WrapperMode.FORK,
+ None : openturns.WrapperMode.FORK,
+ }
+
+WrapperDataTransferByName = {
+ "files" : openturns.WrapperDataTransfer.FILES,
+ "pipe" : openturns.WrapperDataTransfer.PIPE,
+ "arguments" : openturns.WrapperDataTransfer.ARGUMENTS,
+ "socket" : openturns.WrapperDataTransfer.SOCKET,
+ "corba" : openturns.WrapperDataTransfer.CORBA,
+ None : openturns.WrapperDataTransfer.FILES,
+ }
+
+#==========================
+# La classe de creation XML
+#==========================
+
+class XMLGenerateur :
+
+ '''
+ Generation du fichier XML
+ '''
+ def __init__ (self, appli, DictMCVal, DictVariables ) :
+ self.DictMCVal = DictMCVal
+ self.DictVariables = DictVariables
+ self.appli = appli
+
+ def CreeXML (self) :
+ '''
+ Pilotage general de la creation du fichier XML
+ '''
+ data = openturns.WrapperData()
+ data.setLibraryPath( self.GetMCVal('WrapperPath','') )
+ data.setVariableList( self.VariableList() )
+ data.setFunctionDescription( self.FunctionDefinition() )
+ data.setGradientDescription( self.GradientDefinition() )
+ data.setHessianDescription( self.HessianDefinition() )
+ data.setFileList( self.FileList() )
+ data.setParameters( self.Parameters() )
+ #data.setFrameworkData( self.FrameworkData() )
+
+ wrapper=openturns.WrapperFile()
+ wrapper.setWrapperData( data )
+
+ return wrapper
+
+
+ class __variable_ordering:
+ def __init__ (self, dictVar) :
+ self.dictVar = dictVar
+
+ def __call__(self, a, b):
+ return self.dictVar[a]['numOrdre'] - self.dictVar[b]['numOrdre']
+
+ def VariableList (self) :
+ '''
+ Ecrit la liste des variables
+ '''
+ varList = openturns.WrapperDataVariableCollection()
+ for var in sorted( self.DictVariables.keys(), self.__variable_ordering( self.DictVariables ) ) :
+ varList.add( self.Variable( var, self.DictVariables[var] ) )
+ return varList
+
+ def Variable (self, var, dictVar) :
+ '''
+ Ecrit le parametrage d une variable
+ '''
+ variable = openturns.WrapperDataVariable()
+ variable.id_ = var
+ if dictVar[ 'Type' ] in VariableTypeByName.keys() :
+ variable.type_ = VariableTypeByName[ dictVar[ 'Type' ] ]
+ if dictVar.has_key('Comment') : variable.comment_ = dictVar[ 'Comment' ]
+ if dictVar.has_key('Unit') : variable.unit_ = dictVar[ 'Unit' ]
+ if dictVar.has_key('Regexp') : variable.regexp_ = dictVar[ 'Regexp' ]
+ if dictVar.has_key('Format') : variable.format_ = dictVar[ 'Format' ]
+ return variable
+
+ def FunctionDefinition (self) :
+ '''
+ Ecrit la description de la Fonction
+ '''
+ func = openturns.WrapperFunctionDescription()
+ func.name_ = self.GetMCVal( 'FunctionName', '' )
+ if (len(func.name_) != 0) : func.provided_ = SymbolProvidedByName[ 'yes' ]
+ return func
+
+ def GradientDefinition (self) :
+ '''
+ Ecrit la description du Gradient
+ '''
+ grad = openturns.WrapperFunctionDescription()
+ grad.name_ = self.GetMCVal( 'GradientName', '' )
+ if (len(grad.name_) != 0) : grad.provided_ = SymbolProvidedByName[ 'yes' ]
+ return grad
+
+ def HessianDefinition (self) :
+ '''
+ Ecrit la description de la Hessienne
+ '''
+ hess = openturns.WrapperFunctionDescription()
+ hess.name_ = self.GetMCVal( 'HessianName', '' )
+ if (len(hess.name_) != 0) : hess.provided_ = SymbolProvidedByName[ 'yes' ]
+ return hess
+
+
+
+ def FileList (self) :
+ '''
+ Ecrit la liste des fichiers
+ '''
+ fileList = openturns.WrapperDataFileCollection()
+ for dictFile in self.GetMCVal('Files', []) :
+ fileList.add( self.File( dictFile ) )
+ return fileList
+
+ def File (self, dictFile ) :
+ '''
+ Ecrit le parametrage d un fichier
+ '''
+ fich = openturns.WrapperDataFile()
+ fich.id_ = dictFile[ 'Id' ]
+ if dictFile[ 'Type' ] in FileTypeByName.keys() :
+ fich.type_ = FileTypeByName[ dictFile[ 'Type' ] ]
+ if dictFile.has_key('Name') : fich.name_ = dictFile[ 'Name' ]
+ if dictFile.has_key('Path') : fich.path_ = dictFile[ 'Path' ]
+ if dictFile.has_key('Subst') :
+ import string
+ fich.subst_ = string.join( dictFile[ 'Subst' ], ',' )
+ return fich
+
+ def Parameters (self) :
+ '''
+ Ecrit les parametres de couplage au code externe
+ '''
+ parameters = openturns.WrapperParameter()
+ parameters.mode_ = WrapperModeByName[ self.GetMCVal('WrapCouplingMode') ]
+ if (parameters.mode_ == openturns.WrapperMode.FORK ):
+ parameters.command_ = self.GetMCVal('Command')
+ userPrefix = self.GetMCVal('UserPrefix', None)
+ if userPrefix != None : parameters.userPrefix_ = userPrefix
+ parameters.state_ = WrapperStateByName[ self.GetMCVal('State') ]
+ parameters.in_ = WrapperDataTransferByName[ self.GetMCVal('InDataTransfer') ]
+ parameters.out_ = WrapperDataTransferByName[ self.GetMCVal('OutDataTransfer') ]
+ return parameters
+
+ def FrameworkData (self) :
+ '''
+ Ecrit les donnees liees a l utilisation d un framework englobant
+ '''
+ framework = openturns.WrapperFrameworkData()
+# framework.studycase_ = "12:23:34"
+# framework.componentname_ = self.GetMCVal('SolverComponentName', 'UNDEFINED')
+ CN = self.GetMCVal('SolverComponentName', 'UNDEFINED')
+ print 'CN = %s', CN
+ framework.componentname_ = CN
+ return framework
+
+
+ # ---------------------------------------------------------------------------------
+
+
+ def GetTag (self, tag) :
+ '''
+ Recupere la chaine associee au tag dans la table dictTagsXML.
+ Leve une exception si le tag n est pas trouve
+ '''
+ if ( dictTagsXML.has_key(tag) ) :
+ return dictTagsXML[tag]
+ else :
+ raise KeyError, tr("Tag %s non-defini. Ceci est un bogue interne. en informer les developpeurs.", tag)
+ pass
+
+ def GetMCVal (self, MC, default = None, mandatory = False) :
+ '''
+ Recupere la chaine associee au MC dans la table DictMCVal.
+ Leve une exception si le MC n est pas trouve et mandatory vaut True
+ '''
+ if ( self.DictMCVal.has_key(MC) and self.DictMCVal[MC] != None ) :
+ return self.DictMCVal[MC]
+ else :
+ if ( mandatory ) :
+ raise KeyError, tr(" Le mot-cle %s est obligatoire.", MC)
+ else :
+ return default
+ pass
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ SEP pour EFICAS.
+
+"""
+import traceback
+import types,string,re,os
+
+from generator_python import PythonGenerator
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'SEP',
+ # La factory pour creer une instance du plugin
+ 'factory' : SEPGenerator,
+ }
+
+
+class SEPGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format py
+
+ """
+ # Les extensions de fichier permis?
+ extensions=('.comm',)
+
+ def gener(self,obj,format='brut',config=None):
+ self.initDico()
+ # Cette instruction génère le contenu du fichier de commandes (persistance)
+ self.text=PythonGenerator.gener(self,obj,format)
+ # Cette instruction génère le contenu du fichier de paramètres python
+ self.genereSEP()
+ return self.text
+
+ def getTubePy(self) :
+ return self.texteTubePy
+
+ def genereSEP(self) :
+ '''
+ Prépare le contenu du fichier de paramètres python. Le contenu
+ peut ensuite être obtenu au moyen de la fonction getTubePy().
+ '''
+ #self.__genereSEP_withVariables()
+ self.__genereSEP_withDico()
+
+ def __genereSEP_withVariables(self) :
+ '''
+ Les paramètres sont transcrits sous forme de variables nom=valeur.
+ '''
+ self.texteTubePy="# Parametres generes par Eficas \n"
+ for MC in self.dictMCVal.keys():
+ ligne = MC +"="+ repr(self.dictMCVal[MC])+'\n'
+ self.texteTubePy=self.texteTubePy+ligne
+
+ print self.texteTubePy
+
+ # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
+ fichier=os.path.join(os.path.dirname(__file__),"tube.py")
+ f=open(fichier,'r')
+ for ligne in f.readlines():
+ self.texteTubePy=self.texteTubePy+ligne
+ f.close
+
+ def __genereSEP_withDico(self) :
+ """
+ Les paramètres sont transcrits sous la forme d'un dictionnaire nom=valeur.
+ """
+ from Sep import properties
+ self.texteTubePy="# -*- coding: utf-8 -*-\n"
+ self.texteTubePy+="# ======================================================================================\n"
+ self.texteTubePy+="# FICHIER GENERE PAR EFICAS - OUTIL MÉTIER SOUS-EPAISSEUR - "
+ self.texteTubePy+="VERSION "+str(properties.version)+" du "+str(properties.date)+"\n"
+ self.texteTubePy+="# ======================================================================================\n"
+ self.texteTubePy+="\n"
+ self.texteTubePy+="# Parametres Utilisateur Eficas \n"
+ self.texteTubePy+="parameters={}\n"
+
+ for MC in self.dictMCVal.keys():
+ ligne = "parameters['"+MC+"']="+ repr(self.dictMCVal[MC])+'\n'
+ self.texteTubePy=self.texteTubePy+ligne
+
+ # On ajoute des paramètres de configuration pour contrôle de
+ # cohérence avec la procédure outil métier
+ self.texteTubePy+="# Parametres de Configuration Eficas \n"
+ ligne = "parameters['OMVERSION']="+str(properties.version)+"\n"
+ self.texteTubePy+=ligne
+
+ # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
+ self.texteTubePy+="\n"
+ self.texteTubePy+="# Exécution de la procédure outil métier \n"
+ self.texteTubePy+="import os,sys\n"
+ self.texteTubePy+="sys.path.insert(0,os.environ['OM_ROOT_DIR'])\n"
+ self.texteTubePy+="import om_data\n"
+ self.texteTubePy+="om_data.setParameters(parameters)\n"
+ self.texteTubePy+="def run():\n"
+ self.texteTubePy+=" import om_smeca\n"
+ self.texteTubePy+="\n"
+ self.texteTubePy+='if __name__ == "__main__":\n'
+ self.texteTubePy+=" run()\n"
+
+ # For debug only
+ print self.texteTubePy
+
+
+ def initDico(self) :
+ self.tube=0
+ self.coude=0
+ self.dictMCVal={}
+ self.texteTubePy=""
+
+ # __GBO__: surcharge de PythonGenerator:
+ # voir example generator_cuve2dg.py (genea)
+ def generMCSIMP(self,obj) :
+ """
+ Convertit un objet MCSIMP en texte python
+ Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
+ """
+ clef=""
+ for i in obj.get_genealogie() :
+ clef=clef+"__"+i
+ #self.dictMCVal[obj.nom]=obj.valeur
+ self.dictMCVal[clef]=obj.valeur
+
+ s=PythonGenerator.generMCSIMP(self,obj)
+ return s
+
+ # __GBO__: surcharge de PythonGenerator
+ def generMACRO_ETAPE(self,obj):
+ print obj.nom
+ if obj.nom == "S_EP_INTERNE" :
+ self.tube=1
+ if obj.nom == "M_COUDE" :
+ self.coude=1
+ s=PythonGenerator.generMACRO_ETAPE(self,obj)
+ return s
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ DefaillCUVE pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+
+from Noyau import N_CR
+from Accas import MCSIMP
+from generator_python import PythonGenerator
+
+def entryPoint():
+ """
+ Retourne les informations nécessaires pour le chargeur de plugins
+
+ Ces informations sont retournées dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'cuve2dg',
+ # La factory pour créer une instance du plugin
+ 'factory' : Cuve2dgGenerator,
+ }
+
+
+class Cuve2dgGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format DefaillCUVE
+
+ """
+ # Les extensions de fichier préconisées
+ extensions=('.comm',)
+
+ def __init__(self,cr=None):
+ # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
+ if cr :
+ self.cr=cr
+ else:
+ self.cr=N_CR.CR(debut='CR generateur format DefaillCUVE pour DefaillCUVE',
+ fin='fin CR format DefaillCUVE pour DefaillCUVE')
+ # Le texte au format DefaillCUVE est stocké dans l'attribut textCuve
+ self.textCuve=''
+
+ # Ce dictionnaire liste le nom des variables utilisees dans le script
+ self.variable = {
+ "NiveauImpression" : "MESSAGE_LEVEL",
+ "FichierDataIn" : "DATARESUME_FILE",
+ "FichierTempSigma" : "TEMPSIG_FILE",
+ "FichierCSV" : "CSV_FILE",
+ "FichierRESTART" : "RESTART_FILE",
+ "FichierEXTR" : "EXTR_FILE",
+ "ChoixPlugin" : "CHOIPLUG",
+ "GrandeurEvaluee" : "GRANDEUR",
+ "IncrementTemporel" : "INCRTPS",
+ "IncrementMaxTemperature" : "DTPREC",
+ "ChoixExtractionTransitoires" : "CHOIEXTR",
+ "IncrementMaxTempsAffichage" : "DTARCH",
+ "TraitementGeometrie" : "TYPEGEOM",
+ "RayonInterne" : "RINT",
+ "RayonInterne_mess" : "RINT_MESSAGE",
+ "RayonExterne" : "REXT",
+ "RayonExterne_mess" : "REXT_MESSAGE",
+ "EpaisseurRevetement" : "LREV",
+ "EpaisseurRevetement_mess" : "LREV_MESSAGE",
+ "LigamentExterneMin" : "LIGMIN",
+ "LigamentExterneMin_mess" : "LIGMIN_MESSAGE",
+ "NombreNoeudsMaillage" : "NBNO",
+ "TypeInitial" : "TYPEDEF",
+ "Orientation" : "ORIEDEF",
+ "Position" : "POSDEF",
+ "ProfondeurRadiale" : "PROFDEF",
+ "ProfondeurRadiale_mess" : "PROFDEF_MESSAGE",
+ "ModeCalculLongueur" : "OPTLONG",
+ "Longueur" : "LONGDEF",
+ "Longueur_mess" : "LONGDEF_MESSAGE",
+ "CoefDirecteur" : "PROFSURLONG",
+ "CoefDirecteur_mess" : "PROFSURLONG_MESSAGE",
+ "Constante" : "LONGCONST",
+ "ModeCalculDecalage" : "DECATYP",
+ "DecalageNormalise" : "DECANOR",
+ "DecalageNormalise_mess" : "DECANOR_MESSAGE",
+ "DecalageRadial" : "DECADEF",
+ "DecalageRadial_mess" : "DECADEF_MESSAGE",
+ "Azimut" : "ANGLDEF",
+ "Azimut_mess" : "ANGLDEF_MESSAGE",
+ "Altitude_mess" : "ANGLDEF_MESSAGE",
+ "Altitude" : "ALTIDEF",
+ "Altitude_mess" : "ALTIDEF_MESSAGE",
+ "Pointe" : "POINDEF",
+ "ModeleFluence" : "MODELFLUENCE",
+ "ZoneActiveCoeur_AltitudeSup" : "H1COEUR",
+ "ZoneActiveCoeur_AltitudeInf" : "H2COEUR",
+ "FluenceMax" : "fmax",
+ "KPFrance" : "KPFRANCE",
+ "KPUS" : "KPUS",
+ "Azimut_0deg" : "COEFFLUENCE1",
+ "Azimut_5deg" : "COEFFLUENCE2",
+ "Azimut_10deg" : "COEFFLUENCE3",
+ "Azimut_15deg" : "COEFFLUENCE4",
+ "Azimut_20deg" : "COEFFLUENCE5",
+ "Azimut_25deg" : "COEFFLUENCE6",
+ "Azimut_30deg" : "COEFFLUENCE7",
+ "Azimut_35deg" : "COEFFLUENCE8",
+ "Azimut_40deg" : "COEFFLUENCE9",
+ "Azimut_45deg" : "COEFFLUENCE10",
+ "TypeIrradiation" : "TYPEIRR",
+ "RTNDT" : "RTNDT",
+ "ModeleIrradiation" : "MODELIRR",
+ "TeneurCuivre" : "CU",
+ "TeneurCuivre_mess" : "CU_MESSAGE",
+ "TeneurNickel" : "NI",
+ "TeneurNickel_mess" : "NI_MESSAGE",
+ "TeneurPhosphore" : "P",
+ "TeneurPhosphore_mess" : "P_MESSAGE",
+ "MoyenneRTndt" : "RTimoy",
+ "MoyenneRTndt_mess" : "RTimoy_MESSAGE",
+ "CoefVariationRTndt" : "RTicov",
+ "CoefVariationRTndt_mess" : "RTicov_MESSAGE",
+ "EcartTypeRTndt" : "USectDRT",
+ "EcartTypeRTndt_mess" : "USectDRT_MESSAGE",
+ "NombreEcartTypeRTndt" : "nbectDRTNDT",
+ "NombreEcartTypeRTndt_mess" : "nbectDRTNDT_MESSAGE",
+ "ModeleTenacite" : "MODELKIC",
+ "NombreCaracteristique" : "NBCARAC",
+ "NbEcartType_MoyKIc" : "nbectKIc",
+ "NbEcartType_MoyKIc_mess" : "nbectKIc_MESSAGE",
+ "PalierDuctile_KIc" : "KICPAL",
+ "CoefficientVariation_KIc" : "KICCDV",
+ "Fractile_KIc" : "fractKIc",
+ "Fractile_KIc_mess" : "fractKIc_MESSAGE",
+ "Temperature_KIc100" : "T0WALLIN",
+ "A1" : "A1",
+ "A2" : "A2",
+ "A3" : "A3",
+ "B1" : "B1",
+ "B2" : "B2",
+ "B3" : "B3",
+ "C1" : "C1",
+ "C2" : "C2",
+ "C3" : "C3",
+ "ChoixCorrectionLongueur" : "CHOIXCL",
+ "AttnCorrBeta" : "ATTNCORRBETA",
+ "CorrIrwin" : "CORRIRWIN",
+ "ArretDeFissure" : "ARRETFISSURE",
+ "IncrementTailleFissure" : "INCRDEF",
+ "IncrementTailleFissure_mess" : "INCRDEF_MESSAGE",
+ "NbEcartType_MoyKIa" : "nbectKIa",
+ "PalierDuctile_KIa" : "KIAPAL",
+ "CoefficientVariation_KIa" : "KIACDV",
+ "ChoixCoefficientChargement" : "CHOIXSIGM",
+ "CoefficientDuctile" : "COEFSIGM1",
+ "CoefficientFragile" : "COEFSIGM2",
+ "InstantInitialisation" : "INSTINIT",
+ "ConditionLimiteThermiqueREV" : "KTHREV",
+ "TemperatureDeformationNulleREV" : "TREFREV",
+ "TemperaturePourCoefDilatThermREV" : "TDETREV",
+ "CoefficientPoissonREV" : "NUREV",
+ "ConditionLimiteThermiqueMDB" : "KTHMDB",
+ "TemperatureDeformationNulleMDB" : "TREFMDB",
+ "TemperaturePourCoefDilatThermMDB" : "TDETMDB",
+ "CoefficientPoissonMDB" : "NUMDB",
+ "TypeConditionLimiteThermique" : "TYPCLTH",
+ "Instant_1" : "INSTANT1",
+ "Instant_2" : "INSTANT2",
+ "Instant_3" : "INSTANT3",
+ "DebitAccumule" : "QACCU",
+ "DebitInjectionSecurite" : "QIS",
+ "TempInjectionSecurite" : "TIS",
+ "TempInjectionSecurite_mess" : "TIS_MESSAGE",
+ "DiametreHydraulique" : "DH",
+ "DiametreHydraulique_mess" : "DH_MESSAGE",
+ "SectionEspaceAnnulaire" : "SECTION",
+ "SectionEspaceAnnulaire_mess" : "SECTION_MESSAGE",
+ "HauteurCaracConvectionNaturelle" : "DELTA",
+ "HauteurCaracConvectionNaturelle_mess" : "DELTA_MESSAGE",
+ "CritereConvergenceRelative" : "EPS",
+ "CoefficientsVestale" : "COEFVESTALE",
+ "VolumeMelange_CREARE" : "VMTAB",
+ "TemperatureInitiale_CREARE" : "T0",
+ "TemperatureInitiale_CREARE_mess" : "T0_MESSAGE",
+ "SurfaceEchange_FluideStructure" : "SE",
+ "SurfaceEchange_FluideStructure_mess" : "SE_MESSAGE",
+ "InstantPerteCirculationNaturelle" : "INST_PCN",
+ }
+
+ # Ce dictionnaire liste le nom des valeurs proposées utilisees dans le script
+ self.valeurproposee = {
+ "Aucune impression" : "0",
+ "Temps total" : "1",
+ "Temps intermediaires" : "2",
+ "Facteur de marge KIc/KCP" : "FM_KICSURKCP",
+ "Marge KIc-KI" : "MARGE_KI",
+ "Marge KIc-KCP" : "MARGE_KCP",
+ "Topologie" : "GEOMETRIE",
+ "Maillage" : "MAILLAGE",
+ "Defaut Sous Revetement" : "DSR",
+ "Defaut Decale" : "DECALE",
+ "Defaut Debouchant" : "DEBOUCHANT",
+ "Longitudinale" : "LONGITUD",
+ "Circonferentielle" : "CIRCONF",
+ "Virole" : "VIROLE",
+ "Joint soude" : "JSOUDE",
+ "Valeur" : "VALEUR",
+ "Fonction affine de la profondeur" : "FCTAFFINE",
+ "Valeur normalisee" : "NORMALISE",
+ "A" : "A",
+ "B" : "B",
+ "A et B" : "BOTH",
+ "Exponentiel sans revetement k=9.7 (Reglementaire)" : "Reglementaire",
+ "Exponentiel sans revetement k=12.7 (France)" : "France",
+ "Exponentiel sans revetement k=0. (ValeurImposee)" : "ValeurImposee",
+ "Donnees francaises du palier CPY (SDM)" : "SDM",
+ "Regulatory Guide 1.99 rev 2 (USNRC)" : "USNRC",
+ "Dossier 900 MWe AP9701 rev 2 (REV_2)" : "REV_2",
+ "Lissage du modele ajuste (SDM_Lissage)" : "SDM_Lissage",
+ "Donnees francaises du palier CPY ajustees par secteur angulaire (GrandeDev)" : "GrandeDev",
+ "Grand developpement (GD_Cuve)" : "GD_Cuve",
+ "Exponentiel sans revetement k=9.7 (Reglementaire CUVE1D)" : "Cuve1D",
+ "RTndt de la cuve a l instant de l analyse" : "RTNDT",
+ "Modele d irradiation" : "FLUENCE",
+ "Formule de FIM/FIS Lefebvre modifiee" : "LEFEBnew",
+ "Metal de Base : formule de FIM/FIS Houssin" : "HOUSSIN",
+ "Metal de Base : formule de FIM/FIS Persoz" : "PERSOZ",
+ "Metal de Base : formule de FIM/FIS Lefebvre" : "LEFEBVRE",
+ "Metal de Base : Regulatory Guide 1.00 rev 2" : "USNRCmdb",
+ "Joint Soude : formulation de FIM/FIS Brillaud" : "BRILLAUD",
+ "Joint Soude : Regulatory Guide 1.00 rev 2" : "USNRCsoud",
+ "RCC-M/ASME coefficient=2" : "RCC-M",
+ "RCC-M/ASME coefficient=2 CUVE1D" : "RCC-M_simpl",
+ "RCC-M/ASME coefficient=2.33 (Houssin)" : "Houssin_RC",
+ "RCC-M/ASME avec KI=KIpalier" : "RCC-M_pal",
+ "RCC-M/ASME avec KI~exponentiel" : "RCC-M_exp",
+ "Weibull basee sur la master cuve" : "Wallin",
+ "Weibull basee sur la master cuve (REME)" : "REME",
+ "Weibull n\xb01 (etude ORNL)" : "ORNL",
+ "Weibull n\xb02" : "WEIB2",
+ "Weibull n\xb03" : "WEIB3",
+ "Weibull generalisee" : "WEIB-GEN",
+ "Exponentielle n\xb01 (Frama)" : "Frama",
+ "Exponentielle n\xb02 (LOGWOLF)" : "LOGWOLF",
+ "Quantile" : "QUANTILE",
+ "Ordre" : "ORDRE",
+ "Enthalpie" : "ENTHALPIE",
+ "Chaleur" : "CHALEUR",
+ "Temperature imposee en paroi" : "TEMP_IMPO",
+ "Flux de chaleur impose en paroi" : "FLUX_REP",
+ "Temperature imposee du fluide et coefficient echange" : "ECHANGE",
+ "Debit massique et temperature d injection de securite" : "DEBIT",
+ "Temperature imposee du fluide et debit d injection de securite" : "TEMP_FLU",
+ "Courbe APRP" : "APRP",
+ "Calcul TEMPFLU puis DEBIT" : "TFDEBIT",
+ }
+
+ # Ce dictionnaire liste le commentaire des variables utilisees dans le script
+ self.comment = {
+ "NiveauImpression" : "Niveau d impression des messages a l ecran (=0 : rien, =1 : temps calcul total, =2 : temps intermediaires)",
+ "FichierDataIn" : "sortie du fichier recapitulatif des donnees d entree {OUI ; NON}",
+ "FichierTempSigma" : "sortie des fichiers temperature et contraintes {OUI ; NON}",
+ "FichierCSV" : "sortie du fichier resultat template_DEFAILLCUVE.CSV {OUI ; NON}",
+ "FichierRESTART" : "sortie du fichier de re-demarrage",
+ "FichierEXTR" : "sortie du fichier d extraction des transitoires",
+ "ChoixPlugin" : "choix d'un repertoire de plug-in",
+ "GrandeurEvaluee" : "choix de la grandeur sous critere evaluee {FM_KICSURKCP ; MARGE_KI ; MARGE_KCP}",
+ "IncrementTemporel" : "increment temporel pour l analyse PROBABILISTE (si DETERMINISTE, fixer a 1)",
+ "IncrementMaxTemperature" : "increment max de temp/noeud/instant (degC)",
+ "ChoixExtractionTransitoires" : "choix d'extraction de transitoires de temp et contraintes",
+ "IncrementMaxTempsAffichage" : "increment max de temps pour affichage (s)",
+ "TraitementGeometrie" : "traitement de la geometrie de la cuve : {GEOMETRIE, MAILLAGE}",
+ "RayonInterne" : "rayon interne (m)",
+ "RayonInterne_mess" : "affichage ecran du rayon interne (m)",
+ "RayonExterne" : "rayon externe (m)",
+ "RayonExterne_mess" : "affichage ecran du rayon externe (m)",
+ "EpaisseurRevetement" : "epaisseur revetement (m)",
+ "EpaisseurRevetement_mess" : "affichage ecran de l epaisseur revetement (m)",
+ "LigamentExterneMin" : "ligament externe minimal avant rupture (% de l'epaisseur de cuve)",
+ "LigamentExterneMin_mess" : "affichage ecran du ligament externe minimal avant rupture (% de l'epaisseur de cuve)",
+ "NombreNoeudsMaillage" : "nbre de noeuds dans l'epaisseur de la cuve",
+ "TypeInitial" : "type initial du defaut : DEBOUCHANT=Defaut Debouchant, DSR=Defaut Sous Revetement, DECALE=Defaut Decale",
+ "Orientation" : "orientation (LONGITUD / CIRCONF)",
+ "Position" : "Position du defaut (VIROLE / JSOUDE)",
+ "ProfondeurRadiale" : "profondeur radiale ou encore hauteur (m)",
+ "ProfondeurRadiale_mess" : "affichage ecran de la profondeur radiale ou encore hauteur (m)",
+ "ModeCalculLongueur" : "option pour definir la longueur du defaut (VALEUR pour une valeur fixe, FCTAFFINE pour une fct affine de la profondeur)",
+ "Longueur" : "longueur (m) pour defaut Sous Revetement",
+ "Longueur_mess" : "affichage ecran de la longueur (m) pour defaut Sous Revetement",
+ "CoefDirecteur" : "pente de la fonction affine l = h/profsurlong + a0",
+ "CoefDirecteur_mess" : "affichage ecran de la pente de la fonction affine l = h/profsurlong + a0",
+ "Constante" : "constante de la fonction affine a0",
+ "ModeCalculDecalage" : "type de decalage : normalise (NORMALISE) ou reel (VALEUR)",
+ "DecalageNormalise" : "decalage radial normalise (valeur comprise entre 0. et 1.) pour defaut Sous Revetement",
+ "DecalageNormalise_mess" : "affichage ecran du decalage radial normalise (valeur comprise entre 0. et 1.) pour defaut Sous Revetement",
+ "DecalageRadial" : "decalage radial reel (m) pour defaut decale",
+ "DecalageRadial_mess" : "affichage ecran du decalage radial reel (m) pour defaut decale",
+ "Azimut" : "coordonnee angulaire (degre)",
+ "Azimut_mess" : "affichage ecran de la coordonnee angulaire (degre)",
+ "Altitude" : "altitude (m) : valeur negative",
+ "Altitude_mess" : "affichage ecran de l altitude (m) : valeur negative",
+ "Pointe" : "choix du(des) point(s) du defaut considere {'A','B','BOTH'} pour DSR et DECALE (pour DEBOUCHANT : automatiquement 'B')",
+ "ModeleFluence" : "modele de fluence : {Reglementaire, France, ValeurImposee, SDM, USNRC, REV_2, SDM_Lissage, GrandeDev, GD_Cuve, Cuve1D}",
+ "ZoneActiveCoeur_AltitudeSup" : "cote superieure de la zone active de coeur (ici pour cuve palier 900Mw)",
+ "ZoneActiveCoeur_AltitudeInf" : "cote inferieure de la zone active de coeur (ici pour cuve palier 900Mw)",
+ "FluenceMax" : "fluence maximale assimilee par la cuve (n/cm2)",
+ "KPFrance" : "parametre exponentiel du modele France",
+ "KPUS" : "parametre exponentiel du modele US",
+ "Azimut_0deg" : "fluence a l'azimut 0 (10^19 n/cm)",
+ "Azimut_5deg" : "fluence a l'azimut 5 (10^19 n/cm)",
+ "Azimut_10deg" : "fluence a l'azimut 10 (10^19 n/cm)",
+ "Azimut_15deg" : "fluence a l'azimut 15 (10^19 n/cm)",
+ "Azimut_20deg" : "fluence a l'azimut 20 (10^19 n/cm)",
+ "Azimut_25deg" : "fluence a l'azimut 25 (10^19 n/cm)",
+ "Azimut_30deg" : "fluence a l'azimut 30 (10^19 n/cm)",
+ "Azimut_35deg" : "fluence a l'azimut 35 (10^19 n/cm)",
+ "Azimut_40deg" : "fluence a l'azimut 40 (10^19 n/cm)",
+ "Azimut_45deg" : "fluence a l'azimut 45 (10^19 n/cm)",
+ "TypeIrradiation" : "type irradiation : {RTNDT, FLUENCE}",
+ "RTNDT" : "RTNDT finale (degC)",
+ "ModeleIrradiation" : "modele d irradiation : LEFEBnew, ou {HOUSSIN, PERSOZ, LEFEBVRE, USNRCmdb} pour virole et {BRILLAUD,USNRCsoud} pour jointsoude",
+ "TeneurCuivre" : "teneur en cuivre (%)",
+ "TeneurCuivre_mess" : "affichage ecran de la teneur en cuivre (%)",
+ "TeneurNickel" : "teneur en nickel (%)",
+ "TeneurNickel_mess" : "affichage ecran de la teneur en nickel (%)",
+ "TeneurPhosphore" : "teneur en phosphore (%)",
+ "TeneurPhosphore_mess" : "affichage ecran de la teneur en phosphore (%)",
+ "MoyenneRTndt" : "moyenne de la RTNDT initiale : virole C1 de cuve Chinon : mdb=>-17.degC et js=>42.degC (HT-56/05/038 : p.52)",
+ "MoyenneRTndt_mess" : "affichage ecran de la moyenne de la RTNDT initiale",
+ "CoefVariationRTndt" : "coef de variation de la RTNDT initiale",
+ "CoefVariationRTndt_mess" : "affichage ecran du coef de variation de la RTNDT initiale",
+ "EcartTypeRTndt" : "pour modeles USNRCsoud ou USNRCmdb, ecart-type du decalage de RTNDT (°F) (28. pour js et 17. pour mdb)",
+ "EcartTypeRTndt_mess" : "affichage ecran, pour modeles USNRCsoud ou USNRCmdb, ecart-type du decalage de RTNDT (°F) (28. pour js et 17. pour mdb)",
+ "NombreEcartTypeRTndt" : "Nbre d ecart-type par rapport a la moyenne de DRTNDT si analyse PROBABILISTE (en DETERMINISTE, fixer a 2.)",
+ "NombreEcartTypeRTndt_mess" : "affichage ecran du nbre d ecart-type par rapport a la moyenne de DRTNDT si analyse PROBABILISTE",
+ "ModeleTenacite" : "modele de tenacite : {RCC-M, RCC-M_pal, RCC-M_exp, RCC-M_simpl, Houssin_RC, Wallin, REME, ORNL, Frama, WEIB3, WEIB2, LOGWOLF, WEIB-GEN}",
+ "NombreCaracteristique" : "Nb caracteristique : ORDRE ou QUANTILE",
+ "NbEcartType_MoyKIc" : "Nbre d ecart-type par rapport a la moyenne de KIc si analyse PROBABILISTE (en DETERMINISTE, fixer a -2.)",
+ "NbEcartType_MoyKIc_mess" : "affichage ecran du nbre d ecart-type par rapport a la moyenne de KIc si analyse PROBABILISTE",
+ "PalierDuctile_KIc" : "palier deterministe de K1c (MPa(m^0.5))",
+ "CoefficientVariation_KIc" : "coef de variation de la loi normale de K1c",
+ "Fractile_KIc" : "valeur caracteristique de KIc exprimee en ordre de fractile (%)",
+ "Fractile_KIc_mess" : "affichage ecran de la valeur caracteristique de KIc exprimee en ordre de fractile (%)",
+ "Temperature_KIc100" : "parametre T0 du modele Wallin (degC)",
+ "A1" : "coef des coefs d une WEIBULL generale",
+ "A2" : "",
+ "A3" : "",
+ "B1" : "",
+ "B2" : "",
+ "B3" : "",
+ "C1" : "",
+ "C2" : "",
+ "C3" : "",
+ "ChoixCorrectionLongueur" : "Activation ou non de la correction de longueur {OUI ; NON}",
+ "AttnCorrBeta" : "Attenuation de la correction plastique : {OUI, NON} ==> uniquement pour DSR ou DECALE",
+ "CorrIrwin" : "Correction plastique IRWIN : {OUI, NON} ==> uniquement pour DEBOUCHANT",
+ "ArretDeFissure" : "prise en compte de l arret de fissure {OUI, NON} (en PROBABILISTE, fixer a NON)",
+ "IncrementTailleFissure" : "increment de la taille de fissure (m)",
+ "IncrementTailleFissure_mess" : "affichage ecran de l increment de la taille de fissure (m)",
+ "NbEcartType_MoyKIa" : "Nbre d ecart-type par rapport a la moyenne de KIa (nb sigma)",
+ "PalierDuctile_KIa" : "palier deterministe de K1a quand modele RCC-M (MPa(m^0.5))",
+ "CoefficientVariation_KIa" : "coef de variation de la loi normale de K1a",
+ "ChoixCoefficientChargement" : "prise en compte de coefficients sur le chargement (OUI/NON)",
+ "CoefficientDuctile" : "coefficient multiplicateur pour rupture ductile",
+ "CoefficientFragile" : "coefficient multiplicateur pour rupture fragile",
+ "InstantInitialisation" : "instant initial (s)",
+ "ConditionLimiteThermiqueREV" : "Option 'ENTHALPIE' ou 'CHALEUR'",
+ "TemperatureDeformationNulleREV" : "temperature de deformation nulle (degC)",
+ "TemperaturePourCoefDilatThermREV" : "temperature de definition du coefficient de dilatation thermique (degC)",
+ "CoefficientPoissonREV" : "coefficient de Poisson",
+ "ConditionLimiteThermiqueMDB" : "Option 'ENTHALPIE' ou 'CHALEUR'",
+ "TemperatureDeformationNulleMDB" : "temperature de deformation nulle (degC)",
+ "TemperaturePourCoefDilatThermMDB" : "temperature de definition du coefficient de dilatation thermique (degC)",
+ "CoefficientPoissonMDB" : "coefficient de Poisson",
+ "TypeConditionLimiteThermique" : "Type de condition thermique en paroi interne {TEMP_IMPO,FLUX_REP,ECHANGE,DEBIT,TEMP_FLU,APRP}",
+ "Instant_1" : "Borne superieure de l intervalle de temps du 1er palier TACCU",
+ "Instant_2" : "Borne superieure de l intervalle de temps du 2nd palier T1",
+ "Instant_3" : "Borne superieure de l intervalle de temps du 3eme palier TIS",
+ "DebitAccumule" : "Debit accumule (en m3/h)",
+ "DebitInjectionSecurite" : "Debit injection de securite (en m3/h)",
+ "TempInjectionSecurite" : "Temperature injection de securite (en degC)",
+ "TempInjectionSecurite_mess" : "affichage ecran de la temperature injection de securite",
+ "DiametreHydraulique" : "Diametre hydraulique (m)",
+ "DiametreHydraulique_mess" : "affichage ecran du diametre hydraulique (m)",
+ "SectionEspaceAnnulaire" : "Section espace annulaire (m2)",
+ "SectionEspaceAnnulaire_mess" : "affichage ecran de la section espace annulaire (m2)",
+ "HauteurCaracConvectionNaturelle" : "Hauteur caracteristique convection naturelle (m)",
+ "HauteurCaracConvectionNaturelle_mess" : "affichage ecran de la hauteur caracteristique convection naturelle (m)",
+ "CritereConvergenceRelative" : "Critere convergence relative (-)",
+ "CoefficientsVestale" : "Application des coefs de Vestale {OUI;NON}",
+ "VolumeMelange_CREARE" : "Transitoire de volume de melange CREARE (m3)",
+ "TemperatureInitiale_CREARE" : "Temperature initiale CREARE (degC)",
+ "TemperatureInitiale_CREARE_mess" : "affichage ecran de la temperature initiale CREARE (degC)",
+ "SurfaceEchange_FluideStructure" : "Surface d'echange fluide/structure (m2)",
+ "SurfaceEchange_FluideStructure_mess" : "affichage ecran de la surface d'echange fluide/structure (m2)",
+ "InstantPerteCirculationNaturelle" : "Instant de perte de circulation naturelle",
+ }
+
+ # Ce dictionnaire liste la valeur par defaut des variables utilisees dans le script
+ self.default = {
+ "NiveauImpression" : "1",
+ "FichierDataIn" : "NON",
+ "FichierTempSigma" : "NON",
+ "FichierCSV" : "NON",
+ "FichierRESTART" : "NON",
+ "FichierEXTR" : "NON",
+ "ChoixPlugin" : "NON",
+ "GrandeurEvaluee" : "FM_KICSURKCP",
+ "IncrementTemporel" : "1",
+ "IncrementMaxTemperature" : "0.1",
+ "ChoixExtractionTransitoires" : "NON",
+ "IncrementMaxTempsAffichage" : "1000.",
+ "TraitementGeometrie" : "GEOMETRIE",
+ "RayonInterne" : "1.994",
+ "RayonInterne_mess" : "NON",
+ "RayonExterne" : "2.2015",
+ "RayonExterne_mess" : "NON",
+ "EpaisseurRevetement" : "0.0075",
+ "EpaisseurRevetement_mess" : "NON",
+ "LigamentExterneMin" : "0.75",
+ "LigamentExterneMin_mess" : "NON",
+ "NombreNoeudsMaillage" : "300",
+ "TypeInitial" : "DSR",
+ "Position" : "VIROLE",
+ "ProfondeurRadiale" : "0.006",
+ "ProfondeurRadiale_mess" : "NON",
+ "ModeCalculLongueur" : "VALEUR",
+ "Longueur" : "0.060",
+ "Longueur_mess" : "NON",
+ "CoefDirecteur" : "10.",
+ "CoefDirecteur_mess" : "NON",
+ "Constante" : "0.",
+ "ModeCalculDecalage" : "VALEUR",
+ "DecalageNormalise" : "0.1",
+ "DecalageNormalise_mess" : "NON",
+ "DecalageRadial" : "0.",
+ "DecalageRadial_mess" : "NON",
+ "Azimut" : "0.",
+ "Azimut_mess" : "NON",
+ "Altitude" : "-4.",
+ "Altitude_mess" : "NON",
+ "Pointe" : "B",
+ "ModeleFluence" : "Reglementaire",
+ "ZoneActiveCoeur_AltitudeSup" : "-3.536",
+ "ZoneActiveCoeur_AltitudeInf" : "-7.194",
+ "FluenceMax" : "6.5",
+ "KPFrance" : "12.7",
+ "KPUS" : "9.4488",
+ "Azimut_0deg" : "5.8",
+ "Azimut_5deg" : "5.48",
+ "Azimut_10deg" : "4.46",
+ "Azimut_15deg" : "3.41",
+ "Azimut_20deg" : "3.37",
+ "Azimut_25deg" : "3.16",
+ "Azimut_30deg" : "2.74",
+ "Azimut_35deg" : "2.25",
+ "Azimut_40deg" : "1.89",
+ "Azimut_45deg" : "1.78",
+ "TypeIrradiation" : "RTNDT",
+ "RTNDT" : "64.",
+ "ModeleIrradiation" : "HOUSSIN",
+ "TeneurCuivre" : "0.0972",
+ "TeneurCuivre_mess" : "NON",
+ "TeneurNickel" : "0.72",
+ "TeneurNickel_mess" : "NON",
+ "TeneurPhosphore" : "0.00912",
+ "TeneurPhosphore_mess" : "NON",
+ "MoyenneRTndt" : "-12.0",
+ "MoyenneRTndt_mess" : "NON",
+ "CoefVariationRTndt" : "0.1",
+ "CoefVariationRTndt_mess" : "NON",
+ "EcartTypeRTndt" : "-2.",
+ "EcartTypeRTndt_mess" : "NON",
+ "NombreEcartTypeRTndt" : "2.",
+ "NombreEcartTypeRTndt_mess" : "NON",
+ "ModeleTenacite" : "RCC-M",
+ "NombreCaracteristique" : "Quantile",
+ "NbEcartType_MoyKIc" : "-2.",
+ "NbEcartType_MoyKIc_mess" : "NON",
+ "PalierDuctile_KIc" : "195.",
+ "CoefficientVariation_KIc" : "0.15",
+ "Fractile_KIc" : "5.",
+ "Fractile_KIc_mess" : "NON",
+ "Temperature_KIc100" : "-27.",
+ "A1" : "21.263",
+ "A2" : "9.159",
+ "A3" : "0.04057",
+ "B1" : "17.153",
+ "B2" : "55.089",
+ "B3" : "0.0144",
+ "C1" : "4.",
+ "C2" : "0.",
+ "C3" : "0.",
+ "ChoixCorrectionLongueur" : "OUI",
+ "AttnCorrBeta" : "NON",
+ "CorrIrwin" : "NON",
+ "ArretDeFissure" : "NON",
+ "IncrementTailleFissure" : "0.",
+ "IncrementTailleFissure_mess" : "NON",
+ "NbEcartType_MoyKIa" : "0.",
+ "PalierDuctile_KIa" : "0.",
+ "CoefficientVariation_KIa" : "0.",
+ "ChoixCoefficientChargement" : "NON",
+ "CoefficientDuctile" : "1.0",
+ "CoefficientFragile" : "1.0",
+ "InstantInitialisation" : "-1.",
+ "ConditionLimiteThermiqueREV" : "CHALEUR",
+ "TemperatureDeformationNulleREV" : "20.",
+ "TemperaturePourCoefDilatThermREV" : "287.",
+ "CoefficientPoissonREV" : "0.3",
+ "ConditionLimiteThermiqueMDB" : "CHALEUR",
+ "TemperatureDeformationNulleMDB" : "20.",
+ "TemperaturePourCoefDilatThermMDB" : "287.",
+ "CoefficientPoissonMDB" : "0.3",
+ "TypeConditionLimiteThermique" : "TEMP_IMPO",
+ "Instant_1" : "21.",
+ "Instant_2" : "45.",
+ "Instant_3" : "5870.",
+ "DebitAccumule" : "2.3",
+ "DebitInjectionSecurite" : "0.375",
+ "TempInjectionSecurite" : "9.",
+ "TempInjectionSecurite_mess" : "NON",
+ "DiametreHydraulique" : "0.3816",
+ "DiametreHydraulique_mess" : "NON",
+ "SectionEspaceAnnulaire" : "0.21712",
+ "SectionEspaceAnnulaire_mess" : "NON",
+ "HauteurCaracConvectionNaturelle" : "6.",
+ "HauteurCaracConvectionNaturelle_mess" : "NON",
+ "CritereConvergenceRelative" : "0.00001",
+ "CoefficientsVestale" : "NON",
+# "VolumeMelange_CREARE" : "14.9",
+ "TemperatureInitiale_CREARE" : "250.",
+ "TemperatureInitiale_CREARE_mess" : "NON",
+ "SurfaceEchange_FluideStructure" : "0.",
+ "SurfaceEchange_FluideStructure_mess" : "NON",
+ "InstantPerteCirculationNaturelle" : "400.",
+ }
+
+ # Ce dictionnaire liste la rubrique d'appartenance des variables utilisees dans le script
+ self.bloc = {
+ "NiveauImpression" : "OPTIONS",
+ "FichierDataIn" : "OPTIONS",
+ "FichierTempSigma" : "OPTIONS",
+ "FichierCSV" : "OPTIONS",
+ "FichierRESTART" : "OPTIONS",
+ "FichierEXTR" : "OPTIONS",
+ "ChoixPlugin" : "OPTIONS",
+ "GrandeurEvaluee" : "OPTIONS",
+ "IncrementTemporel" : "OPTIONS",
+ "IncrementMaxTemperature" : "OPTIONS",
+ "ChoixExtractionTransitoires" : "OPTIONS",
+ "IncrementMaxTempsAffichage" : "OPTIONS",
+ "TraitementGeometrie" : "DONNEES DE LA CUVE",
+ "RayonInterne" : "DONNEES DE LA CUVE",
+ "RayonInterne_mess" : "DONNEES DE LA CUVE",
+ "RayonExterne" : "DONNEES DE LA CUVE",
+ "RayonExterne_mess" : "DONNEES DE LA CUVE",
+ "EpaisseurRevetement" : "DONNEES DE LA CUVE",
+ "EpaisseurRevetement_mess" : "DONNEES DE LA CUVE",
+ "LigamentExterneMin" : "DONNEES DE LA CUVE",
+ "LigamentExterneMin_mess" : "DONNEES DE LA CUVE",
+ "NombreNoeudsMaillage" : "DONNEES DE LA CUVE",
+ "TypeInitial" : "CARACTERISTIQUES DU DEFAUT",
+ "Orientation" : "CARACTERISTIQUES DU DEFAUT",
+ "Position" : "CARACTERISTIQUES DU DEFAUT",
+ "ProfondeurRadiale" : "CARACTERISTIQUES DU DEFAUT",
+ "ProfondeurRadiale_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "ModeCalculLongueur" : "CARACTERISTIQUES DU DEFAUT",
+ "Longueur" : "CARACTERISTIQUES DU DEFAUT",
+ "Longueur_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "CoefDirecteur" : "CARACTERISTIQUES DU DEFAUT",
+ "CoefDirecteur_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "Constante" : "CARACTERISTIQUES DU DEFAUT",
+ "ModeCalculDecalage" : "CARACTERISTIQUES DU DEFAUT",
+ "DecalageNormalise" : "CARACTERISTIQUES DU DEFAUT",
+ "DecalageNormalise_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "DecalageRadial" : "CARACTERISTIQUES DU DEFAUT",
+ "DecalageRadial_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "Azimut" : "CARACTERISTIQUES DU DEFAUT",
+ "Azimut_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "Altitude" : "CARACTERISTIQUES DU DEFAUT",
+ "Altitude_mess" : "CARACTERISTIQUES DU DEFAUT",
+ "Pointe" : "CARACTERISTIQUES DU DEFAUT",
+ "ModeleFluence" : "MODELES",
+ "ZoneActiveCoeur_AltitudeSup" : "MODELES",
+ "ZoneActiveCoeur_AltitudeInf" : "MODELES",
+ "FluenceMax" : "MODELES",
+ "KPFrance" : "MODELES",
+ "KPUS" : "MODELES",
+ "Azimut_0deg" : "MODELES",
+ "Azimut_5deg" : "MODELES",
+ "Azimut_10deg" : "MODELES",
+ "Azimut_15deg" : "MODELES",
+ "Azimut_20deg" : "MODELES",
+ "Azimut_25deg" : "MODELES",
+ "Azimut_30deg" : "MODELES",
+ "Azimut_35deg" : "MODELES",
+ "Azimut_40deg" : "MODELES",
+ "Azimut_45deg" : "MODELES",
+ "TypeIrradiation" : "MODELES",
+ "RTNDT" : "MODELES",
+ "ModeleIrradiation" : "MODELES",
+ "TeneurCuivre" : "MODELES",
+ "TeneurCuivre_mess" : "MODELES",
+ "TeneurNickel" : "MODELES",
+ "TeneurNickel_mess" : "MODELES",
+ "TeneurPhosphore" : "MODELES",
+ "TeneurPhosphore_mess" : "MODELES",
+ "MoyenneRTndt" : "MODELES",
+ "MoyenneRTndt_mess" : "MODELES",
+ "CoefVariationRTndt" : "MODELES",
+ "CoefVariationRTndt_mess" : "MODELES",
+ "EcartTypeRTndt" : "MODELES",
+ "EcartTypeRTndt_mess" : "MODELES",
+ "NombreEcartTypeRTndt" : "MODELES",
+ "NombreEcartTypeRTndt_mess" : "MODELES",
+ "ModeleTenacite" : "MODELES",
+ "NombreCaracteristique" : "MODELES",
+ "NbEcartType_MoyKIc" : "MODELES",
+ "NbEcartType_MoyKIc_mess" : "MODELES",
+ "PalierDuctile_KIc" : "MODELES",
+ "CoefficientVariation_KIc" : "MODELES",
+ "Fractile_KIc" : "MODELES",
+ "Fractile_KIc_mess" : "MODELES",
+ "Temperature_KIc100" : "MODELES",
+ "A1" : "MODELES",
+ "A2" : "MODELES",
+ "A3" : "MODELES",
+ "B1" : "MODELES",
+ "B2" : "MODELES",
+ "B3" : "MODELES",
+ "C1" : "MODELES",
+ "C2" : "MODELES",
+ "C3" : "MODELES",
+ "ChoixCorrectionLongueur" : "MODELES",
+ "AttnCorrBeta" : "MODELES",
+ "CorrIrwin" : "MODELES",
+ "ArretDeFissure" : "MODELES",
+ "IncrementTailleFissure" : "MODELES",
+ "IncrementTailleFissure_mess" : "MODELES",
+ "NbEcartType_MoyKIa" : "MODELES",
+ "PalierDuctile_KIa" : "MODELES",
+ "CoefficientVariation_KIa" : "MODELES",
+ "ChoixCoefficientChargement" : "ETAT INITIAL",
+ "CoefficientDuctile" : "ETAT INITIAL",
+ "CoefficientFragile" : "ETAT INITIAL",
+ "InstantInitialisation" : "ETAT INITIAL",
+ "ConditionLimiteThermiqueREV" : "CARACTERISTIQUES DU REVETEMENT",
+ "TemperatureDeformationNulleREV" : "CARACTERISTIQUES DU REVETEMENT",
+ "TemperaturePourCoefDilatThermREV" : "CARACTERISTIQUES DU REVETEMENT",
+ "CoefficientPoissonREV" : "CARACTERISTIQUES DU REVETEMENT",
+ "ConditionLimiteThermiqueMDB" : "CARACTERISTIQUES DU MDB",
+ "TemperatureDeformationNulleMDB" : "CARACTERISTIQUES DU MDB",
+ "TemperaturePourCoefDilatThermMDB" : "CARACTERISTIQUES DU MDB",
+ "CoefficientPoissonMDB" : "CARACTERISTIQUES DU MDB",
+ "TypeConditionLimiteThermique" : "TRANSITOIRE",
+ "Instant_1" : "TRANSITOIRE",
+ "Instant_2" : "TRANSITOIRE",
+ "Instant_3" : "TRANSITOIRE",
+ "DebitAccumule" : "TRANSITOIRE",
+ "DebitInjectionSecurite" : "TRANSITOIRE",
+ "TempInjectionSecurite" : "TRANSITOIRE",
+ "TempInjectionSecurite_mess" : "TRANSITOIRE",
+ "DiametreHydraulique" : "TRANSITOIRE",
+ "DiametreHydraulique_mess" : "TRANSITOIRE",
+ "SectionEspaceAnnulaire" : "TRANSITOIRE",
+ "SectionEspaceAnnulaire_mess" : "TRANSITOIRE",
+ "HauteurCaracConvectionNaturelle" : "TRANSITOIRE",
+ "HauteurCaracConvectionNaturelle_mess" : "TRANSITOIRE",
+ "CritereConvergenceRelative" : "TRANSITOIRE",
+ "CoefficientsVestale" : "TRANSITOIRE",
+ "VolumeMelange_CREARE" : "TRANSITOIRE",
+ "TemperatureInitiale_CREARE" : "TRANSITOIRE",
+ "TemperatureInitiale_CREARE_mess" : "TRANSITOIRE",
+ "SurfaceEchange_FluideStructure" : "TRANSITOIRE",
+ "SurfaceEchange_FluideStructure_mess" : "TRANSITOIRE",
+ "InstantPerteCirculationNaturelle" : "TRANSITOIRE",
+ }
+
+ def gener(self,obj,format='brut'):
+ self.text=''
+ self.textCuve=''
+ self.texteTFDEBIT=''
+ self.dico_mot={}
+ self.dico_genea={}
+ self.text=PythonGenerator.gener(self,obj,format)
+ return self.text
+
+ def generMCSIMP(self,obj) :
+ self.dico_mot[obj.nom]=obj.valeur
+ clef=""
+ for i in obj.get_genealogie() :
+ clef=clef+"_"+i
+ self.dico_genea[clef]=obj.valeur
+ s=PythonGenerator.generMCSIMP(self,obj)
+ return s
+
+ def writeCuve2DG(self, filename, file2):
+ print "je passe dans writeCuve2DG"
+ self.genereTexteCuve()
+ f = open( filename, 'wb')
+ print self.texteCuve
+ f.write( self.texteCuve )
+ f.close()
+ ftmp = open( "/tmp/data_template", 'wb')
+ ftmp.write( self.texteCuve )
+ ftmp.close()
+
+ self.genereTexteTFDEBIT()
+ f2 = open( file2, 'wb')
+ print self.texteTFDEBIT
+ f2.write( self.texteTFDEBIT )
+ f2.close()
+
+
+ def entete(self):
+ '''
+ Ecrit l'entete du fichier data_template
+ '''
+ texte = "############################################################################################"+"\n"
+ texte += "#"+"\n"
+ texte += "# OUTIL D'ANALYSE PROBABILISTE DE LA DUREE DE VIE DES CUVES REP"+"\n"
+ texte += "# ---------------"+"\n"
+ texte += "# FICHIER DE MISE EN DONNEES"+"\n"
+ texte += "#"+"\n"
+ texte += "# SI CALCUL DETERMINISTE :"+"\n"
+ texte += "# - fixer INCRTPS=1, nbectDRTNDT=2., nbectKIc=-2."+"\n"
+ texte += "# - les calculs ne sont possibles qu'en une seule pointe du defaut (POINDEF<>BOTH)"+"\n"
+ texte += "# SI CALCUL PROBABILISTE :"+"\n"
+ texte += "# - fixer ARRETFISSURE=NON"+"\n"
+ texte += "#"+"\n"
+ texte += "############################################################################################"+"\n"
+ texte += "#"+"\n"
+ return texte
+
+ def rubrique(self, titre):
+ '''
+ Rubrique
+ '''
+ texte = "#"+"\n"
+ texte += "############################################################################################"+"\n"
+ texte += "# " + titre + "\n"
+ texte += "############################################################################################"+"\n"
+ texte += "#"+"\n"
+ return texte
+
+ def sousRubrique(self, soustitre, numtitre):
+ '''
+ Sous-rubrique
+ '''
+ texte = "#"+"\n"
+ texte += "# " + numtitre + soustitre + "\n"
+ texte += "#==========================================================================================="+"\n"
+ texte += "#"+"\n"
+ return texte
+
+ def ecritLigne(self, variablelue):
+ '''
+ Ecrit l'affectation d'une valeur a sa variable, suivie d'un commentaire
+ '''
+ texte = "%s = %s # %s\n" % (self.variable[variablelue], str(self.dico_mot[variablelue]), self.comment[variablelue])
+ return texte
+
+ def affecteValeurDefaut(self, variablelue):
+ '''
+ Affecte une valeur par defaut a une variable, suivie d'un commentaire
+ '''
+ print "Warning ==> Dans la rubrique",self.bloc[variablelue],", valeur par defaut pour ",variablelue," = ",self.default[variablelue]
+ texte = "%s = %s # %s\n" % (self.variable[variablelue], self.default[variablelue], self.comment[variablelue])
+ return texte
+
+ def affecteValeur(self, variablelue, valeuraffectee):
+ '''
+ Affecte une valeur a une variable, suivie d'un commentaire
+ '''
+ texte = "%s = %s # %s\n" % (self.variable[variablelue], valeuraffectee, self.comment[variablelue])
+ return texte
+
+ def ecritVariable(self, variablelue):
+ if self.dico_mot.has_key(variablelue):
+ texte = self.ecritLigne(variablelue)
+ else :
+ texte = self.affecteValeurDefaut(variablelue)
+ return texte
+
+ def amontAval(self, amont, aval):
+ if str(self.dico_mot[amont])=='Continu':
+ if str(self.dico_mot[aval])=='Continu':
+ texte = 'CC'+"\n"
+ if str(self.dico_mot[aval])=='Lineaire':
+ texte = 'CL'+"\n"
+ if str(self.dico_mot[aval])=='Exclu':
+ texte = 'CE'+"\n"
+ if str(self.dico_mot[amont])=='Lineaire':
+ if str(self.dico_mot[aval])=='Continu':
+ texte = 'LC'+"\n"
+ if str(self.dico_mot[aval])=='Lineaire':
+ texte = 'LL'+"\n"
+ if str(self.dico_mot[aval])=='Exclu':
+ texte = 'LE'+"\n"
+ if str(self.dico_mot[amont])=='Exclu':
+ if str(self.dico_mot[aval])=='Continu':
+ texte = 'EC'+"\n"
+ if str(self.dico_mot[aval])=='Lineaire':
+ texte = 'EL'+"\n"
+ if str(self.dico_mot[aval])=='Exclu':
+ texte = 'EE'+"\n"
+ return texte
+
+ def genereTexteCuve(self):
+ self.texteCuve = ""
+ self.texteCuve += self.entete()
+
+ # Rubrique OPTIONS
+ self.texteCuve += self.rubrique('OPTIONS')
+
+ self.texteCuve += self.sousRubrique('Impression a l ecran', '')
+ if self.dico_mot.has_key('NiveauImpression'):
+ self.texteCuve += self.affecteValeur('NiveauImpression', self.valeurproposee[str(self.dico_mot["NiveauImpression"])])
+
+ self.texteCuve += self.sousRubrique('Generation de fichiers', '')
+ self.texteCuve += self.ecritVariable('FichierDataIn')
+ self.texteCuve += self.ecritVariable('FichierTempSigma')
+ self.texteCuve += self.ecritVariable('FichierCSV')
+ self.texteCuve += self.ecritVariable('FichierRESTART')
+ self.texteCuve += self.ecritVariable('FichierEXTR')
+ self.texteCuve += self.ecritVariable('ChoixPlugin')
+
+ self.texteCuve += self.sousRubrique('Grandeur evaluee', '')
+ if self.dico_mot.has_key('GrandeurEvaluee'):
+ self.texteCuve += self.affecteValeur('GrandeurEvaluee', self.valeurproposee[str(self.dico_mot["GrandeurEvaluee"])])
+
+ self.texteCuve += self.sousRubrique('Divers', '')
+ self.texteCuve += self.ecritVariable('IncrementTemporel')
+ self.texteCuve += self.ecritVariable('IncrementMaxTemperature')
+
+ #self.texteCuve += self.ecritVariable('ChoixExtractionTransitoires')
+ if self.dico_mot.has_key('ChoixExtractionTransitoires'):
+ self.texteCuve += self.ecritVariable('ChoixExtractionTransitoires')
+ if str(self.dico_mot["ChoixExtractionTransitoires"])=='OUI':
+ if self.dico_mot.has_key('ListeAbscisses'):
+ self.texteCuve += "# liste des abscisses pour ecriture des transitoires de T et SIG (5 ou moins)"+"\n"
+ self.imprime(1,(self.dico_mot["ListeAbscisses"]))
+ self.texteCuve+="#"+"\n"
+ else :
+ print "Warning ==> Dans la rubrique OPTIONS, fournir ListeAbscisses."
+ self.texteCuve += "# liste des abscisses pour ecriture des transitoires de T et SIG (5 ou moins)"+"\n"
+ self.texteCuve += " 1.994\n"
+ self.texteCuve += " 2.000\n"
+ self.texteCuve+="#"+"\n"
+ else :
+ self.texteCuve+="#"+"\n"
+
+ self.texteCuve += self.ecritVariable('IncrementMaxTempsAffichage')
+ if self.dico_mot.has_key('ListeInstants'):
+ self.texteCuve += "# liste des instants pour ecriture des resultats (s)"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.imprime(1,(self.dico_mot["ListeInstants"]))
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.texteCuve+="#"+"\n"
+ else :
+ print "Warning ==> Dans la rubrique OPTIONS, fournir ListeInstants."
+ self.texteCuve += "# liste des instants pour ecriture des resultats (s)"+"\n"
+ self.texteCuve += " 0.\n"
+ self.texteCuve += " 1.\n"
+ self.texteCuve+="#"+"\n"
+
+
+ # Rubrique DONNEES DE LA CUVE
+ self.texteCuve += self.rubrique('DONNEES DE LA CUVE')
+ if self.dico_mot.has_key('TraitementGeometrie'):
+ self.texteCuve += self.affecteValeur('TraitementGeometrie', self.valeurproposee[str(self.dico_mot["TraitementGeometrie"])])
+ if str(self.dico_mot["TraitementGeometrie"])=='Topologie':
+ self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
+ self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
+ self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
+ self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
+ self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
+ self.texteCuve+="# NBNO"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('RayonInterne')
+ self.texteCuve += self.ecritVariable('RayonInterne_mess')
+ self.texteCuve += self.ecritVariable('RayonExterne')
+ self.texteCuve += self.ecritVariable('RayonExterne_mess')
+ self.texteCuve += self.ecritVariable('EpaisseurRevetement')
+ self.texteCuve += self.ecritVariable('EpaisseurRevetement_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('LigamentExterneMin')
+ self.texteCuve += self.ecritVariable('LigamentExterneMin_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('NombreNoeudsMaillage')
+ if str(self.dico_mot["TraitementGeometrie"])=='Maillage':
+ self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
+ self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
+ self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
+ self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
+ self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
+ self.texteCuve+="# NBNO"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('NombreNoeudsMaillage')
+ self.imprime(1,(self.dico_mot["ListeAbscisses"]))
+ else :
+ self.texteCuve += self.affecteValeurDefaut('TraitementGeometrie')
+ self.texteCuve+="# - si MAILLAGE, fournir NBNO et liste des abscisses (m)"+"\n"
+ self.texteCuve+="# - si GEOMETRIE, fournir (RINT, RINT_MESSAGE),"+"\n"
+ self.texteCuve+="# (REXT, REXT_MESSAGE),"+"\n"
+ self.texteCuve+="# (LREV, LREV_MESSAGE),"+"\n"
+ self.texteCuve+="# (LIGMIN, LIGMIN_MESSAGE),"+"\n"
+ self.texteCuve+="# NBNO"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('RayonInterne')
+ self.texteCuve += self.affecteValeurDefaut('RayonInterne_mess')
+ self.texteCuve += self.affecteValeurDefaut('RayonExterne')
+ self.texteCuve += self.affecteValeurDefaut('RayonExterne_mess')
+ self.texteCuve += self.affecteValeurDefaut('EpaisseurRevetement')
+ self.texteCuve += self.affecteValeurDefaut('EpaisseurRevetement_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('LigamentExterneMin')
+ self.texteCuve += self.affecteValeurDefaut('LigamentExterneMin_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('NombreNoeudsMaillage')
+
+
+ # Rubrique CARACTERISTIQUES DU DEFAUT
+ self.texteCuve += self.rubrique('CARACTERISTIQUES DU DEFAUT')
+
+ if self.dico_mot.has_key('TypeInitial'):
+ self.texteCuve += self.affecteValeur('TypeInitial', self.valeurproposee[str(self.dico_mot["TypeInitial"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('TypeInitial')
+
+ self.texteCuve+="# Fournir ORIEDEF, (PROFDEF, PROFDEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si DSR, fournir OPTLONG, (LONGDEF,LONGDEF_MESSAGE) ou (PROFSURLONG,PROFSURLONG_MESSAGE,LONGCONST)"+"\n"
+ self.texteCuve+="# - Si DECALE, fournir OPTLONG, (LONGDEF,LONGDEF_MESSAGE) ou (PROFSURLONG,PROFSURLONG_MESSAGE,LONGCONST), DECATYP, (DECANOR,DECANOR_MESSAGE) ou (DECADEF,DECADEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si DEBOUCHANT, fournir IRWIN"+"\n"
+ self.texteCuve+="# Fournir (ANGLDEF, ANGLDEF_MESSAGE), (ALTIDEF, ALTIDEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si DSR ou DECALE, fournir POINDEF"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Remarque :"+"\n"
+ self.texteCuve+="# - si DSR ou DECALE, dans la rubrique 'Modele de tenacite', fournir ATTNCORRBETA (ne pas fournir CORRIRWIN)"+"\n"
+ self.texteCuve+="# - si DEBOUCHANT, dans la rubrique 'Modele de tenacite', fournir CORRIRWIN (ne pas fournir ATTNCORRBETA)"+"\n"
+
+ self.texteCuve+="#"+"\n"
+
+ if self.dico_mot.has_key('Orientation'):
+ self.texteCuve += self.affecteValeur('Orientation', self.valeurproposee[str(self.dico_mot["Orientation"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('Orientation')
+
+ if self.dico_mot.has_key('Position'):
+ self.texteCuve += self.affecteValeur('Position', self.valeurproposee[str(self.dico_mot["Position"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('Position')
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('ProfondeurRadiale')
+ self.texteCuve += self.ecritVariable('ProfondeurRadiale_mess')
+
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('TypeInitial'):
+ if str(self.dico_mot["TypeInitial"])!='Defaut Debouchant':
+ if self.dico_mot.has_key('ModeCalculLongueur'):
+ self.texteCuve += self.affecteValeur('ModeCalculLongueur', self.valeurproposee[str(self.dico_mot["ModeCalculLongueur"])])
+ if str(self.dico_mot["ModeCalculLongueur"])=='Valeur':
+ self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
+ self.texteCuve += self.ecritVariable('Longueur')
+ self.texteCuve += self.ecritVariable('Longueur_mess')
+ if str(self.dico_mot["ModeCalculLongueur"])=='Fonction affine de la profondeur':
+ self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
+ self.texteCuve += self.ecritVariable('CoefDirecteur')
+ self.texteCuve += self.ecritVariable('CoefDirecteur_mess')
+ self.texteCuve += self.ecritVariable('Constante')
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ModeCalculLongueur')
+ self.texteCuve+="# - Si VALEUR, fournir (LONGDEF, LONGDEF_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si FCTAFFINE, fournir (PROFSURLONG, PROFSURLONG_MESSAGE) et LONGCONST : LONGDEF=PROFDEF/PROFSURLONG + LONGCONST"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('Longueur')
+ self.texteCuve += self.affecteValeurDefaut('Longueur_mess')
+
+ if self.dico_mot.has_key('TypeInitial'):
+ if str(self.dico_mot["TypeInitial"])=='Defaut Decale':
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('ModeCalculDecalage'):
+ self.texteCuve += self.affecteValeur('ModeCalculDecalage', self.valeurproposee[str(self.dico_mot["ModeCalculDecalage"])])
+ if str(self.dico_mot["ModeCalculDecalage"])=='Valeur normalisee':
+ self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
+ self.texteCuve += self.ecritVariable('DecalageNormalise')
+ self.texteCuve += self.ecritVariable('DecalageNormalise_mess')
+ if str(self.dico_mot["ModeCalculDecalage"])=='Valeur':
+ self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
+ self.texteCuve += self.ecritVariable('DecalageRadial')
+ self.texteCuve += self.ecritVariable('DecalageRadial_mess')
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ModeCalculDecalage')
+ self.texteCuve+="# - Si NORMALISE, fournir (DECANOR, DECANOR_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si VALEUR, fournir (DECADEF, DECADEF_MESSAGE)"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('DecalageRadial')
+ self.texteCuve += self.affecteValeurDefaut('DecalageRadial_mess')
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('Azimut')
+ self.texteCuve += self.ecritVariable('Azimut_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('Altitude')
+ self.texteCuve += self.ecritVariable('Altitude_mess')
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('Pointe'):
+ self.texteCuve += self.affecteValeur('Pointe', self.valeurproposee[str(self.dico_mot["Pointe"])])
+ #else :
+ # self.texteCuve += self.affecteValeurDefaut('Pointe')
+
+ # Rubrique MODELES FLUENCE, IRRADIATION, TENACITE
+ self.texteCuve += self.rubrique('MODELES FLUENCE, IRRADIATION, TENACITE')
+ self.texteCuve += self.sousRubrique('Modele d attenuation de la fluence dans l epaisseur','A.')
+
+ if self.dico_mot.has_key('ModeleFluence'):
+ self.texteCuve += self.affecteValeur('ModeleFluence', self.valeurproposee[str(self.dico_mot["ModeleFluence"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ModeleFluence')
+
+ self.texteCuve+="# - si France, fournir KPFRANCE"+"\n"
+ self.texteCuve+="# - si USNRC, fournir KPUS"+"\n"
+ self.texteCuve+="# - si modele GD_Cuve, fournir COEFFLUENCE1, COEFFLUENCE2, ..., COEFFLUENCE9, COEFFLUENCE10"+"\n"
+ self.texteCuve+="#"+"\n"
+
+ self.texteCuve += self.ecritVariable('ZoneActiveCoeur_AltitudeSup')
+ self.texteCuve += self.ecritVariable('ZoneActiveCoeur_AltitudeInf')
+ self.texteCuve += self.ecritVariable('FluenceMax')
+ if self.dico_mot.has_key('ModeleFluence'):
+ if str(self.dico_mot["ModeleFluence"])=='Exponentiel sans revetement k=12.7 (France)':
+ self.texteCuve += self.ecritVariable('KPFrance')
+ if str(self.dico_mot["ModeleFluence"])=='Regulatory Guide 1.99 rev 2 (USNRC)':
+ self.texteCuve += self.ecritVariable('KPUS')
+ if str(self.dico_mot["ModeleFluence"])=='Grand developpement (GD_Cuve)':
+ self.texteCuve += self.ecritVariable('Azimut_0deg')
+ self.texteCuve += self.ecritVariable('Azimut_5deg')
+ self.texteCuve += self.ecritVariable('Azimut_10deg')
+ self.texteCuve += self.ecritVariable('Azimut_15deg')
+ self.texteCuve += self.ecritVariable('Azimut_20deg')
+ self.texteCuve += self.ecritVariable('Azimut_25deg')
+ self.texteCuve += self.ecritVariable('Azimut_30deg')
+ self.texteCuve += self.ecritVariable('Azimut_35deg')
+ self.texteCuve += self.ecritVariable('Azimut_40deg')
+ self.texteCuve += self.ecritVariable('Azimut_45deg')
+
+ self.texteCuve += self.sousRubrique('Irradiation','B.')
+
+ if self.dico_mot.has_key('TypeIrradiation'):
+ self.texteCuve += self.affecteValeur('TypeIrradiation', self.valeurproposee[str(self.dico_mot["TypeIrradiation"])])
+
+ if str(self.dico_mot["TypeIrradiation"])=='RTndt de la cuve a l instant de l analyse':
+ self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
+ self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('RTNDT')
+
+ if str(self.dico_mot["TypeIrradiation"])=='Modele d irradiation':
+ self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
+ self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('ModeleIrradiation'):
+ self.texteCuve += self.affecteValeur('ModeleIrradiation', self.valeurproposee[str(self.dico_mot["ModeleIrradiation"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ModeleIrradiation')
+ self.texteCuve+="# - pour tout modele, fournir (CU, CU_MESSAGE),"+"\n"
+ self.texteCuve+="# (NI, NI_MESSAGE),"+"\n"
+ self.texteCuve+="# - si HOUSSIN, PERSOZ, LEFEBVRE, BRILLAUD, LEFEBnew, fournir (P, P_MESSAGE)"+"\n"
+ self.texteCuve+="# - pour tout modele, fournir (RTimoy, RTimoy_MESSAGE),"+"\n"
+ self.texteCuve+="# - si USNRCsoud ou USNRCmdb, fournir (RTicov, RTicov_MESSAGE)"+"\n"
+ self.texteCuve+="# (USectDRT, USectDRT_MESSAGE)"+"\n"
+ self.texteCuve+="# - pour tout modele, fournir (nbectDRTNDT, nbectDRTNDT_MESSAGE)"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('TeneurCuivre')
+ self.texteCuve += self.ecritVariable('TeneurCuivre_mess')
+ self.texteCuve += self.ecritVariable('TeneurNickel')
+ self.texteCuve += self.ecritVariable('TeneurNickel_mess')
+ if str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Houssin' or str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Persoz' or str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : formule de FIM/FIS Lefebvre' or str(self.dico_mot["ModeleIrradiation"])=='Joint Soude : formulation de FIM/FIS Brillaud' or str(self.dico_mot["ModeleIrradiation"])=='Formule de FIM/FIS Lefebvre modifiee':
+ self.texteCuve += self.ecritVariable('TeneurPhosphore')
+ self.texteCuve += self.ecritVariable('TeneurPhosphore_mess')
+ self.texteCuve += self.ecritVariable('MoyenneRTndt')
+ self.texteCuve += self.ecritVariable('MoyenneRTndt_mess')
+ if str(self.dico_mot["ModeleIrradiation"])=='Metal de Base : Regulatory Guide 1.00 rev 2' or str(self.dico_mot["ModeleIrradiation"])=='Joint Soude : Regulatory Guide 1.00 rev 2':
+ self.texteCuve += self.ecritVariable('CoefVariationRTndt')
+ self.texteCuve += self.ecritVariable('CoefVariationRTndt_mess')
+ self.texteCuve += self.ecritVariable('EcartTypeRTndt')
+ self.texteCuve += self.ecritVariable('EcartTypeRTndt_mess')
+ self.texteCuve += self.ecritVariable('NombreEcartTypeRTndt')
+ self.texteCuve += self.ecritVariable('NombreEcartTypeRTndt_mess')
+ else :
+ self.texteCuve += self.affecteValeurDefaut('TypeIrradiation')
+ self.texteCuve+="# - si RTNDT, fournir RTNDT"+"\n"
+ self.texteCuve+="# - si FLUENCE, fournir MODELIRR, et autres parametres selon MODELIRR (voir ci-dessous)"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.affecteValeurDefaut('RTNDT')
+
+ self.texteCuve += self.sousRubrique('Modele de tenacite','C.')
+ self.texteCuve+="# tenacite d amorcage"+"\n"
+
+ if self.dico_mot.has_key('ModeleTenacite'):
+ self.texteCuve += self.affecteValeur('ModeleTenacite', self.valeurproposee[str(self.dico_mot["ModeleTenacite"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ModeleTenacite')
+ self.texteCuve+="# - si RCC-M, RCC-M_pal, Houssin_RC, fournir (nbectKIc, nbectKIc_MESSAGE), KICPAL, KICCDV"+"\n"
+ self.texteCuve+="# - si RCC-M_exp, fournir (nbectKIc, nbectKIc_MESSAGE), KICCDV"+"\n"
+ self.texteCuve+="# - si RCC-M_simpl, ne rien fournir"+"\n"
+ self.texteCuve+="# - si Frama, LOGWOLF, fournir (nbectKIc, nbectKIc_MESSAGE)"+"\n"
+ self.texteCuve+="# - si REME, ORNL, WEIB3, WEIB2, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC"+"\n"
+ self.texteCuve+="# - si Wallin, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC,"+"\n"
+ self.texteCuve+="# puis T0WALLIN"+"\n"
+ self.texteCuve+="# - si WEIB-GEN, fournir NBCARAC, puis (nbectKIc, nbectKIc_MESSAGE) ou (fractKIc, fractKIc_MESSAGE) selon valeur de NBCARAC,"+"\n"
+ self.texteCuve+="# puis A1, A2, A3, B1, B2, B3, C1, C2, C3"+"\n"
+ self.texteCuve+="# loi de Weibull P(K<x) = 1 - exp{-[ (x-a(T)) / b(T) ]^c(T) }"+"\n"
+ self.texteCuve+="# avec a(T) = A1 + A2*exp[A3*(T-RTNDT)]"+"\n"
+ self.texteCuve+="# b(T) = B1 + B2*exp[B3*(T-RTNDT)]"+"\n"
+ self.texteCuve+="# c(T) = C1 + C2*exp[C3*(T-RTNDT)]"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Correction de la longueur"+"\n"
+ self.texteCuve += self.ecritVariable('ChoixCorrectionLongueur')
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('ModeleTenacite'):
+ if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' or str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve (REME)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb01 (etude ORNL)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb03' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb02' or str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee' :
+ if self.dico_mot.has_key('NombreCaracteristique'):
+ self.texteCuve += self.affecteValeur('NombreCaracteristique', self.valeurproposee[str(self.dico_mot["NombreCaracteristique"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('NombreCaracteristique')
+ self.texteCuve+="# - Si NBCARAC = QUANTILE, fournir (nbectKIc, nbectKIc_MESSAGE)"+"\n"
+ self.texteCuve+="# - Si NBCARAC = ORDRE, fournir (fractKIc, fractKIc_MESSAGE)"+"\n"
+
+ if str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME coefficient=2' or str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME avec KI=KIpalier' or str(self.dico_mot["ModeleTenacite"])=='RCC-M/ASME coefficient=2.33 (Houssin)' :
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
+ self.texteCuve += self.ecritVariable('PalierDuctile_KIc')
+ self.texteCuve += self.ecritVariable('CoefficientVariation_KIc')
+
+ if str(self.dico_mot["ModeleTenacite"])=='Exponentielle n\xb01 (Frama)' or str(self.dico_mot["ModeleTenacite"])=='Exponentielle n\xb02 (LOGWOLF)' :
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
+
+ if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve (REME)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb01 (etude ORNL)' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb03' or str(self.dico_mot["ModeleTenacite"])=='Weibull n\xb02' or str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' or str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee':
+ if str(self.dico_mot["NombreCaracteristique"])=='Quantile' :
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc')
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIc_mess')
+ if str(self.dico_mot["NombreCaracteristique"])=='Ordre' :
+ self.texteCuve += self.ecritVariable('Fractile_KIc')
+ self.texteCuve += self.ecritVariable('Fractile_KIc_mess')
+
+ if str(self.dico_mot["ModeleTenacite"])=='Weibull basee sur la master cuve' :
+ self.texteCuve += self.ecritVariable('Temperature_KIc100')
+
+ if str(self.dico_mot["ModeleTenacite"])=='Weibull generalisee' :
+ self.texteCuve += self.ecritVariable('A1')
+ self.texteCuve += self.ecritVariable('A2')
+ self.texteCuve += self.ecritVariable('A3')
+ self.texteCuve += self.ecritVariable('B1')
+ self.texteCuve += self.ecritVariable('B2')
+ self.texteCuve += self.ecritVariable('B3')
+ self.texteCuve += self.ecritVariable('C1')
+ self.texteCuve += self.ecritVariable('C2')
+ self.texteCuve += self.ecritVariable('C3')
+ else :
+ self.texteCuve += self.affecteValeurDefaut('NbEcartType_MoyKIc')
+ self.texteCuve += self.affecteValeurDefaut('NbEcartType_MoyKIc_mess')
+ self.texteCuve += self.affecteValeurDefaut('PalierDuctile_KIc')
+ self.texteCuve += self.affecteValeurDefaut('CoefficientVariation_KIc')
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Correction plastique"+"\n"
+
+ #DTV if self.dico_mot.has_key('TypeInitial'):
+ #DTV if str(self.dico_mot["TypeInitial"])!='Defaut Debouchant':
+ if self.dico_mot.has_key('CorrectionPlastique'):
+ if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique BETA (pour DSR et defaut decale)':
+ self.texteCuve += self.affecteValeur('AttnCorrBeta','NON')
+ if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique BETA attenuee (pour DSR et defaut decale)':
+ self.texteCuve += self.affecteValeur('AttnCorrBeta','OUI')
+ if str(self.dico_mot["CorrectionPlastique"])=='Correction plastique IRWIN (pour defaut debouchant)':
+ self.texteCuve += self.affecteValeur('CorrIrwin','OUI')
+ else :
+ self.texteCuve += self.affecteValeurDefaut('AttnCorrBeta')
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Prise en compte de l'arret de fissure si DETERMINISTE"+"\n"
+
+ self.texteCuve += self.ecritVariable('ArretDeFissure')
+ self.texteCuve+="# - si ARRETFISSURE=OUI, fournir (INCRDEF, INCRDEF_MESSAGE), nbectKIa, KIAPAL, KIACDV"+"\n"
+ if self.dico_mot.has_key('ArretDeFissure'):
+ if str(self.dico_mot["ArretDeFissure"])=='OUI':
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('IncrementTailleFissure')
+ self.texteCuve += self.ecritVariable('IncrementTailleFissure_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Parametres pour le calcul de la tenacite a l arret"+"\n"
+ self.texteCuve += self.ecritVariable('NbEcartType_MoyKIa')
+ self.texteCuve += self.ecritVariable('PalierDuctile_KIa')
+ self.texteCuve += self.ecritVariable('CoefficientVariation_KIa')
+
+ # Rubrique Etat initial
+ self.texteCuve += self.rubrique('ETAT INITIAL')
+
+ self.texteCuve+="# Profil radial de la temperature initiale dans la cuve"+"\n"
+ self.texteCuve+="# abscisse (m) / temp initiale dans la cuve"+"\n"
+ self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ if self.dico_mot.has_key('ProfilRadial_TemperatureInitiale'):
+ self.imprime(2,(self.dico_mot["ProfilRadial_TemperatureInitiale"]))
+ self.texteCuve += self.amontAval('Amont_TemperatureInitiale','Aval_TemperatureInitiale')
+ else :
+ self.texteCuve+=" 1.9940 287."+"\n"
+ self.texteCuve+="CC"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Profils radiaux des contraintes residuelles dans la cuve"+"\n"
+ self.texteCuve+="# abscisse (m) / sigma rr / sigma tt / sigma zz"+"\n"
+ self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ if self.dico_mot.has_key('ProfilRadial_ContraintesInitiales'):
+ self.imprime(4,(self.dico_mot["ProfilRadial_ContraintesInitiales"]))
+ self.texteCuve += self.amontAval('Amont_ContraintesInitiales','Aval_ContraintesInitiales')
+ else :
+ self.texteCuve+="1.994 0. 0. 0."+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Prise en compte de coefficients sur les contraintes"+"\n"
+ self.texteCuve += self.ecritVariable('ChoixCoefficientChargement')
+ if str(self.dico_mot["ChoixCoefficientChargement"])=='OUI':
+ self.texteCuve += self.ecritVariable('CoefficientDuctile')
+ self.texteCuve += self.ecritVariable('CoefficientFragile')
+ else :
+ self.texteCuve+="#"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Instant initial"+"\n"
+ self.texteCuve += self.ecritVariable('InstantInitialisation')
+
+ # Rubrique CARACTERISTIQUES DU REVETEMENT
+ self.texteCuve += self.rubrique('CARACTERISTIQUES DU REVETEMENT')
+
+ if self.dico_mot.has_key('ConditionLimiteThermiqueREV'):
+ self.texteCuve += self.affecteValeur('ConditionLimiteThermiqueREV', self.valeurproposee[str(self.dico_mot["ConditionLimiteThermiqueREV"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ConditionLimiteThermiqueREV')
+ self.texteCuve+="# - si CHALEUR, fournir Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.texteCuve+="# - si ENTHALPIE, fournir Temperature (degC) / enthalpie (J/kg)"+"\n"
+ self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ self.texteCuve+="#"+"\n"
+ if self.dico_mot.has_key('ChaleurREV_Fct_Temperature'):
+ self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.imprime(2,(self.dico_mot["ChaleurREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_ChaleurREV','Aval_ChaleurREV')
+ elif self.dico_mot.has_key('EnthalpieREV_Fct_Temperature'):
+ self.texteCuve+="# Temperature (degC) / enthalpie (J/kg)"+"\n"
+ self.imprime(2,(self.dico_mot["EnthalpieREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_EnthalpieREV','Aval_EnthalpieREV')
+ else :
+ self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.texteCuve+="0. 36.03E5 "+"\n"
+ self.texteCuve+="20. 36.03E5 "+"\n"
+ self.texteCuve+="200. 41.65E5 "+"\n"
+ self.texteCuve+="350. 43.47E5 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / conductivite thermique (W/m/degC)"+"\n"
+ if self.dico_mot.has_key('ConductiviteREV_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["ConductiviteREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_ConductiviteREV','Aval_ConductiviteREV')
+ else :
+ self.texteCuve+="0. 14.7 "+"\n"
+ self.texteCuve+="20. 14.7 "+"\n"
+ self.texteCuve+="200. 17.2 "+"\n"
+ self.texteCuve+="350. 19.3 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / module d'Young (MPa)"+"\n"
+ if self.dico_mot.has_key('ModuleYoungREV_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["ModuleYoungREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_ModuleYoungREV','Aval_ModuleYoungREV')
+ else :
+ self.texteCuve+="0. 198500. "+"\n"
+ self.texteCuve+="20. 197000. "+"\n"
+ self.texteCuve+="200. 184000. "+"\n"
+ self.texteCuve+="350. 172000. "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / coefficient de dilatation thermique (degC-1)"+"\n"
+ if self.dico_mot.has_key('CoeffDilatThermREV_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["CoeffDilatThermREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_CoeffDilatThermREV','Aval_CoeffDilatThermREV')
+ else :
+ self.texteCuve+="0. 16.40E-6 "+"\n"
+ self.texteCuve+="20. 16.40E-6 "+"\n"
+ self.texteCuve+="200. 17.20E-6 "+"\n"
+ self.texteCuve+="350. 17.77E-6 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / limite d'elasticite (MPa)"+"\n"
+ if self.dico_mot.has_key('LimiteElasticiteREV_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["LimiteElasticiteREV_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_LimiteElasticiteREV','Aval_LimiteElasticiteREV')
+ else :
+ self.texteCuve+="0. 380. "+"\n"
+ self.texteCuve+="20. 370. "+"\n"
+ self.texteCuve+="100. 330. "+"\n"
+ self.texteCuve+="300. 270. "+"\n"
+ self.texteCuve+="LL"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('TemperatureDeformationNulleREV')
+ self.texteCuve += self.ecritVariable('TemperaturePourCoefDilatThermREV')
+ self.texteCuve += self.ecritVariable('CoefficientPoissonREV')
+
+ # Rubrique CARACTERISTIQUES DU METAL DE BASE
+ self.texteCuve += self.rubrique('CARACTERISTIQUES DU METAL DE BASE')
+
+ if self.dico_mot.has_key('ConditionLimiteThermiqueMDB'):
+ self.texteCuve += self.affecteValeur('ConditionLimiteThermiqueMDB', self.valeurproposee[str(self.dico_mot["ConditionLimiteThermiqueMDB"])])
+ else :
+ self.texteCuve += self.affecteValeurDefaut('ConditionLimiteThermiqueMDB')
+
+ self.texteCuve+="# - si CHALEUR, fournir Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.texteCuve+="# - si ENTHALPIE, fournir Temperature (degC) / enthalpie (J/kg)"+"\n"
+ self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ self.texteCuve+="#"+"\n"
+
+ if self.dico_mot.has_key('ChaleurMDB_Fct_Temperature'):
+ self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.imprime(2,(self.dico_mot["ChaleurMDB_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_ChaleurMDB','Aval_ChaleurMDB')
+ elif self.dico_mot.has_key('EnthalpieMDB_Fct_Temperature'):
+ self.texteCuve+="# Temperature (degC) / enthalpie (J/kg)"+"\n"
+ self.imprime(2,(self.dico_mot["EnthalpieMDB_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_EnthalpieMDB','Aval_EnthalpieMDB')
+ else :
+ self.texteCuve+="# Temperature (degC) / chaleur volumique (J/kg/K)"+"\n"
+ self.texteCuve+="0. 34.88E+05 "+"\n"
+ self.texteCuve+="20. 34.88E+05 "+"\n"
+ self.texteCuve+="200. 40.87E+05 "+"\n"
+ self.texteCuve+="350. 46.02E+05 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / conductivite thermique (W/m/degC)"+"\n"
+ if self.dico_mot.has_key('ConductiviteMDB_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["ConductiviteMDB_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_ConductiviteMDB','Aval_ConductiviteMDB')
+ else :
+ self.texteCuve+="0. 37.7 "+"\n"
+ self.texteCuve+="20. 37.7 "+"\n"
+ self.texteCuve+="200. 40.5 "+"\n"
+ self.texteCuve+="350. 38.7 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / module d'Young (MPa)"+"\n"
+ if self.dico_mot.has_key('ModuleYoungMDB_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["ModuleYoungMDB_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Aval_ModuleYoungMDB','Aval_ModuleYoungMDB')
+ else :
+ self.texteCuve+="0. 205000. "+"\n"
+ self.texteCuve+="20. 204000. "+"\n"
+ self.texteCuve+="200. 193000. "+"\n"
+ self.texteCuve+="350. 180000. "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Temperature (degC) / coefficient de dilatation thermique (degC-1)"+"\n"
+ if self.dico_mot.has_key('CoeffDilatThermMDB_Fct_Temperature'):
+ self.imprime(2,(self.dico_mot["CoeffDilatThermMDB_Fct_Temperature"]))
+ self.texteCuve += self.amontAval('Amont_CoeffDilatThermMDB','Aval_CoeffDilatThermMDB')
+ else :
+ self.texteCuve+="0. 11.22E-6 "+"\n"
+ self.texteCuve+="20. 11.22E-6 "+"\n"
+ self.texteCuve+="200. 12.47E-6 "+"\n"
+ self.texteCuve+="350. 13.08E-6 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('TemperatureDeformationNulleMDB')
+ self.texteCuve += self.ecritVariable('TemperaturePourCoefDilatThermMDB')
+ self.texteCuve += self.ecritVariable('CoefficientPoissonMDB')
+
+ # Rubrique CARACTERISTIQUES DU TRANSITOIRE MECANIQUE-THERMOHYDRAULIQUE
+ self.texteCuve += self.rubrique('CARACTERISTIQUES DU TRANSITOIRE MECANIQUE-THERMOHYDRAULIQUE')
+ self.texteCuve += self.sousRubrique('Chargement mecanique : transitoire de pression','')
+
+ self.texteCuve+="# instant (s) / pression (MPa)"+"\n"
+ self.texteCuve+="# Prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_Pression'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_Pression"]))
+ self.texteCuve += self.amontAval('Amont_Pression','Aval_Pression')
+ else :
+ self.texteCuve+="0. 15.5 "+"\n"
+ self.texteCuve+="20. 0.1 "+"\n"
+ self.texteCuve+="200. 0.1 "+"\n"
+ self.texteCuve+="1000. 0.1 "+"\n"
+ self.texteCuve+="CC"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ self.texteCuve += self.sousRubrique('Chargement thermo-hydraulique','')
+ if self.dico_mot.has_key('TypeConditionLimiteThermique'):
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.texteCuve += self.affecteValeur('TypeConditionLimiteThermique', self.valeurproposee[str(self.dico_mot["TypeConditionLimiteThermique"])])
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ else :
+ self.texteCuve += self.affecteValeurDefaut('TypeConditionLimiteThermique')
+
+ self.texteCuve+="# - si TEMP_IMPO, fournir Instant (s) / Temperature imposee (degC)"+"\n"
+ self.texteCuve+="# - si FLUX_REP, fournir Instant (s) / Flux de chaleur impose (W/m2)"+"\n"
+ self.texteCuve+="# - si ECHANGE, fournir Instant (s) / Temperature impose (degC)"+"\n"
+ self.texteCuve+="# puis Instant (s) / Coefficient d echange (W/m2/K)"+"\n"
+ self.texteCuve+="# - si DEBIT, fournir Instant (s) / Debit massique (kg/s)"+"\n"
+ self.texteCuve+="# puis Instant (s) / Temperature d injection de securite (degC)"+"\n"
+ self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
+ self.texteCuve+="# puis Modele CREARE : "+"\n"
+ self.texteCuve+="# Instants(s) / Volume de melange CREARE (m3)"+"\n"
+ self.texteCuve+="# puis (T0, T0_MESSAGE), (SE, SE_MESSAGE)"+"\n"
+ self.texteCuve+="# - si TEMP_FLU, fournir Instant (s) / Temperature du fluide (degC)"+"\n"
+ self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
+ self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
+ self.texteCuve+="# - si TFDEBIT, fournir INST_PCN et TIS"+"\n"
+ self.texteCuve+="# fournir Instant (s) / Temperature du fluide (degC)"+"\n"
+ self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
+ self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
+ self.texteCuve+="# puis Modele CREARE : "+"\n"
+ self.texteCuve+="# Instants(s) / Volume de melange CREARE (m3)"+"\n"
+ self.texteCuve+="# puis (T0, T0_MESSAGE), (SE, SE_MESSAGE)"+"\n"
+ self.texteCuve+="# - si APRP, fournir INSTANT1, INSTANT2, INSTANT3, QACCU, QIS, (TIS, TIS_MESSAGE)"+"\n"
+ self.texteCuve+="# puis Instant (s) / Temperature du fluide (degC) tel que dans l'exemple ci-dessous"+"\n"
+ self.texteCuve+="# 0. 286."+"\n"
+ self.texteCuve+="# 12. 20. # 1er palier à T=TACCU"+"\n"
+ self.texteCuve+="# 20. 20. # idem que ci-dessus : T=TACCU"+"\n"
+ self.texteCuve+="# 21. 999999. # 2nd palier à T=T1 : sera remplace par nouvelle valeur calculee par fonction idoine"+"\n"
+ self.texteCuve+="# 45. 999999. # idem que ci-dessus : T=T1"+"\n"
+ self.texteCuve+="# 46. 9. # 3eme palier à T=TIS, temperature d injection de securite : sa valeur est reactualisee avec la donnee de TIS ci-dessous"+"\n"
+ self.texteCuve+="# 1870. 9. # idem que ci-dessus : T=TIS"+"\n"
+ self.texteCuve+="# 1871. 80."+"\n"
+ self.texteCuve+="# 3871. 80."+"\n"
+ self.texteCuve+="# CC # C pour Constant, E pour Exclu, L pour Lineaire"+"\n"
+ self.texteCuve+="# puis Instant (s) / Debit d injection de securite (kg/s)"+"\n"
+ self.texteCuve+="# puis Modele VESTALE : (DH, DH_MESSAGE), (SECTION, SECTION_MESSAGE), (DELTA, DELTA_MESSAGE), EPS, COEFVESTALE"+"\n"
+ self.texteCuve+="# Finir chacune des listes par la prolongation aux frontieres amont et aval: C = constant / E = exclu / L = lineaire"+"\n"
+ self.texteCuve+="#"+"\n"
+
+ if self.dico_mot.has_key('TypeConditionLimiteThermique'):
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.texteCuve += self.ecritVariable('InstantPerteCirculationNaturelle')
+ self.texteCuve += self.ecritVariable('TempInjectionSecurite')
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP':
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Definition de parametres pour le cas d un transitoire APRP"+"\n"
+ self.texteCuve += self.ecritVariable('Instant_1')
+ self.texteCuve += self.ecritVariable('Instant_2')
+ self.texteCuve += self.ecritVariable('Instant_3')
+ self.texteCuve += self.ecritVariable('DebitAccumule')
+ self.texteCuve += self.ecritVariable('DebitInjectionSecurite')
+ self.texteCuve += self.ecritVariable('TempInjectionSecurite')
+ self.texteCuve += self.ecritVariable('TempInjectionSecurite_mess')
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee en paroi' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et coefficient echange' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP' :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / temperature imposee du fluide (degC)"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_TemperatureImposeeFluide'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_TemperatureImposeeFluide"]))
+ self.texteCuve += self.amontAval('Amont_TemperatureImposeeFluide','Aval_TemperatureImposeeFluide')
+ else :
+ self.texteCuve+="0. 286. "+"\n"
+ self.texteCuve+="20. 20. "+"\n"
+ self.texteCuve+="200. 7. "+"\n"
+ self.texteCuve+="1000. 80. "+"\n"
+ self.texteCuve+="CC"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Flux de chaleur impose en paroi':
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / flux de chaleur impose (W/m2)"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_FluxChaleur'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_FluxChaleur"]))
+ self.texteCuve += self.amontAval('Amont_FluxChaleur','Aval_FluxChaleur')
+ self.texteCuve+="#"+"\n"
+ else :
+ self.texteCuve+="0. -0. "+"\n"
+ self.texteCuve+="20. -366290. "+"\n"
+ self.texteCuve+="200. -121076. "+"\n"
+ self.texteCuve+="1000. -56372."+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP':
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / Debit d injection de securite (kg/s)"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_DebitInjection'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_DebitInjection"]))
+ self.texteCuve += self.amontAval('Amont_DebitInjection','Aval_DebitInjection')
+ else :
+ self.texteCuve+="0. 4590. "+"\n"
+ self.texteCuve+="20. 4590. "+"\n"
+ self.texteCuve+="200. 340. "+"\n"
+ self.texteCuve+="1000. 31.1 "+"\n"
+ self.texteCuve+="CC"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et coefficient echange' :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / Coefficient d echange (W/m2/K)"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_CoefficientEchange'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_CoefficientEchange"]))
+ self.texteCuve += self.amontAval('Amont_CoefficientEchange','Aval_CoefficientEchange')
+ else :
+ self.texteCuve+="0. 138454. "+"\n"
+ self.texteCuve+="20. 19972. "+"\n"
+ self.texteCuve+="200. 2668. "+"\n"
+ self.texteCuve+="1000. 2668. "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / Debit massique (kg/s)"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_DebitMassique'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_DebitMassique"]))
+ self.texteCuve += self.amontAval('Amont_DebitMassique','Aval_DebitMassique')
+ else :
+ self.texteCuve+="0. 18.4 "+"\n"
+ self.texteCuve+="20. 18.4 "+"\n"
+ self.texteCuve+="200. 31.1 "+"\n"
+ self.texteCuve+="1000. 31.1 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / Temperature d injection de securite (degC)"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_TemperatureInjection'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_TemperatureInjection"]))
+ self.texteCuve += self.amontAval('Amont_TemperatureInjection','Aval_TemperatureInjection')
+ else :
+ self.texteCuve+="0. 7.0 "+"\n"
+ self.texteCuve+="20. 7.0 "+"\n"
+ self.texteCuve+="200. 7.0 "+"\n"
+ self.texteCuve+="1000. 7.0 "+"\n"
+ self.texteCuve+="CC"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Temperature imposee du fluide et debit d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Courbe APRP' :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Transitoire des coefficients d echange : modele VESTALE"+"\n"
+ self.texteCuve+="#"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.texteCuve += self.ecritVariable('DiametreHydraulique')
+ self.texteCuve += self.ecritVariable('DiametreHydraulique_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('SectionEspaceAnnulaire')
+ self.texteCuve += self.ecritVariable('SectionEspaceAnnulaire_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('HauteurCaracConvectionNaturelle')
+ self.texteCuve += self.ecritVariable('HauteurCaracConvectionNaturelle_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('CritereConvergenceRelative')
+ self.texteCuve += self.ecritVariable('CoefficientsVestale')
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Debit massique et temperature d injection de securite' or str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# Transitoire de temperature fluide locale : modele CREARE"+"\n"
+ self.texteCuve+="#"+"\n"
+ #self.texteCuve += self.ecritVariable('VolumeMelange_CREARE')
+ self.texteCuve+="# instant (s) / Volume de melange CREARE (m3)"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ if self.dico_mot.has_key('ProfilTemporel_VolumeMelange_CREARE'):
+ self.imprime(2,(self.dico_mot["ProfilTemporel_VolumeMelange_CREARE"]))
+ self.texteCuve += self.amontAval('Amont_VolumeMelange_CREARE','Aval_VolumeMelange_CREARE')
+ else :
+ self.texteCuve+="0. 14.3 "+"\n"
+ self.texteCuve+="20. 14.2 "+"\n"
+ self.texteCuve+="CC"+"\n"
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ else :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('TemperatureInitiale_CREARE')
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ self.texteCuve += self.ecritVariable('TemperatureInitiale_CREARE_mess')
+ self.texteCuve+="#"+"\n"
+ self.texteCuve += self.ecritVariable('SurfaceEchange_FluideStructure')
+ self.texteCuve += self.ecritVariable('SurfaceEchange_FluideStructure_mess')
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT':
+ self.texteCuve+="#BLOC_TFDEBIT"+"\n"
+ else :
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="# instant (s) / temperature imposee du fluide (degC)"+"\n"
+ self.texteCuve+="0. 286. "+"\n"
+ self.texteCuve+="20. 20. "+"\n"
+ self.texteCuve+="200. 7. "+"\n"
+ self.texteCuve+="1000. 80. "+"\n"
+ self.texteCuve+="CC"+"\n"
+ self.texteCuve+="#"+"\n"
+ self.texteCuve+="############################################################################################"+"\n"
+
+
+ def genereTexteTFDEBIT(self):
+
+ self.texteTFDEBIT = ""
+
+ if self.dico_mot.has_key('TypeConditionLimiteThermique'):
+ if str(self.dico_mot["TypeConditionLimiteThermique"])=='Calcul TEMPFLU puis DEBIT' :
+ self.texteTFDEBIT+="# instant (s) / pression (MPa)"+"\n"
+ self.texteTFDEBIT+=" "+"\n"
+ self.imprime2(2,(self.dico_mot["ProfilTemporel_Pression"]))
+ self.texteTFDEBIT += self.amontAval('Amont_Pression','Aval_Pression')
+
+ # self.texteTFDEBIT+=" "+"\n"
+ # self.texteTFDEBIT += self.affecteValeur('TypeConditionLimiteThermique', self.valeurproposee[str(self.dico_mot["TypeConditionLimiteThermique"])])
+
+ self.texteTFDEBIT+=" "+"\n"
+ self.imprime2(2,(self.dico_mot["ProfilTemporel_TemperatureImposeeFluide"]))
+ self.texteTFDEBIT += self.amontAval('Amont_TemperatureImposeeFluide','Aval_TemperatureImposeeFluide')
+
+ self.texteTFDEBIT+=" "+"\n"
+ self.imprime2(2,(self.dico_mot["ProfilTemporel_DebitInjection"]))
+ self.texteTFDEBIT += self.amontAval('Amont_DebitInjection','Aval_DebitInjection')
+
+ self.texteTFDEBIT+=" "+"\n"
+ self.texteTFDEBIT += self.ecritVariable('DiametreHydraulique')
+ self.texteTFDEBIT += self.ecritVariable('DiametreHydraulique_mess')
+ self.texteTFDEBIT+="#"+"\n"
+ self.texteTFDEBIT += self.ecritVariable('SectionEspaceAnnulaire')
+ self.texteTFDEBIT += self.ecritVariable('SectionEspaceAnnulaire_mess')
+ self.texteTFDEBIT+="#"+"\n"
+ self.texteTFDEBIT += self.ecritVariable('HauteurCaracConvectionNaturelle')
+ self.texteTFDEBIT += self.ecritVariable('HauteurCaracConvectionNaturelle_mess')
+ self.texteTFDEBIT+="#"+"\n"
+ self.texteTFDEBIT += self.ecritVariable('CritereConvergenceRelative')
+ self.texteTFDEBIT += self.ecritVariable('CoefficientsVestale')
+
+ self.texteTFDEBIT+=" "+"\n"
+ self.imprime2(2,(self.dico_mot["ProfilTemporel_VolumeMelange_CREARE"]))
+ self.texteTFDEBIT += self.amontAval('Amont_VolumeMelange_CREARE','Aval_VolumeMelange_CREARE')
+
+ self.texteTFDEBIT+=" "+"\n"
+ self.texteTFDEBIT += self.ecritVariable('SurfaceEchange_FluideStructure')
+ self.texteTFDEBIT += self.ecritVariable('SurfaceEchange_FluideStructure_mess')
+ self.texteTFDEBIT += self.ecritVariable('InstantPerteCirculationNaturelle')
+ self.texteTFDEBIT += self.ecritVariable('TempInjectionSecurite')
+ else :
+ self.texteTFDEBIT+="Fichier inutile"+"\n"
+
+
+ def imprime(self,nbdeColonnes,valeur):
+ self.liste=[]
+ self.transforme(valeur)
+ i=0
+ while i < len(self.liste):
+ for k in range(nbdeColonnes) :
+ self.texteCuve+=str(self.liste[i+k]) +" "
+ self.texteCuve+="\n"
+ i=i+k+1
+
+ def imprime2(self,nbdeColonnes,valeur):
+ self.liste=[]
+ self.transforme(valeur)
+ i=0
+ while i < len(self.liste):
+ for k in range(nbdeColonnes) :
+ self.texteTFDEBIT+=str(self.liste[i+k]) +" "
+ self.texteTFDEBIT+="\n"
+ i=i+k+1
+
+
+ def transforme(self,valeur):
+ for i in valeur :
+ if type(i) == tuple :
+ self.transforme(i)
+ else :
+ self.liste.append(i)
+
+
+
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ homard pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+
+from Noyau import N_CR
+from Noyau.N_utils import repr_float
+from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
+from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
+from Accas import GEOM,ASSD,MCNUPLET
+from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
+from Formatage import Formatage
+from generator_python import PythonGenerator
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'homard',
+ # La factory pour creer une instance du plugin
+ 'factory' : HomardGenerator,
+ }
+
+
+class HomardGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format homard
+
+ """
+ # Les extensions de fichier preconis�es
+ extensions=('.comm',)
+
+ def __init__(self,cr=None):
+ # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
+ if cr :
+ self.cr=cr
+ else:
+ self.cr=N_CR.CR(debut='CR generateur format homard pour homard',
+ fin='fin CR format homard pour homard')
+ # Le texte au format homard est stock� dans l'attribut text
+ self.dico_mot_clef={}
+ self.assoc={}
+ self.init_assoc()
+ self.text=''
+ self.textehomard=[]
+
+ def init_assoc(self):
+ self.lmots_clef_calcules = ('SuivFron','TypeBila','ModeHOMA','CCAssoci', 'CCNoChaI','HOMaiN__','HOMaiNP1','CCNumOrI', 'CCNumPTI')
+ self.lmot_clef = ('CCMaiN__', 'CCNoMN__', 'CCIndica', 'CCSolN__', 'CCFronti', 'CCNoMFro', 'CCMaiNP1',
+ 'CCNoMNP1', 'CCSolNP1', 'TypeRaff', 'TypeDera', 'NiveauMa', 'SeuilHau', 'SeuilHRe',
+ 'SeuilHPE', 'NiveauMi', 'SeuilBas', 'SeuilBRe', 'SeuilBPE', 'ListeStd', 'NumeIter',
+ 'Langue ', 'CCGroFro', 'CCNoChaI', 'CCNumOrI', 'CCNumPTI', 'SuivFron', 'TypeBila',
+ 'ModeHOMA', 'HOMaiN__', 'HOMaiNP1','CCCoChaI')
+
+# Bizarre demander a Gerald :
+# CVSolNP1
+ self.assoc['CCMaiN__']='FICHIER_MED_MAILLAGE_N'
+ self.assoc['CCNoMN__']='NOM_MED_MAILLAGE_N'
+ self.assoc['CCIndica']='FICHIER_MED_MAILLAGE_N'
+ self.assoc['CCSolN__']='FICHIER_MED_MAILLAGE_N'
+ self.assoc['CCFronti']='FIC_FRON'
+ self.assoc['CCNoMFro']='NOM_MED_MAILLAGE_FRONTIERE'
+ self.assoc['CCMaiNP1']='FICHIER_MED_MAILLAGE_NP1'
+ self.assoc['CCNoMNP1']='NOM_MED_MAILLAGE_NP1'
+ self.assoc['CCSolNP1']='FICHIER_MED_MAILLAGE_NP1'
+ self.assoc['TypeRaff']='RAFFINEMENT'
+ self.assoc['TypeDera']='DERAFFINEMENT'
+ self.assoc['NiveauMa']='NIVE_MAX'
+ self.assoc['SeuilHau']='CRIT_RAFF_ABS'
+ self.assoc['SeuilHRe']='CRIT_RAFF_REL'
+ self.assoc['SeuilHPE']='CRIT_RAFF_PE'
+ self.assoc['NiveauMi']='NIVE_MIN'
+ self.assoc['SeuilBas']='CRIT_DERA_ABS'
+ self.assoc['SeuilBRe']='CRIT_DERA_REL'
+ self.assoc['SeuilBPE']='CRIT_DERA_PE'
+ self.assoc['ListeStd']='MESSAGES'
+ self.assoc['NumeIter']='NITER'
+ self.assoc['Langue ']='LANGUE'
+ self.assoc['CCGroFro']='GROUP_MA'
+# self.assoc['CCNoChaI']='NOM_MED' (on doit aussi ajouter 'COMPOSANTE')
+ self.assoc['CCNumOrI']='NUME_ORDRE'
+ self.assoc['CCNumPTI']='NUME_PAS_TEMPS'
+ self.assoc['CCCoChaI']='COMPOSANTE'
+
+ self.dico_mot_depend={}
+
+ # Attention a la synthaxe
+ self.dico_mot_depend['CCIndica'] ='self.dico_mot_clef["RAFFINEMENT"] == "LIBRE" or self.dico_mot_clef["DERAFFINEMENT"] == "LIBRE"'
+ self.dico_mot_depend['CCSolN__'] ='self.dico_mot_clef.has_key("NITER")'
+ self.dico_mot_depend['CCSolNP1'] ='self.dico_mot_clef.has_key("NITER")'
+
+ def gener(self,obj,format='brut',config=None):
+ self.text=PythonGenerator.gener(self,obj,format)
+ self.genereConfiguration()
+ return self.text
+
+ def generMCSIMP(self,obj) :
+ """
+ Convertit un objet MCSIMP en une liste de chaines de caract�res � la
+ syntaxe homard
+ """
+ s=PythonGenerator.generMCSIMP(self,obj)
+ clef=obj.nom
+ self.dico_mot_clef[clef]=obj.val
+ return s
+
+ def cherche_dependance(self,mot):
+ b_eval = 0
+ a_eval=self.dico_mot_depend[mot]
+ try :
+ b_eval=eval(self.dico_mot_depend[mot])
+ except :
+ for l in a_eval.split(" or "):
+ try:
+ b_eval=eval(l)
+ if not (b_eval == 0 ):
+ break
+ except :
+ pass
+ return b_eval
+
+
+ def genereConfiguration(self):
+ ligbla=31*' '
+ self.textehomard=[]
+ for mot in self.lmot_clef:
+
+# on verifie d'abord que le mot clef doit bien etre calcule
+ if self.dico_mot_depend.has_key(mot) :
+ if self.cherche_dependance(mot) == 0 :
+ continue
+
+ if mot not in self.lmots_clef_calcules :
+ clef_eficas=self.assoc[mot]
+ if self.dico_mot_clef.has_key(clef_eficas):
+ val=self.dico_mot_clef[clef_eficas]
+ if val != None:
+ try :
+ ligne=mot+' '+val
+ except:
+ ligne=mot+' '+repr(val)
+ ligne.rjust(32)
+ self.textehomard.append(ligne)
+ else:
+ val=apply(HomardGenerator.__dict__[mot],(self,))
+ if val != None:
+ mot.rjust(8)
+ ligne=mot+' '+val
+ ligne.rjust(32)
+ self.textehomard.append(ligne)
+
+ def get_homard(self):
+ return self.textehomard
+
+ def SuivFron(self):
+ val="non"
+ if self.dico_mot_clef.has_key('NOM_MED_MAILLAGE_FRONTIERE'):
+ if self.dico_mot_clef['NOM_MED_MAILLAGE_FRONTIERE'] != None:
+ val="oui"
+ return val
+
+ def TypeBila(self):
+ inttypeBilan = 1
+ retour=None
+ dict_val={'NOMBRE':7,'INTERPENETRATION':3,'QUALITE':5,'CONNEXITE':11,'TAILLE':13}
+ for mot in ('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'):
+ if self.dico_mot_clef.has_key(mot):
+ if (self.dico_mot_clef[mot] == "OUI"):
+ inttypeBilan=inttypeBilan*dict_val[mot]
+ retour = repr(inttypeBilan)
+ return retour
+
+
+ def ModeHOMA(self):
+ intModeHOMA=1
+ if self.dico_mot_clef.has_key('INFORMATION'):
+ if self.dico_mot_clef['INFORMATION'] == "OUI":
+ intModeHOMA=2
+ return repr(intModeHOMA)
+
+ def CCAssoci(self):
+ return 'MED'
+
+ def CCNoChaI(self):
+ if not (self.dico_mot_clef.has_key('NOM_MED')):
+ return None
+ if (self.dico_mot_clef['NOM_MED']== None):
+ return None
+ if not (self.dico_mot_clef.has_key('COMPOSANTE')):
+ return None
+ if (self.dico_mot_clef['COMPOSANTE']== None):
+ return None
+ chaine=self.dico_mot_clef['COMPOSANTE']+' '+self.dico_mot_clef['NOM_MED']
+ return chaine
+
+ def HOMaiN__(self):
+ chaine=None
+ if self.dico_mot_clef.has_key('NITER'):
+ if self.dico_mot_clef['NITER'] != None :
+ num="M"+repr(self.dico_mot_clef['NITER'])
+ chaine=num+" "+num+".hom"
+ return chaine
+
+ def HOMaiNP1(self):
+ chaine=None
+ if self.dico_mot_clef.has_key('NITER'):
+ if self.dico_mot_clef['NITER'] != None :
+ num="M"+repr(self.dico_mot_clef['NITER']+1)
+ chaine=num+" "+num+".hom"
+ return chaine
+
+ def CCNumOrI(self):
+ chaine=repr(1)
+ if self.dico_mot_clef.has_key('NUME_ORDRE'):
+ if self.dico_mot_clef['NUME_ORDRE'] != None :
+ chaine=repr(self.dico_mot_clef['NUME_ORDRE'])
+ return chaine
+
+ def CCNumPTI(self):
+ chaine=repr(1)
+ if self.dico_mot_clef.has_key('NUME_PAS_TEMPS'):
+ if self.dico_mot_clef['NUME_PAS_TEMPS'] != None :
+ chaine=repr(self.dico_mot_clef['NUME_PAS_TEMPS'])
+ return chaine
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ openturns pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+from Extensions.i18n import tr
+
+
+from generator_python import PythonGenerator
+from OpenturnsBase import Generateur
+#from OpenturnsXML import XMLGenerateur
+#from OpenturnsSTD import STDGenerateur
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'openturns',
+ # La factory pour creer une instance du plugin
+ 'factory' : OpenturnsGenerator,
+ }
+
+
+class OpenturnsGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format xml
+
+ """
+ # Les extensions de fichier permis?
+ extensions=('.comm',)
+
+ def initDico(self):
+ self.dictMCVal={}
+ self.listeVariables=[]
+ self.listeFichiers=[]
+ self.dictMCLois={}
+ self.dictTempo={}
+ self.TraiteMCSIMP=1
+
+ def gener(self,obj,format='brut',config=None):
+ #print "IDM: gener dans generator_openturns.py"
+ self.initDico()
+ self.text=PythonGenerator.gener(self,obj,format)
+ self.genereXML()
+ self.genereSTD()
+ return self.text
+
+ def generMCSIMP(self,obj) :
+ """
+ Convertit un objet MCSIMP en texte python
+ Remplit le dictionnaire des MCSIMP si nous ne sommes pas ni dans une loi, ni dans une variable
+ """
+ s=PythonGenerator.generMCSIMP(self,obj)
+ if self.TraiteMCSIMP == 1 :
+ self.dictMCVal[obj.nom]=obj.valeur
+ else :
+ self.dictTempo[obj.nom]=obj.valeur
+ return s
+
+ def generMCFACT(self,obj):
+ # Il n est pas possible d utiliser obj.valeur qui n est pas
+ # a jour pour les nouvelles variables ou les modifications
+ if obj.nom == "Variables" or "Files":
+ self.TraiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generMCFACT(self,obj)
+ if obj.nom == "Variables" :
+ self.listeVariables.append(self.dictTempo)
+ self.dictTempo={}
+ else :
+ self.listeFichiers.append(self.dictTempo)
+ self.TraiteMCSIMP=1
+ return s
+
+ def generETAPE(self,obj):
+ if obj.nom == "DISTRIBUTION" :
+ self.TraiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generETAPE(self,obj)
+ if obj.nom == "DISTRIBUTION" :
+ self.dictMCLois[obj.sd]=self.dictTempo
+ self.dictTempo={}
+ self.TraiteMCSIMP=1
+ return s
+
+ def genereXML(self):
+ #print "IDM: genereXML dans generator_openturns.py"
+ if self.listeFichiers != [] :
+ self.dictMCVal["exchange_file"]=self.listeFichiers
+ MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
+ MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
+ #try :
+ if 1== 1 :
+ self.texteXML=MonGenerateur.CreeXML()
+ #except :
+ else :
+ self.texteXML=tr("Il y a un pb a la Creation du XML")
+
+ def genereSTD(self):
+ MonBaseGenerateur=Generateur(self.dictMCVal, self.listeVariables, self.dictMCLois)
+ MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
+ #try :
+ if 1== 1 :
+ self.texteSTD=MonGenerateur.CreeSTD()
+ #except :
+ else :
+ self.texteSTD=tr("Il y a un pb a la Creation du STD")
+
+ def getOpenturnsXML(self):
+ return self.texteXML
+
+ def getOpenturnsSTD(self):
+ return self.texteSTD
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ openturns pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+from Extensions.i18n import tr
+
+
+from generator_python import PythonGenerator
+from OpenturnsBase import Generateur
+#from OpenturnsXML import XMLGenerateur
+#from OpenturnsSTD import STDGenerateur
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'openturns_study',
+ # La factory pour creer une instance du plugin
+ 'factory' : OpenturnsGenerator,
+ }
+
+
+class OpenturnsGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format xml
+
+ """
+ # Les extensions de fichier permis?
+ extensions=('.comm',)
+
+ def initDico(self):
+ self.dictMCVal={}
+ self.listeVariables=[]
+ self.listeFichiers=[]
+ self.dictMCLois={}
+ self.dictTempo={}
+ self.TraiteMCSIMP=1
+ self.texteSTD="""#!/usr/bin/env python
+ import sys
+ print "Invalid file. Check build process."
+ sys.exit(1)
+ """
+
+ def gener(self,obj,format='brut',config=None):
+ print "IDM: gener dans generator_openturns_study.py"
+ self.initDico()
+ self.text=PythonGenerator.gener(self,obj,format)
+ self.genereSTD()
+ return self.text
+
+ def generMCSIMP(self,obj) :
+ """
+ Convertit un objet MCSIMP en texte python
+ Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
+ """
+ s=PythonGenerator.generMCSIMP(self,obj)
+ if self.TraiteMCSIMP == 1 :
+ self.dictMCVal[obj.nom]=obj.valeur
+ else :
+ self.dictTempo[obj.nom]=obj.valeur
+ return s
+
+
+ def generETAPE(self,obj):
+ print "IDM: generETAPE dans generator_openturns_study.py"
+ print "IDM: obj.nom=", obj.nom
+ if obj.nom in ( "DISTRIBUTION", ) :
+ self.TraiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generETAPE(self,obj)
+ if obj.nom in ( "DISTRIBUTION", ) :
+ self.dictMCLois[obj.sd]=self.dictTempo
+ self.dictTempo={}
+ self.TraiteMCSIMP=1
+ return s
+
+ def generPROC_ETAPE(self,obj):
+ print "IDM: generPROC_ETAPE dans generator_openturns_study.py"
+ print "IDM: obj.nom=", obj.nom
+ if obj.nom in ( "VARIABLE", ) :
+ self.TraiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generPROC_ETAPE(self,obj)
+ if obj.nom in ( "VARIABLE", ) :
+ self.listeVariables.append(self.dictTempo)
+ self.dictTempo={}
+ self.TraiteMCSIMP=1
+ return s
+
+ def genereSTD(self):
+ print "IDM: genereSTD dans generator_openturns_study.py"
+ print "IDM: self.listeVariables=", self.listeVariables
+ MonGenerateur=self.getGenerateur()
+ #try :
+ if 1== 1 :
+ self.texteSTD=MonGenerateur.CreeSTD()
+ #except :
+ else :
+ self.texteSTD=tr("Il y a un pb a la Creation du STD")
+
+ def writeDefault(self, fn):
+ fileSTD = fn[:fn.rfind(".")] + '.py'
+ with open(fileSTD, 'w') as f:
+ f.write(self.texteSTD)
+
+ def getGenerateur (self):
+ print "IDM: getGenerateur dans generator_openturns_study.py"
+ print "IDM: self.dictMCVal=", self.dictMCVal
+ print "IDM: self.listeVariables=", self.listeVariables
+ print "IDM: self.dictMCLois=", self.dictMCLois
+ MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, self.listeVariables, self.dictMCLois)
+ MonGenerateur=MonBaseGenerateur.getSTDGenerateur()
+ return MonGenerateur
--- /dev/null
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013 EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+ Ce module contient le plugin generateur de fichier au format
+ openturns pour EFICAS.
+
+"""
+import traceback
+import types,string,re
+from Extensions.i18n import tr
+
+
+from generator_python import PythonGenerator
+from OpenturnsBase import Generateur
+#from OpenturnsXML import XMLGenerateur
+#from OpenturnsSTD import STDGenerateur
+
+def entryPoint():
+ """
+ Retourne les informations necessaires pour le chargeur de plugins
+
+ Ces informations sont retournees dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'openturns_wrapper',
+ # La factory pour creer une instance du plugin
+ 'factory' : OpenturnsGenerator,
+ }
+
+
+class OpenturnsGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet de type JDC et produit
+ un texte au format eficas et
+ un texte au format xml
+
+ """
+ # Les extensions de fichier permis?
+ extensions=('.comm',)
+
+ def initDico(self):
+ self.dictMCVal={}
+ self.dictVariables={}
+ self.listeFichiers=[]
+ self.dictTempo={}
+ self.traiteMCSIMP=1
+ self.numOrdre=0
+ self.texteSTD="""#!/usr/bin/env python
+ import sys
+ print "Invalid file. Check build process."
+ sys.exit(1)
+ """
+ self.wrapperXML=None
+
+ def gener(self,obj,format='brut',config=None):
+ #print "IDM: gener dans generator_openturns_wrapper.py"
+ self.initDico()
+ self.text=PythonGenerator.gener(self,obj,format)
+ self.genereXML()
+ #self.genereSTD()
+ return self.text
+
+ def generMCSIMP(self,obj) :
+ """
+ Convertit un objet MCSIMP en texte python
+ Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
+ """
+ s=PythonGenerator.generMCSIMP(self,obj)
+ if not( type(obj.valeur) in (list, tuple)) and (obj.get_min_max()[1] != 1):
+ valeur=(obj.valeur,)
+ else :
+ valeur=obj.valeur
+ if self.traiteMCSIMP == 1 :
+ self.dictMCVal[obj.nom]=valeur
+ else :
+ self.dictTempo[obj.nom]=valeur
+ return s
+
+ def generETAPE(self,obj):
+ #print "generETAPE" , obj.nom
+ if obj.nom == "VARIABLE" :
+ self.traiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generETAPE(self,obj)
+ if obj.nom == "VARIABLE" :
+ self.dictTempo["numOrdre"]=self.numOrdre
+ self.numOrdre = self.numOrdre +1
+ if obj.sd == None :
+ self.dictVariables["SansNom"]=self.dictTempo
+ else :
+ self.dictVariables[obj.sd.nom]=self.dictTempo
+ self.dictTempo={}
+ self.traiteMCSIMP=1
+ return s
+
+ def generMCFACT(self,obj):
+ # Il n est pas possible d utiliser obj.valeur qui n est pas
+ # a jour pour les nouvelles variables ou les modifications
+ if obj.nom in ( "Files", ) :
+ self.traiteMCSIMP=0
+ self.dictTempo={}
+ s=PythonGenerator.generMCFACT(self,obj)
+ self.listeFichiers.append(self.dictTempo)
+ self.traiteMCSIMP=1
+ return s
+
+ def genereXML(self):
+ print "IDM: genereXML dans generator_openturns_wrapper.py"
+ #print "appli.CONFIGURATION=",self.appli.CONFIGURATION.__dict__
+ if self.listeFichiers != [] :
+ self.dictMCVal["Files"]=self.listeFichiers
+ print "dictMCVal", self.dictMCVal, "dictVariables", self.dictVariables
+ MonBaseGenerateur=Generateur(self.appli,self.dictMCVal, [], {} ,self.dictVariables)
+ MonGenerateur=MonBaseGenerateur.getXMLGenerateur()
+ try :
+ #if 1== 1 :
+ self.wrapperXML=MonGenerateur.CreeXML()
+ except :
+ #else :
+ self.wrapperXML=None
+
+ def writeDefault(self, filename):
+ fileXML = filename[:filename.rfind(".")] + '.xml'
+ self.wrapperXML.writeFile( str(fileXML) )