From: pascale.noyret Date: Fri, 16 Sep 2016 11:51:54 +0000 (+0200) Subject: semaine 37 X-Git-Tag: V8_1_0p0~13 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a184afca0f726bc9b90a7d3caa688c4632055b2b;p=modules%2Feficas.git semaine 37 --- diff --git a/Extensions/localisation.py b/Extensions/localisation.py index 7b6a19d4..0c0b6737 100644 --- a/Extensions/localisation.py +++ b/Extensions/localisation.py @@ -77,7 +77,7 @@ def localise(application, locale=None,file=None ): if locale=="ang" : locale="en" #print "eficas_" + locale, monPath if file != None : - print 'chagrement de ', file,monPath + #print 'chagrement de ', file,monPath print eficas_translator.load(file,monPath) print QApplication.installTranslator(eficas_translator) return @@ -85,9 +85,9 @@ def localise(application, locale=None,file=None ): if eficas_translator.load("eficas_" + locale, monPath): QApplication.installTranslator(eficas_translator) - print "chargement eficas_", locale, monPath else: print "Unable to load Eficas translator!" + diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index 97b46c0d..4f92bf84 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -96,6 +96,9 @@ class CONFIG_BASE: self.savedir = os.path.abspath('C:/') self.mode_nouv_commande='initial' self.affiche="alpha" + self.closeAutreCommande = False + self.closeFrameRechercheCommande = False + #-------------------------------------- def lecture_fichier_ini_standard(self): diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 95c543a7..43865d7a 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -94,6 +94,8 @@ class JDCEditor(Ui_baseWidget,QWidget): if self.code == 'PSEN_N1' : self.afficheListesPliees = False self.mode_nouv_commande=self.appliEficas.CONFIGURATION.mode_nouv_commande + self.closeAutreCommande=self.appliEficas.CONFIGURATION.closeAutreCommande + self.closeFrameRechercheCommande=self.appliEficas.CONFIGURATION.closeFrameRechercheCommande self.affiche=self.appliEficas.CONFIGURATION.affiche #if self.code in ['MAP','CARMELCND','PSEN'] : self.afficheCommandesPliees=False if self.code in ['MAP','CARMELCND'] : self.afficheCommandesPliees=False @@ -221,6 +223,7 @@ class JDCEditor(Ui_baseWidget,QWidget): self.tree = browser.JDCTree( jdc_item, self ) self.appliEficas.construitMenu() + ############# self.splitterSizes = [320,1320,320] self.splitter.setSizes(self.splitterSizes) @@ -582,6 +585,14 @@ class JDCEditor(Ui_baseWidget,QWidget): monRechercheDialg=DRecherche(parent=self,fl=0) monRechercheDialg.show() + + #--------------------------------# + def handleRechercherDsCatalogue(self): + #-----------------------------# + from monRechercheCatalogue import DRechercheCatalogue + monRechercheDialg=DRechercheCatalogue(self.QWParent,self) + monRechercheDialg.show() + #---------------------# def handleDeplier(self): #---------------------# @@ -836,8 +847,11 @@ class JDCEditor(Ui_baseWidget,QWidget): f.close() return 1 except IOError, why: - QMessageBox.critical(self, tr('Sauvegarde du Fichier'), + if (self.appliEficas.ssIhm == False): + QMessageBox.critical(self, tr('Sauvegarde du Fichier'), tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why)) + else : + print why return 0 #-----------------------------------------------------------# @@ -849,7 +863,7 @@ class JDCEditor(Ui_baseWidget,QWidget): # Le generateur existe on l'utilise self.generator=generator.plugins[format]() try : - jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.CONFIGURATION) + jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas) if pourRun : jdc_formate=self.generator.textePourRun except ValueError,e: QMessageBox.critical(self, tr("Erreur a la generation"),str(e)) diff --git a/InterfaceQT4/monRechercheCatalogue.py b/InterfaceQT4/monRechercheCatalogue.py new file mode 100644 index 00000000..ac115eb3 --- /dev/null +++ b/InterfaceQT4/monRechercheCatalogue.py @@ -0,0 +1,99 @@ +# -*- 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 +# +# Modules Python +# Modules Eficas + +from desRechercheCatalogue import Ui_desRechercheCatalogue +from determine import monEnvQT5 +if monEnvQT5: + from PyQt5.QtWidgets import QDialog, QCompleter + from PyQt5.QtCore import Qt +else : + from PyQt4.QtGui import * + from PyQt4.QtCore import * + +from Extensions.i18n import tr + +# Import des panels + +class DRechercheCatalogue (Ui_desRechercheCatalogue ,QDialog): + """ + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes + """ + def __init__(self,parent,editor ): + QDialog.__init__(self,parent) + #self.setModal(True) + self.setupUi(self) + self.editor=editor + self.CBRecherche.setEditable(True) + if monEnvQT5 : + self.LERecherche.returnPressed.connect(self.rechercheLE) + self.CBRecherche.lineEdit().returnPressed.connect(self.rechercheCB) + self.CBRecherche.currentIndexChanged.connect(self.rechercheCB) + else : + self.connect(self.LERecherche,SIGNAL("returnPressed()"),self.rechercheLE) + self.connect(self.CBRecherche.lineEdit(),SIGNAL("returnPressed()"),self.rechercheCB) + self.connect(self.CBRecherche,SIGNAL("currentIndexChanged(int)"),self.rechercheCB) + + self.initRecherche() + + def initRecherche(self): + listeChoix=self.editor.readercata.dicoInverse.keys() + self.CBRecherche.addItem("") + for choix in listeChoix: + self.CBRecherche.addItem(choix) + monCompleteur=QCompleter(listeChoix,self) + monCompleteur.setCompletionMode(QCompleter.PopupCompletion) + self.CBRecherche.setCompleter(monCompleteur) + + + def rechercheCB(self): + motAChercher=self.CBRecherche.lineEdit().text() + self.recherche(motAChercher) + + def rechercheLE(self): + motAChercher=self.LERecherche.text() + self.recherche(motAChercher) + + def recherche(self,motAChercher): + if str(motAChercher)=="" or str(motAChercher) == None : return + if str(motAChercher) not in self.editor.readercata.dicoInverse.keys():return + try : + #if 1 : + genea= self.editor.readercata.dicoInverse[str(motAChercher)] + print genea + listeGenea=[] + for t in genea : listeGenea.append(t[0]) + listeGenea.reverse() + texte='' + i=0 + for mc in listeGenea : + ligne = i*' '+str(mc) + ' / '+tr(str(mc))+'\n' + i=i+1 + texte += ligne + self.teGenea.setText(texte) + self.teDoc.setText(getattr(genea[0][1],self.editor.appliEficas.langue)) + + + except : + pass + diff --git a/ProcessOutputs_Eficas/PSEN_Cata_N1.py.ok b/ProcessOutputs_Eficas/PSEN_Cata_N1.py.ok new file mode 100644 index 00000000..f2598161 --- /dev/null +++ b/ProcessOutputs_Eficas/PSEN_Cata_N1.py.ok @@ -0,0 +1,250 @@ +# -*- 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 +# + +# -------------------------------------------------- +# debut entete +# -------------------------------------------------- + +#from Accas import ASSD, JDC_CATA, AU_MOINS_UN, PROC, SIMP, FACT, OPER, MACRO, BLOC, A_VALIDATOR +from Accas import * +import opsPSEN_N1 +# +# + +# import types +class Tuple: + def __init__(self,ntuple): + self.ntuple=ntuple + + def __convert__(self,valeur): + if type(valeur) == types.StringType: + return None + if len(valeur) != self.ntuple: + return None + return valeur + + def info(self): + return "Tuple de %s elements" % self.ntuple + + __repr__=info + __str__=info + +# class Matrice: +# def __init__(self,nbLigs=None,nbCols=None,methodeCalculTaille=None,formatSortie="ligne",valSup=None,valMin=None,structure=None): +# self.nbLigs=nbLigs +# self.nbCols=nbCols +# self.methodeCalculTaille=methodeCalculTaille +# self.formatSortie=formatSortie +# self.valSup=valSup +# self.valMin=valMin +# self.structure=structure +# +# def __convert__(self,valeur): +# # Attention ne verifie pas grand chose +# if type(valeur) != types.ListType : +# return None +# return valeur +# +# def info(self): +# return "Matrice %s x %s" % (self.nbLigs, self.nbCols) +# +# __repr__=info +# __str__=info + + +#CONTEXT.debug = 1 +JdC = JDC_CATA ( code = 'PSEN', + execmodul = None, + regles = ( AU_MOINS_UN ( 'CASE_SELECTION' ), + # AU_MOINS_UN ( 'DIRECTORY' ), + # AU_MOINS_UN ( 'DISTRIBUTION' ), + # AU_MOINS_UN ( 'SIMULATION' ), + # 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 + + +# -------------------------------------------------- +# fin entete +# -------------------------------------------------- +## TODO : RUN +CASE_SELECTION = MACRO ( nom = "CASE_SELECTION", + sd_prod = opsPSEN_N1.INCLUDE, + op_init = opsPSEN_N1.INCLUDE_context, + fichier_ini = 1, + op = None, + fr = "Sélectionnez les cas à analyser", + ang = 'Select the cases to analyze', + PSSE_path = SIMP(statut="o",typ='Repertoire',defaut='C:\Program Files (x86)\PTI\PSSE33\PSSBIN'), + output_folder = SIMP(statut="o", typ="Repertoire"), + + + BusesList = SIMP(statut = 'f', typ = 'R', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + LinesList = SIMP(statut = 'f', typ = 'R', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + TransformersList = SIMP(statut = 'f', typ = 'TXM', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + MaxDepth = SIMP(statut = 'o', typ = 'I', defaut = 5), + OutputNewCsv = SIMP ( statut = "o",typ=bool,defaut=False,), + ) +N_PROCESSING_OPTIONS = PROC ( nom = 'N_PROCESSING_OPTIONS', + op = None, + ang = "Select whether the program should be displaying data ablout the different categories. The values displayed will be the min, max, and mean of each item, plus a chart.", + Output_bus_values = SIMP(statut = 'o', typ = bool, defaut = True), + Output_lines_values = SIMP(statut = 'o', typ = bool, defaut = True), + Output_transformer_values = SIMP(statut = 'o', typ = bool, defaut = True), + Threshold_selection_for_the_treated_cases = FACT( + statut = 'f', + Branches = SIMP(statut="o",typ=Tuple(3),defaut=(0,0,0),validators=VerifTypeTuple(('R','R','R'),),), + Transformers = SIMP(statut="o",typ=Tuple(3),defaut=(0,0,0),validators=VerifTypeTuple(('R','R','R'),),), + High_voltage = SIMP(statut="o",typ=Tuple(3),defaut=(0,0,0),validators=VerifTypeTuple(('R','R','R'),),), + Low_voltage = SIMP(statut="o",typ=Tuple(3),defaut=(0,0,0),validators=VerifTypeTuple(('R','R','R'),),), + ), + ) + + +CONTINGENCY_OPTIONS = PROC (nom = 'CONTINGENCY_OPTIONS', + op = None, + + GeneralOptions = FACT(statut='o', + Vmin = SIMP(statut = 'o', typ = 'R', defaut = 0.9, val_min = 0), + Vmax = SIMP(statut = 'o', typ = 'R', defaut = 1.1, val_min = 0), + ContingencyRate = SIMP(statut = 'o', typ = 'TXM', defaut = 'a', into=['a', 'b']), + FlowLimitLines = SIMP(statut = 'o', typ = 'I', defaut = 120, val_min = 0), + FlowLimitTransformers = SIMP(statut = 'o', typ = 'I', defaut = 120, val_min = 0), + Tolerance = SIMP(statut = 'o', typ = 'R', defaut = 0.5, val_min = 0), + TripLines = SIMP(statut = 'o', typ = bool, defaut = True), + TripTransfos = SIMP(statut = 'o', typ = bool, defaut = True), + TripGenerators = SIMP(statut = 'o', typ = bool, defaut = True), + ), + + LoadFlowOptions = FACT(statut='o', + AdjustTaps = SIMP(statut = 'o', typ = 'TXM', into = ['0 - Lock', '1 - Stepping', '2 - Direct'], defaut = '1 - Stepping'), + AdjustDCtaps = SIMP(statut = 'o', typ = 'TXM', into = ['0 - Disable', '1 - Enable'], defaut = '1 - Enable'), + SolutionMethod = SIMP(statut = 'o', typ = 'TXM', into = ['0 - FDNS', '1 - FNSL', '2 - Optimized FDNS'], defaut = '1 - FNSL'), + AdjustSwitchedShunts = SIMP(statut = 'o', typ = 'TXM', into = ['0 - Disable', '1 - Enable', '2 - Enable continuous mode'], defaut = '1 - Enable'), + DispatchMode = SIMP(statut = 'o', typ = 'TXM', into = ['0 - Disable', '1 - Reserve', '2 - Pmax', '3 - Inertia', '4 - Droop'], defaut = '1 - Reserve'), + FlatStart = SIMP(statut = 'o', typ = bool, defaut = False), + VarLimits = SIMP(statut = 'o', typ = 'I', defaut = 99,ang = 'if set to -1, var limits will not be applied'), + ), + + OutputOptions = FACT(statut='o', + consigne1 = SIMP(statut='o',homo='information',typ = "TXM",defaut = 'Output PSSE multiple contingency report to Shell?'), + MultipleContingencyReport = SIMP(statut = 'o', typ = bool, defaut = True, ang = 'Output PSSE multiple contingency report to Shell?'), + consigne2 = SIMP(statut='o',homo='information',typ = "TXM",defaut = 'Write an Excel file for the results of each case file?'), + WriteIndivExcels = SIMP(statut = 'o', typ = bool, defaut = True), + consigne3 = SIMP(statut='o',homo='information',typ = "TXM",defaut = 'Add a tab in Excel results file for the differences between the max flow rate (MVAR) and the actual flow rate in lines and transformers?'), + WriteFlowDifs = SIMP(statut = 'o', typ = bool, defaut = True), + ), + ) + + + + +CONTINGENCY_SELECTION = PROC(nom='CONTINGENCY_SELECTION',op = None, + SelectionMethod = SIMP(statut='o',typ='TXM',into=['CaseSelectionFromFile','SelectAllCases','SelectWorstCases'], + ), + + b_file = BLOC(condition="SelectionMethod=='CaseSelectionFromFile'", + CaseSelectionFromFiles = FACT( + statut = 'o', + regles=(AU_MOINS_UN('branch_cases','transformer_cases','high_voltage_cases','low_voltage_cases',),), + branch_cases = SIMP(statut='o', defaut='', typ = ('Fichier', 'CSV file (*.csv);;All Files (*)','Sauvegarde'),), + transformer_cases = SIMP(statut='o', defaut='', typ = ('Fichier', 'CSV file (*.csv);;All Files (*)','Sauvegarde',),), + high_voltage_cases = SIMP(statut='o', defaut='', typ = ('Fichier', 'CSV file (*.csv);;All Files (*)','Sauvegarde'),), + low_voltage_cases = SIMP(statut='o', defaut='', typ = ('Fichier', 'CSV file (*.csv);;All Files (*)','Sauvegarde'),), + ), + +# CaseSelectionFromFile = FACT( +# statut = 'o', +# input_path = SIMP(statut="o",typ='Repertoire'), +# branch_cases = SIMP(statut='o', typ='TXM'), +# transformer_cases = SIMP(statut='o', typ='TXM'), +# high_cases = SIMP(statut='o', typ='TXM'), +# low_cases = SIMP(statut='o', typ='TXM'), +# ), + + ), + +# b_all = BLOC(condition="SelectionMethod=='SelectAllCases'", +# SelectAllCases = FACT( +# statut='o', +# all_cases = SIMP(statut='o', typ=bool, defaut = True), +# ), +# ), + + b_worst = BLOC(condition="SelectionMethod=='SelectWorstCases'", + SelectWorstCases = FACT( + regles = (UN_PARMI('AvgBranchLoad', 'AvgBranchLoadPercent'), UN_PARMI('AvgTransformerLoad', 'AvgTransformerLoadPercent'), UN_PARMI('AvgHighVoltage', 'AvgHighVoltagePercent'), UN_PARMI('AvgLowVoltage', 'AvgLowVoltagePercent'),), + statut = 'o', + consigne = SIMP(statut='o',homo='information',typ = "TXM",defaut = 'Choose at least one of the potential selection criteria from the SelectWorstCases list on the right.'), + AvgBranchLoad = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0), + AvgBranchLoadPercent = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0, val_max = 100), + AvgTransformerLoad = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0), + AvgTransformerLoadPercent = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0, val_max = 100), + AvgHighVoltage = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0), + AvgHighVoltagePercent = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0, val_max = 100), + AvgLowVoltage = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0), + AvgLowVoltagePercent = SIMP(statut = 'f', typ = 'I', defaut = 0, val_min = 0, val_max = 100), + ), + ), + + + Automatic_N_2_Selection = FACT(statut='f', + + BusesList = SIMP(statut = 'o', typ = 'R', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + LinesList = SIMP(statut = 'o', typ = 'R', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + TransformersList = SIMP(statut = 'o', typ = 'TXM', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + ), + + MultipleContingencyList = FACT (statut='f', + max="**", + ComponentList=SIMP(statut='o', typ = 'TXM', max='**', homo = 'SansOrdreNiDoublon',), + ), + + ) + +CONTINGENCY_PROCESSING = MACRO ( nom = 'CONTINGENCY_PROCESSING', + sd_prod = opsPSEN_N1.PROCESS, + op_init = opsPSEN_N1.PROCESS_context, + + #sd_prod=None, + + op = None, + fichier_ini = 1, + fr = "", + ang="", + XLS_file = SIMP(statut="o", typ = ('Fichier', 'XLS file (*.xls);;All Files (*)',),), + TabList = SIMP(statut = 'f', typ = 'TXM', min = 0, max = '**', homo = 'SansOrdreNiDoublon'), + +# b_highVoltage = BLOC(condition="'High Voltage 0' in TabList", +# HighVoltageBuses = SIMP(statut = 'o', typ = 'TXM', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), +# HighVoltageContingencies = SIMP(statut = 'o', typ = 'TXM', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), +# ), + + ) + +Ordre_Des_Commandes = ('CASE_SELECTION' , 'N_PROCESSING_OPTIONS' , 'CONTINGENCY_OPTIONS' , 'CONTINGENCY_SELECTION',) diff --git a/ProcessOutputs_Eficas/qtEficas_PSEN_N1.py b/ProcessOutputs_Eficas/qtEficas_PSEN_N1.py new file mode 100755 index 00000000..77173360 --- /dev/null +++ b/ProcessOutputs_Eficas/qtEficas_PSEN_N1.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2012 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 sert a lancer EFICAS configure pour Code_Aster +""" +# Modules Python +# Modules Eficas + +import sys,os +#sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) +import prefs +name='prefs_'+prefs.code +__import__(name) + +#acceder scripts de Lucie +path1 = os.path.abspath(os.path.join(os.path.abspath(__file__),'TreatOutputs')) +path1 = 'C:\\Logiciels DER\\PSEN_V15\\Code\\ProcessOutputs_Eficas\TreatOutputs' +sys.path.append(path1) + + +from InterfaceQT4 import eficas_go +eficas_go.lance_eficas(code=prefs.code) diff --git a/SPECA/SPECA_Cata_V1.py b/SPECA/SPECA_Cata_V1.py index ffc96af9..72771cf5 100644 --- a/SPECA/SPECA_Cata_V1.py +++ b/SPECA/SPECA_Cata_V1.py @@ -31,7 +31,7 @@ class Tuple: # #CONTEXT.debug = 1 - +VERSION_CATALOGUE="2.0.0"; JdC = JDC_CATA ( code = 'SPECA', execmodul = None, @@ -47,8 +47,11 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', fr = "Specification des analyses", TYPE_ANALYSE = SIMP(statut='o', typ='TXM',into=('STATIQUE', 'MODALE', 'HARMONIQUE', 'TRANSITOIRE', 'TRANSITOIRE_ACCIDENTEL','SYNTHESE')), # pour V1.1 flexion uniquement - TYPE_COMPORTEMENT = SIMP(statut='o', typ='TXM',into=('FLEXION'),defaut='FLEXION',fr="Renseignement du type de comportement voulu"), - + TYPE_COMPORTEMENT = BLOC(condition = "TYPE_ANALYSE in ('MODALE','HARMONIQUE','STATIQUE','TRANSITOIRE','TRANSITOIRE_ACCIDENTEL','SYNTHESE')", + FLEXION = SIMP(statut='o',typ='TXM',into=('OUI',),defaut='OUI',fr="Inclure la flexion ?"), + TORSION = SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='NON',fr="Inclure la torsion ?"), + COMPRESSION = SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='NON',fr="Inclure la compression ?"), + ), ### ----- CALCUL STATIQUE ----- ## ANALYSE_STATIQUE = BLOC(condition = "TYPE_ANALYSE == 'STATIQUE' ", @@ -121,6 +124,7 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', FREQ = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence centrale (Hz)"), NMAX_FREQ = SIMP(statut='o',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre maximal de frequence"), ), # fin CENTRE + METHODE=SIMP(statut='f',typ='TXM',min=1,max=1,into=('QZ','SORENSEN'),defaut='SORENSEN',fr="Choix de la méthode de résolution"), POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Choix du type de post-traitement", TYPE = SIMP(statut='o',typ='TXM',defaut=None,into=('TABLEAU_PARAM_MODAUX','DIAG_CAMPBELL'),), @@ -236,6 +240,7 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', ### ----- CALCUL TRANSITOIRE ----- ## ANALYSE_TRANSISTOIRE = BLOC(condition = "TYPE_ANALYSE == 'TRANSITOIRE' ",fr="Analyse transitoire", + POIDS = SIMP(statut='o',typ='TXM',into=('OUI','NON'),defaut='OUI',fr="Choix d'application d'un poids"), VITESSE = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,into=('CONSTANTE','VARIABLE'),fr="Renseignement du type de vitesse de rotation"), BASE_C = BLOC(condition ="VITESSE == 'CONSTANTE'", BASE_CALCUL = SIMP(statut='o',typ='TXM',into=('PHYSIQUE','MODALE'),defaut=None,fr="Choix de la base du calcul transitoire"), @@ -338,6 +343,8 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', MAGNITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la magnitude de la charge balourd (en kg.m)"), FONC_APPLI = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la fonction appliquee de la charge balourd (autant de valeurs que de vitesses de rotation)"), PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge balourd (en degres)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseigner l'instant pour déclencher le balourd"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseigner le temps pour la montée jusqu'à la valeur finale du balourd"), ),# fin BALOURD FORCE = BLOC(condition = "CHARGES == 'FORCE' ",fr="Application d'une force", PARAM_FORCE = FACT(statut='o',min=1,max='**',fr="Parametres de la force", @@ -390,6 +397,7 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', LIST_INST = BLOC(condition = "PARAM_TEMPS == 'LISTE'",fr="Renseignement d'une liste de pas", LISTE = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement d'une liste de pas"), ), # fin LIST_INST + PAS_ARCHIVAGE = SIMP(statut='o',typ='I',max=1,defaut=None,fr="Renseignement du pas d'archivage",), SCHEMA_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('NEWMARK','EULER','WILSON','ADAPT_ORDRE1','ADAPT_ORDRE2','DIFF_CENTRE'),defaut='NEWMARK',fr="Choix d'un schema temporel"), NEWMARK = BLOC(condition = "SCHEMA_TEMPS == 'NEWMARK' ",fr="Choix de la methode de NEWMARK", BETA = SIMP(statut='f',typ='R',max=1,defaut=0.25,fr="Renseignement de la valeur beta pour la methode de NEWMARK"), @@ -437,6 +445,7 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', ### ----- CALCUL COUPLE CODE_ASTER/EYDOS ----- ## ANALYSE_TRANSITOIRE_ACCIDENTEL = BLOC(condition = "TYPE_ANALYSE == 'TRANSITOIRE_ACCIDENTEL' ",fr="Analyse transitoire accidentelle", #BASE_MODALE = FACT(statut='o', fr="Choix des parametres de la base modale", + POIDS = SIMP(statut='o',typ='TXM',into=('OUI','NON'),defaut='OUI',fr="Choix d'application d'un poids"), BASE_MODALE = BLOC(condition = "True", fr="Choix des parametres de la base modale", regles=UN_PARMI('NB_MODES','FREQ_MAX'), NB_MODES = SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de mode"), @@ -460,6 +469,8 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', MAGNITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la magnitude de la charge balourd (en kg.m)"), FONC_APPLI = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la fonction appliquee de la charge balourd (autant de valeurs que de vitesses de rotation)"), PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge balourd (en degres)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseigner l'instant pour déclencher le balourd"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseigner le temps pour la montée jusqu'à la valeur finale du balourd"), ),# fin BALOURD # a commenter # 20121018 retrait de defaut_fn a la demande de EDF @@ -502,6 +513,8 @@ SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', #LISTE = SIMP(statut='f',typ='R',min=1,max='**',defaut=None,fr="Renseignement d'une liste de pas"), #), # fin LIST_INST PAS_ARCHIVAGE = SIMP(statut='o',typ='I',max=1,defaut=None,fr="Renseignement du pas d'archivage",), + PARA_MEM = SIMP(statut='f',typ='I',max=1,defaut=6400,fr="Renseigner la taille de la memoire en Mo",), + PARA_CPU = SIMP(statut='f',typ='I',max=1,defaut=10000,fr="Renseigner le temps CPU max en secondes",), SCHEMA_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('EULER','ADAPT_ORDRE1','ADAPT_ORDRE2'),defaut='ADAPT_ORDRE2',fr="Choix d'un schema temporel"), ## POST_TRAITEMENTS de l'analyse transitoire diff --git a/SPECA/SPECA_Cata_V2016.py b/SPECA/SPECA_Cata_V2016.py new file mode 100644 index 00000000..fddaecb4 --- /dev/null +++ b/SPECA/SPECA_Cata_V2016.py @@ -0,0 +1,415 @@ +## -*- coding: utf-8 -*- +# +## -------------------------------------------------- +## debut entete +## -------------------------------------------------- +# +from Accas import * + + +# rend disponible le type tuple (liste) +import types +class Tuple: + def __init__(self,ntuple): + self.ntuple=ntuple + + def __convert__(self,valeur): + if type(valeur) == types.StringType: + return None + if len(valeur) != self.ntuple: + return None + return valeur + + def info(self): + return "Tuple de %s elements" % self.ntuple + + __repr__=info + __str__=info + + + +# +#CONTEXT.debug = 1 + +VERSION_CATALOGUE="2016.0.0"; + +JdC = JDC_CATA ( code = 'SPECA', + execmodul = None, + regles=(AU_MOINS_UN('SPECIFICATION_ANALYSE',), + AU_PLUS_UN('SPECIFICATION_ANALYSE',), + ), + )# Fin JDC_CATA + +## ----- SPECIFICATION DE L'ETUDE ----- ## +SPECIFICATION_ANALYSE= MACRO (nom = 'SPECIFICATION_ANALYSE', + op = None, + UIinfo = {"groupes":("Machine tournante",)}, + fr = "Specification des analyses", + TYPE_ANALYSE = SIMP(statut='o', typ='TXM',into=('STATIQUE', 'MODALE', 'HARMONIQUE', 'TRANSITOIRE', 'TRANSITOIRE_ACCIDENTEL','SYNTHESE')), + # pour V1.1 flexion uniquement + #TYPE_COMPORTEMENT = SIMP(statut='o', typ='TXM',into=('FLEXION',),defaut='FLEXION',fr="Renseignement du type de comportement voulu"), + TYPE_COMPORTEMENT = BLOC(condition = "TYPE_ANALYSE in ('MODALE','HARMONIQUE','STATIQUE','TRANSITOIRE','TRANSITOIRE_ACCIDENTEL')", + FLEXION = SIMP(statut='o',typ='TXM',into=('OUI',),defaut='OUI',fr="Prise en compte la flexion de la ligne d'arbres: obligatoire"), + TORSION = SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='NON',fr="Choix de la prise en compte la torsion de la ligne d'arbres"), + COMPRESSION = SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='NON',fr="Choix de la prise en compte la traction/compression de la ligne d'arbres"), + ), + + SURCHARGE=BLOC(condition = "TYPE_ANALYSE in ('MODALE','HARMONIQUE','STATIQUE','TRANSITOIRE','TRANSITOIRE_ACCIDENTEL','SYNTHESE')",statut="f", + TEMPLATE=SIMP( statut="f", + typ=("Fichier","Fichier Template (*.tpl)"), + min=1,max=1, + fr="Utiliser un template d'analyse modifie" + ), + PARAMETRES= FACT(statut='f',min=1,max='**',fr="Definition et renseignement des parametres utilises dans le template surcharge", + CLE=SIMP(statut='o',typ='TXM',defaut=None,fr="Nom du parametre dans le template"), + TYPE=SIMP(statut='o',typ='TXM',into=('ENTIER','REEL','CHAINE','FICHIER','REPERTOIRE'),fr="Nature du parametre a renseigner"), + ENTIER=BLOC(condition="TYPE=='ENTIER'", + VALUE=SIMP(statut='o',typ='I',defaut=0,fr="Renseignement d'un nombre entier"), + ), + REEL=BLOC(condition="TYPE=='REEL'", + VALUE=SIMP(statut='o',typ='R',defaut=0.0,fr="Renseignement d'un nombre reel"), + ), + CHAINE=BLOC(condition="TYPE=='CHAINE'", + VALUE=SIMP(statut='o',typ='TXM',defaut='',fr="Renseignement d'une chaine de caracteres"), + ), + FICHIER=BLOC(condition="TYPE=='FICHIER'", + VALUE=SIMP(statut='o',typ=("Fichier","All files (*.*)"),fr="Renseignement d'un fichier") + ), + REPERTOIRE =BLOC(condition="TYPE=='REPERTOIRE'", + VALUE=SIMP(statut='o',typ="Repertoire",fr="Renseignement d'un repertoire") + ), + + ), + ), + + + +### ----- CALCUL STATIQUE ----- ## + ANALYSE_STATIQUE = BLOC(condition = "TYPE_ANALYSE == 'STATIQUE' ",fr="Analyse statique (vitesse de rotation nulle de la ligne d'arbres)", + CHARGES= FACT(statut='o',min=1,max='**',fr="Definition et renseignement du chargement applique", + TYPE = SIMP(statut='o',typ='TXM',into=('POIDS','FORCE','MOMENT','DELIGNAGE'),defaut=None,min=1,max=1,fr="Choix du type de chargement a appliquer"), + POIDS = BLOC(condition = "TYPE == 'POIDS' ",fr="Prise en compte du champ de pesanteur", + GRAVITE = SIMP(statut='o',typ='R',defaut=9.81,fr="Renseignement de l'intensite de la gravite (m/s^2)"), + DIRECTION = SIMP(statut='o',typ='R',min=3,max=3,defaut=(1,0,0),fr="Renseignement de la direction de la force de gravite"), + ), # fin POIDS + FORCE = BLOC(condition = "TYPE == 'FORCE' ",fr="Application d'une force ponctuelle", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique la force (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant la force (N)"), + #FONC_APPLI = SIMP(statut='f',typ='R',min=2,max=2,defaut=None,fr="Renseignement de la fonction appliquee"), + ), # fin FORCE + MOMENT = BLOC(condition = "TYPE == 'MOMENT' ",fr="Application d'un moment ponctuel", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique le moment (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant le moment (N/m)"), + ), # fin MOMENT + DELIGNAGE = BLOC(condition = "TYPE == 'DELIGNAGE' ",fr="Application d'un delignage sur un ou plusieurs paliers", + NOM_PALIER = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,fr="Renseignement du nom du palier deligne"), + DX = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du delignage suivant X du palier (m)"), + DY = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du delignage suivant Y du palier (m)"), + ), # fin Delignage + ), #fin CHARGES + + # POST-TRAITEMENTS DU CALCUL STATIQUE + POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Definition et renseignement des post-traitements", + CONTRAINTES = SIMP(statut='o',typ='TXM',into=('OUI', 'NON'),defaut='NON',fr="Export des contraintes en tout noeud de la ligne d'arbres"), + ), #fin POST_TRAITEMENTS + ),# fin ANALYSE_STATIQUE + +### ----- CALCUL MODALE ----- ## + ANALYSE_MODALE = BLOC(condition = "TYPE_ANALYSE == 'MODALE' ",fr="Analyse modale de la ligne d'arbres", + BASE_CALCUL = SIMP(statut='o',typ="TXM",into=('MODALE','PHYSIQUE'),defaut=None,fr="Choix du type de resolution de l'analyse modale (sur base physique ou sur base modale)"), + BASE_MODALE = BLOC(condition="BASE_CALCUL=='MODALE'",fr="Resolution sur base modale", + regles=UN_PARMI('NB_MODES','FREQ_MAX'), + NB_MODES=SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de modes constituant la base de projection"), + FREQ_MAX=SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence maximale des modes constituant la base de projection (Hz)"), + ), # fin BASE_MODALE + AMORTISSEMENT = SIMP(statut='o',typ='TXM',min=1,max=1,into=('OUI','NON'),defaut='OUI',fr="Choix de la prise en compte de l'amortissment"), + GYROSCOPIE = SIMP(statut='o',typ='TXM',min=1,max=1,into=('OUI','NON'),defaut='OUI',fr="Choix de la prise en compte de la gyroscopie"), + VITESSE_ROTATION = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la liste des vitesses de rotation etudiees (tr/min)"), + OPTION_CALCUL = SIMP(statut='o',typ='TXM',min=1,max=1,into=('PLUS_PETITE','CENTRE'),defaut=None,fr="Choix de l'option de calcul"), + PLUS_PETITE = BLOC(condition="OPTION_CALCUL=='PLUS_PETITE'",fr="Calcul des n premieres frequences", + NMAX_FREQ = SIMP(statut='o',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre maximal de frequences a calculer"), + ), # fin PLUS_PETITE + CENTRE = BLOC(condition="OPTION_CALCUL=='CENTRE'",fr="Calcul d'un nombre n de frequences autour d'une frequence donnee", + FREQ = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence centrale (Hz)"), + NMAX_FREQ = SIMP(statut='o',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre maximal de frequences"), + ), # fin CENTRE + METHODE=SIMP(statut='f',typ='TXM',min=1,max=1,into=('QZ','SORENSEN'),defaut='SORENSEN',fr="Choix de la methode de resolution"), + + # POST-TRAITEMENTS DU CALCUL MODAL + POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Definition et renseignement des post-traitements", + TYPE = SIMP(statut='o',typ='TXM',into=('AUCUN','DIAG_CAMPBELL'), defaut = 'AUCUN'), + DIAG_CAMPBELL = BLOC(condition="TYPE == 'DIAG_CAMPBELL'",fr="Choix des options du diagramme de Campbell", + PRECESSION = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,into=('SOMME','PLUS_GRANDE_ORBITE'),fr="Critere de determination de la precession"), + SUIVI= SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,into=('SANS_TRI','TRI_PREC','TRI_FORM_MOD'),fr="Methode de suivi des modes"), + NB_MODES = SIMP(statut='o',typ='I',min=1,max=1,defaut=None,fr="Nombre de modes affiches dans le diagramme, doit etre inferieur au nombre de modes calcules (NMAX_FREQ)"), + ), # fin DIAG_CAMPBELL + ),# fin POST_TRAITEMENTS + ), # fin ANALYSE_MODALE + +## ----- CALCUL HARMONIQUE ----- ## + ANALYSE_HARMONIQUE = BLOC(condition = "TYPE_ANALYSE == 'HARMONIQUE' ",fr="Analyse harmonique de la ligne d'arbres", + + ## specification calcul harmonique + BASE_CALCUL = SIMP(statut='o',typ='TXM',into=('PHYSIQUE','MODALE'),defaut=None,fr="Choix du type de resolution de l'analyse modale (sur base physique ou sur base modale)"), + BASE_MODALE = BLOC(condition = "BASE_CALCUL == 'MODALE' ", fr="Resolution sur base modale", + #MODALE = FACT(statut='o', + regles=UN_PARMI('NB_MODES','FREQ_MAX'), + NB_MODES = SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de modes constituant la base de projection"), + FREQ_MAX = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence maximale des modes constituant la base de projection (Hz)"), + #),# fin MODALE + ),# fin BASE_MODALE + AMORTISSEMENT_P = BLOC(condition = "BASE_CALCUL == 'PHYSIQUE' ", + AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('STRUCTUREL',),defaut='STRUCTUREL',fr="Choix du type d'amortissement"), + ), # fin AMORTISSEMENT_P + AMORTISSEMENT_M = BLOC(condition = "BASE_CALCUL == 'MODALE' ", + AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('REDUIT','STRUCTUREL'),defaut=None,fr="Choix du type d'amortissement"), + AMOR_MODAL = BLOC(condition = "AMORTISSEMENT == 'REDUIT' ", + #AMOR_REDUIT = SIMP(statut='o', typ='R', min=1, max=1,defaut=None,fr="Renseignement de l'amortissement modal reduit (en %)"), + AMOR_REDUIT = SIMP(statut='o', typ='R', min=1, max='**',defaut=None,fr="Renseignement de l'amortissement modal reduit (en %), la taille de la liste doit etre egale au nombre de modes constituant la base de projection"), + ),# fin AMOR_MODALE + ), # fin AMORTISSEMENT_M + VITESSE_ROTATION = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la liste des vitesses de rotation etudiees (tr/min)"), + # 20121018 retrait de defaut_fn a la demande de EDF + CHARGES= FACT(statut='o',min=1,max='**',fr="Definition et renseignement du chargement applique", + TYPE = SIMP(statut='o',typ='TXM',into=('BALOURD','HARMONIQUE'),defaut=None,min=1,max=1,fr="Choix du type de chargement a appliquer"), + BALOURD = BLOC(condition = "TYPE == 'BALOURD' ",fr="Chargement de type balourd", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique le balourd (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude du balourd (kg.m)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge balourd (degres)"), + ),# fin BALOURD + HARMONIQUE = BLOC(condition = "TYPE == 'HARMONIQUE' ",fr="Charge harmonique", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique la charge harmonique (m)"), + FREQUENCE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence d'excitation harmonique (Hz)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude de la charge harmonique, (N)"), + FONC_APPLI = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la liste de coefficients appliques sur la charge harmonique (autant que de vitesses de rotation)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge harmonique (degres)"), + TYPE_DDL = SIMP(statut='o',typ='TXM',min=1,max=1,into=('DX','DRX','DY','DRY','DZ','DRZ'),defaut=None,fr="Renseignement du DDL sur lequel s'applique la charge harmonique"), + ), # fin HARMONIQUE + ), #FIN CHARGES + + # POST-TRAITEMENTS DU CALCUL HARMONIQUE + POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Definition et renseignement des post-traitements", + CONTRAINTES = SIMP(statut='o',typ='TXM',into=('OUI', 'NON'),defaut='NON',fr="Export des contraintes en tout noeud de la ligne d'arbres"), + ), + ## fin POST_TRAITEMENTS + + ),# fin ANALYSE_HARMONIQUE + +### ----- CALCUL TRANSITOIRE ----- ## + ANALYSE_TRANSISTOIRE = BLOC(condition = "TYPE_ANALYSE == 'TRANSITOIRE' ",fr="Analyse transitoire de la ligne d'arbres", + + VITESSE = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,into=('CONSTANTE','VARIABLE'),fr="Renseignement du type de vitesse de rotation consideree"), + BASE_C = BLOC(condition ="VITESSE == 'CONSTANTE'",fr="Analyse transitoire a vitesse constante", + BASE_CALCUL = SIMP(statut='o',typ='TXM',into=('PHYSIQUE','MODALE'),defaut=None,fr="Choix du type de resolution de l'analyse transitoire (sur base physique ou sur base modale)"), + BASE_MODALE = BLOC(condition = "BASE_CALCUL == 'MODALE' ", fr="Resolution sur base modale", + regles=UN_PARMI('NB_MODES','FREQ_MAX'), + NB_MODES = SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de modes constituant la base de projection"), + FREQ_MAX = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence maximale des modes constituant la base de projection (Hz)"), + ),# fin BASE_MODALE + AMORTISSEMENT_M = BLOC(condition = "BASE_CALCUL == 'MODALE' ", + AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('REDUIT','STRUCTUREL'),defaut=None,fr="Choix du type d'amortissement"), + AMOR_MODAL = BLOC(condition = "AMORTISSEMENT == 'REDUIT' ", + AMOR_REDUIT = SIMP(statut='o', typ='R', min=1, max='**',defaut=None,fr="Renseignement de l'amortissement modal reduit (en %), la taille de la liste doit etre egale au nombre de modes constituant la base de projection"), + ),# fin AMOR_MODALE + ), # fin AMORTISSEMENT_M + ), # fin BASE_C + BASE_V = BLOC(condition ="VITESSE == 'VARIABLE'",fr="Analyse transitoire a vitesse variable", + BASE_CALCUL = SIMP(statut='o',typ='TXM',into=('MODALE',),defaut='MODALE',fr="Choix du type de resolution de l'analyse transitoire (obligatoirement sur base modale)"), + BASE_MODALE = BLOC(condition = "BASE_CALCUL == 'MODALE' ", fr="Resolution sur base modale", + regles=UN_PARMI('NB_MODES','FREQ_MAX'), + NB_MODES = SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de modes constituant la base de projection"), + FREQ_MAX = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence maximale des modes constituant la base de projection (Hz)"), + ),# fin BASE_MODALE + AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('REDUIT','STRUCTUREL'),defaut=None,fr="Choix du type d'amortissement"), + AMOR_MODAL = BLOC(condition = "AMORTISSEMENT == 'REDUIT' ", + #AMOR_REDUIT = SIMP(statut='o', typ='R', min=1, max=1,defaut=None,fr="Renseignement de l'amortissement modal reduit (en %)"), + AMOR_REDUIT = SIMP(statut='o', typ='R', min=1, max='**',defaut=None,fr="Renseignement de l'amortissement modal reduit (en %), la taille de la liste doit etre egale au nombre de modes constituant la base de projection"), + ),# fin AMOR_MODALE + ), # fin BASE_C + VITESSE_CONSTANTE = BLOC(condition = "VITESSE == 'CONSTANTE' ", fr="Vitesse de rotation constante", + VITESSE_ROTATION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation (tr/min)"), + ),# fin VITESSE_CONSTANTE + VITESSE_VARIABLE = BLOC(condition = "VITESSE == 'VARIABLE' ", fr="Vitesse de rotation variable", regles=UN_PARMI('LINEAIRE','EXPONENTIELLE','FORMULE'), + LINEAIRE = FACT(statut='f',min=1,max=1,fr="Variation lineaire de la vitesse de rotation", + VITESSE_INITIALE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation initiale (tr/min)",), + VITESSE_FINALE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation finale (tr/min)",), + DEPHASAGE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la postion angulaire initiale (degres)"), + PAS_MAJ = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement du pas de mise a jour des matrices des paliers (tr/min)"), + ),# fin LINEAIRE + EXPONENTIELLE = FACT(statut='f',min=1,max=1,fr="Variation exponentielle de la vitesse de rotation", + VITESSE_INITIALE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation initiale (tr/min)",), + VITESSE_FINALE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation finale (tr/min)",), + DEPHASAGE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la postion angulaire initiale (degres)"), + LAMBDA = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du parametre de la loi exponentielle (Hz)"), + PAS_MAJ = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement du pas de mise a jour des matrices des paliers (tr/min)"), + ),# fin EXPONENTIELLE + FORMULE = FACT(statut='f',min=1,max=1,fr="Fonction personnalisee decrivant la variation de la vitesse de rotation", + FICHIER = SIMP(statut='o',typ=('Fichier','Formule vitesse rotation (*.*)'),min=1,max=1,defaut=None,fr="Renseignement du fichier contenant les fonctions de la vitesse de rotation"), + PHI = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,fr="Renseignement du nom de la formule de position angulaire (max 8 caractere)"), + OM = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,fr="Renseignement du nom de la formule de vitesse angulaire (max 8 caractere)"), + ACC = SIMP(statut='o',typ='TXM',min=1,max=1,defaut=None,fr="Renseignement du nom de la formule d'acceleration angulaire (max 8 caractere)"), + VITE_MOY = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la moyenne des vitesses balayees (tr/min)"), + PAS_MAJ = SIMP(statut='f',typ='R',min=1,max='**',defaut=None,fr="Renseignement du pas de mise a jour des matrices des paliers (tr/min)"), + ),# fin FORMULE + ),# fin VITESSE_VARIABLE + #POIDS = SIMP(statut='o',typ='TXM',into=('OUI','NON'),defaut='OUI',fr="Choix d'application d'un poids"), + + CHARGES= FACT(statut='o',min=1,max='**',fr="Definition et renseignement du chargement applique", + TYPE = SIMP(statut='o',typ='TXM',into=('POIDS','BALOURD','FORCE','MOMENT','HARMONIQUE'),defaut=None,min=1,max=1,fr="Choix du type de chargement a appliquer"), + BALOURD = BLOC(condition = "TYPE == 'BALOURD' ",fr="Chargement de type balourd", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique le balourd (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude du balourd (kg.m)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge balourd (degres)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du balourd (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre l'amplitude nominale du balourd (s)"), + ),# fin BALOURD + POIDS = BLOC(condition = "TYPE == 'POIDS' ",fr="Prise en compte du champ de pesanteur", + GRAVITE = SIMP(statut='o',typ='R',defaut=9.81,fr="Renseignement de l'intensite de la gravite (m/s^2)"), + DIRECTION = SIMP(statut='o',typ='R',min=3,max=3,defaut=(1,0,0),fr="Renseignement de la direction de la force de gravite"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du poids (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale du poids (s)"), + ), # fin POIDS + FORCE = BLOC(condition = "TYPE == 'FORCE' ",fr="Application d'une force ponctuelle", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique la force (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant la force (N)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition de la force (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale de la force (s)"), + #FONC_APPLI = SIMP(statut='f',typ='R',min=2,max=2,defaut=None,fr="Renseignement de la fonction appliquee"), + ), # fin FORCE + MOMENT = BLOC(condition = "TYPE == 'MOMENT' ",fr="Application d'un moment ponctuel", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique le moment (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant le moment (N/m)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du moment (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale du moment (s)"), + ), # fin MOMENT + HARMONIQUE = BLOC(condition = "TYPE == 'HARMONIQUE' ",fr="Charge harmonique", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique la charge harmonique (m)"), + FREQUENCE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence d'excitation harmonique (Hz)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude de la charge harmonique, (N)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition de la charge harmonique (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale de la charge harmonique (s)"), + #FONC_APPLI = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la fonction appliquee de la charge harmonique (autant de valeurs que de vitesses de rotation)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge harmonique (degres)"), + TYPE_DDL = SIMP(statut='o',typ='TXM',min=1,max=1,into=('DX','DRX','DY','DRY','DZ','DRZ'),defaut=None,fr="Renseignement du DDL sur lequel s'applique la charge harmonique"), + ), # fin HARMONIQUE + ), #fin CHARGES + + ETAT_INIT = FACT(statut='o',fr="Renseignement de l'etat initial du calcul", + #RESULTAT = SIMP(statut='o',typ=('sd_resultat'),max=1,defaut=None,fr="Choix de la structure de donnees resultat de code aster "), + RESULTAT = SIMP(statut='f',typ='TXM',max=1,defaut=None,fr="Choix de la structure de donnees de type 'resultat' de Code_Aster"), + INST_INIT = SIMP(statut='f',typ='R',max=1,defaut=0.0,fr="Renseignement de l'instant de la structure de donnees a partir duquel il faut lancer le calcul (s)"), + ), # fin ETAT_INIT + PARAM_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('PAS','LISTE'),defaut=None,fr="Choix du type de discretisation temporelle"), + #PAS = BLOC(condition = "VITESSE == 'VARIABLE'",fr="Renseignement des parametres des pas", + PAS = BLOC(condition = "PARAM_TEMPS == 'PAS'",fr="Renseignement de pas de temps", + TEMPS_PAS = SIMP(statut='o',typ='R',max=1,defaut=None,fr="Renseignement du pas de temps d'integration(en s)"), + INST_INI = SIMP(statut='f',typ='R',max=1,defaut=None,fr="Renseignement de l'instant initial du calcul (s)"), + INST_FIN = SIMP(statut='o',typ='R',max=1,defaut=None,fr="Renseignement de l'instant final du calcul (s)"), + ), # fin TEMPS_PAS + LIST_INST = BLOC(condition = "PARAM_TEMPS == 'LISTE'",fr="Renseignement d'une liste d'instants", + LISTE = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement d'une liste d'instants auxquels resoudre le calcul (s)"), + ), # fin LIST_INST + PAS_ARCHIVAGE = SIMP(statut='o',typ='I',max=1,defaut=1,fr="Renseignement du pas d'archivage des resultats (une sauvegarde tous les 'PAS_ARCHIVAGE' instants d'integration)",), + SCHEMA_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('NEWMARK','EULER','WILSON','ADAPT_ORDRE1','ADAPT_ORDRE2','DIFF_CENTRE'),defaut='NEWMARK',fr="Choix d'un schema d'integration temporelle"), + NEWMARK = BLOC(condition = "SCHEMA_TEMPS == 'NEWMARK' ",fr="Methode de NEWMARK", + BETA = SIMP(statut='f',typ='R',max=1,defaut=0.25,fr="Renseignement de la valeur beta pour la methode de NEWMARK"), + GAMMA = SIMP(statut='f',typ='R',max=1,defaut=0.25,fr="Renseignement de la valeur gamma pour la methode de NEWMARK"), + ),# fin NEWMARK + WILSON = BLOC(condition = "SCHEMA_TEMPS == 'WILSON' ",fr="Methode de WILSON", + THETA = SIMP(statut='f',typ='R',max=1,defaut=1.4,fr="Renseignement de la valeur theta pour la methode de WILSON"), + ), # fin WILSON + + # POST-TRAITEMENTS DU CALCUL TRANSITOIRE + POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Definition et renseignement des post-traitements", + CONTRAINTES = SIMP(statut='o',typ='TXM',into=('OUI', 'NON'),defaut='NON',fr="Export des contraintes en tout noeud de la ligne d'arbres"), + ), # fin POST_TRAITEMENTS + + ), # fin ANALYSE_TRANSISTOIRE + + +### ----- CALCUL COUPLE CODE_ASTER/EYDOS ----- ## + ANALYSE_TRANSITOIRE_ACCIDENTEL = BLOC(condition = "TYPE_ANALYSE == 'TRANSITOIRE_ACCIDENTEL' ",fr="Analyse transitoire accidentelle de la ligne d'arbres", + #BASE_MODALE = FACT(statut='o', fr="Choix des parametres de la base modale", + #POIDS = SIMP(statut='o',typ='TXM',into=('OUI','NON'),defaut='OUI',fr="Choix d'application d'un poids"), + BASE_MODALE = BLOC(condition = "True", fr="Resolution sur base modale", + regles=UN_PARMI('NB_MODES','FREQ_MAX'), + NB_MODES = SIMP(statut='f',typ='I',min=1,max=1,defaut=None,fr="Renseignement du nombre de modes constituant la base de projection"), + FREQ_MAX = SIMP(statut='f',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence maximale des modes constituant la base de projection (Hz)"), + ),# fin BASE_MODALE + # cft 20131217 suppression amortissement reduit + #AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('STRUCTUREL','REDUIT'),defaut=None,fr="Choix du type d'amortissement"), + AMORTISSEMENT = SIMP(statut='o', typ='TXM',into=('STRUCTUREL',),defaut='STRUCTUREL',fr="Choix du type d'amortissement"), + AMOR_REDUIT = BLOC(condition = "AMORTISSEMENT == 'REDUIT' ", + #LIST_AMOR = SIMP(statut='o', typ='R', min=1,max='**',defaut=None,fr="Renseignement de la liste des amortissements"), + LIST_AMOR = SIMP(statut='o', typ='R', min=1,max='**',defaut=None,fr="Renseignement de la liste des amortissements modaux reduits (en %), la taille de la liste doit etre egale au nombre de modes constituant la base de projection"), + ),# fin AMOR_REDUIT + VITESSE_ROTATION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la vitesse de rotation (tr/min)"), + + CHARGES= FACT(statut='o',min=1,max='**',fr="Definition et renseignement du chargement applique", + TYPE = SIMP(statut='o',typ='TXM',into=('POIDS','BALOURD','FORCE','MOMENT','HARMONIQUE'),defaut=None,min=1,max=1,fr="Choix du type de chargement a appliquer"), + BALOURD = BLOC(condition = "TYPE == 'BALOURD' ",fr="Chargement de type balourd", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique le balourd (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude du balourd (kg.m)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge balourd (degres)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du balourd (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre l'amplitude nominale du balourd (s)"), + ),# fin BALOURD + POIDS = BLOC(condition = "TYPE == 'POIDS' ",fr="Prise en compte du champ de pesanteur", + GRAVITE = SIMP(statut='o',typ='R',defaut=9.81,fr="Renseignement de l'intensite de la gravite (m/s^2)"), + DIRECTION = SIMP(statut='o',typ='R',min=3,max=3,defaut=(1,0,0),fr="Renseignement de la direction de la force de gravite"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du poids (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale du poids (s)"), + ), # fin POIDS + FORCE = BLOC(condition = "TYPE == 'FORCE' ",fr="Application d'une force ponctuelle", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique le moment (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant le moment (N/m)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition de la force (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale de la force (s)"), + #FONC_APPLI = SIMP(statut='f',typ='R',min=2,max=2,defaut=None,fr="Renseignement de la fonction appliquee"), + ), # fin FORCE + MOMENT = BLOC(condition = "TYPE == 'MOMENT' ",fr="Application d'un moment ponctuel", + POSITION = SIMP(statut='o',typ='R',defaut=None,fr="Renseignement de la position axiale ou s'applique le moment (m)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=3,max=3,defaut=None,fr="Renseignement des 3 composantes decrivant le moment (N/m)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition du moment (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale du moment (s)"), + ), # fin MOMENT + HARMONIQUE = BLOC(condition = "TYPE == 'HARMONIQUE' ",fr="Charge harmonique", + POSITION = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la position axiale ou s'applique la charge harmonique (m)"), + FREQUENCE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de la frequence d'excitation harmonique (Hz)"), + AMPLITUDE = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement de l'amplitude de la charge harmonique, (N)"), + INST_APPLI= SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement de l'instant d'apparition de la charge harmonique (s)"), + TEMPS_MONTEE=SIMP(statut='f',typ='R',min=1,max=1,defaut=0,fr="Renseignement du temps necessaire pour atteindre la valeur nominale de la charge harmonique (s)"), + #FONC_APPLI = SIMP(statut='o',typ='R',min=1,max='**',defaut=None,fr="Renseignement de la fonction appliquee de la charge harmonique (autant de valeurs que de vitesses de rotation)"), + PHASE_DEG = SIMP(statut='o',typ='R',min=1,max=1,defaut=None,fr="Renseignement du decalage de la phase de la charge harmonique (degres)"), + TYPE_DDL = SIMP(statut='o',typ='TXM',min=1,max=1,into=('DX','DRX','DY','DRY','DZ','DRZ'),defaut=None,fr="Renseignement du DDL sur lequel s'applique la charge harmonique"), + ), # fin HARMONIQUE + ), #fin CHARGES + ETAT_INIT = FACT(statut='o',fr="Renseignement de l'etat initial du calcul", + #RESULTAT = SIMP(statut='o',typ=('sd_resultat'),max=1,defaut=None,fr="Choix de la structure de donnees resultat de code aster "), + # 20121126 + #RESULTAT = SIMP(statut='o',typ='TXM',max=1,defaut=None,fr="Choix de la structure de donnees resultat de code aster "), + INST_INIT = SIMP(statut='f',typ='R',max=1,defaut=None,fr="Renseignement de l'instant initial a partir duquel il faut lancer le calcul (s)"), + ), # fin ETAT_INIT + #PARAM_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('PAS','LIST_INST'),defaut=None,fr="Choix du type de parametrage temporel"), + # 20121126 + PARAM_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('PAS',),defaut="PAS",fr="Choix du type de discretisation temporelle",), + PAS = BLOC(condition = "PARAM_TEMPS == 'PAS' ",fr="Renseignement de pas de temps", + PAS_ASTER = SIMP(statut='o',typ='R',max=1,defaut=None,fr="Renseignement du pas de temps d'integration Code_Aster (en s)",), + PAS_EDYOS = SIMP(statut='o',typ='R',max=1,defaut=None,fr="Renseignement du pas de temps d'integration Edyos (en s)",), + INST_FIN = SIMP(statut='o',typ='R',max=1,defaut=None,fr="Renseignement de l'instant final du calcul (en s)",), + ), # fin TEMPS_PAS + #LIST_INST = BLOC(condition = "PARAM_TEMPS == 'LIST_INST' ",fr="Renseignement d'une liste de pas", + #LISTE = SIMP(statut='f',typ='R',min=1,max='**',defaut=None,fr="Renseignement d'une liste de pas"), + #), # fin LIST_INST + PAS_ARCHIVAGE = SIMP(statut='o',typ='I',max=1,defaut=1,fr="Renseignement du pas d'archivage des resultats (une sauvegarde tous les 'PAS_ARCHIVAGE' instants d'integration)",), + PARA_MEM = SIMP(statut='f',typ='I',max=1,defaut=6400,fr="Renseigner la taille maximale de la memoire (Mo)",), + PARA_CPU = SIMP(statut='f',typ='I',max=1,defaut=10000,fr="Renseigner le temps CPU maximal (s)",), + SCHEMA_TEMPS = SIMP(statut='o',typ='TXM',max=1,into=('EULER','ADAPT_ORDRE1','ADAPT_ORDRE2'),defaut='ADAPT_ORDRE2',fr="Choix d'un schema d'integration temporelle"), + + # POST-TRAITEMENTS DU CALCUL TRANSITOIRE ACCIDENTEL + POST_TRAITEMENTS = FACT(statut='o',max='**',fr="Definition et renseignement des post-traitements", + CONTRAINTES = SIMP(statut='o',typ='TXM',into=('OUI', 'NON'),defaut='NON',fr="Export des contraintes en tout noeud de la ligne d'arbres"), + ), # fin POST_TRAITEMENTS + ), # fin ANALYSE_TRANSITOIRE_ACCIDENTEL + +)# fin SPECIFICATION_ANALYSE diff --git a/SPECA/prefs_SPECA.py b/SPECA/prefs_SPECA.py index 6deea70a..21b1e76c 100644 --- a/SPECA/prefs_SPECA.py +++ b/SPECA/prefs_SPECA.py @@ -34,5 +34,5 @@ encoding='iso-8859-1' # catalogues=( - ('SPECA','default',os.path.join(repIni,'SPECA_Cata_V1.py'),'python','python'), + ('SPECA','V2016',os.path.join(repIni,'SPECA_Cata_V2016.py'),'python','python'), ) diff --git a/SPECA/qtEficasSPECA.py b/SPECA/qtEficasSPECA.py new file mode 100755 index 00000000..e02b8c74 --- /dev/null +++ b/SPECA/qtEficasSPECA.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- 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 sert a lancer EFICAS configure pour MAP +""" +# Modules Python +# Modules Eficas +import prefs +name='prefs_'+prefs.code +__import__(name) + + +import sys,os +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) + +import prefs +from InterfaceQT4 import eficas_go +eficas_go.lance_eficas(code=prefs.code) diff --git a/UiQT4/desRechercheCatalogue.ui b/UiQT4/desRechercheCatalogue.ui new file mode 100644 index 00000000..89513834 --- /dev/null +++ b/UiQT4/desRechercheCatalogue.ui @@ -0,0 +1,104 @@ + + + desRechercheCatalogue + + + + 0 + 0 + 817 + 359 + + + + Rechercher dans le Catalogue + + + + + + + + + 105 + 0 + + + + + 105 + 22 + + + + Mot à charcher + + + + + + + + + + + 0 + 0 + + + + + 411 + 41 + + + + background:rgb(240,240,240) + + + + + + + + + Généalogie + + + + + + + + 419 + 91 + + + + + + + + + + Documentation + + + + + + + + 419 + 101 + + + + + + + + + + + diff --git a/UiQT4/eficas_en.ts b/UiQT4/eficas_en.ts index f89ee2a7..afe86d8a 100644 --- a/UiQT4/eficas_en.ts +++ b/UiQT4/eficas_en.ts @@ -3,48 +3,1916 @@ @default - Discretisations_En_Espace - Discretizations_In_Space + COEFFICIENT_TO_CALIBRATE_TIDAL_VELOCITIES + Coefficient to calibrate tidal velocities - Option_De_Supg - Supg_Option + BOTTOM_TOPOGRAPHY_FILE + Bottom topography file - Forme_De_La_Convection - Type_Of_Advection + NUMBER_OF_CORRECTIONS_OF_DISTRIBUTIVE_SCHEMES + Number of corrections of distributive schemes - Cote constante - Constant elevation + WATER_DENSITY + Water density - Cote Nulle - Zero elevation + VALUE_OF_ATMOSPHERIC_PRESSURE + Value of atmospheric pressure - Hauteur Nulle - Zero depth + LISTING_FOR_PRINTOUT_PERIOD + Listing for printout period - Hauteur constante - Constant depth + CONSERVATIVE_N_SCHEME + Conservative N-Scheme - Particulieres - Special + wave_celerity_(m/s) + Wave celerity (m/s) - Altimetrie satellite tpxo - Tpxo satellite altimetry + scalar_flowrate_of_fluid_(m2/s) + Scalar flowrate of fluid (m2/s) - Sequentiel - Sequential + constant_normal_profile + Constant normal profile - Parallele - Parallel + LAMBERT_4_CORSICA + Lambert 4 corsica + + + MERCATOR + Mercator + + + VELOCITY_DIFFUSIVITY + Velocity diffusivity + + + LINEARIZED_PROPAGATION + Linearized propagation + + + PRINTOUT_PERIOD_FOR_DROGUES + Printout period for drogues + + + BINARY_RESULTS_FILE_FORMAT + Binary results file format + + + COMPUTATION_CONTINUED + Computation continued + + + PARALLEL_PROCESSORS + Parallel processors + + + COEFFICIENT_FOR_DIFFUSION_OF_TRACERS + Coefficient for diffusion of tracers + + + LAMBERT_3_SOUTH + Lambert 3 south + + + DIAMETER_OF_ALGAE + Diameter of algae + + + FRICTION_DATA_FILE + Friction data file + + + Real_tide_(recommended_methodology) + Real tide (recommended methodology) + + + NAMES_OF_POINTS + Names of points + + + GIGARTINA_LEPTORHYNCHOS + Gigartina leptorhynchos + + + STOP_CRITERIA + Stop criteria + + + Roe_scheme + Roe scheme + + + FINITE_VOLUME_SCHEME + Finite volume scheme + + + IMPLICITATION_COEFFICIENT_OF_TRACERS + Implicitation coefficient of tracers + + + gradient_simple + Gradient simple + + + SPATIAL_PROJECTION_TYPE + Spatial projection type + + + PHYSICAL_CHARACTERISTICS_OF_THE_TSUNAMI + Physical characteristics of the tsunami + + + direct + Direct + + + zero + Zero + + + FRICTION_COEFFICIENT + Friction coefficient + + + BREACHES_DATA_FILE + Breaches data file + + + COEFFICIENT_1_FOR_LAW_OF_TRACERS_DEGRADATION + Coefficient 1 for law of tracers degradation + + + TREATMENT_OF_FLUXES_AT_THE_BOUNDARIES + Treatment of fluxes at the boundaries + + + GLOBAL_NUMBER_OF_THE_POINT_TO_CALIBRATE_HIGH_WATER + Global number of the point to calibrate high water + + + REFERENCE_FILE_FORMAT + Reference file format + + + conjugate_residual + Conjugate residual + + + BOTTOM_SURFACES_DELWAQ_FILE + Bottom surfaces DELWAQ file + + + N_SCHEME_FOR_TIDAL_FLATS + N-Scheme for tidal flats + + + NO_FRICTION + No friction + + + no_preconditioning_ + No preconditioning + + + CONTINUITY_CORRECTION + Continuity correction + + + F(T90)_LAW + F(T90) law + + + FREE_SURFACE_GRADIENT_COMPATIBILITY + Free surface gradient compatibility + + + gmres + GMRES + + + strong + Strong + + + 1/h_div_(_h_nu_grad(U) + 1/h div ( h nu grad(U) + + + SMAGORINSKI + Smagorinski + + + NAMES_OF_PRIVATE_VARIABLES + Names of private variables + + + NODES_DISTANCES_DELWAQ_FILE + Nodes distances DELWAQ file + + + SCHEME_OPTION_FOR_ADVECTION_OF_TRACERS + Scheme option for advection of tracers + + + MERCATOR_FOR_TELEMAC + Mercator for telemac + + + TIME_STEP_REDUCTION_FOR_K_EPSILON_MODEL + Time step reduction for K-Epsilon model + + + quasi_bubble + Quasi-bubble + + + NON_DIMENSIONAL_DISPERSION_COEFFICIENTS + Non-dimensional dispersion coefficients + + + classical_EBE + Classical ebe + + + IMPLICIT_NON_CONSERVATIVE_N_SCHEME + Implicit non conservative n scheme + + + GEOMETRY_FILE_FORMAT + Geometry file format + + + ORIGINAL_HOUR_OF_TIME + Original hour of time + + + DIFFUSIVITY_FOR_DELWAQ + Diffusivity for DELWAQ + + + Q(Z)_not_programmed + Q(Z) not programmed + + + DISSIPATION_COEFFICIENT_FOR_SECONDARY_CURRENTS + Dissipation coefficient for secondary currents + + + ALGAE_TRANSPORT_MODEL + Algae transport model + + + TOLERANCES_FOR_IDENTIFICATION + Tolerances for identification + + + WGS84_SOUTHERN_UTM + WGS84 southern utm + + + air_pressure_(Pa) + Air pressure (Pa) + + + No_model + No model + + + DELWAQ_PRINTOUT_PERIOD + DELWAQ printout period + + + DROGUES_FILE + Drogues file + + + MASS_LUMPING_FOR_WEAK_CHARACTERISTICS + Mass-lumping for weak characteristics + + + GRAVITY_ACCELERATION + Gravity acceleration + + + BINARY_DATABASE_2_FOR_TIDE + Binary database 2 for tide + + + 6_points + 6 points + + + TIME_RANGE_FOR_FOURIER_ANALYSIS + Time range for fourier analysis + + + EDGE_BASED_N_SCHEME + Edge-based N-Scheme + + + Priority_to_fluxes + Priority to fluxes + + + LAMBERT_1_NORTH + Lambert 1 north + + + velocity_proportional_to_square_root_of_depth + Velocity proportional to square root of depth + + + STRICKLER + Strickler + + + LAMBERT_2_EXTENDED + Lambert 2 extended + + + ELEMENTS_MASKED_BY_USER + Elements masked by user + + + NAMES_OF_TRACERS + Names of tracers + + + H_CLIPPING + H clipping + + + conjugate_residuals + Conjugate residuals + + + PARAMETER_ESTIMATION + Parameter estimation + + + CHECKING_THE_MESH + Checking the mesh + + + SOLVER_FOR_K_EPSILON_MODEL + Solver for K-Epsilon model + + + LIST_OF_FILES + List of files + + + Wave_equation + Wave equation + + + NAMES_OF_CLANDESTINE_VARIABLES + Names of clandestine variables + + + WAQTEL_STEERING_FILE + Waqtel steering file + + + MAXIMUM_NUMBER_OF_ITERATIONS_FOR_ADVECTION_SCHEMES + Maximum number of iterations for advection schemes + + + squared_conjugate_gradient + Squared conjugate gradient + + + LAW_OF_BOTTOM_FRICTION + Law of bottom friction + + + MATRIX_VECTOR_PRODUCT + Matrix-vector product + + + ACCURACY_FOR_DIFFUSION_OF_TRACERS + Accuracy for diffusion of tracers + + + cgstab + CGSTAB + + + MANNING + Manning + + + SCHEME_FOR_ADVECTION_OF_TRACERS + Scheme for advection of tracers + + + OPTION_FOR_THE_SOLVER_FOR_K_EPSILON_MODEL + Option for the solver for K-Epsilon model + + + conjugate_gradient_squared_stabilised_(cgstab) + Conjugate gradient squared stabilised (CGSTAB) + + + PELVETIOPSIS_LIMITATA + Pelvetiopsis limitata + + + LIKE_1_BUT_WITH_POROSITY_(DEFINA_METHOD) + Like 1 but with porosity (defina method) + + + FRICTION_DATA + Friction data + + + TUBES_DATA_FILE + Tubes data file + + + ZONES_FILE + Zones file + + + Mean_tide + Mean tide + + + DENSITY_EFFECTS + Density effects + + + THRESHOLD_DEPTH_FOR_RECEDING_PROCEDURE + Threshold depth for receding procedure + + + explicit + Explicit + + + DRY_ELEMENTS_FROZEN + Dry elements frozen + + + extrapolation + Extrapolation + + + conjugate_gradient_on_normal_equation + Conjugate gradient on normal equation + + + TREATMENT_OF_NEGATIVE_DEPTHS + Treatment of negative depths + + + STEERING_FILE + Steering file + + + ZONE_NUMBER_IN_GEOGRAPHIC_SYSTEM + Zone number in geographic system + + + DIFFUSION_OF_TRACERS + Diffusion of tracers + + + PREVIOUS_COMPUTATION_FILE + Previous computation file + + + DIAMETER_OF_ROUGHNESS_ELEMENTS + Diameter of roughness elements + + + friction_velocity + Friction velocity + + + NUMBER_OF_TIME_STEPS + Number of time steps + + + NEWMARK_TIME_INTEGRATION_COEFFICIENT + Newmark time integration coefficient + + + TOMAWAC_STEERING_FILE + TOMAWAC steering file + + + CONSTANT_VISCOSITY + Constant viscosity + + + INITIAL_DEPTH + Initial depth + + + WATER_QUALITY + Water quality + + + MAXIMUM_NUMBER_OF_ITERATIONS_FOR_DIFFUSION_OF_TRACERS + Maximum number of iterations for diffusion of tracers + + + ANGLAIS + Anglais + + + EQUATIONS_SOLVED_EVERYWHERE_WITH_CORRECTION_ON_TIDAL_FLATS + Equations solved everywhere with correction on tidal flats + + + LAW_OF_FRICTION_ON_LATERAL_BOUNDARIES + Law of friction on lateral boundaries + + + COUPLING_PERIOD_FOR_SISYPHE + Coupling period for sisyphe + + + NON_CONSERVATIVE_PSI_SCHEME + Non conservative PSI scheme + + + STAGE_DISCHARGE_CURVES_FILE + Stage-discharge curves file + + + INITIAL_CONDITIONS + Initial conditions + + + predictor_corrector + Predictor-corrector + + + LAMBERT + Lambert + + + OPTION_FOR_THE_DIFFUSION_OF_TRACERS + Option for the diffusion of tracers + + + ACCURACY_OF_EPSILON + Accuracy of epsilon + + + THRESHOLD_DEPTH_FOR_WIND + Threshold depth for wind + + + SOLVER_ACCURACY + Solver accuracy + + + TURBULENCE_MODEL_FOR_SOLID_BOUNDARIES + Turbulence model for solid boundaries + + + BOUNDARY_CONDITIONS_FILE + Boundary conditions file + + + VALIDATION + Validation + + + tracer + Tracer + + + TIDE_GENERATING_FORCE + Tide generating force + + + SUPG + SUPG + + + PRESCRIBED_FLOWRATES + Prescribed flowrates + + + Mean_spring_tide + Mean spring tide + + + BINARY_DATABASE_1_FOR_TIDE + Binary database 1 for tide + + + LAW_OF_TRACERS_DEGRADATION + Law of tracers degradation + + + SECTIONS_INPUT_FILE + Sections input file + + + MINIMUM_VALUE_OF_DEPTH + Minimum value of depth + + + No_tide + No tide + + + SPACING_OF_ROUGHNESS_ELEMENTS + Spacing of roughness elements + + + SCHEME_OPTION_FOR_ADVECTION_OF_K_EPSILON + Scheme option for advection of K-epsilon + + + LISTING_PRINTOUT_PERIOD + Listing printout period + + + COLEBROOK_WHITE + Colebrook-white + + + MINOR_CONSTITUENTS_INFERENCE + Minor constituents inference + + + CARTESIAN,_NOT_GEOREFERENCED + Cartesian, not georeferenced + + + No_Tsunami + No tsunami + + + drift_along_x_(m) + Drift along X (m) + + + UTM_ZONE,_E.G. + Utm zone, e.g. + + + CONSERVATIVE_PSI_SCHEME + Conservative PSI-Scheme + + + PREVIOUS_COMPUTATION_FILE_FORMAT + Previous computation file format + + + VALUES_OF_THE_TRACERS_AT_THE_SOURCES + Values of the tracers at the sources + + + linear + Linear + + + BINARY_RESULTS_FILE + Binary results file + + + diagonal + Diagonal + + + EXCHANGE_AREAS_DELWAQ_FILE + Exchange areas DELWAQ file + + + IMPLICITATION_FOR_DIFFUSION_OF_VELOCITY + Implicitation for diffusion of velocity + + + conjugate_gradient + Conjugate gradient + + + WGS84_NORTHERN_UTM + WGS84 northern utm + + + WEIRS_DATA_FILE + Weirs data file + + + IMPLICITATION_FOR_VELOCITY + Implicitation for velocity + + + DEFINITION_OF_ZONES + Definition of zones + + + MAXIMUM_NUMBER_OF_ITERATIONS_FOR_K_AND_EPSILON + Maximum number of iterations for K and Epsilon + + + MEAN_DEPTH_FOR_LINEARIZATION + Mean depth for linearization + + + 3_points + 3 points + + + wind_along_y_axis_(m/s) + Wind along Y axis (m/s) + + + div(_nu_grad(T)_) + Div( nu grad(t) ) + + + minimum_error + Minimum error + + + SCHEME_OPTION_FOR_ADVECTION_OF_VELOCITIES + Scheme option for advection of velocities + + + DESIRED_COURANT_NUMBER + Desired courant number + + + flowrate_along_x_axis_(m2/s) + Flowrate along X axis (m2/s) + + + SUPG_OPTION + SUPG option + + + 1/h_div_(_h_nu_grad(T) + 1/h div ( h nu grad(t) + + + crout + Crout + + + conjugate_gradient_squared + Conjugate gradient squared + + + STOP_IF_A_STEADY_STATE_IS_REACHED + Stop if a steady state is reached + + + DEFAULT_PARALLEL_EXECUTABLE + Default parallel executable + + + INFORMATION_ABOUT_SOLVER + Information about solver + + + K_EPSILON_MODEL + K-Epsilon model + + + AIR_PRESSURE + Air pressure + + + RESULTS_FILE + Results file + + + VERTICAL_FLUXES_DELWAQ_FILE + Vertical fluxes DELWAQ file + + + DELWAQ_STEERING_FILE + DELWAQ steering file + + + wind_along_x_axis_(m/s) + Wind along X axis (m/s) + + + Lagrange_interp. + Lagrange interp. + + + MASS_BALANCE + Mass-balance + + + turbulent_viscosity_(m2/s) + Turbulent viscosity (m2/s) + + + OPTION_FOR_TIDAL_BOUNDARY_CONDITIONS + Option for tidal boundary conditions + + + ADVECTION_OF_TRACERS + Advection of tracers + + + DIFFUSION_OF_VELOCITY + Diffusion of velocity + + + scalar_velocity_(m/s) + Scalar velocity (m/s) + + + COEFFICIENT_OF_WIND_INFLUENCE + Coefficient of wind influence + + + PRODUCTION_COEFFICIENT_FOR_SECONDARY_CURRENTS + Production coefficient for secondary currents + + + HLLC_scheme_order_1 + HLLC scheme order 1 + + + RESULTS_FILE_FORMAT + Results file format + + + COUPLING_PERIOD_FOR_TOMAWAC + Coupling period for TOMAWAC + + + NUMBER_OF_PRIVATE_ARRAYS + Number of private arrays + + + MAXIMUM_NUMBER_OF_FRICTION_DOMAINS + Maximum number of friction domains + + + DURATION + Duration + + + BINARY_DATA_FILE_2_FORMAT + Binary data file 2 format + + + HORIZONTAL_WITH_SAME_NUMBER_OF_NODES_UPSTREAM/DOWNSTREAM + Horizontal with same number of nodes upstream/downstream + + + OPTION_FOR_THE_DIFFUSION_OF_VELOCITIES + Option for the diffusion of velocities + + + MASS_LUMPING_ON_TRACERS + Mass-lumping on tracers + + + NORTH + North + + + RAIN_OR_EVAPORATION + Rain or evaporation + + + FRANCAIS + Francais + + + PARTITIONING_TOOL + Partitioning tool + + + FORMATTED_RESULTS_FILE + Formatted results file + + + VERTICAL_STRUCTURES + Vertical structures + + + OPTION_FOR_TSUNAMI_GENERATION + Option for tsunami generation + + + VARIABLE_TIME_STEP + Variable time-step + + + IRIDAEA_FLACCIDA_(CLOSE_TO_ULVA) + Iridaea flaccida (close to ulva) + + + PROPAGATION_OPTION + Propagation option + + + REFERENCE_FILE + Reference file + + + TIDAL_DATA_BASE + Tidal data base + + + INITIAL_ELEVATION + Initial elevation + + + average + Average + + + STOCHASTIC_DIFFUSION_MODEL + Stochastic diffusion model + + + FORTRAN_FILE + Fortran file + + + BREACH + Breach + + + Z(Q) + Z(Q) + + + NO_DEFAULT_VALUE + No default value + + + no_preconditioning + No preconditioning + + + TIME_STEP + Time step + + + rough + Rough + + + SALINITY_DELWAQ_FILE + Salinity DELWAQ file + + + IMPLICITATION_FOR_DEPTH + Implicitation for depth + + + NUMBER_OF_LAGRANGIAN_DRIFTS + Number of lagrangian drifts + + + TEMPERATURE_FOR_DELWAQ + Temperature for DELWAQ + + + GENERAL + General + + + SECONDARY_CURRENTS + Secondary currents + + + PRECONDITIONING + Preconditioning + + + MANNING_DEFAULT_VALUE_FOR_COLEBROOK_WHITE_LAW + Manning default value for colebrook-white law + + + ADVECTION_OF_H + Advection of H + + + DEBUGGER + Debugger + + + LATITUDE_OF_ORIGIN_POINT + Latitude of origin point + + + PRESCRIBED_TRACERS_VALUES + Prescribed tracers values + + + RECORD_NUMBER_FOR_RESTART + Record number for restart + + + turbulent_viscosity_of_k_epsilon_model_(m2/s) + Turbulent viscosity of K-epsilon model (m2/s) + + + LISTING_PRINTOUT + Listing printout + + + CORIOLIS_COEFFICIENT + Coriolis coefficient + + + TURBULENCE_MODEL + Turbulence model + + + NUMBER_OF_FIRST_TIME_STEP_FOR_LISTING_PRINTOUTS + Number of first time step for listing printouts + + + PRINTING_CUMULATED_FLOWRATES + Printing cumulated flowrates + + + OPTION_FOR_THE_TREATMENT_OF_TIDAL_FLATS + Option for the treatment of tidal flats + + + variable_in_time_and_space_given_by_formated_file + Variable in time and space given by formated file + + + CONTROL_SECTIONS + Control sections + + + SOLVER_FOR_DIFFUSION_OF_TRACERS + Solver for diffusion of tracers + + + SECTIONS_OUTPUT_FILE + Sections output file + + + NUMBER_OF_SUB_STEPS_OF_DISTRIBUTIVE_SCHEMES + Number of sub-steps of distributive schemes + + + UPWIND_COEFFICIENTS + Upwind coefficients + + + time_of_maximum_elevation + Time of maximum elevation + + + ALGAE_TYPE + Algae type + + + RAIN_OR_EVAPORATION_IN_MM_PER_DAY + Rain or evaporation in mm per day + + + FORMATTED_DATA_FILE_1 + Formatted data file 1 + + + FORMATTED_DATA_FILE_2 + Formatted data file 2 + + + C_U_PRECONDITIONING + C-U preconditioning + + + LIST_OF_POINTS + List of points + + + WGS84_LONGITUDE/LATITUDE_IN_REAL_DEGREES + WGS84 longitude/latitude in real degrees + + + MISCELLANEOUS_(LEGOS_NEA,_FES20XX,_PREVIMER...) + Miscellaneous (LEGOS-NEA, FES20XX, PREVIMER...) + + + conj_gradient + Conj gradient + + + weak + Weak + + + SCHEME_FOR_ADVECTION_OF_VELOCITIES + Scheme for advection of velocities + + + gmres_(see_option_for_the_solver_for_k_epsilon_model) + GMRES (see option for the solver for K-Epsilon model) + + + NO_ADVECTION + No advection + + + NUMBER_OF_FIRST_TIME_STEP_FOR_GRAPHIC_PRINTOUTS + Number of first time step for graphic printouts + + + DEPTH_IN_FRICTION_TERMS + Depth in friction terms + + + FOURIER_ANALYSIS_PERIODS + Fourier analysis periods + + + EQUATIONS + Equations + + + MAXIMUM_NUMBER_OF_ITERATIONS_FOR_IDENTIFICATION + Maximum number of iterations for identification + + + WIND + Wind + + + SPEED_AND_DIRECTION_OF_WIND + Speed and direction of wind + + + TYPE_OF_SOURCES + Type of sources + + + TITLE + Title + + + MASS_LUMPING_ON_H + Mass-lumping on H + + + NUMBER_OF_SUB_ITERATIONS_FOR_NON_LINEARITIES + Number of sub-iterations for non-linearities + + + PSI_SCHEME_OPTION + Psi scheme option + + + LIQUID_BOUNDARIES_FILE + Liquid boundaries file + + + VELOCITIES_OF_THE_SOURCES_ALONG_X + Velocities of the sources along X + + + VELOCITIES_OF_THE_SOURCES_ALONG_Y + Velocities of the sources along Y + + + CHARACTERISTICS + Characteristics + + + BOTTOM_SMOOTHINGS + Bottom smoothings + + + SALINITY_FOR_DELWAQ + Salinity for DELWAQ + + + OPTION_FOR_CHARACTERISTICS + Option for characteristics + + + MAXIMUM_NUMBER_OF_TRACERS + Maximum number of tracers + + + maximum_velocity + Maximum velocity + + + FREE_INTEGER_20 + Free integer 20 + + + ZERO + Zero + + + OPTION_FOR_WIND + Option for wind + + + BINARY_DATA_FILE_1 + Binary data file 1 + + + BINARY_DATA_FILE_2 + Binary data file 2 + + + free_surface_elevation_(m) + Free surface elevation (m) + + + PRESCRIBED_VELOCITIES + Prescribed velocities + + + water_depth_(m) + Water depth (m) + + + VELOCITY_DELWAQ_FILE + Velocity DELWAQ file + + + kinetic_order_2 + Kinetic order 2 + + + kinetic_order_1 + Kinetic order 1 + + + coupled + Coupled + + + LAMBERT_2_CENTER + Lambert 2 center + + + COMPATIBLE_COMPUTATION_OF_FLUXES + Compatible computation of fluxes + + + Astronomical_neap_tide + Astronomical neap tide + + + NUMBER_OF_TRACERS + Number of tracers + + + Dirac + Dirac + + + COUPLING_DIRECTORY + Coupling directory + + + DEFAULT_EXECUTABLE + Default executable + + + GEOMETRY_FILE + Geometry file + + + DICTIONARY + Dictionary + + + WAF_scheme_order_2 + WAF scheme order 2 + + + VARIABLES_FOR_GRAPHIC_PRINTOUTS + Variables for graphic printouts + + + INFORMATION_ABOUT_K_EPSILON_MODEL + Information about K-Epsilon model + + + OIL_SPILL_STEERING_FILE + Oil spill steering file + + + MAXIMUM_NUMBER_OF_BOUNDARIES + Maximum number of boundaries + + + DIFFUSIVITY_DELWAQ_FILE + Diffusivity DELWAQ file + + + Thompson_method_based_on_characteristics + Thompson method based on characteristics + + + DESCRIPTION_OF_LIBRARIES + Description of libraries + + + NUMBER_OF_WEIRS + Number of weirs + + + SPHERE + Sphere + + + Computed_with_c,u,v + Computed with C,U,V + + + Astronomical_tide + Astronomical tide + + + velocity_along_y_axis_(m/s) + Velocity along Y axis (m/s) + + + CULVERT_DATA_FILE + Culvert data file + + + bottom_elevation_(m) + Bottom elevation (m) + + + EXCHANGES_BETWEEN_NODES_DELWAQ_FILE + Exchanges between nodes DELWAQ file + + + SOLVER_OPTION_FOR_TRACERS_DIFFUSION + Solver option for tracers diffusion + + + INITIAL_VALUES_OF_TRACERS + Initial values of tracers + + + flowrate_along_y_axis_(m2/s) + Flowrate along Y axis (m2/s) + + + NUMBER_OF_TUBES + Number of tubes + + + LONGITUDE_OF_ORIGIN_POINT + Longitude of origin point + + + MAXIMUM_NUMBER_OF_ITERATIONS_FOR_SOLVER + Maximum number of iterations for solver + + + CORIOLIS + Coriolis + + + ADVECTION + Advection + + + Edge_based_storage + Edge-based storage + + + EXPLICIT_+_MURD_SCHEME_PSI + Explicit + murd scheme PSI + + + previous + Previous + + + ABSCISSAE_OF_SOURCES + Abscissae of sources + + + VECTOR_LENGTH + Vector length + + + GRAPHIC_PRINTOUT_PERIOD + Graphic printout period + + + COUPLING_WITH + Coupling with + + + CHEZY + CHEZY + + + variable_in_time_given_by_formated_file + Variable in time given by formated file + + + WATER_DISCHARGE_OF_SOURCES + Water discharge of sources + + + ADVECTION_OF_U_AND_V + Advection of U and V + + + Zokagoa_scheme_order_1 + Zokagoa scheme order 1 + + + DEFINED_BY_USER + Defined by user + + + LATITUDE_LONGITUDE + Latitude longitude + + + VOLUMES_DELWAQ_FILE + Volumes DELWAQ file + + + VELOCITY_FOR_DELWAQ + Velocity for DELWAQ + + + ROUGHNESS_COEFFICIENT_OF_BOUNDARIES + Roughness coefficient of boundaries + + + TPXO + TPXO + + + INITIAL_TIME_SET_TO_ZERO + Initial time set to zero + + + EXPLICIT_+_SUPG + Explicit + SUPG + + + INITIAL_GUESS_FOR_U + Initial guess for U + + + SCHEME_FOR_ADVECTION_OF_K_EPSILON + Scheme for advection of K-epsilon + + + NO_DEGRADATION + No degradation + + + TEMPERATURE_DELWAQ_FILE + Temperature DELWAQ file + + + Froude_number + Froude number + + + classical + Classical + + + nombre_de_courants_ + Nombre de courants + + + SOURCES_FILE + Sources file + + + LOG_LAW + Log law + + + CONTROL_OF_LIMITS + Control of limits + + + NUMBER_OF_GAUSS_POINTS_FOR_WEAK_CHARACTERISTICS + Number of Gauss points for weak characteristics + + + TYPE_OF_WEIRS + Type of weirs + + + THRESHOLD_FOR_NEGATIVE_DEPTHS + Threshold for negative depths + + + velocity_proportional_to_square_root_of_depth,_variant + Velocity proportional to square root of depth, variant + + + VELOCITY_PROFILES + Velocity profiles + + + LANGUAGE + Language + + + STAGE_DISCHARGE_CURVES + Stage-discharge curves + + + Courant_number_ + Courant number + + + COST_FUNCTION + Cost function + + + JMJ + JMJ + + + ORIGIN_COORDINATES + Origin coordinates + + + RECORD_NUMBER_IN_WAVE_FILE + Record number in wave file + + + tracer_1_etc. + Tracer 1 etc. + + + TYPE_OF_ADVECTION + Type of advection + + + WIND_VELOCITY_ALONG_X + Wind velocity along X + + + WIND_VELOCITY_ALONG_Y + Wind velocity along Y + + + MAXIMUM_NUMBER_OF_SOURCES + Maximum number of sources + + + HAALAND + HAALAND + + + div(_nu_grad(U)_) + Div( nu grad(U) ) + + + DISCRETIZATIONS_IN_SPACE + Discretizations in space + + + SISYPHE_STEERING_FILE + Sisyphe steering file + + + ADVECTION_OF_K_AND_EPSILON + Advection of K and epsilon + + + NUMBER_OF_CULVERTS + Number of culverts + + + RELEASE + Release + + + list_of_tests + List of tests + + + PRECONDITIONING_FOR_DIFFUSION_OF_TRACERS + Preconditioning for diffusion of tracers + + + EXPLICIT_LEO_POSTMA + Explicit Leo Postma + + + LOCAL_NUMBER_OF_THE_POINT_TO_CALIBRATE_HIGH_WATER + Local number of the point to calibrate high water + + + Tchamen_scheme_order_1 + Tchamen scheme order 1 + + + supplementary_variable_O + Supplementary variable o + + + WAVE_ENHANCED_FRICTION_FACTOR + Wave enhanced friction factor + + + ELDER + Elder + + + supplementary_variable_N + Supplementary variable n + + + gauss_seidel + Gauss-Seidel + + + TREATMENT_OF_THE_LINEAR_SYSTEM + Treatment of the linear system + + + VARIABLES_TO_BE_PRINTED + Variables to be printed + + + normal_velocity_given_in_ubor_in_the_conlim_file + Normal velocity given in ubor in the conlim file + + + DENSITY_OF_ALGAE + Density of algae + + + NON_SUBMERGED_VEGETATION_FRICTION + Non-submerged vegetation friction + + + TIDAL_FLATS + Tidal flats + + + diagonal_and_crout + Diagonal and Crout + + + HARMONIC_CONSTANTS_FILE + Harmonic constants file + + + Priority_to_prescribed_values + Priority to prescribed values + + + BINARY_DATA_FILE_1_FORMAT + Binary data file 1 format + + + Normal + Normal + + + nodal + Nodal + + + PRESCRIBED_ELEVATIONS + Prescribed elevations + + + LIMIT_VALUES + Limit values + + + quadratic + Quadratic + + + ORDINATES_OF_SOURCES + Ordinates of sources + + + Real_tide_(methodology_before_2010) + Real tide (methodology before 2010) + + + NUMBER_OF_DROGUES + Number of drogues + + + maximum_elevation + Maximum elevation + + + dissipation_of_turbulent_energy_(W/kg) + Dissipation of turbulent energy (W/kg) + + + PROPAGATION + Propagation + + + constant_in_time_and_space + Constant in time and space + + + Mean_neap_tide + Mean neap tide + + + gmres_(see_option_for_the_solver_for_tracer_diffusion) + GMRES (see option for the solver for tracer diffusion) + + + SOLVER_OPTION + Solver option + + + MATRIX_STORAGE + Matrix storage + + + COEFFICIENT_TO_CALIBRATE_TIDAL_RANGE + Coefficient to calibrate tidal range + + + brownian_movement + Brownian movement + + + SOLVER + Solver + + + smooth + Smooth + + + turbulent_kinetic_energy_in_k_epsilon_model_(J/kg) + Turbulent kinetic energy in K-Epsilon model (W/kg) + + + NIKURADSE + Nikuradse + + + PRECONDITIONING_FOR_K_EPSILON_MODEL + Preconditioning for K-Epsilon model + + + drift_along_y_(m) + Drift along Y (m) + + + velocity_along_x_axis_(m/s) + Velocity along X axis (m/s) + + + LEO_POSTMA_FOR_TIDAL_FLATS + Leo Postma for tidal flats + + + block_diagonal_(4_9_matrices) + Block-diagonal (4-9 matrices) + + + Computed_with_h,u,v + Computed with H,U,V + + + ACCURACY_OF_K + Accuracy of K + + + WATER_QUALITY_PROCESS + Water quality process + + + OPTION_FOR_LIQUID_BOUNDARIES + Option for liquid boundaries + + + COEFFICIENT_TO_CALIBRATE_SEA_LEVEL + Coefficient to calibrate sea level + + + INITIAL_GUESS_FOR_H + Initial guess for H + + + SPHERICAL_COORDINATES + Spherical coordinates + + + no + No + + + THICKNESS_OF_ALGAE + Thickness of algae + + + MEAN_TEMPERATURE + Mean temperature + + + IDENTIFICATION_METHOD + Identification method + + + friction_coefficient + Friction coefficient + + + MASS_LUMPING_ON_VELOCITY + Mass-lumping on velocity + + + time_of_maximum_velocity + Time of maximum velocity + + + VALUES_OF_TRACERS_IN_THE_RAIN + Values of tracers in the rain + + + supplementary_variable_Z + Supplementary variable Z + + + supplementary_variable_R + Supplementary variable R + + + EXPLICIT_+_MURD_SCHEME_N + Explicit + murd Scheme N + + + conjugate_gradient_on_a_normal_equation + Conjugate gradient on a normal equation + + + WAVE_DRIVEN_CURRENTS + Wave driven currents + + + Tsunami_generated_on_the_basis_of_the_Okada_model_1992 + Tsunami generated on the basis of the Okada model 1992 + + + ASCII_DATABASE_FOR_TIDE + ASCII database for tide + + + OIL_SPILL_MODEL + Oil spill model + + + 1_point + 1 point + + + ORIGINAL_DATE_OF_TIME + Original date of time + + + GEOGRAPHIC_SYSTEM + Geographic system + + + TIDAL_MODEL_FILE + Tidal model file + + + absolute_value_of_diagonal + Absolute value of diagonal + + + u_and_v_given_in_the_conlim_file + U and V given in the conlim file diff --git a/UiQT4/makefile b/UiQT4/makefile index 53b66449..bbe1c168 100644 --- a/UiQT4/makefile +++ b/UiQT4/makefile @@ -4,7 +4,8 @@ QTRELEASE = lrelease-qt4 .SUFFIXES : .ui .py .ts .qm -PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCommandes.py desRecherche.py \ +PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCommandes.py \ + desRecherche.py desRechercheCatalogue.py \ desSelectVal.py desViewTexte.py desViewRegles.py desVisu.py desWidgetCreeParam.py desWidgetCommande.py \ desWidgetOptionnel.py desWidgetOptionnelMC.py Tuple2.py Tuple3.py \ desWidgetBloc.py desWidgetCB.py desWidgetCommentaire.py desWidgetDate.py \ diff --git a/UiQT5/desRechercheCatalogue.ui b/UiQT5/desRechercheCatalogue.ui new file mode 100644 index 00000000..2b67f658 --- /dev/null +++ b/UiQT5/desRechercheCatalogue.ui @@ -0,0 +1,107 @@ + + + desRechercheCatalogue + + + + 0 + 0 + 817 + 359 + + + + Rechercher dans le Catalogue + + + + + + + + + 105 + 0 + + + + + 105 + 22 + + + + Mot à charcher + + + + + + + + 0 + 0 + + + + + 411 + 41 + + + + background:rgb(240,240,240) + + + + + + + + + Généalogie + + + + + + + + 419 + 91 + + + + + + + + + + + + + Documentation + + + + + + + + 419 + 101 + + + + + + + + + + + + + + diff --git a/UiQT5/makefile b/UiQT5/makefile index b0964354..fdcf5e67 100644 --- a/UiQT5/makefile +++ b/UiQT5/makefile @@ -4,7 +4,8 @@ QTRELEASE = lrelease .SUFFIXES : .ui .py .ts .qm -PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCommandes.py desRecherche.py \ +PY_FILES = myMain.py desBaseWidget.py desChoixCata.py desChoixCode.py desChoixCommandes.py \ + desRecherche.py desRechercheCatalogue.py\ desSelectVal.py desViewTexte.py desViewRegles.py desVisu.py desWidgetCreeParam.py desWidgetCommande.py \ desWidgetOptionnel.py desWidgetOptionnelMC.py Tuple2.py Tuple3.py \ desWidgetBloc.py desWidgetCB.py desWidgetCommentaire.py desWidgetDate.py \ diff --git a/convert/convert_TELEMAC3.py b/convert/convert_TELEMAC3.py new file mode 100644 index 00000000..0aa96456 --- /dev/null +++ b/convert/convert_TELEMAC3.py @@ -0,0 +1,503 @@ +# 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 +# +import re, string +from Extensions.i18n import tr + + +from convert_python import PythonParser + +pattern_comment_slash = re.compile(r"^\s*/") +pattern_eta = re.compile(r".*&ETA.*") +pattern_fin = re.compile(r".*&FIN.*") +pattern_oui = re.compile(r"^\s*(oui|OUI|YES|yes|TRUE|VRAI)\s*$") +pattern_non = re.compile(r"^\s*(non|NON|NO|no|FALSE|FAUX)\*s$") +pattern_blanc = re.compile(r"^\s*$") +pattern_listeVide = re.compile(r"^\s*'\s*'\s*$") +pattern_tracers = re.compile(r"^\s*(NAMES OF TRACERS|NOMS DES TRACEURS).*") +pattern_commence_par_quote=re.compile(r'^\s*[\'"].*') + +pattern_ligne=re.compile(r'^\s*(?P[^=:]*)\s*[:=]\s*(?P.*)$') + +pattern_variables=re.compile (r"^\s*(?PVARIABLES POUR LES SORTIES GRAPHIQUES)\s*[:=]\s*(?P\w(,\w)*)\s*(?P.*)$") + +# Attention aux listes de flottants +pattern_liste=re.compile(r'^\s*(?P[+-.\w]+(\s*;\s*[+-.\w]+)+)\s*(?P.*)$') +pattern_liste_texte=re.compile(r"^\s*(?P('.*(';\s*))+('.*'\s*)?)(?P.*)$") +pattern_flottant=re.compile(r'^\s*(?P[+-]?((\d+(\.\d*)?)|(\.\d+))([dDeE][+-]?\d+)?)\s*(?P.*)$') +pattern_texteQuote = re.compile (r"^\s*(?P'[^']+(''[^']+)*')\s*(?P.*)$") +pattern_texteSimple = re.compile (r"(?P(^|\s)\s*[\w\.-]+)\s*(?P.*)$") +pattern_texteVide = re.compile (r"^\s*(?P'')\s*(?P.*)$") + +pattern_ContientDouble=re.compile (r"^.*''.*$") + +# le pattern texte reconnait +#nom1 nom 2 : ou = chaine entre ' +# avec eventuellement des quotes au milieu par exemple +# TITRE = 'TELEMAC 2D : GOUTTE D''EAU DANS UN BASSIN$' +# m.group("texte") va rendre 'TELEMAC 2D : GOUTTE D''EAU DANS UN BASSIN$' + + +#Si le code n est pas Telemac +try : +#if 1 : + from aideAuxConvertisseurs import ListeSupprimeCasToEficas + from enumDicoTelemac import TelemacdicoEn +except : + pass + +from Extensions import localisation + +from determine import monEnvQT5 + + + +def entryPoint(): + """ + Return a dictionary containing the description needed to load the plugin + """ + return { + 'name' : 'TELEMAC3', + 'factory' : TELEMACParser + } + +class TELEMACParser(PythonParser): + """ + This converter works like PythonParser, except that it also initializes all + model variables to None in order to avoid Python syntax errors when loading + a file with a different or inexistent definition of variables. + """ + + def convert(self, outformat, appli=None): + + + from Accas import A_BLOC, A_FACT, A_SIMP + self.dicoCasToCata=appli.readercata.dicoCasToCata + self.dicoInverse=appli.readercata.dicoInverse + self.dicoMC=appli.readercata.dicoMC + self.Ordre_Des_Commandes=appli.readercata.Ordre_Des_Commandes + + + text="" + self.dictSimp={} + + # Traitement des noms des tracers qui peuvent etre sur plusieurs lignes + l_lignes_texte = string.split(self.text,'\n') + l_lignes=[] + i=0 + while (i < len(l_lignes_texte)) : + ligne=l_lignes_texte[i] + i=i+1 + if not(pattern_tracers.match(ligne)): + l_lignes.append(ligne) + continue + while (i < len(l_lignes_texte)): + ligne_complementaire=l_lignes_texte[i] + if not(pattern_commence_par_quote.match(ligne_complementaire)) : + l_lignes.append(ligne) + break + else : + ligne=ligne +ligne_complementaire + i=i+1 + if i == len(l_lignes_texte): + l_lignes.append(ligne) + continue + + + for ligne in l_lignes : + if pattern_comment_slash.match(ligne) : continue + if pattern_eta.match(ligne) : continue + if pattern_fin.match(ligne) : continue + if pattern_blanc.match(ligne) : continue + + + finLigne=ligne + while finLigne != "" : + if pattern_comment_slash.match(finLigne) : finLigne=""; continue + valeur="" + if pattern_variables.match(finLigne) : + m=pattern_variables.match(finLigne) + valeur=m.group('valeur') + finLigne=m.group('reste') + self.dictSimp[simp]=valeur + continue + + m=pattern_ligne.match(finLigne) + if m == None : + #print "________________________________________________" + print 'pb avec ****', finLigne , '**** dans ', ligne + #print "________________________________________________" + break + + simpCas=self.traiteIdent(m.group('ident')) + if not simpCas : + finLigne=m.group('reste') + continue + + #print simpCas + finLigne=m.group('reste') + # attention, l ordre des if est important + if pattern_liste.match(finLigne) : + m=pattern_liste.match(finLigne) + elif pattern_liste_texte.match(finLigne) : + m=pattern_liste_texte.match(finLigne) + elif pattern_texteQuote.match(finLigne) : + m=pattern_texteQuote.match(finLigne) + elif pattern_flottant.match(finLigne) : + m=pattern_flottant.match(finLigne) + elif pattern_texteVide.match(finLigne): + m=pattern_texteVide.match(finLigne) + elif pattern_texteSimple.match(finLigne): + m=pattern_texteSimple.match(finLigne) + else : + #print "________________________________________________" + print 'pb avec ****', finLigne , '**** dans ', ligne + print "non match" + #print "________________________________________________" + break + + + valeur=m.group('valeur') + if pattern_blanc.match(valeur) : valeur=None + + if pattern_flottant.match(finLigne) : + valeur=re.sub("d","e",valeur) + valeur=re.sub("D","E",valeur) + + if pattern_liste.match(finLigne) or pattern_liste_texte.match(finLigne): + valeur=valeur.split(";") + + + finLigne=m.group('reste') + self.dictSimp[simpCas]=valeur + + if 'TITLE' not in self.dictSimp.keys() : + import os + self.dictSimp['TITLE']=os.path.basename(self.filename) + + dicoParMC={} + #for simp in self.dictSimp.keys(): + # if simp in TELEMACParser.__dict__.keys() : apply(TELEMACParser.__dict__[simp],(self,)) + + for simp in self.dictSimp.keys(): + if simp in ListeSupprimeCasToEficas: continue + if simp not in self.dicoInverse.keys() : + #print "************" + print "pb avec dans dicoInverse", simp,'------' + #print "************" + #print poum + continue + listeGenea=self.dicoInverse[simp] + listeGeneaReverse=[] + for (u,v) in listeGenea : + if isinstance(v,A_BLOC.BLOC): continue + listeGeneaReverse.append(u) + listeGeneaReverse.reverse() + dicoTravail=dicoParMC + i=0 + #print (listeGeneaReverse[0:-1]) + while i < len(listeGeneaReverse[0:-1]) : + mot=listeGeneaReverse[i] + i=i+1 + if mot not in dicoTravail.keys(): dicoTravail[mot]={} + dicoTravail=dicoTravail[mot] + dicoTravail[simp]=self.dictSimp[simp] + + self.textePy="" + #print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + #print dicoParMC + #print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" + listeMC=self.tri(dicoParMC.keys()) + for k in listeMC : + #print "----------- traitement de " , k + self.textePy += str(k )+ "(" + self.traiteMC(dicoParMC[k]) + self.textePy += ");\n" + #print "----------- " + + + + appli.listeTelemac=self.dictSimp.keys() + return self.textePy + + + #---------------------------------------- + def traiteIdent(self,ident): + # enleve les espaces de part et autre + # traduit du langage Telemac vers le langage Catalogue + #---------------------------------------- + while ident[-1] == " " or ident[-1] == '\t' : ident=ident[0:-1] + while ident[0] == " " or ident[0] == '\t' : ident=ident[1:] + try : identCata=self.dicoCasToCata[ident] + except : + print "---> ", "pb conversion type pour", ident + identCata=None + return identCata + + + def traiteMC(self,dico) : + from Accas import A_BLOC, A_FACT, A_SIMP + for k in dico.keys() : + valeur= dico[k] + if k not in self.dicoMC.keys() : kA=self.dicoFrancaisAnglais[k] + else : kA=k + obj=self.dicoMC[kA] + if isinstance(obj,A_FACT.FACT): self.convertFACT(obj,kA,valeur) + elif isinstance(obj,A_BLOC.BLOC): self.convertBLOC(obj,kA,valeur) + elif isinstance(obj,A_SIMP.SIMP): self.convertSIMP(obj,kA,valeur) + else : print "%%%%%%%%%%%\n", "pb conversion type pour", k, obj, "\n%%%%%%%%%%%" + + #print "_____________" + + def convertFACT(self,obj,nom,valeur): + #print "convertFACT", nom,valeur + #if nom in TELEMACParser.__dict__.keys() : + # apply(TELEMACParser.__dict__[nom],(self,)) + # return + self.textePy += nom + "=_F( " + self.traiteMC(valeur) + self.textePy += '),\n' + + + def convertBLOC(self,obj,nom,valeur): + print "BLOC " + print nom + + def convertSIMP(self,obj,nom,valeur): + #print obj,nom,valeur + #if nom in ("PRESCRIBED_FLOWRATES", "PRESCRIBED_VELOCITIES", "PRESCRIBED_ELEVATIONS" ): return + if obj.max==1 : + if hasattr(obj.type[0],'ntuple') : + lval=[] + for v in valeur : + try : v=eval(v,{}) + except : pass + lval.append(v) + self.textePy += nom + "=" + str(lval) +"," + return + if 'TXM' in obj.type : + + if pattern_ContientDouble.match(str(valeur)): + valeur=re.sub("''","\'\'",str(valeur)) + self.textePy += nom + "=" + str(valeur) +"," + return + valeur=str(valeur) + + # ceinture et bretelle si les re sont correctes -) + while valeur[-1] == " " or valeur[-1] == '\t' : valeur=valeur[0:-1] + while valeur[0] == " " or valeur[0] == '\t' : valeur=valeur[1:] + + + + # Pour les enum + try : valeur=eval(valeur,{}) + except : pass + + if nom in TelemacdicoEn.keys(): + try : + valeur=TelemacdicoEn[nom][valeur] + self.textePy += nom + "= '" + str(valeur) +"'," + return + except : pass + + + if obj.into != [] and obj.into != None and not('R' in obj.type) and not('I' in obj.type): + for possible in obj.into : + try : + if possible.upper() == valeur.upper(): + valeur=possible + break + v=valeur[0].upper()+valeur[1:].lower() + v2=tr(v) + if possible.upper() == v2.upper(): + valeur=possible + break + except: + print "pb avec le type de ", obj.nom, obj.type, 'et la valeur ', valeur + + if 'Fichier' in obj.type or 'TXM' in obj.type or 'Repertoire' in obj.type : + valeur=str(valeur) + while valeur[-1] == " " : valeur=valeur[0:-1] + while valeur[0] == " " : valeur=valeur[1:] + self.textePy += nom + "= '" + str(valeur) +"' ," + return + + if bool in obj.type : + if valeur == True : self.textePy += nom + "= True," + elif valeur == False : self.textePy += nom + "= False," + elif pattern_oui.match(valeur) : self.textePy += nom + "= True," + elif pattern_non.match(valeur) : self.textePy += nom + "= False," + else : self.textePy += nom + "= None," + return + self.textePy += nom + "=" + str(valeur) +"," + + else : + if valeur == () or valeur ==[] or pattern_listeVide.match(str(valeur)) : + self.textePy += nom + "= None," + return + + # les 4 lignes suivantes sont probablement inutiles + while valeur[-1] == " " or valeur[-1]=="'" : valeur=valeur[0:-1] + while valeur[0] == " " or valeur[-0]=="'" : valeur=valeur[1:] + if ";" in valeur : valeur=valeur.split(';') + elif "," in valeur : valeur=valeur.split(',') + + + if valeur == None : return + newVal=[] + for v in valeur : + try : v=eval(v,{}) + except : pass + if nom in TelemacdicoEn.keys(): + #print "est dans le dico des enum, valeurs multiples" + try : v=TelemacdicoEn[nom][v] + except : pass + newVal.append(v) + self.textePy += nom + "=" + str(newVal) +"," + + + + def tri(self, listeIn): + if len(listeIn) == 1 : return listeIn + if self.Ordre_Des_Commandes == None : return listeIn + #print listeIn + listeOut=[listeIn[0],] + for kF in listeIn[1:]: + k=str(self.dicoFrancaisAnglais[kF]) + ordreK=self.Ordre_Des_Commandes.index(k) + i=0 + while i < len(listeOut): + ordreI=self.Ordre_Des_Commandes.index(self.dicoFrancaisAnglais[listeOut[i]]) + if ordreK < ordreI : break + i=i+1 + listeOut.insert(i,kF) + return listeOut + + def PARALLEL_PROCESSORS(self): + #YOANN + if self.dictSimp["PARALLEL_PROCESSORS"] == 0 : del self.dictSimp["PARALLEL_PROCESSORS"] + #else : self.dictSimp["Parallel_Computation"]="Parallel" + + def decoupeListe(self,valeurs,label): + #print "decoupeListe" + #print valeurs + i=0 + for prefixe in ('_U_AND_V','_H'): + labelComplet=label+prefixe + valeur=valeurs[i] + try : valeur=eval(valeur,{}) + except : pass + if label in TelemacdicoEn.keys(): + try : valeur=TelemacdicoEn[label][valeur] + except : pass + self.dictSimp[labelComplet]=valeur + i=i+1 + if len(valeurs)==2 : return + #for prefixe in ('_K_AND_EPSILON','_TRACERS'): + for prefixe in ('_TRACERS','_K_AND_EPSILON','_TRACERS'): + labelComplet=label+prefixe + valeur=valeurs[i] + try : valeur=eval(valeur,{}) + except : pass + if label in TelemacdicoEn.keys(): + try : valeur=TelemacdicoEn[label][valeur] + except : pass + self.dictSimp[labelComplet]=valeur + i=i+1 + + def SUPG_OPTION(self): + return + #print "ds Option_De_Supg" + self.decoupeListe( self.dictSimp["SUPG_OPTION"],"SUPG_OPTION") + del self.dictSimp["SUPG_OPTION"] + + def TYPE_OF_ADVECTION(self): + self.decoupeListe( self.dictSimp["TYPE_OF_ADVECTION"],"ADVECTION") + valeurs=self.dictSimp["TYPE_OF_ADVECTION"] + del self.dictSimp["TYPE_OF_ADVECTION"] + self.dictSimp['ADVECTION_OF_U_AND_V']=True + self.dictSimp['ADVECTION_OF_H']=True + if len(valeurs)==2 : return + self.dictSimp['ADVECTION_OF_K_AND_EPSILON']=True + self.dictSimp['ADVECTION_OF_TRACERS']=True + + def DISCRETIZATIONS_IN_SPACE(self): + self.decoupeListe( self.dictSimp["DISCRETIZATIONS_IN_SPACE"],"DISCRETIZATIONS_IN_SPACE") + del self.dictSimp["Discretisations_En_Espace"] + + def ORIGINAL_DATE_OF_TIME (self): + valeurs=self.dictSimp["Date_De_L_Origine_Des_Temps"] + self.dictSimp['Annee']=valeurs[0] + self.dictSimp['Mois']=valeurs[1] + self.dictSimp['Jour']=valeurs[2] + del self.dictSimp["Date_De_L_Origine_Des_Temps"] + + + def ORIGINAL_HOUR_OF_TIME (self): + valeurs=self.dictSimp["ORIGINAL_HOUR_OF_TIME"] + self.dictSimp['Heure']=valeurs[0] + self.dictSimp['Minute']=valeurs[1] + self.dictSimp['Seconde']=valeurs[2] + del self.dictSimp["ORIGINAL_HOUR_OF_TIME"] + + def Liquid_Boundaries(self): + #print 'Liquid Boundaries' + texte_Boundaries="Liquid_Boundaries=( " + premier=0 + if 'Prescribed_Elevations' in self.dictSimp.keys(): + valeurs=self.dictSimp["Prescribed_Elevations"] + elif 'Cotes_Imposees' in self.dictSimp.keys(): + valeurs=self.dictSimp["Cotes_Imposees"] + else : valeurs=() + #print valeurs + for e in range(len(valeurs)): + if valeurs[e] == "" or valeurs[e] == "\n" : continue + if eval(valeurs[e],{})==0 : continue + if not premier : premier=1 + texte_Boundaries += "_F(Type_Condition = 'Prescribed Elevations',\n" + texte_Boundaries += "Prescribed_Elevations = " + str(valeurs[e]) + "),\n" + + if 'Prescribed_Flowrates' in self.dictSimp.keys(): + valeurs=self.dictSimp["Prescribed_Flowrates"] + elif 'Debits_Imposes' in self.dictSimp.keys(): + valeurs=self.dictSimp["Debits_Imposes"] + else : valeurs=() + #print valeurs + for e in range(len(valeurs)): + if valeurs[e] == "" or valeurs[e] == "\n" : continue + if eval(valeurs[e],{})==0 : continue + if not premier : premier=1 + texte_Boundaries += "_F(Type_Condition = 'Prescribed Flowrates',\n" + texte_Boundaries += "Prescribed_Flowrates = " + str(valeurs[e]) + "),\n" + + if 'Prescribed_Velocity' in self.dictSimp.keys(): + valeurs=self.dictSimp["Prescribed_Velocity"] + elif 'Vitesses_Imposees' in self.dictSimp.keys(): + valeurs=self.dictSimp["Vitesses_Imposees"] + else : valeurs=() + #print valeurs + for e in range(len(valeurs)): + if valeurs[e] == "" or valeurs[e] == "\n" : continue + if eval(valeurs[e],{})==0 : continue + if not premier : premier=1 + texte_Boundaries += "_F(Type_Condition = 'Prescribed Velocity',\n" + texte_Boundaries += "Prescribed_Velocity = " + str(valeurs[e]) + "),\n" + if premier : texte_Boundaries +="),\n" + else : texte_Boundaries="" ; print "pb texte_Boundaries " + self.textePy += texte_Boundaries + diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 78b5ccd3..19ca6388 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -26,11 +26,19 @@ from Extensions.i18n import tr from generator_python import PythonGenerator extensions=('.comm',) +#if 1: try : - from aideAuxConvertisseurs import listeSupprime, DicoAglomere, DicoEficasToCas - from enumDicoTelemac import DicoEnumCasEnInverse + from enumDicoTelemac import TelemacdicoEn + DicoEnumCasEnInverse={} + for motClef in TelemacdicoEn.keys(): + d={} + for valTelemac in TelemacdicoEn[motClef].keys(): + valEficas= TelemacdicoEn[motClef][valTelemac] + d[valEficas]=valTelemac + DicoEnumCasEnInverse[motClef]=d + except : - pass + pass def entryPoint(): @@ -40,7 +48,7 @@ def entryPoint(): """ return { # Le nom du plugin - 'name' : 'TELEMAC', + 'name' : 'TELEMAC3', # La factory pour creer une instance du plugin 'factory' : TELEMACGenerator, } @@ -55,11 +63,20 @@ class TELEMACGenerator(PythonGenerator): """ #---------------------------------------------------------------------------------------- - def gener(self,obj,format='brut',config=None): + def gener(self,obj,format='brut',config=None,appli=None): self.initDico() - #print self.texteDico - + # Pour Simplifier les verifs d ecriture + if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac + else : self.listeTelemac = None + + self.dicoCataToCas={} + self.dicoCasToCata=appli.readercata.dicoCasToCata + for motClef in self.dicoCasToCata.keys(): + self.dicoCataToCas[self.dicoCasToCata[motClef]]=motClef + + + # Cette instruction genere le contenu du fichier de commandes (persistance) self.text=PythonGenerator.gener(self,obj,format) return self.text @@ -87,7 +104,7 @@ class TELEMACGenerator(PythonGenerator): #---------------------------------------------------------------------------------------- def writeDefault(self,fn) : - self.texteDico+='\n&ETA\n' + self.texteDico+='\n&ETA\n&FIN\n' fileDico = fn[:fn.rfind(".")] + '.py' f = open( str(fileDico), 'wb') f.write( self.texteDico ) @@ -104,43 +121,61 @@ class TELEMACGenerator(PythonGenerator): 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)) + #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" : + #if obj.nom == "Title" : #print s - print str(obj.valeur) + # print str(obj.valeur) #print repr(obj.valeur) # Attention pas sur --> ds certains cas non traite par MCFACT ? # a reflechir avec Yoann - if hasattr(obj.definition,'defaut') : - if obj.definition.defaut == obj.valeur : return s + #if hasattr(obj.definition,'defaut') : + # if obj.definition.defaut == obj.valeur : return s + if self.listeTelemac != None and obj.nom not in self.listeTelemac : return s + - nomMajuscule=obj.nom.upper() - nom=nomMajuscule.replace('_',' ') - if nom in listeSupprime or s == "" : return s + #nomMajuscule=obj.nom.upper() + #nom=nomMajuscule.replace('_',' ') + #if nom in listeSupprime or s == "" : return s + if s == "" : return s + sTelemac=s[0:-1] 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 if type(obj.valeur) in (types.TupleType,types.ListType) : + #print "je passe pour", obj.nom if obj.nom in DicoEnumCasEnInverse.keys(): - sT = "'" + #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 - sTelemac=sT[0:-1]+"'" + #sTelemac=sT[0:-1]+"'" + sTelemac=sT[0:-1] + else : + sTelemac=sTelemac[0:-1] + if sTelemac.find("'") > 0 : + sTelemac= sTelemac.replace (',',';\n ') + - if nom in DicoEficasToCas.keys() : nom=DicoEficasToCas[nom] - self.texteDico+=nom+ ":" + str(sTelemac) + "\n" + s1=str(sTelemac).replace('True','YES') + s2=s1.replace('False','NO') + s3=s2.replace(',',';') + if s3 != "" and s3[0]=='(' : + try : s3=s3[1:-1] # cas de liste vide + except : s3 = ' ' + nom=self.dicoCataToCas[obj.nom] + self.texteDico+=nom+ ":" + s3 + "\n" return s def generMCFACT(self,obj): diff --git a/generator/generator_python.py b/generator/generator_python.py index 4c8e61f2..9bdd1f26 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -86,7 +86,7 @@ class PythonGenerator: fp.write(self.text) fp.close() - def gener(self,obj,format='brut',config=None): + def gener(self,obj,format='brut',config=None,appli=None): """ Retourne une representation du JDC obj sous une forme qui est parametree par format.