From 90ca3e4e92b342779c258ae1ef83fa4ade205f65 Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Fri, 7 Aug 2015 12:22:56 +0200 Subject: [PATCH] merge PSEN --- Ihm/I_MACRO_ETAPE.py | 4 +- Ihm/I_MCSIMP.py | 8 +- InterfaceQT4/browser.py | 13 +- InterfaceQT4/configuration.py | 11 +- InterfaceQT4/gereIcones.py | 12 +- InterfaceQT4/monWidgetMatrice.py | 9 +- InterfaceQT4/monWidgetPlusieursBase.py | 14 + InterfaceQT4/monWidgetPlusieursIntoOrdonne.py | 10 + InterfaceQT4/monWidgetPlusieursTuple.py | 58 +- InterfaceQT4/monWidgetSimpFichier.py | 8 +- InterfaceQT4/qtEficas.py | 12 +- PSEN_Eficas/PSEN_Cata.py | 1307 ++++++++++++++--- PSEN_Eficas/opsPSEN.py | 1 + UiQT4/Tuple2.ui | 22 +- UiQT4/desWidgetPlusieursTuple.ui | 723 +++++---- generator/generator_PSEN.py | 30 +- generator/generator_dicoImbrique.py | 17 +- 17 files changed, 1652 insertions(+), 607 deletions(-) diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index fbcc4509..9cd262cb 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -1141,7 +1141,9 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): """ try: sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.Build_sd(self,nom) - except AsException,e: + except : + # return None + #except AsException,e: # Une erreur s'est produite lors de la construction du concept # Comme on est dans EFICAS, on essaie de poursuivre quand meme # Si on poursuit, on a le choix entre deux possibilites : diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index c8477cb4..d9a6906d 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -117,10 +117,10 @@ class MCSIMP(I_OBJECT.OBJECT): else : texteVal=str(val) txt = txt + sep+ texteVal - if len(txt) > 200: - #ligne trop longue, on tronque - txt=txt+" ..." - break +## if len(txt) > 200: +## #ligne trop longue, on tronque +## txt=txt+" ..." +## break sep=',' # cas des listes de tuples de longueur 1 if isinstance(val,types.TupleType) and len(self.valeur) == 1 : txt=txt+',' diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index d87818f2..7594e78a 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -135,7 +135,7 @@ class JDCTree( QTreeWidget ): def handleOnItem(self,item,int): #if (len(self.selectedIndexes())!=2): return - #print "je passe dans handleOnItem" + #print "je passe dans handleOnItem pour ", self.item.nom self.inhibeExpand == True self.itemCourrant=item itemParent=item @@ -143,11 +143,10 @@ class JDCTree( QTreeWidget ): while not (hasattr (itemParent,'getPanel2')) : if itemParent.plie==True : itemParent.setDeplie() itemParent=itemParent.treeParent - #print itemParent + #print itemParent.item.nom #print itemParent.fenetre #print self.editor.afficheCommandesPliees if itemParent.fenetre != self.editor.fenetreCentraleAffichee : - #print self.editor.afficheCommandesPliees if self.editor.afficheCommandesPliees : itemParent.plieToutEtReaffiche() else : itemParent.affichePanneau() if itemParent!=item and item.fenetre != None: item.fenetre.rendVisible() @@ -174,6 +173,7 @@ PARAMETERS = "PARAMETRE" class JDCNode(QTreeWidgetItem): def __init__( self, treeParent, item): #print "creation d'un noeud : ", item, " ",item.nom,"", treeParent, self + #print "creation d'un noeud : ", item.nom self.a=0 self.item = item self.vraiParent = treeParent @@ -202,8 +202,6 @@ class JDCNode(QTreeWidgetItem): else : self.plie = False self.appartientAUnNoeudPlie = False - #print "self.plie", self.plie - #print "self.appartientAUnNoeudPlie", self.appartientAUnNoeudPlie #print self.treeParent ajoutAuParentduNoeud=0 @@ -593,7 +591,7 @@ class JDCNode(QTreeWidgetItem): # #------------------------------------------------------------------ def onValid(self): - print "onValid pour ", self.item.nom + #print "onValid pour ", self.item.nom if hasattr(self,'fenetre') and self.fenetre: self.fenetre.setValide() if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isvalid(): self.item.jdc.recalcule_etat_correlation() @@ -754,6 +752,9 @@ class JDCNode(QTreeWidgetItem): #print "je suis dans plieToutEtReaffiche", self.item.get_nom() self.editor.deplier = False for item in self.children : + # il ne faut pas plier les blocs + from InterfaceQT4 import compobloc + if (isinstance(item,compobloc.Node)) : continue item.setPlie() self.affichePanneau() diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index c4e1ef7d..db417830 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -70,7 +70,11 @@ class CONFIG_BASE: if self.appli: self.parent=appli.top else: self.parent=None - if not os.path.isdir(self.savedir) : self.savedir=os.environ['HOME'] + if not os.path.isdir(self.savedir) : + if sys.platform[0:5]=="linux" : + self.savedir=os.environ['HOME'] + else: + self.savedir='C:/' @@ -82,7 +86,10 @@ class CONFIG_BASE: self.path_doc = os.path.abspath(os.path.join(self.repIni,'..','Doc')) self.exec_acrobat = 'acroread' nomDir="Eficas_"+self.code - self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir)) + if sys.platform[0:5]=="linux" : + self.savedir = os.path.abspath(os.path.join(os.environ['HOME'],nomDir)) + else: + self.savedir = os.path.abspath('C:/') self.mode_nouv_commande='initial' self.affiche="alpha" diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index e5d3d67c..a0053c90 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os,re +import string,types,os,re,sys import traceback from PyQt4 import * @@ -156,11 +156,13 @@ class ContientIcones: def BFichierVisu(self): fichier=self.lineEditVal.text() if fichier == None or str(fichier)=="" : return - from qtCommun import ViewText + from monViewTexte import ViewText try : - if sys.platform[0:5]=="linux" : cmd="xdg-open "+ str(fichier) - else : cmd="start "+ str(fichier) - os.system(cmd) + if sys.platform[0:5]=="linux" : + cmd="xdg-open "+ str(fichier) + os.system(cmd) + else : + os.startfile(str(fichier)) except: try : fp=open(fichier) diff --git a/InterfaceQT4/monWidgetMatrice.py b/InterfaceQT4/monWidgetMatrice.py index dfce8424..ad4ee030 100644 --- a/InterfaceQT4/monWidgetMatrice.py +++ b/InterfaceQT4/monWidgetMatrice.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os +import string,types,os,sys # Modules Eficas from PyQt4.QtGui import * @@ -46,6 +46,13 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): else : try : self.initialValeur() except : self.initialSsValeur() + if sys.platform[0:5]!="linux" : + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'update.png') + icon = QIcon(fichier) + self.PBrefresh.setIcon(icon) + self.PBrefresh.setIconSize(QSize(32, 32)) + def connecterSignaux(self) : diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index a43800ab..fd35071c 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -48,6 +48,20 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe): GereListe.__init__(self) self.connect(self.BSelectFichier,SIGNAL("clicked()"), self.selectInFile) + if sys.platform[0:5]!="linux": + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + fichier3=os.path.join(repIcon, 'file-explorer.png') + icon3 = QIcon(fichier2) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) + self.listeValeursCourantes=self.node.item.GetListeValeurs() if self.monSimpDef.max != "**" and self.monSimpDef.max < 7: hauteur=dicoLongueur[self.monSimpDef.max] diff --git a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py index ed20a4da..b56f4b04 100644 --- a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py @@ -53,6 +53,16 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere self.prepareListeResultat() self.adjustSize() self.vScrollBarRE = self.scrollAreaRE.verticalScrollBar() + if sys.platform[0:5]!="linux": + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + def setValeurs(self): for i in self.listeLE: diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index 9b8f254b..64af770a 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os +import string,types,os,sys # Modules Eficas from PyQt4.QtGui import * @@ -44,6 +44,7 @@ class TupleCustom : self.valeur=None self.index=index + for i in range(self.tailleTuple): nomLE="lineEditVal_"+str(i+1) courant=getattr(self,nomLE) @@ -132,6 +133,22 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): GereListe.__init__(self) self.politique=PolitiquePlusieurs(self.node,self.editor) self.parentQt.commandesLayout.insertWidget(-1,self) + if sys.platform[0:5]!="linux": + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'arrow_up.png') + icon = QIcon(fichier) + self.RBHaut.setIcon(icon) + self.RBHaut.setIconSize(QSize(32, 32)) + fichier2=os.path.join(repIcon, 'arrow_down.png') + icon2 = QIcon(fichier2) + self.RBBas.setIcon(icon2) + fichier3=os.path.join(repIcon, 'file-explorer.png') + icon3 = QIcon(fichier3) + self.BSelectFichier.setIcon(icon3) + self.BSelectFichier.setIconSize(QSize(32, 32)) + + + def ajoutLineEdit(self,valeur=None,inInit=False): self.indexDernierLabel=self.indexDernierLabel+1 @@ -165,6 +182,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): def setValeurs(self): + self.RBListePush() valeurs=self.node.item.get_valeur() min,max=self.node.item.GetMinMax() if max == "**" or max > 5 : aCreer=5 @@ -222,3 +240,41 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): except : pass + def RBListePush(self): + if self.objSimp.valeur != None and self.objSimp.valeur != [] : return + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_ligne : + val=[] + for k in self.objSimp.jdc.LineDico.keys() : + try : + valeur=self.objSimp.jdc.get_concept(k) + val.append((valeur,0)) + except : + pass + self.node.item.set_valeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_generateur : + val=[] + for k in self.objSimp.jdc.MachineDico.keys() : + try : + valeur=self.objSimp.jdc.get_concept(k) + val.append((valeur,0)) + except : + pass + self.node.item.set_valeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_transfo : + val=[] + for k in self.objSimp.jdc.TransfoDico.keys() : + try : + valeur=self.objSimp.jdc.get_concept(k) + val.append((valeur,0)) + except : + pass + self.node.item.set_valeur(val) + if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_charge : + val=[] + for k in self.objSimp.jdc.LoadDico.keys() : + try : + valeur=self.objSimp.jdc.get_concept(k) + val.append((valeur,0)) + except : + pass + self.node.item.set_valeur(val) diff --git a/InterfaceQT4/monWidgetSimpFichier.py b/InterfaceQT4/monWidgetSimpFichier.py index 03cf456c..25f5c073 100644 --- a/InterfaceQT4/monWidgetSimpFichier.py +++ b/InterfaceQT4/monWidgetSimpFichier.py @@ -34,8 +34,12 @@ class MonWidgetSimpFichier (Ui_WidgetSimpFichier,MonWidgetSimpBase): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): MonWidgetSimpBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + if sys.platform[0:5]!="linux" : + repIcon=self.node.editor.appliEficas.repIcon + fichier=os.path.join(repIcon, 'file-explorer.png') + icon = QIcon(fichier) + self.BFichier.setIcon(icon) + self.BFichier.setIconSize(QSize(32, 32)) # deja fait dans MonWidgetSimpBase #self.maCommande.listeAffichageWidget.append(self.lineEditVal) - - diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index e0415e66..160f5921 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -63,7 +63,8 @@ class Appli(Ui_Eficas,QMainWindow): self.ficRecents={} self.listeAEnlever=[] self.ListeCode=['Aster','Carmel3D','Cuve2dg','Openturns_Study','Openturns_Wrapper','MAP','ZCracks', 'CarmelCND','MT'] - self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'../Editeur/icons') + #self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'../Editeur/icons') + self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons') if self.salome: import Accas @@ -74,7 +75,6 @@ class Appli(Ui_Eficas,QMainWindow): self.multi=multi if langue=='fr': self.langue=langue else : self.langue="ang" - self.langue='fr' if self.multi == False : self.definitCode(code,ssCode) if code==None: return @@ -163,8 +163,11 @@ class Appli(Ui_Eficas,QMainWindow): def ajoutExecution(self): self.menuExecution = self.menubar.addMenu(QApplication.translate("Eficas", "Execution", None, QApplication.UnicodeUTF8)) self.actionExecution = QAction(self) - icon6 = QIcon(self.repIcon+"/roue.png") - self.actionExecution.setIcon(icon6) + if sys.platform[0:5]=="linux": + icon6 = QIcon(self.repIcon+"/roue.png") + self.actionExecution.setIcon(icon6) + else : + self.actionExecution.setText(QApplication.translate("Eficas", "Run", None)) self.actionExecution.setObjectName("actionExecution") self.menuExecution.addAction(self.actionExecution) if not(self.actionExecution in self.toolBar.actions()): @@ -249,7 +252,6 @@ class Appli(Ui_Eficas,QMainWindow): def PSEN(self): self.ajoutExecution() - self.ajoutSauveExecution() def ChercheGrpMesh(self): Msg,listeGroup=self.ChercheGrpMeshInSalome() diff --git a/PSEN_Eficas/PSEN_Cata.py b/PSEN_Eficas/PSEN_Cata.py index 2621f9f5..b8881494 100755 --- a/PSEN_Eficas/PSEN_Cata.py +++ b/PSEN_Eficas/PSEN_Cata.py @@ -78,14 +78,19 @@ class Matrice: #CONTEXT.debug = 1 JdC = JDC_CATA ( code = 'PSEN', execmodul = None, - regles = ( AU_MOINS_UN ( 'PARAMETRES_PSSE' ), + regles = ( AU_MOINS_UN ( 'PSSE_PARAMETERS' ), AU_MOINS_UN ( 'DIRECTORY' ), AU_MOINS_UN ( 'DISTRIBUTION' ), AU_MOINS_UN ( 'SIMULATION' ), - AU_PLUS_UN ( 'PARAMETRES_PSSE' ), + AU_PLUS_UN ( 'PSSE_PARAMETERS' ), AU_PLUS_UN ( 'DIRECTORY' ), AU_PLUS_UN ( 'SIMULATION' ), AU_PLUS_UN ( 'CORRELATION' ), + AU_PLUS_UN ( 'N_1_GENERATORS' ), + AU_PLUS_UN ( 'N_1_LINES' ), + AU_PLUS_UN ( 'N_1_LOADS' ), + AU_PLUS_UN ( 'N_1_TRANSFORMERS' ), + ), ) # Fin JDC_CATA @@ -133,34 +138,34 @@ MONTRANSFO = OPER ( nom = "MONTRANSFO", -PARAMETRES_PSSE = PROC ( nom = "PARAMETRES_PSSE", +PSSE_PARAMETERS = PROC ( nom = "PSSE_PARAMETERS", op=None, docu = "", - COUT_COMBUSTIBLE = SIMP ( statut = "o", + FUEL_COST = SIMP ( statut = "o", typ=bool, defaut=True, ), - COUT_DELESTAGE = SIMP ( statut = "o", + LOADSHEDDING_COST = SIMP ( statut = "o", typ=bool, defaut=False, ), - COUT_MVAR = SIMP ( statut = "o", + MVAR_COST = SIMP ( statut = "o", typ=bool, defaut=False, ), - IMAP = SIMP ( statut = "o", + I_MAX = SIMP ( statut = "o", typ='TXM', into=['RateA','RateB','RateC'], - defaut=False, + defaut='RateA', ), LOCK_TAPS = SIMP ( statut = "o", typ=bool, defaut=True, ), - P_MIN= SIMP ( statut = "o", - typ=bool, - defaut=True, - ), +## P_MIN= SIMP ( statut = "o", +## typ=bool, +## defaut=True, +## ), ) SIMULATION = PROC ( nom = "SIMULATION", @@ -182,148 +187,1079 @@ SIMULATION = PROC ( nom = "SIMULATION", into=[1], ), -## STUDY = SIMP ( statut = "o", -## typ = "TXM", -## into = ( 'N-1', 'Load', 'Wind-1', 'Wind-2', 'PV' ), -## max=5, -## fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS", -## ang = "Open TURNS library debug level print", -## ), -) +## STUDY = SIMP ( statut = "o", +## typ = "TXM", +## into = ( 'N-1', 'Load', 'Wind-1', 'Wind-2', 'PV' ), +## max=5, +## fr = "Affichage du niveau de wrapper de la bibliotheque Open TURNS", +## ang = "Open TURNS library debug level print", +## ), +) + + +#================================ +# Definition du modele physique +#================================ + + + +CORRELATION = PROC ( nom = 'CORRELATION', + op = None, + docu = "", + fr = "Correlation entre variables", + ang = "Variable correlation", + +#### Copula = SIMP ( statut = "o", +#### typ = 'TXM', +#### into = ( "Independent", "Normal" ), +#### defaut = "Independent", +#### fr = "Type de la copule", +#### ang = "Copula kind", +#### ), +## +## # Matrix = BLOC ( condition = "Copula in ( 'Normal', )", +## + CorrelationMatrix = SIMP ( statut = "o", + typ = Matrice(nbLigs=None, + nbCols=None, + methodeCalculTaille='NbDeDistributions', + structure="symetrique"), + fr = "Matrice de correlation entre les variables d'entree", + ang = "Correlation matrix for input variables", + ), +## #), # Fin BLOC Matrix +## +## +) + +DIRECTORY = MACRO ( nom = 'DIRECTORY', + op=None, + fr = "Chargement des generateurs et des charges", + ang = "Physical model wrapper load", + sd_prod = opsPSEN.INCLUDE, + op_init = opsPSEN.INCLUDE_context, + #sd_prod=None, + fichier_ini = 1, + + PSSE_path=SIMP(statut="o",typ='Repertoire',defaut='C:\Program Files\PTI\PSSE33\PSSBIN'), + sav_file=SIMP(statut="o", typ = ('Fichier', 'Wrapper Files (*.sav);;All Files (*)',),), + results_folder=SIMP(statut="o",typ='Repertoire'), + #lines_file=SIMP(statut="o" ,typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), + #groups_file=SIMP(statut="o", typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), + #generationsystem_file=SIMP(statut="o" ,typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), + +) + + + +#================================ +# Importation des fichiers csv N-1 +#================================ + +N_1_LINES = PROC( nom="N_1_LINES", + op = None, + docu = "", + fr = "N-1 lignes", + ang = "N-1 lines", + Activated = SIMP ( statut='o', typ=bool, defaut=True), +## FileName = SIMP ( statut = "o", +## typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), +## fr = "chemin du fichier csv des probabilites des defauts lignes", +## ang = "csv file path with probabilities of line outages", +## ), + Probability = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Probabilite d'indisponibilite de la ligne", + ang = "Probability that the line is not available", + validators=VerifTypeTuple((sd_ligne,'R')),), + ) + +N_1_TRANSFORMERS = PROC( nom="N_1_TRANSFORMERS", + op = None, + docu = "", + fr = "N-1 transformateurs", + ang = "N-1 transformers", + Activated = SIMP ( statut='o', typ=bool, defaut=True), +## FileName = SIMP ( statut = "o", +## typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), +## fr = "chemin du fichier csv des probabilites des defauts transformateur", +## ang = "csv file path with probabilities of transformer outages", +## ), + Probability = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Probabilite d'indisponibilite de la ligne", + ang = "Probability that the line is not available", + validators=VerifTypeTuple((sd_transfo,'R')),), + ) +N_1_GENERATORS = PROC( nom="N_1_GENERATORS", + op = None, + docu = "", + fr = "N-1 generateurs", + ang = "N-1 generators", + Activated = SIMP ( statut='o', typ=bool, defaut=True), +## FileName = SIMP ( statut = "o", +## typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), +## fr = "chemin du fichier csv des probabilites des defauts generateurs", +## ang = "csv file path with probabilities of generator outages", +## ), + Probability = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Probabilite d'indisponibilite du generateur", + ang = "Probability that the generator is not available", + validators=VerifTypeTuple((sd_generateur,'R')),), + ) +N_1_LOADS = PROC( nom="N_1_LOADS", + op = None, + docu = "", + fr = "N-1 charges", + ang = "N-1 loads", + Activated = SIMP ( statut='o', typ=bool, defaut=True), +## FileName = SIMP ( statut = "o", +## typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), +## fr = "chemin du fichier csv des probabilites des defauts charges", +## ang = "csv file path with probabilities of load outages", +## ), + Probability = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Probabilite d'indisponibilite du generateur", + ang = "Probability that the generator is not available", + validators=VerifTypeTuple((sd_charge,'R')),), + ) + + + + +#================================ +# Definition des LOIS +#================================ + +# Nota : les variables de type OPER doivent etre en majuscules ! +# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type) +DISTRIBUTION = OPER ( nom = "DISTRIBUTION", + sd_prod = loi, + op = 68, + fr = "Definitions des lois marginales utilisees par les variables d'entree", + +#==== +# Choisir generateur ou charge +#==== + +## TypeMachine = SIMP ( statut='o', typ='TXM', +## into = ('charge','vent1','vent2','pv','N-1',), +## ), + Activated = SIMP ( statut='o', typ=bool, defaut=True), + ComponentType = SIMP (statut='o', typ='TXM', + into = ('Generator','Load','Line','Transformer'),), + b_gener = BLOC (condition = "ComponentType == 'Generator'", + + Type = SIMP (statut= "o", typ = "TXM", + into = ("Generator Power Level", "Generator Availability"), + fr = "Choisir si c'est le niveau de puissance ou la disponibilité du generateur qui sera tiree", + ang= "Choose whether the power level or the availability of the generator will be set by the law", + defaut = "Generator Power Level", + ), + + Generator = SIMP(statut='o',typ=sd_generateur,max="**", homo="SansOrdreNiDoublon"), + +#==== +# Type de distribution +#==== + + + Law = SIMP ( statut = "o", typ = "TXM", + into = ( "Exponential", + "Histogram", + "Normal", + "Rayleigh", + "PDF_from_file", + "TruncatedNormal", + "TimeSeries_from_file", + "Uniform", + "UserDefined", + "Weibull", + ), + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + + +#==== +# Definition des parametres selon le type de la loi +#==== + + + EXPONENTIAL = BLOC ( condition = " Law in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC EXPONENTIAL + + + HISTOGRAM = BLOC ( condition = " Law in ( 'Histogram', ) ", + + First = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du supoport de la loi", + ang = "Support lower bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : largeur de classe, hauteur de classe", + ang = "Class bandwidth, class height couple list", + validators=VerifTypeTuple(('R','R')), + ), + + ), # Fin BLOC HISTOGRAM + + + NORMAL = BLOC ( condition = " Law in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC NORMAL + + + RAYLEIGH = BLOC ( condition = " Law in ( 'Rayleigh', ) ", + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + ), # Fin BLOC RAYLEIGH + + PDF = BLOC ( condition = " Law in ( 'PDF_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Nom du modele physique", + ang = "Physical model identifier", + ), + ), + + + + TRUNCATEDNORMAL = BLOC ( condition = " Law in ( 'TruncatedNormal', ) ", + + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi Normale non tronquée", + ang = "Mean value of the associated non truncated normal distribution", + ), + + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart-type de la loi Normale non tronquée", + ang = "Standard deviation of the associated non truncated normal distribution", + ), + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < B", + ang = "Lower bound | A < B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < B", + ang = "Upper bound | A < B", + ), + + ), # Fin BLOC TRUNCATEDNORMAL + + + TimeSeries = BLOC ( condition = " Law in ( 'TimeSeries_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Fichier CSV d'une serie temporelle", + ang = "CSV file of a time series", + ), + ), + + + UNIFORM = BLOC ( condition = " Law in ( 'Uniform', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi | A < B", + ang = "Support lower bound | A < B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure du support de la loi | A < B", + ang = "Support upper bound | A < B", + ), + + ), # Fin BLOC UNIFORM + + + USERDEFINED = BLOC ( condition = " Law in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : (valeur, probabilite)", + ang = "List of pairs : (value, probability)", + validators=VerifTypeTuple(('R','R')), + ), + + ), # Fin BLOC USERDEFINED + + + WEIBULL = BLOC ( condition = " Law in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC WEIBULL + + + Transfer_Function = FACT(statut='f', + + Input = SIMP ( statut='o', + typ = 'TXM', + fr = 'Entrer une fonction de transfert à partir d''un fichier .pow (vitesse de vent - puissance eolienne)\n \ + ou entrer une liste de tuples (valeur tiree - puissance normalisee)', + ang = 'Enter wind speed - turbine production transfer function as a .pow file, \n \ + or enter a generic list of (law output value, normalized power output) tuples', + into = ('.pow file', 'tuples list'), + ), + b_file = BLOC(condition = "Input == '.pow file'", + File_Name = SIMP ( statut = "o", + typ = ('Fichier', 'Pow files (*.pow);;All Files (*)',), + fr = "Nom du fichier de transfer .pow", + ang = ".pow file name", + ), + Wind_Speed_Measurement_Height = SIMP ( statut = 'o', + typ = "R", + max = 1, + fr = 'Hauteur (en metres) a laquelle les mesures de vitesse du vent ont ete prises', + ang = 'Height of wind speed measurements (m)', + sug = 10, + val_min = 0, + ), + Hub_Height = SIMP (statut = 'o', + typ = "R", + fr = 'hauteur de moyeu de l''eolienne', + ang = 'wind turbine hub height', + sug = 80, + val_min = 0,), + Alpha = SIMP (statut = 'o', + typ = "R", + fr = 'l''alpha pour extrapoler les mesures de vitesse du vent a la hauteur du moyeu ', + ang = 'alpha used to extrapolate wind speed measurements to hub height', + defaut = 1./7, + val_min = 0, + val_max = 1, + ), + Percent_Losses = SIMP (statut = 'o', + typ = "R", + fr = 'pourcentage de pertes entre la sortie theorique d''une turbine et la sortie de la centrale', + ang = 'percent losses between theoretical power output of a single turbine and the output of the farm', + defaut = 5, + val_min = 0, + val_max = 100, + ), + ), #fin du bloc FileName + + b_tuples = BLOC(condition = "Input == 'tuples list'", + + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + min = 2, + fr = "Liste de couples : valeur tiree, puissance normalisee sortie", + ang = "List of couples : value set by law, normalized power output", + validators=VerifTypeTuple(('R','R')), + ), + ), #fin du block Tuples List + + ), #fin du FACT Transfer Function + + ), #fin du bloc generateur + + b_charge = BLOC (condition = "ComponentType == 'Load'", + + +#==== +# Type de distribution +#==== + + Type = SIMP (statut= "o", typ = "TXM", + into = ("Load Level", "Load Availability"), + fr = "Choisir si c'est le niveau de charge ou la disponibilité de la charge qui sera tiree", + ang= "Choose whether the power level or the availability of the load will be set by the law", + defaut = "Load Level", + ), + + Load = SIMP(statut='o',typ=sd_charge,max="**", homo="SansOrdreNiDoublon",), + + Law = SIMP ( statut = "o", typ = "TXM", + into = ( "Exponential", + "Histogram", + "Normal", + "Rayleigh", + "PDF_from_file", + "TruncatedNormal", + "TimeSeries_from_file", + "Uniform", + "UserDefined", + "Weibull", + ), + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + + +#==== +# Definition des parametres selon le type de la loi +#==== + + + EXPONENTIAL = BLOC ( condition = " Law in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC EXPONENTIAL + + + HISTOGRAM = BLOC ( condition = " Law in ( 'Histogram', ) ", + + First = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du supoport de la loi", + ang = "Support lower bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : largeur de classe, hauteur de classe", + ang = "Class bandwidth, class height couple list", + validators=VerifTypeTuple(('R','R')), + ), + + ), # Fin BLOC HISTOGRAM + + + NORMAL = BLOC ( condition = " Law in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC NORMAL + + + RAYLEIGH = BLOC ( condition = " Law in ( 'Rayleigh', ) ", + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + ), # Fin BLOC RAYLEIGH + + PDF = BLOC ( condition = " Law in ( 'PDF_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Nom du modele physique", + ang = "Physical model identifier", + ), + ), + + + + TRUNCATEDNORMAL = BLOC ( condition = " Law in ( 'TruncatedNormal', ) ", + + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi Normale non tronquée", + ang = "Mean value of the associated non truncated normal distribution", + ), + + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart-type de la loi Normale non tronquée", + ang = "Standard deviation of the associated non truncated normal distribution", + ), + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < B", + ang = "Lower bound | A < B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < B", + ang = "Upper bound | A < B", + ), + + ), # Fin BLOC TRUNCATEDNORMAL + + + TimeSeries = BLOC ( condition = " Law in ( 'TimeSeries_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Fichier CSV d'une serie temporelle", + ang = "CSV file of a time series", + ), + ), + + + UNIFORM = BLOC ( condition = " Law in ( 'Uniform', ) ", + + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi | A < B", + ang = "Support lower bound | A < B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure du support de la loi | A < B", + ang = "Support upper bound | A < B", + ), + + ), # Fin BLOC UNIFORM + + + USERDEFINED = BLOC ( condition = " Law in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : (valeur, probabilite)", + ang = "List of pairs : (value, probability)", + validators=VerifTypeTuple(('R','R')), + ), + + ), # Fin BLOC USERDEFINED + + + WEIBULL = BLOC ( condition = " Law in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC WEIBULL + + + ), #fin du bloc charge + + + b_ligne = BLOC (condition = "ComponentType == 'Line'", + + +#==== +# Type de distribution +#==== + + Type = SIMP (statut= "o", typ = "TXM", + into = ("Line Availability",), + fr = "La disponibilite de la ligne sera tiree", + ang= "Line availability will be set by the law", + defaut = "Line Availability", + ), + + Line = SIMP(statut='o',typ=sd_ligne,max="**", homo="SansOrdreNiDoublon"), + + Law = SIMP ( statut = "o", typ = "TXM", + into = ( #"Exponential", + #"Histogram", + #"Normal", + #"Rayleigh", + #"PDF_from_file", + #"TruncatedNormal", + #"TimeSeries_from_file", + #"Uniform", + "UserDefined", + #"Weibull", + ), + defaut = "UserDefined", + fr = "Choix du type de la loi marginale", + ang = "1D marginal distribution", + ), + + +#==== +# Definition des parametres selon le type de la loi +#==== + + + EXPONENTIAL = BLOC ( condition = " Law in ( 'Exponential', ) ", + + Lambda = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Lambda | Lambda > 0", + ang = "Lambda parameter | Lambda > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC EXPONENTIAL + + + HISTOGRAM = BLOC ( condition = " Law in ( 'Histogram', ) ", + + First = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du supoport de la loi", + ang = "Support lower bound", + ), + + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : largeur de classe, hauteur de classe", + ang = "Class bandwidth, class height couple list", + validators=VerifTypeTuple(('R','R')), + ), + + ), # Fin BLOC HISTOGRAM + + + NORMAL = BLOC ( condition = " Law in ( 'Normal', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC NORMAL + + + RAYLEIGH = BLOC ( condition = " Law in ( 'Rayleigh', ) ", + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Parametre Sigma de la loi | Sigma > 0", + ang = "Sigma parameter | Sigma > 0", + ), + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + ), # Fin BLOC RAYLEIGH + + PDF = BLOC ( condition = " Law in ( 'PDF_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Nom du modele physique", + ang = "Physical model identifier", + ), + ), + + + + TRUNCATEDNORMAL = BLOC ( condition = " Law in ( 'TruncatedNormal', ) ", + MuN = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi Normale non tronquée", + ang = "Mean value of the associated non truncated normal distribution", + ), + SigmaN = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart-type de la loi Normale non tronquée", + ang = "Standard deviation of the associated non truncated normal distribution", + ), -#================================ -# Importation des fichiers csv N-1 -#================================ + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure de la loi | A < B", + ang = "Lower bound | A < B", + ), -N_1_LINES = PROC( nom="N_1_LINES", - op = None, - docu = "", - fr = "N-1 lignes", - ang = "N-1 lines", + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure de la loi | A < B", + ang = "Upper bound | A < B", + ), - FileName = SIMP ( statut = "o", - typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), - fr = "chemin du fichier csv des probabilites des defauts lignes", - ang = "csv file path with probabilities of line outages", - ), - ) + ), # Fin BLOC TRUNCATEDNORMAL -N_1_TRANSFORMERS = PROC( nom="N_1_TRANSFORMERS", - op = None, - docu = "", - fr = "N-1 transformateurs", - ang = "N-1 transformers", + TimeSeries = BLOC ( condition = " Law in ( 'TimeSeries_from_file', ) ", + FileName = SIMP ( statut = "o", typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), - fr = "chemin du fichier csv des probabilites des defauts transformateur", - ang = "csv file path with probabilities of transformer outages", + fr = "Fichier CSV d'une serie temporelle", + ang = "CSV file of a time series", ), - ) -N_1_GENERATORS = PROC( nom="N_1_GENERATORS", - op = None, - docu = "", - fr = "N-1 generateurs", - ang = "N-1 generators", + ), - FileName = SIMP ( statut = "o", - typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), - fr = "chemin du fichier csv des probabilites des defauts generateurs", - ang = "csv file path with probabilities of generator outages", - ), - ) -N_1_LOADS = PROC( nom="N_1_LOADS", - op = None, - docu = "", - fr = "N-1 charges", - ang = "N-1 loads", - FileName = SIMP ( statut = "o", - typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), - fr = "chemin du fichier csv des probabilites des defauts charges", - ang = "csv file path with probabilities of load outages", - ), - ) + UNIFORM = BLOC ( condition = " Law in ( 'Uniform', ) ", -#================================ -LINE_LIST = PROC (nom='LINE_LIST', - op = None, - docu = "", - fr = "PN", - ang = "PN", + A = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi | A < B", + ang = "Support lower bound | A < B", + ), + + B = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne superieure du support de la loi | A < B", + ang = "Support upper bound | A < B", + ), + + ), # Fin BLOC UNIFORM + + USERDEFINED = BLOC ( condition = " Law in ( 'UserDefined', ) ", + + # Il faut definir une collection de couples ( x,p ) Values = SIMP ( statut = 'o', typ = Tuple(2), max = '**', - fr = "Liste de couples : largeur de classe, hauteur de classe", - ang = "Class bandwidth, class height couple list", - validators=VerifTypeTuple((sd_ligne,'R')), + fr = "Liste de couples : (valeur, probabilite)", + ang = "List of pairs : (value, probability)", + validators=VerifTypeTuple(('R','R')), + defaut=((0,0.0),(1,1.0)), ), -) -#================================ -# Definition des LOIS -#================================ -# Nota : les variables de type OPER doivent etre en majuscules ! -# Nota : les variables de type OPER doivent etre de premier niveau (pas imbriquees dans un autre type) -DISTRIBUTION = OPER ( nom = "DISTRIBUTION", - sd_prod = loi, - op = 68, - fr = "Definitions des lois marginales utilisees par les variables d'entree", + ), # Fin BLOC USERDEFINED -#==== -# Choisir generateur ou charge -#==== -## TypeMachine = SIMP ( statut='o', typ='TXM', -## into = ('charge','vent1','vent2','pv','N-1',), -## ), - Activated = SIMP ( statut='o', typ=bool, defaut=True), - ComponentType = SIMP (statut='o', typ='TXM', - into = ('Generator','Load','Line','Transformer'),), - b_gener = BLOC (condition = "ComponentType == 'Generator'", - Generator = SIMP(statut='o',typ=sd_generateur,max="**", homo="SansOrdreNiDoublon"),), - b_charge = BLOC (condition = "ComponentType == 'Load'", - Load = SIMP(statut='o',typ=sd_charge,max="**", homo="SansOrdreNiDoublon"),), - b_ligne = BLOC (condition = "ComponentType == 'Line'", - Line = SIMP(statut='o',typ=sd_ligne,max="**", homo="SansOrdreNiDoublon"),), + WEIBULL = BLOC ( condition = " Law in ( 'Weibull', ) ", + + Settings = SIMP ( statut = "o", + typ = "TXM", + max = 1, + into = ( "AlphaBeta", "MuSigma" ), + defaut = "AlphaBeta", + fr = "Parametrage de la loi weibull", + ang = "Weibull distribution parameter set", + ), + + AlphaBeta_Parameters = BLOC ( condition = " Settings in ( 'AlphaBeta', ) ", + + Alpha = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Alpha de la loi | Alpha > 0", + ang = "Alpha parameter | Alpha > 0", + ), + + Beta = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Parametre Beta de la loi | Beta > 0", + ang = "Beta parameter | Beta > 0", + ), + + ), # Fin BLOC AlphaBeta_Parameters + + + MuSigma_Parameters = BLOC ( condition = " Settings in ( 'MuSigma', ) ", + + Mu = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Moyenne de la loi", + ang = "Mean value", + ), + + Sigma = SIMP ( statut = "o", + typ = "R", + max = 1, + val_min = 0., + fr = "Ecart type de la loi", + ang = "Standard deviation", + ), + + ), # Fin BLOC MuSigma_Parameters + + Gamma = SIMP ( statut = "o", + typ = "R", + max = 1, + fr = "Borne inferieure du support de la loi", + ang = "Support lower bound", + ), + + ), # Fin BLOC WEIBULL + + ), #fin du bloc ligne + b_transfo = BLOC (condition = "ComponentType == 'Transformer'", - Transformer = SIMP(statut='o',typ=sd_transfo,max="**", homo="SansOrdreNiDoublon"),), -## b_gener = BLOC (condition = "TypeComposant == 'Generateur'", -## Generateur = SIMP(statut='o',typ=sd_generateur,max="**", homo="SansOrdreNiDoublon"),), -## b_charge = BLOC (condition = "TypeComposant == 'Charge'", -## charge = SIMP(statut='o',typ=sd_charge,max="**", homo="SansOrdreNiDoublon"),), - + + #==== # Type de distribution #==== - - Kind = SIMP ( statut = "o", typ = "TXM", - into = ( "NonParametrique", - #"Beta", - "Exponential", + + Type = SIMP (statut= "o", typ = "TXM", + into = ("Transformer Availability",), + fr = "La disponibilite du transformateur sera tiree", + ang= "Transformer availability will be set by the law", + defaut = "Transformer Availability" + ), + + Transformer = SIMP(statut='o',typ=sd_transfo,max="**", homo="SansOrdreNiDoublon"), + + Law = SIMP ( statut = "o", typ = "TXM", + into = ( #"Beta", + #"Exponential", #"Gamma", #"Geometric", #"Gumbel", - "Histogram", + #"Histogram", #"Laplace", #"Logistic", #"LogNormal", #"MultiNomial", #"NonCentralStudent", - "Normal", + #"Normal", #"Poisson", #"Rayleigh", #"Student", - "PDF_from_file", + #"PDF_from_file", #"Triangular", - "TruncatedNormal", - "Uniform", + #"TruncatedNormal", + #"TimeSeries_from_file", + #"Uniform", "UserDefined", - "Weibull", + #"Weibull", ), + defaut="UserDefined", fr = "Choix du type de la loi marginale", ang = "1D marginal distribution", ), @@ -333,16 +1269,16 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # Definition des parametres selon le type de la loi #==== - NONPARAM = BLOC ( condition = " Kind in ( 'NonParametrique', ) ", - - FileName = SIMP ( statut = "o", - typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), - fr = "Nom du modele physique", - ang = "Physical model identifier", - ), - ), +## NONPARAM = BLOC ( condition = " Law in ( 'NonParametrique', ) ", +## +## FileName = SIMP ( statut = "o", +## typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), +## fr = "Nom du modele physique", +## ang = "Physical model identifier", +## ), +## ), -# BETA = BLOC ( condition = " Kind in ( 'Beta', ) ", +# BETA = BLOC ( condition = " Law in ( 'Beta', ) ", # # Settings = SIMP ( statut = "o", # typ = "TXM", @@ -414,7 +1350,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", - EXPONENTIAL = BLOC ( condition = " Kind in ( 'Exponential', ) ", + EXPONENTIAL = BLOC ( condition = " Law in ( 'Exponential', ) ", Lambda = SIMP ( statut = "o", typ = "R", @@ -435,7 +1371,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", -# GAMMA = BLOC ( condition = " Kind in ( 'Gamma', ) ", +# GAMMA = BLOC ( condition = " Law in ( 'Gamma', ) ", # # Settings = SIMP ( statut = "o", # typ = "TXM", @@ -498,7 +1434,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # -# GEOMETRIC = BLOC ( condition = " Kind in ( 'Geometric', ) ", +# GEOMETRIC = BLOC ( condition = " Law in ( 'Geometric', ) ", # # P = SIMP ( statut = "o", # typ = "R", @@ -513,7 +1449,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # # -# GUMBEL = BLOC ( condition = " Kind in ( 'Gumbel', ) ", +# GUMBEL = BLOC ( condition = " Law in ( 'Gumbel', ) ", # # Settings = SIMP ( statut = "o", # typ = "TXM", @@ -567,7 +1503,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", - HISTOGRAM = BLOC ( condition = " Kind in ( 'Histogram', ) ", + HISTOGRAM = BLOC ( condition = " Law in ( 'Histogram', ) ", First = SIMP ( statut = "o", typ = "R", @@ -585,12 +1521,11 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", validators=VerifTypeTuple(('R','R')), ), - ), # Fin BLOC HISTOGRAM -# LAPLACE = BLOC ( condition = " Kind in ( 'Laplace', ) ", +# LAPLACE = BLOC ( condition = " Law in ( 'Laplace', ) ", # # Lambda = SIMP ( statut = "o", # typ = "R", @@ -609,7 +1544,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # ), # Fin BLOC LAPLACE # -# LOGNORMAL = BLOC ( condition = " Kind in ( 'LogNormal', ) ", +# LOGNORMAL = BLOC ( condition = " Law in ( 'LogNormal', ) ", # # Settings = SIMP ( statut = "o", # typ = "TXM", @@ -688,7 +1623,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # # -# LOGISTIC = BLOC ( condition = " Kind in ( 'Logistic', ) ", +# LOGISTIC = BLOC ( condition = " Law in ( 'Logistic', ) ", # # Alpha = SIMP ( statut = "o", # typ = "R", @@ -709,7 +1644,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # # -# MULTINOMIAL = BLOC ( condition = " Kind in ( 'MultiNomial', ) ", +# MULTINOMIAL = BLOC ( condition = " Law in ( 'MultiNomial', ) ", # # N = SIMP ( statut = "o", # typ = "I", @@ -730,7 +1665,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # ), # Fin BLOC MULTINOMIAL # # -# NONCENTRALSTUDENT = BLOC ( condition = " Kind in ( 'NonCentralStudent', ) ", +# NONCENTRALSTUDENT = BLOC ( condition = " Law in ( 'NonCentralStudent', ) ", # # Nu = SIMP ( statut = "o", # typ = "R", @@ -756,7 +1691,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # ), # Fin BLOC NONCENTRALSTUDENT - NORMAL = BLOC ( condition = " Kind in ( 'Normal', ) ", + NORMAL = BLOC ( condition = " Law in ( 'Normal', ) ", Mu = SIMP ( statut = "o", typ = "R", @@ -777,7 +1712,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # -# POISSON = BLOC ( condition = " Kind in ( 'Poisson', ) ", +# POISSON = BLOC ( condition = " Law in ( 'Poisson', ) ", # # Lambda = SIMP ( statut = "o", # typ = "R", @@ -791,7 +1726,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # # -# RAYLEIGH = BLOC ( condition = " Kind in ( 'Rayleigh', ) ", +# RAYLEIGH = BLOC ( condition = " Law in ( 'Rayleigh', ) ", # # Sigma = SIMP ( statut = "o", # typ = "R", @@ -808,7 +1743,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # ), # ), # Fin BLOC RAYLEIGH - PDF = BLOC ( condition = " Kind in ( 'PDF_from_file', ) ", + PDF = BLOC ( condition = " Law in ( 'PDF_from_file', ) ", FileName = SIMP ( statut = "o", typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), @@ -817,7 +1752,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", ), ), -# STUDENT = BLOC ( condition = " Kind in ( 'Student', ) ", +# STUDENT = BLOC ( condition = " Law in ( 'Student', ) ", # # Mu = SIMP ( statut = "o", # typ = "R", @@ -845,7 +1780,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # # -# TRIANGULAR = BLOC ( condition = " Kind in ( 'Triangular', ) ", +# TRIANGULAR = BLOC ( condition = " Law in ( 'Triangular', ) ", # # A = SIMP ( statut = "o", # typ = "R", @@ -872,7 +1807,7 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", # # - TRUNCATEDNORMAL = BLOC ( condition = " Kind in ( 'TruncatedNormal', ) ", + TRUNCATEDNORMAL = BLOC ( condition = " Law in ( 'TruncatedNormal', ) ", MuN = SIMP ( statut = "o", typ = "R", @@ -906,8 +1841,17 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", ), # Fin BLOC TRUNCATEDNORMAL + TimeSeries = BLOC ( condition = " Law in ( 'TimeSeries_from_file', ) ", + + FileName = SIMP ( statut = "o", + typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',), + fr = "Fichier CSV d'une serie temporelle", + ang = "CSV file of a time series", + ), + ), + - UNIFORM = BLOC ( condition = " Kind in ( 'Uniform', ) ", + UNIFORM = BLOC ( condition = " Law in ( 'Uniform', ) ", A = SIMP ( statut = "o", typ = "R", @@ -926,20 +1870,22 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", ), # Fin BLOC UNIFORM + USERDEFINED = BLOC ( condition = " Law in ( 'UserDefined', ) ", - USERDEFINED = BLOC ( condition = " Kind in ( 'UserDefined', ) ", - - # Il faut definir une collection de couples ( x,p ) - Fichier = SIMP ( statut = 'o', - typ =( 'Fichier', 'CSV (*.csv);;All Files (*)',), - - ), - - ), # Fin BLOC USERDEFINED + # Il faut definir une collection de couples ( x,p ) + Values = SIMP ( statut = 'o', + typ = Tuple(2), + max = '**', + fr = "Liste de couples : (valeur, probabilite)", + ang = "List of pairs : (value, probability)", + validators=VerifTypeTuple(('R','R')), + defaut=((0,0.0),(1,1.0)), + ), + ), # Fin BLOC USERDEFINED - WEIBULL = BLOC ( condition = " Kind in ( 'Weibull', ) ", + WEIBULL = BLOC ( condition = " Law in ( 'Weibull', ) ", Settings = SIMP ( statut = "o", typ = "TXM", @@ -999,62 +1945,23 @@ DISTRIBUTION = OPER ( nom = "DISTRIBUTION", ), # Fin BLOC WEIBULL + + + ), #fin du bloc transformer + + ) +Classement_Commandes_Ds_Arbre=('DIRECTORY', 'DISTRIBUTION', 'CORRELATION',) +Ordre_Des_Commandes = ( 'DIRECTORY', 'PSSE_PARAMETERS', 'SIMULATION', 'DISTRIBUTION', 'CORRELATION', + 'N_1_GENERATORS', 'N_1_LINES', 'N_1_TRANSFORMERS', 'N_1_LOADS',) -#================================ -# Definition du modele physique -#================================ -CORRELATION = PROC ( nom = 'CORRELATION', - op = None, - docu = "", - fr = "Correlation entre variables", - ang = "Variable correlation", -#### Copula = SIMP ( statut = "o", -#### typ = 'TXM', -#### into = ( "Independent", "Normal" ), -#### defaut = "Independent", -#### fr = "Type de la copule", -#### ang = "Copula kind", -#### ), -## -## # Matrix = BLOC ( condition = "Copula in ( 'Normal', )", -## - CorrelationMatrix = SIMP ( statut = "o", - typ = Matrice(nbLigs=None, - nbCols=None, - methodeCalculTaille='NbDeDistributions', - structure="symetrique"), - fr = "Matrice de correlation entre les variables d'entree", - ang = "Correlation matrix for input variables", - ), -## #), # Fin BLOC Matrix -## -## -) -DIRECTORY = MACRO ( nom = 'DIRECTORY', - op=None, - fr = "Chargement des generateurs et des charges", - ang = "Physical model wrapper load", - sd_prod = opsPSEN.INCLUDE, - op_init = opsPSEN.INCLUDE_context, - #sd_prod=None, - fichier_ini = 1, - - sav_file=SIMP(statut="o", typ = ('Fichier', 'Wrapper Files (*.sav);;All Files (*)',),), - results_folder=SIMP(statut="o",typ='Repertoire'), - #lines_file=SIMP(statut="o" ,typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), - #groups_file=SIMP(statut="o", typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), - #generationsystem_file=SIMP(statut="o" ,typ = ('Fichier', 'Wrapper Files (*.csv);;All Files (*)',),), - PSSE_path=SIMP(statut="o",typ='Repertoire'), -) -Classement_Commandes_Ds_Arbre=('DIRECTORY','DISTRIBUTION','CORRELATION') diff --git a/PSEN_Eficas/opsPSEN.py b/PSEN_Eficas/opsPSEN.py index 1d859343..1e641cfd 100755 --- a/PSEN_Eficas/opsPSEN.py +++ b/PSEN_Eficas/opsPSEN.py @@ -26,6 +26,7 @@ def INCLUDE(self,PSSE_path,sav_file,**args): Fonction sd_prod pour la macro INCLUDE """ + if sav_file==None: return reevalue=0 if hasattr(self,'fichier_ini'): reevalue=1 diff --git a/UiQT4/Tuple2.ui b/UiQT4/Tuple2.ui index 3bf7199d..fb7c2ab6 100644 --- a/UiQT4/Tuple2.ui +++ b/UiQT4/Tuple2.ui @@ -6,10 +6,16 @@ 0 0 - 539 - 35 + 482 + 34 + + + 0 + 0 + + Form @@ -39,7 +45,7 @@ - + 0 0 @@ -62,6 +68,9 @@ border:0px; + + + false @@ -77,7 +86,7 @@ border:0px; - + 0 0 @@ -115,9 +124,12 @@ border:0px; Qt::Horizontal + + QSizePolicy::Preferred + - 123 + 5 20 diff --git a/UiQT4/desWidgetPlusieursTuple.ui b/UiQT4/desWidgetPlusieursTuple.ui index 38d1e84f..1b75a651 100644 --- a/UiQT4/desWidgetPlusieursTuple.ui +++ b/UiQT4/desWidgetPlusieursTuple.ui @@ -7,7 +7,7 @@ 0 0 966 - 251 + 281 @@ -29,100 +29,95 @@ 0 - + 0 - - 1 - - - 0 - - - 5 - - - - 0 - + - + 0 - - QLayout::SetFixedSize - - + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + - Qt::Horizontal - - - QSizePolicy::Fixed + Qt::Vertical - 21 - 20 + 20 + 5 - - - - - 21 - 25 - - - - - 21 - 25 - - - - Qt::ClickFocus - - - Affiche le rapport de validation du mot-clef - - - border : 0px - - - ... - - - - ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png - - - - 25 - 25 - - - - - - - - Qt::Vertical - - - - 20 - 5 - - - - @@ -160,306 +155,310 @@ - - - QFrame::NoFrame - - - - - - - 0 - 0 - - - - background : rgb(247,247,247) - - - QFrame::NoFrame - - - 1 - - - true - - - Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + + + QFrame::NoFrame + + + + + + + 0 + 0 + + + + background : rgb(247,247,247) + + + QFrame::NoFrame + + + 1 + + + true + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + + + 0 + 0 + 535 + 220 + + + + + 0 + 0 + + + + + 0 + + + 0 + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + + + + + QFrame::Box + + + + 0 - - - - 0 - 0 - 539 - 227 - - - - - 0 - 0 - - - + + 0 - - 0 + + QLayout::SetFixedSize - - - Qt::Vertical + + + + 21 + 31 + + + + + 21 + 31 + - + + Qt::ClickFocus + + + Remonte la ligne + + + border : 0px + + + ... + + + + + + + - 20 - 13 + 32 + 32 - + - - - QFrame::Box - - - - 0 - - - - - 0 - - - QLayout::SetFixedSize - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Remonte la ligne - - - border : 0px - - - ... - - - - - - - - - 32 - 32 - - - - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Descend la ligne - - - border : 0px - - - ... - - - - - - - - - 32 - 32 - - - - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - supprime une ligne - - - border : 0px - - - ... - - - - ../Editeur/icons/MoinsBleu2.png - - - - - 32 - 32 - - - - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Ajoute une ligne - - - border : 0px - - - ... - - - - ../Editeur/icons/PlusBleu.png../Editeur/icons/PlusBleu.png - - - - 32 - 32 - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 40 - 20 - - - - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Montre l'ensemble des valeurs - - - border : 0px - - - ... - - - - ../Editeur/icons/verre-loupe-icone-6087-64.png../Editeur/icons/verre-loupe-icone-6087-64.png - - - - 32 - 32 - - - - - + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Descend la ligne + + + border : 0px + + + ... + + + + + + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + supprime une ligne + + + border : 0px + + + ... + + + + ../Editeur/icons/MoinsBleu2.png + + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Ajoute une ligne + + + border : 0px + + + ... + + + + ../Editeur/icons/PlusBleu.png../Editeur/icons/PlusBleu.png + + + + 32 + 32 + + - - - - - + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Montre l'ensemble des valeurs + + + border : 0px + + + ... + + + + ../Editeur/icons/verre-loupe-icone-6087-64.png../Editeur/icons/verre-loupe-icone-6087-64.png + + + + 32 + 32 + + + + + + + + diff --git a/generator/generator_PSEN.py b/generator/generator_PSEN.py index 154a8634..d158fa53 100755 --- a/generator/generator_PSEN.py +++ b/generator/generator_PSEN.py @@ -56,10 +56,16 @@ class PSENGenerator(DicoImbriqueGenerator): def gener(self,obj,format='brut',config=None): print "je passe dans gener" - #self.MachineDico = obj.MachineDico - #self.LoadDico = obj.LoadDico - #self.LineDico = obj.LineDico - #self.TransfoDico = obj.TransfoDico + try : + self.MachineDico = obj.MachineDico + self.LoadDico = obj.LoadDico + self.LineDico = obj.LineDico + self.TransfoDico = obj.TransfoDico + except : + self.MachineDico = None + self.LoadDico = None + self.LineDico = None + self.TransfoDico = None self.initDico() # Cette instruction genere le contenu du fichier de commandes (persistance) @@ -73,11 +79,11 @@ class PSENGenerator(DicoImbriqueGenerator): def initDico(self) : DicoImbriqueGenerator.initDico(self) - #self.Entete = 'MachineDico = ' + str(self.MachineDico) +'\n' - #self.Entete += 'LoadDico = ' + str(self.LoadDico) +'\n' - #self.Entete += 'LineDico = ' + str(self.LineDico) +'\n' - #self.Entete += 'TransfoDico = ' + str(self.TransfoDico) +'\n' - #self.Entete +='\n' + self.Entete = 'MachineDico = ' + str(self.MachineDico) +'\n' + self.Entete += 'LoadDico = ' + str(self.LoadDico) +'\n' + self.Entete += 'LineDico = ' + str(self.LineDico) +'\n' + self.Entete += 'TransfoDico = ' + str(self.TransfoDico) +'\n' + self.Entete +='\n' #---------------------------------------------------------------------------------------- @@ -85,8 +91,10 @@ class PSENGenerator(DicoImbriqueGenerator): #---------------------------------------------------------------------------------------- def writeDefault(self,fn) : - DicoImbriqueGenerator.writeDefault(self,fn) - return + fileDico = "PSEN/PSENconfig.py" + f = open( str(fileDico), 'wb') + f.write( self.Entete + "Dico =" + str(self.Dico) ) + f.close() diff --git a/generator/generator_dicoImbrique.py b/generator/generator_dicoImbrique.py index fda9c0a6..a9d937eb 100644 --- a/generator/generator_dicoImbrique.py +++ b/generator/generator_dicoImbrique.py @@ -73,7 +73,6 @@ class DicoImbriqueGenerator(PythonGenerator): #---------------------------------------------------------------------------------------- def writeDefault(self,fn) : - print "je passe par writeDefault" fileDico = fn[:fn.rfind(".")] + '.py' f = open( str(fileDico), 'wb') f.write( self.Entete + "Dico =" + str(self.Dico) ) @@ -94,7 +93,21 @@ class DicoImbriqueGenerator(PythonGenerator): if not(self.Dico.has_key(nom)) : dicoCourant={} else : dicoCourant=self.Dico [nom] if hasattr(obj.valeur,'nom'):dicoCourant[liste[-1]]=obj.valeur.nom - else : dicoCourant[liste[-1]]=obj.valeurFormatee + else : + if type(obj.valeur) in (types.ListType,types.TupleType): + try : +#PNPNPN a remplacer par plus propre + if obj.definition.validators.typeDesTuples[0] !='R' : + val=[] + elt=[] + for tupleElt in obj.valeur : + elt=(str(tupleElt[0]),tupleElt[1]) + val.append(elt) + dicoCourant[liste[-1]]=val + else :dicoCourant[liste[-1]]=obj.valeur + except : + dicoCourant[liste[-1]]=obj.valeurFormatee + else :dicoCourant[liste[-1]]=obj.valeurFormatee self.Dico[nom]=dicoCourant return s -- 2.39.2