From: pascale.noyret Date: Mon, 18 Sep 2017 14:29:03 +0000 (+0200) Subject: suite chgt copyright et menage X-Git-Tag: pre_V8_4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7fb6e4f78105b3c54062a896278e1591d8329d31;p=modules%2Feficas.git suite chgt copyright et menage --- diff --git a/Editeur/comploader.py b/Editeur/comploader.py index ca8d24f9..9c823dfd 100644 --- a/Editeur/comploader.py +++ b/Editeur/comploader.py @@ -38,7 +38,7 @@ import os,glob,types # Ce dictionnaire est renseigne par la methode charger_composants composants = {} -def charger_composants(Ihm="TK"): +def charger_composants(Ihm="QT"): """ Cette fonction a pour but de charger tous les modules composants graphiques (fichiers compo*.py dans le meme repertoire que ce module ) @@ -51,8 +51,6 @@ def charger_composants(Ihm="TK"): else : repertoire=reper+"/../InterfaceQT4" package="InterfaceQT4" - #repertoire=reper+"/../InterfaceQT" - #package="InterfaceQT" listfich=glob.glob(os.path.join(repertoire, "compo*.py")) for fichier in listfich: m= os.path.basename(fichier)[:-3] diff --git a/Extensions/CreeTraductions/eficas.pro b/Extensions/CreeTraductions/eficas.pro index 0beca07e..58884b7b 100644 --- a/Extensions/CreeTraductions/eficas.pro +++ b/Extensions/CreeTraductions/eficas.pro @@ -1,261 +1,246 @@ -SOURCES = ../../convert/autre_parseur.py \ -# pourValidation.py \ - ../../convert/convert_asterv5.py \ - ../../convert/convert_cuve2dg.py \ - ../../convert/convert_file_from_template.py \ - ../../convert/convert_ini.py \ - ../../convert/convert_map.py \ - ../../convert/convert_openturns_study.py \ - ../../convert/convert_openturns_wrapper.py \ - ../../convert/convert_perfect.py \ - ../../convert/convert_python6.py\ - ../../convert/convert_python.py\ - ../../convert/convert_pyth.py\ - ../../convert/convert_SEP.py \ - ../../convert/parseur_python.py\ - ../../Editeur/analyse_catalogue_initial.py \ - ../../Editeur/analyse_catalogue.py \ - ../../Editeur/autre_analyse_cata.py \ - ../../Editeur/basestyle.py \ - ../../Editeur/catadesc.py \ - ../../Editeur/comploader.py \ - ../../Editeur/comploaderqt4.py \ - ../../Editeur/fontes.py \ - ../../Editeur/import_code.py \ - ../../Editeur/listePatrons.py \ - ../../Editeur/Objecttreeitem.py \ - ../../Editeur/session.py \ - ../../Editeur/styles.py \ - ../../Editeur/TroisDPal.py \ - ../../Editeur/uiinfo.py \ - ../../Editeur/utils.py \ - ../../Extensions/commande_comm.py \ - ../../Extensions/commentaire.py \ - ../../Extensions/eficas_exception.py \ - ../../Extensions/etape_niveau.py \ - ../../Extensions/interpreteur_formule.py \ - ../../Extensions/jdc_include.py \ - ../../Extensions/jdc.py \ - ../../Extensions/localisation.py \ - ../../Extensions/mcnuplet.py \ - ../../Extensions/niveau.py \ - ../../Extensions/nuplet.py \ - ../../Extensions/param2.py \ - ../../Extensions/parametre_eval.py \ - ../../Extensions/parametre.py \ - ../../Extensions/pluginloader.py \ - ../../generator/DefautASTER.py \ - ../../generator/Formatage.py \ - ../../generator/generator_aplat.py \ - ../../generator/generator_asterv5.py \ - ../../generator/generator_CARMEL3D.py \ - ../../generator/generator_Creation.py \ - ../../generator/generator_cuve2dg.py \ - ../../generator/generator_file_from_template.py \ - ../../generator/generator_GroupMA.py \ - ../../generator/generator_homard.py \ - ../../generator/generator_ini.py \ - ../../generator/generator_map.py \ - ../../generator/generator_openturns.py \ - ../../generator/generator_openturns_study.py \ - ../../generator/generator_openturns_wrapper.py \ - ../../generator/generator_python6.py\ - ../../generator/generator_python.py\ - ../../generator/generator_pyth.py\ - ../../generator/generator_SEP.py \ - ../../generator/generator_vers3DSalome.py \ - ../../generator/OpenturnsBase.py \ - ../../generator/OpenturnsSTD.py \ - ../../generator/OpenturnsXML.py \ - ../../generator/tube.py \ - ../../Ihm/CONNECTOR.py \ - ../../Ihm/I_A_CLASSER.py \ - ../../Ihm/I_ASSD.py \ - ../../Ihm/I_AVANT.py \ - ../../Ihm/I_ENTITE.py \ - ../../Ihm/I_ETAPE.py \ - ../../Ihm/I_EVAL.py \ - ../../Ihm/I_EXCLUS.py \ - ../../Ihm/I_FONCTION.py \ - ../../Ihm/I_FORM_ETAPE.py \ - ../../Ihm/I_JDC_CATA.py \ - ../../Ihm/I_JDC.py \ - ../../Ihm/I_LASSD.py \ - ../../Ihm/I_MACRO_ETAPE.py \ - ../../Ihm/I_MCBLOC.py \ - ../../Ihm/I_MCCOMPO.py \ - ../../Ihm/I_MCFACT.py \ - ../../Ihm/I_MCLIST.py \ - ../../Ihm/I_MCSIMP.py \ - ../../Ihm/I_OBJECT.py \ - ../../Ihm/I_PRESENT_ABSENT.py \ - ../../Ihm/I_PRESENT_PRESENT.py \ - ../../Ihm/I_PROC_ETAPE.py \ - ../../Ihm/I_REGLE.py \ - ../../Ihm/I_UN_PARMI.py \ - ../../Ihm/I_VALIDATOR.py \ - ../../InterfaceQT4/browser.py \ - ../../InterfaceQT4/compobloc.py \ - ../../InterfaceQT4/compocomm.py \ - ../../InterfaceQT4/compofact.py \ - ../../InterfaceQT4/compoformule.py \ - ../../InterfaceQT4/compojdc.py \ - ../../InterfaceQT4/compomacro.py \ - ../../InterfaceQT4/compomclist.py \ - ../../InterfaceQT4/compooper.py \ - ../../InterfaceQT4/compoparam.py \ - ../../InterfaceQT4/compoproc.py \ - ../../InterfaceQT4/composimp.py \ - ../../InterfaceQT4/configuration.py \ - ../../InterfaceQT4/editor.py \ - ../../InterfaceQT4/eficas_go.py \ - ../../InterfaceQT4/feuille.py \ - ../../InterfaceQT4/gereIcones.py \ - ../../InterfaceQT4/gereListe.py \ - ../../InterfaceQT4/gereRegles.py \ - ../../InterfaceQT4/gereTraduction.py \ - ../../InterfaceQT4/getVersion.py \ - ../../InterfaceQT4/groupe.py \ - ../../InterfaceQT4/monBoutonValide.py \ - ../../InterfaceQT4/monChoixCata.py \ - ../../InterfaceQT4/monChoixCode.py \ - ../../InterfaceQT4/monChoixCommande.py \ - ../../InterfaceQT4/monFonctionPanel.py \ - ../../InterfaceQT4/monLabelClic.py \ - ../../InterfaceQT4/monRecherche.py \ - ../../InterfaceQT4/monSelectVal.py \ - ../../InterfaceQT4/monViewTexte.py \ - ../../InterfaceQT4/monVisu.py \ - ../../InterfaceQT4/monWidget4a6RadioButton.py \ - ../../InterfaceQT4/monWidget4a6RadioButtonSD.py \ - ../../InterfaceQT4/monWidgetBloc.py \ - ../../InterfaceQT4/monWidgetCB.py \ - ../../InterfaceQT4/monWidgetCBSD.py \ - ../../InterfaceQT4/monWidgetCommande.py \ - ../../InterfaceQT4/monWidgetCommentaire.py \ - ../../InterfaceQT4/monWidgetCreeParam.py \ - ../../InterfaceQT4/monWidgetDate.py \ - ../../InterfaceQT4/monWidgetFactPlie.py \ - ../../InterfaceQT4/monWidgetFact.py \ - ../../InterfaceQT4/monWidgetHeure.py \ - ../../InterfaceQT4/monWidgetInfo.py \ - ../../InterfaceQT4/monWidgetMatrice.py \ - ../../InterfaceQT4/monWidgetOptionnel.py \ - ../../InterfaceQT4/monWidgetParam.py \ - ../../InterfaceQT4/monWidgetPlusieursBase.py \ - ../../InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py\ - ../../InterfaceQT4/monWidgetPlusieursIntoOrdonne.py \ - ../../InterfaceQT4/monWidgetPlusieursInto.py \ - ../../InterfaceQT4/monWidgetPlusieursTuple2.py \ - ../../InterfaceQT4/monWidgetPlusieursTuple3.py \ - ../../InterfaceQT4/monWidgetPlusieursTuple.py \ - ../../InterfaceQT4/monWidgetPlusieursPlie.py \ - ../../InterfaceQT4/monWidgetRadioButton.py \ - ../../InterfaceQT4/monWidgetSDCOInto.py \ - ../../InterfaceQT4/monWidgetSimpBase.py \ - ../../InterfaceQT4/monWidgetSimpBool.py \ - ../../InterfaceQT4/monWidgetSimpComplexe.py \ - ../../InterfaceQT4/monWidgetSimpFichier.py \ - ../../InterfaceQT4/monWidgetSimpTuple2.py \ - ../../InterfaceQT4/monWidgetSimpTuple3.py \ - ../../InterfaceQT4/monWidgetSimpTuple.py \ - ../../InterfaceQT4/monWidgetSimpTxt.py \ - ../../InterfaceQT4/monWidgetUniqueSDCO.py \ - ../../InterfaceQT4/monWidgetVide.py \ - ../../InterfaceQT4/politiquesValidation.py \ - ../../InterfaceQT4/qtEficas.py \ - ../../InterfaceQT4/qtEficas_with_log.py \ - ../../InterfaceQT4/qtSaisie.py \ - ../../InterfaceQT4/readercata.py \ - ../../InterfaceQT4/ssIhm.py \ - ../../InterfaceQT4/typeNode.py \ - ../../InterfaceQT4/utilIcons.py \ - ../../InterfaceQT4/viewManager.py \ - ../../Traducteur/calcG.py \ - ../../Traducteur/changeValeur.py \ - ../../Traducteur/dictErreurs.py \ - ../../Traducteur/inseremocle.py \ - ../../Traducteur/load.py \ - ../../Traducteur/log.py \ - ../../Traducteur/mocles.py \ - ../../Traducteur/movemocle.py \ - ../../Traducteur/parseur.py \ - ../../Traducteur/regles.py \ - ../../Traducteur/removemocle.py \ - ../../Traducteur/renamemocle.py \ - ../../Traducteur/traduitV7V8.py \ - ../../Traducteur/traduitV8V9.py \ - ../../Traducteur/traduitV9V10.py \ - ../../Traducteur/utils.py \ - ../../Traducteur/visiteur.py \ - ../../Validation/V_A_CLASSER.py \ - ../../Noyau/N_VALIDATOR.py \ - ../../Noyau/N_JDC.py \ - ../../CarmelCND/PourTraductionCarmel.py \ - ../../Carmel3D/PourTraduction.py \ - ../../monCode/EssaiTraduction.py \ - ../../Validation/V_A_CLASSER.py \ - ../../Validation/V_AU_MOINS_UN.py \ - ../../Validation/V_AU_PLUS_UN.py \ - ../../Validation/V_ENSEMBLE.py \ - ../../Validation/V_ETAPE.py \ - ../../Validation/V_EXCLUS.py \ - ../../Validation/V_JDC.py \ - ../../Validation/V_MACRO_ETAPE.py \ - ../../Validation/V_MCBLOC.py \ - ../../Validation/V_MCCOMPO.py \ - ../../Validation/V_MCFACT.py \ - ../../Validation/V_MCLIST.py \ - ../../Validation/V_MCSIMP.py \ - ../../Validation/V_MEME_NOMBRE.py \ - ../../Validation/V_PRESENT_ABSENT.py \ - ../../Validation/V_PRESENT_PRESENT.py \ - ../../Validation/V_PROC_ETAPE.py \ - ../../Validation/V_UN_PARMI.py + convert/autre_parseur.py \ + convert/convert_ini.py \ + convert/convert_map.py \ + convert/convert_python.py \ + convert/parseur_python.py \ + convert/convert_TELEMAC.py \ + Editeur/analyse_catalogue_initial.py \ + Editeur/analyse_catalogue.py \ + Editeur/autre_analyse_cata.py \ + Editeur/basestyle.py \ + Editeur/catadesc.py \ + Editeur/comploader.py \ + Editeur/fontes.py \ + Editeur/import_code.py \ + Editeur/listePatrons.py \ + Editeur/Objecttreeitem.py \ + Editeur/session.py \ + Editeur/styles.py \ + Editeur/TroisDPal.py \ + Editeur/uiinfo.py \ + Extensions/commande_comm.py \ + Extensions/commentaire.py \ + Extensions/eficas_exception.py \ + Extensions/etape_niveau.py \ + Extensions/interpreteur_formule.py \ + Extensions/jdc_include.py \ + Extensions/jdc.py \ + Extensions/localisation.py \ + Extensions/mcnuplet.py \ + Extensions/niveau.py \ + Extensions/nuplet.py \ + Extensions/param2.py \ + Extensions/parametre_eval.py \ + Extensions/parametre.py \ + Extensions/pluginloader.py \ + generator/Formatage.py \ + generator/generator_aplat.py \ + generator/generator_dicoImbrique.py \ + generator/generator_dico.py \ + generator/generator_GroupMA.py \ + generator/generator_map.py \ + generator/generator_modification.py \ + generator/generator_python.py \ + generator/generator_vers3DSalome.py \ + Ihm/CONNECTOR.py \ + Ihm/I_A_CLASSER.py \ + Ihm/I_ASSD.py \ + Ihm/I_AVANT.py \ + Ihm/I_ENTITE.py \ + Ihm/I_ETAPE.py \ + Ihm/I_EVAL.py \ + Ihm/I_EXCLUS.py \ + Ihm/I_FONCTION.py \ + Ihm/I_FORM_ETAPE.py \ + Ihm/I_JDC_CATA.py \ + Ihm/I_JDC.py \ + Ihm/I_LASSD.py \ + Ihm/I_MACRO_ETAPE.py \ + Ihm/I_MCBLOC.py \ + Ihm/I_MCCOMPO.py \ + Ihm/I_MCFACT.py \ + Ihm/I_MCLIST.py \ + Ihm/I_MCSIMP.py \ + Ihm/I_OBJECT.py \ + Ihm/I_PRESENT_ABSENT.py \ + Ihm/I_PRESENT_PRESENT.py \ + Ihm/I_PROC_ETAPE.py \ + Ihm/I_REGLE.py \ + Ihm/I_UN_PARMI.py \ + Ihm/I_VALIDATOR.py \ + InterfaceQT4/browser.py \ + InterfaceQT4/compobloc.py \ + InterfaceQT4/compocommandecomm.py \ + InterfaceQT4/compocomm.py \ + InterfaceQT4/compofact.py \ + InterfaceQT4/compoformule.py \ + InterfaceQT4/compojdc.py \ + InterfaceQT4/compomacro.py \ + InterfaceQT4/compomclist.py \ + InterfaceQT4/compooper.py \ + InterfaceQT4/compoparam.py \ + InterfaceQT4/compoproc.py \ + InterfaceQT4/composimp.py \ + InterfaceQT4/configuration.py \ + InterfaceQT4/editor.py \ + InterfaceQT4/eficas_go.py \ + InterfaceQT4/feuille.py \ + InterfaceQT4/gereIcones.py \ + InterfaceQT4/gereListe.py \ + InterfaceQT4/gereRegles.py \ + InterfaceQT4/gereTraduction.py \ + InterfaceQT4/getVersion.py \ + InterfaceQT4/groupe.py \ + InterfaceQT4/monBoutonValide.py \ + InterfaceQT4/monChoixCata.py \ + InterfaceQT4/monChoixCode.py \ + InterfaceQT4/monChoixCommande.py \ + InterfaceQT4/monChoixLangue.py \ + InterfaceQT4/monFonctionPanel.py \ + InterfaceQT4/monLabelClic.py \ + InterfaceQT4/monRecherche.py \ + InterfaceQT4/monRechercheCatalogue.py \ + InterfaceQT4/monSelectVal.py \ + InterfaceQT4/monViewTexte.py \ + InterfaceQT4/monViewRegle.py \ + InterfaceQT4/monVisu.py \ + InterfaceQT4/monWidget4a6RadioButton.py \ + InterfaceQT4/monWidget4a6RadioButtonSD.py \ + InterfaceQT4/monWidgetBloc.py \ + InterfaceQT4/monWidgetCB.py \ + InterfaceQT4/monWidgetCBSD.py \ + InterfaceQT4/monWidgetCommande.py \ + InterfaceQT4/monWidgetCommentaire.py \ + InterfaceQT4/monWidgetCreeParam.py \ + InterfaceQT4/monWidgetDate.py \ + InterfaceQT4/monWidgetFactPlie.py \ + InterfaceQT4/monWidgetFact.py \ + InterfaceQT4/monWidgetFormule.py \ + InterfaceQT4/monWidgetHeure.py \ + InterfaceQT4/monWidgetInfo.py \ + InterfaceQT4/monWidgetInactif.py \ + InterfaceQT4/monWidgetMatrice.py \ + InterfaceQT4/monWidgetOptionnel.py \ + InterfaceQT4/monWidgetParam.py \ + InterfaceQT4/monWidgetPlusieursBase.py \ + InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py \ + InterfaceQT4/monWidgetPlusieursIntoOrdonne.py \ + InterfaceQT4/monWidgetPlusieursInto.py \ + InterfaceQT4/monWidgetPlusieursTuple2.py \ + InterfaceQT4/monWidgetPlusieursTuple3.py \ + InterfaceQT4/monWidgetPlusieursTuple.py \ + InterfaceQT4/monWidgetPlusieursPlie.py \ + InterfaceQT4/monWidgetRadioButton.py \ + InterfaceQT4/monWidgetSDCOInto.py \ + InterfaceQT4/monWidgetSimpBase.py \ + InterfaceQT4/monWidgetSimpBool.py \ + InterfaceQT4/monWidgetSimpComplexe.py \ + InterfaceQT4/monWidgetSimpFichier.py \ + InterfaceQT4/monWidgetSimpTuple2.py \ + InterfaceQT4/monWidgetSimpTuple3.py \ + InterfaceQT4/monWidgetSimpTuple.py \ + InterfaceQT4/monWidgetSimpSalome.py \ + InterfaceQT4/monWidgetSimpTxt.py \ + InterfaceQT4/monWidgetUniqueSDCO.py \ + InterfaceQT4/monWidgetVide.py \ + InterfaceQT4/politiquesValidation.py \ + InterfaceQT4/qtEficas.py \ + InterfaceQT4/qtEficas_with_log.py \ + InterfaceQT4/qtSaisie.py \ + InterfaceQT4/readercata.py \ + InterfaceQT4/ssIhm.py \ + InterfaceQT4/typeNode.py \ + InterfaceQT4/viewManager.py \ + Traducteur/calcG.py \ + Traducteur/changeValeur.py \ + Traducteur/dictErreurs.py \ + Traducteur/inseremocle.py \ + Traducteur/load.py \ + Traducteur/log.py \ + Traducteur/mocles.py \ + Traducteur/movemocle.py \ + Traducteur/parseur.py \ + Traducteur/regles.py \ + Traducteur/removemocle.py \ + Traducteur/renamemocle.py \ + Traducteur/traduitV7V8.py \ + Traducteur/traduitV8V9.py \ + Traducteur/traduitV9V10.py \ + Traducteur/utils.py \ + Traducteur/visiteur.py \ + Noyau/N_VALIDATOR.py \ + Noyau/N_JDC.py \ + Validation/V_A_CLASSER.py \ + Validation/V_AU_MOINS_UN.py \ + Validation/V_AU_PLUS_UN.py \ + Validation/V_ENSEMBLE.py \ + Validation/V_ETAPE.py \ + Validation/V_EXCLUS.py \ + Validation/V_JDC.py \ + Validation/V_MACRO_ETAPE.py \ + Validation/V_MCBLOC.py \ + Validation/V_MCCOMPO.py \ + Validation/V_MCFACT.py \ + Validation/V_MCLIST.py \ + Validation/V_MCSIMP.py \ + Validation/V_MEME_NOMBRE.py \ + Validation/V_PRESENT_ABSENT.py \ + Validation/V_PRESENT_PRESENT.py \ + Validation/V_PROC_ETAPE.py \ + Validation/V_UN_PARMI.py -FORMS= \ - ../../UiQT4/myMain.ui \ - ../../UiQT4/desBaseWidget.ui \ - ../../UiQT4/desChoixCata.ui \ - ../../UiQT4/desChoixCode.ui \ - ../../UiQT4/desChoixCommandes.ui \ - ../../UiQT4/desRecherche.ui \ - ../../UiQT4/desSelectVal.ui \ - ../../UiQT4/desViewTexte.ui \ - ../../UiQT4/desViewRegles.ui \ - ../../UiQT4/desVisu.ui \ - ../../UiQT4/desWidgetCreeParam.ui \ - ../../UiQT4/desWidgetCommande.ui \ - ../../UiQT4/desWidgetOptionnel.ui \ - ../../UiQT4/Tuple2.ui \ - ../../UiQT4/Tuple3.ui \ - ../../UiQT4/desWidgetBloc.ui \ - ../../UiQT4/desWidgetCB.ui \ - ../../UiQT4/desWidgetCommentaire.ui \ - ../../UiQT4/desWidgetDate.ui \ - ../../UiQT4/desWidgetFact.ui \ - ../../UiQT4/desWidgetFactPlie.ui \ - ../../UiQT4/desWidgetHeure.ui \ - ../../UiQT4/desWidgetInformation.ui \ - ../../UiQT4/desWidgetMatrice.ui \ - ../../UiQT4/desWidgetParam.ui \ - ../../UiQT4/desWidgetPlusieursBase.ui \ - ../../UiQT4/desWidgetPlusieursInto.ui \ - ../../UiQT4/desWidgetPlusieursIntoOrdonne.ui \ - ../../UiQT4/desWidgetPlusieursTuple.ui \ - ../../UiQT4/desWidgetPlusieursPlie.ui \ - ../../UiQT4/desWidgetRadioButton.ui \ - ../../UiQT4/desWidget4a6RadioButton.ui \ - ../../UiQT4/desWidgetSDCOInto.ui \ - ../../UiQT4/desWidgetSimpBase.ui \ - ../../UiQT4/desWidgetSimpBool.ui \ - ../../UiQT4/desWidgetSimpComplexe.ui \ - ../../UiQT4/desWidgetSimpFichier.ui \ - ../../UiQT4/desWidgetSimpTxt.ui \ - ../../UiQT4/desWidgetTuple2.ui \ - ../../UiQT4/desWidgetTuple3.ui \ - ../../UiQT4/desWidgetUniqueSDCO.ui \ - ../../UiQT4/desWidgetVide.ui \ - ../../UiQT4/myMain.ui +FORMS = \ + UiQT5/desBaseWidget.ui \ + UiQT5/desChoixCata.ui \ + UiQT5/desChoixCode.ui \ + UiQT5/desChoixCommandes.ui \ + UiQT5/desChoixLangue.ui \ + UiQT5/desGroupeOptionnel.ui \ + UiQT5/desPBOptionnelMT.ui \ + UiQT5/desRechercheCatalogue.ui \ + UiQT5/desRecherche.ui \ + UiQT5/desSelectVal.ui \ + UiQT5/desViewRegles.ui \ + UiQT5/desViewTexte.ui \ + UiQT5/desVisu.ui \ + UiQT5/desWidget4a6RadioButton.ui \ + UiQT5/desWidgetBloc.ui \ + UiQT5/desWidgetCB.ui \ + UiQT5/desWidgetCommande.ui \ + UiQT5/desWidgetCommentaire.ui \ + UiQT5/desWidgetCreeParam.ui \ + UiQT5/desWidgetDate.ui \ + UiQT5/desWidgetFactHorizon.ui \ + UiQT5/desWidgetFactPlie.ui \ + UiQT5/desWidgetFact.ui \ + UiQT5/desWidgetFormule.ui \ + UiQT5/desWidgetHeure.ui \ + UiQT5/desWidgetInactif.ui \ + UiQT5/desWidgetInformation.ui \ + UiQT5/desWidgetIntoSug.ui \ + UiQT5/desWidgetMatrice.ui \ + UiQT5/desWidgetOptionnelMC.ui \ + UiQT5/desWidgetOptionnel.ui \ + UiQT5/desWidgetParam.ui \ + UiQT5/desWidgetPlusieursBase.ui \ + UiQT5/desWidgetPlusieursIntoOrdonne.ui \ + UiQT5/desWidgetPlusieursInto.ui \ + UiQT5/desWidgetPlusieursPlie.ui \ + UiQT5/desWidgetPlusieursTuple.ui \ + UiQT5/desWidgetRadioButton.ui \ + UiQT5/desWidgetSDCOInto.ui \ + UiQT5/desWidgetSimpBase.ui \ + UiQT5/desWidgetSimpBool.ui \ + UiQT5/desWidgetSimpComplexe.ui \ + UiQT5/desWidgetSimpFichier.ui \ + UiQT5/desWidgetSimpSalome.ui \ + UiQT5/desWidgetSimpTxt.ui \ + UiQT5/desWidgetTuple2.ui \ + UiQT5/desWidgetTuple3.ui \ + UiQT5/desWidgetUniqueSDCO.ui \ + UiQT5/desWidgetVide.ui \ + UiQT5/myMain.ui \ + UiQT5/Tuple2.ui \ + UiQT5/Tuple3.ui -TRANSLATIONS = ../../UiQT4/eficas_fr.ts ../../UiQT4/eficas_en.ts +TRANSLATIONS = UiQT5/eficas_fr.ts UiQT5/eficas_en.ts diff --git a/Extensions/localisation.py b/Extensions/localisation.py index 544063dd..5ea45541 100644 --- a/Extensions/localisation.py +++ b/Extensions/localisation.py @@ -51,6 +51,7 @@ def localise(application, locale=None,file=None,translatorFichier=None, debug=Fa print ("Unable to load Eficas translator!") global code_translator + if debug : print ('translatorFichier :' ,translatorFichier) if translatorFichier != None : if (code_translator.load(translatorFichier)) and debug: print (translatorFichier, ' loaded') diff --git a/Extensions/translationQT4.py b/Extensions/translationQT4.py deleted file mode 100644 index ba4940f4..00000000 --- a/Extensions/translationQT4.py +++ /dev/null @@ -1,295 +0,0 @@ -# -*- coding: utf-8 -*- -# copyright 2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. -# contact http://www.logilab.fr -- mailto:contact@logilab.fr -# -# This program 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, or (at your option) -# any later version. -# -# This program 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 program. If not, see . -""" -Main module of the ``i18n`` package, for internationalizing strings via the Qt -mechanism, in the ``Eficas`` application of EDF. Handles unformatted and -formatted strings, according to all formatting schemes: via dictionaries, -tuples, or atoms. - -``PyQt4`` is currently supported. -""" -from Extensions.eficas_exception import EficasException -def _reformat_qstring_from_tuple(qstring, params): - """ - _reformat_qstring_from_tuple(QString, tuple) -> QString - - Module-internal method. - Returns a formatted QString from an unformatted QString - and a tuple specifying the parameters of the QString. - """ - from PyQt4.QtCore import QRegExp, QString - reg = QRegExp("\%\.[1-9]{1,2}f") - for p, j in zip(params, range(len(params))): - try: - i += 1 + qstring[i + 1:].indexOf("%") - except NameError: - i = qstring.indexOf("%") - if i == reg.indexIn(qstring): - precision = reg.cap(0).split('.')[1].split('f')[0] - qstring = qstring[:i + 2 + len(precision)].\ - replace("%." + precision, "%" + unicode(1 + j)) + \ - qstring[i + 3 + len(precision):] - qstring = qstring.arg(QString.number(float(params[j]), 'f',\ - int(precision))) - else: - qstring = qstring[:i + 1].replace("%", "%" + unicode(1 + j)) + \ - qstring[i + 2:] - if isinstance(params[j], unicode): - qstring = qstring.arg(params[j]) - elif isinstance(params[j], float): - qstring = qstring.arg(QString.number(params[j], 'f',\ - len(unicode(params[j]).\ - split('.')[1]))) - elif isinstance(params[j], int): - qstring = qstring.arg(QString.number(params[j], 10)) - elif isinstance(params[j], list): - qstring = qstring.arg(repr(params[j])) - else: - raise EficasException("TypeError: i18n.translation: \ - Unicode, list or number expected!") - return qstring - -def _reformat_qstring_from_dict(qstring, params): - """ - _reformat_qstring_from_dict(QString, dict) -> QString - - Module-internal method. - Returns a formatted QString from an unformatted QString - and a dictionary specifying the parameters of the QString. - """ - from PyQt4.QtCore import QRegExp, QString - for p, j in zip(params, range(len(params))): - p_reg = QRegExp("\%\("+ p + "\)\.[1-9]{1,2}f") - p_index = p_reg.indexIn(qstring) - if p_index != -1: - precision = p_reg.cap(0).split('.')[1].split('f')[0] - qstring = qstring.replace("%(" + p + ")." + precision + "f",\ - "%" + unicode(1 + j)).\ - arg(QString.number(float(params[p]), \ - 'f', \ - int(precision))) - else: - qstring.remove(QRegExp("\\)[sdf]{1}")) - qstring = qstring.replace("%(" + p, "%" + unicode(1 + j)) - if isinstance(params[p], unicode): - qstring = qstring.arg(params[p]) - elif isinstance(params[p], float): - qstring = qstring.arg(QString.number(params[p], 'f', \ - len(unicode(params[p]).split('.')[1]))) - elif isinstance(params[p], int): - qstring = qstring.arg(QString.number(params[p], 10)) - elif isinstance(params[p], list): - qstring = qstring.arg(repr(params[p])) - else: - raise EficasException("TypeError: i18n.translation: \ - Improper string parameter type.") - return qstring - -def _reformat_qstring_from_atom(qstring, params): - """ - _reformat_qstring_from_atom(QString, int-or-float) -> QString - - Module-internal method. - Returns a formatted QString from an unformatted QString - and an integer or a float specifying the parameter of - the QString. - """ - from PyQt4.QtCore import QRegExp, QString - reg = QRegExp("\%\.[1-9]{1,2}f") - if qstring.count("%") == 0: - qstring.append("%1") - try: - qstring = qstring.arg(unicode(params)) - except AttributeError: - qstring = qstring.arg(params) - elif qstring.count("%") == 1: - i = qstring.indexOf("%") - if i == reg.indexIn(qstring): - precision = reg.cap(0).split('.')[1].split('f')[0] - qstring = qstring[: i + 2 + len(precision)].\ - replace("%." + precision, "%1") + \ - qstring[i + 3 + len(precision):] - qstring = qstring.arg(QString.number(float(params), 'f',\ - int(precision))) - else: - qstring = qstring[:i + 1].replace("%", "%1") + \ - qstring[i + 2:] - if isinstance(params, (unicode, str)): - qstring = qstring.arg(_preprocess_atom(params)) - elif isinstance(params, float): - qstring = qstring.arg(QString.number(params, 'f', \ - len(unicode(params).\ - split('.')[1]))) - elif isinstance(params, int): - qstring = qstring.arg(QString.number(params, 10)) - else: - raise EficasException("TypeError: i18n.translation: Unicode, \ - string or number expected!") - return qstring - -def _reformat_qstring_from_list(qstring, params): - """ - _reformat_qstring_from_list(QString, tuple) -> QString - - Module-internal method. - Returns a formatted QString from an unformatted QString - and a list whose concatenation specifies the parameter - of the QString. - """ - # XXX to add further functionality, e.g. list processing - # when ``%`` not at the end. - if qstring.count("%") == 1 and \ - unicode(qstring).strip()[:-1].endswith("%"): - qstring = qstring[:qstring.indexOf("%") + 1].append("1") - qstring = qstring.arg(u' '.join(map(unicode, params))) - elif qstring.count("%") == 0: - qstring.append("%1") - qstring = qstring.arg(u' '.join(map(unicode, params))) - else: - raise EficasException("ValueError: i18n.translation: \ - At most one '%' expected!") - return qstring - -def _preprocess_atom(string): - """ - _preprocess_atom(string-or-number-or-unicode) -> unicode - Test if input is a Unicode object or a number; if so, then return it; - otherwise, test if the input is a string; if so, then try to create - a Unicode object out of it. To this end, assume the string is encoded - in utf-8; if this fails, then assume the string is encoded in Latin-9. - """ - if isinstance(string, (unicode, int, float, complex)): - return string - elif isinstance(string, str): - return _str_to_unicode(string) - else: - raise EficasException("TypeError: Expected number, string or\ - Unicode object!") - -def _str_to_unicode(string): - """ - _str_to_unicode(string) -> unicode - Tries to create a Unicode object out of the input string; assumes - the string is UTF-8 encoded; if not, then assume the string is - Latin-9 encoded. - """ - try: - string = unicode(string, "utf-8") - except UnicodeDecodeError: - try: - string = unicode(string, "iso-8859-15") - except UnicodeDecodeError: - raise EficasException("UnicodeDecodeError: UTF-8, Latin-1 \ - or Latin-9 expected") - return string - -def tr(string, *args): - """tr(string-or-unicode, iterable-or-float-or-int) -> unicode - tr(string-or-unicode) -> unicode - - Returns a formatted Unicode object from an unformatted - string or Unicode object with formatting specifications, and, - optionally, an iterable or an int or float. - Lets Python do the string formatting.""" - from PyQt4.QtGui import QApplication - string = _preprocess_atom(string) - if len(args) == 0: - r = unicode(QApplication.translate("@default", string)) - elif len(args) == 1: - if isinstance(args[0], (dict, tuple)): - if string.count("%") == len(args[0]): - r = unicode(QApplication.translate("@default", string)) % args[0] - elif string.count("%") == 1 and string.count("%(") == 0: - r = unicode(QApplication.translate("@default", string))\ - % _preprocess_atom(repr(args[0])) - elif string.count("%") == 0: - r = (unicode(QApplication.translate("@default", string)), args[0]) - else: - raise EficasException("ValueError: i18n.translate.tr: \ - Improper input string formatting") - elif isinstance(args[0], (unicode, str, int, float, complex)): - if string.count("%") == 1: - r = unicode(QApplication.translate("@default", string))\ - % _preprocess_atom(args[0]) - else: - r = unicode(QApplication.translate("@default", string)) +\ - unicode(_preprocess_atom(args[0])) - elif isinstance(args[0], list) or args[0] is None: - if string.count("%") == 1: - r = unicode(QApplication.translate("@default", string))\ - % _preprocess_atom(repr(args[0])) - else: - r = (unicode(QApplication.translate("@default", string)), args[0]) - - else: - raise EficasException("ValueError: i18n.translation.tr: \ - Wrong type for formatted string \ - arguments: %s" % type(args[0])) - else: - raise EficasException("ValueError: i18n.translation.tr: \ - Wrong formatted string arguments") - return r - - -def tr_qt(string, *args): - """tr_qt(string, iterable-or-float-or-int) -> unicode - t_qtr(string) -> unicode - - Returns a formatted string from an unformatted - Unicode string with formatting specifications, and, - optionally, an iterable or an int or float. - Lets PyQt4 do the string formatting. To this end, - a conversion from Python to Qt string formatting - syntax is performed.""" - string = _preprocess_atom(string) - from PyQt4.QtGui import QApplication - if len(args) == 0: - r = QApplication.translate("@default", string) - elif len(args) == 1: - r = QApplication.translate("@default", string) - if isinstance(args[0], (dict, tuple)): - if r.count("%") == len(args[0]): - if isinstance(args[0], dict): - r = _reformat_qstring_from_dict(r, args[0]) - elif isinstance(args[0], tuple): - r = _reformat_qstring_from_tuple(r, args[0]) - # XXX Pay attention to this: distinguish between tuple, - # dict and dict with key given in string. - elif r.count("%") in range(2) and r.count("%(") == 0: - r = _reformat_qstring_from_atom(r, _preproces_atom(repr(args[0]))) - else: - raise EficasException("ValueError: i18n.translation.tr_qt: \ - Improper formatting string parameters") - elif isinstance(args[0], (unicode, str, int, float, complex)): - r = _reformat_qstring_from_atom(r, args[0]) - elif isinstance(args[0], list): - r = _reformat_qstring_from_list(r, args[0]) - elif args[0] is None: - r = _reformat_qstring_from_atom(r, _preprocess_string_from_atom(repr(args[0]))) - else: - raise EficasException("ValueError: i18n.translation.tr_qt: \ - Wrong string formatting parameter types") - else: - raise EficasException("ValueError: i18n.translation.tr_qt: \ - Improper formatted string parameter set") - return unicode(r) - - -if __name__ == "__main__": - import sys - tr(sys.argv[1], *args) - tr_qt(sys.argv[1], *args) diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 550fce2f..2bc9ba64 100755 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -96,10 +96,6 @@ class Appli(Ui_Eficas,QMainWindow): self.definitCode(code,ssCode) if code==None: return - - - - self.suiteTelemac=False if hasattr (self, 'CONFIGURATION') : if self.CONFIGURATION.force_langue : @@ -192,12 +188,14 @@ class Appli(Ui_Eficas,QMainWindow): self.CONFIGStyle = None if hasattr(configuration,'make_config_style'): self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni) - # - #from Extensions import localisation - #app=QApplication - #if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier) + + if hasattr (self,'CONFIGURATION') and self.CONFIGURATION.translatorFichier : + from Extensions import localisation + localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier) + #PN --> pb d exception qui font planter salome # plus supporte en python 3 + #app=QApplication #if hasattr(prefsCode,'encoding'): # import sys # reload(sys) diff --git a/ProcessOutputs_Eficas/EssaiMulti.py b/ProcessOutputs_Eficas/EssaiMulti.py new file mode 100755 index 00000000..87f9905b --- /dev/null +++ b/ProcessOutputs_Eficas/EssaiMulti.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os +import sys +from multiprocessing import Process +from multiprocessing import Lock +from multiprocessing import Pool + +def worker(num): + """thread worker function""" + print 'Worker:', num + return + +def test1(): + for i in range(5): + p = Process(target=worker, args=(i,)) + p.start() + p.join() + +def info(title): + print(title) + print('parent process:', os.getppid()) + print('process id:', os.getpid()) + +def f(name): + info('function f') + print('hello', name) + +def test2(): + info('test2') + p = Process(target=f, args=('pascale',)) + p.start() + p.join() + +def f(l, i): + l.acquire() + try: + print('hello world', i) + finally: + l.release() + + +def test3(lock): + for num in range(10): + Process(target=f, args=(lock, num)).start() + + # sorties evt desordonnees + for i in range(50): + p = Process(target=worker, args=(i,)).start() + +def g(x): + return x*x + + +def test4(): + import traceback + traceback.print_stack() + num_cores = 4 + FolderPath='tmp' + + monPool=Pool(maxtasksperchild=1) #create a multiprocessing.Pool object + for l in range(num_cores): + print(" lct on core "+str(l) ) + p= monPool.apply_async(g,(l,)) + + res = monPool.apply_async(g, (20,)) # runs in *only* one process + print res.get(timeout=1) # prints "400" + + # evaluate "os.getpid()" asynchronously + res = monPool.apply_async(os.getpid, ()) # runs in *only* one process + print res.get(timeout=1) # prints the PID of that process + + # launching multiple evaluations asynchronously *may* use more processes + multiple_results = [monPool.apply_async(os.getpid, ()) for i in range(4)] + print [res.get(timeout=1) for res in multiple_results] + + + +if __name__ == '__main__': + #test1() + + #test2() + + #lock = Lock() + #test3(lock) + print ('je suis dans main du run') + test4() + diff --git a/ProcessOutputs_Eficas/ExtractGeneratorLoadLineandTransfoDicoProcess.py b/ProcessOutputs_Eficas/ExtractGeneratorLoadLineandTransfoDicoProcess.py new file mode 100644 index 00000000..653e23f8 --- /dev/null +++ b/ProcessOutputs_Eficas/ExtractGeneratorLoadLineandTransfoDicoProcess.py @@ -0,0 +1,631 @@ +import os +import sys +import numpy as np +import copy + +path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','TreatOutputs')) +sys.path.append(path1) +import Options + + +def getNominalkV(NetworkFile): + + print "version en dur" + + BusList=[11.0, 30.0, 90.0] + LinesList=[30.0, 90.0] + TransfosList=['11.0 - 30.0', '11.0 - 90.0', '30.0 - 90.0', '90.0 - 30.0'] + return BusList, LinesList, TransfosList + + + + + + import psspy + import redirect + + psspy.psseinit(80000) + redirect.psse2py() + psspy.progress_output(6) + + psspy.case(NetworkFile) + # Buses + + sid = -1 + flag = 2 + ierr, ret = psspy.abusreal(sid, flag, ['BASE']) + Options.BusBase = ret[0] + + ierr, carray = psspy.abuschar(sid, flag, ['NAME']) + Options.BusBaseList = {} + for i in range(len(carray[0])): + Options.BusBaseList[carray[0][i]] = ret[0][i] + + BusList = [] + for item in Options.BusBase: + if item not in BusList: + BusList.append(item) + BusList = sorted(BusList) + + # Lines + + owner = 1 + ties = 1 + flag = 2 + entry = 1 + string = ['FROMNAME', 'TONAME'] + ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string) + + for i in range(len(carray[0])): + nom = Options.BusBaseList[carray[0][i]] + name = carray[0][i] + '-' + carray[1][i] + Options.LinesBaseList[name] = nom + Options.LinesBase.append(nom) + + LinesList = [] + for item in Options.LinesBase: + if item not in LinesList: + LinesList.append(item) + LinesList = sorted(LinesList) + + # Transfos + + owner = 1 + ties = 1 + flag = 6 + entry = 1 + string = ['FROMNAME', 'TONAME'] + ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string) + + for i in range(len(carray[0])): + nom1 = Options.BusBaseList[carray[0][i]] + nom2 = Options.BusBaseList[carray[1][i]] + name = carray[0][i] + '-' + carray[1][i] + Options.TransfoBaseList[name] = [nom1, nom2] + Options.TransfoBase.append([nom1, nom2]) + + TransfosList = [] + for item in Options.TransfoBase: + string = str(item[0]) + ' - ' + str(item[1]) + if string not in TransfosList: + TransfosList.append(string) + TransfosList = sorted(TransfosList) + + # Generators + + sid = -1 #all buses + flag = 1 #all in service loads/generators (4 all loads/generators) + + string = ['NUMBER'] + ierr,iarray = psspy.amachint(sid,flag,string) + + string = ['NAME','ID'] + ierr,carray = psspy.amachchar(sid,flag,string) + + for i in range(len(iarray[0])): + idname = "GR" + carray[1][i] + machinename = carray[0][i].strip()+ "__" + idname + machinename = machinename.replace(" ","_") + machinename = machinename.replace("-","_") + machinename = machinename.replace(".","_") + machinename = machinename.replace("&","and") + try: + int(machinename[0]) + machinename = "_" + machinename + except: + pass + Options.GenBaseList[machinename] = iarray[0][i] + + return BusList, LinesList, TransfosList + +def getBusNominalkV(NetworkFile): + import psspy + import redirect + + psspy.psseinit(80000) + redirect.psse2py() + psspy.progress_output(6) + + psspy.case(NetworkFile) + + sid = -1 + flag = 2 + ierr, ret = psspy.abusreal(sid, flag, ['BASE']) + Options.BusBase = ret[0] + + ierr, carray = psspy.abuschar(sid, flag, ['NAME']) + buses = {} + for i in range(len(carray[0])): + buses[carray[0][i]] = ret[0][i] + Options.BusNames = buses + ret = [] + for item in Options.BusBase: + if item not in ret: + ret.append(item) + return sorted(ret) + +def updateConts(): + Options.ContFullList = [] + tmp = Options.BusBaseList + tmp.sort() + for key in tmp: + Options.ContFullList.append(key) + tmp = Options.GenBaseList + tmp.sort() + for key in tmp: + Options.ContFullList.append(key) + tmp = Options.LinesBaseList + tmp.sort() + for key in tmp: + Options.ContFullList.append(key) + tmp = Options.TransfoBaseList + tmp.sort() + for key in tmp: + Options.ContFullList.append(key) + print Options.ContFullList + return Options.ContFullList + +def newContingency(MatList): + Options.CustomContingencies.append(MatList) + +def checkIfBorder(graph, key, depth, tmplist): + #print "in checkifBorder" + #print "depth ",depth + #print graph + if key in tmplist: + return True + if depth == 0: + return False + NonBorders = 0 + for item in graph[key]: + if not checkIfBorder(graph, item, depth - 1, tmplist): + NonBorders += 1 + if NonBorders < 2: # A generator is considered as isolated if it has less than two non-borders neighbours + if key not in tmplist: + tmplist.append(key) + return True + return False + +def getTrueLines(NetworkFile): + import psspy + import redirect + + psspy.psseinit(80000) + redirect.psse2py() + psspy.progress_output(6) + + psspy.case(NetworkFile) + + sid = -1 + owner = 1 + ties = 1 + flag = 4 # 6 for two-winding transfos + entry = 1 #each branch once, not both directions + string = ['FROMNAME', 'TONAME', 'ID'] + ierr, iarray = psspy.abrnchar(sid, owner, ties, flag, entry, string) + string = ['FROMNUMBER', 'TONUMBER'] + ierr, carray = psspy.abrnint(sid, owner, ties, flag, entry, string) + + lst = [] + tmplist = [] + try: + for i in range(len(carray[0])): + if carray[0][i] not in lst and carray[0][i] not in tmplist: + tmplist.append(carray[0][i]) + elif carray[0][i] not in lst and carray[0][i] in tmplist: + tmplist.remove(carray[0][i]) + lst.append(carray[0][i]) + if carray[1][i] not in lst and carray[1][i] not in tmplist: + tmplist.append(carray[1][i]) + elif carray[1][i] not in lst and carray[1][i] in tmplist: + tmplist.remove(carray[1][i]) + lst.append(carray[1][i]) + except: + pass + + # Create the graph + graph = {} + for i in range(len(carray[0])): + try: + if graph[carray[0][i]]: + pass + except: + graph[carray[0][i]] = [] + if carray[1][i] not in graph[carray[0][i]]: + graph[carray[0][i]].append(carray[1][i]) + try: + if graph[carray[1][i]]: + pass + except: + graph[carray[1][i]] = [] + if carray[0][i] not in graph[carray[1][i]]: + graph[carray[1][i]].append(carray[0][i]) + + + # Search it twice, to ensure everything is mapped + for key in sorted(graph): + #print key + checkIfBorder(graph, key, Options.RecursiveDepth, tmplist) + #print "out of Checkif 0" + #print "" + for key in reversed(sorted(graph)): + checkIfBorder(graph, key, Options.RecursiveDepth, tmplist) + + Options.IsolatedGenList = [] + # Unfold it + for i in range(len(carray[0])): + if carray[0][i] in tmplist: + if iarray[0][i] not in Options.IsolatedGenList: + Options.IsolatedGenList.append(iarray[0][i]) + if carray[1][i] in tmplist: + if iarray[1][i] not in Options.IsolatedGenList: + Options.IsolatedGenList.append(iarray[1][i]) + + lines = [] + outLines = [] + for i in range(len(iarray[0])): + name = iarray[0][i] + '-' + iarray[1][i] + if '@' in iarray[2][i] or '*' in iarray[2][i]: + outLines.append(name) + elif iarray[0][i] not in Options.IsolatedGenList and iarray[1][i] not in Options.IsolatedGenList: + lines.append(name) + else: + outLines.append(name) + Options.TrueLines = lines + + return lines + +NoBreakersandSwitches = True + +def ExtractGeneratorLoadLineandTransfoDico(NetworkFile,PSSE_PATH): + + print "version en dur" + MachineDico={'M1':'M1','M2':'M2','M3':'M3','M4':'M4','B6_BUS13__1':'AZ','CSPRING__1':'DD','GT12B__1':'ER','BSTMB__1':'JJ'} + LoadDico={'C1':'C1','C2':'C2','C3':'C3','C4':'C4'} + LineDico={'L1':'L1','L2':'L2','L3':'L3','L4':'L4'} + TfoDico={'T1':'T1','T2':'T2','T3':'T3','T4':'T4'} + MDico={'MZ1':'MZ1','MZ2':'MZ2','MZ3':'MZ3','MZ4':'MZ4'} + BranchesDico={'B11':'B1','B2':'B2','B3':'B3','B4':'B4'} + BusNomial={'Bus1':'Bus1','Bus2':'Bus2','Bus3':'Bus3','Bus4':'Bus4'} + + return MachineDico, LoadDico, LineDico, TfoDico, MotorDico, BusDico, BranchesDico, BusNominal + + + import os + import sys + import numpy as np + + sys.path.append(PSSE_PATH) + os.environ['PATH'] += ';' + PSSE_PATH + ';' + + import psspy + import redirect + + ###initialization PSSE + psspy.psseinit(10000) + _i=psspy.getdefaultint() + _f=psspy.getdefaultreal() + _s=psspy.getdefaultchar() + redirect.psse2py() + + # Silent execution of PSSe + islct=6 # 6=no output; 1=standard + psspy.progress_output(islct) + + #open Network File + psspy.case(NetworkFile) + + # Extract Buses + sid = -1 # all buses + flag = 2 + string = ['NUMBER'] + ierr, iarray = psspy.abusint(sid, flag, string) + + string = ['NAME', 'EXNAME'] + ierr, carray = psspy.abuschar(sid, flag, string) + + string = ['BASE'] + ierr, ret = psspy.abusreal(sid, flag, string) + + BusDico = {} + BusNominal = {} + for i in range(len(iarray[0])): + BusNum = iarray[0][i] + BusDico[str(BusNum)] = carray[0][i].strip() + BusNominal[BusDico[str(BusNum)]] = ret[0][i] + + #Extract Loads + sid = -1 #all buses + flag = 1 #all in service loads/generators (4 all loads/generators) + + + string = ['NUMBER'] + ierr,iarray = psspy.aloadint(sid,flag,string) + + string = ['NAME','ID','EXNAME'] + ierr,carray = psspy.aloadchar(sid,flag,string) + + string = ['mvaact'] + ierr, xdata = psspy.aloadcplx(sid, flag, string) + + LoadDico = {} # [Bus name, load ID, extended bus name, bus number] + for i in range(len(iarray[0])): + idname = "Lo" + carray[1][i].strip() +# try: #id is an integer +# idname = "Lo" + str(int(carray[1][i])) +# except: #id is not an integer +# idname = "Lo" + carray[1][i] + loadname = carray[0][i].strip()+ "__" + idname + loadname = loadname.replace(" ","_") + loadname = loadname.replace("-","_") + loadname = loadname.replace(".","_") + loadname = loadname.replace("&","and") + try: + int(loadname[0]) + loadname="_" + loadname + except: + pass + LoadDico[loadname]= {} + LoadDico[loadname]['NAME'] = carray[0][i].strip() + LoadDico[loadname]['ID'] = carray[1][i] + LoadDico[loadname]['EXNAME'] =carray[2][i] + LoadDico[loadname]['NUMBER']=iarray[0][i] + LoadDico[loadname]['P']=np.real(xdata)[0][i] + LoadDico[loadname]['Q']=np.imag(xdata)[0][i] + + #Extract Generators + sid = -1 #all buses + flag = 1 #all in service loads/generators (4 all loads/generators) + + string = ['NUMBER'] + ierr,iarray = psspy.amachint(sid,flag,string) + + string = ['NAME','ID','EXNAME'] + ierr,carray = psspy.amachchar(sid,flag,string) + + rstrings = ['pgen','qgen','mbase','pmax','qmax','pmin','qmin'] + ierr, rarray = psspy.amachreal(sid, flag, rstrings) + + MachineDico = {} # [Bus name, machine ID, extended bus name, bus number] + for i in range(len(iarray[0])): + idname = "Gr" + carray[1][i].strip() +## try: +## idname = "Gr" + str(int(carray[1][i])) +## except: +## idname = "Gr" + carray[1][i] + machinename = carray[0][i].strip()+ "__" + idname + machinename = machinename.replace(" ","_") + machinename = machinename.replace("-","_") + machinename = machinename.replace(".","_") + machinename = machinename.replace("&","and") + try: + int(machinename[0]) + machinename="_" + machinename + except: + pass + MachineDico[machinename]={} + MachineDico[machinename]['NAME'] = carray[0][i].strip() + MachineDico[machinename]['ID'] = carray[1][i] + MachineDico[machinename]['EXNAME'] =carray[2][i] + MachineDico[machinename]['NUMBER']=iarray[0][i] + MachineDico[machinename]['P']=rarray[0][i] + MachineDico[machinename]['Q']=rarray[1][i] + MachineDico[machinename]['PMAX']=rarray[3][i] + MachineDico[machinename]['QMAX']=rarray[4][i] + MachineDico[machinename]['PMIN']=rarray[5][i] + MachineDico[machinename]['QMIN']=rarray[6][i] + + #Extract Motors + sid = -1 #all buses + flag = 1 #all in service loads/generators (4 all loads/generators) + + string = ['NUMBER','PSETCODE','BASECODE'] + ierr,iarray = psspy.aindmacint(sid,flag,string) + + string = ['NAME','ID','EXNAME'] + ierr,carray = psspy.aindmacchar(sid,flag,string) + + rstrings = ['psetpoint','mbase','p','q'] + ierr, rarray = psspy.aindmacreal(sid, flag, rstrings) + + + MotorDico = {} # [Bus name, machine ID, extended bus name, bus number] + for i in range(len(iarray[0])): + idname = "Mo" + carray[1][i].strip() +## try: +## idname = "Gr" + str(int(carray[1][i])) +## except: +## idname = "Gr" + carray[1][i] + motorname = carray[0][i].strip()+ "__" + idname + motorname = motorname.replace(" ","_") + motorname = motorname.replace("-","_") + motorname = motorname.replace(".","_") + motorname = motorname.replace("&","and") + try: + int(motorname[0]) + motorname="_" + motorname + except: + pass + MotorDico[motorname]={} + MotorDico[motorname]['NAME'] = carray[0][i].strip() + MotorDico[motorname]['ID'] = carray[1][i] + MotorDico[motorname]['EXNAME'] =carray[2][i] + MotorDico[motorname]['NUMBER']=iarray[0][i] + MotorDico[motorname]['PSETCODE']=iarray[1][i] + MotorDico[motorname]['BASECODE']=iarray[2][i] + MotorDico[motorname]['PSETPOINT']=rarray[0][i] + MotorDico[motorname]['MBASE']=rarray[1][i] + MotorDico[motorname]['P']=rarray[2][i] + MotorDico[motorname]['Q']=rarray[3][i] + + + #Extract Lignes + sid = -1 + owner = 1 + ties = 1 + flag = 2 #6 for two-winding transfos + entry = 1 #each branch once, not both directions + string = ['FROMNUMBER','TONUMBER'] + ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string) + string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID'] + ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string) + + LineDico = {} #[linename, Bus name 1, Bus name 2, ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2] + for i in range(len(iarray[0])): + idname = carray[4][i].strip() + #idname = carray[4][i] + if '@' in idname: + idname = idname.replace('@','Br') + elif '*' in idname: + idname = idname.replace('*','Sw') + else: + try: + idname = 'Li' + str(int(idname)) + except: + idname = 'Li' + idname + linename =carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname + linename = linename.replace(" ","_") + linename = linename.replace("-","_") + linename = linename.replace(".","_") + linename = linename.replace("&","and") + try: + int(linename[0]) + linename="_" + linename + except: + pass + if NoBreakersandSwitches: + if 'Br' not in idname and 'Sw' not in idname: + LineDico[linename]={} + LineDico[linename]['FROMNAME']=carray[0][i].strip() + LineDico[linename]['TONAME']=carray[1][i].strip() + LineDico[linename]['ID']=carray[4][i] + LineDico[linename]['FROMEXNAME']=carray[2][i] + LineDico[linename]['TOEXNAME']=carray[3][i] + LineDico[linename]['FROMNUMBER']=iarray[0][i] + LineDico[linename]['TONUMBER']=iarray[1][i] + + #Extract Branches + sid = -1 + owner = 1 + ties = 1 + flag = 4 # lines & transfos + entry = 1 #each branch once, not both directions + string = ['FROMNUMBER','TONUMBER'] + ierr, iarray = psspy.abrnint(sid, owner, ties, flag, entry, string) + string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID'] + ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string) + + BranchesDico = {} #[linename, Bus name 1, Bus name 2, ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2] + for i in range(len(iarray[0])): + idname = carray[4][i] + if '@' in idname: + idname = idname.replace('@','Br') + elif '*' in idname: + idname = idname.replace('*','Sw') + else: + idname = 'LI' + idname + linename = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname + linename = linename.replace(" ","_") + linename = linename.replace("-","_") + linename = linename.replace(".","_") + linename = linename.replace("&","and") + try: + int(linename[0]) + linename = "_" + linename + except: + pass + if linename[-1] == '_': + linename = linename[:-1] + BranchesDico[linename] = {} + BranchesDico[linename]['FROMNAME'] = carray[0][i].strip() + BranchesDico[linename]['TONAME'] = carray[1][i].strip() + BranchesDico[linename]['ID'] = carray[4][i] + BranchesDico[linename]['FROMEXNAME'] = carray[2][i] + BranchesDico[linename]['TOEXNAME'] = carray[3][i] + BranchesDico[linename]['FROMNUMBER'] = iarray[0][i] + BranchesDico[linename]['TONUMBER'] = iarray[1][i] + + + #Extract Transfos + sid = -1 + owner = 1 + ties = 1 + flag = 6 #two-winding transfos + entry = 1 #each branch once, not both directions + string = ['FROMNUMBER','TONUMBER'] + ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string) + string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID'] + ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string) + + TfoDico = {} #[linename, Bus name 1, Bus name 2, machine ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2] + for i in range(len(iarray[0])): + idname = 'Tr' + carray[4][i].strip() +## try: +## idname = 'Tr' + str(int(carray[4][i])) +## except: +## idname = 'Tr' + carray[4][i] + tfoname = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname + tfoname = tfoname.replace(" ","_") + tfoname = tfoname.replace("-","_") + tfoname = tfoname.replace(".","_") + tfoname = tfoname.replace("&","and") + try: + int(tfoname[0]) + tfoname="_" + tfoname + except: + pass + TfoDico[tfoname]={} + TfoDico[tfoname]['FROMNAME']=carray[0][i].strip() + TfoDico[tfoname]['TONAME']=carray[1][i].strip() + TfoDico[tfoname]['ID']=carray[4][i] + TfoDico[tfoname]['FROMEXNAME']=carray[2][i] + TfoDico[tfoname]['TOEXNAME']=carray[3][i] + TfoDico[tfoname]['FROMNUMBER']=iarray[0][i] + TfoDico[tfoname]['TONUMBER']=iarray[1][i] + TfoDico[tfoname]['#WIND']=2 + + #Extract 3 winding Transfos + sid = -1 #assume a subsystem containing all buses in working case + owner_3flow = 1 #1 = use bus ownership 2 = use tfo ownership + ties_3flow = 3 #ignored bc sid is negative. 3 = interior subsystem and subsystem tie 3 winding transformers + flag=3 #all 3 winding transfo windings + string = ['wind1number','wind2number','wind3number'] + ierr,iarray = psspy.awndint(sid,owner,ties,flag,entry,string) + string = ['wind1name','wind2name','wind3name','wind1exname','wind2exname','wind3exname','id'] + ierr,carray = psspy.awndchar(sid,owner,ties,flag,entry,string) + + #[Bus name 1, Bus name 2, Bus name 3, machine ID, extended bus name 1, extended bus name 2, extended bus name 3, bus number 1, bus number 2, bus number 3] + for i in range(len(iarray[0])): + idname = 'Tr' + carray[6][i].strip() +## try: +## idname = 'Tr' + str(int(carray[4][i])) +## except: +## idname = 'Tr' + carray[4][i] + tfoname = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + carray[2][i].strip() + "__" + idname + tfoname = tfoname.replace(" ","_") + tfoname = tfoname.replace("-","_") + tfoname = tfoname.replace(".","_") + tfoname = tfoname.replace("&","and") + try: + int(tfoname[0]) + tfoname="_" + tfoname + except: + pass + TfoDico[tfoname]={} + TfoDico[tfoname]['FROMNAME']=carray[0][i].strip() + TfoDico[tfoname]['TONAME']=carray[1][i].strip() + TfoDico[tfoname]['3NAME']=carray[2][i].strip() + TfoDico[tfoname]['ID']=carray[6][i] + TfoDico[tfoname]['FROMEXNAME']=carray[3][i] + TfoDico[tfoname]['TOEXNAME']=carray[4][i] + TfoDico[tfoname]['3EXNAME']=carray[5][i] + TfoDico[tfoname]['FROMNUMBER']=iarray[0][i] + TfoDico[tfoname]['TONUMBER']=iarray[1][i] + TfoDico[tfoname]['3NUMBER']=iarray[2][i] + TfoDico[tfoname]['#WIND']=3 + + #print MachineDico, LoadDico, LineDico, TfoDico, MotorDico, BusDico, BranchesDico, BusNominal + return MachineDico, LoadDico, LineDico, TfoDico, MotorDico, BusDico, BranchesDico, BusNominal + + + diff --git a/ProcessOutputs_Eficas/ProcessOutputs_Cata.py b/ProcessOutputs_Eficas/ProcessOutputs_Cata.py new file mode 100644 index 00000000..70144662 --- /dev/null +++ b/ProcessOutputs_Eficas/ProcessOutputs_Cata.py @@ -0,0 +1,240 @@ +# -*- 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 * +import opsPSEN_N1 +import pn +# + +# import types +class Tuple: + def __init__(self,ntuple): + self.ntuple=ntuple + + def __convert__(self,valeur): + import types + 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 +JdC = JDC_CATA ( code = 'PSEN', + execmodul = None, + regles = ( AU_MOINS_UN ( 'CASE_SELECTION', 'CONTINGENCY_PROCESSING' ), + AU_MOINS_UN ( 'CONTINGENCY_SELECTION','N_PROCESSING_OPTIONS','CONTINGENCY_PROCESSING' ), + PRESENT_PRESENT ( 'CONTINGENCY_SELECTION','CONTINGENCY_OPTIONS' ), + # AU_MOINS_UN ( 'SIMULATION' ), + # AU_PLUS_UN ( 'PSSE_PARAMETERS' ), + AU_PLUS_UN ( 'CASE_SELECTION' ), + AU_PLUS_UN ( 'CONTINGENCY_OPTIONS' ), + AU_PLUS_UN ( 'CONTINGENCY_SELECTION' ), + AU_PLUS_UN ( 'CONTINGENCY_PROCESSING' ), + AU_PLUS_UN ( 'N_PROCESSING_OPTIONS' ), + # AU_PLUS_UN ( 'N_1_LINES' ), + # AU_PLUS_UN ( 'N_1_LOADS' ), + # AU_PLUS_UN ( 'N_1_TRANSFORMERS' ), + + ), + ) # Fin JDC_CATA + +MODIFICATION_CATALOGUE = MACRO ( nom = "MODIFICATION_CATALOGUE", + sd_prod = pn.modification_catalogue, + op_init= pn.modification_catalogue2, + op=None, + UIinfo={"groupes":("CACHE")}, + Fonction=SIMP(statut='o', typ='TXM', into=['ajoutDefinitionMC']), + Etape=SIMP(statut='o', typ='TXM',), + Genea=SIMP(statut='o', typ='TXM', min=0, max='**'), + NomSIMP=SIMP(statut='o', typ='TXM',), + TypeSIMP=SIMP(statut='o', typ='TXM',), + PhraseArguments=SIMP(statut='o', typ='TXM',), +) +# -------------------------------------------------- +# 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 about the different categories.\nThe 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', + case = FACT(statut='o',max='**', + case_name=SIMP(statut='o',typ='TXM'), + csv_file= SIMP(statut='o', typ = ('Fichier', 'CSV file (*.csv);;All Files (*)',),),), +# 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 = (AU_MOINS_UN('AvgBranchLoad', 'AvgBranchLoadPercent','AvgTransformerLoad','AvgTransformerLoadPercent','AvgHighVoltage', 'AvgHighVoltagePercent','AvgLowVoltage', 'AvgLowVoltagePercent'), + EXCLUS('AvgBranchLoad', 'AvgBranchLoadPercent'),EXCLUS('AvgTransformerLoad','AvgTransformerLoadPercent'),EXCLUS('AvgHighVoltage', 'AvgHighVoltagePercent'),EXCLUS('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, + op = None, + fichier_ini = 1, + fr = "", + ang="", + XLS_file = SIMP(statut="f", typ = ('Fichier', 'XLS file (*.xls);;All Files (*)',),), + b_TabList = BLOC(condition="XLS_file != None and XLS_file != ''", + TabList = SIMP(statut = 'o', typ = 'TXM', min = 0, max = '**', defaut = (), homo = 'SansOrdreNiDoublon'), + + ), + + ) + +Ordre_Des_Commandes = ('CASE_SELECTION' , 'N_PROCESSING_OPTIONS' , 'CONTINGENCY_SELECTION', 'CONTINGENCY_OPTIONS' ,'CONTINGENCY_PROCESSING',) +Classement_Commandes_Ds_Arbre = ('CASE_SELECTION' , 'N_PROCESSING_OPTIONS' , 'CONTINGENCY_SELECTION', 'CONTINGENCY_OPTIONS' ,'CONTINGENCY_PROCESSING',) diff --git a/ProcessOutputs_Eficas/properties.py b/ProcessOutputs_Eficas/properties.py new file mode 100644 index 00000000..1d328a46 --- /dev/null +++ b/ProcessOutputs_Eficas/properties.py @@ -0,0 +1,24 @@ +#@ MODIF properties Accas DATE 11/06/2008 AUTEUR aster M.ADMINISTRATEUR +# RESPONSABLE D6BHHHH J-P.LEFEBVRE +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM 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 +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# ====================================================================== +# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR +# DE LA VERSION DU CODE_ASTER ASSOCIE +#---------------------------------------------------------------------- +version = "1.2" +date = "25/05/2010" +exploit = False diff --git a/UiQT5/eficas_en.ts b/UiQT5/eficas_en.ts index 6cf1e9a9..28a3e1fe 100644 --- a/UiQT5/eficas_en.ts +++ b/UiQT5/eficas_en.ts @@ -1,2173 +1,2065 @@ - + @default - + lecture du fichier impossible : - unable to read file : + unable to read file : - + Impossible d'ouvrir le fichier %s - unable to open file %s + unable to open file %s - + Impossible de convertir le fichier Python qui doit contenir des erreurs. On retourne le fichier non converti. Prevenir la maintenance. %s - Unable to translate the file. it probably contains mistake + Unable to translate the file. it probably contains mistake ask eficas team %s - + Format de sortie : %s, non supporte - Unsupported format %s + Unsupported format %s - + Impossible d'ouvrir le fichier : %s - unable to open file: %s + unable to open file: %s - + Erreur ! Erreur ! - Error! + Error! - + Erreur rencontree dans recherche_enfants : %s - Error in recherche_enfants : %s + Error in recherche_enfants : %s - + Erreur dans la creation du mot-cle : %s - Error when creating %s + Error when creating %s - + Impossible d'ouvrir le fichier : %s - unable to open file : %s + unable to open file : %s - + le texte a analyser n'est pas celui d'une commande ou d'un operateur : - text is no eficas text: + text is no eficas text: - + Erreur dans la recherche du nom de la commande : - error when searching command's name : + error when searching command's name : - + Erreur dans la recherche des args de la commande : - error when searching argument's command : + error when searching argument's command : - + Erreur dans la recherche du nom de la commande : - error when searching command's name : + error when searching command's name : - + Erreur dans la recherche des args de la commande : - error when searching argument's command : + error when searching argument's command : - + %d n'est pas un index valide pour append_brother - %d is not a valid index for append-brother + %d is not a valid index for append-brother - + le fichier de commandes %s n'existe pas - commands file %s does not exist + commands file %s does not exist - + un fichier de commandes doit etre defini avant une poursuite %s - You have to define principal commands file before a secondary (poursuite) file %s + You have to define principal commands file before a secondary (poursuite) file %s - + le fichier poursuite %s n'existe pas - the secondary (poursuite) file does not exist + the secondary (poursuite) file does not exist - + include mal defini %s - include is not correct %s + include is not correct %s - + un fichier de commandes doit etre defini avant un include %s - You have to define principal commands file before include %s + You have to define principal commands file before include %s - + le fichier include %s n'existe pas - include file does not exist + include file does not exist - + jdc %(v_1)s, le fichier de commandes %(v_2)s n'existe pas v_1 - jdc %(v_1)s : .comm %(v_2)s does not exist + jdc %(v_1)s : .comm %(v_2)s does not exist - + le fichier jdc %s n'existe pas - file %s does not exist + file %s does not exist - + jdc %s manque option jdc dans section jdc - jdc %s does not have jdc option in command line + jdc %s does not have jdc option in command line - + %(v_1)s include %(v_2)s : %(v_3)s v_1 - %(v_1)s include %(v_2)s : %(v_3)s + %(v_1)s include %(v_2)s : %(v_3)s - + %(v_1)s fichier poursuite: %(v_2)s v_1 - %(v_1)ssecondary (poursuite) file %(v_2)s + %(v_1)ssecondary (poursuite) file %(v_2)s - + nom etude : %s - study's name : %s + study's name : %s - + utilisation : %prog [options] - use : %prog[options] + use : %prog[options] - + nom du fichier de commandes - principal .comm file's name + principal .comm file's name - + nom du fichier poursuite - secondary (poursuite) file's name + secondary (poursuite) file's name - + numero d'unite suivi du nom du fichier include - unit number and include file's name + unit number and include file's name - + fichier decrivant une etude - file containing a study + file containing a study - + version de catalogue a utiliser - catalog's version + catalog's version - + nom du code a utiliser - code's name + code's name - + niveau de debug - debug level + debug level - + schema - schema + schema - + Nombre incorrect d'arguments - incorrect number of arguments + incorrect number of arguments - + Localisation specifiee pour l'application. - specified localization for the application. + specified localization for the application. - + Impossible de transferer les fichiers requis dans : %s - unable to transfer files to : %s + unable to transfer files to : %s - + Erreur - error + error - + Erreurs fatales - fatale error + fatale error - + Impossible reconstruire commande - unable to construct command + unable to construct command - + Objet commentaire non valorise - comment object has no value + comment object has no value - + Debut Fonction %s - start function %s + start function %s - + Fin Fonction %s - end function %s + end function %s - + Nom de concept deja defini : %s - Concept's name %s is already existing + Concept's name %s is already existing - + Longueur incorrecte - incorrect length + incorrect length - + L'attribut 'min' doit etre un entier : - min must be an integer : + min must be an integer : - + L'attribut 'max' doit etre un entier : - max must be an integer : + max must be an integer : - + Nombres d'occurrence min et max invalides : - min and max are invalid: + min and max are invalid: - + L'attribut 'fr' doit etre une chaine de caracteres - 'fr' must be a string + 'fr' must be a string - + L'attribut 'statut' doit valoir 'o','f','c' ou 'd' - values for statut arguments are : 'o','f','c' or 'd' + values for statut arguments are : 'o','f','c' or 'd' - + L'attribut 'docu' doit etre une chaine de caracteres - docu must be a string + docu must be a string - + Fin - end + end - + Le parametre EVAL %s ne peut valoir None - None is not a valid value for Eval parameter %s + None is not a valid value for Eval parameter %s - + Pas de nom donne au parametre EVAL - No name for parameter EVAL + No name for parameter EVAL - + Un nom de parametre ne peut depasser 8 caracteres - parameter's name can not exceed 8 characters + parameter's name can not exceed 8 characters - + Un concept de nom %s existe deja ! - Concept's name %s is already existing! + Concept's name %s is already existing! - + ERREUR - ERROR + ERROR - + Format pas implemente : %s - format : %s not implemented + format : %s not implemented - + Type d'objet non prevu : %s - object type not expected : %s + object type not expected : %s - + ce groupe de maillage %s est associe a au moins un materiau et au moins une source. - mesh group %s is associated with at least one material and at least a source. + mesh group %s is associated with at least one material and at least a source. - + ce groupe de maillage %s n'est associe a aucun materiau ou source. - mesh group %s is associated with no material or no source. + mesh group %s is associated with no material or no source. - - ATTENTION! Une source constante n'est possible qu'a frequence nulle en regime frequentiel - - - - + toutes les donnees ne sont pas connues - all data are not available + all data are not available - + Fichier patron %s n'existe pas. - pattern file %s does not exist. + pattern file %s does not exist. - + Pas supporte - not implemented + not implemented - + Entite inconnue ou interdite :%s - Unknown or unsupported entity : %s + Unknown or unsupported entity : %s - + Entite inconnue ou interdite :%s. Elle est ignoree - Unknown or unsupported entity : %s. ignored + Unknown or unsupported entity : %s. ignored - + Les tuples ne sont pas supportes pour le format ini :%s - Tuple are not allowed for format ini : %s + Tuple are not allowed for format ini : %s - + Type de valeur non supportee par le format ini :%(nom)s %(exception)s nom - Unsupported type of value for .ini format %(nom)s + Unsupported type of value for .ini format %(nom)s %(exception)s - + Il y a un pb a la Creation du XML - problem when creating XML + problem when creating XML - + Il y a un pb a la Creation du STD - problem when creating STD + problem when creating STD - + Entite inconnue ou interdite : %s. Elle est ignoree - unkown ou unsupported entity : %s. ignored + unkown ou unsupported entity : %s. ignored - + Tag %s non-defini. Ceci est un bogue interne. en informer les developpeurs. - Tag %s not defined. Ask developpeurs team. + Tag %s not defined. Ask developpeurs team. - + Le mot-cle %s est obligatoire. - mandatory keyword : %s. + mandatory keyword : %s. - + concept %(inst_name)s de type %(class_name)s inst_name - concept %(inst_name)s of type %(class_name)s + concept %(inst_name)s of type %(class_name)s - + Un nom de concept doit etre un identificateur Python - concept's name must be a python identifier + concept's name must be a python identifier - + Concept existant - allready existing concept + allready existing concept - + Operateur reentrant mais concept non existant - operator 'reentrant' but concept does not exist + operator 'reentrant' but concept does not exist - + Operateur reentrant et concept existant trouve - Operator 're-entrant' and concept exists + Operator 're-entrant' and concept exists - + Concept deja existant et de mauvais type - already existing concept of not supported type + already existing concept of not supported type - + Nommage du concept refuse : un concept de meme nom existe deja - Name is refused : already existing concept + Name is refused : already existing concept - + Nommage du concept effectue - Concept named + Concept named - + Nommage impossible %s - unable to name %s + unable to name %s - + La liste des arguments d'une formule doit etre entre parentheses : parenthese ouvrante manquante - formula expects a list of arguments : no left parenthesis + formula expects a list of arguments : no left parenthesis - + La liste des arguments d'une formule doit etre entre parentheses : parenthese fermante manquante - formula expects a list of arguments : no right parenthes + formula expects a list of arguments : no right parenthes - + Pas de nom donne a la FORMULE - no name given + no name given - + Un nom de FORMULE ne peut depasser 8 caracteres - name too long (8 characters max) + name too long (8 characters max) - + Un nom de FORMULE ne peut pas commencer par un chiffre - name does not begin with a figure + name does not begin with a figure - + Le type de la valeur retournee n'est pas specifie - no type is specified for the return value + no type is specified for the return value - + Une formule ne peut retourner une valeur de type : %s - impossible to return a value of type : %s + impossible to return a value of type : %s - + Impossible d'ajouter la commande - unable to add the keyword (commande) + unable to add the keyword (commande) - + Impossible d ajouter la commande - unable to add the keyword (commande) + unable to add the keyword (commande) - + Pas implemente - not implemented + not implemented - + Nom de concept deja defini - already defined concept + already defined concept - + Nom de concept deja defini : - already defined concept : + already defined concept : - + Impossible de trouver le fichier correspondant a l'unite - unable to find file corresponding to unit + unable to find file corresponding to unit - + n'est pas un fichier existant - is not an existing file + is not an existing file - + Fichier invalide %s - invalid file %s + invalid file %s - + Impossible de construire le jeu de commandes correspondant au fichier - unable to create the jdc corresponding to the file + unable to create the jdc corresponding to the file - + Erreur lors de l'evaluation du fichier inclus - Error when reading the 'include' file + Error when reading the 'include' file - + Ce fichier ne sera pas pris en compte %s - the file is ignored + the file is ignored %s - + Ce fichier ne sera pas pris en compte Le fichier associe n'est pas defini - the file is ignored : associated file is not defined + the file is ignored : associated file is not defined - + Le fichier n est pas defini - file is not defined + file is not defined - + le fichier doit contenir une unique variable de sortie - file must declare a single output variable + file must declare a single output variable - + Fichier invalide - invalid file + invalid file - + Le contenu de ce fichier ne sera pas pris en compte %s - the file will be ignored : + the file will be ignored : %s - + Le fichier INCLUDE n est pas defini - include file is not defined + include file is not defined - + Le contenu de ce fichier ne sera pas pris en compte - file will be ignored + file will be ignored - + Erreur lors de l'evaluation du fichier poursuite - Error when creating secondary (poursuite) file + Error when creating secondary (poursuite) file - + L'objet %(v_1)s ne peut etre un fils de %(v_2)s v_1 - Object %(v_1)s can not be a child for %(v_2)s + Object %(v_1)s can not be a child for %(v_2)s - + L'objet %s ne peut pas etre repete - Object %s can not be repeated + Object %s can not be repeated - + Erreur - mclist inexistante : %s - Error - mclist does not exist : %s + Error - mclist does not exist : %s - + Erreur - mot cle facteur de nom : %s - Error - keyword "mot-clef facteur" nammed : %s + Error - keyword "mot-clef facteur" nammed : %s - + traitement non-prevu - unexpected task + unexpected task - + L'objet %s ne peut pas etre ajoute - Object %s cannot be add + Object %s cannot be add - + None n'est pas une valeur autorisee - None is not a valid value + None is not a valid value - + un concept de meme nom existe deja - concept already exists + concept already exists - + Concept cree - concept created + concept created - + La matrice n'est pas une matrice %(n_lign)d sur %(n_col)d n_lign - matrix is not a %(n_lign)d x %(n_col)d matrix + matrix is not a %(n_lign)d x %(n_col)d matrix - + Decommenter - uncomment + uncomment - + Decommente la commande - uncomment the command + uncomment the command - + Impossible de supprimer un mot-cle obligatoire - mandatory keyword cannot be deleted + mandatory keyword cannot be deleted - + Mot-cle %s supprime - Keyword %s deleted + Keyword %s deleted - + Pb interne : impossible de supprimer ce mot-cle - internal problem : unable to delete keyword + internal problem : unable to delete keyword - + Commentaire supprime - comment is deleted + comment is deleted - + Commande %s supprimee - command %s is deleted + command %s is deleted - + Pb interne : impossible de supprimer cet objet - internal problem : unable to delete object + internal problem : unable to delete object - + Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas - unable to convert .comm file in order to open it with Eficas + unable to convert .comm file in order to open it with Eficas - + Include vide - include file is empty + include file is empty - + L'include doit etre correctement initialise pour etre visualise - include file must be correct + include file must be correct - + Impossible de supprimer ce mot-clef - unable to delete this keyword + unable to delete this keyword - + View3D - View3D + View3D - + affiche dans Geom les elements de structure - diplay SE in Geom + diplay SE in Geom - + Graphique - graphic + graphic - + affiche la distribution - display distribution + display distribution - + Impossible de supprimer un mot-clef obligatoire - unable to delete a mandatory keyword + unable to delete a mandatory keyword - + Mot-clef %s supprime - Keyword %s is deleted + Keyword %s is deleted - + Definition d'un parametre - defines a parameter + defines a parameter - + Import du fichier de Configuration - import configuration file + import configuration file - + Erreur a la lecture du fichier de configuration %s - Error when reading configuration file + Error when reading configuration file - + Erreur fatale au chargement de %s - fatal error when loading %s + fatal error when loading %s - + Erreur fatale au chargement d'un fichier - Fatal error when loading file + Fatal error when loading file - + fichier modifie - file updated + file updated - + Attention! fichier change hors EFICAS - Warning ! this file was modified outside Eficas + Warning ! this file was modified outside Eficas - + Type de fichier non reconnu - unsupported file type + unsupported file type - + EFICAS ne sait pas ouvrir le type de fichier %s - Eficas is not able to open this file's type : %s + Eficas is not able to open this file's type : %s - + EFICAS ne sait pas ouvrir ce type de fichier - Eficas is not able to open this file's type + Eficas is not able to open this file's type - + Copie impossible - unable to copy + unable to copy - + Veuillez selectionner un objet a copier - you have to select an object to copy + you have to select an object to copy - + Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne - You have to select a single object : copy will be done after the selected node + You have to select a single object : copy will be done after the selected node - + Aucun Objet n a ete copie ou coupe - No object was cut or copied + No object was cut or copied - + Copie refusee - rejected copy + rejected copy - + Eficas n a pas reussi a copier l objet - Eficas cannot copy this object + Eficas cannot copy this object - + Copie refusee pour ce type d objet - Copy rejected : bad object type + Copy rejected : bad object type - + Deplacement refuse - move rejected + move rejected - + Deplacement refuse entre 2 fichiers. Seule la copie est autorisee - move rejected. no move between two files : only copy is available + move rejected. no move between two files : only copy is available - + Copie impossible a cet endroit - unable to copy here + unable to copy here - + Veuillez selectionner une commande, un parametre, un commentaire ou une macro - select a command; a parameter, a comment or a macro + select a command; a parameter, a comment or a macro - + Choix d'un fichier XML - Choice of XML file + Choice of XML file - + Ouvrir Fichier - Open file + Open file - + Erreur a la generation - Error when generating + Error when generating - + EFICAS ne sait pas convertir ce JDC - Eficas is unable to convert JDC + Eficas is unable to convert JDC - + Format %s non reconnu - not supported format %s + not supported format %s - + Execution impossible - Unable to execute + Unable to execute - + le JDC doit etre valide pour une execution MAP - JDC has to be valid before run + JDC has to be valid before run - + le JDC doit contenir un et un seul composant - JDC must contains a single componant + JDC must contains a single componant - + sauvegarde - save + save - + Sauvegarde du Fichier - save file + save file - + Le fichier <b>%s</b> existe deja. - file <b>%s</b> already exists. + file <b>%s</b> already exists. - + &Ecraser - &Replace + &Replace - + Donnez le nom du fichier correspondant a l unite logique - Choose file corresponding to unit + Choose file corresponding to unit - + Choix d'un fichier de poursuite - Choose poursuite file + Choose poursuite file - + Le fichier %s contient une commande POURSUITE - file %s contains a POURSUITE command + file %s contains a POURSUITE command - + Traduire Fichier - file translation + file translation - + Fichiers JDC (*.comm);;Tous les Fichiers (*) - JDC files(*.comm);; All FIles(*) + JDC files(*.comm);; All FIles(*) - + Fichier Traduit : %s - Translated file : %s + Translated file : %s - + Pas de difference entre le fichier origine et le fichier traduit - No difference between the primary file and the translated file + No difference between the primary file and the translated file - + %d versions du catalogue sont disponibles - %d catalogs versions are available + %d catalogs versions are available - + &Ok - &Ok + &Ok - + Entrez - enter + enter - + valeurs - values + values - + Entrez entre - enter between + enter between - + et - and + and - + Selection - selection + selection - + Type de base inconnu - unkown type + unkown type - + Visualisation Fichier - view file + view file - + Impossibilite d'afficher le Fichier - Unable to display file + Unable to display file - + Sauvegarder Fichier - save File + save File - + Fichier selectionne - file selected + file selected - + expression valide - valid expression + valid expression - + expression invalide - unvalid expression + unvalid expression - + expression n est pas de la forme a+bj - expression is not as a+bj + expression is not as a+bj - + entrer une seule valeur SVP - Please, enter a single value + Please, enter a single value - + saisir le type de complexe - choose complex's type + choose complex's type - + Sauvegarder le fichier - save file + save file - + Le fichier <b>%(v_1)s</b> n'a pu etre sauvegarde. <br>Raison : %(v_2)s v_1 - file <b>%(v_1)s</b> was not saved. Raison : %(v_2)s + file <b>%(v_1)s</b> was not saved. Raison : %(v_2)s - + &Recents - &Recently Opened + &Recently Opened - + Aide specifique - code's help + code's help - + Traduction - translation + translation - + Options - Options - - - - TraduitV7V8 - - - - - TraduitV8V9 - - - - - TraduitV9V10 - + Options - - Acquiert Groupe Maille - - - - - Specificites Maille - - - - + version - version + version - + pour - for + for - + Aide Indisponible - no help avalaible + no help avalaible - + Parametrage - Options + Options - + Veuillez d abord choisir un code - Choose a code + Choose a code - + Pas de possibilite de personnalisation de la configuration - no options avalaible for configuration + no options avalaible for configuration - + &Effacer - &Delete + &Delete - + Veuillez entrer le complexe sous forme aster ou sous forme python - enter a complex + enter a complex - + Import du catalogue - Loading catalog + Loading catalog - + Pas de catalogue defini pour le code - No catalog for this code + No catalog for this code - + Aucun catalogue trouve - No catalog + No catalog - + avec le catalogue - with catalog + with catalog - + Impossible d'importer le catalogue - unable to load catalog + unable to load catalog - + Choix d une version du code - Choose a version for + Choose a version for - + Choix d une version - choose a version + choose a version - + Parametre - parameter + parameter - + Insere un parametre - insert a parameter + insert a parameter - + item invalide - invalid item + invalid item - + l item doit etre valide - item must be valid + item must be valid - + apres - after + after - + Insere un commentaire apres la commande - insert a comment after the command + insert a comment after the command - + avant - before + before - + Insere un commentaire avant la commande - insert a comment before the command + insert a comment before the command - + Insere un parametre apres la commande - insert a parameter after the command + insert a parameter after the command - + Insere un parametre avant la commande - insert a parameter before the commande + insert a parameter before the commande - + Supprimer - delete + delete - + supprime le mot clef - delete keyword + delete keyword - + Documentation - documentation + documentation - + documentation sur la commande - command's documentation + command's documentation - + Documentation Vide - empty documentation + empty documentation - + Aucune documentation n'est associee a ce noeud - no documentation is available for this node + no documentation is available for this node - + impossible de trouver la commande - unable to find command + unable to find command - + Lecteur PDF - PDF reader + PDF reader - + impossible d'ouvrir - unable to open + unable to open - + Commentaire - Comment + Comment - + ce noeud - this node + this node - + commente le noeud - comment this node + comment this node - + Fichiers JDC (*.comm);;Tous les Fichiers (*) - JDC Files (*.comm);;All Files(*) + JDC Files (*.comm);;All Files(*) - + &Quitter - &Exit + &Exit - + Quitter - Exit + Exit - + Fichier Duplique - file is duplicated + file is duplicated - + Le fichier ne sera pas sauvegarde. - File will not be saved. + File will not be saved. - + &Annuler - &Cancel + &Cancel - + Fichier - File + File - + Le fichier <b>%s</b> est deja ouvert. - File <b>%s</b> is already open. + File <b>%s</b> is already open. - + &Duplication - &Duplication + &Duplication - + &Abort - &Abort + &Abort - + Fichier Modifie - File is modified + File is modified - + Le fichier %s n a pas ete sauvegarde. - file %s was not saved. + file %s was not saved. - + &Sauvegarder - &Save + &Save - + Erreur a l'evaluation : %s - Error when loadind : + Error when loadind : %s - + Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom - File %s already exists : unable to create a directory with the same name + File %s already exists : unable to create a directory with the same name - + Creation du repertoire %s impossible Verifiez vos droits d'acces - Unable to create directory : check your access rights + Unable to create directory : check your access rights - + localisation de l'application, pour la traduction - use for application translation - - - - ERREUR! ce groupe de maille (%s) n'a pas de prefixe valable - + use for application translation - - ERREUR! ce type de bloc (%s) n'est pas valable - - - - + n'est pas un index valide pour append_brother - is not correct - no possible "append_brother" + is not correct - no possible "append_brother" - + Erreur interne - Internal error + Internal error - + La PDF de la loi ne peut pas etre affichee. - unable to display law's PDF. + unable to display law's PDF. - + Le fichier contient une commande MODEL - file contains MODEL command + file contains MODEL command - - Donnez le nom du fichier XML qui contient la description des variables - - - - + Choix unite %d - Choice for unit %d + Choice for unit %d - + Fichier pour unite - File for unit + File for unit - + La formule passee a l'interpreteur doit etre sous forme de tuple - formula must be written as tuple + formula must be written as tuple - + Debut - Beginning + Beginning - + Le parametre EVAL ne peut valoir None - None is not a valid value for EVAL + None is not a valid value for EVAL - + Pas de nom donne au parametre - No name given + No name given - + Le parametre %s ne peut valoir None - None is an incorrect value for parameter %s + None is an incorrect value for parameter %s - + Format non implemente : %s - Not implemented format + Not implemented format - + Type de valeur non supporte par le format pyth : n %(exception)s nom - unsupported type of value + unsupported type of value - + Impossible de realiser la verification de la formule - unable to verify formula + unable to verify formula - + Pb interne : impossible de supprimer ce mot-clef - internal problem : unable to delete keyword + internal problem : unable to delete keyword - + Eficas ne peut pas traiter plusieurs instructions sur la meme ligne : %s - Eficas is not able to manage many instructions on a same line + Eficas is not able to manage many instructions on a same line - + le texte a analyser n'est pas celui d'une commande ou d'un operateur : %s - text is not valid for a command or a operaor + text is not valid for a command or a operaor - + le texte a analyser n'est pas celui d'une commande connue : %(v_1)s %(v_2)s v_1 - text is not valid for command %(v_1)s %(v_2)s + text is not valid for command %(v_1)s %(v_2)s - + le texte a analyser n'est pas celui d'une commande connue : %(v_1)s %(v_2)s v_1 - text is not valid for command %(v_1)s %(v_2)s + text is not valid for command %(v_1)s %(v_2)s - + jdc %(v_1)s manque fichier comm dans section %(v_2)s v_1 - file %(v_1)s need a .comm file in section %(v_2)s + file %(v_1)s need a .comm file in section %(v_2)s - + jdc %(v_1)s fichier include %(v_2)s, %(v_3)s n'existe pas v_1 - file %(v_1)s need an include file %(v_2)s,%(v_3)s does not exist + file %(v_1)s need an include file %(v_2)s,%(v_3)s does not exist - + jdc %(v_1)s manque fichier comm dans section %(v_2)s v_1 - file %(v_1)s need a .comm file in section %(v_2)s + file %(v_1)s need a .comm file in section %(v_2)s - + jdc %(v_1)s, le fichier de commandes %(v_2)s n'existe pas v_1 - jdc%(v_1)s, .comm %(v_2)s does not exist - - - - ATTENTION! Une source constante - n'est possible qu'a frequence nulle - en regime frequentiel - - - - - ERREUR! Une forme de la source du - type WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue. - - - - - ATTENTION! Une source constante n'est - possible qu'a frequence nulle en regime frequentiel - - - - - ERREUR! Une forme de la source du type - WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue. - - - - - ERREUR! ce groupe de maille (%s) n'a pas de prefixe - indiquant le type de materiau ou de source associee - - - - - ERREUR! ce groupe de maille (%(nom)s) n'a pas - le prefixe correct pour etre associe a un type %(type_bloc)s - nom - + jdc%(v_1)s, .comm %(v_2)s does not exist - + Include Invalide. ne sera pas pris en compte - Invalid include file. text will not be included + Invalid include file. text will not be included - + Impossible de relire le fichier %s - unable to read file + unable to read file - + Le fichier include contient des erreurs - include file contains errors + include file contains errors - + PARAMETRE - PARAMETER + PARAMETER - + EFICAS ne sait pas convertir le JDC selon le format - Eficas does not know how to convert data according to the defined format + Eficas does not know how to convert data according to the defined format - + le JDC doit etre valide pour une execution - Before a run action, JDC must be valid + Before a run action, JDC must be valid - + Sauvegarder SVP avant l'execution - Save before run action + Save before run action - + Sauvegarde de l'input impossible - unable to save input file + unable to save input file - + Un JdC valide est necessaire pour creer un .input - file must be valid to create a .input file + file must be valid to create a .input file - + Choix du composant obligatoire - You have to choose a component + You have to choose a component - + Le fichier %s contient une commande INCLUDE - file %s contains an "INCLUDE" command + file %s contains an "INCLUDE" command - + Donnez le nom du fichier dont vous voulez faire une poursuite - Name the principal file + Name the principal file - + Fichiers Med (*.med);;Tous les Fichiers (*) - Med Files (*.med);;All Files(*) + Med Files (*.med);;All Files(*) - + Fichier Med - Med File + Med File - + Veuillez selectionner un fichier Med - Choose a Med file + Choose a Med file - + reel - float + float - + entier - integer + integer - + complexe - complex + complex - + l'aide n est pas installee - Help is not available + Help is not available - + Export Med vers Fichier - export Med Mesh in a file + export Med Mesh in a file - + Impossibilite d exporter le Fichier - Unable to export file + Unable to export file - + objet valide - valid object + valid object - + Valeur non modifiable - value can not be changed + value can not be changed - + Options pour - Settings + Settings - + Nombre minimal de valeurs : - minimal number of values : + minimal number of values : - + Nombre maximal de valeurs : - Maximal number of values : + Maximal number of values : - + l expression n est pas de la forme a+bj - expression must be as a+bj + expression must be as a+bj - + Valeur du mot-cle enregistree - Value is recorded + Value is recorded - + Valeur du mot-cle non autorisee - Value is not authorized + Value is not authorized - + Fichier non encore nomme - unnamed file + unnamed file - + SOURCE - SOURCE + SOURCE - + EnveloppeConnexeInducteur - Bounding_Box + Bounding_Box - - EnveloppeConnexe2 - - - - + VecteurDirecteur - Direction_Vector + Direction_Vector - + Centre - Center + Center - + SectionBobine - Section + Section - + Amplitude - Amplitude + Amplitude - + NbdeTours - NbTurns + NbTurns - + CONDUCTEUR - CONDUCTOR + CONDUCTOR - + Conductivite - Conductivity + Conductivity - + PermeabiliteRelative - Relative_Permeability + Relative_Permeability - + NOCOND - DIELECTRIC + DIELECTRIC - + VCUT - CUT + CUT - + Orientation - Orientation + Orientation - + ZS - ZS + ZS - + RepCarmel - Carmel_Directory + Carmel_Directory - + TypedeFormule - Formula + Formula - + Frequence - Frequency + Frequency - + Nb_Max_Iterations - Max_Nb_Iterations + Max_Nb_Iterations - + Erreur_Max - Max_Error + Max_Error - + Format non implemente - non implemented format + non implemented format - - Type d'objet non prevu - - - - + Fichier de donnees - data file + data file - + Tous les Fichiers (*) - all files (*) + all files (*) - + Select - select + select - + nb min de valeurs : - minimal number of values : + minimal number of values : - + nb max de valeurs atteint - maximum number of values + maximum number of values - - TraduitV10V11 - - - - - TraduitV11V12 - - - - + Sauve Format Ligne - save file in line format + save file in line format - + Valeur du mot-clef enregistree - value recorded + value recorded - + Valeur du mot-clef non autorisee : - unvalid value + unvalid value - + %s n'est pas un fichier valide - %s is not a valid file + %s is not a valid file - + : verifie les types dans un tuple - valids type in a tuple + valids type in a tuple - + Les types entres ne sont pas permis - unvalid type for values + unvalid type for values - + La cardinalite n'est pas correcte, la derniere valeur est ignoree - unvalid multiplicity. last value will be ignored + unvalid multiplicity. last value will be ignored - + n est pas un tuple de - is not a tuple + is not a tuple - + valeurs - values + values - + Valeur incorrecte - incorrect value + incorrect value - + n est pas un identifiant correct - is not a valid name + is not a valid name - + Entrer un float SVP - Float expected + Float expected - + Entrer un float inferieur a - float lower than + float lower than - + Entrer un float superieur a - float superior than + float superior than - + Mauvaise execution - bad run + bad run - + impossible d executer la methode - unable to run method + unable to run method - + Mauvaise Commande - bad command + bad command - + Aucune variable connue - no possible variable + no possible variable - + Mauvaise dimension de matrice - bad matrix dimension + bad matrix dimension - + le nombre de ligne n est pas egal a - number of lines is not + number of lines is not - + le nombre de colonne n est pas egal a - number of columns is not + number of columns is not - + Mauvaise Valeur - bad value + bad value - + l element - element + element - + n est pas correct - is not correct + is not correct - + Modification Impossible - unable to modify + unable to modify - + le parametre n'est pas valide - parameter is not valid + parameter is not valid - + n est pas un identifiant correct - is not a correct name + is not a correct name - + Valeur incorrecte: - incorrect value : + incorrect value : - + Valeur incorrecte - incorrect value + incorrect value - + Valeur correcte - valid value + valid value - + impossible d'evaluer : - unable to evaluate : + unable to evaluate : - + Un concept de nom %s existe déjà ! - already existing concept with name : %s ! + already existing concept with name : %s ! - + existe deja - already exists + already exists - + La matrice n'a pas le bon entete - header does not match with matrix + header does not match with matrix - + le mot clef - keyword + keyword - + doit etre insere avant - has to be inserted before + has to be inserted before - + insertion impossible - unable to insert keyword + unable to insert keyword - + doit etre insere apres - has to be inserted after + has to be inserted after - + Nb maximum de valeurs atteint - Maximal number of values + Maximal number of values - + pas de regle de construction pour ce jeu de commandes - No specific rules for building this dataset + No specific rules for building this dataset - + Gestion Maillage - Mesh Menu + Mesh Menu - + Acquiert groupe mailles - Read elements mesh + Read elements mesh - + Acquisition Groupe Maille - Read elements mesh + Read elements mesh - + VERSION - VERSION_EN + VERSION_EN - + NUM - NUMBER + NUMBER - + FILETYPE - FILETYPE + FILETYPE - + PARAMETERS - Parametres + Parametres - + Fichier_maillage - FichierMaillage + FichierMaillage - + Echelle_du_maillage - MeshScale + MeshScale - + Formulation - Fomulation + Fomulation - + Timeproblem - TimeProblem + TimeProblem - + spectral - EssaiSpectral + EssaiSpectral - + Basis - Basis + Basis - + Fourier - Fourier + Fourier - + Ordre - Ordre + Ordre - + FREQUENCY - Frequency + Frequency - + minimisation - Minimisation + Minimisation - + no - no + no - + yes - yes + yes - + nb_procs_para - NbProcs + NbProcs - + POLYMER - Polymer_en_Anglais + Polymer_en_Anglais - + MODEL_DATABASE - MoDEL_DATa_Anglais - - - - Objet commande commentarisé invalide - + MoDEL_DATa_Anglais ChoixCode - + Choix du code Choose code - + Veuillez choisir un code : Choose code : - + &Cancel - + Validate choice - + &OK @@ -2175,95 +2067,123 @@ Le fichier associe n'est pas defini ChoixCommandes - + DMacro DMacro - + Alphabetique alphabetic sort - + Par Groupe Sort by group - + <html><head/><body><p align="center"><span style=" text-decoration: underline;">Affichage</span></p></body></html> <html><head/><body><p align="center"><span style=" text-decoration: underline;">Order</span></p></body></html> - + affiche les commandes par ordre alphabetique display commands in alphabetic order - + affiche les commandes selon les thèmes display commands by thema - + Ordre de la modélisation ordered by modelisation - + <html><head/><body><p align="center">Filtre Commande</p></body></html> <html><head/><body><p align="center">Filters Commands</p></body></html> - + filter commands filters commands - + affiche les régles de validité display validity rules - + ... - + Règles de construction Building Rules - + Sensible à la casse case-sensitive - + Effacer Clear - + selectionne les mots qui CONTIENNENT l expression select words that CONTAINS the filter - + ré-affiche toutes les commandes re-display the list of commands + + ChoixLangue + + + Langue + lang + + + + Français + French + + + + English + English + + + + Validate choice + Validate choice + + + + &OK + &OK + + DChoixCata - + Choix d'une version du code Aster Choose a version for code Aster - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2272,17 +2192,17 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">2 catalogs are available </span></p></body></html> - + &OK &Ok - + &Cancel &Cancel - + Validate choice validate choice @@ -2290,37 +2210,37 @@ p, li { white-space: pre-wrap; } DSelVal - + Sélection de valeurs Values Selections - + Separateur marker - + espace space - + virgule comma - + point-virgule semi-colon - + Ajouter Selection add selected value - + Importer Tout imports all values @@ -2328,7 +2248,7 @@ p, li { white-space: pre-wrap; } DVisu - + Visualisation Include Materiau View Include @@ -2336,338 +2256,333 @@ p, li { white-space: pre-wrap; } Eficas - + MainWindow Main Window - + &Fichier &File - + &Aide &Help - + toolBar toolBar - + &Nouveau &New - + Ctrl+N Ctrl+N - + Nouvel Include New Include - + &Ouvrir &Open - + Ctrl+O Ctrl+O - + Enregistrer Save - + Enregistrer sous Save as - + Fermer Close - + Ctrl+W - + Fermer tout Close all - + Couper Cut - + Ctrl+X Ctrl+X - + Copier Copy - + Ctrl+C Ctrl+C - + Coller Paste - + Ctrl+V Ctrl+V - + Quitter Exit - + Ctrl+Q Ctrl+Q - + Rapport de Validation Validation Report - + Fichier Source Source File - + Fichier Résultat Result File - + Parametres Eficas Eficas Parameters - + Lecteur documentation documentation reader - + Eficas Eficas - + Version Version - + Supprimer Delete - + Rechercher Find - + Rechercher dans l'arbre d'etude Find in Data Tree - + Ctrl+F Ctrl+F - + Replier/Deplier Expand/Collapse - + Execution - Run + Run - + Execution - Run + Run - + Patrons - Patterns + Patterns - + Tab 1 - + &Edition &Edit - + &JeuDeDonnées &Data - + Shift+I - + Ctrl+S - + Ctrl+Shift+S - + Shift+V - + Chercher Mot-Clef Find Keyword - + Rechercher dans le catalogue Find Keyword in Catalog - + Shift+F - + Shift+D - + Commentaire Comment - + Shift+C - + Paramètres Parameters - + Gestion des paramètres Managing parameters - + Shift+P - + Parametre Eficas Eficas Settings - + Save Run - Save run + Save run - + Run - run + run - + &bad - + Régles du JdC Rules for dataset - - - JDCEditor - - - Save File - - - - The file <b>%1</b> could not be saved.<br>Reason: %2 - + + Cacher l'Arbre + Hide dataset tree - - JDC (*.comm);;All Files (*) - + + Afficher l'Arbre + Show dataset tree + + + JDCEditor - + &Abandonner - &Cancel + &Cancel Tuple2 - + Form - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> @@ -2675,22 +2590,22 @@ p, li { white-space: pre-wrap; } Tuple3 - + Form - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> @@ -2698,32 +2613,32 @@ p, li { white-space: pre-wrap; } Widget4a6RadioButton - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + RadioButton @@ -2731,7 +2646,7 @@ p, li { white-space: pre-wrap; } WidgetBloc - + Form @@ -2739,27 +2654,27 @@ p, li { white-space: pre-wrap; } WidgetCB - + Affiche le rapport de validation du mot-clef display validation report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -2767,87 +2682,87 @@ p, li { white-space: pre-wrap; } WidgetCommande - + Affiche le rapport de validité de la commande Display validity report for the keyword - + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> <html><head/><body><p><span style=" color:#0000ff;">command </span></p></body></html - + Nom de l'objet. Seuls, les objets valides peuvent être nommés Object Name. Only valid objects can be named - + Lance un script associé à la commande Run associated script - + ouvre un navigateur sur l'aide contextuelle open a browser to navigate to contextual help - + affiche les régles de validité display validity rules - + Détruit la commande Delete the command - + Affiche les commandes possibles display allowed commands - + &Commandes &Commands - + Shift+A, Alt+A, Alt+A, Alt+A Shift+A, Alt+A, Alt+A, Alt+A - + Affiche le formulaire de la commande précédente display previous command - + Affiche le formulaire de la commande suivante display next command - + DCommandeUnique - + ... - + << - + >> - + TextLabel @@ -2855,85 +2770,100 @@ p, li { white-space: pre-wrap; } WidgetCommentaire - + <html><head/><body><p><span style=" color:#0000ff;">Commentaire</span></p></body></html> - <html><head/><body><p><span style=" color:#0000ff;">Comment</span></p></body></html> + <html><head/><body><p><span style=" color:#0000ff;">Comment</span></p></body></html> - + Affiche les commandes possibles display allowed commands - + Shift+A, Alt+A, Alt+A, Alt+A Shift+A, Alt+A, Alt+A, Alt+A - + Détruit le commentaire - Delete the comment + Delete the comment - + &Commandes &Commands - + Affiche le formulaire de la commande précédente display previous command - + Affiche le formulaire de la commande suivante display next command - + DCommandeUnique - + ... - + << - + >> + + + Affiche le rapport de validité de la commande + Display validity report for the keyword + + + + <html><head/><body><p>Commentaire</p></body></html> + <html><head/><body><p>Comment</p></body></html> + + + + Détruit la commande + Delete the command + WidgetDate - + Affiche le rapport de validation du mot-clef Display validity report for keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -2941,89 +2871,342 @@ p, li { white-space: pre-wrap; } WidgetFact - + Form - + ... - + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> + + + Lance un script associé à la commande + Run associated script + + + + WidgetFactHorizon + + + Form + + + + + ... + + + + + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> + + + + + Lance un script associé à la commande + Run associated script + WidgetFactPlie - + TextLabel TextLabel - + Form - + ... + + WidgetFormule + + + DCommandeUnique + + + + + Affiche le rapport de validité de la commande + Display validity report for the keyword + + + + ... + + + + + <html><head/><body><p><span style=" color:#0000ff;">Formule</span></p></body></html> + + + + + Nom de l'objet. Seuls, les objets valides peuvent être nommés + Object Name. Only valid objects can be named + + + + Détruit la commande + Delete the command + + + + Affiche les commandes possibles + + + + + &Commandes + &Commands + + + + Shift+A, Alt+A, Alt+A, Alt+A + Shift+A, Alt+A, Alt+A, Alt+A + + + + Affiche le formulaire de la commande précédente + + + + + << + + + + + Affiche le formulaire de la commande suivante + + + + + >> + + + + + <h3><p align="center"><u><b>Nom de la formule</b></u></p></h3> + + + + + <h3><p align="center"><u><b>Arguments</b></u></p></h3> + + + + + variables séparées par des "," + par ex. : x,y,z + + + + + <h3><p align="center"><u><b>Expression</b></u></p></h3> + + + + + <h1><b>(</b></h1> + + + + + <h1><b>)</b></h1> + + + + + <font size="+4" face="Helvetica"><b>=</b></font> + + + WidgetHeure - + Affiche le rapport de validation du mot-clef Display validity report for keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><br/></p></body></html> + + WidgetInactif + + + DInactif + + + + + Affiche le rapport de validité de la commande + Display validity report for the keyword + + + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + <html><head/><body><p><span style=" color:#0000ff;">command </span></p></body></html + + + + Détruit la commande + Delete the command + + + + ... + + + + + Affiche les commandes possibles + Available commands + + + + &Commandes + >&Commands + + + + Shift+A, Alt+A, Alt+A, Alt+A + Shift+A, Alt+A, Alt+A, Alt+A + + + + Affiche le formulaire de la commande précédente + previous command + + + + << + + + + + Affiche le formulaire de la commande suivante + + + + + >> + + + + + <html><head/><body><p align="center"><span style=" font-size:16pt;">Le noeud sélectionné</span></p><p align="center"><span style=" font-size:16pt;">ne correspond pas à un objet actif</span></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large;"><span style=" font-size:x-large;">Seules les commandes placées</span></p> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large;"><span style=" font-size:x-large;"> entre : DEBUT / FIN sont actives </span></p></body></html> + + + WidgetInformative - + Form + + WidgetIntoSug + + + Form + + + + + permet de gérer la liste + manage list + + + + ... + + + + + Affiche le rapport de validation du mot-clef + + + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + + + <html><head/><body><p><br/></p></body></html> + + + + + Valeurs hors liste - la valeur saisie sera ajoutée à la liste + + + + + Détruit le mot-clef + Delete the keyword + + WidgetOptionnel - + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> <html><head/><body><p><span style=" color:#0000ff;">command </span></p></body></html - + WidgetOptionnel @@ -3031,284 +3214,334 @@ p, li { white-space: pre-wrap; } WidgetParam - + <html><head/><body><p><span style=" color:#000000;">Paramètre</span></p></body></html> <html><head/><body><p><span style=" color:#000000;">Parameter</span></p></body></html> - + Détruit le commentaire - Delete the comment + Delete the comment - + Affiche les commandes possibles Display allowed commands - + &Commandes &Commands - + Shift+A, Alt+A, Alt+A, Alt+A Shift+A, Alt+A, Alt+A, Alt+A - + Affiche le formulaire de la commande précédente Display previous command - + Affiche le formulaire de la commande suivante Display next command - + <html><head/><body><p>Valeur: </p></body></html> <html><head/><body><p>Value: </p></body></html< - + <html><head/><body><p>Nom: </p></body></html> <html><head/><body><p>Name: </p></body></html> - + Verifie la valeur Valid the value - + DCommandeUnique - + ... - + << - + >> - + <html><head/><body><p><br/></p></body></html> + + + Affiche le rapport de validité de la commande + Display validity report for the keyword + + + + Détruit la commande + Delete the command + WidgetPlusieursBase - + Affiche le rapport de validation du mot-clef Display validity report for keyword - + Remonte la ligne up - + Descend la ligne down - + supprime une ligne deletes a line - + Ajoute une ligne add a line - + Montre l'ensemble des valeurs display all the value - + Sélectionne depuis Salome from salome - + Visualise dans Salome Show in salome - + Ouvre un fichier de sélection des valeurs Open a file for selection - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + permet de gérer la liste - manage list + manage list - + TextLabel - TextLabel + TextLabel WidgetPlusieursInto - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + permet de gérer la liste - manage list + manage list + + + + Cherche la valeur + Values + + + + Original + + + + + Alpha + Alpha + + + + <html><head/><body><p><br/></p></body></html> + WidgetPlusieursIntoOrdonne - + Affiche le rapport de validation du mot-clef display validity report for the keyword - + TextLabel - TextLabel + TextLabel - + Remonte d'une ligne Up - + Descend d'une ligne Down - + Détruit une ligne Delete a line - + ajoute une ligne add a line - + visualise l'ensemble des valeurs show all values - + Détruit le mot-clef Delete the keyword - + Form - + ... + + + permet de gérer la liste + manage list + - - <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + + <html><head/><body><p><br/></p></body></html> + + + + + Cherche dans la liste + find - - permet de gérer la liste - manage list + + remet le filtre à blanc + clean filter + + + + Catalogue + Catalog + + + + Alpha + Alpha WidgetPlusieursPlie - + Form - + Affiche le rapport de validité du mot-clef Display validity report for the keyword - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + permet de gérer la liste manage list - + Détruit le mot-clef Delete the keyword @@ -3316,62 +3549,62 @@ p, li { white-space: pre-wrap; } WidgetPlusieursTuple - + Form - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Remonte la ligne Up - + Descend la ligne Down - + supprime une ligne delete a line - + Ajoute une ligne add a line - + Montre l'ensemble des valeurs show all values - + Ouvre un fichier de sélection des valeurs import data from a file - + Détruit le mot-clef Delete the keyword - + TextLabel TextLabel @@ -3379,32 +3612,32 @@ p, li { white-space: pre-wrap; } WidgetRadioButton - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + RadioButton @@ -3412,37 +3645,37 @@ p, li { white-space: pre-wrap; } WidgetSDCOInto - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + <html><head/><body><p>Structures de données du type requis </p><p><br/></p></body></html> <html><head/><body><p>Objects with the recquired type</p><p><br/></p></body></html> - + <html><head/><body><p>ou Nom du concept</p></body></html> or name the object - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -3450,27 +3683,27 @@ p, li { white-space: pre-wrap; } WidgetSimpBase - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -3478,37 +3711,37 @@ p, li { white-space: pre-wrap; } WidgetSimpBool - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + True - + False @@ -3516,42 +3749,42 @@ p, li { white-space: pre-wrap; } WidgetSimpComplexe - + Complexe : a+bj Complex : a+bj - + Réel/Imaginaire Real/Imaginary - + Module/Phase Module/Phase - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p align="center">OU </p></body></html> @@ -3559,65 +3792,103 @@ p, li { white-space: pre-wrap; } WidgetSimpFichier - + Affiche le rapport de validité du mot-clef Display validity report for the keyword - + affiche l'explorateur de fichier open file explorer - + ouvre le fichier choisi Open the file - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + WidgetSimpSalome + + + Form + + + + + Affiche le rapport de validité du mot-clef + Display validity report for the keyword + + + + ... + + + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + + + affiche l'explorateur de fichier + open file explorer + + + + ouvre le fichier choisi + Open the file + + + + Détruit le mot-clef + Delete the keyword + + WidgetSimpTxt - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -3625,42 +3896,42 @@ p, li { white-space: pre-wrap; } WidgetTuple2 - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> @@ -3668,42 +3939,42 @@ p, li { white-space: pre-wrap; } WidgetTuple3 - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> @@ -3711,32 +3982,32 @@ p, li { white-space: pre-wrap; } WidgetUniqueSDCO - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + Attend un objet de type CO expect a CO Object - + Détruit le mot-clef Delete the keyword - + Form - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> @@ -3744,22 +4015,22 @@ p, li { white-space: pre-wrap; } WidgetVide - + Form - + ... - + <html><head/><body><p><span style=" color:#0055ff;">Label</span></p></body></html> - + Attend un objet de type XXXX. Il faut le créer object must be created @@ -3767,25 +4038,38 @@ p, li { white-space: pre-wrap; } baseWidget - + DMacro DMacro + + customPB + + + Form + + + + + PushButton + + + dView - + Dialog Dialog - + Fermer Close - + Sauver Save @@ -3793,40 +4077,63 @@ p, li { white-space: pre-wrap; } desRecherche - + Rechercher dans le JDC Find in JDC - + Suivant Next - + Next + + desRechercheCatalogue + + + Rechercher dans le Catalogue + + + + + Mot à chercher + + + + + Généalogie + + + + + Documentation + documentation + + desWidgetCreeParam - + Gestion des Paramètres Parameters - + <html><head/><body><p>Nom: </p></body></html> Name - + <html><head/><body><p>Valeur: </p></body></html> Value - + <html><head/><body><p><span style=" text-decoration: underline;">Créer un paramètre</span></p></body></html> <html><head/><body><p><span style=" text-decoration: underline;">New Parameter</span></p></body></html> @@ -3834,50 +4141,71 @@ p, li { white-space: pre-wrap; } desWidgetMatrice - + Dialog Dialog - + Affiche le rapport de validation du mot-clef Display validity report for the keyword - + ... - + <html><head/><body><p>Met à jour l'en-tête</p></body></html> - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - self.appliEficas + desWidgetOptionnel - - Wrapper Files (*.xml);;All Files (*) - + + Form + - - Noname - + + TextLabel + TextLabel + + + + groupeOptionnel + + + Form + + + + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + <html><head/><body><p><span style=" color:#0000ff;">command </span></p></body></html + + self.appliEficas + viewRegles - + Dialog Dialog + + + Fermer + Close + diff --git a/UiQT5/eficas_fr.ts b/UiQT5/eficas_fr.ts index a976a389..124f6210 100644 --- a/UiQT5/eficas_fr.ts +++ b/UiQT5/eficas_fr.ts @@ -1,2201 +1,47 @@ - + @defaut lecture du fichier impossible : - unable to read file + unable to read file Impossible d'ouvrir le fichier %s - unable to read file + unable to read file - - Format de sortie : %s, non supporte - - - - - Impossible d'ouvrir le fichier : %s - - - - - Erreur a l'evaluation : - %s - - - - - Erreur ! Erreur ! - - - - - Erreur rencontree dans recherche_enfants : %s - - - - - Erreur dans la creation du mot-cle : %s - - - - - Impossible d'ouvrir le fichier : %s - - - - - le texte a analyser n'est pas celui d'une commande ou d'un operateur : - - - - - Erreur dans la recherche du nom de la commande : - - - - - Erreur dans la recherche des args de la commande : - - - - - Erreur dans la recherche du nom de la commande : - - - - - Erreur dans la recherche des args de la commande : - - - - - %d n'est pas un index valide pour append_brother - - - - - le fichier de commandes %s n'existe pas - - - - - un fichier de commandes doit etre defini avant une poursuite %s - - - - - le fichier poursuite %s n'existe pas - - - - - include mal defini %s - - - - - un fichier de commandes doit etre defini avant un include %s - - - - - le fichier include %s n'existe pas - - - - - le fichier jdc %s n'existe pas - - - - - jdc %s manque option jdc dans section jdc - - - - - %(v_1)s include %(v_2)s : %(v_3)s - v_1 - - - - - %(v_1)s fichier poursuite: %(v_2)s - v_1 - - - - - nom etude : %s - - - - - utilisation : %prog [options] - - - - - nom du fichier de commandes - - - - - nom du fichier poursuite - - - - - numero d'unite suivi du nom du fichier include - - - - - fichier decrivant une etude - - - - - version de catalogue a utiliser - - - - - nom du code a utiliser - - - - - niveau de debug - - - - - schema - - - - - localisation de l'application, pour la traduction - - - - - Nombre incorrect d'arguments - - - - - Localisation specifiee pour l'application. - - - - - Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom - - - - - Creation du repertoire %s impossible - Verifiez vos droits d'acces - - - - - Impossible de transferer les fichiers requis dans : %s - - - - - Erreur - - - - - Erreurs fatales - - - - - Impossible reconstruire commande - - - - - - Objet commentaire non valorise - - - - - Debut Fonction %s - - - - - Fin Fonction %s - - - - - Nom de concept deja defini : %s - - - - - Longueur incorrecte - - - - - L'attribut 'min' doit etre un entier : - - - - - L'attribut 'max' doit etre un entier : - - - - - Nombres d'occurrence min et max invalides : - - - - - L'attribut 'fr' doit etre une chaine de caracteres - - - - - L'attribut 'statut' doit valoir 'o','f','c' ou 'd' - - - - - L'attribut 'docu' doit etre une chaine de caracteres - - - - - Fin - - - - - Le parametre EVAL %s ne peut valoir None - - - - - Le parametre EVAL ne peut valoir None - - - - - Pas de nom donne au parametre EVAL - - - - - Un nom de parametre ne peut depasser 8 caracteres - - - - - ERREUR - - - - - Format pas implemente : %s - - - - - Type d'objet non prevu : %s - - - - - ce groupe de maillage %s est associe a au moins un materiau et au moins une source. - - - - - ce groupe de maillage %s n'est associe a aucun materiau ou source. - - - - - ATTENTION! Une source constante n'est possible qu'a frequence nulle en regime frequentiel - - - - - ERREUR! ce groupe de maille (%s) n'a pas de prefixe valable - - - - - ERREUR! ce type de bloc (%s) n'est pas valable - - - - - toutes les donnees ne sont pas connues - - - - - Fichier patron %s n'existe pas. - - - - - Pas supporte - - - - - Entite inconnue ou interdite :%s - - - - - Entite inconnue ou interdite :%s. Elle est ignoree - - - - - Les tuples ne sont pas supportes pour le format ini :%s - - - - - Type de valeur non supportee par le format ini :%(nom)s -%(exception)s - nom - - - - - Il y a un pb a la Creation du XML - - - - - Il y a un pb a la Creation du STD - - - - - Entite inconnue ou interdite : %s. Elle est ignoree - - - - - Type de valeur non supporte par le format pyth : n %(exception)s - nom - - - - - Tag %s non-defini. Ceci est un bogue interne. en informer les developpeurs. - - - - - Le mot-cle %s est obligatoire. - - - - - concept %(inst_name)s de type %(class_name)s - inst_name - - - - - Un nom de concept doit etre un identificateur Python - - - - - Concept existant - - - - - Operateur reentrant mais concept non existant - - - - - Operateur reentrant et concept existant trouve - - - - - Concept deja existant et de mauvais type - - - - - Nommage du concept refuse : un concept de meme nom existe deja - - - - - Nommage du concept effectue - - - - - Nommage impossible %s - - - - - La liste des arguments d'une formule doit etre entre parentheses : parenthese ouvrante manquante - - - - - La liste des arguments d'une formule doit etre entre parentheses : parenthese fermante manquante - - - - - Pas de nom donne a la FORMULE - - - - - Un nom de FORMULE ne peut depasser 8 caracteres - - - - - Un nom de FORMULE ne peut pas commencer par un chiffre - - - - - Le type de la valeur retournee n'est pas specifie - - - - - Une formule ne peut retourner une valeur de type : %s - - - - - Impossible d'ajouter la commande - - - - - Impossible d ajouter la commande - - - - - Pas implemente - - - - - Nom de concept deja defini - - - - - Nom de concept deja defini : - - - - - Impossible de trouver le fichier correspondant a l'unite - - - - - n'est pas un fichier existant - - - - - Fichier invalide %s - - - - - Impossible de construire le jeu de commandes correspondant au fichier - - - - - Erreur lors de l'evaluation du fichier inclus - - - - - Ce fichier ne sera pas pris en compte - %s - - - - - Ce fichier ne sera pas pris en compte -Le fichier associe n'est pas defini - - - - - Le fichier n est pas defini - - - - - le fichier doit contenir une unique variable de sortie - - - - - Fichier invalide - - - - - Le contenu de ce fichier ne sera pas pris en compte - %s - - - - - Le fichier INCLUDE n est pas defini - - - - - Le contenu de ce fichier ne sera pas pris en compte - - - - - - Erreur lors de l'evaluation du fichier poursuite - - - - - L'objet %(v_1)s ne peut etre un fils de %(v_2)s - v_1 - - - - - L'objet %s ne peut pas etre repete - - - - - Erreur - mclist inexistante : %s - - - - - Erreur - mot cle facteur de nom : %s - - - - - traitement non-prevu - - - - - L'objet %s ne peut pas etre ajoute - - - - - None n'est pas une valeur autorisee - - - - - un concept de meme nom existe deja - - - - - Concept cree - - - - - La matrice n'est pas une matrice %(n_lign)d sur %(n_col)d - n_lign - - - - - Impossible de relire le fichier %s - - - - - - Le fichier include contient des erreurs - - - - - n'est pas un index valide pour append_brother - - - - - Decommenter - - - - - Decommente la commande - - - - - Impossible de supprimer un mot-cle obligatoire - - - - - Mot-cle %s supprime - - - - - Pb interne : impossible de supprimer ce mot-cle - - - - - Commentaire supprime - - - - - Commande %s supprimee - - - - - Pb interne : impossible de supprimer cet objet - - - - - Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas - - - - - - - Include vide - - - - - L'include doit etre correctement initialise pour etre visualise - - - - - Impossible de supprimer ce mot-clef - - - - - View3D - - - - - affiche dans Geom les elements de structure - - - - - Graphique - - - - - affiche la distribution - - - - - Erreur interne - - - - - La PDF de la loi ne peut pas etre affichee. - - - - - &Annuler - - - - - Impossible de supprimer un mot-clef obligatoire - - - - - Mot-clef %s supprime - - - - - Pb interne : impossible de supprimer ce mot-clef - - - - - Definition d'un parametre - - - - - Import du fichier de Configuration - - - - - Erreur a la lecture du fichier de configuration %s - - - - - Erreur fatale au chargement de %s - - - - - Erreur fatale au chargement d'un fichier - - - - - fichier modifie - - - - - Attention! fichier change hors EFICAS - - - - - Type de fichier non reconnu - - - - - EFICAS ne sait pas ouvrir le type de fichier %s - - - - - EFICAS ne sait pas ouvrir ce type de fichier - - - - - Copie impossible - - - - - Veuillez selectionner un objet a copier - - - - - Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne - - - - - Aucun Objet n a ete copie ou coupe - - - - - Copie refusee - - - - - Eficas n a pas reussi a copier l objet - - - - - Copie refusee pour ce type d objet - - - - - Deplacement refuse - - - - - Deplacement refuse entre 2 fichiers. Seule la copie est autorisee - - - - - Copie impossible a cet endroit - - - - - Veuillez selectionner une commande, un parametre, un commentaire ou une macro - - - - - Choix d'un fichier XML - - - - - Le fichier contient une commande MODEL - - - - - - Donnez le nom du fichier XML qui contient la description des variables - - - - - Ouvrir Fichier - - - - - Erreur a la generation - - - - - EFICAS ne sait pas convertir ce JDC - - - - - Format %s non reconnu - - - - - EFICAS ne sait pas convertir le JDC selon le format - - - - - Execution impossible - - - - - le JDC doit etre valide pour une execution MAP - - - - - le JDC doit contenir un et un seul composant - - - - - le JDC doit etre valide pour une execution - - - - - Sauvegarder SVP avant l'execution - - - - - sauvegarde - - - - - Sauvegarde du Fichier - - - - - Le fichier <b>%s</b> existe deja. - - - - - &Ecraser - - - - - Sauvegarde de l'input impossible - - - - - Un JdC valide est necessaire pour creer un .input - - - - - Choix du composant obligatoire - - - - - Choix unite %d - - - - - Le fichier %s contient une commande INCLUDE - - - - - - Donnez le nom du fichier correspondant a l unite logique - - - - - Fichier pour unite - - - - - Choix d'un fichier de poursuite - - - - - Le fichier %s contient une commande POURSUITE - - - - - - Donnez le nom du fichier dont vous - voulez faire une poursuite - - - - - Fichiers Med (*.med);;Tous les Fichiers (*) - - - - - Fichier Med - - - - - Veuillez selectionner un fichier Med - - - - - reel - - - - - entier - - - - - complexe - - - - - Entrez - - - - - Entrez entre - - - - - et - - - - - Type de base inconnu - - - - - Aide Indisponible - - - - - l'aide n est pas installee - - - - - Visualisation Fichier - - - - - Impossibilite d'afficher le Fichier - - - - - Sauvegarder Fichier - - - - - Fichier selectionne - - - - - Selection - - - - - Export Med vers Fichier - - - - - Impossibilite d exporter le Fichier - - - - - Traduire Fichier - - - - - Fichiers JDC (*.comm);;Tous les Fichiers (*) - - - - - Fichier Traduit : %s - - - - - - - Pas de difference entre le fichier origine et le fichier traduit - - - - - objet valide - - - - - %d versions du catalogue sont disponibles - - - - - Sauvegarder le fichier - - - - - Le fichier <b>%(v_1)s</b> n'a pu etre sauvegarde. <br>Raison : %(v_2)s - v_1 - - - - - Options pour - - - - - - valeurs - - - - - Nombre minimal de valeurs : - - - - - Nombre maximal de valeurs : - - - - - expression valide - - - - - expression invalide - - - - - l expression n est pas de la forme a+bj - - - - - expression n est pas de la forme a+bj - - - - - entrer une seule valeur SVP - - - - - saisir le type de complexe - - - - - Valeur du mot-cle enregistree - - - - - Valeur du mot-cle non autorisee - - - - - &Recents - - - - - Aide specifique - - - - - Options - - - - - Traduction - - - - - TraduitV7V8 - - - - - TraduitV8V9 - - - - - TraduitV9V10 - - - - - Acquiert Groupe Maille - - - - - Specificites Maille - - - - - version - - - - - pour - - - - - Parametrage - - - - - Veuillez d abord choisir un code - - - - - Pas de possibilite de personnalisation de la configuration - - - - - &Effacer - - - - - Veuillez entrer le complexe sous forme aster ou sous forme python - - - - - Import du catalogue - - - - - Pas de catalogue defini pour le code - - - - - Aucun catalogue trouve - - - - - Impossible d'importer le catalogue - - - - - avec le catalogue - - - - - Choix d une version du code - - - - - Choix d une version - - - - - Parametre - - - - - Insere un parametre - - - - - item invalide - - - - - l item doit etre valide - - - - - &Ok - &Ok - - - - apres - - - - - Insere un commentaire apres la commande - - - - - avant - - - - - Insere un commentaire avant la commande - - - - - Insere un parametre apres la commande - - - - - Insere un parametre avant la commande - - - - - Supprimer - - - - - supprime le mot clef - - - - - Documentation - - - - - documentation sur la commande - - - - - Documentation Vide - - - - - Aucune documentation n'est associee a ce noeud - - - - - impossible de trouver la commande - - - - - Lecteur PDF - - - - - impossible d'ouvrir - - - - - Commentaire - - - - - ce noeud - - - - - commente le noeud - - - - - Fichiers JDC (*.comm);;Tous les Fichiers (*) - - - - - &Quitter - - - - - Quitter - - - - - Fichier Duplique - - - - - Le fichier ne sera pas sauvegarde. - - - - - Fichier - - - - - Le fichier <b>%s</b> est deja ouvert. - - - - - &Duplication - - - - - &Abort - - - - - Fichier Modifie - - - - - Le fichier %s n a pas ete sauvegarde. - - - - - &Sauvegarder - - - - - SOURCE - - - - - EnveloppeConnexeInducteur - - - - - EnveloppeConnexe2 - - - - - VecteurDirecteur - - - - - Centre - - - - - SectionBobine - - - - - Amplitude - - - - - NbdeTours - - - - - CONDUCTEUR - - - - - Conductivite - - - - - PermeabiliteRelative - - - - - NOCOND - - - - - VCUT - - - - - Orientation - - - - - ZS - - - - - RepCarmel - - - - - TypedeFormule - - - - - Frequence - - - - - Nb_Max_Iterations - - - - - Erreur_Max - - - - - Valeur non modifiable - - - - - Format non implemente - - - - - Type d'objet non prevu - - - - - Select - - - - - Sauve Format Ligne - - - - - %s n'est pas un fichier valide - - - - - Fichier de donnees - - - - - Tous les Fichiers (*) - - - - - nb min de valeurs : - - - - - nb max de valeurs atteint - - - - - TraduitV10V11 - - - - - TraduitV11V12 - - - - - Valeur du mot-clef enregistree - - - - - Valeur du mot-clef non autorisee : - - - - - Un concept de nom %s existe déjà ! - - - - - La cardinalite n'est pas correcte, la derniere valeur est ignoree - - - - - n est pas un tuple de - - - - - valeurs - - - - - Valeur incorrecte - - - - - n est pas un identifiant correct - - - - - - Entrer un float SVP - - - - - Entrer un float inferieur a - - - - - Entrer un float superieur a - - - - - Mauvaise execution - - - - - impossible d executer la methode - - - - - Mauvaise Commande - - - - - Aucune variable connue - - - - - Mauvaise dimension de matrice - - - - - le nombre de ligne n est pas egal a - - - - - le nombre de colonne n est pas egal a - - - - - Mauvaise Valeur - - - - - l element - - - - - n est pas correct - - - - - Modification Impossible - - - - - le parametre n'est pas valide - - - - - n est pas un identifiant correct - - - - - Valeur incorrecte: - - - - - Valeur incorrecte - - - - - Valeur correcte - - - - - impossible d'evaluer : - - - - - La formule passee a l'interpreteur doit etre sous forme de tuple - - - - - Debut - - - - - Pas de nom donne au parametre - - - - - Le parametre %s ne peut valoir None - - - - - Format non implemente : %s - - - - - Impossible de realiser la verification de la formule - - - - - Un concept de nom %s existe deja ! - - - - - existe deja - - - - - - Fichier non encore nomme - - - - - La matrice n'a pas le bon entete - - - - - le mot clef - - - - - doit etre insere avant - - - - - insertion impossible - - - - - doit etre insere apres - - - - - Nb maximum de valeurs atteint - - - - - pas de regle de construction pour ce jeu de commandes - - - - - Gestion Maillage - - - - - Acquiert groupe mailles - - - - - Acquisition Groupe Maille - - - - - VERSION - - - - - NUM - - - - - FILETYPE - - - - - Fichier_maillage - - - - - Echelle_du_maillage - - - - - Formulation - - - - - Timeproblem - - - - - spectral - - - - - Basis - - - - - Fourier - - - - - Ordre - - - - - FREQUENCY - - - - - minimisation - - - - - no - - - - - yes - - - - - nb_procs_para - - - - - POLYMER - - - - - MODEL_DATABASE - - - - - Stabilise - - - - - Non Stabilise - - - - - Local - - - - - Peinture - - - - - Tuyauterie - - - - - Materiau_De_Cable - - - - - PE - - - - - EPDM - - - - - Modele - - - - - Impossible de convertir le fichier Python qui doit contenir des erreurs. - - On retourne le fichier non converti. Prevenir la maintenance. - - %s - - - - - Eficas ne peut pas traiter plusieurs instructions - sur la meme ligne : %s - - - - - le texte a analyser n'est pas celui d'une commande ou - d'un operateur : %s - - - - - le texte a analyser n'est pas celui d'une commande connue : - %(v_1)s %(v_2)s - v_1 - - - - - le texte a analyser n'est pas celui d'une commande connue : - %(v_1)s %(v_2)s - v_1 - - - - - jdc %(v_1)s manque - fichier comm dans section %(v_2)s - v_1 - - - - - jdc %(v_1)s, le fichier - de commandes %(v_2)s n'existe pas - v_1 - - - - - jdc %(v_1)s - fichier include %(v_2)s, %(v_3)s - n'existe pas - v_1 - - - - - jdc %(v_1)s manque fichier comm - dans section %(v_2)s - v_1 - - - - - jdc %(v_1)s, le fichier de commandes - %(v_2)s n'existe pas - v_1 - - - - - Objet commande commentarisé invalide - - - - - ATTENTION! Une source constante - n'est possible qu'a frequence nulle - en regime frequentiel - - - - - ERREUR! Une forme de la source du - type WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue. - - - - - ATTENTION! Une source constante n'est - possible qu'a frequence nulle en regime frequentiel - - - - - ERREUR! Une forme de la source du type - WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue. - - - - - ERREUR! ce groupe de maille (%s) n'a pas de prefixe - indiquant le type de materiau ou de source associee - - - - - ERREUR! ce groupe de maille (%(nom)s) n'a pas - le prefixe correct pour etre associe a un type %(type_bloc)s - nom - - - - - - Include Invalide. - ne sera pas pris en compte - - - - - : verifie les types dans un tuple - - - - - Les types entres ne sont pas permis - + + &Ok + &Ok ChoixCode - + Choix du code - + Veuillez choisir un code : - + &Cancel - + Validate choice - + &OK @@ -2203,95 +49,123 @@ Le fichier associe n'est pas defini ChoixCommandes - + DMacro - + <html><head/><body><p align="center"><span style=" text-decoration: underline;">Affichage</span></p></body></html> - + affiche les commandes par ordre alphabetique - + Alphabetique - + affiche les commandes selon les thèmes - + Ordre de la modélisation - + Par Groupe - + <html><head/><body><p align="center">Filtre Commande</p></body></html> - + filter commands - + affiche les régles de validité - + ... - + Règles de construction - + Sensible à la casse - + Effacer - + selectionne les mots qui CONTIENNENT l expression - + ré-affiche toutes les commandes + + ChoixLangue + + + Langue + + + + + Français + + + + + English + + + + + Validate choice + + + + + &OK + + + DChoixCata - + Choix d'une version du code Aster - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2300,17 +174,17 @@ p, li { white-space: pre-wrap; } - + &Cancel - + Validate choice - + &OK @@ -2318,37 +192,37 @@ p, li { white-space: pre-wrap; } DSelVal - + Sélection de valeurs - + Separateur - + espace - + virgule - + point-virgule - + Ajouter Selection - + Importer Tout @@ -2356,7 +230,7 @@ p, li { white-space: pre-wrap; } DVisu - + Visualisation Include Materiau @@ -2364,694 +238,922 @@ p, li { white-space: pre-wrap; } Eficas - + MainWindow - + &Fichier - + &Aide - + toolBar - + &Nouveau - + Ctrl+N - + Nouvel Include - + &Ouvrir - + Ctrl+O - + Enregistrer - + Enregistrer sous - + Fermer - + Ctrl+W - + Fermer tout - + Couper - + Ctrl+X - + Copier - + Ctrl+C - + Coller - + Ctrl+V - + Quitter - + Ctrl+Q - + Rapport de Validation - + Fichier Source - + Fichier Résultat - + Parametres Eficas - + Lecteur documentation - + Eficas - + Version - + Supprimer - + Rechercher - + Rechercher dans l'arbre d'etude - + Ctrl+F - + Replier/Deplier - + Tab 1 - + &Edition - + &JeuDeDonnées - + Shift+I - + Ctrl+S - + Ctrl+Shift+S - + Shift+V - + Chercher Mot-Clef - + Rechercher dans le catalogue - + Shift+F - + Shift+D - + Commentaire - + Shift+C - + Paramètres - + Gestion des paramètres - + Shift+P - + Parametre Eficas - - Execution + + &bad + + + + + Régles du JdC - - Execution + + Cacher l'Arbre - - Save Run + + Afficher l'Arbre + + + JDCEditor + + + &Abandonner + &Abandonner + + + + Tuple2 - - Patrons + + Form - - Run + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - - &bad + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - - - Régles du JdC + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> - JDCEditor + Tuple3 - - Save File + + Form - - The file <b>%1</b> could not be saved.<br>Reason: %2 + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - - JDC (*.comm);;All Files (*) + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - - &Abandonner - &Abandonner + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + - Tuple2 + Widget4a6RadioButton - + Form - - <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + Affiche le rapport de validation du mot-clef - - <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + ... - - <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + + + RadioButton + + + + + Détruit le mot-clef - Tuple3 + WidgetBloc - + Form + + + WidgetCB - - <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + Form - - <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + Affiche le rapport de validation du mot-clef - - <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + ... + + + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + + + Détruit le mot-clef - Widget4a6RadioButton + WidgetCommande + + + DCommandeUnique + + + + + Affiche le rapport de validité de la commande + + + + + ... + + + + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + + + + + Nom de l'objet. Seuls, les objets valides peuvent être nommés + + + + + Lance un script associé à la commande + + + + + ouvre un navigateur sur l'aide contextuelle + + + + + affiche les régles de validité + + + + + Détruit la commande + + + + + Affiche les commandes possibles + + + + + &Commandes + + + + + Shift+A, Alt+A, Alt+A, Alt+A + + + + + Affiche le formulaire de la commande précédente + + + + + << + + + + + Affiche le formulaire de la commande suivante + + + + + >> + + + + + TextLabel + + + + + WidgetCommentaire + + + DCommandeUnique + + + + + ... + + + + + Affiche les commandes possibles + + + + + &Commandes + + + + + Shift+A, Alt+A, Alt+A, Alt+A + + + + + Affiche le formulaire de la commande précédente + + + + + << + + + + + Affiche le formulaire de la commande suivante + + + + + >> + + + + + Affiche le rapport de validité de la commande + + + + + <html><head/><body><p>Commentaire</p></body></html> + + + + + Détruit la commande + + + + + WidgetDate - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + Détruit le mot-clef + + + + + WidgetFact - - RadioButton + + Form + + + + + ... + + + + + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> - - Détruit le mot-clef + + Lance un script associé à la commande - WidgetBloc + WidgetFactHorizon - + Form - - - WidgetCB - - Form + + ... - - Affiche le rapport de validation du mot-clef + + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> + + + + + Lance un script associé à la commande + + + WidgetFactPlie - - ... + + Form - - <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + ... - - - Détruit le mot-clef + + + TextLabel - WidgetCommande + WidgetFormule - + DCommandeUnique - + Affiche le rapport de validité de la commande - + ... - - <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + + <html><head/><body><p><span style=" color:#0000ff;">Formule</span></p></body></html> - + Nom de l'objet. Seuls, les objets valides peuvent être nommés - - Lance un script associé à la commande - - - - - ouvre un navigateur sur l'aide contextuelle - - - - - affiche les régles de validité - - - - + Détruit la commande - + Affiche les commandes possibles - + &Commandes - + Shift+A, Alt+A, Alt+A, Alt+A - + Affiche le formulaire de la commande précédente - + << - + Affiche le formulaire de la commande suivante - + >> - - TextLabel + + <h3><p align="center"><u><b>Nom de la formule</b></u></p></h3> - - - WidgetCommentaire - - DCommandeUnique + + <h3><p align="center"><u><b>Arguments</b></u></p></h3> - - - ... + + + variables séparées par des "," + par ex. : x,y,z - - <html><head/><body><p><span style=" color:#0000ff;">Commentaire</span></p></body></html> + + <h3><p align="center"><u><b>Expression</b></u></p></h3> - - - Détruit le commentaire + + + <h1><b>(</b></h1> - - Affiche les commandes possibles + + <h1><b>)</b></h1> - - &Commandes + + <font size="+4" face="Helvetica"><b>=</b></font> + + + WidgetHeure - - Shift+A, Alt+A, Alt+A, Alt+A + + Form - - - Affiche le formulaire de la commande précédente + + + Affiche le rapport de validation du mot-clef - - << + + ... - - Affiche le formulaire de la commande suivante + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - - >> + + <html><head/><body><p><br/></p></body></html> + + + + + Détruit le mot-clef - WidgetDate + WidgetInactif - - Form + + DInactif + + + + + Affiche le rapport de validité de la commande - - Affiche le rapport de validation du mot-clef + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + + + + + Détruit la commande - + ... - - <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + Affiche les commandes possibles - - - Détruit le mot-clef + + + &Commandes - - - WidgetFact - - Form + + Shift+A, Alt+A, Alt+A, Alt+A - - - ... + + + Affiche le formulaire de la commande précédente - - <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> + + << - - - WidgetFactPlie - - Form + + Affiche le formulaire de la commande suivante - - ... + + >> - - - TextLabel + + + <html><head/><body><p align="center"><span style=" font-size:16pt;">Le noeud sélectionné</span></p><p align="center"><span style=" font-size:16pt;">ne correspond pas à un objet actif</span></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large;"><span style=" font-size:x-large;">Seules les commandes placées</span></p> +<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large;"><span style=" font-size:x-large;"> entre : DEBUT / FIN sont actives </span></p></body></html> - WidgetHeure + WidgetInformative - + Form + + + WidgetIntoSug - - Affiche le rapport de validation du mot-clef + + Form + + + + + permet de gérer la liste - + ... - + + Affiche le rapport de validation du mot-clef + + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><br/></p></body></html> - - Détruit le mot-clef + + Valeurs hors liste - la valeur saisie sera ajoutée à la liste - - - WidgetInformative - - - Form + + + Détruit le mot-clef WidgetOptionnel - + WidgetOptionnel - + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> @@ -3059,155 +1161,160 @@ p, li { white-space: pre-wrap; } WidgetParam - + DCommandeUnique - + ... - + <html><head/><body><p><span style=" color:#000000;">Paramètre</span></p></body></html> - - - Détruit le commentaire - - - + Affiche les commandes possibles - + &Commandes - + Shift+A, Alt+A, Alt+A, Alt+A - + Affiche le formulaire de la commande précédente - + << - + Affiche le formulaire de la commande suivante - + >> - + <html><head/><body><p>Valeur: </p></body></html> - + <html><head/><body><p>Nom: </p></body></html> - + Verifie la valeur - + <html><head/><body><p><br/></p></body></html> + + + Affiche le rapport de validité de la commande + + + + + Détruit la commande + + WidgetPlusieursBase - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Remonte la ligne - + Descend la ligne - + supprime une ligne - + Ajoute une ligne - + Montre l'ensemble des valeurs - + Sélectionne depuis Salome - + Visualise dans Salome - + Ouvre un fichier de sélection des valeurs - + Détruit le mot-clef - + permet de gérer la liste - + TextLabel @@ -3215,128 +1322,163 @@ p, li { white-space: pre-wrap; } WidgetPlusieursInto - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Détruit le mot-clef - + permet de gérer la liste - - - WidgetPlusieursIntoOrdonne - - Form + + Cherche la valeur - - Affiche le rapport de validation du mot-clef + + Original - - ... + + Alpha - - <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + <html><head/><body><p><br/></p></body></html> + + + + + WidgetPlusieursIntoOrdonne + + + Form - - TextLabel + + Affiche le rapport de validation du mot-clef + + + + + ... - + Remonte d'une ligne - + Descend d'une ligne - + Détruit une ligne - + ajoute une ligne - + visualise l'ensemble des valeurs - + Détruit le mot-clef - + permet de gérer la liste + + + <html><head/><body><p><br/></p></body></html> + + + + + Cherche dans la liste + + + + + remet le filtre à blanc + + + + + Catalogue + + + + + Alpha + + WidgetPlusieursPlie - + Form - + Affiche le rapport de validité du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + permet de gérer la liste - + Détruit le mot-clef @@ -3344,62 +1486,62 @@ p, li { white-space: pre-wrap; } WidgetPlusieursTuple - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Remonte la ligne - + Descend la ligne - + supprime une ligne - + Ajoute une ligne - + Montre l'ensemble des valeurs - + Ouvre un fichier de sélection des valeurs - + Détruit le mot-clef - + TextLabel @@ -3407,32 +1549,32 @@ p, li { white-space: pre-wrap; } WidgetRadioButton - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + RadioButton - + Détruit le mot-clef @@ -3440,37 +1582,37 @@ p, li { white-space: pre-wrap; } WidgetSDCOInto - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p>Structures de données du type requis </p><p><br/></p></body></html> - + <html><head/><body><p>ou Nom du concept</p></body></html> - + Détruit le mot-clef @@ -3478,27 +1620,27 @@ p, li { white-space: pre-wrap; } WidgetSimpBase - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Détruit le mot-clef @@ -3506,37 +1648,37 @@ p, li { white-space: pre-wrap; } WidgetSimpBool - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + True - + False - + Détruit le mot-clef @@ -3544,42 +1686,42 @@ p, li { white-space: pre-wrap; } WidgetSimpComplexe - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Complexe : a+bj - + <html><head/><body><p align="center">OU </p></body></html> - + Réel/Imaginaire - + Module/Phase @@ -3587,37 +1729,75 @@ p, li { white-space: pre-wrap; } WidgetSimpFichier - + + Form + + + + + Affiche le rapport de validité du mot-clef + + + + + ... + + + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + + + affiche l'explorateur de fichier + + + + + ouvre le fichier choisi + + + + + Détruit le mot-clef + + + + + WidgetSimpSalome + + Form - + Affiche le rapport de validité du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + affiche l'explorateur de fichier - + ouvre le fichier choisi - + Détruit le mot-clef @@ -3625,27 +1805,27 @@ p, li { white-space: pre-wrap; } WidgetSimpTxt - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Détruit le mot-clef @@ -3653,42 +1833,42 @@ p, li { white-space: pre-wrap; } WidgetTuple2 - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> - + Détruit le mot-clef @@ -3696,42 +1876,42 @@ p, li { white-space: pre-wrap; } WidgetTuple3 - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> - + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> - + Détruit le mot-clef @@ -3739,32 +1919,32 @@ p, li { white-space: pre-wrap; } WidgetUniqueSDCO - + Form - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - + Attend un objet de type CO - + Détruit le mot-clef @@ -3772,22 +1952,22 @@ p, li { white-space: pre-wrap; } WidgetVide - + Form - + ... - + <html><head/><body><p><span style=" color:#0055ff;">Label</span></p></body></html> - + Attend un objet de type XXXX. Il faut le créer @@ -3795,25 +1975,38 @@ p, li { white-space: pre-wrap; } baseWidget - + DMacro + + customPB + + + Form + + + + + PushButton + + + dView - + Dialog - + Fermer - + Sauver @@ -3821,40 +2014,63 @@ p, li { white-space: pre-wrap; } desRecherche - + Rechercher dans le JDC - + Next - + Suivant + + desRechercheCatalogue + + + Rechercher dans le Catalogue + + + + + Mot à chercher + + + + + Généalogie + + + + + Documentation + + + desWidgetCreeParam - + Gestion des Paramètres - + <html><head/><body><p>Nom: </p></body></html> - + <html><head/><body><p>Valeur: </p></body></html> - + <html><head/><body><p><span style=" text-decoration: underline;">Créer un paramètre</span></p></body></html> @@ -3862,50 +2078,68 @@ p, li { white-space: pre-wrap; } desWidgetMatrice - + Dialog - + Affiche le rapport de validation du mot-clef - + ... - + <html><head/><body><p>Met à jour l'en-tête</p></body></html> - + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> - self.appliEficas + desWidgetOptionnel - - Wrapper Files (*.xml);;All Files (*) + + Form + + + + + TextLabel + + + + + groupeOptionnel + + + Form - - Noname + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> viewRegles - + Dialog + + + Fermer + + diff --git a/Validation/V_AU_MOINS_UN.py b/Validation/V_AU_MOINS_UN.py index 9837a780..cfe129bf 100644 --- a/Validation/V_AU_MOINS_UN.py +++ b/Validation/V_AU_MOINS_UN.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_AU_PLUS_UN.py b/Validation/V_AU_PLUS_UN.py index eb801aab..1286b061 100644 --- a/Validation/V_AU_PLUS_UN.py +++ b/Validation/V_AU_PLUS_UN.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_A_CLASSER.py b/Validation/V_A_CLASSER.py index 32955947..7a790d4b 100644 --- a/Validation/V_A_CLASSER.py +++ b/Validation/V_A_CLASSER.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_ENSEMBLE.py b/Validation/V_ENSEMBLE.py index 5bdc61cb..05922189 100644 --- a/Validation/V_ENSEMBLE.py +++ b/Validation/V_ENSEMBLE.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_ETAPE.py b/Validation/V_ETAPE.py index 957104d9..9287a7c4 100644 --- a/Validation/V_ETAPE.py +++ b/Validation/V_ETAPE.py @@ -1,6 +1,6 @@ # coding=utf-8 # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_EXCLUS.py b/Validation/V_EXCLUS.py index 52d7182a..3ad77d30 100644 --- a/Validation/V_EXCLUS.py +++ b/Validation/V_EXCLUS.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_JDC.py b/Validation/V_JDC.py index fc13c39f..f3c89fbb 100644 --- a/Validation/V_JDC.py +++ b/Validation/V_JDC.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MACRO_ETAPE.py b/Validation/V_MACRO_ETAPE.py index dcbbad6f..197b9d4e 100644 --- a/Validation/V_MACRO_ETAPE.py +++ b/Validation/V_MACRO_ETAPE.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MCBLOC.py b/Validation/V_MCBLOC.py index 5607daba..f6796e5d 100644 --- a/Validation/V_MCBLOC.py +++ b/Validation/V_MCBLOC.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MCCOMPO.py b/Validation/V_MCCOMPO.py index 2739b017..b82541c6 100644 --- a/Validation/V_MCCOMPO.py +++ b/Validation/V_MCCOMPO.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MCFACT.py b/Validation/V_MCFACT.py index 0e2d3cf6..ee58756c 100644 --- a/Validation/V_MCFACT.py +++ b/Validation/V_MCFACT.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MCLIST.py b/Validation/V_MCLIST.py index a58f75ca..4324bcc3 100644 --- a/Validation/V_MCLIST.py +++ b/Validation/V_MCLIST.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 5ee9c284..2bdeeb2d 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_MEME_NOMBRE.py b/Validation/V_MEME_NOMBRE.py index 7a590a4a..9b5cfdd0 100644 --- a/Validation/V_MEME_NOMBRE.py +++ b/Validation/V_MEME_NOMBRE.py @@ -1,6 +1,6 @@ # coding=utf-8 # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_PRESENT_ABSENT.py b/Validation/V_PRESENT_ABSENT.py index 516ab33a..fd2a75dd 100644 --- a/Validation/V_PRESENT_ABSENT.py +++ b/Validation/V_PRESENT_ABSENT.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_PRESENT_PRESENT.py b/Validation/V_PRESENT_PRESENT.py index 1eb8b432..b9eab109 100644 --- a/Validation/V_PRESENT_PRESENT.py +++ b/Validation/V_PRESENT_PRESENT.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_PROC_ETAPE.py b/Validation/V_PROC_ETAPE.py index db880ffd..5489535b 100644 --- a/Validation/V_PROC_ETAPE.py +++ b/Validation/V_PROC_ETAPE.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/Validation/V_UN_PARMI.py b/Validation/V_UN_PARMI.py index dafb15a7..2410bf85 100644 --- a/Validation/V_UN_PARMI.py +++ b/Validation/V_UN_PARMI.py @@ -1,7 +1,7 @@ # coding=utf-8 # person_in_charge: mathieu.courtois at edf.fr # ====================================================================== -# COPYRIGHT (C) 1991 - 2015 EDF R&D WWW.CODE-ASTER.ORG +# COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt index 7cb26548..ecd26bf1 100644 --- a/generator/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -19,18 +19,18 @@ # # ====================================================================== -install ( FILES __init__.py generator_python.py Formatage.py generator_aplat.py generator_TELEMAC.py - generator_file_from_template.py generator_map.py + +install ( FILES __init__.py generator_python.py Formatage.py generator_aplat.py + generator_dicoImbrique.py generator_dico.py generator_modification.py generator_vers3DSalome.py + generator_TELEMAC.py generator_map.py generator_GroupMA.py DESTINATION ${CMAKE_INSTALL_PREFIX}/generator ) - - # Installation des fichiers : CARMEL if (WITH_CARMEL) - install ( FILES generator_CARMEL3D_frequentiel.py generator_CARMELCND.py + install ( FILES generator_CARMEL3D_frequentiel.py generator_CARMEL3D_temporel.py DESTINATION ${CMAKE_INSTALL_PREFIX}/generator ) endif (WITH_CARMEL) diff --git a/generator/Formatage.py b/generator/Formatage.py index 0dc4c057..e6393a28 100644 --- a/generator/Formatage.py +++ b/generator/Formatage.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/__init__.py b/generator/__init__.py index ccd9bd77..9d4cb7f0 100644 --- a/generator/__init__.py +++ b/generator/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_CARMEL3D.py b/generator/generator_CARMEL3D.py deleted file mode 100644 index 3138bd10..00000000 --- a/generator/generator_CARMEL3D.py +++ /dev/null @@ -1,844 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. -""" - -import traceback -import types,string,re,os -from Extensions.i18n import tr -from generator_python import PythonGenerator - -# Groupes de mailles dont les types sont definis par des prefixes dans leur nom -usePrefix = False # les noms ont des prefixes (True) ou non (False) -# liste des prefixes des groupes de mailles, sans le caractere _ separant le prefixe du reste du nom -# Ce prefixe (et caractere _) doivent etre supprimes dans le fichier .phys -listePrefixesGroupeMaille = ("DIEL","NOCOND","COND","CURRENT","EPORT","HPORT","TOPO","PB_MOBILE","NILMAT", - "VCUT","VCUTN","EWALL","HWALL","GAMMAJ","PERIODIC","APERIODIC", - "HPROBE","EPROBE","BFLUX","BFLUXN","JFLUX","JFLUXN", - "PORT_OMEGA","POST_PHI","PB_GRID", - "SCUTE","SCUTN","ZS","ZJ","ZT") -# liste des prefixes des groupes de mailles, sans le separateur, par type de bloc du fichier PHYS sous la forme d'un dictionnaire -dictPrefixesGroupeMaille = {'DIELECTRIC':('DIEL','NOCOND'), - 'CONDUCTOR':('COND',), - 'STRANDED_INDUCTOR':('CURRENT', ), - 'EPORT':('EPORT', ), - 'HPORT':('HPORT', ), - 'ZSURFACIC':('ZS', ), - 'ZINSULATOR':('ZJ', ), - 'NILMAT':('NILMAT', )} -# separateur entre le prefixe et le reste du nom du groupe de maille -sepNomGroupeMaille = '_' - -# types de problemes -HARMONIC = 'HARMONIC' # probleme frequentiel -TIME_DOMAIN = 'TIME_DOMAIN' # probleme temporel - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'CARMEL3D', - # La factory pour creer une instance du plugin - 'factory' : CARMEL3DGenerator, - } - - -class CARMEL3DGenerator(PythonGenerator): - """ - Ce generateur parcourt un objet de type JDC et produit - un texte au format eficas et - un texte au format attendu par le code Code_Carmel3D (fichier '.PHYS') - - """ - # Les extensions de fichier permis? - extensions=('.comm',) - -#---------------------------------------------------------------------------------------- - def gener(self,obj,format='brut',config=None): - - self.initDico() - - # Cette instruction genere le contenu du fichier de commandes (persistance) - self.text=PythonGenerator.gener(self,obj,format) - - if self.debug: - print "self.text = %s", self.text - - # Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D - # si le jdc est valide (sinon cela n a pas de sens) - if obj.isvalid() : - # constitution du bloc VERSION du fichier PHYS (existe toujours) - try : - self.generBLOC_VERSION(obj) - except ValueError, err: - raise ValueError(str(err)) - - # constitution du bloc MATERIALS du fichier PHYS (existe toujours) - self.generBLOC_MATERIALS() - - # constitution du bloc SOURCES du fichier PHYS (existe toujours) - self.generBLOC_SOURCES() - -# print "texte carmel3d :\n",self.texteCarmel3D -# print "dictMaterDielectric : ",self.dictMaterDielectric - if self.debug: - print "dictMaterConductor : %s", repr(self.dictMaterConductor) - - return self.text - - -#---------------------------------------------------------------------------------------- -# initialisations -#---------------------------------------------------------------------------------------- - - def initDico(self) : - - self.texteCarmel3D="" - self.debug = True # affichage de messages pour deboguage (.true.) ou non - self.dicoEtapeCourant=None - self.dicoMCFACTCourant=None - self.dicoCourant=None - self.dictGroupesMaillage = {'ordreMateriauxJdC':[], 'ordreSourcesJdC':[]} # association des noms de groupes de maillage avec les noms de materiaux ou de sources, en sauvegardant l'ordre du JdC en separant les groupes associes a des materiaux de ceux associes a des sources - self.dictMaterConductor={} - self.dictMaterDielectric={} - self.dictMaterZsurfacic={} - self.dictMaterEmIso={} - self.dictMaterEmAnIso={} - self.dictMaterNilmat={} - self.dictMaterZinsulator={} - self.dictSourceStInd={} - self.dictSourceEport={} - self.dictSourceHport={} - # on force le probleme a etre frequentiel, seul possible en l'etat des choses - self.problem = HARMONIC - - -#---------------------------------------------------------------------------------------- -# ecriture -#---------------------------------------------------------------------------------------- - - def writeDefault(self,fn) : - """Ecrit le fichier de parametres (PHYS) pour le code Carmel3D""" - if self.debug: - print "ecriture du fichier de parametres (PHYS)" - filePHYS = fn[:fn.rfind(".")] + '.phys' - f = open( str(filePHYS), 'wb') - f.write( self.texteCarmel3D) - f.close() - -#---------------------------------------------------------------------------------------- -# analyse de chaque noeud de l'arbre -#---------------------------------------------------------------------------------------- - - def generMCSIMP(self,obj) : - """recuperation de l objet MCSIMP""" - if self.debug: - print "MCSIMP %(v_1)s %(v_2)s", {'v_1': obj.nom, "v_2": obj.valeur} - s=PythonGenerator.generMCSIMP(self,obj) - self.dicoCourant[obj.nom]=obj.valeurFormatee - return s - - -#---------------------------------------------------------------------------------------- - def generMCFACT(self,obj) : - """recuperation de l objet MCFACT""" - dico={} - self.dicoMCFACTCourant=dico - self.dicoCourant=self.dicoMCFACTCourant - s=PythonGenerator.generMCFACT(self,obj) - self.dicoEtapeCourant[obj.nom]=self.dicoMCFACTCourant - self.dicoMCFACTCourant=None - self.dicoCourant=self.dicoEtapeCourant - return s - -#---------------------------------------------------------------------------------------- - def generPROC_ETAPE(self,obj): - """analyse des PROC du catalogue ( VERSION )""" - dico={} - self.dicoEtapeCourant=dico - self.dicoCourant=self.dicoEtapeCourant - s=PythonGenerator.generPROC_ETAPE(self,obj) - obj.valeur=self.dicoEtapeCourant - if self.debug: - print "PROC_ETAPE %(v_1)s %(v_2)s", \ - {'v_1': unicode(obj.nom), "v_2": unicode(obj.valeur)} - s=PythonGenerator.generPROC_ETAPE(self,obj) - return s - -#---------------------------------------------------------------------------------------- - def generETAPE(self,obj): - """analyse des OPER du catalogue""" - dico={} - self.dicoEtapeCourant=dico - self.dicoCourant=self.dicoEtapeCourant - s=PythonGenerator.generETAPE(self,obj) - obj.valeur=self.dicoEtapeCourant - if self.debug: - print "ETAPE : obj.nom = %(v_1)s , obj.valeur= %(v_2)s", \ - {'v_1': obj.nom, 'v_2': obj.valeur} - if obj.nom=="MESHGROUP" : self.generMESHGROUP(obj) - if obj.nom=="MATERIAL" : self.generMATERIAL(obj) - if obj.nom=="SOURCE" : self.generSOURCE(obj) - s=PythonGenerator.generETAPE(self,obj) - return s - -#---------------------------------------------------------------------------------------- - def generMACRO_ETAPE(self,obj): - dico={} - self.dicoEtapeCourant=dico - self.dicoCourant=self.dicoEtapeCourant - import generator - monGenerateur=generator.plugins["CARMEL3D"]() - jdc_aux_texte=monGenerateur.gener(obj.jdc_aux) - if self.debug: - print "jdc_aux_texte : %s", jdc_aux_texte - - for cle in monGenerateur.dictMaterConductor: - self.dictMaterConductor[cle] = monGenerateur.dictMaterConductor[cle] - for cle in monGenerateur.dictMaterDielectric: - self.dictMaterDielectric[cle] = monGenerateur.dictMaterDielectric[cle] - for cle in monGenerateur.dictMaterZsurfacic: - self.dictMaterZsurfacic[cle] = monGenerateur.dictMaterZsurfacic[cle] - for cle in monGenerateur.dictMaterEmIso: - self.dictMaterEmIso[cle] = monGenerateur.dictMaterEmIso[cle] - for cle in monGenerateur.dictMaterEmAnIso: - self.dictMaterEmAnIso[cle] = monGenerateur.dictMaterEmAnIso[cle] - for cle in monGenerateur.dictMaterNilmat: - self.dictMaterNilMat[cle] = monGenerateur.dictMaterNilMat[cle] - for cle in monGenerateur.dictMaterZinsulator: - self.dictMaterZinsulator[cle] = monGenerateur.dictMaterZinsulator[cle] - - print "________FIN MACRO______________________________________" - s=PythonGenerator.generMACRO_ETAPE(self,obj) - return s - -#---------------------------------------------------------------------------------------- -#---------------------------------------------------------------------------------------- - def generMESHGROUP(self,obj): - """preparation de la ligne NAME referencant le groupe de mailles - associe le groupe de mailles au materiau ou a la source utilisateur - on sauvegarde aussi les noms des groupes de maillage - """ - - try: - if usePrefix: - nomGroupeMaillage = self.nomReelGroupeMaillage(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves - else: - nomGroupeMaillage = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept - # test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement. - # test sur un seul attribut, non pertinent car il peut y en avoir plusieurs. - #assert len(obj.valeur.keys())==1,"Un et un seul nom de materiau ou source doit etre associe a ce groupe du maillage :"+nomGroupeMaillage - # - # on utilise le fait que obj.valeur est un dictionnaire - if self.debug: - print "obj.valeur.keys()= %s", obj.valeur.keys() - if 'MATERIAL' in obj.valeur.keys() and 'SOURCE' in obj.valeur.keys(): # test d'erreur lors de presence de materiau et source a la fois - raise ValueError,tr(" ce groupe de maillage %s est associe a au moins un materiau et au moins une source.", nomGroupeMaillage) - # association a un materiau - if 'MATERIAL' in obj.valeur.keys(): - self.dictGroupesMaillage[nomGroupeMaillage] = obj.valeur['MATERIAL'].nom # sauvegarde de l'association entre ce groupe de maillage et un materiau ou source, par son nom, i.e. nom du concept du materiau ou de la source - self.dictGroupesMaillage['ordreMateriauxJdC'].append(nomGroupeMaillage) # sauvegarde du nom du groupe de maillage associe a un materiau, dans l'ordre du JdC - # association a une source - elif 'SOURCE' in obj.valeur.keys(): - self.dictGroupesMaillage[nomGroupeMaillage] = obj.valeur['SOURCE'].nom # sauvegarde de l'association entre ce groupe de maillage et un materiau ou source, par son nom, i.e. nom du concept du materiau ou de la source - self.dictGroupesMaillage['ordreSourcesJdC'].append(nomGroupeMaillage) # sauvegarde du nom du groupe de maillage associe a une source, dans l'ordre du JdC - # erreur ni materiau ni source associee - else: - raise ValueError, tr("ce groupe de maillage %s n'est associe a aucun materiau ou source.", nomGroupeMaillage) - if self.debug: - print "self.dictGroupesMaillage= %s", repr(self.dictGroupesMaillage) - except: - pass - - - def generMATERIAL(self,obj): - """preparation du bloc correspondant a un materiau du fichier PHYS""" - texte="" - if self.debug: - print "generation material obj valeur = %s", obj.valeur - try : - nature = obj.valeur['TYPE'] # la nature est le parametre TYPE du MATERIAL - if nature=="CONDUCTOR" : self.generMATERIAL_CONDUCTOR(obj) - if nature=="DIELECTRIC" : self.generMATERIAL_DIELECTRIC(obj) - if nature=="ZSURFACIC" : self.generMATERIAL_ZSURFACIC(obj) - if nature=="EM_ISOTROPIC" : self.generMATERIAL_EMISO(obj) - if nature=="EM_ANISOTROPIC" : self.generMATERIAL_EMANISO(obj) - if nature=="NILMAT" : self.generMATERIAL_NILMAT(obj) - if nature=="ZINSULATOR" : self.generMATERIAL_ZINSULATOR(obj) - except: - pass - - def generMATERIAL_CONDUCTOR(self,obj): - """preparation du sous bloc CONDUCTOR""" - texte="" - if self.debug: - print "_____________cond_____________" - # verification des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY) - if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur: - print "ERREUR! Le bloc CONDUCTOR doit contenir PERMEABILITY et CONDUCTIVITY." - else: - # parcours des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY) - for keyN1 in ('PERMEABILITY','CONDUCTIVITY') : - # debut du sous bloc de propriete du DIELECTRIC - texte+=" ["+keyN1+"\n" - texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" - texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" - # Ecriture des valeurs seulement pour un materiau homogene et isotrope, - # car sinon ces valeurs sont definies dans des fichiers annexes - homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' - isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' - if homogeneous and isotropic: - # loi (lineaire ou non) - texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" - # valeur de la loi lineaire - texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" - # loi non lineaire de nature spline, Marrocco ou Marrocco et Saturation - # seuls les reels sont pris en compte - if obj.valeur[keyN1]['LAW']=='NONLINEAR' : - texte+=" [NONLINEAR \n" - texte+=" ISOTROPY TRUE\n" - texte+=" NATURE "+str(obj.valeur[keyN1]['NATURE'])+"\n" - # ajout des autres parametres autres que ISOTROPY, NATURE, VALUE, LAW, HOMOGENEOUS, ISOTROPIC - for keyN2 in obj.valeur[keyN1] : - if keyN2 not in ('ISOTROPY','NATURE','VALUE','LAW','HOMOGENEOUS','ISOTROPIC') : - texte+=" "+keyN2+" "+str(obj.valeur[keyN1][keyN2])+"\n" - # fin du sous-bloc NONLINEAR - texte+=" ]"+"\n" - # fin du sous bloc de propriete - texte+=" ]"+"\n" - if self.debug: - print "texte = %s", texte - self.dictMaterConductor[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc - - def generMATERIAL_DIELECTRIC(self,obj): - """preparation du sous bloc DIELECTRIC""" - texte="" - if self.debug: - print "______________nocond_____________" - # verification des proprietes du sous bloc DIELECTRIC (PERMEABILITY, PERMITTIVITY) - if 'PERMEABILITY' not in obj.valeur or 'PERMITTIVITY' not in obj.valeur: - print "ERREUR! Le bloc DIELECTRIC doit contenir PERMEABILITY et PERMITTIVITY." - else: - # parcours des proprietes du sous bloc DIELECTRIC (PERMEABILITY, PERMITTIVITY) - for keyN1 in ('PERMEABILITY','PERMITTIVITY') : - # debut du sous bloc de propriete du DIELECTRIC - texte+=" ["+keyN1+"\n" - texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" - texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" - # Ecriture des valeurs seulement pour un materiau homogene et isotrope, - # car sinon ces valeurs sont definies dans des fichiers annexes - homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' - isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' - if homogeneous and isotropic: - # loi (lineaire ou non) - texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" - # valeur de la loi lineaire - texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" - # loi non lineaire de nature spline, Marrocco ou Marrocco et Saturation - # seuls les reels sont pris en compte - if obj.valeur[keyN1]['LAW']=='NONLINEAR' : - texte+=" [NONLINEAR \n" - texte+=" ISOTROPY TRUE\n" - texte+=" NATURE "+str(obj.valeur[keyN1]['NATURE'])+"\n" - # ajout des autres parametres autres que ISOTROPY, NATURE, VALUE, LAW, HOMOGENEOUS, ISOTROPIC - for keyN2 in obj.valeur[keyN1] : - if keyN2 not in ('ISOTROPY','NATURE','VALUE','LAW','HOMOGENEOUS','ISOTROPIC') : - texte+=" "+keyN2+" "+str(obj.valeur[keyN1][keyN2])+"\n" - # fin du sous-bloc NONLINEAR - texte+=" ]"+"\n" - # fin du sous bloc de propriete - texte+=" ]"+"\n" - if self.debug: - print "texte = %s", texte - self.dictMaterDielectric[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc - - def generMATERIAL_ZSURFACIC(self,obj): - """preparation du sous bloc ZSURFACIC""" - texte="" - if self.debug: - print "______________zsurf_____________" - # verification des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY) - if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur: - print "ERREUR! Le bloc ZSURFACIC doit contenir PERMEABILITY et CONDUCTIVITY." - else: - # parcours des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY) - for keyN1 in obj.valeur : - if keyN1=='TYPE': continue - # print "type loi = ", obj.valeur[keyN1]['LAW'] - # debut du sous bloc de propriete du DIELECTRIC - texte+=" ["+keyN1+"\n" - texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" - texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" - # Ecriture des valeurs seulement pour un materiau homogene et isotrope, - # car sinon ces valeurs sont definies dans des fichiers annexes - homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' - isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' - if homogeneous and isotropic: - # loi (lineaire ou non) - texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" - # valeur de la loi lineaire - texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" - # fin du sous bloc de propriete - texte+=" ]"+"\n" - if self.debug: - print "texte = %s", texte - self.dictMaterZsurfacic[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc - - def generMATERIAL_EMISO(self,obj): - """preparation du sous bloc EM_ISOTROPIC_FILES. - Les fichiers sont indiques par le chemin absolu, i.e. le nom complet du JdC, - ce qui permet de deplacer les dossiers contenant le modele complet puisque le JdC permet les chemins relatifs. - """ - texte =" CONDUCTIVITY MED "+str(obj.valeur["CONDUCTIVITY_File"])+"\n" - texte+=" PERMEABILITY MED "+str(obj.valeur["PERMEABILITY_File"])+"\n" - # Possibilite de forcer le chemin relatif (nom de fichier seulement) plutot que le chemin absolu par defaut - #from os.path import basename - #texte =" CONDUCTIVITY MED "+basename(str(obj.valeur["CONDUCTIVITY_File"]))+"\n" - #texte+=" PERMEABILITY MED "+basename(str(obj.valeur["PERMEABILITY_File"]))+"\n" - # print "obj get sdname= ", obj.get_sdname() - # if obj.get_sdname() in self.dictMaterEmIso.keys() : - # self.dictMaterEmIso[obj.get_sdname()].append(texte) - # else : - self.dictMaterEmIso[obj.get_sdname()]=texte - - def generMATERIAL_EMANISO(self,obj): - """preparation du sous bloc EM_ANISOTROPIC_FILES. - Les fichiers sont indiques par le chemin absolu, i.e. le nom complet du JdC, - ce qui permet de deplacer les dossiers contenant le modele complet puisque le JdC permet les chemins relatifs. - """ - texte =" CONDUCTIVITY MATER "+str(obj.valeur["CONDUCTIVITY_File"])+"\n" - texte+=" PERMEABILITY MATER "+str(obj.valeur["PERMEABILITY_File"])+"\n" - # print "obj get sdname= ", obj.get_sdname() - # if obj.get_sdname() in self.dictMaterEmAnIso.keys() : - # self.dictMaterEmAnIso[obj.get_sdname()].append(texte) - # else : - self.dictMaterEmAnIso[obj.get_sdname()]=texte - - def generMATERIAL_NILMAT(self,obj): - """preparation du sous bloc NILMAT""" - texte="" - self.dictMaterNilmat[obj.get_sdname()]=texte - - def generMATERIAL_ZINSULATOR(self,obj): - """"preparation du sous bloc ZINSULATOR""" - texte="" - self.dictMaterZinsulator[obj.get_sdname()]=texte - -#------------------------------------------------------------------- - - def generSOURCE(self,obj): - """preparation du bloc correspondant a une source du fichier PHYS""" - if self.debug: - print "generation source obj valeur = %s", obj.valeur - texte="" - try : - # test de la presence des types de sources reconnus - # commes ces sources sont des mot-cles facteurs, i.e. une cle de dictionnaire, - # la source ne peut contenir au plus qu'un type de source. - if "STRANDED_INDUCTOR" in obj.valeur: - self.generSOURCE_STRANDED_INDUCTOR(obj) - elif "HPORT" in obj.valeur: - self.generSOURCE_HPORT(obj) - elif "EPORT" in obj.valeur: - self.generSOURCE_EPORT(obj) - else: - print "ERREUR! Une source du type STRANDED_INDUCTOR, HPORT ou EPORT est attendue." - except: - pass - - def generSOURCE_STRANDED_INDUCTOR(self,obj): - """preparation du sous bloc STRANDED_INDUCTOR""" - texte="" - sdict = obj.valeur['STRANDED_INDUCTOR'] # dictionnaire contenant les parametres de la source, outre la forme de la source - try : - texte+=" NTURNS %s\n" % str(sdict['NTURNS']) - # test de la presence d'une forme de source reconnue - # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, - # la source ne peut contenir au plus qu'un type de source. - if "WAVEFORM_CONSTANT" in obj.valeur: - wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" CURJ POLAR %s 0\n" % str(wdict['AMPLITUDE']) - print tr("ATTENTION! Une source constante \ - n'est possible qu'a frequence nulle \ - en regime frequentiel") - elif "WAVEFORM_SINUS" in obj.valeur: - wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" CURJ POLAR %(ampli)s %(phase)s\n" \ - % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} - else: - print tr("ERREUR! Une forme de la source du \ - type WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") - self.dictSourceStInd[obj.get_sdname()]=texte - if self.debug: - print texte - except Exception: - pass - - def generSOURCE_HPORT(self,obj): - """preparation du sous bloc HPORT""" - texte="" - sdict = obj.valeur['HPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source - try : - texte+=" TYPE %s\n" % str(sdict['TYPE']) - # test de la presence d'une forme de source reconnue - # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, - # la source ne peut contenir au plus qu'un type de source. - if "WAVEFORM_CONSTANT" in obj.valeur: - wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" AMP POLAR %s 0\n" % str(wdict['AMPLITUDE']) - print tr("ATTENTION! Une source constante n'est \ - possible qu'a frequence nulle en regime frequentiel") - elif "WAVEFORM_SINUS" in obj.valeur: - wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" AMP POLAR %(ampli)s %(phase)s\n" \ - % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} - else: - print tr("ERREUR! Une forme de la source du type \ - WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") - self.dictSourceHport[obj.get_sdname()]=texte - if self.debug: - print texte - except: - pass - - def generSOURCE_EPORT(self,obj): - """preparation du sous bloc EPORT""" - texte="" - sdict = obj.valeur['EPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source - try : - texte+=" TYPE %s\n" % str(sdict['TYPE']) - # test de la presence d'une forme de source reconnue - # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, - # la source ne peut contenir au plus qu'un type de source. - if "WAVEFORM_CONSTANT" in obj.valeur: - wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" AMP POLAR %s 0\n" % str(wdict['AMPLITUDE']) - print tr("ATTENTION! Une source constante n'est possible qu'a frequence nulle en regime frequentiel") - elif "WAVEFORM_SINUS" in obj.valeur: - wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source - if self.problem == HARMONIC: - texte+=" AMP POLAR %(ampli)s %(phase)s\n" \ - % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} - else: - print tr("ERREUR! Une forme de la source du type \ - WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") - self.dictSourceEport[obj.get_sdname()]=texte - if self.debug: - print texte - except: - pass - -#--------------------------------------------------------------------------------------- -# traitement fichier PHYS -#--------------------------------------------------------------------------------------- - - def generBLOC_VERSION(self,obj) : - # constitution du bloc VERSION du fichier PHYS - # creation d une entite VERSION ; elle sera du type PROC car decrit ainsi - # dans le du catalogue - version=obj.addentite('VERSION',pos=None) - self.generPROC_ETAPE(obj.etapes[0]) - self.texteCarmel3D+="["+obj.etapes[0].nom+"\n" - for cle in obj.etapes[0].valeur : - self.texteCarmel3D+=" "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n" - self.texteCarmel3D+="]\n" - # destruction de l entite creee - obj.suppentite(version) - -#---------------------------------------------------------------------------------------- - def generBLOC_MATERIALS(self) : - """Prepare une partie du contenu du fichier de parametres (PHYS) pour le code Carmel3D (bloc MATERIALS). - Le bloc MATERIALS existe toujours ! - """ - if self.debug: - print "cle dictionnaire materconductor : %s", self.dictMaterConductor.keys() - print "cle dictionnaire materdielectric : %s", self.dictMaterDielectric.keys() - # constitution du bloc MATERIALS du fichier PHYS - self.texteCarmel3D+="[MATERIALS\n" - # tri alphabetique de tous les groupes de maillage associes a des sources (plus necessaire Code_Carmel3D V_2_3_1 et +, mais avant oui) - nomsGroupesMaillage = self.dictGroupesMaillage['ordreMateriauxJdC'][:] # copie de l'original, qui est une liste - nomsGroupesMaillage.sort() # tri alphabetique, avec les prefixes eventuels - if self.debug: - print "noms groupes de mailles associes a des materiaux \ - (ordre JdC puis tri)= %(v_1)s %(v_2)s", \ - {'v_1': self.dictGroupesMaillage['ordreMateriauxJdC'], \ - 'v_2': nomsGroupesMaillage} - # constitution du bloc CONDUCTOR du fichier PHYS si existe - if self.dictMaterConductor != {} : self.creaBLOC_CONDUCTOR(nomsGroupesMaillage) - # constitution du bloc DIELECTRIC du fichier PHYS si exixte - if self.dictMaterDielectric != {} : self.creaBLOC_DIELECTRIC(nomsGroupesMaillage) - # constitution du bloc ZSURFACIC du fichier PHYS si exixte - if self.dictMaterZsurfacic != {} : self.creaBLOC_ZSURFACIC(nomsGroupesMaillage) - # constitution du bloc NILMAT du fichier PHYS si exixte - if self.dictMaterNilmat != {} : self.creaBLOC_NILMAT(nomsGroupesMaillage) - # constitution du bloc ZINSULATOR du fichier PHYS si exixte - if self.dictMaterZinsulator != {} : self.creaBLOC_ZINSULATOR(nomsGroupesMaillage) - # Les blocs EM_ISOTROPIC_FILES et EM_ANISOTROPIC_FILES sont places en dernier dans le fichier PHYS - # constitution du bloc EM_ISOTROPIC_FILES du fichier PHYS si exixte - if self.dictMaterEmIso != {} : self.creaBLOC_EMISO() - # constitution du bloc EM_ANISOTROPIC_FILES du fichier PHYS si exixte - if self.dictMaterEmAnIso != {} : self.creaBLOC_EMANISO() - # fin du bloc MATERIALS du fichier PHYS - self.texteCarmel3D+="]\n" - - def creaBLOC_CONDUCTOR(self, nomsGroupesMaillage) : - """Constitution du bloc CONDUCTOR du fichier PHYS""" - typeBloc = 'CONDUCTOR' # initialisation du type de bloc - dictProprietes = self.dictMaterConductor # initialisation du dictionnaire des proprietes du bloc - if self.debug: - print 'cles materiaux de type %(type_bloc)s = %(cle_bloc)s', \ - {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type - # ecriture du bloc complet - self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_DIELECTRIC(self, nomsGroupesMaillage) : - """Constitution du bloc DIELECTRIC du fichier PHYS""" - typeBloc = 'DIELECTRIC' # initialisation du type de bloc - dictProprietes = self.dictMaterDielectric # initialisation du dictionnaire des proprietes du bloc - if self.debug: - print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ - {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type - # ecriture du bloc complet - self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc - self.texteCarmel3D+=" NAME "+nom+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_ZSURFACIC(self, nomsGroupesMaillage) : - """Constitution du bloc ZSURFACIC du fichier PHYS""" - typeBloc = 'ZSURFACIC' # initialisation du type de bloc - dictProprietes = self.dictMaterZsurfacic # initialisation du dictionnaire des proprietes du bloc - if self.debug: - print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ - {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type - # ecriture du bloc complet - self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_EMISO(self) : - """constitution du bloc EM_ISOTROPIC_FILES du fichier PHYS""" - for cle in self.dictMaterEmIso.keys(): - self.texteCarmel3D+=" [EM_ISOTROPIC_FILES\n" - self.texteCarmel3D+= self.dictMaterEmIso[cle] - self.texteCarmel3D+=" ]\n" - - def creaBLOC_EMANISO(self) : - """constitution du bloc EM_ANISOTROPIC_FILES du fichier PHYS""" - for cle in self.dictMaterEmAnIso.keys(): - self.texteCarmel3D+=" [EM_ANISOTROPIC_FILES\n" - self.texteCarmel3D+= self.dictMaterEmAnIso[cle] - self.texteCarmel3D+=" ]\n" - - def creaBLOC_ZINSULATOR(self, nomsGroupesMaillage) : - """Constitution du bloc ZINSULATOR du fichier PHYS""" - typeBloc = 'ZINSULATOR' # initialisation du type de bloc - dictProprietes = self.dictMaterZinsulator # initialisation du dictionnaire des proprietes du bloc - if self.debug: print 'cles materiaux de type '+typeBloc+'=', dictProprietes.keys() - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type - # ecriture du bloc complet - self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_NILMAT(self, nomsGroupesMaillage) : - """Constitution du bloc NILMAT du fichier PHYS""" - typeBloc = 'NILMAT' # initialisation du type de bloc - dictProprietes = self.dictMaterNilmat # initialisation du dictionnaire des proprietes du bloc - if self.debug: - print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ - {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type - # ecriture du bloc complet - self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe - self.texteCarmel3D+=" ]\n" # fin de bloc - -#---------------------------------------------------------------------------------------- - def generBLOC_SOURCES(self): - """constitution du bloc SOURCES du fichier PHYS""" - self.texteCarmel3D+="[SOURCES\n" - # tri alphabetique de tous les groupes de maillage associes a des sources - nomsGroupesMaillage = self.dictGroupesMaillage['ordreSourcesJdC'][:] # copie de l'original, qui est une liste - nomsGroupesMaillage.sort() # tri alphabetique, avec les prefixes eventuels - if self.debug: - print 'noms groupes de mailles associes a des sources \ - (ordre JdC puis tri)=%(g_maillage_orig)s %(g_maillage_trie)s', \ - {'g_maillage_orig': self.dictGroupesMaillage['ordreSourcesJdC'], \ - 'g_maillage_trie': nomsGroupesMaillage} - if self.dictSourceStInd != {}: self.creaBLOC_STRANDED_INDUCTOR(nomsGroupesMaillage) - if self.dictSourceEport != {}: self.creaBLOC_EPORT(nomsGroupesMaillage) - if self.dictSourceHport != {}: self.creaBLOC_HPORT(nomsGroupesMaillage) - # fin du bloc SOURCES du fichier PHYS - self.texteCarmel3D+="]\n" - - - def creaBLOC_STRANDED_INDUCTOR(self, nomsGroupesMaillage) : - """constitution du bloc STRANDED_INDUCTOR du fichier PHYS""" - if self.debug: - print 'cles sources STRANDED_INDUCTOR= %s', self.dictSourceStInd.keys() - typeBloc = 'STRANDED_INDUCTOR' - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in self.dictSourceStInd.keys(): # test si le nom de la source associee est un inducteur bobine - # ecriture du bloc de l'inducteur bobine - self.texteCarmel3D+=" [STRANDED_INDUCTOR\n" # debut de bloc - self.texteCarmel3D+=" NAME "+nom+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= self.dictSourceStInd[self.dictGroupesMaillage[nom]] # ecriture des proprietes de l'inducteur bobine - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_EPORT(self, nomsGroupesMaillage) : - """constitution du bloc EPORT du fichier PHYS""" - if self.debug: - print 'cles sources EPORT= %s', self.dictSourceEport.keys() - typeBloc = 'EPORT' - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in self.dictSourceEport.keys(): # test si le nom de la source associee est un port electrique - # ecriture du bloc du port electrique - self.texteCarmel3D+=" [EPORT\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= self.dictSourceEport[self.dictGroupesMaillage[nom]] # ecriture des proprietes du port electrique - self.texteCarmel3D+=" ]\n" # fin de bloc - - def creaBLOC_HPORT(self, nomsGroupesMaillage) : - """constitution du bloc HPORT du fichier PHYS""" - if self.debug: - print 'cles sources HPORT= %s', self.dictSourceHport.keys() - typeBloc = 'HPORT' - for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage - if self.dictGroupesMaillage[nom] in self.dictSourceHport.keys(): # test si le nom de la source associee est un port magnetique - # ecriture du bloc du port magnetique - self.texteCarmel3D+=" [HPORT\n" # debut de bloc - if usePrefix: - nomReel = self.nomReelGroupeMaillage(nom, typeBloc) - else: - nomReel = nom - self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage - self.texteCarmel3D+= self.dictSourceHport[self.dictGroupesMaillage[nom]] # ecriture des proprietes du port magnetique - self.texteCarmel3D+=" ]\n" # fin de bloc - -#------------------------------------- -# Methodes utilitaires -# ------------------------------------ - def formateCOMPLEX(self,nbC): - """prise en compte des differentes formes de description d un nombre complexe - 3 formats possibles : 2 listes (anciennement tuples?) et 1 nombre complexe - """ - if self.debug: - print "formatage " - print "type : %(type_nb_c)s pour %(nb_c)s", \ - {'type_nb_c': type(nbC), 'nb_c': nbC} - nbformate ="" - if isinstance(nbC,(tuple,list)): - if nbC[0] == "'RI'" : - nbformate = "COMPLEX " + str(nbC[1])+" "+str(nbC[2]) - if nbC[0] == "'MP'" : - nbformate = "POLAR " + str(nbC[1])+" "+str(nbC[2]) - else: - nbformate = "COMPLEX " + str(nbC.real)+" "+str(nbC.imag) - if self.debug: - print "nbformate : %s", nbformate - return nbformate - - def nomReelGroupeMaillage(self, nom, typeBloc=None): - """Calcule et retourne le nom reel du groupe de maillage donne en entree, - en tenant compte de l'utilisation de prefixes ou pas, et cela pour le type - de bloc du fichier PHYS specifie. - Cette routine verifie aussi, en cas d'utilisation de prefixes, si le prefixe est en adequation avec le type du bloc. - """ - from string import join - if self.debug: - print "nom groupe original : %(nom)s avec usePrefix=%(use_prefix)s devient...", \ - {'nom': nom, 'use_prefix': str(usePrefix)} - nomReel= None # nom affiche dans le fichier PHYS, sans prefixe a priori - if usePrefix: - # suppression du prefixe si present - partiesNom = nom.split(sepNomGroupeMaille) # separation du nom du groupe en parties - # les tests suivants ne generent une erreur que si le prefixe est obligatoire - if len(partiesNom) < 2: # test d'erreur, pas de separateur donc nom incorrect, i.e. sans prefixe c'est sur - print tr("ERREUR! ce groupe de maille (%s) n'a pas de prefixe \ - indiquant le type de materiau ou de source associee", nom) - elif partiesNom[0] not in listePrefixesGroupeMaille: # prefixe non defini - print tr("ERREUR! ce groupe de maille (%s) n'a pas de prefixe valable", nom) - else: - # verification de l'adequation du prefixe avec le type de bloc demande, si fourni - if typeBloc is not None: - if typeBloc not in dictPrefixesGroupeMaille: # test validite de typeBloc, devant etre une cle du dictionnaire - print tr("ERREUR! ce type de bloc (%s) n'est pas valable", str(typeBloc)) - elif partiesNom[0] not in dictPrefixesGroupeMaille[typeBloc]: # pas de prefixe correct pour ce type de bloc - print tr("ERREUR! ce groupe de maille (%(nom)s) n'a pas \ - le prefixe correct pour etre associe a un type %(type_bloc)s", \ - {'nom': nom, 'type_bloc': str(typeBloc)}) - else: # c'est bon - nomReel = join(partiesNom[1:], sepNomGroupeMaille) # reconstruction du nom du groupe sans prefixe complet - if self.debug: - print "ce groupe de maille (%(nom)s) a un prefixe qui \ - est supprime automatiquement pour devenir : %(nom_reel)s", \ - {'nom': nom, 'nom_reel': nomReel} - else: # c'est bon - nomReel = join(partiesNom[1:], sepNomGroupeMaille) # reconstruction du nom du groupe sans prefixe complet - if self.debug: - print "ce groupe de maille (%(nom)s) a un prefixe qui \ - est supprime automatiquement pour devenir : %(nom_reel)s", \ - {'nom': nom, 'nom_reel': nomReel} - if self.debug: - print "... %s", nomReel - return nomReel diff --git a/generator/generator_CARMEL3D_frequentiel.py b/generator/generator_CARMEL3D_frequentiel.py index 5fa1e061..3d2dc77b 100755 --- a/generator/generator_CARMEL3D_frequentiel.py +++ b/generator/generator_CARMEL3D_frequentiel.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_CARMEL3D_temporel.py b/generator/generator_CARMEL3D_temporel.py index 6720c87d..6fa901cf 100644 --- a/generator/generator_CARMEL3D_temporel.py +++ b/generator/generator_CARMEL3D_temporel.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_CARMELCND.py b/generator/generator_CARMELCND.py deleted file mode 100755 index ab6e28b9..00000000 --- a/generator/generator_CARMELCND.py +++ /dev/null @@ -1,303 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. -""" - -import traceback -import types,string,re,os -from Extensions.i18n import tr -from generator_python import PythonGenerator -import Accas - -debutTextePhys ="[VERSION\n NUM 1\n FILETYPE PHYS\n]\n" -debutTextePhys+="[MATERIALS\n" -texteConductor =" [CONDUCTIVITY\n LAW LINEAR\n" -texteConductor+=" HOMOGENEOUS TRUE\n" -texteConductor+=" ISOTROPIC TRUE\n" -texteConducto2 =" 0.0000000000000000E+00\n ]\n" -texteConducto2+=" [PERMEABILITY\n LAW LINEAR\n" -texteConducto2+=" HOMOGENEOUS TRUE\n" -texteConducto2+=" ISOTROPIC TRUE\n" -texteNoCond =" [PERMITTIVITY\n LAW LINEAR\n" -texteNoCond+=" HOMOGENEOUS TRUE\n ISOTROPIC TRUE\n" -texteNoCond+=" VALUE COMPLEX 0.1000000000000000E+01 0.0000000000000000E+00\n" -texteNoCond+=" ]\n [PERMEABILITY\n LAW LINEAR\n" -texteNoCond+=" HOMOGENEOUS TRUE\n ISOTROPIC TRUE\n" - -debutTexteParam ="[VERSION\n NUM 1\n FILETYPE PARAM\n]\n" -debutTexteParam+="[PROBLEM\n NAME HARMONIC\n]\n" -debutTexteParam+="[CAR_FILES\n NAME " - -debutTexteZs0 =" [ZSURFACIC\n NAME " -debutTexteZs ="\n [CONDUCTIVITY\n" -debutTexteZs+=" LAW LINEAR\n" -debutTexteZs+=" HOMOGENEOUS TRUE\n" -debutTexteZs+=" ISOTROPIC TRUE\n" -debutTexteZs+=" VALUE COMPLEX " -texteZs2 =" 0.0000000000000000E+00\n ]\n" -texteZs2 +=" [PERMEABILITY\n LAW LINEAR\n" -texteZs2 +=" HOMOGENEOUS TRUE\n" -texteZs2 +=" ISOTROPIC TRUE\n VALUE COMPLEX " -finTexteZs =" 0.0000000000000000E+00\n ]\n ]\n" - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'CARMELCND', - # La factory pour creer une instance du plugin - 'factory' : CARMELCNDGenerator, - } - - -class CARMELCNDGenerator(PythonGenerator): - """ - Ce generateur parcourt un objet de type JDC et produit - un texte au format eficas et - un texte au format dictionnaire - - """ - # Les extensions de fichier permis? - extensions=('.comm',) - -#---------------------------------------------------------------------------------------- - def gener(self,obj,format='brut',config=None): - - self.initDico() - - # Cette instruction genere le contenu du fichier de commandes (persistance) - self.text=PythonGenerator.gener(self,obj,format) - self.racine=obj - return self.text - - -#---------------------------------------------------------------------------------------- -# initialisations -#---------------------------------------------------------------------------------------- - - def initDico(self) : - - self.dictMCVal={} - -#---------------------------------------------------------------------------------------- -# ecriture -#---------------------------------------------------------------------------------------- - - def writeDefault(self,file) : -#file ne sert pas - - self.texteIngendof="" - self.texteParam=debutTexteParam - self.chercheFichier() - self.traiteSourceVCut() - - fn=self.fnBase - fileIngendofDeb = fn[:fn.rfind(".")] + '.ingendof' - fileIngendof = os.path.join(self.sauveDirectory,fileIngendofDeb) - f = open( str(fileIngendof), 'wb') - f.write( self.texteIngendof ) - f.close() - - self.textePhys=debutTextePhys - self.traiteMateriaux() - filePhysDeb = fn[:fn.rfind(".")] + '.phys' - filePhys = os.path.join(self.sauveDirectory,filePhysDeb) - f = open( str(filePhys), 'wb') - f.write( self.textePhys ) - f.close() - - fileParamDeb = fn[:fn.rfind(".")] + '.param' - fileParam = os.path.join(self.sauveDirectory,fileParamDeb) - self.traiteParam() - f = open( str(fileParam), 'wb') - f.write( self.texteParam ) - f.close() - - self.texteCMD="[ \n GLOBAL \n] \n[ \nVISU \n"+self.fnBase.split(".med")[0]+"\nMED \nELEMENT \n] " - fileCMDDeb = fn[:fn.rfind(".")] + '.cmd' - fileCMD =os.path.join(self.sauveDirectory,fileCMDDeb) - f = open( str(fileCMD), 'wb') - f.write( self.texteCMD ) - f.close() - - nomBaseFichier=os.path.basename(fileParam).split(".med")[0] - - self.texteInfcarmel=nomBaseFichier - fileInfcarmelDeb = fn[:fn.rfind(".")] + '.infcarmel' - fileInfcarmel=os.path.join(self.sauveDirectory,fileInfcarmelDeb) - f = open( str(fileInfcarmel), 'wb') - f.write( self.texteInfcarmel ) - f.close() - - self.texteInpostpro=nomBaseFichier+"\n"+nomBaseFichier.split(".param")[0]+'.xmat\n'+nomBaseFichier.split(".param")[0]+'.cmd' - fileInpostproDeb = fn[:fn.rfind(".")] + '.inpostprocess' - fileInpostpro = os.path.join(self.sauveDirectory,fileInpostproDeb) - f = open( str(fileInpostpro), 'wb') - f.write( self.texteInpostpro ) - f.close() - -#---------------------------------------------------------------------------------------- -# analyse des commentaires pour trouver le nom du fichier -#---------------------------------------------------------------------------------------- - - def chercheFichier(self) : - nomFichier="inconnu" - for e in self.racine.etapes: - if isinstance(e,Accas.COMMENTAIRE): - print 'ùmasdkfh=',e.valeur[0:17] - if e.valeur[0:17]=="Cree - fichier : ": - debut=e.valeur[17:] - liste=debut.split(" - ") - nomFichier=liste[0] - #print 'nom=',nomFichier - #print 'e.va=',e.valeur.split(" ")[-1] - #print 'liste=',liste - nomDomaine=e.valeur.split(" ")[-1] - break - self.sauveDirectory=os.path.dirname(nomFichier) - self.fnBase=os.path.basename(nomFichier) - self.texteIngendof =os.path.basename(nomFichier)+"\n" - self.texteParam += os.path.basename(nomFichier).split(".med")[0]+".car\n]\n" - self.texteParam +="[PHYS_FILES\n NAME "+os.path.basename(nomFichier).split(".med")[0]+".phys\n]\n" - -#---------------------------------------------------------------------------------------- -# analyse du dictionnaire pour trouver les sources et les VCut et les ZS -#---------------------------------------------------------------------------------------- - - def traiteSourceVCut(self) : - listeSource=[] - listeVCut=[] - self.listeZS=[] - self.texteSourcePhys="[SOURCES\n" - for k in self.dictMCVal.keys(): - if k.find ("______SOURCE__") > -1 : - noms=k.split("_____") - if noms[0] not in listeSource : listeSource.append(noms[0]) - if k.find ("______VCUT__") > -1 : - noms=k.split("_____") - if noms[0] not in listeVCut : listeVCut.append(noms[0]) - if k.find ("______ZS") > -1 : - noms=k.split("_____") - if noms[0] not in self.listeZS : self.listeZS.append(noms[0]) - listeSource.sort() - for source in listeSource: - debutKey=source+"______SOURCE__" - texteSource=self.dictMCVal[debutKey+"EnveloppeConnexeInducteur"]+"\n" - texteSource+="2\n" - for val in self.dictMCVal[debutKey+"VecteurDirecteur"] : - texteSource+=str(val)+" " - texteSource+="\n" - for val in self.dictMCVal[debutKey+"Centre"] : - texteSource+=str(val)+" " - texteSource+="\n" - texteSource+=str(self.dictMCVal[debutKey+"SectionBobine"])+"\n" - self.texteIngendof+=texteSource - self.texteSourcePhys+=" [STRANDED_INDUCTOR\n" - self.texteSourcePhys+=" NAME "+source+"\n" - self.texteSourcePhys+=" NTURNS "+str(self.dictMCVal[debutKey+"NbdeTours"])+"\n" - self.texteSourcePhys+=" CURJ POLAR "+str(self.dictMCVal[debutKey+"Amplitude"]) - self.texteSourcePhys+=" 0.0000000000000000E+00\n ]\n" - - self.texteSourcePhys+="]\n" - for vcut in listeVCut: - self.texteIngendof+="1\n" - debutKey=vcut+"______VCUT__" - if self.dictMCVal[debutKey+"Orientation"] == "Oppose" :self.texteIngendof+="0\n" - else : self.texteIngendof+="1\n" - if self.dictMCVal["__PARAMETRES__TypedeFormule"]=="APHI" :self.texteIngendof+="1\n" - else : self.texteIngendof+="2\n" - - - -#---------------------------------------------------------------------------------------- - def traiteMateriaux(self) : -#---------------------------------------------------------------------------------------- - listeCond=[] - listeNoCond=[] - for k in self.dictMCVal.keys(): - if k.find ("______CONDUCTEUR") > -1 : - noms=k.split("_____") - if noms[0] not in listeCond : listeCond.append(noms[0]) - if k.find ("______NOCOND") > -1 : - noms=k.split("_____") - if noms[0] not in listeNoCond : listeNoCond.append(noms[0]) - - for c in listeCond: - self.textePhys +=" [CONDUCTOR\n" - self.textePhys +=" NAME "+c+"\n" - self.textePhys +=texteConductor - self.textePhys+=" VALUE COMPLEX " - self.textePhys+=str(self.dictMCVal[c+"______CONDUCTEUR__Conductivite"]) - self.textePhys+=texteConducto2 - self.textePhys+=" VALUE COMPLEX " - self.textePhys+=str(self.dictMCVal[c+"______CONDUCTEUR__PermeabiliteRelative"]) - self.textePhys+=" 0.0000000000000000E+00\n ]\n ]\n" - - for c in listeNoCond: - self.textePhys+=" [DIELECTRIC\n" - self.textePhys +=" NAME "+c+"\n" - self.textePhys += texteNoCond - self.textePhys+=" VALUE COMPLEX " - self.textePhys+=str(self.dictMCVal[c+"______NOCOND__PermeabiliteRelative"]) - self.textePhys+=" 0.0000000000000000E+00\n ]\n ]\n" - - for zs in self.listeZS: - self.textePhys+=debutTexteZs0+zs - self.textePhys+=debutTexteZs - self.textePhys+=str(self.dictMCVal[zs+"______ZS__Conductivite"]) - self.textePhys+=texteZs2 - self.textePhys+=str(self.dictMCVal[zs+"______ZS__PermeabiliteRelative"]) - self.textePhys+=finTexteZs - - self.textePhys+="]\n" - self.textePhys+=self.texteSourcePhys - -#---------------------------------------------------------------------------------------- -# Creation du fichier Param -#---------------------------------------------------------------------------------------- - def traiteParam(self): - self.texteParam +="[FREQUENCY\n SINGLE "+str(self.dictMCVal["__PARAMETRES__Frequence"])+"\n]\n" - self.texteParam +="[SOLVER\n NAME BICGCR\n" - self.texteParam +=" [ITERATIVE_PARAM\n" - self.texteParam +=" NITERMAX "+str(self.dictMCVal["__PARAMETRES__Nb_Max_Iterations"])+"\n" - self.texteParam +=" EPSILON "+ str(self.dictMCVal["__PARAMETRES__Erreur_Max"])+"\n ]\n]" - - -#---------------------------------------------------------------------------------------- -# analyse de chaque noeud de l'arbre -#---------------------------------------------------------------------------------------- - - def generMCSIMP(self,obj) : - """recuperation de l objet MCSIMP""" - s=PythonGenerator.generMCSIMP(self,obj) - if hasattr(obj.etape,'sdnom'): clef=obj.etape.sdnom+"____" - else: clef="" - for i in obj.get_genealogie() : - clef=clef+"__"+i - self.dictMCVal[clef]=obj.valeur - - return s - - def get_repExeCarmel(self) : - return self.dictMCVal["__PARAMETRES__RepCarmel"] - diff --git a/generator/generator_CARMELCS.py b/generator/generator_CARMELCS.py deleted file mode 100644 index a46c4a20..00000000 --- a/generator/generator_CARMELCS.py +++ /dev/null @@ -1,161 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. -""" - -import traceback -import types,string,re,os -from Extensions.i18n import tr -from generator_python import PythonGenerator -import Accas - - - - -#keys = ['Carmel3D_StudyDirectory','Syrthes_StudyDirectory'] - - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'CARMELCS', - # La factory pour creer une instance du plugin - 'factory' : CARMELCSGenerator, - } - - -class CARMELCSGenerator(PythonGenerator): - """ - Ce generateur parcourt un objet de type JDC et produit - un texte au format eficas et - un texte au format dictionnaire - - """ - # Les extensions de fichier permis? - extensions=('.comm',) - -#---------------------------------------------------------------------------------------- - def gener(self,obj,format='brut',config=None): - - self.initDico() - - # Cette instruction genere le contenu du fichier de commandes (persistance) - self.text=PythonGenerator.gener(self,obj,format) - self.racine=obj - return self.text - - def generxml(self,obj,format='brut',config=None): - - texte = self.gener(obj,format,config) -# print 'self.dictMCVal = ',self.dictMCVal - textePourRun = self.update_XMLYacsSchemaForRunning() - return textePourRun - -#---------------------------------------------------------------------------------------- -# initialisations -#---------------------------------------------------------------------------------------- - - def initDico(self) : - - self.texteDico = "" - self.dictMCVal={} - self.dicoCS={} - self.debutKey = '__PARAM_CS__' - -#---------------------------------------------------------------------------------------- -# ecriture -#---------------------------------------------------------------------------------------- - - def getdico(self) : - #print 'getdico : self.dictMCVal.keys() = ',self.dictMCVal.keys() - for k in self.dictMCVal.keys(): - if k.find (self.debutKey) > -1 : - a,kproperty=k.split(self.debutKey) - self.dicoCS[kproperty] = self.dictMCVal[k] - #print "self.dicoCS = ",self.dicoCS - return self.dicoCS - - def getXMLYacsSchemaFileTemplate(self) : - - for k in self.dictMCVal.keys(): - if k.find (self.debutKey) > -1 : - a,kproperty=k.split(self.debutKey) - if kproperty == 'XMLYacsFile' : - return self.dictMCVal[k] - - def getXMLYacsSchemaFileRun(self) : - xmlYacsSchemaFilePath = self.getXMLYacsSchemaFileTemplate() - filename = os.path.basename(xmlYacsSchemaFilePath) - dirname = os.path.dirname(xmlYacsSchemaFilePath) - prefix = '_run_' - runxmlfile = os.path.join(dirname,prefix+filename) - return xmlYacsSchemaFilePath,runxmlfile - - def update_XMLYacsSchemaForRunning(self) : - """ - Creation du fichier _run_XXX.xml, a partir des elements donnes par l'utilisateur dans l'interface : - Carmel3D_StudyDirectory : YYY (path du repertoire de l'etude CARMEL3D de couplage) - Syrthes_StudyDirectory : YYY/THERMIQUE (path du repertoire de l'etude SYRTHES de couplage) - XMLYacsFile : PATH du fichier template du schema yacs d'execution du couplage - """ - xmlYacsSchemaFilePath,runxmlfile = self.getXMLYacsSchemaFileRun() - f_xml = open( str(xmlYacsSchemaFilePath), 'r') - texte_template_xml = f_xml.read() - f_xml.close() - dicoCS = self.getdico() - print "dicoCS = ",dicoCS - # ajout dans dicoCS des elements pour SYRTHES qui sont deja sous cette forme la dans le fichier xml sinon ca pose pb - dicoCS['DEB']='%(DEB)s' - dicoCS['FIN']='%(FIN)s' - newTexteXml = texte_template_xml%dicoCS - f = open(runxmlfile,'w') - f.write(newTexteXml) - f.close() - return runxmlfile - - def writeDefault(self,fn) : - fileDico = fn[:fn.rfind(".")] + '.py' - f = open( str(fileDico), 'wb') - f.write( self.texteDico ) - f.close() - runxmlfile = self.update_XMLYacsSchemaForRunning() - -#---------------------------------------------------------------------------------------- -# analyse de chaque noeud de l'arbre -#---------------------------------------------------------------------------------------- - - def generMCSIMP(self,obj) : - """recuperation de l objet MCSIMP""" - s=PythonGenerator.generMCSIMP(self,obj) - self.texteDico+=obj.nom+ "=" + s[0:-1]+ "\n" -# print 'generMCSIMP self.texteDico = ',self.texteDico - if hasattr(obj.etape,'sdnom'): clef=obj.etape.sdnom+"____" - else: clef="" - for i in obj.get_genealogie() : - clef=clef+"__"+i - self.dictMCVal[clef]=obj.valeur - - return s - - diff --git a/generator/generator_GroupMA.py b/generator/generator_GroupMA.py index 50e30f34..f10704fe 100644 --- a/generator/generator_GroupMA.py +++ b/generator/generator_GroupMA.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_PSEN.py b/generator/generator_PSEN.py index 2761c6b3..e60d43e4 100755 --- a/generator/generator_PSEN.py +++ b/generator/generator_PSEN.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_ProcessOutputs.py b/generator/generator_ProcessOutputs.py index b5499983..2c7b0fae 100755 --- a/generator/generator_ProcessOutputs.py +++ b/generator/generator_ProcessOutputs.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 666d97b3..8545b42c 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -175,7 +175,8 @@ class TELEMACGenerator(PythonGenerator): #nomMajuscule=obj.nom.upper() #nom=nomMajuscule.replace('_',' ') #if nom in listeSupprime or s == "" : return s - if s == "" : return s + if s == "None," : s=None + if s == "" or s==None : return s sTelemac=s[0:-1] if not( type(obj.valeur) in (tuple,list) ): diff --git a/generator/generator_ZCracks.py b/generator/generator_ZCracks.py deleted file mode 100644 index 157894b5..00000000 --- a/generator/generator_ZCracks.py +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. -""" -from __future__ import absolute_import -from __future__ import print_function -try : - from builtins import str -except : pass - -import pickle -texte_debut="#include \n int main() \n{ \n init_var();\n" -texte_debut+=' format="med";\n' -import traceback -import types,re,os -from Extensions.i18n import tr -from .generator_python import PythonGenerator -#ListeConcatene=('ridge_names','topo_names','geom_names','elset_names','faset_names','liset_names','nset_names','center','normal','dir') -ListeConcatene=('ridge_names','topo_names','geom_names','elset_names','faset_names','liset_names','nset_names') -ListeConcatene2=('center','normal','dir') -ListeConcatene3=('ra','rb') -if_ellipse=False - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'ZCRACKS', - # La factory pour creer une instance du plugin - 'factory' : ZCrackGenerator, - } - - -class ZCrackGenerator(PythonGenerator): - """ - Ce generateur parcourt un objet de type JDC et produit - un texte au format eficas et - un texte au format dictionnaire - - """ - # Les extensions de fichier permis? - extensions=('.comm',) - -#---------------------------------------------------------------------------------------- - def gener(self,obj,format='brut',config=None): - - self.initDico() - - # Cette instruction genere le contenu du fichier de commandes (persistance) - self.text=PythonGenerator.gener(self,obj,format) - return self.text - - -#---------------------------------------------------------------------------------------- -# initialisations -#---------------------------------------------------------------------------------------- - - def initDico(self) : - self.textePourRun = texte_debut - - -#---------------------------------------------------------------------------------------- -# ecriture -#---------------------------------------------------------------------------------------- - - def writeDefault(self,fn) : - fileZcrack = fn[:fn.rfind(".")] + '.z7p' - f = open( str(fileZcrack), 'wb') - print((self.textePourRun)) - - self.ajoutRun() - self.textePourRunAvecDouble=self.textePourRun.replace("'",'"') - f.write( self.textePourRunAvecDouble) - f.close() - - def ajoutRun(self) : - self.textePourRun+=" write_mesh_crack();\n" - self.textePourRun+=" do_mesh_crack(0);\n" - self.textePourRun+=" write_refine_mesh();\n" - self.textePourRun+=" do_refine_mesh(0);\n" - self.textePourRun+=" write_cut_mesh();\n" - self.textePourRun+=" do_cut_mesh(0);\n" -# self.textePourRun+=" nice_cut("+str(self.maximum_aspect_ratio)+");\n" - self.textePourRun+=' export_mesh("'+self.cracked_name+'","med");\n' - self.textePourRun+="}" - -#---------------------------------------------------------------------------------------- -# analyse de chaque noeud de l'arbre -#---------------------------------------------------------------------------------------- - - def generMCSIMP(self,obj) : - """recuperation de l objet MCSIMP""" - #print dir(obj) - s=PythonGenerator.generMCSIMP(self,obj) - if obj.nom=="sane_name" : - self.textePourRun+=' import_mesh("'+obj.val+'", "med");\n' - if obj.nom in ListeConcatene : -# obj.val=obj.val+" " - stringListe="" - for val in obj.val: - stringListe+=val+"" -# pickle.dump( stringListe, open( "/home/H60874/test.pickle", "wb" ) ) -# self.textePourRun+=" "+obj.nom+ "='"+ stringListe[0:-1]+ "';\n" -# self.textePourRun+=" "+obj.nom+ "='"+ stringListe+ "';\n" - return s - if obj.nom in ListeConcatene3 : - if (obj.nom=="ra") : - self.textePourRun+=" "+"if_ellipse=1;\n" - self.textePourRun+=" "+obj.nom+ "="+str(obj.val)+";\n" - if_ellipse_ellipse=True - return s - - if obj.nom in ListeConcatene2 : - stringListe="" -# self.textePourRun+="GGGGGGG%"+obj.nom+"\n" -# if (len(val)>1) : - for val in obj.val: - stringListe+=str(val)+"," - self.textePourRun+=" "+obj.nom+ "=set_vector3("+ stringListe[0:-1]+ ");\n" -# else : -# self.textePourRun+=" "+obj.nom+ str(obj.val+ ";\n" -# stringListe+=str(val)+" " -# self.textePourRun+=" "+obj.nom+ "=set_vector3("+stringListe[0]+","+stringListe[1]+","+stringListe[2]+");\n" -# self.textePourRun+=" "+obj.nom+ "=set_vector3("+obj.val+","+");\n" - return s -# if obj.nom=="center" : -# self.textePourRun+=" set_vector3("+obj.val+'");\n" -# if obj.nom=="center" : -# self.textePourRun+=" set_vector3("+obj.val+'");\n" -# if obj.nom=="normal" : -# self.textePourRun+=" set_vector3("+obj.val+'");\n" -# if obj.nom=="dir" : -# self.textePourRun+=" set_vector3("+obj.val+'");\n" - if obj.nom=="elset_radius" : - self.textePourRun+=" if_must_define_elset=1;\n" - - - if obj.nom=="cracked_name" : self.cracked_name=obj.val - if obj.nom=="maximum_aspect_ratio" : self.maximum_aspect_ratio=obj.val - if obj.nom=="repertoire" : - print ("PNPNPN a traiter") - return s - self.textePourRun+=" "+obj.nom+ "=" + s[0:-1]+ ";\n" - return s - - -# si repertoire on change tous les noms de fichier -# exple repertoire='/home' __> fichier='/home/crack.med diff --git a/generator/generator_aplat.py b/generator/generator_aplat.py index 452b0d33..333dd23a 100644 --- a/generator/generator_aplat.py +++ b/generator/generator_aplat.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_dico.py b/generator/generator_dico.py index 1b08fdf9..a21b8db4 100644 --- a/generator/generator_dico.py +++ b/generator/generator_dico.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_dicoImbrique.py b/generator/generator_dicoImbrique.py index f8ee6bb1..0d211794 100644 --- a/generator/generator_dicoImbrique.py +++ b/generator/generator_dicoImbrique.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_file_from_template.py b/generator/generator_file_from_template.py deleted file mode 100644 index d60ad8d5..00000000 --- a/generator/generator_file_from_template.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- 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 -# -from __future__ import absolute_import -try : - from builtins import str -except : pass -import os - -from Extensions.i18n import tr -from Extensions.eficas_exception import EficasException -from .generator_python import PythonGenerator -import six - -def entryPoint(): - """ - Return a dictionary containing the description needed to load the plugin - """ - return {'name' : 'file_from_template', - 'factory' : FileFromTemplateGenerator} - - -class FileFromTemplateGenerator(PythonGenerator): - """ - This generator creates an output file from a template (file with holes) in - addition to Eficas .comm file. The parts to replace in the template must be - in the form %KEYWORD%, where KEYWORD may be either the name of the Eficas - element (short form, for instance MY_MCSIMP) or the "path" to the Eficas - element (long form, for instance MYPROC.MYBLOC.MY_MCSIMP). - - To use this generator, the configuration of the code must implement two - methods: get_extension() that must return the extension of the output file - and get_template_file() that must return the path of the template file. Be - sure also that your catalog is coherent with your template file. - """ - - def gener(self, obj, format = 'brut', config = None): - self.config = config - self.kw_dict = {} - self.text = PythonGenerator.gener(self, obj, format) - return self.text - - def generate_output_from_template(self) : - """ - Generate the output text from the template file and the keywords - """ - templateFileName = self.config.get_template_file() - if not os.path.isfile(templateFileName): - raise EficasException(tr("Fichier patron %s n'existe pas.", - str( templateFileName))) - f = open(templateFileName, "r") - template = f.read() - f.close() - self.output_text = self.replace_keywords(template) - - def generMCSIMP(self, obj) : - """ - Save object value in the keyword dict for further use, then generate - the text corresponding to the MCSIMP element. - """ - short_keyword = obj.nom.strip() - long_keyword = "" - for i in obj.get_genealogie()[:-1]: - long_keyword += i + "." - long_keyword += short_keyword - self.kw_dict[short_keyword] = obj.valeur - self.kw_dict[long_keyword] = obj.valeur - return PythonGenerator.generMCSIMP(self, obj) - - def replace_keywords(self, template_string): - result = template_string - for item in six.iteritems(self.kw_dict): - replace_str = "%" + item[0] + "%" - result = result.replace(replace_str, str(item[1])) - return result - - def writeDefault(self, basefilename): - self.generate_output_from_template() - output_filename = os.path.splitext(basefilename)[0] + \ - self.config.get_extension() - f = open(output_filename, 'w') - f.write(self.output_text) - f.close() diff --git a/generator/generator_ini.py b/generator/generator_ini.py deleted file mode 100644 index 06c5f9f8..00000000 --- a/generator/generator_ini.py +++ /dev/null @@ -1,146 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin generateur de fichier - au format ini pour EFICAS. -""" -from __future__ import absolute_import -try : - from builtins import str - from builtins import object -except : pass - -import traceback -import types -from Extensions.i18n import tr -from Extensions.eficas_exception import EficasException - - -from Noyau import N_CR -from Accas import MCSIMP,MCFACT,MCList - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'ini', - # La factory pour creer une instance du plugin - 'factory' : IniGenerator, - } - - -class IniGenerator(object): - """ - Ce generateur parcourt un objet de type MCFACT et produit - un fichier au format ini - L'acquisition et le parcours sont realises par le methode - generator.gener(objet_mcfact) - L'ecriture du fichier au format ini par appel de la methode - generator.writefile(nom_fichier) - - Ses caracteristiques principales sont exposees dans des attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier preconisees - - """ - # Les extensions de fichier preconisees - extensions=('.ini','.conf') - - def __init__(self,cr=None): - # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR generateur format ini', - fin='fin CR format ini') - # Le texte au format ini est stocke dans l'attribut text - self.text='' - - def writefile(self,filename): - fp=open(filename,'w') - fp.write(self.text) - fp.close() - - def gener(self,obj,config=None): - """ - Tous les mots-cles simples du niveau haut sont mis dans la section DEFAUT - Tous les mots-cles facteurs sont convertis en sections - Un mot-cle facteur ne peut contenir que des mots-cles simples. Sinon => erreur - """ - liste_mcfact=[] - sect_defaut='' - if isinstance(obj,MCList): - if len(obj.data) > 1: - raise EficasException(tr("Pas supporte")) - else: - obj=obj.data[0] - - for mocle in obj.mc_liste: - if isinstance(mocle,MCList): - if len(mocle.data) > 1: - raise EficasException(tr("Pas supporte")) - else: - liste_mcfact.append(self.generMCFACT(mocle.data[0])) - elif isinstance(mocle,MCFACT): - liste_mcfact.append(self.generMCFACT(mocle)) - elif isinstance(mocle,MCSIMP): - sect_defaut=sect_defaut+self.generMCSIMP(mocle) - else: - self.cr.fatal(tr("Entite inconnue ou interdite :%s",repr(mocle))) - - self.text='' - if sect_defaut != '': - self.text="[DEFAULT]\n"+sect_defaut - self.text=self.text + ''.join(liste_mcfact,'\n') - return self.text - - def generMCFACT(self,obj): - """ - Cette methode convertit un mot-cle facteur ne contenant que des mots-cles - simples en une chaine de caracteres - """ - sect_text='[%s]\n' % obj.nom - for mocle in obj.mc_liste: - if isinstance(mocle,MCSIMP): - sect_text=sect_text+self.generMCSIMP(mocle) - else: - self.cr.fatal(tr("Entite inconnue ou interdite :%s. Elle est ignoree",repr(mocle))) - return sect_text - - def generMCSIMP(self,obj): - """ - Cette methode convertit un mot-cle simple en une chaine de caracteres - au format ini - """ - s='' - if type(obj.valeur) == tuple : - self.cr.fatal(tr("Les tuples ne sont pas supportes pour le format ini :%s ", obj.nom)) - s="%s = %s\n" % (obj.nom,"ERREUR") - else : - try: - s="%s = %s\n" % (obj.nom,obj.valeur) - except Exception as e : - self.cr.fatal(tr("Type de valeur non supportee par le format ini :%(nom)s\n%(exception)s", \ - {'nom': obj.nom, 'exception': str(e)})) - return s - diff --git a/generator/generator_map.py b/generator/generator_map.py index 9ba7fbd7..074a2abe 100644 --- a/generator/generator_map.py +++ b/generator/generator_map.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_modification.py b/generator/generator_modification.py index 0c451605..d309d52a 100644 --- a/generator/generator_modification.py +++ b/generator/generator_modification.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_pyth.py b/generator/generator_pyth.py deleted file mode 100644 index b122fa92..00000000 --- a/generator/generator_pyth.py +++ /dev/null @@ -1,154 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin generateur de fichier au format pyth pour EFICAS. - - -""" -try : - from builtins import str - from builtins import object -except : pass - -import traceback -import types - -from Noyau import N_CR -from Accas import MCSIMP,MCFACT,MCList -from Extensions.i18n import tr -from Extensions.eficas_exception import EficasException - - -def entryPoint(): - """ - Retourne les informations necessaires pour le chargeur de plugins - - Ces informations sont retournees dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'pyth', - # La factory pour creer une instance du plugin - 'factory' : PythGenerator, - } - - -class PythGenerator(object): - """ - Ce generateur parcourt un objet de type MCFACT et produit - un fichier au format pyth - - L'acquisition et le parcours sont realises par la methode - generator.gener(objet_mcfact) - - L'ecriture du fichier au format ini par appel de la methode - generator.writefile(nom_fichier) - - Ses caracteristiques principales sont exposees dans des attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier preconisees - - """ - # Les extensions de fichier preconisees - extensions=('.py','.comm') - - def __init__(self,cr=None): - # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR generateur format ini', - fin='fin CR format ini') - # Le texte au format pyth est stocke dans l'attribut text - self.text='' - - def writefile(self,filename): - fp=open(filename,'w') - fp.write(self.text) - fp.close() - - def gener(self,obj,format='standard',config=None): - """ - Tous les mots-cles simples du niveau haut sont transformes en variables - - Tous les mots-cles facteurs sont convertis en dictionnaires - - Les mots-cles multiples ne sont pas traites - """ - s='' - if isinstance(obj,MCList): - if len(obj.data) > 1: - raise EficasException(tr("Pas supporte")) - else: - obj=obj.data[0] - - for mocle in obj.mc_liste: - if isinstance(mocle,MCList): - if len(mocle.data) > 1: - raise EficasException(tr("Pas supporte")) - else: - valeur=self.generMCFACT(mocle.data[0]) - s=s+"%s = %s\n" % (mocle.nom,valeur) - elif isinstance(mocle,MCFACT): - valeur=self.generMCFACT(mocle) - s=s+"%s = %s\n" % (mocle.nom,valeur) - elif isinstance(v,MCSIMP): - valeur = self.generMCSIMP(mocle) - s=s+"%s = %s\n" % (mocle.nom,valeur) - else: - self.cr.fatal("Entite inconnue ou interdite : "+repr(mocle)) - - self.text=s - return self.text - - def generMCFACT(self,obj): - """ - Cette methode convertit un mot-cle facteur - en une chaine de caracteres representative d'un dictionnaire - """ - s = '{' - for mocle in obj.mc_liste: - if isinstance(mocle,MCSIMP): - valeur = self.generMCSIMP(mocle) - s=s+"'%s' : %s,\n" % (mocle.nom,valeur) - elif isinstance(mocle,MCFACT): - valeur=self.generMCFACT(mocle) - s=s+"'%s' : %s,\n" % (mocle.nom,valeur) - else: - self.cr.fatal(tr("Entite inconnue ou interdite : %s. Elle est ignoree", repr(mocle))) - - s=s+'}' - return s - - def generMCSIMP(self,obj): - """ - Cette methode convertit un mot-cle simple en une chaine de caracteres - au format pyth - """ - try: - s="%s" % obj.valeur - except Exception as e : - self.cr.fatal(tr("Type de valeur non supporte par le format pyth : n %(exception)s", \ - {'nom': obj.nom, 'exception': str(e)})) - - - s="ERREUR" - return s - diff --git a/generator/generator_python.py b/generator/generator_python.py index bafc218a..7d61b50d 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/generator_python6.py b/generator/generator_python6.py deleted file mode 100644 index 473409a3..00000000 --- a/generator/generator_python6.py +++ /dev/null @@ -1,107 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin generateur de fichier au format - python pour EFICAS. - -""" -import traceback -import types,string,re - -from Noyau import N_CR -from Noyau.N_utils import repr_float -from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE -from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL -from Accas import GEOM,ASSD,MCNUPLET -from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM -from Formatage import Formatage - -import generator_python - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'python6', - # La factory pour créer une instance du plugin - 'factory' : PythonGenerator, - } - - -class PythonGenerator(generator_python.PythonGenerator): - """ - Ce generateur parcourt un objet de type JDC et produit - un fichier au format python6 - - L'acquisition et le parcours sont réalisés par la méthode - generator.gener(objet_jdc,format) - - L'écriture du fichier au format python6 par appel de la méthode - generator.writefile(nom_fichier) - - Ses caractéristiques principales sont exposées dans des attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier préconisées - - """ - # Les extensions de fichier préconisées - extensions=('.comm',) - - def generFORM_ETAPE(self,obj): - """ - Méthode particulière pour les objets de type FORMULE - """ - l=[] - nom = obj.get_nom() - if nom == '' : nom = 'sansnom' - l.append(nom + ' = FORMULE(') - for v in obj.mc_liste: - text=self.generator(v) - l.append(v.nom+'='+text) - l.append(');') - return l - - def gen_formule(self,obj): - """ - Méthode particuliere aux objets de type FORMULE - """ - try: - if obj.sd == None: - sdname='' - else: - sdname= self.generator(obj.sd) - except: - sdname='sansnom' - l=[] - label=sdname + ' = FORMULE(' - l.append(label) - for v in obj.mc_liste: - s='' - s= v.nom+':'+sdname+'('+v.valeur+')' - l.append(s) - if len(l) == 1: - l[0]=label+');' - else : - l.append(');') - return l diff --git a/generator/generator_vers3DSalome.py b/generator/generator_vers3DSalome.py index 569e4faf..729c6799 100644 --- a/generator/generator_vers3DSalome.py +++ b/generator/generator_vers3DSalome.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2007-2017 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 diff --git a/generator/oldCodes/generator_CARMEL3D.py b/generator/oldCodes/generator_CARMEL3D.py new file mode 100644 index 00000000..66dd503d --- /dev/null +++ b/generator/oldCodes/generator_CARMEL3D.py @@ -0,0 +1,844 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. +""" + +import traceback +import types,string,re,os +from Extensions.i18n import tr +from generator_python import PythonGenerator + +# Groupes de mailles dont les types sont definis par des prefixes dans leur nom +usePrefix = False # les noms ont des prefixes (True) ou non (False) +# liste des prefixes des groupes de mailles, sans le caractere _ separant le prefixe du reste du nom +# Ce prefixe (et caractere _) doivent etre supprimes dans le fichier .phys +listePrefixesGroupeMaille = ("DIEL","NOCOND","COND","CURRENT","EPORT","HPORT","TOPO","PB_MOBILE","NILMAT", + "VCUT","VCUTN","EWALL","HWALL","GAMMAJ","PERIODIC","APERIODIC", + "HPROBE","EPROBE","BFLUX","BFLUXN","JFLUX","JFLUXN", + "PORT_OMEGA","POST_PHI","PB_GRID", + "SCUTE","SCUTN","ZS","ZJ","ZT") +# liste des prefixes des groupes de mailles, sans le separateur, par type de bloc du fichier PHYS sous la forme d'un dictionnaire +dictPrefixesGroupeMaille = {'DIELECTRIC':('DIEL','NOCOND'), + 'CONDUCTOR':('COND',), + 'STRANDED_INDUCTOR':('CURRENT', ), + 'EPORT':('EPORT', ), + 'HPORT':('HPORT', ), + 'ZSURFACIC':('ZS', ), + 'ZINSULATOR':('ZJ', ), + 'NILMAT':('NILMAT', )} +# separateur entre le prefixe et le reste du nom du groupe de maille +sepNomGroupeMaille = '_' + +# types de problemes +HARMONIC = 'HARMONIC' # probleme frequentiel +TIME_DOMAIN = 'TIME_DOMAIN' # probleme temporel + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'CARMEL3D', + # La factory pour creer une instance du plugin + 'factory' : CARMEL3DGenerator, + } + + +class CARMEL3DGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format attendu par le code Code_Carmel3D (fichier '.PHYS') + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + +#---------------------------------------------------------------------------------------- + def gener(self,obj,format='brut',config=None): + + self.initDico() + + # Cette instruction genere le contenu du fichier de commandes (persistance) + self.text=PythonGenerator.gener(self,obj,format) + + if self.debug: + print "self.text = %s", self.text + + # Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D + # si le jdc est valide (sinon cela n a pas de sens) + if obj.isvalid() : + # constitution du bloc VERSION du fichier PHYS (existe toujours) + try : + self.generBLOC_VERSION(obj) + except ValueError, err: + raise ValueError(str(err)) + + # constitution du bloc MATERIALS du fichier PHYS (existe toujours) + self.generBLOC_MATERIALS() + + # constitution du bloc SOURCES du fichier PHYS (existe toujours) + self.generBLOC_SOURCES() + +# print "texte carmel3d :\n",self.texteCarmel3D +# print "dictMaterDielectric : ",self.dictMaterDielectric + if self.debug: + print "dictMaterConductor : %s", repr(self.dictMaterConductor) + + return self.text + + +#---------------------------------------------------------------------------------------- +# initialisations +#---------------------------------------------------------------------------------------- + + def initDico(self) : + + self.texteCarmel3D="" + self.debug = True # affichage de messages pour deboguage (.true.) ou non + self.dicoEtapeCourant=None + self.dicoMCFACTCourant=None + self.dicoCourant=None + self.dictGroupesMaillage = {'ordreMateriauxJdC':[], 'ordreSourcesJdC':[]} # association des noms de groupes de maillage avec les noms de materiaux ou de sources, en sauvegardant l'ordre du JdC en separant les groupes associes a des materiaux de ceux associes a des sources + self.dictMaterConductor={} + self.dictMaterDielectric={} + self.dictMaterZsurfacic={} + self.dictMaterEmIso={} + self.dictMaterEmAnIso={} + self.dictMaterNilmat={} + self.dictMaterZinsulator={} + self.dictSourceStInd={} + self.dictSourceEport={} + self.dictSourceHport={} + # on force le probleme a etre frequentiel, seul possible en l'etat des choses + self.problem = HARMONIC + + +#---------------------------------------------------------------------------------------- +# ecriture +#---------------------------------------------------------------------------------------- + + def writeDefault(self,fn) : + """Ecrit le fichier de parametres (PHYS) pour le code Carmel3D""" + if self.debug: + print "ecriture du fichier de parametres (PHYS)" + filePHYS = fn[:fn.rfind(".")] + '.phys' + f = open( str(filePHYS), 'wb') + f.write( self.texteCarmel3D) + f.close() + +#---------------------------------------------------------------------------------------- +# analyse de chaque noeud de l'arbre +#---------------------------------------------------------------------------------------- + + def generMCSIMP(self,obj) : + """recuperation de l objet MCSIMP""" + if self.debug: + print "MCSIMP %(v_1)s %(v_2)s", {'v_1': obj.nom, "v_2": obj.valeur} + s=PythonGenerator.generMCSIMP(self,obj) + self.dicoCourant[obj.nom]=obj.valeurFormatee + return s + + +#---------------------------------------------------------------------------------------- + def generMCFACT(self,obj) : + """recuperation de l objet MCFACT""" + dico={} + self.dicoMCFACTCourant=dico + self.dicoCourant=self.dicoMCFACTCourant + s=PythonGenerator.generMCFACT(self,obj) + self.dicoEtapeCourant[obj.nom]=self.dicoMCFACTCourant + self.dicoMCFACTCourant=None + self.dicoCourant=self.dicoEtapeCourant + return s + +#---------------------------------------------------------------------------------------- + def generPROC_ETAPE(self,obj): + """analyse des PROC du catalogue ( VERSION )""" + dico={} + self.dicoEtapeCourant=dico + self.dicoCourant=self.dicoEtapeCourant + s=PythonGenerator.generPROC_ETAPE(self,obj) + obj.valeur=self.dicoEtapeCourant + if self.debug: + print "PROC_ETAPE %(v_1)s %(v_2)s", \ + {'v_1': unicode(obj.nom), "v_2": unicode(obj.valeur)} + s=PythonGenerator.generPROC_ETAPE(self,obj) + return s + +#---------------------------------------------------------------------------------------- + def generETAPE(self,obj): + """analyse des OPER du catalogue""" + dico={} + self.dicoEtapeCourant=dico + self.dicoCourant=self.dicoEtapeCourant + s=PythonGenerator.generETAPE(self,obj) + obj.valeur=self.dicoEtapeCourant + if self.debug: + print "ETAPE : obj.nom = %(v_1)s , obj.valeur= %(v_2)s", \ + {'v_1': obj.nom, 'v_2': obj.valeur} + if obj.nom=="MESHGROUP" : self.generMESHGROUP(obj) + if obj.nom=="MATERIAL" : self.generMATERIAL(obj) + if obj.nom=="SOURCE" : self.generSOURCE(obj) + s=PythonGenerator.generETAPE(self,obj) + return s + +#---------------------------------------------------------------------------------------- + def generMACRO_ETAPE(self,obj): + dico={} + self.dicoEtapeCourant=dico + self.dicoCourant=self.dicoEtapeCourant + import generator + monGenerateur=generator.plugins["CARMEL3D"]() + jdc_aux_texte=monGenerateur.gener(obj.jdc_aux) + if self.debug: + print "jdc_aux_texte : %s", jdc_aux_texte + + for cle in monGenerateur.dictMaterConductor: + self.dictMaterConductor[cle] = monGenerateur.dictMaterConductor[cle] + for cle in monGenerateur.dictMaterDielectric: + self.dictMaterDielectric[cle] = monGenerateur.dictMaterDielectric[cle] + for cle in monGenerateur.dictMaterZsurfacic: + self.dictMaterZsurfacic[cle] = monGenerateur.dictMaterZsurfacic[cle] + for cle in monGenerateur.dictMaterEmIso: + self.dictMaterEmIso[cle] = monGenerateur.dictMaterEmIso[cle] + for cle in monGenerateur.dictMaterEmAnIso: + self.dictMaterEmAnIso[cle] = monGenerateur.dictMaterEmAnIso[cle] + for cle in monGenerateur.dictMaterNilmat: + self.dictMaterNilMat[cle] = monGenerateur.dictMaterNilMat[cle] + for cle in monGenerateur.dictMaterZinsulator: + self.dictMaterZinsulator[cle] = monGenerateur.dictMaterZinsulator[cle] + + print "________FIN MACRO______________________________________" + s=PythonGenerator.generMACRO_ETAPE(self,obj) + return s + +#---------------------------------------------------------------------------------------- +#---------------------------------------------------------------------------------------- + def generMESHGROUP(self,obj): + """preparation de la ligne NAME referencant le groupe de mailles + associe le groupe de mailles au materiau ou a la source utilisateur + on sauvegarde aussi les noms des groupes de maillage + """ + + try: + if usePrefix: + nomGroupeMaillage = self.nomReelGroupeMaillage(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves + else: + nomGroupeMaillage = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept + # test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement. + # test sur un seul attribut, non pertinent car il peut y en avoir plusieurs. + #assert len(obj.valeur.keys())==1,"Un et un seul nom de materiau ou source doit etre associe a ce groupe du maillage :"+nomGroupeMaillage + # + # on utilise le fait que obj.valeur est un dictionnaire + if self.debug: + print "obj.valeur.keys()= %s", obj.valeur.keys() + if 'MATERIAL' in obj.valeur.keys() and 'SOURCE' in obj.valeur.keys(): # test d'erreur lors de presence de materiau et source a la fois + raise ValueError,tr(" ce groupe de maillage %s est associe a au moins un materiau et au moins une source.", nomGroupeMaillage) + # association a un materiau + if 'MATERIAL' in obj.valeur.keys(): + self.dictGroupesMaillage[nomGroupeMaillage] = obj.valeur['MATERIAL'].nom # sauvegarde de l'association entre ce groupe de maillage et un materiau ou source, par son nom, i.e. nom du concept du materiau ou de la source + self.dictGroupesMaillage['ordreMateriauxJdC'].append(nomGroupeMaillage) # sauvegarde du nom du groupe de maillage associe a un materiau, dans l'ordre du JdC + # association a une source + elif 'SOURCE' in obj.valeur.keys(): + self.dictGroupesMaillage[nomGroupeMaillage] = obj.valeur['SOURCE'].nom # sauvegarde de l'association entre ce groupe de maillage et un materiau ou source, par son nom, i.e. nom du concept du materiau ou de la source + self.dictGroupesMaillage['ordreSourcesJdC'].append(nomGroupeMaillage) # sauvegarde du nom du groupe de maillage associe a une source, dans l'ordre du JdC + # erreur ni materiau ni source associee + else: + raise ValueError, tr("ce groupe de maillage %s n'est associe a aucun materiau ou source.", nomGroupeMaillage) + if self.debug: + print "self.dictGroupesMaillage= %s", repr(self.dictGroupesMaillage) + except: + pass + + + def generMATERIAL(self,obj): + """preparation du bloc correspondant a un materiau du fichier PHYS""" + texte="" + if self.debug: + print "generation material obj valeur = %s", obj.valeur + try : + nature = obj.valeur['TYPE'] # la nature est le parametre TYPE du MATERIAL + if nature=="CONDUCTOR" : self.generMATERIAL_CONDUCTOR(obj) + if nature=="DIELECTRIC" : self.generMATERIAL_DIELECTRIC(obj) + if nature=="ZSURFACIC" : self.generMATERIAL_ZSURFACIC(obj) + if nature=="EM_ISOTROPIC" : self.generMATERIAL_EMISO(obj) + if nature=="EM_ANISOTROPIC" : self.generMATERIAL_EMANISO(obj) + if nature=="NILMAT" : self.generMATERIAL_NILMAT(obj) + if nature=="ZINSULATOR" : self.generMATERIAL_ZINSULATOR(obj) + except: + pass + + def generMATERIAL_CONDUCTOR(self,obj): + """preparation du sous bloc CONDUCTOR""" + texte="" + if self.debug: + print "_____________cond_____________" + # verification des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY) + if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur: + print "ERREUR! Le bloc CONDUCTOR doit contenir PERMEABILITY et CONDUCTIVITY." + else: + # parcours des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY) + for keyN1 in ('PERMEABILITY','CONDUCTIVITY') : + # debut du sous bloc de propriete du DIELECTRIC + texte+=" ["+keyN1+"\n" + texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" + texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" + # Ecriture des valeurs seulement pour un materiau homogene et isotrope, + # car sinon ces valeurs sont definies dans des fichiers annexes + homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' + isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' + if homogeneous and isotropic: + # loi (lineaire ou non) + texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" + # valeur de la loi lineaire + texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" + # loi non lineaire de nature spline, Marrocco ou Marrocco et Saturation + # seuls les reels sont pris en compte + if obj.valeur[keyN1]['LAW']=='NONLINEAR' : + texte+=" [NONLINEAR \n" + texte+=" ISOTROPY TRUE\n" + texte+=" NATURE "+str(obj.valeur[keyN1]['NATURE'])+"\n" + # ajout des autres parametres autres que ISOTROPY, NATURE, VALUE, LAW, HOMOGENEOUS, ISOTROPIC + for keyN2 in obj.valeur[keyN1] : + if keyN2 not in ('ISOTROPY','NATURE','VALUE','LAW','HOMOGENEOUS','ISOTROPIC') : + texte+=" "+keyN2+" "+str(obj.valeur[keyN1][keyN2])+"\n" + # fin du sous-bloc NONLINEAR + texte+=" ]"+"\n" + # fin du sous bloc de propriete + texte+=" ]"+"\n" + if self.debug: + print "texte = %s", texte + self.dictMaterConductor[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc + + def generMATERIAL_DIELECTRIC(self,obj): + """preparation du sous bloc DIELECTRIC""" + texte="" + if self.debug: + print "______________nocond_____________" + # verification des proprietes du sous bloc DIELECTRIC (PERMEABILITY, PERMITTIVITY) + if 'PERMEABILITY' not in obj.valeur or 'PERMITTIVITY' not in obj.valeur: + print "ERREUR! Le bloc DIELECTRIC doit contenir PERMEABILITY et PERMITTIVITY." + else: + # parcours des proprietes du sous bloc DIELECTRIC (PERMEABILITY, PERMITTIVITY) + for keyN1 in ('PERMEABILITY','PERMITTIVITY') : + # debut du sous bloc de propriete du DIELECTRIC + texte+=" ["+keyN1+"\n" + texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" + texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" + # Ecriture des valeurs seulement pour un materiau homogene et isotrope, + # car sinon ces valeurs sont definies dans des fichiers annexes + homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' + isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' + if homogeneous and isotropic: + # loi (lineaire ou non) + texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" + # valeur de la loi lineaire + texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" + # loi non lineaire de nature spline, Marrocco ou Marrocco et Saturation + # seuls les reels sont pris en compte + if obj.valeur[keyN1]['LAW']=='NONLINEAR' : + texte+=" [NONLINEAR \n" + texte+=" ISOTROPY TRUE\n" + texte+=" NATURE "+str(obj.valeur[keyN1]['NATURE'])+"\n" + # ajout des autres parametres autres que ISOTROPY, NATURE, VALUE, LAW, HOMOGENEOUS, ISOTROPIC + for keyN2 in obj.valeur[keyN1] : + if keyN2 not in ('ISOTROPY','NATURE','VALUE','LAW','HOMOGENEOUS','ISOTROPIC') : + texte+=" "+keyN2+" "+str(obj.valeur[keyN1][keyN2])+"\n" + # fin du sous-bloc NONLINEAR + texte+=" ]"+"\n" + # fin du sous bloc de propriete + texte+=" ]"+"\n" + if self.debug: + print "texte = %s", texte + self.dictMaterDielectric[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc + + def generMATERIAL_ZSURFACIC(self,obj): + """preparation du sous bloc ZSURFACIC""" + texte="" + if self.debug: + print "______________zsurf_____________" + # verification des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY) + if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur: + print "ERREUR! Le bloc ZSURFACIC doit contenir PERMEABILITY et CONDUCTIVITY." + else: + # parcours des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY) + for keyN1 in obj.valeur : + if keyN1=='TYPE': continue + # print "type loi = ", obj.valeur[keyN1]['LAW'] + # debut du sous bloc de propriete du DIELECTRIC + texte+=" ["+keyN1+"\n" + texte+=" HOMOGENEOUS "+str(obj.valeur[keyN1]["HOMOGENEOUS"])+"\n" + texte+=" ISOTROPIC "+str(obj.valeur[keyN1]["ISOTROPIC"])+"\n" + # Ecriture des valeurs seulement pour un materiau homogene et isotrope, + # car sinon ces valeurs sont definies dans des fichiers annexes + homogeneous = str(obj.valeur[keyN1]["HOMOGENEOUS"]) == 'TRUE' + isotropic = str(obj.valeur[keyN1]["ISOTROPIC"]) == 'TRUE' + if homogeneous and isotropic: + # loi (lineaire ou non) + texte+=" LAW "+str(obj.valeur[keyN1]["LAW"])+"\n" + # valeur de la loi lineaire + texte+=" VALUE "+self.formateCOMPLEX(obj.valeur[keyN1]["VALUE"])+"\n" + # fin du sous bloc de propriete + texte+=" ]"+"\n" + if self.debug: + print "texte = %s", texte + self.dictMaterZsurfacic[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc + + def generMATERIAL_EMISO(self,obj): + """preparation du sous bloc EM_ISOTROPIC_FILES. + Les fichiers sont indiques par le chemin absolu, i.e. le nom complet du JdC, + ce qui permet de deplacer les dossiers contenant le modele complet puisque le JdC permet les chemins relatifs. + """ + texte =" CONDUCTIVITY MED "+str(obj.valeur["CONDUCTIVITY_File"])+"\n" + texte+=" PERMEABILITY MED "+str(obj.valeur["PERMEABILITY_File"])+"\n" + # Possibilite de forcer le chemin relatif (nom de fichier seulement) plutot que le chemin absolu par defaut + #from os.path import basename + #texte =" CONDUCTIVITY MED "+basename(str(obj.valeur["CONDUCTIVITY_File"]))+"\n" + #texte+=" PERMEABILITY MED "+basename(str(obj.valeur["PERMEABILITY_File"]))+"\n" + # print "obj get sdname= ", obj.get_sdname() + # if obj.get_sdname() in self.dictMaterEmIso.keys() : + # self.dictMaterEmIso[obj.get_sdname()].append(texte) + # else : + self.dictMaterEmIso[obj.get_sdname()]=texte + + def generMATERIAL_EMANISO(self,obj): + """preparation du sous bloc EM_ANISOTROPIC_FILES. + Les fichiers sont indiques par le chemin absolu, i.e. le nom complet du JdC, + ce qui permet de deplacer les dossiers contenant le modele complet puisque le JdC permet les chemins relatifs. + """ + texte =" CONDUCTIVITY MATER "+str(obj.valeur["CONDUCTIVITY_File"])+"\n" + texte+=" PERMEABILITY MATER "+str(obj.valeur["PERMEABILITY_File"])+"\n" + # print "obj get sdname= ", obj.get_sdname() + # if obj.get_sdname() in self.dictMaterEmAnIso.keys() : + # self.dictMaterEmAnIso[obj.get_sdname()].append(texte) + # else : + self.dictMaterEmAnIso[obj.get_sdname()]=texte + + def generMATERIAL_NILMAT(self,obj): + """preparation du sous bloc NILMAT""" + texte="" + self.dictMaterNilmat[obj.get_sdname()]=texte + + def generMATERIAL_ZINSULATOR(self,obj): + """"preparation du sous bloc ZINSULATOR""" + texte="" + self.dictMaterZinsulator[obj.get_sdname()]=texte + +#------------------------------------------------------------------- + + def generSOURCE(self,obj): + """preparation du bloc correspondant a une source du fichier PHYS""" + if self.debug: + print "generation source obj valeur = %s", obj.valeur + texte="" + try : + # test de la presence des types de sources reconnus + # commes ces sources sont des mot-cles facteurs, i.e. une cle de dictionnaire, + # la source ne peut contenir au plus qu'un type de source. + if "STRANDED_INDUCTOR" in obj.valeur: + self.generSOURCE_STRANDED_INDUCTOR(obj) + elif "HPORT" in obj.valeur: + self.generSOURCE_HPORT(obj) + elif "EPORT" in obj.valeur: + self.generSOURCE_EPORT(obj) + else: + print "ERREUR! Une source du type STRANDED_INDUCTOR, HPORT ou EPORT est attendue." + except: + pass + + def generSOURCE_STRANDED_INDUCTOR(self,obj): + """preparation du sous bloc STRANDED_INDUCTOR""" + texte="" + sdict = obj.valeur['STRANDED_INDUCTOR'] # dictionnaire contenant les parametres de la source, outre la forme de la source + try : + texte+=" NTURNS %s\n" % str(sdict['NTURNS']) + # test de la presence d'une forme de source reconnue + # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, + # la source ne peut contenir au plus qu'un type de source. + if "WAVEFORM_CONSTANT" in obj.valeur: + wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" CURJ POLAR %s 0\n" % str(wdict['AMPLITUDE']) + print tr("ATTENTION! Une source constante \ + n'est possible qu'a frequence nulle \ + en regime frequentiel") + elif "WAVEFORM_SINUS" in obj.valeur: + wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" CURJ POLAR %(ampli)s %(phase)s\n" \ + % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} + else: + print tr("ERREUR! Une forme de la source du \ + type WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") + self.dictSourceStInd[obj.get_sdname()]=texte + if self.debug: + print texte + except Exception: + pass + + def generSOURCE_HPORT(self,obj): + """preparation du sous bloc HPORT""" + texte="" + sdict = obj.valeur['HPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source + try : + texte+=" TYPE %s\n" % str(sdict['TYPE']) + # test de la presence d'une forme de source reconnue + # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, + # la source ne peut contenir au plus qu'un type de source. + if "WAVEFORM_CONSTANT" in obj.valeur: + wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" AMP POLAR %s 0\n" % str(wdict['AMPLITUDE']) + print tr("ATTENTION! Une source constante n'est \ + possible qu'a frequence nulle en regime frequentiel") + elif "WAVEFORM_SINUS" in obj.valeur: + wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" AMP POLAR %(ampli)s %(phase)s\n" \ + % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} + else: + print tr("ERREUR! Une forme de la source du type \ + WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") + self.dictSourceHport[obj.get_sdname()]=texte + if self.debug: + print texte + except: + pass + + def generSOURCE_EPORT(self,obj): + """preparation du sous bloc EPORT""" + texte="" + sdict = obj.valeur['EPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source + try : + texte+=" TYPE %s\n" % str(sdict['TYPE']) + # test de la presence d'une forme de source reconnue + # commes ces formes sont des mot-cles facteurs, i.e. une cle de dictionnaire, + # la source ne peut contenir au plus qu'un type de source. + if "WAVEFORM_CONSTANT" in obj.valeur: + wdict = obj.valeur['WAVEFORM_CONSTANT'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" AMP POLAR %s 0\n" % str(wdict['AMPLITUDE']) + print tr("ATTENTION! Une source constante n'est possible qu'a frequence nulle en regime frequentiel") + elif "WAVEFORM_SINUS" in obj.valeur: + wdict = obj.valeur['WAVEFORM_SINUS'] # dictionnaire contenant les parametres de la forme de la source + if self.problem == HARMONIC: + texte+=" AMP POLAR %(ampli)s %(phase)s\n" \ + % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])} + else: + print tr("ERREUR! Une forme de la source du type \ + WAVEFORM_CONSTANT ou WAVEFORM_SINUS est attendue.") + self.dictSourceEport[obj.get_sdname()]=texte + if self.debug: + print texte + except: + pass + +#--------------------------------------------------------------------------------------- +# traitement fichier PHYS +#--------------------------------------------------------------------------------------- + + def generBLOC_VERSION(self,obj) : + # constitution du bloc VERSION du fichier PHYS + # creation d une entite VERSION ; elle sera du type PROC car decrit ainsi + # dans le du catalogue + version=obj.addentite('VERSION',pos=None) + self.generPROC_ETAPE(obj.etapes[0]) + self.texteCarmel3D+="["+obj.etapes[0].nom+"\n" + for cle in obj.etapes[0].valeur : + self.texteCarmel3D+=" "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n" + self.texteCarmel3D+="]\n" + # destruction de l entite creee + obj.suppentite(version) + +#---------------------------------------------------------------------------------------- + def generBLOC_MATERIALS(self) : + """Prepare une partie du contenu du fichier de parametres (PHYS) pour le code Carmel3D (bloc MATERIALS). + Le bloc MATERIALS existe toujours ! + """ + if self.debug: + print "cle dictionnaire materconductor : %s", self.dictMaterConductor.keys() + print "cle dictionnaire materdielectric : %s", self.dictMaterDielectric.keys() + # constitution du bloc MATERIALS du fichier PHYS + self.texteCarmel3D+="[MATERIALS\n" + # tri alphabetique de tous les groupes de maillage associes a des sources (plus necessaire Code_Carmel3D V_2_3_1 et +, mais avant oui) + nomsGroupesMaillage = self.dictGroupesMaillage['ordreMateriauxJdC'][:] # copie de l'original, qui est une liste + nomsGroupesMaillage.sort() # tri alphabetique, avec les prefixes eventuels + if self.debug: + print "noms groupes de mailles associes a des materiaux \ + (ordre JdC puis tri)= %(v_1)s %(v_2)s", \ + {'v_1': self.dictGroupesMaillage['ordreMateriauxJdC'], \ + 'v_2': nomsGroupesMaillage} + # constitution du bloc CONDUCTOR du fichier PHYS si existe + if self.dictMaterConductor != {} : self.creaBLOC_CONDUCTOR(nomsGroupesMaillage) + # constitution du bloc DIELECTRIC du fichier PHYS si exixte + if self.dictMaterDielectric != {} : self.creaBLOC_DIELECTRIC(nomsGroupesMaillage) + # constitution du bloc ZSURFACIC du fichier PHYS si exixte + if self.dictMaterZsurfacic != {} : self.creaBLOC_ZSURFACIC(nomsGroupesMaillage) + # constitution du bloc NILMAT du fichier PHYS si exixte + if self.dictMaterNilmat != {} : self.creaBLOC_NILMAT(nomsGroupesMaillage) + # constitution du bloc ZINSULATOR du fichier PHYS si exixte + if self.dictMaterZinsulator != {} : self.creaBLOC_ZINSULATOR(nomsGroupesMaillage) + # Les blocs EM_ISOTROPIC_FILES et EM_ANISOTROPIC_FILES sont places en dernier dans le fichier PHYS + # constitution du bloc EM_ISOTROPIC_FILES du fichier PHYS si exixte + if self.dictMaterEmIso != {} : self.creaBLOC_EMISO() + # constitution du bloc EM_ANISOTROPIC_FILES du fichier PHYS si exixte + if self.dictMaterEmAnIso != {} : self.creaBLOC_EMANISO() + # fin du bloc MATERIALS du fichier PHYS + self.texteCarmel3D+="]\n" + + def creaBLOC_CONDUCTOR(self, nomsGroupesMaillage) : + """Constitution du bloc CONDUCTOR du fichier PHYS""" + typeBloc = 'CONDUCTOR' # initialisation du type de bloc + dictProprietes = self.dictMaterConductor # initialisation du dictionnaire des proprietes du bloc + if self.debug: + print 'cles materiaux de type %(type_bloc)s = %(cle_bloc)s', \ + {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type + # ecriture du bloc complet + self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_DIELECTRIC(self, nomsGroupesMaillage) : + """Constitution du bloc DIELECTRIC du fichier PHYS""" + typeBloc = 'DIELECTRIC' # initialisation du type de bloc + dictProprietes = self.dictMaterDielectric # initialisation du dictionnaire des proprietes du bloc + if self.debug: + print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ + {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type + # ecriture du bloc complet + self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc + self.texteCarmel3D+=" NAME "+nom+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_ZSURFACIC(self, nomsGroupesMaillage) : + """Constitution du bloc ZSURFACIC du fichier PHYS""" + typeBloc = 'ZSURFACIC' # initialisation du type de bloc + dictProprietes = self.dictMaterZsurfacic # initialisation du dictionnaire des proprietes du bloc + if self.debug: + print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ + {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type + # ecriture du bloc complet + self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_EMISO(self) : + """constitution du bloc EM_ISOTROPIC_FILES du fichier PHYS""" + for cle in self.dictMaterEmIso.keys(): + self.texteCarmel3D+=" [EM_ISOTROPIC_FILES\n" + self.texteCarmel3D+= self.dictMaterEmIso[cle] + self.texteCarmel3D+=" ]\n" + + def creaBLOC_EMANISO(self) : + """constitution du bloc EM_ANISOTROPIC_FILES du fichier PHYS""" + for cle in self.dictMaterEmAnIso.keys(): + self.texteCarmel3D+=" [EM_ANISOTROPIC_FILES\n" + self.texteCarmel3D+= self.dictMaterEmAnIso[cle] + self.texteCarmel3D+=" ]\n" + + def creaBLOC_ZINSULATOR(self, nomsGroupesMaillage) : + """Constitution du bloc ZINSULATOR du fichier PHYS""" + typeBloc = 'ZINSULATOR' # initialisation du type de bloc + dictProprietes = self.dictMaterZinsulator # initialisation du dictionnaire des proprietes du bloc + if self.debug: print 'cles materiaux de type '+typeBloc+'=', dictProprietes.keys() + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type + # ecriture du bloc complet + self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_NILMAT(self, nomsGroupesMaillage) : + """Constitution du bloc NILMAT du fichier PHYS""" + typeBloc = 'NILMAT' # initialisation du type de bloc + dictProprietes = self.dictMaterNilmat # initialisation du dictionnaire des proprietes du bloc + if self.debug: + print 'cles materiaux de type %(type_bloc)s=%(cle_bloc)s', \ + {'type_bloc': typeBloc, 'cle_bloc': dictProprietes.keys()} + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in dictProprietes.keys(): # test si le nom du materiau associe est du bon type + # ecriture du bloc complet + self.texteCarmel3D+=" ["+typeBloc+"\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= dictProprietes[self.dictGroupesMaillage[nom]] # ecriture des proprietes du type associe + self.texteCarmel3D+=" ]\n" # fin de bloc + +#---------------------------------------------------------------------------------------- + def generBLOC_SOURCES(self): + """constitution du bloc SOURCES du fichier PHYS""" + self.texteCarmel3D+="[SOURCES\n" + # tri alphabetique de tous les groupes de maillage associes a des sources + nomsGroupesMaillage = self.dictGroupesMaillage['ordreSourcesJdC'][:] # copie de l'original, qui est une liste + nomsGroupesMaillage.sort() # tri alphabetique, avec les prefixes eventuels + if self.debug: + print 'noms groupes de mailles associes a des sources \ + (ordre JdC puis tri)=%(g_maillage_orig)s %(g_maillage_trie)s', \ + {'g_maillage_orig': self.dictGroupesMaillage['ordreSourcesJdC'], \ + 'g_maillage_trie': nomsGroupesMaillage} + if self.dictSourceStInd != {}: self.creaBLOC_STRANDED_INDUCTOR(nomsGroupesMaillage) + if self.dictSourceEport != {}: self.creaBLOC_EPORT(nomsGroupesMaillage) + if self.dictSourceHport != {}: self.creaBLOC_HPORT(nomsGroupesMaillage) + # fin du bloc SOURCES du fichier PHYS + self.texteCarmel3D+="]\n" + + + def creaBLOC_STRANDED_INDUCTOR(self, nomsGroupesMaillage) : + """constitution du bloc STRANDED_INDUCTOR du fichier PHYS""" + if self.debug: + print 'cles sources STRANDED_INDUCTOR= %s', self.dictSourceStInd.keys() + typeBloc = 'STRANDED_INDUCTOR' + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in self.dictSourceStInd.keys(): # test si le nom de la source associee est un inducteur bobine + # ecriture du bloc de l'inducteur bobine + self.texteCarmel3D+=" [STRANDED_INDUCTOR\n" # debut de bloc + self.texteCarmel3D+=" NAME "+nom+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= self.dictSourceStInd[self.dictGroupesMaillage[nom]] # ecriture des proprietes de l'inducteur bobine + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_EPORT(self, nomsGroupesMaillage) : + """constitution du bloc EPORT du fichier PHYS""" + if self.debug: + print 'cles sources EPORT= %s', self.dictSourceEport.keys() + typeBloc = 'EPORT' + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in self.dictSourceEport.keys(): # test si le nom de la source associee est un port electrique + # ecriture du bloc du port electrique + self.texteCarmel3D+=" [EPORT\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= self.dictSourceEport[self.dictGroupesMaillage[nom]] # ecriture des proprietes du port electrique + self.texteCarmel3D+=" ]\n" # fin de bloc + + def creaBLOC_HPORT(self, nomsGroupesMaillage) : + """constitution du bloc HPORT du fichier PHYS""" + if self.debug: + print 'cles sources HPORT= %s', self.dictSourceHport.keys() + typeBloc = 'HPORT' + for nom in nomsGroupesMaillage: # parcours des noms des groupes de maillage + if self.dictGroupesMaillage[nom] in self.dictSourceHport.keys(): # test si le nom de la source associee est un port magnetique + # ecriture du bloc du port magnetique + self.texteCarmel3D+=" [HPORT\n" # debut de bloc + if usePrefix: + nomReel = self.nomReelGroupeMaillage(nom, typeBloc) + else: + nomReel = nom + self.texteCarmel3D+=" NAME "+nomReel+"\n" # ecriture du nom (reel) du groupe du maillage + self.texteCarmel3D+= self.dictSourceHport[self.dictGroupesMaillage[nom]] # ecriture des proprietes du port magnetique + self.texteCarmel3D+=" ]\n" # fin de bloc + +#------------------------------------- +# Methodes utilitaires +# ------------------------------------ + def formateCOMPLEX(self,nbC): + """prise en compte des differentes formes de description d un nombre complexe + 3 formats possibles : 2 listes (anciennement tuples?) et 1 nombre complexe + """ + if self.debug: + print "formatage " + print "type : %(type_nb_c)s pour %(nb_c)s", \ + {'type_nb_c': type(nbC), 'nb_c': nbC} + nbformate ="" + if isinstance(nbC,(tuple,list)): + if nbC[0] == "'RI'" : + nbformate = "COMPLEX " + str(nbC[1])+" "+str(nbC[2]) + if nbC[0] == "'MP'" : + nbformate = "POLAR " + str(nbC[1])+" "+str(nbC[2]) + else: + nbformate = "COMPLEX " + str(nbC.real)+" "+str(nbC.imag) + if self.debug: + print "nbformate : %s", nbformate + return nbformate + + def nomReelGroupeMaillage(self, nom, typeBloc=None): + """Calcule et retourne le nom reel du groupe de maillage donne en entree, + en tenant compte de l'utilisation de prefixes ou pas, et cela pour le type + de bloc du fichier PHYS specifie. + Cette routine verifie aussi, en cas d'utilisation de prefixes, si le prefixe est en adequation avec le type du bloc. + """ + from string import join + if self.debug: + print "nom groupe original : %(nom)s avec usePrefix=%(use_prefix)s devient...", \ + {'nom': nom, 'use_prefix': str(usePrefix)} + nomReel= None # nom affiche dans le fichier PHYS, sans prefixe a priori + if usePrefix: + # suppression du prefixe si present + partiesNom = nom.split(sepNomGroupeMaille) # separation du nom du groupe en parties + # les tests suivants ne generent une erreur que si le prefixe est obligatoire + if len(partiesNom) < 2: # test d'erreur, pas de separateur donc nom incorrect, i.e. sans prefixe c'est sur + print tr("ERREUR! ce groupe de maille (%s) n'a pas de prefixe \ + indiquant le type de materiau ou de source associee", nom) + elif partiesNom[0] not in listePrefixesGroupeMaille: # prefixe non defini + print tr("ERREUR! ce groupe de maille (%s) n'a pas de prefixe valable", nom) + else: + # verification de l'adequation du prefixe avec le type de bloc demande, si fourni + if typeBloc is not None: + if typeBloc not in dictPrefixesGroupeMaille: # test validite de typeBloc, devant etre une cle du dictionnaire + print tr("ERREUR! ce type de bloc (%s) n'est pas valable", str(typeBloc)) + elif partiesNom[0] not in dictPrefixesGroupeMaille[typeBloc]: # pas de prefixe correct pour ce type de bloc + print tr("ERREUR! ce groupe de maille (%(nom)s) n'a pas \ + le prefixe correct pour etre associe a un type %(type_bloc)s", \ + {'nom': nom, 'type_bloc': str(typeBloc)}) + else: # c'est bon + nomReel = join(partiesNom[1:], sepNomGroupeMaille) # reconstruction du nom du groupe sans prefixe complet + if self.debug: + print "ce groupe de maille (%(nom)s) a un prefixe qui \ + est supprime automatiquement pour devenir : %(nom_reel)s", \ + {'nom': nom, 'nom_reel': nomReel} + else: # c'est bon + nomReel = join(partiesNom[1:], sepNomGroupeMaille) # reconstruction du nom du groupe sans prefixe complet + if self.debug: + print "ce groupe de maille (%(nom)s) a un prefixe qui \ + est supprime automatiquement pour devenir : %(nom_reel)s", \ + {'nom': nom, 'nom_reel': nomReel} + if self.debug: + print "... %s", nomReel + return nomReel diff --git a/generator/oldCodes/generator_CARMELCND.py b/generator/oldCodes/generator_CARMELCND.py new file mode 100755 index 00000000..4e719c9f --- /dev/null +++ b/generator/oldCodes/generator_CARMELCND.py @@ -0,0 +1,303 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. +""" + +import traceback +import types,string,re,os +from Extensions.i18n import tr +from generator_python import PythonGenerator +import Accas + +debutTextePhys ="[VERSION\n NUM 1\n FILETYPE PHYS\n]\n" +debutTextePhys+="[MATERIALS\n" +texteConductor =" [CONDUCTIVITY\n LAW LINEAR\n" +texteConductor+=" HOMOGENEOUS TRUE\n" +texteConductor+=" ISOTROPIC TRUE\n" +texteConducto2 =" 0.0000000000000000E+00\n ]\n" +texteConducto2+=" [PERMEABILITY\n LAW LINEAR\n" +texteConducto2+=" HOMOGENEOUS TRUE\n" +texteConducto2+=" ISOTROPIC TRUE\n" +texteNoCond =" [PERMITTIVITY\n LAW LINEAR\n" +texteNoCond+=" HOMOGENEOUS TRUE\n ISOTROPIC TRUE\n" +texteNoCond+=" VALUE COMPLEX 0.1000000000000000E+01 0.0000000000000000E+00\n" +texteNoCond+=" ]\n [PERMEABILITY\n LAW LINEAR\n" +texteNoCond+=" HOMOGENEOUS TRUE\n ISOTROPIC TRUE\n" + +debutTexteParam ="[VERSION\n NUM 1\n FILETYPE PARAM\n]\n" +debutTexteParam+="[PROBLEM\n NAME HARMONIC\n]\n" +debutTexteParam+="[CAR_FILES\n NAME " + +debutTexteZs0 =" [ZSURFACIC\n NAME " +debutTexteZs ="\n [CONDUCTIVITY\n" +debutTexteZs+=" LAW LINEAR\n" +debutTexteZs+=" HOMOGENEOUS TRUE\n" +debutTexteZs+=" ISOTROPIC TRUE\n" +debutTexteZs+=" VALUE COMPLEX " +texteZs2 =" 0.0000000000000000E+00\n ]\n" +texteZs2 +=" [PERMEABILITY\n LAW LINEAR\n" +texteZs2 +=" HOMOGENEOUS TRUE\n" +texteZs2 +=" ISOTROPIC TRUE\n VALUE COMPLEX " +finTexteZs =" 0.0000000000000000E+00\n ]\n ]\n" + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'CARMELCND', + # La factory pour creer une instance du plugin + 'factory' : CARMELCNDGenerator, + } + + +class CARMELCNDGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format dictionnaire + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + +#---------------------------------------------------------------------------------------- + def gener(self,obj,format='brut',config=None): + + self.initDico() + + # Cette instruction genere le contenu du fichier de commandes (persistance) + self.text=PythonGenerator.gener(self,obj,format) + self.racine=obj + return self.text + + +#---------------------------------------------------------------------------------------- +# initialisations +#---------------------------------------------------------------------------------------- + + def initDico(self) : + + self.dictMCVal={} + +#---------------------------------------------------------------------------------------- +# ecriture +#---------------------------------------------------------------------------------------- + + def writeDefault(self,file) : +#file ne sert pas + + self.texteIngendof="" + self.texteParam=debutTexteParam + self.chercheFichier() + self.traiteSourceVCut() + + fn=self.fnBase + fileIngendofDeb = fn[:fn.rfind(".")] + '.ingendof' + fileIngendof = os.path.join(self.sauveDirectory,fileIngendofDeb) + f = open( str(fileIngendof), 'wb') + f.write( self.texteIngendof ) + f.close() + + self.textePhys=debutTextePhys + self.traiteMateriaux() + filePhysDeb = fn[:fn.rfind(".")] + '.phys' + filePhys = os.path.join(self.sauveDirectory,filePhysDeb) + f = open( str(filePhys), 'wb') + f.write( self.textePhys ) + f.close() + + fileParamDeb = fn[:fn.rfind(".")] + '.param' + fileParam = os.path.join(self.sauveDirectory,fileParamDeb) + self.traiteParam() + f = open( str(fileParam), 'wb') + f.write( self.texteParam ) + f.close() + + self.texteCMD="[ \n GLOBAL \n] \n[ \nVISU \n"+self.fnBase.split(".med")[0]+"\nMED \nELEMENT \n] " + fileCMDDeb = fn[:fn.rfind(".")] + '.cmd' + fileCMD =os.path.join(self.sauveDirectory,fileCMDDeb) + f = open( str(fileCMD), 'wb') + f.write( self.texteCMD ) + f.close() + + nomBaseFichier=os.path.basename(fileParam).split(".med")[0] + + self.texteInfcarmel=nomBaseFichier + fileInfcarmelDeb = fn[:fn.rfind(".")] + '.infcarmel' + fileInfcarmel=os.path.join(self.sauveDirectory,fileInfcarmelDeb) + f = open( str(fileInfcarmel), 'wb') + f.write( self.texteInfcarmel ) + f.close() + + self.texteInpostpro=nomBaseFichier+"\n"+nomBaseFichier.split(".param")[0]+'.xmat\n'+nomBaseFichier.split(".param")[0]+'.cmd' + fileInpostproDeb = fn[:fn.rfind(".")] + '.inpostprocess' + fileInpostpro = os.path.join(self.sauveDirectory,fileInpostproDeb) + f = open( str(fileInpostpro), 'wb') + f.write( self.texteInpostpro ) + f.close() + +#---------------------------------------------------------------------------------------- +# analyse des commentaires pour trouver le nom du fichier +#---------------------------------------------------------------------------------------- + + def chercheFichier(self) : + nomFichier="inconnu" + for e in self.racine.etapes: + if isinstance(e,Accas.COMMENTAIRE): + print 'ùmasdkfh=',e.valeur[0:17] + if e.valeur[0:17]=="Cree - fichier : ": + debut=e.valeur[17:] + liste=debut.split(" - ") + nomFichier=liste[0] + #print 'nom=',nomFichier + #print 'e.va=',e.valeur.split(" ")[-1] + #print 'liste=',liste + nomDomaine=e.valeur.split(" ")[-1] + break + self.sauveDirectory=os.path.dirname(nomFichier) + self.fnBase=os.path.basename(nomFichier) + self.texteIngendof =os.path.basename(nomFichier)+"\n" + self.texteParam += os.path.basename(nomFichier).split(".med")[0]+".car\n]\n" + self.texteParam +="[PHYS_FILES\n NAME "+os.path.basename(nomFichier).split(".med")[0]+".phys\n]\n" + +#---------------------------------------------------------------------------------------- +# analyse du dictionnaire pour trouver les sources et les VCut et les ZS +#---------------------------------------------------------------------------------------- + + def traiteSourceVCut(self) : + listeSource=[] + listeVCut=[] + self.listeZS=[] + self.texteSourcePhys="[SOURCES\n" + for k in self.dictMCVal.keys(): + if k.find ("______SOURCE__") > -1 : + noms=k.split("_____") + if noms[0] not in listeSource : listeSource.append(noms[0]) + if k.find ("______VCUT__") > -1 : + noms=k.split("_____") + if noms[0] not in listeVCut : listeVCut.append(noms[0]) + if k.find ("______ZS") > -1 : + noms=k.split("_____") + if noms[0] not in self.listeZS : self.listeZS.append(noms[0]) + listeSource.sort() + for source in listeSource: + debutKey=source+"______SOURCE__" + texteSource=self.dictMCVal[debutKey+"EnveloppeConnexeInducteur"]+"\n" + texteSource+="2\n" + for val in self.dictMCVal[debutKey+"VecteurDirecteur"] : + texteSource+=str(val)+" " + texteSource+="\n" + for val in self.dictMCVal[debutKey+"Centre"] : + texteSource+=str(val)+" " + texteSource+="\n" + texteSource+=str(self.dictMCVal[debutKey+"SectionBobine"])+"\n" + self.texteIngendof+=texteSource + self.texteSourcePhys+=" [STRANDED_INDUCTOR\n" + self.texteSourcePhys+=" NAME "+source+"\n" + self.texteSourcePhys+=" NTURNS "+str(self.dictMCVal[debutKey+"NbdeTours"])+"\n" + self.texteSourcePhys+=" CURJ POLAR "+str(self.dictMCVal[debutKey+"Amplitude"]) + self.texteSourcePhys+=" 0.0000000000000000E+00\n ]\n" + + self.texteSourcePhys+="]\n" + for vcut in listeVCut: + self.texteIngendof+="1\n" + debutKey=vcut+"______VCUT__" + if self.dictMCVal[debutKey+"Orientation"] == "Oppose" :self.texteIngendof+="0\n" + else : self.texteIngendof+="1\n" + if self.dictMCVal["__PARAMETRES__TypedeFormule"]=="APHI" :self.texteIngendof+="1\n" + else : self.texteIngendof+="2\n" + + + +#---------------------------------------------------------------------------------------- + def traiteMateriaux(self) : +#---------------------------------------------------------------------------------------- + listeCond=[] + listeNoCond=[] + for k in self.dictMCVal.keys(): + if k.find ("______CONDUCTEUR") > -1 : + noms=k.split("_____") + if noms[0] not in listeCond : listeCond.append(noms[0]) + if k.find ("______NOCOND") > -1 : + noms=k.split("_____") + if noms[0] not in listeNoCond : listeNoCond.append(noms[0]) + + for c in listeCond: + self.textePhys +=" [CONDUCTOR\n" + self.textePhys +=" NAME "+c+"\n" + self.textePhys +=texteConductor + self.textePhys+=" VALUE COMPLEX " + self.textePhys+=str(self.dictMCVal[c+"______CONDUCTEUR__Conductivite"]) + self.textePhys+=texteConducto2 + self.textePhys+=" VALUE COMPLEX " + self.textePhys+=str(self.dictMCVal[c+"______CONDUCTEUR__PermeabiliteRelative"]) + self.textePhys+=" 0.0000000000000000E+00\n ]\n ]\n" + + for c in listeNoCond: + self.textePhys+=" [DIELECTRIC\n" + self.textePhys +=" NAME "+c+"\n" + self.textePhys += texteNoCond + self.textePhys+=" VALUE COMPLEX " + self.textePhys+=str(self.dictMCVal[c+"______NOCOND__PermeabiliteRelative"]) + self.textePhys+=" 0.0000000000000000E+00\n ]\n ]\n" + + for zs in self.listeZS: + self.textePhys+=debutTexteZs0+zs + self.textePhys+=debutTexteZs + self.textePhys+=str(self.dictMCVal[zs+"______ZS__Conductivite"]) + self.textePhys+=texteZs2 + self.textePhys+=str(self.dictMCVal[zs+"______ZS__PermeabiliteRelative"]) + self.textePhys+=finTexteZs + + self.textePhys+="]\n" + self.textePhys+=self.texteSourcePhys + +#---------------------------------------------------------------------------------------- +# Creation du fichier Param +#---------------------------------------------------------------------------------------- + def traiteParam(self): + self.texteParam +="[FREQUENCY\n SINGLE "+str(self.dictMCVal["__PARAMETRES__Frequence"])+"\n]\n" + self.texteParam +="[SOLVER\n NAME BICGCR\n" + self.texteParam +=" [ITERATIVE_PARAM\n" + self.texteParam +=" NITERMAX "+str(self.dictMCVal["__PARAMETRES__Nb_Max_Iterations"])+"\n" + self.texteParam +=" EPSILON "+ str(self.dictMCVal["__PARAMETRES__Erreur_Max"])+"\n ]\n]" + + +#---------------------------------------------------------------------------------------- +# analyse de chaque noeud de l'arbre +#---------------------------------------------------------------------------------------- + + def generMCSIMP(self,obj) : + """recuperation de l objet MCSIMP""" + s=PythonGenerator.generMCSIMP(self,obj) + if hasattr(obj.etape,'sdnom'): clef=obj.etape.sdnom+"____" + else: clef="" + for i in obj.get_genealogie() : + clef=clef+"__"+i + self.dictMCVal[clef]=obj.valeur + + return s + + def get_repExeCarmel(self) : + return self.dictMCVal["__PARAMETRES__RepCarmel"] + diff --git a/generator/oldCodes/generator_CARMELCS.py b/generator/oldCodes/generator_CARMELCS.py new file mode 100644 index 00000000..41a2d45c --- /dev/null +++ b/generator/oldCodes/generator_CARMELCS.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. +""" + +import traceback +import types,string,re,os +from Extensions.i18n import tr +from generator_python import PythonGenerator +import Accas + + + + +#keys = ['Carmel3D_StudyDirectory','Syrthes_StudyDirectory'] + + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'CARMELCS', + # La factory pour creer une instance du plugin + 'factory' : CARMELCSGenerator, + } + + +class CARMELCSGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format dictionnaire + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + +#---------------------------------------------------------------------------------------- + def gener(self,obj,format='brut',config=None): + + self.initDico() + + # Cette instruction genere le contenu du fichier de commandes (persistance) + self.text=PythonGenerator.gener(self,obj,format) + self.racine=obj + return self.text + + def generxml(self,obj,format='brut',config=None): + + texte = self.gener(obj,format,config) +# print 'self.dictMCVal = ',self.dictMCVal + textePourRun = self.update_XMLYacsSchemaForRunning() + return textePourRun + +#---------------------------------------------------------------------------------------- +# initialisations +#---------------------------------------------------------------------------------------- + + def initDico(self) : + + self.texteDico = "" + self.dictMCVal={} + self.dicoCS={} + self.debutKey = '__PARAM_CS__' + +#---------------------------------------------------------------------------------------- +# ecriture +#---------------------------------------------------------------------------------------- + + def getdico(self) : + #print 'getdico : self.dictMCVal.keys() = ',self.dictMCVal.keys() + for k in self.dictMCVal.keys(): + if k.find (self.debutKey) > -1 : + a,kproperty=k.split(self.debutKey) + self.dicoCS[kproperty] = self.dictMCVal[k] + #print "self.dicoCS = ",self.dicoCS + return self.dicoCS + + def getXMLYacsSchemaFileTemplate(self) : + + for k in self.dictMCVal.keys(): + if k.find (self.debutKey) > -1 : + a,kproperty=k.split(self.debutKey) + if kproperty == 'XMLYacsFile' : + return self.dictMCVal[k] + + def getXMLYacsSchemaFileRun(self) : + xmlYacsSchemaFilePath = self.getXMLYacsSchemaFileTemplate() + filename = os.path.basename(xmlYacsSchemaFilePath) + dirname = os.path.dirname(xmlYacsSchemaFilePath) + prefix = '_run_' + runxmlfile = os.path.join(dirname,prefix+filename) + return xmlYacsSchemaFilePath,runxmlfile + + def update_XMLYacsSchemaForRunning(self) : + """ + Creation du fichier _run_XXX.xml, a partir des elements donnes par l'utilisateur dans l'interface : + Carmel3D_StudyDirectory : YYY (path du repertoire de l'etude CARMEL3D de couplage) + Syrthes_StudyDirectory : YYY/THERMIQUE (path du repertoire de l'etude SYRTHES de couplage) + XMLYacsFile : PATH du fichier template du schema yacs d'execution du couplage + """ + xmlYacsSchemaFilePath,runxmlfile = self.getXMLYacsSchemaFileRun() + f_xml = open( str(xmlYacsSchemaFilePath), 'r') + texte_template_xml = f_xml.read() + f_xml.close() + dicoCS = self.getdico() + print "dicoCS = ",dicoCS + # ajout dans dicoCS des elements pour SYRTHES qui sont deja sous cette forme la dans le fichier xml sinon ca pose pb + dicoCS['DEB']='%(DEB)s' + dicoCS['FIN']='%(FIN)s' + newTexteXml = texte_template_xml%dicoCS + f = open(runxmlfile,'w') + f.write(newTexteXml) + f.close() + return runxmlfile + + def writeDefault(self,fn) : + fileDico = fn[:fn.rfind(".")] + '.py' + f = open( str(fileDico), 'wb') + f.write( self.texteDico ) + f.close() + runxmlfile = self.update_XMLYacsSchemaForRunning() + +#---------------------------------------------------------------------------------------- +# analyse de chaque noeud de l'arbre +#---------------------------------------------------------------------------------------- + + def generMCSIMP(self,obj) : + """recuperation de l objet MCSIMP""" + s=PythonGenerator.generMCSIMP(self,obj) + self.texteDico+=obj.nom+ "=" + s[0:-1]+ "\n" +# print 'generMCSIMP self.texteDico = ',self.texteDico + if hasattr(obj.etape,'sdnom'): clef=obj.etape.sdnom+"____" + else: clef="" + for i in obj.get_genealogie() : + clef=clef+"__"+i + self.dictMCVal[clef]=obj.valeur + + return s + + diff --git a/generator/oldCodes/generator_ZCracks.py b/generator/oldCodes/generator_ZCracks.py new file mode 100644 index 00000000..057d738d --- /dev/null +++ b/generator/oldCodes/generator_ZCracks.py @@ -0,0 +1,168 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +"""Ce module contient le plugin generateur de fichier au format Code_Carmel3D pour EFICAS. +""" +from __future__ import absolute_import +from __future__ import print_function +try : + from builtins import str +except : pass + +import pickle +texte_debut="#include \n int main() \n{ \n init_var();\n" +texte_debut+=' format="med";\n' +import traceback +import types,re,os +from Extensions.i18n import tr +from .generator_python import PythonGenerator +#ListeConcatene=('ridge_names','topo_names','geom_names','elset_names','faset_names','liset_names','nset_names','center','normal','dir') +ListeConcatene=('ridge_names','topo_names','geom_names','elset_names','faset_names','liset_names','nset_names') +ListeConcatene2=('center','normal','dir') +ListeConcatene3=('ra','rb') +if_ellipse=False + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'ZCRACKS', + # La factory pour creer une instance du plugin + 'factory' : ZCrackGenerator, + } + + +class ZCrackGenerator(PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un texte au format eficas et + un texte au format dictionnaire + + """ + # Les extensions de fichier permis? + extensions=('.comm',) + +#---------------------------------------------------------------------------------------- + def gener(self,obj,format='brut',config=None): + + self.initDico() + + # Cette instruction genere le contenu du fichier de commandes (persistance) + self.text=PythonGenerator.gener(self,obj,format) + return self.text + + +#---------------------------------------------------------------------------------------- +# initialisations +#---------------------------------------------------------------------------------------- + + def initDico(self) : + self.textePourRun = texte_debut + + +#---------------------------------------------------------------------------------------- +# ecriture +#---------------------------------------------------------------------------------------- + + def writeDefault(self,fn) : + fileZcrack = fn[:fn.rfind(".")] + '.z7p' + f = open( str(fileZcrack), 'wb') + print((self.textePourRun)) + + self.ajoutRun() + self.textePourRunAvecDouble=self.textePourRun.replace("'",'"') + f.write( self.textePourRunAvecDouble) + f.close() + + def ajoutRun(self) : + self.textePourRun+=" write_mesh_crack();\n" + self.textePourRun+=" do_mesh_crack(0);\n" + self.textePourRun+=" write_refine_mesh();\n" + self.textePourRun+=" do_refine_mesh(0);\n" + self.textePourRun+=" write_cut_mesh();\n" + self.textePourRun+=" do_cut_mesh(0);\n" +# self.textePourRun+=" nice_cut("+str(self.maximum_aspect_ratio)+");\n" + self.textePourRun+=' export_mesh("'+self.cracked_name+'","med");\n' + self.textePourRun+="}" + +#---------------------------------------------------------------------------------------- +# analyse de chaque noeud de l'arbre +#---------------------------------------------------------------------------------------- + + def generMCSIMP(self,obj) : + """recuperation de l objet MCSIMP""" + #print dir(obj) + s=PythonGenerator.generMCSIMP(self,obj) + if obj.nom=="sane_name" : + self.textePourRun+=' import_mesh("'+obj.val+'", "med");\n' + if obj.nom in ListeConcatene : +# obj.val=obj.val+" " + stringListe="" + for val in obj.val: + stringListe+=val+"" +# pickle.dump( stringListe, open( "/home/H60874/test.pickle", "wb" ) ) +# self.textePourRun+=" "+obj.nom+ "='"+ stringListe[0:-1]+ "';\n" +# self.textePourRun+=" "+obj.nom+ "='"+ stringListe+ "';\n" + return s + if obj.nom in ListeConcatene3 : + if (obj.nom=="ra") : + self.textePourRun+=" "+"if_ellipse=1;\n" + self.textePourRun+=" "+obj.nom+ "="+str(obj.val)+";\n" + if_ellipse_ellipse=True + return s + + if obj.nom in ListeConcatene2 : + stringListe="" +# self.textePourRun+="GGGGGGG%"+obj.nom+"\n" +# if (len(val)>1) : + for val in obj.val: + stringListe+=str(val)+"," + self.textePourRun+=" "+obj.nom+ "=set_vector3("+ stringListe[0:-1]+ ");\n" +# else : +# self.textePourRun+=" "+obj.nom+ str(obj.val+ ";\n" +# stringListe+=str(val)+" " +# self.textePourRun+=" "+obj.nom+ "=set_vector3("+stringListe[0]+","+stringListe[1]+","+stringListe[2]+");\n" +# self.textePourRun+=" "+obj.nom+ "=set_vector3("+obj.val+","+");\n" + return s +# if obj.nom=="center" : +# self.textePourRun+=" set_vector3("+obj.val+'");\n" +# if obj.nom=="center" : +# self.textePourRun+=" set_vector3("+obj.val+'");\n" +# if obj.nom=="normal" : +# self.textePourRun+=" set_vector3("+obj.val+'");\n" +# if obj.nom=="dir" : +# self.textePourRun+=" set_vector3("+obj.val+'");\n" + if obj.nom=="elset_radius" : + self.textePourRun+=" if_must_define_elset=1;\n" + + + if obj.nom=="cracked_name" : self.cracked_name=obj.val + if obj.nom=="maximum_aspect_ratio" : self.maximum_aspect_ratio=obj.val + if obj.nom=="repertoire" : + print ("PNPNPN a traiter") + return s + self.textePourRun+=" "+obj.nom+ "=" + s[0:-1]+ ";\n" + return s + + +# si repertoire on change tous les noms de fichier +# exple repertoire='/home' __> fichier='/home/crack.med diff --git a/generator/oldCodes/generator_file_from_template.py b/generator/oldCodes/generator_file_from_template.py new file mode 100644 index 00000000..dcbdc9e8 --- /dev/null +++ b/generator/oldCodes/generator_file_from_template.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 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 +# +from __future__ import absolute_import +try : + from builtins import str +except : pass +import os + +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException +from .generator_python import PythonGenerator +import six + +def entryPoint(): + """ + Return a dictionary containing the description needed to load the plugin + """ + return {'name' : 'file_from_template', + 'factory' : FileFromTemplateGenerator} + + +class FileFromTemplateGenerator(PythonGenerator): + """ + This generator creates an output file from a template (file with holes) in + addition to Eficas .comm file. The parts to replace in the template must be + in the form %KEYWORD%, where KEYWORD may be either the name of the Eficas + element (short form, for instance MY_MCSIMP) or the "path" to the Eficas + element (long form, for instance MYPROC.MYBLOC.MY_MCSIMP). + + To use this generator, the configuration of the code must implement two + methods: get_extension() that must return the extension of the output file + and get_template_file() that must return the path of the template file. Be + sure also that your catalog is coherent with your template file. + """ + + def gener(self, obj, format = 'brut', config = None): + self.config = config + self.kw_dict = {} + self.text = PythonGenerator.gener(self, obj, format) + return self.text + + def generate_output_from_template(self) : + """ + Generate the output text from the template file and the keywords + """ + templateFileName = self.config.get_template_file() + if not os.path.isfile(templateFileName): + raise EficasException(tr("Fichier patron %s n'existe pas.", + str( templateFileName))) + f = open(templateFileName, "r") + template = f.read() + f.close() + self.output_text = self.replace_keywords(template) + + def generMCSIMP(self, obj) : + """ + Save object value in the keyword dict for further use, then generate + the text corresponding to the MCSIMP element. + """ + short_keyword = obj.nom.strip() + long_keyword = "" + for i in obj.get_genealogie()[:-1]: + long_keyword += i + "." + long_keyword += short_keyword + self.kw_dict[short_keyword] = obj.valeur + self.kw_dict[long_keyword] = obj.valeur + return PythonGenerator.generMCSIMP(self, obj) + + def replace_keywords(self, template_string): + result = template_string + for item in six.iteritems(self.kw_dict): + replace_str = "%" + item[0] + "%" + result = result.replace(replace_str, str(item[1])) + return result + + def writeDefault(self, basefilename): + self.generate_output_from_template() + output_filename = os.path.splitext(basefilename)[0] + \ + self.config.get_extension() + f = open(output_filename, 'w') + f.write(self.output_text) + f.close() diff --git a/generator/oldCodes/generator_ini.py b/generator/oldCodes/generator_ini.py new file mode 100644 index 00000000..3fa2dd9b --- /dev/null +++ b/generator/oldCodes/generator_ini.py @@ -0,0 +1,146 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +""" + Ce module contient le plugin generateur de fichier + au format ini pour EFICAS. +""" +from __future__ import absolute_import +try : + from builtins import str + from builtins import object +except : pass + +import traceback +import types +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException + + +from Noyau import N_CR +from Accas import MCSIMP,MCFACT,MCList + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'ini', + # La factory pour creer une instance du plugin + 'factory' : IniGenerator, + } + + +class IniGenerator(object): + """ + Ce generateur parcourt un objet de type MCFACT et produit + un fichier au format ini + L'acquisition et le parcours sont realises par le methode + generator.gener(objet_mcfact) + L'ecriture du fichier au format ini par appel de la methode + generator.writefile(nom_fichier) + + Ses caracteristiques principales sont exposees dans des attributs + de classe : + - extensions : qui donne une liste d'extensions de fichier preconisees + + """ + # Les extensions de fichier preconisees + extensions=('.ini','.conf') + + def __init__(self,cr=None): + # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard + if cr : + self.cr=cr + else: + self.cr=N_CR.CR(debut='CR generateur format ini', + fin='fin CR format ini') + # Le texte au format ini est stocke dans l'attribut text + self.text='' + + def writefile(self,filename): + fp=open(filename,'w') + fp.write(self.text) + fp.close() + + def gener(self,obj,config=None): + """ + Tous les mots-cles simples du niveau haut sont mis dans la section DEFAUT + Tous les mots-cles facteurs sont convertis en sections + Un mot-cle facteur ne peut contenir que des mots-cles simples. Sinon => erreur + """ + liste_mcfact=[] + sect_defaut='' + if isinstance(obj,MCList): + if len(obj.data) > 1: + raise EficasException(tr("Pas supporte")) + else: + obj=obj.data[0] + + for mocle in obj.mc_liste: + if isinstance(mocle,MCList): + if len(mocle.data) > 1: + raise EficasException(tr("Pas supporte")) + else: + liste_mcfact.append(self.generMCFACT(mocle.data[0])) + elif isinstance(mocle,MCFACT): + liste_mcfact.append(self.generMCFACT(mocle)) + elif isinstance(mocle,MCSIMP): + sect_defaut=sect_defaut+self.generMCSIMP(mocle) + else: + self.cr.fatal(tr("Entite inconnue ou interdite :%s",repr(mocle))) + + self.text='' + if sect_defaut != '': + self.text="[DEFAULT]\n"+sect_defaut + self.text=self.text + ''.join(liste_mcfact,'\n') + return self.text + + def generMCFACT(self,obj): + """ + Cette methode convertit un mot-cle facteur ne contenant que des mots-cles + simples en une chaine de caracteres + """ + sect_text='[%s]\n' % obj.nom + for mocle in obj.mc_liste: + if isinstance(mocle,MCSIMP): + sect_text=sect_text+self.generMCSIMP(mocle) + else: + self.cr.fatal(tr("Entite inconnue ou interdite :%s. Elle est ignoree",repr(mocle))) + return sect_text + + def generMCSIMP(self,obj): + """ + Cette methode convertit un mot-cle simple en une chaine de caracteres + au format ini + """ + s='' + if type(obj.valeur) == tuple : + self.cr.fatal(tr("Les tuples ne sont pas supportes pour le format ini :%s ", obj.nom)) + s="%s = %s\n" % (obj.nom,"ERREUR") + else : + try: + s="%s = %s\n" % (obj.nom,obj.valeur) + except Exception as e : + self.cr.fatal(tr("Type de valeur non supportee par le format ini :%(nom)s\n%(exception)s", \ + {'nom': obj.nom, 'exception': str(e)})) + return s + diff --git a/generator/oldCodes/generator_pyth.py b/generator/oldCodes/generator_pyth.py new file mode 100644 index 00000000..6a231111 --- /dev/null +++ b/generator/oldCodes/generator_pyth.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +""" + Ce module contient le plugin generateur de fichier au format pyth pour EFICAS. + + +""" +try : + from builtins import str + from builtins import object +except : pass + +import traceback +import types + +from Noyau import N_CR +from Accas import MCSIMP,MCFACT,MCList +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException + + +def entryPoint(): + """ + Retourne les informations necessaires pour le chargeur de plugins + + Ces informations sont retournees dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'pyth', + # La factory pour creer une instance du plugin + 'factory' : PythGenerator, + } + + +class PythGenerator(object): + """ + Ce generateur parcourt un objet de type MCFACT et produit + un fichier au format pyth + + L'acquisition et le parcours sont realises par la methode + generator.gener(objet_mcfact) + + L'ecriture du fichier au format ini par appel de la methode + generator.writefile(nom_fichier) + + Ses caracteristiques principales sont exposees dans des attributs + de classe : + - extensions : qui donne une liste d'extensions de fichier preconisees + + """ + # Les extensions de fichier preconisees + extensions=('.py','.comm') + + def __init__(self,cr=None): + # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard + if cr : + self.cr=cr + else: + self.cr=N_CR.CR(debut='CR generateur format ini', + fin='fin CR format ini') + # Le texte au format pyth est stocke dans l'attribut text + self.text='' + + def writefile(self,filename): + fp=open(filename,'w') + fp.write(self.text) + fp.close() + + def gener(self,obj,format='standard',config=None): + """ + Tous les mots-cles simples du niveau haut sont transformes en variables + + Tous les mots-cles facteurs sont convertis en dictionnaires + + Les mots-cles multiples ne sont pas traites + """ + s='' + if isinstance(obj,MCList): + if len(obj.data) > 1: + raise EficasException(tr("Pas supporte")) + else: + obj=obj.data[0] + + for mocle in obj.mc_liste: + if isinstance(mocle,MCList): + if len(mocle.data) > 1: + raise EficasException(tr("Pas supporte")) + else: + valeur=self.generMCFACT(mocle.data[0]) + s=s+"%s = %s\n" % (mocle.nom,valeur) + elif isinstance(mocle,MCFACT): + valeur=self.generMCFACT(mocle) + s=s+"%s = %s\n" % (mocle.nom,valeur) + elif isinstance(v,MCSIMP): + valeur = self.generMCSIMP(mocle) + s=s+"%s = %s\n" % (mocle.nom,valeur) + else: + self.cr.fatal("Entite inconnue ou interdite : "+repr(mocle)) + + self.text=s + return self.text + + def generMCFACT(self,obj): + """ + Cette methode convertit un mot-cle facteur + en une chaine de caracteres representative d'un dictionnaire + """ + s = '{' + for mocle in obj.mc_liste: + if isinstance(mocle,MCSIMP): + valeur = self.generMCSIMP(mocle) + s=s+"'%s' : %s,\n" % (mocle.nom,valeur) + elif isinstance(mocle,MCFACT): + valeur=self.generMCFACT(mocle) + s=s+"'%s' : %s,\n" % (mocle.nom,valeur) + else: + self.cr.fatal(tr("Entite inconnue ou interdite : %s. Elle est ignoree", repr(mocle))) + + s=s+'}' + return s + + def generMCSIMP(self,obj): + """ + Cette methode convertit un mot-cle simple en une chaine de caracteres + au format pyth + """ + try: + s="%s" % obj.valeur + except Exception as e : + self.cr.fatal(tr("Type de valeur non supporte par le format pyth : n %(exception)s", \ + {'nom': obj.nom, 'exception': str(e)})) + + + s="ERREUR" + return s + diff --git a/generator/oldCodes/generator_python6.py b/generator/oldCodes/generator_python6.py new file mode 100644 index 00000000..ac9fcf9c --- /dev/null +++ b/generator/oldCodes/generator_python6.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +""" + Ce module contient le plugin generateur de fichier au format + python pour EFICAS. + +""" +import traceback +import types,string,re + +from Noyau import N_CR +from Noyau.N_utils import repr_float +from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE +from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL +from Accas import GEOM,ASSD,MCNUPLET +from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM +from Formatage import Formatage + +import generator_python + +def entryPoint(): + """ + Retourne les informations nécessaires pour le chargeur de plugins + + Ces informations sont retournées dans un dictionnaire + """ + return { + # Le nom du plugin + 'name' : 'python6', + # La factory pour créer une instance du plugin + 'factory' : PythonGenerator, + } + + +class PythonGenerator(generator_python.PythonGenerator): + """ + Ce generateur parcourt un objet de type JDC et produit + un fichier au format python6 + + L'acquisition et le parcours sont réalisés par la méthode + generator.gener(objet_jdc,format) + + L'écriture du fichier au format python6 par appel de la méthode + generator.writefile(nom_fichier) + + Ses caractéristiques principales sont exposées dans des attributs + de classe : + - extensions : qui donne une liste d'extensions de fichier préconisées + + """ + # Les extensions de fichier préconisées + extensions=('.comm',) + + def generFORM_ETAPE(self,obj): + """ + Méthode particulière pour les objets de type FORMULE + """ + l=[] + nom = obj.get_nom() + if nom == '' : nom = 'sansnom' + l.append(nom + ' = FORMULE(') + for v in obj.mc_liste: + text=self.generator(v) + l.append(v.nom+'='+text) + l.append(');') + return l + + def gen_formule(self,obj): + """ + Méthode particuliere aux objets de type FORMULE + """ + try: + if obj.sd == None: + sdname='' + else: + sdname= self.generator(obj.sd) + except: + sdname='sansnom' + l=[] + label=sdname + ' = FORMULE(' + l.append(label) + for v in obj.mc_liste: + s='' + s= v.nom+':'+sdname+'('+v.valeur+')' + l.append(s) + if len(l) == 1: + l[0]=label+');' + else : + l.append(');') + return l