From e70d9830b3de736ca416ef7b0c0684527d891b42 Mon Sep 17 00:00:00 2001 From: cvs2git Date: Fri, 11 Oct 2002 13:00:11 +0000 Subject: [PATCH] This commit was manufactured by cvs2git to create tag 'V1_3b1'. Sprout from I26 2002-09-02 17:27:12 UTC eficas 'Version Aster 6.3.14' Cherrypick from master 2002-10-11 13:00:10 UTC eficas 'CCAR: mise a jour proc distrib': AIDE/__init__.py AIDE/aide_gui.py AIDE/aide_objets.py AIDE/index_aide.py Accas/A_ASSD.py Accas/A_AU_MOINS_UN.py Accas/A_A_CLASSER.py Accas/A_BLOC.py Accas/A_ENSEMBLE.py Accas/A_ETAPE.py Accas/A_EVAL.py Accas/A_EXCLUS.py Accas/A_FACT.py Accas/A_FORM.py Accas/A_FORM_ETAPE.py Accas/A_JDC.py Accas/A_JDC_CATA.py Accas/A_MACRO.py Accas/A_MACRO_ETAPE.py Accas/A_MCBLOC.py Accas/A_MCFACT.py Accas/A_MCLIST.py Accas/A_MCNUPLET.py Accas/A_MCSIMP.py Accas/A_NUPLET.py Accas/A_OPER.py Accas/A_PRESENT_ABSENT.py Accas/A_PRESENT_PRESENT.py Accas/A_PROC.py Accas/A_PROC_ETAPE.py Accas/A_SIMP.py Accas/A_UN_PARMI.py Accas/__init__.py Aster/Cata/Macro/macr_recal_ops.py Aster/Cata/Macro/macro_mode_meca_ops.py Aster/Cata/Macro/reca_algo.py Aster/Cata/Macro/reca_interp.py Aster/Cata/Macro/reca_message.py Aster/Cata/Macro/recal.py Aster/Cata/cata_STA6.py Aster/Cata/ops.py Aster/INSTALL Aster/LICENSE.TERMS Aster/README Aster/Tests/README Aster/Tests/Recette/efica01a.11 Aster/Tests/Recette/efica01a.com0 Aster/Tests/Recette/efica01a.comm Aster/Tests/err.comm Aster/Tests/err2.comm Aster/Tests/err3.comm Aster/Tests/torsion.comm Aster/alphasdist.py Aster/editeur.ini Aster/eficas_aster.py Aster/prefs.py Aster/properties.py Aster/sdist.py Descartes/cata_descartes.py Descartes/cata_descartes_new.py Descartes/editeur.ini Descartes/eficas_descartes.py Descartes/prefs.py Editeur/Interp.py Editeur/Objecttreeitem.py Editeur/__init__.py Editeur/analyse_catalogue.py Editeur/appli.py Editeur/autre_analyse_cata.py Editeur/browser.py Editeur/bureau.py Editeur/catabrowser.py Editeur/cataediteur.py Editeur/centerwindow.py Editeur/compobloc.py Editeur/compocomm.py Editeur/compocommandecomm.py Editeur/compofact.py Editeur/compoformule.py Editeur/compojdc.py Editeur/compomacro.py Editeur/compomclist.py Editeur/componiveau.py Editeur/componuplet.py Editeur/compooper.py Editeur/compoparam.py Editeur/compoparameval.py Editeur/compoproc.py Editeur/composimp.py Editeur/configuration.py Editeur/definition_cata.py Editeur/eficas.py Editeur/eficas_go.py Editeur/faq.py Editeur/fenetre_mc_inconnus.py Editeur/fontes.py Editeur/images.py Editeur/import_code.py Editeur/jdcdisplay.py Editeur/menubar.py Editeur/options.py Editeur/panels.py Editeur/readercata.py Editeur/splash.py Editeur/statusbar.py Editeur/toolbar.py Editeur/tooltip.py Editeur/treeitemincanvas.py Editeur/treewidget.py Editeur/uiinfo.py Editeur/utils.py Editeur/widgets.py Exemples/README Exemples/ex11/main.py Exemples/ex18/main.py Exemples/ex18/torsion.comm Extensions/__init__.py Extensions/commande_comm.py Extensions/commentaire.py Extensions/etape_niveau.py Extensions/interpreteur_formule.py Extensions/jdc.py Extensions/mcnuplet.py Extensions/niveau.py Extensions/nuplet.py Extensions/parametre.py Extensions/parametre_eval.py Extensions/pluginloader.py Ihm/I_ASSD.py Ihm/I_A_CLASSER.py Ihm/I_ENTITE.py Ihm/I_ETAPE.py Ihm/I_EXCLUS.py Ihm/I_FONCTION.py Ihm/I_FORM_ETAPE.py Ihm/I_JDC.py Ihm/I_JDC_CATA.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/__init__.py Installation/Doc_technique_install.doc Installation/README Installation/README_install Installation/install.py Minicode/cata_saturne.py Minicode/eficas_mini.py Minicode/prefs.py Noyau/N_ETAPE.py Noyau/N_JDC.py Noyau/N_MACRO.py Noyau/N_MACRO_ETAPE.py Noyau/N_MCBLOC.py Noyau/N_MCCOMPO.py Noyau/N_MCFACT.py Noyau/N_MCLIST.py Noyau/N_MCSIMP.py Noyau/N_OPER.py Noyau/N_PROC.py Noyau/properties.py Saturne/prefs.py Syrthes/cata_syrthes.py Syrthes/editeur.ini Syrthes/eficas_syrthes.py Syrthes/prefs.py Tools/__init__.py Validation/V_ETAPE.py Validation/V_MACRO_ETAPE.py Validation/V_MCCOMPO.py convert/Parserv5/Translate.py convert/Parserv5/__init__.py convert/Parserv5/conv.py convert/Parserv5/tables.py convert/Parserv5/tables.tag convert/__init__.py convert/convert_asterv5.py convert/convert_ini.py convert/convert_pyth.py convert/convert_python.py convert/parseur_python.py generator/Formatage.py generator/__init__.py generator/generator_aplat.py generator/generator_asterv5.py generator/generator_ini.py generator/generator_pyth.py generator/generator_python.py insercopyright.py --- AIDE/__init__.py | 12 + AIDE/aide_gui.py | 212 ++ AIDE/aide_objets.py | 76 + AIDE/index_aide.py | 24 + Accas/A_ASSD.py | 49 + Accas/A_AU_MOINS_UN.py | 19 + Accas/A_A_CLASSER.py | 19 + Accas/A_BLOC.py | 23 + Accas/A_ENSEMBLE.py | 19 + Accas/A_ETAPE.py | 20 +- Accas/A_EVAL.py | 19 + Accas/A_EXCLUS.py | 19 + Accas/A_FACT.py | 23 + Accas/A_FORM.py | 19 + Accas/A_FORM_ETAPE.py | 19 + Accas/A_JDC.py | 21 + Accas/A_JDC_CATA.py | 19 + Accas/A_MACRO.py | 23 + Accas/A_MACRO_ETAPE.py | 19 + Accas/A_MCBLOC.py | 19 + Accas/A_MCFACT.py | 19 + Accas/A_MCLIST.py | 19 + Accas/A_MCNUPLET.py | 19 + Accas/A_MCSIMP.py | 19 + Accas/A_NUPLET.py | 19 + Accas/A_OPER.py | 22 + Accas/A_PRESENT_ABSENT.py | 19 + Accas/A_PRESENT_PRESENT.py | 19 + Accas/A_PROC.py | 23 + Accas/A_PROC_ETAPE.py | 20 +- Accas/A_SIMP.py | 23 + Accas/A_UN_PARMI.py | 19 + Accas/__init__.py | 29 +- Aster/Cata/Macro/macr_recal_ops.py | 108 + Aster/Cata/Macro/macro_mode_meca_ops.py | 43 +- Aster/Cata/Macro/reca_algo.py | 142 + Aster/Cata/Macro/reca_interp.py | 174 ++ Aster/Cata/Macro/reca_message.py | 71 + Aster/Cata/Macro/recal.py | 373 +++ Aster/Cata/cata_STA6.py | 3583 +++++++++++++---------- Aster/Cata/ops.py | 4 +- Aster/INSTALL | 40 + Aster/LICENSE.TERMS | 21 + Aster/README | 2 + Aster/Tests/README | 8 + Aster/Tests/Recette/efica01a.11 | 21 + Aster/Tests/Recette/efica01a.com0 | 77 + Aster/Tests/Recette/efica01a.comm | 204 ++ Aster/Tests/err.comm | 16 + Aster/Tests/err2.comm | 19 + Aster/Tests/err3.comm | 60 + Aster/Tests/torsion.comm | 340 +++ Aster/alphasdist.py | 121 + Aster/editeur.ini | 25 +- Aster/eficas_aster.py | 20 + Aster/prefs.py | 67 + Aster/properties.py | 24 + Aster/sdist.py | 120 + Descartes/cata_descartes.py | 1655 +++++++++++ Descartes/cata_descartes_new.py | 3084 +++++++++++++++++++ Descartes/editeur.ini | 23 + Descartes/eficas_descartes.py | 41 + Descartes/prefs.py | 25 + Editeur/Interp.py | 20 +- Editeur/Objecttreeitem.py | 30 +- Editeur/__init__.py | 19 + Editeur/analyse_catalogue.py | 38 +- Editeur/appli.py | 106 +- Editeur/autre_analyse_cata.py | 107 + Editeur/browser.py | 19 + Editeur/bureau.py | 64 +- Editeur/catabrowser.py | 30 +- Editeur/cataediteur.py | 32 +- Editeur/centerwindow.py | 19 + Editeur/compobloc.py | 20 +- Editeur/compocomm.py | 20 +- Editeur/compocommandecomm.py | 20 +- Editeur/compofact.py | 20 +- Editeur/compoformule.py | 20 +- Editeur/compojdc.py | 22 +- Editeur/compomacro.py | 36 +- Editeur/compomclist.py | 50 +- Editeur/componiveau.py | 20 +- Editeur/componuplet.py | 24 +- Editeur/compooper.py | 40 +- Editeur/compoparam.py | 20 +- Editeur/compoparameval.py | 20 +- Editeur/compoproc.py | 26 +- Editeur/composimp.py | 307 +- Editeur/configuration.py | 37 +- Editeur/definition_cata.py | 20 +- Editeur/eficas.py | 24 +- Editeur/eficas_go.py | 19 + Editeur/faq.py | 19 + Editeur/fenetre_mc_inconnus.py | 51 +- Editeur/fontes.py | 19 + Editeur/images.py | 19 + Editeur/import_code.py | 19 + Editeur/jdcdisplay.py | 66 +- Editeur/menubar.py | 32 +- Editeur/options.py | 38 +- Editeur/panels.py | 86 +- Editeur/readercata.py | 100 +- Editeur/splash.py | 19 + Editeur/statusbar.py | 19 + Editeur/toolbar.py | 23 +- Editeur/tooltip.py | 54 + Editeur/treeitemincanvas.py | 21 +- Editeur/treewidget.py | 67 +- Editeur/uiinfo.py | 113 + Editeur/utils.py | 71 +- Editeur/widgets.py | 123 +- Exemples/README | 2 + Exemples/ex11/main.py | 10 + Exemples/ex18/main.py | 3 +- Exemples/ex18/torsion.comm | 340 +++ Extensions/__init__.py | 19 + Extensions/commande_comm.py | 37 +- Extensions/commentaire.py | 32 + Extensions/etape_niveau.py | 29 + Extensions/interpreteur_formule.py | 22 +- Extensions/jdc.py | 19 + Extensions/mcnuplet.py | 31 + Extensions/niveau.py | 19 + Extensions/nuplet.py | 23 +- Extensions/parametre.py | 23 +- Extensions/parametre_eval.py | 22 + Extensions/pluginloader.py | 19 + Ihm/I_ASSD.py | 23 + Ihm/I_A_CLASSER.py | 19 + Ihm/I_ENTITE.py | 33 + Ihm/I_ETAPE.py | 255 +- Ihm/I_EXCLUS.py | 22 +- Ihm/I_FONCTION.py | 41 + Ihm/I_FORM_ETAPE.py | 28 + Ihm/I_JDC.py | 164 +- Ihm/I_JDC_CATA.py | 19 + Ihm/I_MACRO_ETAPE.py | 90 +- Ihm/I_MCBLOC.py | 19 + Ihm/I_MCCOMPO.py | 96 +- Ihm/I_MCFACT.py | 19 + Ihm/I_MCLIST.py | 126 +- Ihm/I_MCSIMP.py | 168 +- Ihm/I_OBJECT.py | 55 + Ihm/I_PRESENT_ABSENT.py | 24 +- Ihm/I_PRESENT_PRESENT.py | 19 + Ihm/I_PROC_ETAPE.py | 55 + Ihm/I_REGLE.py | 19 + Ihm/I_UN_PARMI.py | 22 +- Ihm/__init__.py | 19 + Installation/Doc_technique_install.doc | Bin 0 -> 49152 bytes Installation/README | 30 + Installation/README_install | 40 + Installation/install.py | 949 ++++++ Minicode/cata_saturne.py | 324 +- Minicode/eficas_mini.py | 37 +- Minicode/prefs.py | 5 + Noyau/N_ETAPE.py | 50 +- Noyau/N_JDC.py | 4 +- Noyau/N_MACRO.py | 5 +- Noyau/N_MACRO_ETAPE.py | 17 +- Noyau/N_MCBLOC.py | 4 +- Noyau/N_MCCOMPO.py | 39 +- Noyau/N_MCFACT.py | 4 +- Noyau/N_MCLIST.py | 37 +- Noyau/N_MCSIMP.py | 43 +- Noyau/N_OPER.py | 5 +- Noyau/N_PROC.py | 5 +- Noyau/properties.py | 6 +- Saturne/prefs.py | 3 + Syrthes/cata_syrthes.py | 243 ++ Syrthes/editeur.ini | 22 + Syrthes/eficas_syrthes.py | 21 + Syrthes/prefs.py | 25 + Tools/__init__.py | 20 +- Validation/V_ETAPE.py | 61 +- Validation/V_MACRO_ETAPE.py | 36 +- Validation/V_MCCOMPO.py | 5 +- convert/Parserv5/Translate.py | 20 + convert/Parserv5/__init__.py | 20 + convert/Parserv5/conv.py | 27 +- convert/Parserv5/tables.py | 44 +- convert/Parserv5/tables.tag | 43 +- convert/__init__.py | 19 + convert/convert_asterv5.py | 19 + convert/convert_ini.py | 19 + convert/convert_pyth.py | 19 + convert/convert_python.py | 19 + convert/parseur_python.py | 20 +- generator/Formatage.py | 19 + generator/__init__.py | 19 + generator/generator_aplat.py | 23 +- generator/generator_asterv5.py | 25 +- generator/generator_ini.py | 19 + generator/generator_pyth.py | 19 + generator/generator_python.py | 34 +- insercopyright.py | 38 + 197 files changed, 16027 insertions(+), 2124 deletions(-) create mode 100644 AIDE/__init__.py create mode 100644 AIDE/aide_gui.py create mode 100644 AIDE/aide_objets.py create mode 100644 AIDE/index_aide.py create mode 100644 Accas/A_ASSD.py create mode 100644 Aster/Cata/Macro/macr_recal_ops.py create mode 100644 Aster/Cata/Macro/reca_algo.py create mode 100644 Aster/Cata/Macro/reca_interp.py create mode 100644 Aster/Cata/Macro/reca_message.py create mode 100644 Aster/Cata/Macro/recal.py create mode 100644 Aster/INSTALL create mode 100644 Aster/LICENSE.TERMS create mode 100644 Aster/README create mode 100644 Aster/Tests/README create mode 100755 Aster/Tests/Recette/efica01a.11 create mode 100755 Aster/Tests/Recette/efica01a.com0 create mode 100755 Aster/Tests/Recette/efica01a.comm create mode 100644 Aster/Tests/err.comm create mode 100644 Aster/Tests/err2.comm create mode 100644 Aster/Tests/err3.comm create mode 100755 Aster/Tests/torsion.comm create mode 100644 Aster/alphasdist.py create mode 100644 Aster/properties.py create mode 100644 Aster/sdist.py create mode 100755 Descartes/cata_descartes.py create mode 100755 Descartes/cata_descartes_new.py create mode 100644 Descartes/editeur.ini create mode 100755 Descartes/eficas_descartes.py create mode 100644 Descartes/prefs.py create mode 100644 Editeur/autre_analyse_cata.py create mode 100644 Editeur/uiinfo.py create mode 100755 Exemples/ex18/torsion.comm create mode 100644 Ihm/I_ASSD.py create mode 100644 Ihm/I_FONCTION.py create mode 100755 Installation/Doc_technique_install.doc create mode 100755 Installation/README create mode 100755 Installation/README_install create mode 100755 Installation/install.py create mode 100755 Syrthes/cata_syrthes.py create mode 100644 Syrthes/editeur.ini create mode 100755 Syrthes/eficas_syrthes.py create mode 100644 Syrthes/prefs.py create mode 100644 insercopyright.py diff --git a/AIDE/__init__.py b/AIDE/__init__.py new file mode 100644 index 00000000..e4fa4596 --- /dev/null +++ b/AIDE/__init__.py @@ -0,0 +1,12 @@ +import os +import aide_objets +import aide_gui + +def go(fichier=None,master=None): + if not fichier : + fichier=os.path.join(os.path.dirname(__file__),"index_aide.py") + index = aide_objets.INDEX(fichier) + index.build() + o = aide_gui.AIDE_GUI(index,master=master) + o.build() + return o diff --git a/AIDE/aide_gui.py b/AIDE/aide_gui.py new file mode 100644 index 00000000..50aa3ce6 --- /dev/null +++ b/AIDE/aide_gui.py @@ -0,0 +1,212 @@ +""" +Ce module génère l'IHM permettant d'accéder à l'aide en ligne d'une application(ex: EFICAS) +Il analyse l'objet index passé en argument et génére automatiquement en conséquence le menu +avec liens hyper texte +""" + +from Tkinter import * + +class AIDE_GUI: + """ + Classe définissant l'IHM de l'appli d'aide + """ + def __init__(self,objet,master=None): + self.objet = objet + self.master = master + self.init() + self.init_window() + self.init_frames() + self.init_buttons() + self.init_text() + + def init(self): + """ + Initialise les structures de données utlisées par l'objet + """ + self.padx = [0,0,0,0] + self.padx[0] = 0 + self.padx[1] = 30 + self.padx[2] = 50 + self.historique = [] + + def init_window(self): + """ + Initialise la fenêtre mère de l'appli + """ + fenetre = Toplevel() + if self.master : + self.fenetre = fenetre + else: + self.fenetre = fenetre.master + fenetre.destroy() + self.fenetre.title(self.objet.titre) + self.fenetre.geometry("700x700+50+50") + self.fenetre.resizable(1,1) + #self.fenetre.minsize(600,800) + #self.fenetre.maxsize(900,800) + self.fenetre.protocol("WM_DELETE_WINDOW",self.quit) + self.fenetre.update() + + def init_frames(self): + """ + Initialise les frames principales de l'appli + """ + self.frame1 = Frame(self.fenetre,relief='flat',bd=2) + self.frame2 = Frame(self.fenetre,relief='flat',bd=2) + self.frame1.grid(row=0,column=0,sticky='news') + self.frame2.grid(row=1,column=0,sticky='news') + self.fenetre.grid_columnconfigure(0,weight=1,minsize=0) + self.fenetre.grid_rowconfigure(1,minsize=30) + self.fenetre.grid_rowconfigure(0,weight=1,minsize=0) + + def init_buttons(self): + """ + Crée les boutons dans le bas de la fenêtre + """ + self.b_retour = Button(self.frame2,text = "Précédent",command=self.go_back) + self.b_retour.place(relx=0.33,rely=0.5,anchor='center') + Button(self.frame2,text="Fermer",command=self.quit).place(relx=0.66,rely=0.5,anchor='center') + + + def init_text(self): + """ + Construit le widget Text qui accueillera l'index et les fichiers + """ + self.scroll_v = Scrollbar(self.frame1) + self.scroll_v.grid(row=0,column=1,rowspan=2,sticky='nesw') + self.scroll_h = Scrollbar(self.frame1,orient='horizontal') + self.scroll_h.grid(row=1,column=0,rowspan=2,sticky='nesw') + self.canvas = Canvas(self.frame1, + bg='white', + relief='sunken', + scrollregion=(0,0,1000,1000), + yscrollcommand=self.scroll_v.set, + xscrollcommand=self.scroll_h.set) + self.canvas.grid(row=0,column=0,sticky='nesw') + self.scroll_v.configure(command=self.canvas.yview) + self.scroll_h.configure(command=self.canvas.xview) + self.frame1.grid_columnconfigure(0,weight=1,minsize=0) + self.frame1.grid_rowconfigure(0,weight=1,minsize=0) + self.frame1.grid_rowconfigure(1,minsize=10) + self.frame1.grid_columnconfigure(1,minsize=10) + + def build(self): + """ + Lance la construction dynamique de l'index en hyper texte + """ + self.frame1.update_idletasks() + largeur = self.frame1.winfo_width() + self.canvas.create_rectangle(0,0,1,1,outline='white') + self.y_courant = 0 + # Construction du titre encadré d'une bordure + titre = self.canvas.create_text(int(largeur/2),50,anchor='center',text=self.objet.titre,font="Helvetica 12 bold") + bbox = self.canvas.bbox(titre) + bordure = self.canvas.create_rectangle(bbox[0]-5,bbox[1]-5,bbox[2]+5,bbox[3]+5, + outline = 'black', + fill = 'grey75') + self.canvas.lower(bordure) + self.y_courant += 100 + # Construction des items + for item in self.objet.l_items : + self.build_item(item,0) + # Affichage du texte dans le fichier associé (s'il existe) + if self.objet.fichier : + try: + texte=open(self.objet.fichier,'r').read() + except: + texte="Fichier %s inaccessible" % self.objet.fichier + self.canvas.create_text(10,self.y_courant+20, + text=texte, + anchor='nw') + # Configuration dynamique des boutons + self.config_boutons() + # + self.canvas.config(scrollregion=self.canvas.bbox('all')) + + def config_boutons(self): + """ + Activation du bouton précédent s'il y a lieu + """ + if self.historique : + self.b_retour.config(state='normal') + else : + self.b_retour.config(state='disabled') + + def build_item(self,item,padx): + """ + Affiche l'item dans le menu décalé de padx + """ + l = Label(self.canvas, + text=item.titre, + foreground = 'blue', + background='white', + font="Helvetica 12 bold") + l.bind("",lambda e,s=self,o=item : s.update_objet(o)) + l.bind("",lambda e,s=self,o=l : s.select_label(o)) + l.bind("",lambda e,s=self,o=l : s.deselect_label(o)) + self.canvas.create_window(self.padx[padx],self.y_courant,window=l,anchor='w') + self.y_courant += 20 + for sub_item in item.l_items : + self.build_item(sub_item,padx+1) + + def show_file(self,fichier): + """ + Affiche le fichier passé en argument + """ + print "on veut afficher :",fichier + + def select_label(self,label): + """ + Callback invoqué lorsque le label passé en argument est sélectionné + """ + label.config(fg='white',bg='blue') + + def deselect_label(self,label): + """ + Callback invoqué lorsque le label passé en argument est sélectionné + """ + label.config(bg='white',fg='blue') + + def go_back(self): + """ + Affiche l'item précédent + """ + self.update_objet(self.historique[-1]) + self.historique = self.historique[0:-1] + # Configuration dynamique des boutons + self.config_boutons() + + def update_objet(self,new_objet): + """ + Cette méthode remplace l'objet courant par new_objet. + Elle vide le widget text et affiche le nouvel objet + """ + if not self.historique : + self.historique.append(self.objet) + elif new_objet is not self.historique[-1] : + self.historique.append(self.objet) + self.objet = new_objet + self.canvas.delete('all') + self.build() + + def quit(self): + """ + Ferme l'appli Aide + """ + self.fenetre.destroy() + + + + + + + + + + + + + + + + diff --git a/AIDE/aide_objets.py b/AIDE/aide_objets.py new file mode 100644 index 00000000..e8e923fd --- /dev/null +++ b/AIDE/aide_objets.py @@ -0,0 +1,76 @@ +""" +Ce module génère un objet INDEX par lecture et interprétation du fichier texte +le décrivant (ex : index_aide.py) +""" + +import os + +class ITEM_INDEX : + """ + Construit un objet ITEM_INDEX + """ + def __init__(self,t_item): + self.t_item = t_item + self.init() + + def init(self): + """ + Initialise les structures de données de l'item + """ + self.titre = "" + self.fichier = "" + self.l_items = [] + + def build(self): + """ + Construit les sous-items de self s'il y a lieu et retoruve le label et le fichier de l'item + dans le tuple + """ + self.titre = self.t_item[0] + self.fichier = self.t_item[1] + l_items = self.t_item[2] + if l_items : + for item in l_items : + o = ITEM_INDEX(item) + o.build() + self.l_items.append(o) + +class INDEX : + """ + Construit un objet INDEX (non graphique) à partir de l'interprétation du fichier d'index + (type index_aide.py) passé en argument + """ + def __init__(self,fichier_index): + self.fichier_index = fichier_index + self.init() + + def init(self): + """ + Initialise les structures de données propres à l'index + """ + self.titre = "" + self.fichier = None + self.l_items = [] + + def build(self): + """ + Lit le fichier index et l'interprète + """ + txt = open(self.fichier_index,'r').read() + d = {} + d['repertoire']=os.path.dirname(self.fichier_index) + #txt = "items ="+txt + #print txt + exec txt in d + items = d.get("items",None) + if items : + self.titre = items[0] + self.fichier = items[1] + l_items = items[2] + for item in l_items : + o = ITEM_INDEX(item) + o.build() + self.l_items.append(o) + + + diff --git a/AIDE/index_aide.py b/AIDE/index_aide.py new file mode 100644 index 00000000..9c040965 --- /dev/null +++ b/AIDE/index_aide.py @@ -0,0 +1,24 @@ +""" +Contient la description des fichiers d'aide et leur structuration + +chaque panneau est un tuple de 3 éléments : + +- élément 1 : titre de la page +- élément 2 : URL du fichier à afficher quand on visualise cette page d'aide ou None si aucun +- élément 3 : tuple contenant les sous-panneaux de ce panneau (tuple de 3-tuples) ou None si aucun + +La variable repertoire est initialisee avec le chemin du repertoire local +""" + +import os + +items =("Aide en ligne EFICAS",None, + ( + ("FAQs",os.path.join(repertoire,"..","Editeur","faqs.txt"),None), + ("Install",os.path.join(repertoire,"..","INSTALL"), + ( + ("Procedure d'installation",os.path.join(repertoire,"..","INSTALL"),None), + ) + ), + ), + ) diff --git a/Accas/A_ASSD.py b/Accas/A_ASSD.py new file mode 100644 index 00000000..b9661c45 --- /dev/null +++ b/Accas/A_ASSD.py @@ -0,0 +1,49 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + +from Ihm import I_ASSD +from Ihm import I_FONCTION +from Noyau import N_ASSD +from Noyau import N_GEOM +from Noyau import N_FONCTION +from Noyau import N_CO + +# On ajoute la classe ASSD dans l'héritage multiple pour recréer +# une hiérarchie d'héritage identique à celle de Noyau +# pour faire en sorte que isinstance(o,ASSD) marche encore après +# dérivation + +class ASSD(N_ASSD.ASSD,I_ASSD.ASSD):pass + +class assd(N_ASSD.assd,I_ASSD.ASSD,ASSD):pass + +class FONCTION(N_FONCTION.FONCTION,I_FONCTION.FONCTION,ASSD): + def __init__(self,etape=None,sd=None,reg='oui'): + N_FONCTION.FONCTION.__init__(self,etape=etape,sd=sd,reg=reg) + I_FONCTION.FONCTION.__init__(self,etape=etape,sd=sd,reg=reg) + +class fonction(N_FONCTION.fonction,I_FONCTION.fonction,ASSD): + def __init__(self,etape=None,sd=None,reg='oui'): + N_FONCTION.fonction.__init__(self,etape=etape,sd=sd,reg=reg) + I_FONCTION.fonction.__init__(self,etape=etape,sd=sd,reg=reg) + +class GEOM(N_GEOM.GEOM,I_ASSD.ASSD,ASSD):pass +class geom(N_GEOM.geom,I_ASSD.ASSD,ASSD):pass +class CO(N_CO.CO,I_ASSD.ASSD,ASSD):pass diff --git a/Accas/A_AU_MOINS_UN.py b/Accas/A_AU_MOINS_UN.py index d7c525b0..eb194670 100644 --- a/Accas/A_AU_MOINS_UN.py +++ b/Accas/A_AU_MOINS_UN.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_AU_MOINS_UN from Ihm import I_REGLE diff --git a/Accas/A_A_CLASSER.py b/Accas/A_A_CLASSER.py index c3b32deb..b522b2cd 100644 --- a/Accas/A_A_CLASSER.py +++ b/Accas/A_A_CLASSER.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_A_CLASSER from Ihm import I_A_CLASSER diff --git a/Accas/A_BLOC.py b/Accas/A_BLOC.py index 5b341d6c..668c9395 100644 --- a/Accas/A_BLOC.py +++ b/Accas/A_BLOC.py @@ -1,6 +1,29 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_BLOC from Ihm import I_ENTITE import A_MCBLOC class BLOC(N_BLOC.BLOC,I_ENTITE.ENTITE): class_instance=A_MCBLOC.MCBLOC + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_BLOC.BLOC.__init__(self,*tup,**args) + diff --git a/Accas/A_ENSEMBLE.py b/Accas/A_ENSEMBLE.py index 6675920b..e9ebac78 100644 --- a/Accas/A_ENSEMBLE.py +++ b/Accas/A_ENSEMBLE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_ENSEMBLE from Ihm import I_REGLE diff --git a/Accas/A_ETAPE.py b/Accas/A_ETAPE.py index cfd20bd9..6ba5b7e9 100644 --- a/Accas/A_ETAPE.py +++ b/Accas/A_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_ETAPE from Validation import V_ETAPE from Ihm import I_ETAPE @@ -8,4 +27,3 @@ class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE, # Pas de constructeur pour B_ETAPE.ETAPE N_ETAPE.ETAPE.__init__(self,oper,reuse,args) V_ETAPE.ETAPE.__init__(self) - I_ETAPE.ETAPE.__init__(self) diff --git a/Accas/A_EVAL.py b/Accas/A_EVAL.py index dff258a9..ab40f123 100644 --- a/Accas/A_EVAL.py +++ b/Accas/A_EVAL.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_EVAL class EVAL(N_EVAL.EVAL): diff --git a/Accas/A_EXCLUS.py b/Accas/A_EXCLUS.py index 5473d01a..5bbf943e 100644 --- a/Accas/A_EXCLUS.py +++ b/Accas/A_EXCLUS.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_EXCLUS from Ihm import I_EXCLUS diff --git a/Accas/A_FACT.py b/Accas/A_FACT.py index d40a9c59..00da6181 100644 --- a/Accas/A_FACT.py +++ b/Accas/A_FACT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_FACT from Ihm import I_ENTITE import A_MCFACT @@ -6,3 +25,7 @@ import A_MCLIST class FACT(N_FACT.FACT,I_ENTITE.ENTITE): class_instance=A_MCFACT.MCFACT list_instance=A_MCLIST.MCList + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_FACT.FACT.__init__(self,*tup,**args) + diff --git a/Accas/A_FORM.py b/Accas/A_FORM.py index 132a24b9..ea61db3e 100644 --- a/Accas/A_FORM.py +++ b/Accas/A_FORM.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_FORM from Ihm import I_ENTITE import A_FORM_ETAPE diff --git a/Accas/A_FORM_ETAPE.py b/Accas/A_FORM_ETAPE.py index 9c6483bd..af4d7cf0 100644 --- a/Accas/A_FORM_ETAPE.py +++ b/Accas/A_FORM_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_FORM_ETAPE from Validation import V_MACRO_ETAPE from Ihm import I_FORM_ETAPE diff --git a/Accas/A_JDC.py b/Accas/A_JDC.py index b709e01f..9216fe5a 100644 --- a/Accas/A_JDC.py +++ b/Accas/A_JDC.py @@ -1,9 +1,30 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_JDC from Validation import V_JDC from Extensions import jdc from Ihm import I_JDC class JDC(jdc.JDC,I_JDC.JDC,V_JDC.JDC,N_JDC.JDC): + from A_ASSD import CO,assd + def __init__(self,*pos,**args): N_JDC.JDC.__init__(self,*pos,**args) V_JDC.JDC.__init__(self) diff --git a/Accas/A_JDC_CATA.py b/Accas/A_JDC_CATA.py index 0a810dc3..10cf409e 100644 --- a/Accas/A_JDC_CATA.py +++ b/Accas/A_JDC_CATA.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_JDC_CATA import A_JDC from Ihm import I_JDC_CATA diff --git a/Accas/A_MACRO.py b/Accas/A_MACRO.py index 311769f8..c4e841a2 100644 --- a/Accas/A_MACRO.py +++ b/Accas/A_MACRO.py @@ -1,6 +1,29 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MACRO from Ihm import I_ENTITE import A_MACRO_ETAPE class MACRO(N_MACRO.MACRO,I_ENTITE.ENTITE): class_instance=A_MACRO_ETAPE.MACRO_ETAPE + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_MACRO.MACRO.__init__(self,*tup,**args) + diff --git a/Accas/A_MACRO_ETAPE.py b/Accas/A_MACRO_ETAPE.py index 29463bd5..9613ebb0 100644 --- a/Accas/A_MACRO_ETAPE.py +++ b/Accas/A_MACRO_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MACRO_ETAPE from Validation import V_MACRO_ETAPE from Ihm import I_MACRO_ETAPE diff --git a/Accas/A_MCBLOC.py b/Accas/A_MCBLOC.py index 3f931840..963ae8f1 100644 --- a/Accas/A_MCBLOC.py +++ b/Accas/A_MCBLOC.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MCBLOC from Validation import V_MCBLOC from Ihm import I_MCBLOC diff --git a/Accas/A_MCFACT.py b/Accas/A_MCFACT.py index 96d172a6..5a1b2a96 100644 --- a/Accas/A_MCFACT.py +++ b/Accas/A_MCFACT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MCFACT from Validation import V_MCFACT from Ihm import I_MCFACT diff --git a/Accas/A_MCLIST.py b/Accas/A_MCLIST.py index e3fba40a..d2874c59 100644 --- a/Accas/A_MCLIST.py +++ b/Accas/A_MCLIST.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MCLIST from Validation import V_MCLIST from Ihm import I_MCLIST diff --git a/Accas/A_MCNUPLET.py b/Accas/A_MCNUPLET.py index 49bfa75b..76258bae 100644 --- a/Accas/A_MCNUPLET.py +++ b/Accas/A_MCNUPLET.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Extensions import mcnuplet from Ihm import I_MCCOMPO diff --git a/Accas/A_MCSIMP.py b/Accas/A_MCSIMP.py index 35854885..b517eb65 100644 --- a/Accas/A_MCSIMP.py +++ b/Accas/A_MCSIMP.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_MCSIMP from Validation import V_MCSIMP from Ihm import I_MCSIMP diff --git a/Accas/A_NUPLET.py b/Accas/A_NUPLET.py index 1d19c2c0..6c1c5f4c 100644 --- a/Accas/A_NUPLET.py +++ b/Accas/A_NUPLET.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Extensions import nuplet import A_MCLIST diff --git a/Accas/A_OPER.py b/Accas/A_OPER.py index f7c6107b..b1076cb8 100644 --- a/Accas/A_OPER.py +++ b/Accas/A_OPER.py @@ -1,6 +1,28 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_OPER from Ihm import I_ENTITE import A_ETAPE class OPER(N_OPER.OPER,I_ENTITE.ENTITE): class_instance=A_ETAPE.ETAPE + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_OPER.OPER.__init__(self,*tup,**args) diff --git a/Accas/A_PRESENT_ABSENT.py b/Accas/A_PRESENT_ABSENT.py index ac2b0b30..fc77397c 100644 --- a/Accas/A_PRESENT_ABSENT.py +++ b/Accas/A_PRESENT_ABSENT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_PRESENT_ABSENT from Ihm import I_PRESENT_ABSENT diff --git a/Accas/A_PRESENT_PRESENT.py b/Accas/A_PRESENT_PRESENT.py index 96f52fd6..bb14edfb 100644 --- a/Accas/A_PRESENT_PRESENT.py +++ b/Accas/A_PRESENT_PRESENT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_PRESENT_PRESENT from Ihm import I_PRESENT_PRESENT diff --git a/Accas/A_PROC.py b/Accas/A_PROC.py index d0b56b07..18abbda4 100644 --- a/Accas/A_PROC.py +++ b/Accas/A_PROC.py @@ -1,6 +1,29 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_PROC from Ihm import I_ENTITE import A_PROC_ETAPE class PROC(N_PROC.PROC,I_ENTITE.ENTITE): class_instance=A_PROC_ETAPE.PROC_ETAPE + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_PROC.PROC.__init__(self,*tup,**args) + diff --git a/Accas/A_PROC_ETAPE.py b/Accas/A_PROC_ETAPE.py index 9d7c0f89..9f0911ae 100644 --- a/Accas/A_PROC_ETAPE.py +++ b/Accas/A_PROC_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_PROC_ETAPE from Validation import V_PROC_ETAPE from Ihm import I_PROC_ETAPE @@ -8,4 +27,3 @@ class PROC_ETAPE(I_PROC_ETAPE.PROC_ETAPE, def __init__(self,oper=None,args={}): N_PROC_ETAPE.PROC_ETAPE.__init__(self,oper=oper,args=args) V_PROC_ETAPE.PROC_ETAPE.__init__(self) - I_PROC_ETAPE.PROC_ETAPE.__init__(self) diff --git a/Accas/A_SIMP.py b/Accas/A_SIMP.py index 3cafb492..2af12a7f 100644 --- a/Accas/A_SIMP.py +++ b/Accas/A_SIMP.py @@ -1,6 +1,29 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_SIMP from Ihm import I_ENTITE import A_MCSIMP class SIMP(N_SIMP.SIMP,I_ENTITE.ENTITE): class_instance=A_MCSIMP.MCSIMP + def __init__(self,*tup,**args): + I_ENTITE.ENTITE.__init__(self) + N_SIMP.SIMP.__init__(self,*tup,**args) + diff --git a/Accas/A_UN_PARMI.py b/Accas/A_UN_PARMI.py index ee7a5058..55b281d3 100644 --- a/Accas/A_UN_PARMI.py +++ b/Accas/A_UN_PARMI.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_REGLE from Validation import V_UN_PARMI from Ihm import I_UN_PARMI diff --git a/Accas/__init__.py b/Accas/__init__.py index b61776b3..f3930531 100644 --- a/Accas/__init__.py +++ b/Accas/__init__.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce package contient les classes qui seront effectivement utilisées dans les applications. C'est dans ce package que sont réalisées les combinaisons de classes de base @@ -39,11 +58,11 @@ from A_EXCLUS import EXCLUS from A_ENSEMBLE import ENSEMBLE from A_A_CLASSER import A_CLASSER -from Noyau.N_ASSD import ASSD,assd -from Noyau.N_GEOM import GEOM,geom -from Noyau.N_FONCTION import FONCTION -from Noyau.N_FONCTION import fonction -from Noyau.N_CO import CO +from A_ASSD import ASSD,assd +from A_ASSD import GEOM,geom +from A_ASSD import FONCTION, fonction +from A_ASSD import CO + from Noyau.N__F import _F from Noyau.N_Exception import AsException diff --git a/Aster/Cata/Macro/macr_recal_ops.py b/Aster/Cata/Macro/macr_recal_ops.py new file mode 100644 index 00000000..d2115425 --- /dev/null +++ b/Aster/Cata/Macro/macr_recal_ops.py @@ -0,0 +1,108 @@ +#@ MODIF macr_recal_ops Macro DATE 24/09/2002 AUTEUR PABHHHH N.TARDIEU +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# ====================================================================== + +def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, LIST_PARA, RESU_CALC, + ITER_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI, + GRAPHIQUE, **args ): + """Macro commande réalisant le recalage de modèles Aster""", + # Initialisation du compteur d'erreurs + import string + import Numeric + import copy + import types + import Macro + import Cata + from Cata import cata + from Macro.recal import gestion,transforme_list_Num,EXTRACT,calcul_F + from Macro.reca_message import * + from Macro.reca_algo import * + from Macro.reca_interp import * + ier=0 + # La macro compte pour 1 dans l'execution des commandes + self.icmd=1 + self.DeclareOut('nomres',self.sd) + + # Gestion des erreurs de syntaxe + texte_erreur = gestion(UNITE_ESCL,LIST_PARA,RESU_CALC,RESU_EXP) + if (texte_erreur != ""): + ier=ier+1 + self.cr.fatal(texte_erreur) + + # On declare toutes les commandes Aster + for k,v in cata.__dict__.items() : + if type(v)==types.InstanceType: + if v.__class__.__name__ in ('OPER','MACRO'): + self.current_context[k]= v + self.current_context['_F']=cata.__dict__['_F'] + self.g_context['EXTRACT']=EXTRACT + + #initialisation + iter = 0 + para,val,borne_inf,borne_sup = transforme_list_Num(LIST_PARA,RESU_EXP) + val_init = copy.copy(val) + L_init = calcul_F(self,UNITE_ESCL,para,val,RESU_CALC) + #instance de la classe gérant l'affichage des resultats du calcul de l'optimisation + Mess = Message(para,RESU_EXP,copy.copy(val_init),UNITE_RESU) + #instances des classes pour le calcul de l'erreur et le dimensionnemnt/adim + Simul = Sim_exp(RESU_EXP) + Dim = Dimension(copy.copy(val_init),para) + L_J_init,erreur = Simul.multi_interpole(L_init, RESU_CALC) + J_init = Simul.norme_J(copy.copy(L_J_init),copy.copy(L_J_init),UNITE_RESU) + J = J_init + A = Simul.sensibilite(self,UNITE_ESCL,L_init,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU) + A = Dim.adim_sensi(A) + l = lambda_init(Numeric.matrixmultiply(Numeric.transpose(A),A)) + gradient_init =calcul_gradient(A,erreur) #utile pour le test de convergence, on prend les valeurs dimensionner + residu = test_convergence(gradient_init,erreur,A) + Mess.affiche_result_iter(iter,J,val,residu,UNITE_RESU) + + #boucle principale de l'algo + epsilon = 10.*RESI_GLOB_RELA + while((residu > RESI_GLOB_RELA) & (iter borne_sup[i])): + test = 0 + if (test == 0): + l= l*2 + return test,l + +def actualise_lambda(l,new_J,J): + if (new_J points[n-1][0] ) : + return 0. + i = 1 + while M[0] > points[i][0] : + i = i+1 + y_proj_vert = (M[0]-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1] + d = (M[1] - y_proj_vert) + # Attention: la distance n'est pas normalisée + # Attention: problème si points[0][0] = points[1][0] = M[0] + # Attention: problème si M[1] = 0 + return d + + +# La Fonction Interpole ,interpole une et une seule F_calc sur F_exp et renvoie l'erreur seulement + def Interpole (self, F_calc,experience) : #ici on passe en argument "une" experience + n = 0 + resu_num = F_calc + n_exp = len(experience) # nombre de points sur la courbe expérimentale num.i + stockage = Numeric.ones(n_exp, Numeric.Float) # matrice de stockage des erreurs en chaque point + for j in xrange(n_exp) : + d = self.DistVertAdimPointLigneBrisee(experience[j], resu_num) + try: + stockage[n] = d/experience[j][1] + except ZeroDivisionError: + stockage[n] = d + n = n + 1 # on totalise le nombre de points valables + err = Numeric.ones(n, Numeric.Float) + for i in xrange(n) : + err[i] = stockage[i] + return err + + #cette fonction appelle la fonction interpole et retourne les sous fonctionnelle J et l'erreur + def multi_interpole(self,L_F, reponses): #on interpole toutes les reponses une à une en appelent la methode interpole + L_erreur=[] + for i in range(len(reponses)): + err = self.Interpole(L_F[i],self.resu_exp[i]) + L_erreur.append(err) + #on transforme L_erreur en tab num + dim=[] + J=[] + for i in range(len(L_erreur)): + dim.append(len(L_erreur[i])) + dim_totale = Numeric.sum(dim) + L_J = self.calcul_J(L_erreur) + a=0 + erreur = Numeric.zeros((dim_totale),Numeric.Float) + for n in range(len(L_erreur)): + for i in range(dim[n]): + erreur[i+a] = L_erreur[n][i] + a = dim[n] + del(L_erreur) #on vide la liste puisqu'on n'en a plus besoin + return L_J,erreur + + #cette fonction retourne seulement l'erreur ,je l'appelle dans la methode sensibilité + #on interpole toutes les reponses une à une en appelent la methode interpole + def multi_interpole_sensib(self,L_F,reponses): + L_erreur=[] + for i in range(len(reponses)): + err = self.Interpole(L_F[i],self.resu_exp[i]) + L_erreur.append(err) + #on transforme L_erreur en tab num + return L_erreur + + def calcul_J(self,L_erreur): + L_J = [] + for i in range(len(L_erreur)): + total = 0 + for j in range(len(L_erreur[i])): + total = total + L_erreur[i][j]**2 + L_J.append(total) + return L_J + + def norme_J(self,L_J_init,L_J,unite_resu): + #cette fonction calcul une valeur normée de J + for i in range(len(L_J)): + try: + L_J[i] = L_J[i]/L_J_init[i] + except ZeroDivisionError: + fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a') + fic.write('\012 Problème de division par zéro dans la normalisation de la fonctionnelle.') + fic.write('\012 Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :'+ str(L_J_init)) + fic.close() + FIN() + + J = Numeric.sum(L_J) + J = J/len(L_J) + return J + + def sensibilite(self,objet,UL,F,val,para,reponses,pas,unite_resu): + F_interp=self.multi_interpole_sensib(F, reponses) #F_interp est une liste contenant des tab num des reponses interpolés + L_A=[] #creation de la liste des matrices de sensibilités + for i in range(len(reponses)): + L_A.append(Numeric.zeros((len(self.resu_exp[i]),len(val)),Numeric.Float) ) + #calcul de la sensibilité + fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a') + fic.write('\012Calcul de la sensibilité par rapport à :') + fic.close() + for k in range(len(val)): #pour une colone de A + h = val[k]*pas + val[k] = val[k] + h + F_perturbe = calcul_F(objet,UL,para,val,reponses) + fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a') + fic.write(' '+para[k]) + fic.close() + F_perturbe_interp =self.multi_interpole_sensib(F_perturbe, reponses) + val[k] = val[k] - h + for j in range(len(reponses)): + for i in range(len(self.resu_exp[j])): + try: + L_A[j][i,k] = -1*(F_interp[j][i] - F_perturbe_interp[j][i])/h + except ZeroDivisionError: + fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a') + fic.write('\012 Probleme de division par zéro dans le calcul de la matrice de sensiblité') + fic.write('\012 Le parametre '+para[k]+'est nul ou plus petit que la précision machine') + fic.close() + FIN() + #on construit la matrice de sensiblité sous forme d'un tab num + dim =[] + for i in range(len(L_A)): + dim.append(len(L_A[i])) + dim_totale = Numeric.sum(dim) + a=0 + A = Numeric.zeros((dim_totale,len(val)),Numeric.Float) + for n in range(len(L_A)): + for k in range(len(val)): + for i in range(dim[n]): + A[i+a][k] = L_A[n][i,k] + a=dim[n] + del(L_A) #on ecrase tout ce qu'il y a dans L_A puisqu'on n'en a plus besoin + return A + + + diff --git a/Aster/Cata/Macro/reca_message.py b/Aster/Cata/Macro/reca_message.py new file mode 100644 index 00000000..8068d9ef --- /dev/null +++ b/Aster/Cata/Macro/reca_message.py @@ -0,0 +1,71 @@ +#@ MODIF reca_message Macro DATE 24/09/2002 AUTEUR PABHHHH N.TARDIEU +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# ====================================================================== + +import os + +#=========================================================================================== +# AFFICHAGE DES MESSAGES + +class Message : + """classe gérant l'affichage des messages concernant le déroulement de l'optmisation """ + #Constructeur de la classe + def __init__(self,para,val_init,resu_exp,ul_out): + self.nom_para = para + self.res_exp = resu_exp + res=open(os.getcwd()+'/fort.'+str(ul_out),'a') + res.write(' MACR_RECAL V1.0 \012\012\012') + res.close() + + + def affiche_result_iter(self,iter,J,val,residu,ul_out): + res=open(os.getcwd()+'/fort.'+str(ul_out),'a') + res.write('\012=======================================================\012') + res.write('Iteration '+str(iter)+' :\012') + res.write('\012=> Fonctionnelle = '+str(J)) + res.write('\012=> Résidu = '+str(residu)) + res.write('\012=> Paramètres = ') + for i in range(len(val)): + res.write('\012 '+ self.nom_para[i]+' = '+str(val[i]) ) + res.write('\012=======================================================\012\012') + res.close() + + def affiche_etat_final_convergence(self,iter,max_iter,prec,residu,ul_out): + res=open(os.getcwd()+'/fort.'+str(ul_out),'a') + if ((iter < max_iter) or (residu < prec)): + res.write('\012=======================================================\012') + res.write(' CONVERGENCE ATTEINTE ') + res.write('\012=======================================================\012') + res.close() + else: + res.write("\012=======================================================\012") + res.write(' CONVERGENCE NON ATTEINTE ') + res.write("\012 Le nombre maximal d'itération ("+str(max_iter)+") a été dépassé") + res.write('\012=======================================================\012') + res.close() + def affiche_calcul_etat_final(self,Hessien,valeurs_propres,vecteurs_propres,ul_out): + res=open(os.getcwd()+'/fort.'+str(ul_out),'a') + res.write('\012Hessien adimensionnel de la fonctionnelle cout: \012') + res.write(str(Hessien)) + res.write('\012\012Valeurs propres du Hessien:\012') + res.write(str( valeurs_propres)) + res.write('\012\012Vecteurs propres associés:\012') + res.write(str(vecteurs_propres)) + + + diff --git a/Aster/Cata/Macro/recal.py b/Aster/Cata/Macro/recal.py new file mode 100644 index 00000000..70932cd1 --- /dev/null +++ b/Aster/Cata/Macro/recal.py @@ -0,0 +1,373 @@ +#@ MODIF recal Macro DATE 24/09/2002 AUTEUR PABHHHH N.TARDIEU +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# ====================================================================== + + +import string +import copy +import Numeric +import types +import Gnuplot +import Cata +from Cata.cata import * +from Accas import _F + +import os + + +#=========================================================================================== +# DIVERS UTILITAIRES POUR LA MACRO + +#transforme_list_Num tranforme transforme les donneés entrées par l'utilsateur en tableau Numeric +def transforme_list_Num(parametres,res_exp): + dim_para = len(parametres) #donne le nb de parametres + val_para = Numeric.zeros(dim_para,Numeric.Float) + borne_inf = Numeric.zeros(dim_para,Numeric.Float) + borne_sup = Numeric.zeros(dim_para,Numeric.Float) + para = [] + for i in range(dim_para): + para.append(parametres[i][0]) + val_para[i] = parametres[i][1] + borne_inf[i] = parametres[i][2] + borne_sup[i] = parametres[i][3] + + return para,val_para,borne_inf,borne_sup + +def mes_concepts(list_concepts=[],base=None): + # Fonction qui liste les concepts créés + for e in base.etapes: + if e.__class__.__name__ == 'MACRO_ETAPE': + list_concepts=list(mes_concepts(list_concepts=list_concepts,base=e)) + elif e.sd != None: + nom_concept=e.sd.get_name() + if not(nom_concept in list_concepts): + list_concepts.append( nom_concept ) + return tuple(list_concepts) + + +def detr_concepts(objet): + liste_concepts=mes_concepts(base=objet.parent) + for e in liste_concepts: + nom = string.strip(e) + DETRUIRE( CONCEPT =objet.g_context['_F'](NOM = nom)) + if objet.jdc.g_context.has_key(nom) : del objet.jdc.g_context[nom] + del(liste_concepts) + + +def calcul_F(objet,UL,para,val,reponses): + fic = open('fort.'+str(UL),'r') + #On stocke le contenu de fort.UL dans la variable fichier qui est un string + fichier=fic.read() + #On stocke le contenu initial de fort.UL dans la variable fichiersauv + fichiersauv=copy.copy(fichier) + fic.close() + + #L est une liste ou l'on va stocker le fichier modifié + #idée générale :on délimite des 'blocs' dans fichier + #on modifie ou non ces blocs suivant les besoins + #on ajoute ces blocs dans la liste L + L=[] + + try: + #cherche l'indice de DEBUT() + index_deb=string.index(fichier,'DEBUT(') + while( fichier[index_deb]!='\012'): + index_deb=index_deb+1 + fichier = fichier[index_deb+1:] + #on restreind fichier en enlevant 'DEBUT();' + except : + #on va dans l'except si on a modifié le fichier au moins une fois + pass + + try: + #cherche l'indice de FIN() + index_fin = string.index(fichier,'FIN(') + fichier = fichier[:index_fin] + #on restreind fichier en enlevant 'FIN();' + except : + #on va dans l'except si on a modifié le fichier au moins une fois + index_retour = string.index(fichier,'RETOUR') + fichier=fichier[:index_retour] + #-------------------------------------------------------------------------------- + #on cherche à délimiter le bloc des parametres dans le fichier + #Tout d'abord on cherche les indices d'apparition des paras dans le fichier + #en effet l'utilisateur n'est pas obligé de rentrer les paras dans optimise + #avec le meme ordre de son fichier de commande + index_para = Numeric.zeros(len(para)) + for i in range(len(para)): + index_para[i] = string.index(fichier,para[i]) + #On range les indices par ordre croissant afin de déterminer + #les indice_max et indice_min + index_para = Numeric.sort(index_para) + index_first_para = index_para[0] + index_last_para = index_para[len(index_para)-1] + + + #on va délimiter les blocs intermédiaires entre chaque para "utiles" à l'optimsation + bloc_inter ='\012' + for i in range(len(para)-1): + j = index_para[i] + k = index_para[i+1] + while(fichier[j]!= '\012'): + j=j+1 + bloc_inter=bloc_inter + fichier[j:k] + '\012' + + #on veut se placer sur le premier retour chariot que l'on trouve sur la ligne du dernier para + i = index_last_para + while(fichier[i] != '\012'): + i = i + 1 + index_last_para = i + #on délimite les blocs suivants: + pre_bloc = fichier[:index_first_para] #fichier avant premier parametre + post_bloc = fichier[ index_last_para+ 1:] #fichier après dernier parametre + + #on ajoute dans L tous ce qui est avant le premier paramètre + L.append(pre_bloc) + #On ajoute à L tous ce qui est entre les parametres + L.append(bloc_inter) + #On ajoute la nouvelle valeur des parametres + dim_para=len(para) + for j in range(dim_para): + L.append(para[j]+'='+str(val[j]) + ';' + '\012') + + L.append(post_bloc) + #-------------------------------------------------------------------------------- + #on va ajouter la fonction EXTRACT + #et on stocke les réponses calculées dans la liste Lrep + #qui va etre retournée par la fonction calcul_F + objet.g_context['Lrep'] = [] + L.append('Lrep=[]'+'\012') + for i in range(len(reponses)): + L.append('F = EXTRACT('+str(reponses[i][0])+','+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\012') + L.append('Lrep.append(F)'+'\012') + #on ajoute à RETOUR + L.append('RETOUR();\012') + + #ouverture du fichier fort.3 et mise a jour de celui ci + x=open('fort.'+str(UL),'w') + x.writelines('from Accas import _F \012from Cata.cata import * \012') + x.writelines(L) + x.close() + del(L) + del(pre_bloc) + del(post_bloc) + del(fichier) + + INCLUDE(UNITE = str(UL)) + detr_concepts(objet) + # on remet le fichier dans son etat initial + x=open('fort.'+str(UL),'w') + x.writelines(fichiersauv) + x.close() + return objet.g_context['Lrep'] + +#---------------------------------------------------------- + + +def EXTRACT(Table,Para,Champ): +# Definition des variables + #Table = reponse[0] + #Para = reponse[1] + #Champ = reponse[2] + Result = [[None]*2] + nb_temp = 0 +# Boucle de lecture sur les temps + while 1: +# Si on n'a pas lu tous les temps + try: +# alors on lit les 2 champs abscisse et ordonnee + Result[nb_temp][0] = Table[Para,nb_temp+1] + Result[nb_temp][1] = Table[Champ,nb_temp+1] + nb_temp = nb_temp + 1 +# on ajoute une dimension temporelle supplementaire au resultat + Result.append([None]*2) +# Si on a lu tous les temps alors on sort de la boucle + except KeyError: + break +# on renvoie le resultat en fin + Rep = Result[0:nb_temp] + F=Numeric.zeros((len(Rep),2),Numeric.Float) #on transforme Rep en array Numeric + for i in range(len(Rep)): + for j in range(2) : + F[i][j] = Rep[i][j] + del(Rep) + del(Result) + return F + + +#------------------------------------------- +def graphique(L_F,res_exp,reponses,iter,UL_out,interactif): + graphe=[] + impr=Gnuplot.Gnuplot() + Gnuplot.GnuplotOpts.prefer_inline_data=1 + impr('set data style linespoints') + impr('set grid') + impr('set pointsize 2.') + impr('set terminal postscript color') + impr('set output "fort.'+str(UL_out)+'"') + for i in range(len(L_F)): + if interactif: + graphe.append(Gnuplot.Gnuplot(persist=0)) + graphe[i]('set data style linespoints') + graphe[i]('set grid') + graphe[i]('set pointsize 2.') + graphe[i].xlabel(reponses[i][1]) + graphe[i].ylabel(reponses[i][2]) + graphe[i].title(reponses[i][0]+' Iteration '+str(iter)) + graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental')) + graphe[i]('pause 5') +# + impr.xlabel(reponses[i][1]) + impr.ylabel(reponses[i][2]) + impr.title(reponses[i][0]+' Iteration '+str(iter)) + impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental')) + + +#=========================================================================================== +# CONTROLE DES ENTREES UTILISATEUR + +def erreur_de_type(code_erreur,X): + #code_erreur ==0 --> X est une liste + #code erreur ==1 --> X est un char + #code erreur ==2 --> X est un float + #test est un boolean (test = 0 défaut et 1 si un test if est verifier + txt="" + if(code_erreur == 0 ): + if type(X) is not types.ListType: + txt="\012Cette entrée: " +str(X)+" n'est pas une liste valide" + if(code_erreur == 1 ): + if type(X) is not types.StringType: + txt="\012Cette entrée: " +str(X)+" n'est pas une chaine de caractère valide ; Veuillez la ressaisir en lui appliquant le type char de python" + if(code_erreur == 2 ): + if type(X) is not types.FloatType: + txt="\012Cette entrée: " +str(X)+" n'est pas une valeur float valide ; Veuillez la ressaisir en lui appliquant le type float de python" + return txt + + +def erreur_dimension(PARAMETRES,REPONSES): +#On verifie que la dimension de chaque sous_liste de parametre est 4 +#et que la dimension de chaque sous_liste de REPONSES est 3 + txt="" + for i in range(len(PARAMETRES)): + if (len(PARAMETRES[i]) != 4): + txt=txt + "\012La sous-liste de la variable paramètre numéro " + str(i+1)+" n'est pas de longueur 4" + for i in range(len(REPONSES)): + if (len(REPONSES[i]) != 3): + txt=txt + "\012La sous-liste de la variable réponse numéro " + str(i+1)+" n'est pas de longueur 3" + return txt + + +def compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP): + # X et Y sont deux arguments qui doivent avoir la meme dimension + # pour éviter l'arret du programme + txt="" + if( len(REPONSES) != len(RESU_EXP)): + txt="\012Vous avez entré " +str(len(REPONSES))+ " réponses et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de réponses que de résultats expérimentaux" + return txt + + +def verif_fichier(UL,PARAMETRES,REPONSES): +#On verifie les occurences des noms des PARAMETRES et REPONSES +#dans le fichier de commande ASTER + txt="" + fichier = open('fort.'+str(UL),'r') + fic=fichier.read() + for i in range(len(PARAMETRES)): + if((string.find(fic,PARAMETRES[i][0])==-1) or ((string.find(fic,PARAMETRES[i][0]+'=')==-1) and (string.find(fic,PARAMETRES[i][0]+' ')==-1))): + txt=txt + "\012Le paramètre "+PARAMETRES[i][0]+" que vous avez entré pour la phase d'optimisation n'a pas été trouvé dans votre fichier de commandes ASTER" + for i in range(len(REPONSES)): + if((string.find(fic,REPONSES[i][0])==-1) or ((string.find(fic,REPONSES[i][0]+'=')==-1) and (string.find(fic,REPONSES[i][0]+' ')==-1))): + txt=txt + "\012La réponse "+REPONSES[i][0]+" que vous avez entrée pour la phase d optimisation n'a pas été trouvée dans votre fichier de commandes ASTER" + return txt + + +def verif_valeurs_des_PARAMETRES(PARAMETRES): +#On verifie que pour chaque PARAMETRES de l'optimisation +# les valeurs entrées par l'utilisateur sont telles que : +# val_infPARAMETRES[i][3]): + txt=txt + "\012La borne inférieure "+str(PARAMETRES[i][2])+" de "+PARAMETRES[i][0]+ "est plus grande que sa borne supérieure"+str(PARAMETRES[i][3]) + #verification de l'encadrement de val_init + for i in range(len(PARAMETRES)): + if( (PARAMETRES[i][1] < PARAMETRES[i][2]) or (PARAMETRES[i][1] > PARAMETRES[i][3])): + txt=txt + "\012La valeur initiale "+str(PARAMETRES[i][1])+" de "+PARAMETRES[i][0]+ " n'est pas dans l'intervalle [borne_inf,born_inf]=["+str(PARAMETRES[i][2])+" , "+str(PARAMETRES[i][3])+"]" + #verification que val_init !=0 + for i in range(len(PARAMETRES)): + if (PARAMETRES[i][1] == 0. ): + txt=txt + "\012Problèmes de valeurs initiales pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur initiale nulle mais un ordre de grandeur." + return txt + + + + +def gestion(UL,PARAMETRES,REPONSES,RESU_EXP): + #Cette methode va utiliser les methodes de cette classe declarée ci_dessus + #test est un boolean: test=0 -> pas d'erreur + # test=1 -> erreur détectée + + texte="" + #On vérifie d'abord si PARAMETRES, REPONSES, RESU_EXP sont bien des listes au sens python + #test de PARAMETRES + texte = texte + erreur_de_type(0,PARAMETRES) + #test de REPONSES + texte = texte + erreur_de_type(0,REPONSES) + #test de RESU_EXP + texte = texte + erreur_de_type(0,RESU_EXP) + + #On vérifie si chaque sous liste de PARAMETRES, REPONSES, possède le type adéquat + #test des sous_listes de PARAMETRES + for i in range(len(PARAMETRES)): + texte = texte + erreur_de_type(0,PARAMETRES[i]) + #test des sous_listes de REPONSES + for i in range(len(REPONSES)): + texte = texte + erreur_de_type(0,REPONSES[i]) + + #On verifie si la dimension de chaque sous-liste de : PARAMETRES, REPONSES + #il faut que:la dimension d'une sous-liste de PARAMETRES = 4 + #et que la dimension d'une sous liste de REPONSES = 3 + texte = texte + erreur_dimension(PARAMETRES,REPONSES) + + #on verifie que l'on a autant de réponses que de résultats expérimentaux + texte = texte + compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP) + + #on verifie les types des arguments de chaque sous liste de PARAMETRES et REPONSES + #verification du type stringet type float des arguments de PARAMETRES + for i in range(len(PARAMETRES)): + texte = texte + erreur_de_type(1,PARAMETRES[i][0]) + for k in [1,2,3]: + texte = texte + erreur_de_type(2,PARAMETRES[i][k]) + + #verification du type string pour les arguments de REPONSES + for i in range(len(REPONSES)): + for j in range(len(REPONSES[i])): + texte = texte + erreur_de_type(1,REPONSES[i][j]) + + #verification du fichier de commndes ASTER + texte = texte + verif_fichier(UL,PARAMETRES,REPONSES) + + #verifiaction des valeurs des PARAMETRES entrées par l'utilisteur + texte = texte + verif_valeurs_des_PARAMETRES(PARAMETRES) + + return texte + + diff --git a/Aster/Cata/cata_STA6.py b/Aster/Cata/cata_STA6.py index 4204f5e0..42f8edf1 100755 --- a/Aster/Cata/cata_STA6.py +++ b/Aster/Cata/cata_STA6.py @@ -326,7 +326,7 @@ class vect_elem_pres_c(vect_elem):pass class vect_elem_pres_r(vect_elem):pass class vect_elem_temp_r(vect_elem):pass -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -337,13 +337,14 @@ class vect_elem_temp_r(vect_elem):pass AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, fr="Affectation de caractéristiques à des éléments de structure", docu="U4.42.01-g3",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','MASSIF', 'ASSE_GRIL','GRILLE','AFFE_SECT','AFFE_FIBRE'),), MODELE =SIMP(statut='o',typ=modele ), INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ), VERIF =SIMP(statut='f',typ='TXM',max='**',into=("MAILLE","NOEUD") ), - POUTRE =FACT(statut='f',min=01,max='**', + POUTRE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -383,7 +384,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, FCX =SIMP(statut='f',typ=(fonction) ), ), - BARRE =FACT(statut='f',min=01,max='**', + BARRE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -403,7 +404,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, FCX =SIMP(statut='f',typ=(fonction) ), ), - COQUE =FACT(statut='f',min=01,max='**', + COQUE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA' ), PRESENT_PRESENT( 'EXCENTREMENT','INER_ROTA' ),), MAILLE =SIMP(statut='f',typ=ma,max='**'), @@ -418,7 +419,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, MODI_METRIQUE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), - CABLE =FACT(statut='f',min=01,max='**', + CABLE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'), UN_PARMI('A','SECTION') ), MAILLE =SIMP(statut='f',typ=ma,max='**'), @@ -429,7 +430,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, FCX =SIMP(statut='f',typ=(fonction) ), ), - DISCRET =FACT(statut='f',min=01,max='**', + DISCRET =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),), NOEUD =SIMP(statut='f',typ=no,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), @@ -447,7 +448,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, VALE =SIMP(statut='o',typ='R',max='**'), ), - ORIENTATION =FACT(statut='f',min=01,max='**', + ORIENTATION =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -460,7 +461,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), - DEFI_ARC =FACT(statut='f',min=01,max='**', + DEFI_ARC =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'), UN_PARMI('ORIE_ARC','CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE', 'POIN_TANG','NOEUD_POIN_TANG','GROUP_NO_POIN_TG'), @@ -491,7 +492,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), - MASSIF =FACT(statut='f',min=01,max='**', + MASSIF =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'), UN_PARMI('ANGL_REP','ANGL_AXE'), EXCLUS('ANGL_REP','ANGL_AXE'), @@ -504,7 +505,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, ORIG_AXE =SIMP(statut='f',typ='R',max=3), ), - POUTRE_FLUI =FACT(statut='f',min=01,max='**', + POUTRE_FLUI =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -516,7 +517,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, COEF_ECHELLE =SIMP(statut='o',typ='R'), ), - GRILLE =FACT(statut='f',min=01,max='**', + GRILLE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'), EXCLUS('ANGL_REP','ORIG_AXE'), ENSEMBLE('ORIG_AXE','AXE')), @@ -534,7 +535,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, GRILLE_NCOU =SIMP(statut='f',typ='I',defaut= 1,min=1,max=1 ), ), - RIGI_PARASOL =FACT(statut='f',min=01,max='**', + RIGI_PARASOL =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('COEF_GROUP','FONC_GROUP'), UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),), GROUP_MA =SIMP(statut='o',typ=ma,max='**'), @@ -548,7 +549,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, COOR_CENTRE =SIMP(statut='f',typ='R',max='**'), ), - ASSE_GRIL =FACT(statut='f',min=01,max='**', + ASSE_GRIL =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -596,7 +597,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -617,10 +618,11 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, fr="Affectation de charges et conditions aux limites acoustiques constantes", docu="U4.44.04-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),), MODELE =SIMP(statut='o',typ=modele ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - PRES_IMPO =FACT(statut='f',min=01,max='**', + PRES_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -629,7 +631,7 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, NOEUD =SIMP(statut='f',typ=no,max='**'), PRES =SIMP(statut='o',typ='C' ), ), - VITE_FACE =FACT(statut='f',min=01,max='**', + VITE_FACE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -637,7 +639,7 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, MAILLE =SIMP(statut='f',typ=ma,max='**'), VNOR =SIMP(statut='o',typ='C' ), ), - IMPE_FACE =FACT(statut='f',min=01,max='**', + IMPE_FACE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -645,7 +647,7 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, MAILLE =SIMP(statut='f',typ=ma,max='**'), IMPE =SIMP(statut='o',typ='C' ), ), - LIAISON_UNIF =FACT(statut='f',min=01,max='**', + LIAISON_UNIF =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE' ),), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), @@ -654,7 +656,7 @@ AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, DDL =SIMP(statut='o',typ='TXM',max='**'), ), ) ; -#& MODIF COMMANDE DATE 21/06/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -682,12 +684,13 @@ def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,**args): AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation", docu="U4.44.03-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO','ACOU_IMPO'), EXCLUS('MECA_IMPO','THER_IMPO'), EXCLUS('MECA_IMPO','ACOU_IMPO'), EXCLUS('THER_IMPO','ACOU_IMPO'),), MODELE =SIMP(statut='o',typ=modele ), - MECA_IMPO =FACT(statut='f',min=01,max='**', + MECA_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -704,7 +707,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod TEMP =SIMP(statut='f',typ='R' ), PHI =SIMP(statut='f',typ='R' ), ), - THER_IMPO =FACT(statut='f',min=01,max='**', + THER_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -714,7 +717,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod TEMP =SIMP(statut='f',typ='R' ), TEMP_INF =SIMP(statut='f',typ='R' ), ), - ACOU_IMPO =FACT(statut='f',min=01,max='**', + ACOU_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), @@ -723,7 +726,7 @@ AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -749,10 +752,11 @@ def affe_char_cine_f_prod(MECA_IMPO,THER_IMPO,**args): AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_prod ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation", docu="U4.44.03-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'), EXCLUS('MECA_IMPO','THER_IMPO'),), MODELE =SIMP(statut='o',typ=modele ), - MECA_IMPO =FACT(statut='f',min=01,max='**', + MECA_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -769,7 +773,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_pr TEMP =SIMP(statut='f',typ=fonction ), PHI =SIMP(statut='f',typ=fonction ), ), - THER_IMPO =FACT(statut='f',min=01,max='**', + THER_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -781,7 +785,7 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_pr ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 13/08/2002 AUTEUR ADBHHPM P.MASSIN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -803,27 +807,21 @@ AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_pr AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca ,fr="Affectation de charges et conditions aux limites mécaniques constantes", docu="U4.44.01-g2",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE', 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', 'PRES_REP','FORCE_POUTRE','FORCE_COQUE','LIAISON_OBLIQUE', 'FORCE_ELEC','INTE_ELEC','PESANTEUR','ROTATION','IMPE_FACE', 'VITE_FACE','TEMP_CALCULEE','RELA_CINE_BP','EPSI_INIT','CONTACT', - 'LIAISON_UNIL_NO','LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP', + 'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP', 'LIAISON_SOLIDE','LIAISON_ELEM','ONDE_FLUI','PRES_CALCULEE', 'EPSA_CALCULEE','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE', 'LIAISON_MAIL','FORCE_TUYAU','SECH_CALCULEE','HYDR_CALCULEE', 'EFFE_FOND','EVOL_CHAR','ARLEQUIN'), - EXCLUS('PRES_CALCULEE','EVOL_CHAR'), - EXCLUS('LIAISON_UNIL_NO','CONTACT'),), - - MODELE =SIMP(statut='o',typ=(modele) ), + EXCLUS('PRES_CALCULEE','EVOL_CHAR'),), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), -# A TERME PRES_CALCULEE N'EXISTERA PLUS - EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", - typ=evol_char ), - PRES_CALCULEE =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", - typ=evol_char ), + MODELE =SIMP(statut='o',typ=(modele) ), TEMP_CALCULEE =SIMP(statut='f',fr="Champ de température issu d'un autre calcul", typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ), HYDR_CALCULEE =SIMP(statut='f',fr="Champ d hydratation issu d'un autre calcul", @@ -832,105 +830,18 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ), EPSA_CALCULEE =SIMP(statut='f',fr="Champ de déformation anélastique issu d'un autre calcul", typ=evol_noli ), - VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ), +# A TERME PRES_CALCULEE N'EXISTERA PLUS + EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", + typ=evol_char ), + PRES_CALCULEE =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul", + typ=evol_char ), - ARLEQUIN =FACT(statut='f',min=1,max='**', - GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'), - GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'), - GROUP_MA_COLL =SIMP(statut='o',typ=grma,max='**'), - CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), - regles =(UN_PARMI('POIDS_1','POIDS_2'),), - POIDS_1 =SIMP(statut='f',typ='R'), - POIDS_2 =SIMP(statut='f',typ='R'), - ), - - CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",min=1,max='**', - regles=(UN_PARMI('GROUP_MA_2','MAILLE_2'),), - APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", - into=("NON","NODAL","NODAL_SYME","MAIT_ESCL","MAIT_ESCL_SYME")), - RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN",into=("NOEUD_BOUCLE","NOEUD_VOISIN")), - LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")), - METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", - into=("CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ), - PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ), - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), - b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ", - fr="Paramètres de la méthode des contraintes actives (contact uniquement)", - regles=(EXCLUS('DIST_2','COEF_IMPO'), - EXCLUS('DIST_1','COEF_IMPO'),), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP")), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ), - REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), - b_act_reac =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", - fr="Paramètre de la réactualisation géométrique", - NB_REAC_GEOM =SIMP(statut='o',typ='I'),), - SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - COEF_IMPO =SIMP(statut='f',typ='R'), - COEF_MULT_2 =SIMP(statut='f',typ='R'), - VECT_NORM_2 =SIMP(statut='f',typ='R',max=3), - VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - DIST_1 =SIMP(statut='f',typ='R'), - DIST_2 =SIMP(statut='f',typ='R'),), - b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", - fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), - b_lag_reac =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", - fr="Paramètre de la réactualisation géométrique", - NB_REAC_GEOM =SIMP(statut='o',typ='I'),), - SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - DIST_1 =SIMP(statut='f',typ='R'), - DIST_2 =SIMP(statut='f',typ='R'), - VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB =SIMP(statut='o',typ='R',max=1), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - ),), - b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ", - fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)", - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), - E_N =SIMP(statut='f',typ='R'), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), - b_pen_reac =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", - fr="Paramètre de la réactualisation géométrique", - NB_REAC_GEOM =SIMP(statut='o',typ='I'),), - SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - DIST_1 =SIMP(statut='f',typ='R'), - DIST_2 =SIMP(statut='f',typ='R'), - VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB =SIMP(statut='o',typ='R',max=1), - E_T =SIMP(statut='f',typ='R', - fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - ),), - b_continue =BLOC(condition = "METHODE == 'CONTINUE' ", - fr="Paramètres de la méthode continue (contact avec ou sans frottement)", - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")), - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")), - DIRECTION_APPA =SIMP(statut='f',typ='R',max=3), - ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2), - ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30), - b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", - COULOMB =SIMP(statut='o',typ='R',max=1), - ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2), - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),), - ), + PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4), + ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation",min=4,max=4), + b_rotation =BLOC ( condition = "ROTATION != None", + CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),), - DDL_IMPO =FACT(statut='f',min=1,max='**', + DDL_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2', @@ -990,39 +901,7 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca GONF =SIMP(statut='f',typ='R' ), ), - EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",min=1,max='**', - regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), - GROUP_MA_INT =SIMP(statut='o',typ=grma,max='**'), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - PRES =SIMP(statut='o',typ='R' ), - ), - - EPSI_INIT =FACT(statut='f',fr="Appliquer un chargement de déformation initiale à un volume 3D ou 2D", - min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX', - 'KY','KZ','EXX','EYY','EXY','KXX','KYY','KXY'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - EPXX =SIMP(statut='f',typ='R' ), - EPYY =SIMP(statut='f',typ='R' ), - EPZZ =SIMP(statut='f',typ='R' ), - EPXY =SIMP(statut='f',typ='R' ), - EPXZ =SIMP(statut='f',typ='R' ), - EPYZ =SIMP(statut='f',typ='R' ), - EPX =SIMP(statut='f',typ='R' ), - KY =SIMP(statut='f',typ='R' ), - KZ =SIMP(statut='f',typ='R' ), - EXX =SIMP(statut='f',typ='R' ), - EYY =SIMP(statut='f',typ='R' ), - EXY =SIMP(statut='f',typ='R' ), - KXX =SIMP(statut='f',typ='R' ), - KYY =SIMP(statut='f',typ='R' ), - KXY =SIMP(statut='f',typ='R' ), - ), + FACE_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA','MAILLE',), @@ -1059,126 +938,268 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca PRE2 =SIMP(statut='f',typ='R' ), ), - FLUX_THM_REP =FACT(statut='f',min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - FLUN =SIMP(statut='f',typ='R' ), - FLUN_HYDR1 =SIMP(statut='f',typ='R' ), - FLUN_HYDR2 =SIMP(statut='f',typ='R' ), + LIAISON_DDL =FACT(statut='f',fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds", + min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), ), - - FORCE_ARETE =FACT(statut='f',fr="Appliquer des forces linéiques à une arete d élément volumique ou de coque", + + LIAISON_OBLIQUE =FACT(statut='f',fr="Appliquer à des noeuds une valeur de déplacement dans un repere oblique", min=1,max='**', - regles=(AU_MOINS_UN('GROUP_MA','MAILLE',), - AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - FX =SIMP(statut='f',typ='R' ), - FY =SIMP(statut='f',typ='R' ), - FZ =SIMP(statut='f',typ='R' ), - MX =SIMP(statut='f',typ='R' ), - MY =SIMP(statut='f',typ='R' ), - MZ =SIMP(statut='f',typ='R' ), + regles=(UN_PARMI('GROUP_NO','NOEUD'), + UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + DX =SIMP(statut='f',typ='R' ), + DY =SIMP(statut='f',typ='R' ), + DZ =SIMP(statut='f',typ='R' ), + DRX =SIMP(statut='f',typ='R' ), + DRY =SIMP(statut='f',typ='R' ), + DRZ =SIMP(statut='f',typ='R' ), ), - - FORCE_COQUE =FACT(statut='f',fr="Appliquer des forces surfaciques sur des coques",min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('F1','FX','FY','FZ','MX','MY','MZ','PRES'), - PRESENT_ABSENT('F2','FX','FY','FZ','MX','MY','MZ','PRES'), - PRESENT_ABSENT('F3','FX','FY','FZ','MX','MY','MZ','PRES'), - PRESENT_ABSENT('MF1','FX','FY','FZ','MX','MY','MZ','PRES'), - PRESENT_ABSENT('MF2','FX','FY','FZ','MX','MY','MZ','PRES'), - PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), -# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), + + LIAISON_GROUP =FACT(statut='f',fr="Définir des relations linéaires entre certains ddls de couples de noeuds", + min=1,max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), + EXCLUS('GROUP_MA_1','GROUP_NO_2'), + EXCLUS('GROUP_MA_1','NOEUD_2'), + EXCLUS('GROUP_NO_1','GROUP_MA_2'), + EXCLUS('GROUP_NO_1','MAILLE_2'), + EXCLUS('MAILLE_1','GROUP_NO_2'), + EXCLUS('MAILLE_1','NOEUD_2'), + EXCLUS('NOEUD_1','GROUP_MA_2'), + EXCLUS('NOEUD_1','MAILLE_2'), + EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), - FX =SIMP(statut='f',typ='R' ), - FY =SIMP(statut='f',typ='R' ), - FZ =SIMP(statut='f',typ='R' ), - MX =SIMP(statut='f',typ='R' ), - MY =SIMP(statut='f',typ='R' ), - MZ =SIMP(statut='f',typ='R' ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_1 =SIMP(statut='f',typ=no,max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=no,max='**'), + NOEUD_2 =SIMP(statut='f',typ=no,max='**'), - F1 =SIMP(statut='f',typ='R' ), - F2 =SIMP(statut='f',typ='R' ), - F3 =SIMP(statut='f',typ='R' ), - MF1 =SIMP(statut='f',typ='R' ), - MF2 =SIMP(statut='f',typ='R' ), - - PRES =SIMP(statut='f',typ='R' ), - PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL",) ), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + DDL_1 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'), + DDL_2 =SIMP(statut='o',typ='TXM',max='**'), + COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), + TRAN =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + CENTRE =SIMP(statut='f',typ='R',max=3), ), - FORCE_CONTOUR =FACT(statut='f',fr="Appliquer des forces linéiques au bord d'un domaine 2D ou AXIS_FOURIER", + LIAISON_MAIL =FACT(statut='f',min=1,max='**', + regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'), + AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'), + PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),), + GROUP_MA_MAIT =SIMP(statut='f',typ=grma,max='**'), + MAILLE_MAIT =SIMP(statut='f',typ=ma,max='**'), + GROUP_MA_ESCL =SIMP(statut='f',typ=grma,max='**'), + MAILLE_ESCL =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_ESCL =SIMP(statut='f',typ=grno,max='**'), + NOEUD_ESCL =SIMP(statut='f',typ=no,max='**'), + TRAN =SIMP(statut='f',typ='R',max=3 ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), + CENTRE =SIMP(statut='f',typ='R',max=3 ), + DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ), + ), + + + LIAISON_SOLIDE =FACT(statut='f',fr="Modéliser une partie indéformable d'une structure",min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + LIAISON_ELEM =FACT(statut='f',fr="Raccorder une poutre à une partie massive 3D ou une coque", min=1,max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), + UN_PARMI('GROUP_NO_2','NOEUD_2'),), + OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_2 =SIMP(statut='f',typ=no,max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), + AXE_POUTRE =SIMP(statut='f',typ='R',max=3), + ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ), + ), + + LIAISON_UNIF =FACT(statut='f',fr="Imposer une meme valeur (inconnue) à des ddls d'un emsemble de noeuds", + min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + ), + + LIAISON_CHAMNO =FACT(statut='f',fr="définir une relation linéaire entre tous les ddls d'un concept cham_nno", + min=1,max='**', +# type de cham_no CO() + CHAM_NO =SIMP(statut='o',typ=cham_no), #CO() + COEF_IMPO =SIMP(statut='o',typ='R' ), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ), + + CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",min=1,max='**', + regles=(UN_PARMI('GROUP_MA_2','MAILLE_2'),), + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("NON","NODAL","NODAL_SYME","MAIT_ESCL","MAIT_ESCL_SYME")), + RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN",into=("NOEUD_BOUCLE","NOEUD_VOISIN")), + LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")), + METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", + into=("CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ), + PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ", + fr="Paramètres de la méthode des contraintes actives (contact uniquement)", + regles=(EXCLUS('DIST_2','COEF_IMPO'), + EXCLUS('DIST_1','COEF_IMPO'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP")), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + COEF_IMPO =SIMP(statut='f',typ='R'), + COEF_MULT_2 =SIMP(statut='f',typ='R'), + VECT_NORM_2 =SIMP(statut='f',typ='R',max=3), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + DIST_1 =SIMP(statut='f',typ='R'), + DIST_2 =SIMP(statut='f',typ='R'), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),), + b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", + fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + DIST_1 =SIMP(statut='f',typ='R'), + DIST_2 =SIMP(statut='f',typ='R'), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ),), + b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + E_N =SIMP(statut='f',typ='R'), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + DIST_1 =SIMP(statut='f',typ='R'), + DIST_2 =SIMP(statut='f',typ='R'), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + E_T =SIMP(statut='f',typ='R', + fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"), + COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ),), + b_continue =BLOC(condition = "METHODE == 'CONTINUE' ", + fr="Paramètres de la méthode continue (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")), + COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")), + DIRECTION_APPA =SIMP(statut='f',typ='R',max=3,defaut=(0.,0.,0.,)), + ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2), + ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2), + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),), + ), + + FORCE_NODALE =FACT(statut='f',fr="Imposer des forces nodales en des noeuds",min=1,max='**', + regles=(AU_MOINS_UN('GROUP_NO','NOEUD'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + ), + + FORCE_FACE =FACT(statut='f',fr="Appliquer des forces surfaciques sur une face d'éléments volumiques", min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), + AU_MOINS_UN('FX','FY','FZ'),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), FX =SIMP(statut='f',typ='R' ), FY =SIMP(statut='f',typ='R' ), FZ =SIMP(statut='f',typ='R' ), - MX =SIMP(statut='f',typ='R' ), - MY =SIMP(statut='f',typ='R' ), - MZ =SIMP(statut='f',typ='R' ), ), - FORCE_ELEC =FACT(statut='f', - fr="Force de Laplace due à la présence d'un conducteur rectiligne secondaire non maillé", + FORCE_ARETE =FACT(statut='f',fr="Appliquer des forces linéiques à une arete d élément volumique ou de coque", min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ','POSITION'), - EXCLUS('FX','POSITION'), - EXCLUS('FY','POSITION'), - EXCLUS('FZ','POSITION'),), -# trop de regles : les blocs conditionnels permettent d en suprimer - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + regles=(AU_MOINS_UN('GROUP_MA','MAILLE',), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - - FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - FY =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - FZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - - POSITION =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ), - b_para =BLOC ( condition = "POSITION == 'PARA'", - regles=(UN_PARMI('TRANS','DIST'),), - TRANS =SIMP(statut='f',typ='R',max=3), - DIST =SIMP(statut='f',typ='R' ), - b_point2 =BLOC ( condition = "DIST != None", - POINT2 =SIMP(statut='o',typ='R',max=3), - ), - ), - b_fini_infi =BLOC ( condition = "(POSITION == 'FINI') or (POSITION == 'INFI')", - POINT1 =SIMP(statut='o',typ='R',max=3), - POINT2 =SIMP(statut='o',typ='R',max=3), - ), - ), - - FORCE_FACE =FACT(statut='f',fr="Appliquer des forces surfaciques sur une face d'éléments volumiques", + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + ), + + FORCE_CONTOUR =FACT(statut='f',fr="Appliquer des forces linéiques au bord d'un domaine 2D ou AXIS_FOURIER", min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ'),), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), FX =SIMP(statut='f',typ='R' ), FY =SIMP(statut='f',typ='R' ), FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), ), FORCE_INTERNE =FACT(statut='f',fr="Appliquer des forces volumiques (2D ou 3D) à un domaine volumique", @@ -1194,27 +1215,62 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca FZ =SIMP(statut='f',typ='R' ), ), - IMPE_FACE =FACT(statut='f',fr="Appliquer une impédance acoustique à une face",min=1,max='**', - regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),), + PRES_REP =FACT(statut='f',fr="Appliquer une pression à un domaine de milieu continu 2D ou 3D", + min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('PRES','CISA_2D' ),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - IMPE =SIMP(statut='o',typ='R' ), + PRES =SIMP(statut='f',typ='R' ), + CISA_2D =SIMP(statut='f',typ='R' ), ), - FORCE_NODALE =FACT(statut='f',fr="Imposer des forces nodales en des noeuds",min=1,max='**', - regles=(AU_MOINS_UN('GROUP_NO','NOEUD'), - AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - FX =SIMP(statut='f',typ='R' ), - FY =SIMP(statut='f',typ='R' ), - FZ =SIMP(statut='f',typ='R' ), - MX =SIMP(statut='f',typ='R' ), - MY =SIMP(statut='f',typ='R' ), - MZ =SIMP(statut='f',typ='R' ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",min=1,max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), + GROUP_MA_INT =SIMP(statut='o',typ=grma,max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + PRES =SIMP(statut='o',typ='R' ), ), - + + EPSI_INIT =FACT(statut='f',fr="Appliquer un chargement de déformation initiale à un volume 3D ou 2D", + min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX', + 'KY','KZ','EXX','EYY','EXY','KXX','KYY','KXY'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + EPXX =SIMP(statut='f',typ='R' ), + EPYY =SIMP(statut='f',typ='R' ), + EPZZ =SIMP(statut='f',typ='R' ), + EPXY =SIMP(statut='f',typ='R' ), + EPXZ =SIMP(statut='f',typ='R' ), + EPYZ =SIMP(statut='f',typ='R' ), + EPX =SIMP(statut='f',typ='R' ), + KY =SIMP(statut='f',typ='R' ), + KZ =SIMP(statut='f',typ='R' ), + EXX =SIMP(statut='f',typ='R' ), + EYY =SIMP(statut='f',typ='R' ), + EXY =SIMP(statut='f',typ='R' ), + KXX =SIMP(statut='f',typ='R' ), + KYY =SIMP(statut='f',typ='R' ), + KXY =SIMP(statut='f',typ='R' ), + ), + + ARLEQUIN =FACT(statut='f',min=1,max='**', + GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'), + GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'), + GROUP_MA_COLL =SIMP(statut='o',typ=grma,max='**'), + CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), + regles =(UN_PARMI('POIDS_1','POIDS_2'),), + POIDS_1 =SIMP(statut='f',typ='R'), + POIDS_2 =SIMP(statut='f',typ='R'), + ), + FORCE_POUTRE =FACT(statut='f',fr="Appliquer des forces linéiques sur des poutres",min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -1242,12 +1298,105 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca FORCE_TUYAU =FACT(statut='f',fr="imposer une pression dans un élément TUYAU",min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + PRES =SIMP(statut='f',typ='R' ), + ), + + FORCE_COQUE =FACT(statut='f',fr="Appliquer des forces surfaciques sur des coques",min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('F1','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('F2','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('F3','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('MF1','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('MF2','FX','FY','FZ','MX','MY','MZ','PRES'), + PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), +# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + + FX =SIMP(statut='f',typ='R' ), + FY =SIMP(statut='f',typ='R' ), + FZ =SIMP(statut='f',typ='R' ), + MX =SIMP(statut='f',typ='R' ), + MY =SIMP(statut='f',typ='R' ), + MZ =SIMP(statut='f',typ='R' ), + + F1 =SIMP(statut='f',typ='R' ), + F2 =SIMP(statut='f',typ='R' ), + F3 =SIMP(statut='f',typ='R' ), + MF1 =SIMP(statut='f',typ='R' ), + MF2 =SIMP(statut='f',typ='R' ), + + PRES =SIMP(statut='f',typ='R' ), + PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL",) ), + ), + + + LIAISON_COQUE =FACT(statut='f',min=1,max='**', + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_1 =SIMP(statut='f',typ=no,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_2 =SIMP(statut='f',typ=no,max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + RELA_CINE_BP =FACT(statut='f',min=1,max='**', + CABLE_BP =SIMP(statut='o',typ=cabl_precont ), + SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + ), + + FORCE_ELEC =FACT(statut='f', + fr="Force de Laplace due à la présence d'un conducteur rectiligne secondaire non maillé", + min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','POSITION'), + EXCLUS('FX','POSITION'), + EXCLUS('FY','POSITION'), + EXCLUS('FZ','POSITION'),), +# trop de regles : les blocs conditionnels permettent d en suprimer TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - PRES =SIMP(statut='f',typ='R' ), + + FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FY =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + FZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ), + + POSITION =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ), + b_para =BLOC ( condition = "POSITION == 'PARA'", + regles=(UN_PARMI('TRANS','DIST'),), + TRANS =SIMP(statut='f',typ='R',max=3), + DIST =SIMP(statut='f',typ='R' ), + b_point2 =BLOC ( condition = "DIST != None", + POINT2 =SIMP(statut='o',typ='R',max=3), + ), + ), + b_fini_infi =BLOC ( condition = "(POSITION == 'FINI') or (POSITION == 'INFI')", + POINT1 =SIMP(statut='o',typ='R',max=3), + POINT2 =SIMP(statut='o',typ='R',max=3), + ), ), + + + INTE_ELEC =FACT(statut='f',fr="Force de Laplace due à la présence d'un conducteur non rectiligne secondaire", min=1,max='**', @@ -1264,161 +1413,23 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca SYME =SIMP(statut='f',typ='R',max='**'), ), - LIAISON_CHAMNO =FACT(statut='f',fr="définir une relation linéaire entre tous les ddls d'un concept cham_nno", - min=1,max='**', -# type de cham_no CO() - CHAM_NO =SIMP(statut='o',typ=cham_no), #CO() - COEF_IMPO =SIMP(statut='o',typ='R' ), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - ), - - LIAISON_COQUE =FACT(statut='f',min=1,max='**', - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_1 =SIMP(statut='f',typ=no,max='**'), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_2 =SIMP(statut='f',typ=no,max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - ), - LIAISON_DDL =FACT(statut='f',fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds", - min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - DDL =SIMP(statut='o',typ='TXM',max='**'), - COEF_MULT =SIMP(statut='o',typ='R',max='**'), - COEF_IMPO =SIMP(statut='o',typ='R' ), - ), - - LIAISON_ELEM =FACT(statut='f',fr="Raccorder une poutre à une partie massive 3D ou une coque", min=1,max='**', - regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), - UN_PARMI('GROUP_NO_2','NOEUD_2'),), - OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ), - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_2 =SIMP(statut='f',typ=no,max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ), - AXE_POUTRE =SIMP(statut='f',typ='R',max=3), - ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ), - ), - - LIAISON_GROUP =FACT(statut='f',fr="Définir des relations linéaires entre certains ddls de couples de noeuds", - min=1,max='**', - regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), - UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), - EXCLUS('GROUP_MA_1','GROUP_NO_2'), - EXCLUS('GROUP_MA_1','NOEUD_2'), - EXCLUS('GROUP_NO_1','GROUP_MA_2'), - EXCLUS('GROUP_NO_1','MAILLE_2'), - EXCLUS('MAILLE_1','GROUP_NO_2'), - EXCLUS('MAILLE_1','NOEUD_2'), - EXCLUS('NOEUD_1','GROUP_MA_2'), - EXCLUS('NOEUD_1','MAILLE_2'), - EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),), - - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_1 =SIMP(statut='f',typ=no,max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=no,max='**'), - NOEUD_2 =SIMP(statut='f',typ=no,max='**'), - - SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - DDL_1 =SIMP(statut='o',typ='TXM',max='**'), - COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'), - DDL_2 =SIMP(statut='o',typ='TXM',max='**'), - COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'), - COEF_IMPO =SIMP(statut='o',typ='R' ), - SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), - TRAN =SIMP(statut='f',typ='R',max=3), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3), - CENTRE =SIMP(statut='f',typ='R',max=3), - ), - LIAISON_OBLIQUE =FACT(statut='f',fr="Appliquer à des noeuds une valeur de déplacement dans un repere oblique", - min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD'), - UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - ANGL_NAUT =SIMP(statut='o',typ='R',max=3), - DX =SIMP(statut='f',typ='R' ), - DY =SIMP(statut='f',typ='R' ), - DZ =SIMP(statut='f',typ='R' ), - DRX =SIMP(statut='f',typ='R' ), - DRY =SIMP(statut='f',typ='R' ), - DRZ =SIMP(statut='f',typ='R' ), - ), - - LIAISON_SOLIDE =FACT(statut='f',fr="Modéliser une partie indéformable d'une structure",min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), + IMPE_FACE =FACT(statut='f',fr="Appliquer une impédance acoustique à une face",min=1,max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - ), - - LIAISON_UNIF =FACT(statut='f',fr="Imposer une meme valeur (inconnue) à des ddls d'un emsemble de noeuds", - min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), + IMPE =SIMP(statut='o',typ='R' ), + ), + + VITE_FACE =FACT(statut='f',fr="Imposer des vitesses acoustiquesnormales à une face",min=1,max='**', + regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - DDL =SIMP(statut='o',typ='TXM',max='**'), - ), + VNOR =SIMP(statut='o',typ='R' ), + ), + + - LIAISON_UNIL_NO =FACT(statut='f',min=1,max='**', - regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), - UN_PARMI('GROUP_MA_2','MAILLE_2'),), - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'),# CO() - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'),# CO() - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'),# CO() - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'),# CO() - SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ), - TRAN =SIMP(statut='f',typ='R',max=3 ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), - CENTRE =SIMP(statut='f',typ='R',max=3 ), - ANGLE_MAX =SIMP(statut='f',typ='R' ), - VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS", - into=("SANS","TRESCA","COULOMB") ), - METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", - into=("CONTRAINTE","LAGRANGIEN","PENALISATION") ), - COULOMB =SIMP(statut='f',typ='R' ), - TRESCA =SIMP(statut='f',typ='R' ), - E_T =SIMP(statut='f',typ='R' ), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - CONTACT =SIMP(statut='f',typ='TXM',into=("MAINTENU",) ), - JEU =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - ), - - LIAISON_MAIL =FACT(statut='f',min=1,max='**', - regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'), - AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'), - PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),), - GROUP_MA_MAIT =SIMP(statut='f',typ=grma,max='**'), - MAILLE_MAIT =SIMP(statut='f',typ=ma,max='**'), - GROUP_MA_ESCL =SIMP(statut='f',typ=grma,max='**'), - MAILLE_ESCL =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_ESCL =SIMP(statut='f',typ=grno,max='**'), - NOEUD_ESCL =SIMP(statut='f',typ=no,max='**'), - TRAN =SIMP(statut='f',typ='R',max=3 ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ), - CENTRE =SIMP(statut='f',typ='R',max=3 ), - DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ), - DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ), - ), - ONDE_FLUI =FACT(statut='f',fr="Appliquer une amplitude de pression d onde incidente",min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -1426,39 +1437,21 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca PRES =SIMP(statut='o',typ='R' ), ), - PRES_REP =FACT(statut='f',fr="Appliquer une pression à un domaine de milieu continu 2D ou 3D", - min=1,max='**', + FLUX_THM_REP =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('PRES','CISA_2D' ),), + AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - PRES =SIMP(statut='f',typ='R' ), - CISA_2D =SIMP(statut='f',typ='R' ), + FLUN =SIMP(statut='f',typ='R' ), + FLUN_HYDR1 =SIMP(statut='f',typ='R' ), + FLUN_HYDR2 =SIMP(statut='f',typ='R' ), ), - - PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4), - - RELA_CINE_BP =FACT(statut='f',min=1,max='**', - CABLE_BP =SIMP(statut='o',typ=cabl_precont ), - SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - ), - ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation",min=4,max=4), - b_rotation =BLOC ( condition = "ROTATION != None", - CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),), - - VITE_FACE =FACT(statut='f',fr="Imposer des vitesses acoustiquesnormales à une face",min=1,max='**', - regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - VNOR =SIMP(statut='o',typ='R' ), - ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1480,10 +1473,11 @@ AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, fr="Affectation de charges et conditions aux limites mécaniques complexes", docu="U4.44.05-d2",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),), MODELE =SIMP(statut='o',typ=modele ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - DDL_IMPO =FACT(statut='f',min=01,max='**', + DDL_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI', ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -1501,7 +1495,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, PRES =SIMP(statut='f',typ='C' ), PHI =SIMP(statut='f',typ='C' ), ), - FORCE_POUTRE =FACT(statut='f',min=01,max='**', + FORCE_POUTRE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',), @@ -1522,7 +1516,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, VY =SIMP(statut='f',typ='C' ), VZ =SIMP(statut='f',typ='C' ), ), - LIAISON_DDL =FACT(statut='f',min=01,max='**', + LIAISON_DDL =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_NO','NOEUD', ),), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), @@ -1532,7 +1526,7 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1554,15 +1548,16 @@ AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca, AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, fr="Affectation de charges et conditions aux limites mécaniques fonction d une grandeur", docu="U4.44.01-g3",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE', 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE', 'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE', 'LIAISON_OBLIQUE','EPSI_INIT','LIAISON_GROUP','LIAISON_UNIF', 'LIAISON_SOLIDE','FORCE_COQUE','LIAISON_COQUE','FORCE_TUYAU', 'CONTACT'),), - MODELE =SIMP(statut='o',typ=modele ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + MODELE =SIMP(statut='o',typ=modele ), DDL_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), @@ -1579,56 +1574,14 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, DRX =SIMP(statut='f',typ=(fonction) ), DRY =SIMP(statut='f',typ=(fonction) ), DRZ =SIMP(statut='f',typ=(fonction) ), - GRX =SIMP(statut='f',typ=(fonction) ), - PRES =SIMP(statut='f',typ=(fonction) ), - PHI =SIMP(statut='f',typ=(fonction) ), - TEMP =SIMP(statut='f',typ=(fonction) ), - PRE1 =SIMP(statut='f',typ=(fonction) ), - PRE2 =SIMP(statut='f',typ=(fonction) ), - ), - LIAISON_UNIF =FACT(statut='f',min=1,max='**', - fr="Imposer une meme valeur (inconnue) a des ddls d un emsemble de noeuds", - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - DDL =SIMP(statut='o',typ='TXM',max='**'), - ), - LIAISON_SOLIDE =FACT(statut='f',min=1,max='**', - fr="Modéliser une partie indéformable d une structure", - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ), - ), - LIAISON_OBLIQUE =FACT(statut='f',min=1,max='**', - fr="Définir des relations linéaires entre certains ddls de couples de noeuds", - regles=(UN_PARMI('GROUP_NO','NOEUD'), - UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - ANGL_NAUT =SIMP(statut='o',typ='R',max=3), - DX =SIMP(statut='f',typ=(fonction) ), - DY =SIMP(statut='f',typ=(fonction) ), - DZ =SIMP(statut='f',typ=(fonction) ), - DRX =SIMP(statut='f',typ=(fonction) ), - DRY =SIMP(statut='f',typ=(fonction) ), - DRZ =SIMP(statut='f',typ=(fonction) ), - ), - LIAISON_COQUE =FACT(statut='f',min=1,max='**', - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_1 =SIMP(statut='f',typ=no,max='**'), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), - GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), - NOEUD_2 =SIMP(statut='f',typ=no,max='**'), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ), + GRX =SIMP(statut='f',typ=(fonction) ), + PRES =SIMP(statut='f',typ=(fonction) ), + PHI =SIMP(statut='f',typ=(fonction) ), + TEMP =SIMP(statut='f',typ=(fonction) ), + PRE1 =SIMP(statut='f',typ=(fonction) ), + PRE2 =SIMP(statut='f',typ=(fonction) ), ), + FACE_IMPO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA','MAILLE'), AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'), @@ -1662,6 +1615,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, DNOR =SIMP(statut='f',typ=(fonction) ), DTAN =SIMP(statut='f',typ=(fonction) ), ), + LIAISON_DDL =FACT(statut='f',min=1,max='**', fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds", regles=(UN_PARMI('GROUP_NO','NOEUD'),), @@ -1671,6 +1625,22 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, COEF_MULT =SIMP(statut='o',typ='R',max='**'), COEF_IMPO =SIMP(statut='o',typ=(fonction) ), ), + + LIAISON_OBLIQUE =FACT(statut='f',min=1,max='**', + fr="Définir des relations linéaires entre certains ddls de couples de noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD'), + UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + ANGL_NAUT =SIMP(statut='o',typ='R',max=3), + DX =SIMP(statut='f',typ=(fonction) ), + DY =SIMP(statut='f',typ=(fonction) ), + DZ =SIMP(statut='f',typ=(fonction) ), + DRX =SIMP(statut='f',typ=(fonction) ), + DRY =SIMP(statut='f',typ=(fonction) ), + DRZ =SIMP(statut='f',typ=(fonction) ), + ), + LIAISON_GROUP =FACT(statut='f',min=1,max='**', fr="Définir des relations linéaires entre certains ddls de couples de noeuds", regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), @@ -1705,6 +1675,117 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, CENTRE =SIMP(statut='f',typ='R',max=3), ), + CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",min=1,max='**', + regles=(UN_PARMI('GROUP_MA_2','MAILLE_2'),), + APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", + into=("NON","NODAL","NODAL_SYME","MAIT_ESCL","MAIT_ESCL_SYME")), + RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN",into=("NOEUD_BOUCLE","NOEUD_VOISIN")), + LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")), + METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", + into=("CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ), + PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ), + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ", + fr="Paramètres de la méthode des contraintes actives (contact uniquement)", + regles=(EXCLUS('DIST_2','COEF_IMPO'), + EXCLUS('DIST_1','COEF_IMPO'),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP")), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + COEF_IMPO =SIMP(statut='f',typ='R'), + COEF_MULT_2 =SIMP(statut='f',typ='R'), + VECT_NORM_2 =SIMP(statut='f',typ='R',max=3), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + DIST_1 =SIMP(statut='f',typ=(fonction)), + DIST_2 =SIMP(statut='f',typ=(fonction)), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),), + b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ", + fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + DIST_1 =SIMP(statut='f',typ=(fonction)), + DIST_2 =SIMP(statut='f',typ=(fonction)), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ),), + b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ", + fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + E_N =SIMP(statut='f',typ='R'), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), + b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", + fr="Paramètre de la réactualisation géométrique", + NB_REAC_GEOM =SIMP(statut='o',typ='I'),), + SANS_NOEUD =SIMP(statut='f',typ=no,max='**'), + SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + DIST_1 =SIMP(statut='f',typ=(fonction)), + DIST_2 =SIMP(statut='f',typ=(fonction)), + VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), + STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + E_T =SIMP(statut='f',typ='R', + fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"), + COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), + ),), + b_continue =BLOC(condition = "METHODE == 'CONTINUE' ", + fr="Paramètres de la méthode continue (contact avec ou sans frottement)", + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)), + FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), + INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")), + COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), + MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")), + DIRECTION_APPA =SIMP(statut='f',typ='R',max=3), + ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2), + ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30), + b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb", + COULOMB =SIMP(statut='o',typ='R',max=1), + ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2), + COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), + SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),), + ), + + LIAISON_UNIF =FACT(statut='f',min=1,max='**', + fr="Imposer une meme valeur (inconnue) a des ddls d un emsemble de noeuds", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + DDL =SIMP(statut='o',typ='TXM',max='**'), + ), + + LIAISON_SOLIDE =FACT(statut='f',min=1,max='**', + fr="Modéliser une partie indéformable d une structure", + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ), + ), + + + FORCE_NODALE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_NO','NOEUD'), AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),), @@ -1718,17 +1799,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, MZ =SIMP(statut='f',typ=(fonction) ), ANGL_NAUT =SIMP(statut='f',typ=(fonction),max=3 ), ), - FORCE_INTERNE =FACT(statut='f',min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - FX =SIMP(statut='f',typ=(fonction) ), - FY =SIMP(statut='f',typ=(fonction) ), - FZ =SIMP(statut='f',typ=(fonction) ), - ), + FORCE_FACE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), AU_MOINS_UN('FX','FY','FZ'),), @@ -1762,6 +1833,19 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, MY =SIMP(statut='f',typ=(fonction) ), MZ =SIMP(statut='f',typ=(fonction) ), ), + + FORCE_INTERNE =FACT(statut='f',min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + FX =SIMP(statut='f',typ=(fonction) ), + FY =SIMP(statut='f',typ=(fonction) ), + FZ =SIMP(statut='f',typ=(fonction) ), + ), + PRES_REP =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -1773,41 +1857,21 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, CISA_2D =SIMP(statut='f',typ=(fonction) ), ), - FORCE_COQUE =FACT(statut='f',min=1,max='**', + EPSI_INIT =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), - PRESENT_ABSENT('F1','PRES','FX','FY','FZ','MX','MY','MZ'), - PRESENT_ABSENT('F2','PRES','FX','FY','FZ','MX','MY','MZ'), - PRESENT_ABSENT('F3','PRES','FX','FY','FZ','MX','MY','MZ'), - PRESENT_ABSENT('MF1','PRES','FX','FY','FZ','MX','MY','MZ'), - PRESENT_ABSENT('MF2','PRES','FX','FY','FZ','MX','MY','MZ'), - PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), -# rajout d un mot cle REPERE : / GLOBAL / LOCAL + AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - FX =SIMP(statut='f',typ=(fonction) ), - FY =SIMP(statut='f',typ=(fonction) ), - FZ =SIMP(statut='f',typ=(fonction) ), - MX =SIMP(statut='f',typ=(fonction) ), - MY =SIMP(statut='f',typ=(fonction) ), - MZ =SIMP(statut='f',typ=(fonction) ), - F1 =SIMP(statut='f',typ=(fonction) ), - F2 =SIMP(statut='f',typ=(fonction) ), - F3 =SIMP(statut='f',typ=(fonction) ), - MF1 =SIMP(statut='f',typ=(fonction) ), - MF2 =SIMP(statut='f',typ=(fonction) ), - PRES =SIMP(statut='f',typ=(fonction) ), - PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL", - into=("SUP","INF","MOY","MAIL") ), + EPXX =SIMP(statut='f',typ=(fonction) ), + EPYY =SIMP(statut='f',typ=(fonction) ), + EPZZ =SIMP(statut='f',typ=(fonction) ), + EPXY =SIMP(statut='f',typ=(fonction) ), + EPXZ =SIMP(statut='f',typ=(fonction) ), + EPYZ =SIMP(statut='f',typ=(fonction) ), ), + FORCE_POUTRE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -1830,6 +1894,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, VY =SIMP(statut='f',typ=(fonction) ), VZ =SIMP(statut='f',typ=(fonction) ), ), + FORCE_TUYAU =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), @@ -1838,6 +1903,56 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, MAILLE =SIMP(statut='f',typ=ma,max='**'), PRES =SIMP(statut='f',typ=(fonction) ), ), + + FORCE_COQUE =FACT(statut='f',min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'), + PRESENT_ABSENT('F1','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('F2','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('F3','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('MF1','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('MF2','PRES','FX','FY','FZ','MX','MY','MZ'), + PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),), +# rajout d un mot cle REPERE : / GLOBAL / LOCAL + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + FX =SIMP(statut='f',typ=(fonction) ), + FY =SIMP(statut='f',typ=(fonction) ), + FZ =SIMP(statut='f',typ=(fonction) ), + MX =SIMP(statut='f',typ=(fonction) ), + MY =SIMP(statut='f',typ=(fonction) ), + MZ =SIMP(statut='f',typ=(fonction) ), + F1 =SIMP(statut='f',typ=(fonction) ), + F2 =SIMP(statut='f',typ=(fonction) ), + F3 =SIMP(statut='f',typ=(fonction) ), + MF1 =SIMP(statut='f',typ=(fonction) ), + MF2 =SIMP(statut='f',typ=(fonction) ), + PRES =SIMP(statut='f',typ=(fonction) ), + PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL", + into=("SUP","INF","MOY","MAIL") ), + ), + + LIAISON_COQUE =FACT(statut='f',min=1,max='**', + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_1 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_1 =SIMP(statut='f',typ=no,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + GROUP_NO_2 =SIMP(statut='f',typ=grno,max='**'), + NOEUD_2 =SIMP(statut='f',typ=no,max='**'), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ), + ), + + VITE_FACE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), PRESENT_ABSENT('GROUP_MA','MAILLE'),), @@ -1848,79 +1963,19 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, IMPE_FACE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA','MAILLE'), PRESENT_ABSENT('GROUP_MA','MAILLE'),), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - IMPE =SIMP(statut='o',typ=(fonction) ), - ), - ONDE_PLANE =FACT(statut='f',min=1,max='**', - DIRECTION =SIMP(statut='o',typ='R',max='**'), - TYPE_ONDE =SIMP(statut='o',typ='TXM' ), - FONC_SIGNAL =SIMP(statut='o',typ=(fonction) ), - DIST_ORIG =SIMP(statut='o',typ='R' ), - ), - EPSI_INIT =FACT(statut='f',min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - EPXX =SIMP(statut='f',typ=(fonction) ), - EPYY =SIMP(statut='f',typ=(fonction) ), - EPZZ =SIMP(statut='f',typ=(fonction) ), - EPXY =SIMP(statut='f',typ=(fonction) ), - EPXZ =SIMP(statut='f',typ=(fonction) ), - EPYZ =SIMP(statut='f',typ=(fonction) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + IMPE =SIMP(statut='o',typ=(fonction) ), ), - - CONTACT =FACT(statut='f',min=1,max='**', - regles=(UN_PARMI('GROUP_MA_2','MAILLE_2'), - EXCLUS('DIST_2','COEF_IMPO'), - EXCLUS('DIST_1','COEF_IMPO'), - EXCLUS('COEF_MULT_2','GROUP_MA_1'), - EXCLUS('COEF_MULT_2','MAILLE_1'), - EXCLUS('COEF_IMPO','GROUP_MA_1'), - EXCLUS('COEF_IMPO','MAILLE_1'),), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP") ), - APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL", - into=("NON","NODAL","NODAL_SYME","MAIT_ESCL","MAIT_ESCL_SYME") ), - RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN", - into=("NOEUD_BOUCLE","NOEUD_VOISIN") ), - INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD")), - COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0), - COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0), - MODL_AXIS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2), - ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30), - ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2), - LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0), - REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")), - b_act_reac =BLOC(condition = "REAC_GEOM == 'CONTROLE' ", - fr="Paramètre de la réactualisation géométrique", - NB_REAC_GEOM =SIMP(statut='o',typ='I'),), - NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")), - METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE", - into=("CONTRAINTE","LAGRANGIEN","PENALISATION") ), - FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ), - COULOMB =SIMP(statut='f',typ='R',max=1,defaut=0.E+0), - E_N =SIMP(statut='f',typ='R' ), - E_T =SIMP(statut='f',typ='R' ), - COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0), - VECT_Y =SIMP(statut='f',typ='R',min=3,max=3), - VECT_NORM_2 =SIMP(statut='f',typ='R',max=3), - PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE",) ), - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**' ), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**' ), - SANS_NOEUD =SIMP(statut='f',typ=no,max='**' ), - SANS_GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - DIST_1 =SIMP(statut='f',typ=(fonction) ), - DIST_2 =SIMP(statut='f',typ=(fonction) ), - COEF_IMPO =SIMP(statut='f',typ='R',defaut=0.E+0), - COEF_MULT_2 =SIMP(statut='f',typ='R',defaut=1.E+0), + ONDE_PLANE =FACT(statut='f',min=1,max='**', + DIRECTION =SIMP(statut='o',typ='R',max='**'), + TYPE_ONDE =SIMP(statut='o',typ='TXM' ), + FONC_SIGNAL =SIMP(statut='o',typ=(fonction) ), + DIST_ORIG =SIMP(statut='o',typ='R' ), ), + + + FLUX_THM_REP =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -1935,7 +1990,7 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1956,18 +2011,19 @@ AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca, AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, fr=" ", docu="",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, regles=(AU_MOINS_UN('CARA_TORSION', ),), MODELE =SIMP(statut='o',typ=modele ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI", into=("OUI","NON") ), - CARA_TORSION =FACT(statut='f',min=01,max='**', + CARA_TORSION =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_MA'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -1988,21 +2044,14 @@ AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther, AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther ,fr="Affectation de charges et conditions aux limites thermiques constantes", docu="U4.44.02-g2",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE', 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP', 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),), - MODELE =SIMP(statut='o',typ=(modele) ), VERI_DDL =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="OUI"), - LIAISON_DDL =FACT(statut='f',min=01,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD', ),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - DDL =SIMP(statut='f',typ='TXM',max='**', - into=("TEMP","TEMP_INF","TEMP_SUP") ), - COEF_MULT =SIMP(statut='o',typ='R',max='**'), - COEF_IMPO =SIMP(statut='o',typ='R' ), - ), - TEMP_IMPO =FACT(statut='f',min=01,max='**', + MODELE =SIMP(statut='o',typ=(modele) ), + + TEMP_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -2013,31 +2062,8 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther TEMP =SIMP(statut='f',typ='R'), TEMP_INF =SIMP(statut='f',typ='R'), TEMP_SUP =SIMP(statut='f',typ='R'), ), - LIAISON_UNIF =FACT(statut='f',min=01,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", - into=("TEMP","TEMP_INF","TEMP_SUP") ), - ), - LIAISON_CHAMNO =FACT(statut='f',min=01,max='**', - CHAM_NO =SIMP(statut='o',typ=cham_no),# CO()# "il faut definir une structure de donnee generique chamno" - COEF_IMPO =SIMP(statut='o',typ='R' ), - NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), - ), - SOURCE =FACT(statut='f',min=01,max='**', - regles=(UN_PARMI('SOUR','SOUR_CALCULEE',), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('SOUR_CALCULEE','TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - SOUR =SIMP(statut='f',typ='R'), - SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem_sour_r) ), - ), - FLUX_REP =FACT(statut='f',min=01,max='**', + + FLUX_REP =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), PRESENT_PRESENT('CARA_TORSION','GROUP_MA'), @@ -2050,7 +2076,21 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther FLUN_SUP =SIMP(statut='f',typ='R'), CARA_TORSION =SIMP(statut='f',typ=tabl_aire_int ), ), - ECHANGE =FACT(statut='f',min=01,max='**', + + + RAYONNEMENT =FACT(statut='f',min=1,max='**', + fr="Attention, exprimer les températures en Celsius si rayonnement", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + SIGMA =SIMP(statut='o',typ='R'), + EPSILON =SIMP(statut='o',typ='R'), + TEMP_EXT =SIMP(statut='o',typ='R'), + ), + + ECHANGE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'), @@ -2066,20 +2106,20 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther TEMP_EXT_INF =SIMP(statut='f',typ='R'), COEF_H_SUP =SIMP(statut='f',typ='R'), TEMP_EXT_SUP =SIMP(statut='f',typ='R'), + ), + + SOURCE =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('SOUR','SOUR_CALCULEE',), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('SOUR_CALCULEE','TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + SOUR =SIMP(statut='f',typ='R'), + SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem_sour_r) ), ), - ECHANGE_PAROI =FACT(statut='f',min=01,max='**', - regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), - UN_PARMI('GROUP_MA_2','MAILLE_2'),), - GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), - GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), - MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), - COEF_H =SIMP(statut='f',typ='R'), - TRAN =SIMP(statut='f',typ='R',min=2,max=3), - ANGL_NAUT =SIMP(statut='f',typ='R',min=1,max=3), - CENTRE =SIMP(statut='f',typ='R',min=2,max=3), - ), - GRAD_TEMP_INIT =FACT(statut='f',min=01,max='**', + + GRAD_TEMP_INIT =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),), @@ -2090,7 +2130,18 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther FLUX_Y =SIMP(statut='f',typ='R' ), FLUX_Z =SIMP(statut='f',typ='R' ), ), - LIAISON_GROUP =FACT(statut='f',min=01,max='**', + + LIAISON_DDL =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD', ),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**', + into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ='R' ), + ), + + LIAISON_GROUP =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), EXCLUS('GROUP_MA_1','GROUP_NO_2'), @@ -2124,21 +2175,8 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther ANGL_NAUT =SIMP(statut='f',typ='R',max='**'), CENTRE =SIMP(statut='f',typ='R',max='**'), ), - CONVECTION =FACT(statut='f',min=01,max='**', - VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ), - ), - RAYONNEMENT =FACT(statut='f',min=01,max='**', - fr="Attention, exprimer les températures en Celsius si rayonnement", - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - SIGMA =SIMP(statut='o',typ='R'), - EPSILON =SIMP(statut='o',typ='R'), - TEMP_EXT =SIMP(statut='o',typ='R'), - ), - LIAISON_MAIL =FACT(statut='f',min=01,max='**', + + LIAISON_MAIL =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'), AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL', 'NOEUD_ESCL'),), @@ -2151,10 +2189,45 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther TRAN =SIMP(statut='f',typ='R',max='**' ), ANGL_NAUT =SIMP(statut='f',typ='R',max='**' ), CENTRE =SIMP(statut='f',typ='R',max='**' ), + ), + + ECHANGE_PAROI =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), + UN_PARMI('GROUP_MA_2','MAILLE_2'),), + GROUP_MA_1 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_1 =SIMP(statut='f',typ=ma,max='**'), + GROUP_MA_2 =SIMP(statut='f',typ=grma,max='**'), + MAILLE_2 =SIMP(statut='f',typ=ma,max='**'), + COEF_H =SIMP(statut='f',typ='R'), + TRAN =SIMP(statut='f',typ='R',min=2,max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',min=1,max=3), + CENTRE =SIMP(statut='f',typ='R',min=2,max=3), + ), + + LIAISON_UNIF =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + ), + + LIAISON_CHAMNO =FACT(statut='f',min=1,max='**', + CHAM_NO =SIMP(statut='o',typ=cham_no),# CO()# "il faut definir une structure de donnee generique chamno" + COEF_IMPO =SIMP(statut='o',typ='R' ), + NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ), + ), + + CONVECTION =FACT(statut='f',min=1,max='**', + VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ), ), + + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2175,19 +2248,13 @@ AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, fr="Affectation de charges et conditions aux limites thermiques fonction dune grandeur (temps, ...)", docu="U4.44.02-g2",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE', 'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF', 'GRAD_TEMP_INIT','RAYONNEMENT'),), - MODELE =SIMP(statut='o',typ=(modele) ), VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - LIAISON_DDL =FACT(statut='f',min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - DDL =SIMP(statut='f',typ='TXM',max='**',into=("TEMP","TEMP_INF","TEMP_SUP") ), - COEF_MULT =SIMP(statut='o',typ='R',max='**'), - COEF_IMPO =SIMP(statut='o',typ=(fonction) ), - ), + MODELE =SIMP(statut='o',typ=(modele) ), + TEMP_IMPO =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'), AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF','EVOL_THER'), @@ -2203,22 +2270,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, TEMP_INF =SIMP(statut='f',typ=(fonction) ), TEMP_SUP =SIMP(statut='f',typ=(fonction) ), ), - LIAISON_UNIF =FACT(statut='f',min=1,max='**', - regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), - GROUP_NO =SIMP(statut='f',typ=grno,max='**'), - NOEUD =SIMP(statut='f',typ=no,max='**'), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", - into=("TEMP","TEMP_INF","TEMP_SUP") ), - ), - SOURCE =FACT(statut='f',min=1,max='**', - regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - SOUR =SIMP(statut='o',typ=(fonction) ), - ), + FLUX_REP =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -2233,6 +2285,7 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, FLUX_Y =SIMP(statut='f',typ=(fonction) ), FLUX_Z =SIMP(statut='f',typ=(fonction) ), ), + FLUX_NL =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), @@ -2240,7 +2293,23 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), FLUN =SIMP(statut='o',typ=(fonction) ), + ), + + + RAYONNEMENT =FACT(statut='f',min=1,max='**', + fr="Attention, exprimer les températures en Celsius si rayonnement", + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + SIGMA =SIMP(statut='o',typ=(fonction) ), + EPSILON =SIMP(statut='o',typ=(fonction) ), + TEMP_EXT =SIMP(statut='o',typ=(fonction) ), ), + + + ECHANGE =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), @@ -2258,6 +2327,28 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, COEF_H_SUP =SIMP(statut='f',typ=(fonction) ), TEMP_EXT_SUP =SIMP(statut='f',typ=(fonction) ), ), + + + SOURCE =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + SOUR =SIMP(statut='o',typ=(fonction) ), + ), + + GRAD_TEMP_INIT =FACT(statut='f',min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), + PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), + AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + FLUX_X =SIMP(statut='f',typ=(fonction) ), + FLUX_Y =SIMP(statut='f',typ=(fonction) ), + FLUX_Z =SIMP(statut='f',typ=(fonction) ), + ), + ECHANGE_PAROI =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'), UN_PARMI('GROUP_MA_2','MAILLE_2'),), @@ -2270,17 +2361,16 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, ANGL_NAUT =SIMP(statut='f',typ='R',min=1,max=3), CENTRE =SIMP(statut='f',typ='R',min=2,max=3), ), - GRAD_TEMP_INIT =FACT(statut='f',min=1,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'), - AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), - GROUP_MA =SIMP(statut='f',typ=grma,max='**'), - MAILLE =SIMP(statut='f',typ=ma,max='**'), - FLUX_X =SIMP(statut='f',typ=(fonction) ), - FLUX_Y =SIMP(statut='f',typ=(fonction) ), - FLUX_Z =SIMP(statut='f',typ=(fonction) ), + + LIAISON_DDL =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + DDL =SIMP(statut='f',typ='TXM',max='**',into=("TEMP","TEMP_INF","TEMP_SUP") ), + COEF_MULT =SIMP(statut='o',typ='R',max='**'), + COEF_IMPO =SIMP(statut='o',typ=(fonction) ), ), + LIAISON_GROUP =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'), @@ -2315,23 +2405,24 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, ANGL_NAUT =SIMP(statut='f',typ='R',max='**'), CENTRE =SIMP(statut='f',typ='R',max='**'), ), - CONVECTION =FACT(statut='f',min=1,max='**', - VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ), - ), - RAYONNEMENT =FACT(statut='f',min=1,max='**', - fr="Attention, exprimer les températures en Celsius si rayonnement", - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'), - PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),), - TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + + LIAISON_UNIF =FACT(statut='f',min=1,max='**', + regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),), + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - SIGMA =SIMP(statut='o',typ=(fonction) ), - EPSILON =SIMP(statut='o',typ=(fonction) ), - TEMP_EXT =SIMP(statut='o',typ=(fonction) ), + DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP", + into=("TEMP","TEMP_INF","TEMP_SUP") ), + ), + + CONVECTION =FACT(statut='f',min=1,max='**', + VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ), ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2353,9 +2444,10 @@ AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther, AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, fr="Affectation de caractéristiques de matériaux à un maillage", docu="U4.43.03-f",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, MAILLAGE =SIMP(statut='o',typ=maillage), MODELE =SIMP(statut='f',typ=modele), - AFFE =FACT(statut='o',min=01,max='**', + AFFE =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -2366,7 +2458,7 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2386,18 +2478,19 @@ AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater, # ====================================================================== # RESPONSABLE JMBHH01 J.M.PROIX AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", + UIinfo={"groupes":("Modélisation",)}, fr="Affectation des éléments finis sur le maillage",reentrant='n', regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),), MAILLAGE =SIMP(statut='o',typ=(maillage) ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), VERIF =SIMP(statut='f',typ='TXM',max=2,into=("MAILLE","NOEUD") ), - AFFE_SOUS_STRUC =FACT(statut='f',min=01,max=01, + AFFE_SOUS_STRUC =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('TOUT','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE =SIMP(statut='f',typ=ma,max='**'), PHENOMENE =SIMP(statut='f',typ='TXM',defaut="MECANIQUE",into=("MECANIQUE",) ), ), - AFFE =FACT(statut='f',min=01,max='**', + AFFE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -2409,7 +2502,6 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", b_mecanique =BLOC( condition = "PHENOMENE=='MECANIQUE'", fr="modelisations mécaniques", MODELISATION =SIMP(statut='o',typ='TXM', into=( - "2D_CONTACT", "2D_DIS_T", "2D_DIS_TR", "2D_FLUI_ABSO", @@ -2418,7 +2510,6 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", "2D_FLUIDE", "3D", "3D_ABSO", - "3D_CONTACT", "3D_FAISCEAU", "3D_FLUI_ABSO", "3D_FLUIDE", @@ -2474,16 +2565,19 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", "3D_HHMD", "3D_HMD", "3D_THHD", + "3D_THVD", "3D_THHMD", "3D_THMD", "AXIS_HHMD", "AXIS_HMD", "AXIS_THHD", + "AXIS_THVD", "AXIS_THHMD", "AXIS_THMD", "D_PLAN_HHMD", "D_PLAN_HMD", "D_PLAN_THHD", + "D_PLAN_THVD", "D_PLAN_THHMD", "D_PLAN_THMD", "DIS_T", @@ -2528,7 +2622,7 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2547,15 +2641,16 @@ AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-g3", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== AIDE=PROC(nom="AIDE",op=42,docu="U4.02.01-g1", + UIinfo={"groupes":("Modélisation",)}, fr="Interrogation sur le catalogue des commandes et les concepts produits", regles=(AU_MOINS_UN('CONCEPT','TYPE_ELEM', ),), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), TYPE_ELEM =FACT(fr="couple type_elem option", - statut='f',min=01,max=01, + statut='f',min=1,max=1, INITEL =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON",) ), ), - CONCEPT =FACT(statut='f',min=01,max='**', + CONCEPT =FACT(statut='f',min=1,max='**', NOM =SIMP(fr="liste des noms de concept", statut='f',typ='TXM',max='**',defaut="*"), OPTION =SIMP(fr="option d'édition de concept", @@ -2563,7 +2658,7 @@ AIDE=PROC(nom="AIDE",op=42,docu="U4.02.01-g1", into=("TOUT_TYPE","CREER","A_CREER",) ), ), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2585,9 +2680,10 @@ AIDE=PROC(nom="AIDE",op=42,docu="U4.02.01-g1", ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage, fr="Assembler deux maillages sous un seul nom", docu="U4.23.03-e",reentrant='n', + UIinfo={"groupes":("Maillage",)}, MAILLAGE =SIMP(statut='o',typ=maillage,min=2,max=2 ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2608,10 +2704,11 @@ ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage, ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=matr_asse_gene_r, fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée", docu="U4.65.04-d",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","MASS_GENE","AMOR_GENE") ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2639,13 +2736,14 @@ def asse_matrice_prod(MATR_ELEM,**args): ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod, fr="Construction d une matrice assemblée",docu="U4.61.22-f",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, MATR_ELEM =SIMP(statut='o', typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ), NUME_DDL =SIMP(statut='o',typ=nume_ddl), CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2666,13 +2764,14 @@ ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod, ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene, fr="Assemblage de vecteurs de chargement en coordonnées généralisées", docu="U4.65.05-d",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), - CHAR_SOUS_STRUC =FACT(statut='o',min=01,max='**', + CHAR_SOUS_STRUC =FACT(statut='o',min=1,max='**', SOUS_STRUC =SIMP(statut='o',typ='TXM' ), VECT_ASSE =SIMP(statut='o',typ=cham_no_depl_r ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2700,11 +2799,12 @@ def asse_vecteur_prod(VECT_ELEM,**args): ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=asse_vecteur_prod, fr="Assemblage d un second membre",docu="U4.61.23-f",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'), NUME_DDL =SIMP(statut='o',typ=nume_ddl ), INFO =SIMP(statut='f',typ='I',into=(1,2,) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2725,7 +2825,8 @@ ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=asse_vecteur_prod, CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8, fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G", docu="U4.52.13-c",reentrant='n', - ENER_SOL =FACT(statut='o',min=01,max=01, + UIinfo={"groupes":("Résolution",)}, + ENER_SOL =FACT(statut='o',min=1,max=1, regles=(UN_PARMI('GROUP_NO_RADIER','GROUP_MA_RADIER'), PRESENT_ABSENT('COEF_GROUP','FONC_GROUP'), # Peut-on remplacer les deux règles suivantes par un ENSEMBLE_('KRX','KRY','KRZ') @@ -2748,21 +2849,21 @@ CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8, KRZ =SIMP(statut='f',typ='R' ), GROUP_NO_CENTRE =SIMP(statut='f',typ=grno), NOEUD_CENTRE =SIMP(statut='f',typ=no), - COOR_CENTRE =SIMP(statut='f',typ='R',max=03), + COOR_CENTRE =SIMP(statut='f',typ='R',max=3), ), - AMOR_INTERNE =FACT(statut='o',min=01,max=01, + AMOR_INTERNE =FACT(statut='o',min=1,max=1, ENER_POT =SIMP(statut='o',typ=tabl_ener_pot ), GROUP_MA =SIMP(statut='o',typ=grma,max='**'), AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'), ), - AMOR_SOL =FACT(statut='o',min=01,max=01, + AMOR_SOL =FACT(statut='o',min=1,max=1, AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), FONC_AMOR_GEO =SIMP(statut='o',typ=fonction,max='**' ), HOMOGENE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2826,6 +2927,7 @@ def calc_cham_elem_prod(OPTION,**args): CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod, fr="Calcul de champs par éléments à partir de champs solution ou de champs par éléments", docu="U4.81.03-g1",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), CARA_ELEM =SIMP(statut='f',typ=cara_elem), @@ -2952,7 +3054,7 @@ CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod, - EXCIT =FACT(statut='f',min=01,max='**', + EXCIT =FACT(statut='f',min=1,max='**', regles=(EXCLUS('FONC_MULT','COEF_MULT', ),), CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou)), FONC_MULT =SIMP(statut='f',typ=fonction), @@ -2965,7 +3067,7 @@ CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod, MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ), ANGLE =SIMP(statut='f',typ='I',defaut= 0), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -2993,12 +3095,13 @@ def calc_char_cine_prod(CHAR_CINE,**args): CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=calc_char_cine_prod, fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)", docu="U4.61.03-e",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, NUME_DDL =SIMP(statut='o',typ=nume_ddl ), CHAR_CINE =SIMP(statut='o',typ=(char_cine_meca,char_cine_ther,char_cine_acou ) ), INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 28/03/2001 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3022,9 +3125,10 @@ def calc_char_seisme_prod(MATR_MASS,**args ): CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod, docu="U4.63.01-e",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),), MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ), - DIRECTION =SIMP(statut='o',typ='R',max=06,fr="Directions du séisme imposé"), + DIRECTION =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"), MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ), b_mode_stat =BLOC ( condition = "MODE_STAT != None", @@ -3034,7 +3138,7 @@ CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_pr ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 08/08/2002 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3047,6 +3151,7 @@ def calc_elem_prod(RESULTAT,**args): raise AsException("type de concept resultat non prevu") CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,docu="U4.81.01-g3",reentrant='f', + UIinfo={"groupes":("Post traitements",)}, fr="Compléter un résultat en calculant des champs par éléments (contraintes, déformations,... )", MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), @@ -3092,7 +3197,8 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,docu="U4.81.01-g3",r "FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","HYDR_ELNO_ELGA", "SOUR_ELGA_ELEC","VARI_ELNO_COQU","CRIT_ELNO_RUPT", "PRES_ELNO_DBEL","PRES_DBEL_DEPL","PRES_ELNO_REEL","PRES_ELNO_IMAG", - "INTE_ELNO_ACTI","INTE_ELNO_REAC","ERTH_ELEM_TEMP","ERTH_ELNO_ELEM" + "INTE_ELNO_ACTI","INTE_ELNO_REAC","ERTH_ELEM_TEMP","ERTH_ELNO_ELEM", + "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","VALE_NCOU_MAXI" ) ), RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca, mode_stat,mode_stat_depl,mode_stat_acce,mode_stat_forc, @@ -3120,10 +3226,13 @@ CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,docu="U4.81.01-g3",r SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),max='**', fr="Liste des paramètres de sensibilité.", ang="List of sensitivity parameters"), + b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI'", + NOM_CHAM =SIMP(statut='o',typ='TXM',max=1 ), + NOM_CMP =SIMP(statut='o',typ='TXM',max=1 ),), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 24/06/2002 AUTEUR F1BHHAJ J.ANGLES +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3138,6 +3247,7 @@ def calc_fatigue_prod(TYPE_CALCUL,**args): CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n', fr="Calcul d un cham de dommage ou d un cisaillement maximal dans le plan critique.", docu="U4.83.02-c", + UIinfo={"groupes":("Post traitements",)}, TYPE_CALCUL = SIMP(statut='o',typ='TXM', into=("CUMUL_DOMMAGE","FATIGUE_MULTI",) ), @@ -3149,7 +3259,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM", "DOMA_ELNO_EPSI","DOMA_ELGA_EPSI", "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ), - HISTOIRE =FACT(statut='o',min=01,max=01, + HISTOIRE =FACT(statut='o',min=1,max=1, RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans, evol_noli) ), EQUI_GD =SIMP(statut='f',typ='TXM',defaut="VMIS_SG", @@ -3173,7 +3283,7 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 23/04/2001 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3193,13 +3303,14 @@ CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant # ====================================================================== CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu, docu="U4.66.02-d",reentrant='n', - VITE_FLUI =FACT(statut='o',min=01,max=01, + UIinfo={"groupes":("Matrices/vecteurs",)}, + VITE_FLUI =FACT(statut='o',min=1,max=1, fr="Définir la plage de vitesse fluide étudiée", VITE_MIN =SIMP(statut='o',typ='R' ), VITE_MAX =SIMP(statut='o',typ='R' ), NB_POIN =SIMP(statut='o',typ='I' ), ), - BASE_MODALE =FACT(statut='o',min=01,max=01, + BASE_MODALE =FACT(statut='o',min=1,max=1, regles=(UN_PARMI('AMOR_REDUIT','AMOR_UNIF'),), MODE_MECA =SIMP(statut='o',typ=mode_meca ), @@ -3208,13 +3319,13 @@ CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu, AMOR_UNIF =SIMP(statut='f',typ='R' ), ), TYPE_FLUI_STRU =SIMP(statut='o',typ=type_flui_stru ), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, fr="Choix des informations à imprimer dans le fichier RESULTAT", PARA_COUPLAGE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3234,6 +3345,7 @@ CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu, # ====================================================================== CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=fonction, docu="U4.32.01-e1",reentrant='f', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('VALE_R','LIST_PARA'),), FONCTION =SIMP(statut='o',typ=fonction ), NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), @@ -3245,7 +3357,7 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=fonction, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3254,7 +3366,7 @@ CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=fonction, # ====================================================================== # RESPONSABLE MCOURTOI M.COURTOIS def calc_fonction_prod(DERIVE,EXTRACTION,INTEGRE,RMS,NOCI_SEISME,MAX,COMB,COMB_C,ENVELOPPE, - SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE, NORME, **args): + SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE,LISS_ENVELOP,NORME, **args): if (RMS != None) : return tabl_fonc_rms if (MAX != None) : return tabl_fonc_max if (NOCI_SEISME != None): return tabl_fonc_noci @@ -3272,6 +3384,7 @@ def calc_fonction_prod(DERIVE,EXTRACTION,INTEGRE,RMS,NOCI_SEISME,MAX,COMB,COMB_C if (AsType(vale) == fonction ) : return fonction_c if (AsType(vale) == fonction_c) : return fonction if (CORR_ACCE != None) : return fonction + if (LISS_ENVELOP != None) : return fonction if (PUISSANCE != None) : return fonction if (NORME != None) : return table raise AsException("type de concept resultat non prevu") @@ -3279,8 +3392,10 @@ def calc_fonction_prod(DERIVE,EXTRACTION,INTEGRE,RMS,NOCI_SEISME,MAX,COMB,COMB_C CALC_FONCTION=OPER(nom="CALC_FONCTION",op= 91,sd_prod=calc_fonction_prod ,fr="Opérations mathématiques sur des concepts de type fonction", docu="U4.32.04-f2",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','MAX','COMB','COMB_C','ENVELOPPE','RMS', - 'NOCI_SEISME','COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE' ,'NORME'),), + 'NOCI_SEISME','COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE', + 'NORME','LISS_ENVELOP'),), FFT =FACT(statut='f',min=1,max=1,fr="Calcul de la transformee de Fourier ou de son inverse", FONCTION =SIMP(statut='o',typ=(fonction,fonction_c) ) ), @@ -3325,6 +3440,32 @@ CALC_FONCTION=OPER(nom="CALC_FONCTION",op= 91,sd_prod=calc_fonction_prod CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), ), + LISS_ENVELOP = FACT(statut='f',min=1,max=1,fr="Lissage d une enveloppe", + FONCTION =SIMP(statut='o',typ=fonction ), + AMOR =SIMP(statut='f',typ='R',max='**'), + FREQ_MIN =SIMP(statut='f',typ='R',defaut=0.2), + FREQ_MAX =SIMP(statut='f',typ='R',defaut=33.0), + FREQ_CREUX =SIMP(statut='f',typ='R',max='**'), + ELARG =SIMP(statut='f',typ='TXM',defaut="GLOBAL",into=("GLOBAL","LOCAL") ), + b_elarg_glob = BLOC ( condition = " (ELARG=='GLOBAL') ", + GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ), + DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ), + ), + b_elarg_loc = BLOC ( condition = " (ELARG=='LOCAL') ", + FREQ_1 =SIMP(statut='o',typ='R'), + FREQ_2 =SIMP(statut='o',typ='R' ), + GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ), + DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ), + ), + LARG_PLAT =SIMP(statut='f',typ='R',defaut=90.0E0), + TOLE_LISS =SIMP(statut='f',typ='R',defaut=25.0E0), + ECH_FREQ_REF = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + b_oui =BLOC ( condition = "(ECH_FREQ_REF=='OUI') ", + regles=(UN_PARMI("LIST_FREQ", "AMOR_ECH"),), + LIST_FREQ =SIMP(statut='f',typ=listr8 ), + AMOR_ECH =SIMP(statut='f',typ='R',max='**'), + ), + ), SPEC_OSCI =FACT(statut='f',min=1,max=1,fr="Calcul du spectre d oscillateur", METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ), FONCTION =SIMP(statut='o',typ=fonction ), @@ -3394,7 +3535,7 @@ CALC_FONCTION=OPER(nom="CALC_FONCTION",op= 91,sd_prod=calc_fonction_prod INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3415,6 +3556,7 @@ CALC_FONCTION=OPER(nom="CALC_FONCTION",op= 91,sd_prod=calc_fonction_prod CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, fr="calcul de la force ajoutee ", docu="U4.66.03-a1",reentrant ='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(EXCLUS('MODE_MECA','MODELE_GENE'), PRESENT_PRESENT( 'MODELE_GENE','NUME_DDL_GENE'), @@ -3466,7 +3608,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, EPS =SIMP(statut='f',typ='R',defaut= 0.E+0), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3486,6 +3628,7 @@ CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene, # ====================================================================== CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, fr="Calcul du taux de restitution local d énergie",docu="U4.82.04-f3",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), regles=(UN_PARMI('FOND','FOND_FISS' ), @@ -3514,7 +3657,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, CHARGE =SIMP(statut='f',typ=char_meca,max='**'), SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ), - COMP_ELAS =FACT(statut='f',min=01,max=01, + COMP_ELAS =FACT(statut='f',min=1,max=1, RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ), ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ), @@ -3527,7 +3670,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, MAILLE =SIMP(statut='f',typ=ma,max='**'), ), - COMP_INCR =FACT(statut='f',min=01,max=01, + COMP_INCR =FACT(statut='f',min=1,max=1, RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ), ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ), @@ -3541,7 +3684,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, MAILLE =SIMP(statut='f',typ=ma,max='**'), ), - ETAT_INIT =FACT(statut='f',min=01,max=01, + ETAT_INIT =FACT(statut='f',min=1,max=1, SIGM =SIMP(statut='f',typ=cham_elem_sief_r), DEPL =SIMP(statut='f',typ=cham_no_depl_r), ), @@ -3564,7 +3707,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ), ), b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'", - BORNES =FACT(statut='o',min=01,max='**', + BORNES =FACT(statut='o',min=1,max='**', NUME_ORDRE =SIMP(statut='o',typ='I'), VALE_MIN =SIMP(statut='o',typ='R'), VALE_MAX =SIMP(statut='o',typ='R'), @@ -3583,7 +3726,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 03/07/2002 AUTEUR CIBHHPD D.NUNEZ +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3604,6 +3747,7 @@ CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca, CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, fr="Calcul du taux de restitution d énergie par la méthode theta en thermo-élasticité en 2D ou en 3D", docu="U4.82.03-f2",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, regles=(UN_PARMI('RESULTAT','DEPL'), EXCLUS('COMP_ELAS','COMP_INCR'),), MODELE =SIMP(statut='o',typ=modele), @@ -3629,7 +3773,7 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, CHARGE =SIMP(statut='f',typ=char_meca,max='**'), SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ), - COMP_ELAS =FACT(statut='f',min=01,max=01, + COMP_ELAS =FACT(statut='f',min=1,max=1, RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ), ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ), @@ -3641,7 +3785,7 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), ), - COMP_INCR =FACT(statut='f',min=01,max=01, + COMP_INCR =FACT(statut='f',min=1,max=1, RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS", into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ), ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ), @@ -3654,14 +3798,14 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), ), - ETAT_INIT =FACT(statut='f',min=01,max=01, + ETAT_INIT =FACT(statut='f',min=1,max=1, SIGM =SIMP(statut='f',typ=cham_elem_sief_r), DEPL =SIMP(statut='f',typ=cham_no_depl_r), ), OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G", into=("CALC_G","CALC_G_LAGR","CALC_K_G","G_BILINEAIRE","CALC_G_MAX","CALC_DG",) ), b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'", - BORNES =FACT(statut='o',min=01,max='**', + BORNES =FACT(statut='o',min=1,max='**', NUME_ORDRE =SIMP(statut='o',typ='I'), VALE_MIN =SIMP(statut='o',typ='R'), VALE_MAX =SIMP(statut='o',typ='R'), @@ -3676,7 +3820,7 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, PROPAGATION =SIMP(statut='o',typ='R'), ), b_calc_dg =BLOC(condition="OPTION=='CALC_DG'", - SENSIBILITE =FACT(statut='f',min=01,max=01, + SENSIBILITE =FACT(statut='f',min=1,max=1, THETA =SIMP(statut='o',typ=theta_geom ), ), ), @@ -3684,7 +3828,7 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3705,6 +3849,7 @@ CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th, CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp, fr="Calcul d une matrice interspectrale d une fonction du temps", docu="U4.36.03-e",reentrant='n', + UIinfo={"groupes":("Fonction",)}, INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ), INST_FIN =SIMP(statut='o',typ='R' ), DUREE_ANALYSE =SIMP(statut='f',typ='R' ), @@ -3714,7 +3859,7 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3735,6 +3880,7 @@ CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp, CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, fr="Calcul des matrices de masse, d amortissement ou de raideur ajoutées", docu="U4.66.01-c",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'), PRESENT_ABSENT('NUME_DDL_GENE','CHAM_NO'), PRESENT_PRESENT('MODELE_GENE','NUME_DDL_GENE'),), @@ -3778,7 +3924,7 @@ CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r, EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3823,6 +3969,7 @@ def calc_matr_elem_prod(OPTION,**args): CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod ,fr="Calcul des matrices élémentaires",docu="U4.61.01-g1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, OPTION =SIMP(statut='o',typ='TXM', into=("RIGI_MECA","MASS_MECA","RIGI_GEOM", "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA", @@ -3947,7 +4094,7 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod CHAM_MATER =SIMP(statut='o',typ=cham_mater ), ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -3966,17 +4113,23 @@ CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,docu="U4.85.01-b1",reentrant='o', + UIinfo={"groupes":("Post traitements",)}, fr="Calcule la métallurgie a partir du résultat du calcul thermique", MODELE =SIMP(statut='o',typ=modele ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), RESULTAT =SIMP(statut='o',typ=evol_ther ), - ETAT_INIT =FACT(statut='o',min=01,max=01, - regles=(UN_PARMI('NUME_INIT','META_INIT',),), + ETAT_INIT =FACT(statut='o',min=1,max=1, + regles=(UN_PARMI('NUME_INIT', 'INST_INIT', 'META_INIT',),), EVOL_THER =SIMP(statut='f',typ=evol_ther ), NUME_INIT =SIMP(statut='f',typ='I' ), + INST_INIT =SIMP(statut='f',typ='R'), + b_inst =BLOC(condition="(INST_INIT != None)", + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), + ), META_INIT =SIMP(statut='f',typ=carte_var2_r ), ), - COMP_INCR =FACT(statut='o',min=01,max='**', + COMP_INCR =FACT(statut='o',min=1,max='**', RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ), ACIER =SIMP(statut='c',typ='I',defaut=7,into=(7,) ), ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,) ), @@ -3988,7 +4141,7 @@ CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,docu="U4.85.01-b1",reent OPTION =SIMP(statut='f',typ='TXM' ,into=("META_ELNO_TEMP",) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4012,6 +4165,7 @@ def calc_no_prod(RESULTAT,**args): raise AsException("type de concept resultat non prevu") CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,docu="U4.81.02-f3",reentrant='o', + UIinfo={"groupes":("Post traitements",)}, RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca, mode_acou,mode_stat,mode_stat_depl,mode_stat_acce, mode_stat_forc,evol_ther,evol_noli,base_modale, @@ -4085,7 +4239,7 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,docu="U4.81.02-f3",reent GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), ) ; -#& MODIF COMMANDE DATE 03/07/2002 AUTEUR CIBHHPD D.NUNEZ +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4104,6 +4258,7 @@ CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,docu="U4.81.02-f3",reent # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,docu="U4.82.02-d",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, fr="Affectation d un champ sur le maillage (mécanique de la rupture)", regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'), PRESENT_ABSENT('THETA_2D','DIRE_THETA'), @@ -4112,7 +4267,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,docu="U4.82.02-d",reen MODELE =SIMP(statut='o',typ=(modele) ), FOND_FISS =SIMP(statut='f',typ=fond_fiss), FOND_3D =SIMP(statut='f',typ=(fond_fiss) ), - THETA_3D =FACT(statut='f',min=01,max='**', + THETA_3D =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'), UN_PARMI('MODULE','MODULE_FO'), ENSEMBLE('MODULE','R_INF','R_SUP'), @@ -4129,7 +4284,7 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,docu="U4.82.02-d",reen ), DIRE_THETA =SIMP(statut='f',typ=(cham_no_depl_r) ), DIRECTION =SIMP(statut='f',typ='R',max='**'), - THETA_2D =FACT(statut='f',min=01,max='**', + THETA_2D =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_NO','NOEUD'),), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), @@ -4137,19 +4292,19 @@ CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,docu="U4.82.02-d",reen R_INF =SIMP(statut='o',typ='R'), R_SUP =SIMP(statut='o',typ='R'), ), - THETA_BANDE =FACT(statut='f',min=01,max='**', + THETA_BANDE =FACT(statut='f',min=1,max='**', MODULE =SIMP(statut='o',typ='R'), R_INF =SIMP(statut='o',typ='R'), R_SUP =SIMP(statut='o',typ='R'), ), GRAD_NOEU_THETA =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ), FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4177,6 +4332,7 @@ def calc_vect_elem_prod(OPTION,**args): raise AsException("type de concept resultat non prevu") CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,docu="U4.61.02-f",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Calcul des seconds membres élémentaires", OPTION =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU", "FORC_NODA","CHAR_MECA_LAGR") ), @@ -4224,7 +4380,7 @@ CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,docu=" INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4266,9 +4422,10 @@ def comb_cham_elem_prod(COMB_R=None,COMB_C=None,COMB_FOURIER=None,**args): COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,reentrant='f', fr="Combinaison linéaire de champs par éléments",docu="U4.72.03-e", + UIinfo={"groupes":("Résultats et champs",)}, regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'), PRESENT_PRESENT('COMB_FOURIER','ANGL'),), - COMB_R =FACT(statut='f',min=01,max='**', + COMB_R =FACT(statut='f',min=1,max='**', PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), COEF_R =SIMP(statut='o',typ='R'), CHAM_ELEM =SIMP(statut='o', @@ -4276,13 +4433,13 @@ COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,ree cham_elem_ener_r,cham_elem_crit_r,cham_elem_dbel_r, cham_elem_pres_r,cham_elem_sief_c ) ), ), - COMB_C =FACT(statut='f',min=01,max='**', + COMB_C =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('COEF_R','COEF_C', ),), COEF_R =SIMP(statut='f',typ='R'), COEF_C =SIMP(statut='f',typ='C'), CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r) ), ), - COMB_FOURIER =FACT(statut='f',min=01,max='**', + COMB_FOURIER =FACT(statut='f',min=1,max='**', COEF_R =SIMP(statut='f',typ='R',defaut= 1.), NUME_MODE =SIMP(statut='o',typ='I'), TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ), @@ -4291,7 +4448,7 @@ COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,ree ANGL =SIMP(statut='f',typ='R' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4332,21 +4489,22 @@ def comb_cham_no_prod(COMB_R,COMB_C,COMB_FOURIER,**args): COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod ,fr="Combinaison linéaire de champs aux noeuds", docu="U4.72.02-f",reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),), - COMB_R =FACT(statut='f',min=01,max='**', + COMB_R =FACT(statut='f',min=1,max='**', PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG",) ), CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_temp_c,cham_no_depl_r,cham_no_depl_c ,cham_no_pres_r,cham_no_pres_c ) ), COEF_R =SIMP(statut='o',typ='R' ), ), - COMB_C =FACT(statut='f',min=01,max='**', + COMB_C =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('COEF_R','COEF_C' ),), CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,cham_no_temp_c ,cham_no_depl_c,cham_no_pres_c ) ), COEF_R =SIMP(statut='f',typ='R' ), COEF_C =SIMP(statut='f',typ='C' ), ), - COMB_FOURIER =FACT(statut='f',min=01,max='**', + COMB_FOURIER =FACT(statut='f',min=1,max='**', CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r) ), COEF_R =SIMP(statut='f',typ='R',defaut= 1. ), NUME_MODE =SIMP(statut='o',typ='I' ), @@ -4356,7 +4514,7 @@ COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod ANGL =SIMP(statut='o',typ='R' ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4377,12 +4535,13 @@ COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod # RESPONSABLE G8BHHXD X.DESROCHES COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier, docu="U4.83.31-c",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, RESULTAT =SIMP(statut='o',typ=fourier_elas ), ANGL =SIMP(statut='o',typ='R',max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',max=05, + NOM_CHAM =SIMP(statut='o',typ='TXM',max=5, into=("DEPL","REAC_NODA","SIEF_ELGA_DEPL","EPSI_ELNO_DEPL","SIGM_ELNO_DEPL") ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4401,7 +4560,7 @@ COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== # RESPONSABLE VABHHTS J.PELLET -def comb_matr_asse_prod(COMB_R,COMB_C,**args): +def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args): if COMB_C != None: type_mat = AsType(COMB_C.get_child('MATR_ASSE').get_valeur()) if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_c @@ -4414,28 +4573,37 @@ def comb_matr_asse_prod(COMB_R,COMB_C,**args): if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_r if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_r if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_r + elif CALC_AMOR_GENE != None: return matr_asse_gene_r raise AsException("type de concept resultat non prevu") COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod, fr="Combinaison linéaire de matrices assemblées", docu="U4.72.01-g1",reentrant='f', - regles=(UN_PARMI('COMB_R','COMB_C' ),), - COMB_R =FACT(statut='f',min=01,max='**', + UIinfo={"groupes":("Résultats et champs",)}, + regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),), + COMB_R =FACT(statut='f',min=1,max='**', PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ), MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ), COEF_R =SIMP(statut='o',typ='R' ), ), - COMB_C =FACT(statut='f',min=01,max='**', + COMB_C =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('COEF_R','COEF_C' ),), MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ), COEF_R =SIMP(statut='f',typ='R' ), COEF_C =SIMP(statut='f',typ='C' ), ), + CALC_AMOR_GENE =FACT(statut='f',min=1,max=1, + regles=(UN_PARMI('AMOR_REDUIT','LIST_AMOR' ),), + MASS_GENE = SIMP(statut='f', typ=matr_asse_gene_r), + RIGI_GENE = SIMP(statut='f', typ=matr_asse_gene_r), + AMOR_REDUIT = SIMP(statut='f',typ='R',max='**'), + LIST_AMOR = SIMP(statut='f',typ=listr8 ), + ), SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ), ) ; -#& MODIF COMMANDE DATE 18/06/2002 AUTEUR CIBHHPD D.NUNEZ +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4456,6 +4624,7 @@ COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod, COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, fr="Réponse sismique par recombinaison modale par une méthode spectrale", docu="U4.84.01-e1",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'), UN_PARMI('AMOR_REDUIT','LIST_AMOR','AMOR_GENE' ),), MODE_MECA =SIMP(statut='o',typ=mode_meca ), @@ -4478,7 +4647,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ), CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - EXCIT =FACT(statut='o',min=01,max='**', + EXCIT =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('MONO_APPUI','NOEUD','GROUP_NO'), UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),), @@ -4486,33 +4655,33 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), AXE =SIMP(statut='f',fr="Excitation suivant un seul axe", - typ='R',max=03), + typ='R',max=3), TRI_AXE =SIMP(statut='f',fr="Excitation suivant les trois axes mais avec le meme spectre", - typ='R',max=03), + typ='R',max=3), TRI_SPEC =SIMP(statut='f',fr="Excitation suivant les trois axes avec trois spectres", typ='TXM',into=("OUI",) ), b_axe =BLOC(condition = "AXE != None",fr="Excitation suivant un seul axe", - SPEC_OSCI =SIMP(statut='o',typ=fonction,max=01 ), - ECHELLE =SIMP(statut='f',typ='R',max=01), + SPEC_OSCI =SIMP(statut='o',typ=fonction,max=1 ), + ECHELLE =SIMP(statut='f',typ='R',max=1), ), b_tri_axe =BLOC(condition = "TRI_AXE != None",fr="Excitation suivant les trois axes mais avec le meme spectre", - SPEC_OSCI =SIMP(statut='o',typ=fonction,max=01 ), - ECHELLE =SIMP(statut='f',typ='R',max=01), + SPEC_OSCI =SIMP(statut='o',typ=fonction,max=1 ), + ECHELLE =SIMP(statut='f',typ='R',max=1), ), b_tri_spec =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes avec trois spectres", - SPEC_OSCI =SIMP(statut='o',typ=fonction,min=03,max=03 ), - ECHELLE =SIMP(statut='f',typ='R',min=03,max=03), + SPEC_OSCI =SIMP(statut='o',typ=fonction,min=3,max=3 ), + ECHELLE =SIMP(statut='f',typ='R',min=3,max=3), ), NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("ACCE","VITE","DEPL") ), ), - COMB_MODE =FACT(statut='o',min=01,max=01, + COMB_MODE =FACT(statut='o',min=1,max=1, TYPE =SIMP(statut='o',typ='TXM',into=("SRSS","CQC","DSC","ABS","DPC") ), DUREE =SIMP(statut='f',typ='R' ), ), - COMB_DIRECTION =FACT(statut='f',min=01,max=01, + COMB_DIRECTION =FACT(statut='f',min=1,max=1, TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","NEWMARK") ), ), - COMB_MULT_APPUI =FACT(statut='f',min=01,max='**', + COMB_MULT_APPUI =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO' ), UN_PARMI('TYPE_COMBI','TYPE' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -4521,7 +4690,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ), TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ), ), - COMB_DEPL_APPUI=FACT(statut='f',min=01,max='**', + COMB_DEPL_APPUI=FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','LIST_CAS'), UN_PARMI('TYPE_COMBI','TYPE' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -4529,7 +4698,7 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ), TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ), ), - DEPL_MULT_APPUI =FACT(statut='f',min=01,max='**', + DEPL_MULT_APPUI =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD','GROUP_NO'), AU_MOINS_UN('DX','DY','DZ' ),), NOM_CAS =SIMP(statut='o',typ='TXM',max='**'), @@ -4547,14 +4716,15 @@ COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat, "EFGE_ELNO_DEPL","REAC_NODA","FORC_NODA","EFGE_ELNO_CART", "SIPO_ELNO_DEPL") ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), - IMPRESSION =FACT(statut='f',min=01,max='**', + IMPRESSION =FACT(statut='f',min=1,max='**', regles=(EXCLUS('TOUT','NIVEAU'),), - TOUT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), - NIVEAU =SIMP(statut='f',typ='TXM',into=("SPEC_OSCI","MASS_EFFE","MAXI_GENE"),max=03 ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NIVEAU =SIMP(statut='f',typ='TXM',into=("SPEC_OSCI","MASS_EFFE","MAXI_GENE"),max=3 ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 29/04/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND +# RESPONSABLE VABHHTS J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4567,7 +4737,7 @@ def crea_champ_prod(TYPE_CHAM,**args): if TYPE_CHAM == "CART_DEPL_F" : return carte_depl_f if TYPE_CHAM == "CART_DEPL_R" : return carte_depl_r if TYPE_CHAM == "CART_DURT_R" : return carte_durt_r - if TYPE_CHAM == "CART_ENER_R" : return carte_ener_r + if TYPE_CHAM == "CART_ENER_R" : return carte_ener_r if TYPE_CHAM == "CART_EPSI_R" : return carte_epsi_r if TYPE_CHAM == "CART_ERREUR" : return carte_erreur if TYPE_CHAM == "CART_FLUX_R" : return carte_flux_r @@ -4691,85 +4861,88 @@ def crea_champ_prod(TYPE_CHAM,**args): CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, fr=" ",docu="U4.72.04-b1",reentrant='n', - TYPE_CHAM =SIMP(statut='o',typ='TXM', - into=("CART_DBEL_R","NOEU_DBEL_R","ELEM_DBEL_R", - "ELNO_DBEL_R","ELGA_DBEL_R","CART_DEPL_C", - "NOEU_DEPL_C","ELEM_DEPL_C","ELNO_DEPL_C", - "ELGA_DEPL_C","CART_DEPL_F","NOEU_DEPL_F", - "ELEM_DEPL_F","ELNO_DEPL_F","ELGA_DEPL_F", - "CART_DEPL_R","NOEU_DEPL_R","ELEM_DEPL_R", - "ELNO_DEPL_R","ELGA_DEPL_R","CART_DURT_R", - "NOEU_DURT_R","ELEM_DURT_R","ELNO_DURT_R", - "ELGA_DURT_R","CART_ENER_R","NOEU_ENER_R", - "ELEM_ENER_R","ELNO_ENER_R","ELGA_ENER_R", - "CART_EPSI_R","NOEU_EPSI_R","ELEM_EPSI_R", - "ELNO_EPSI_R","ELGA_EPSI_R","CART_ERREUR", - "NOEU_ERREUR","ELEM_ERREUR","ELNO_ERREUR", - "ELGA_ERREUR","CART_FLUX_R","NOEU_FLUX_R", - "ELEM_FLUX_R","ELNO_FLUX_R","ELGA_FLUX_R", - "CART_GEOM_R","NOEU_GEOM_R","ELEM_GEOM_R", - "ELNO_GEOM_R","ELGA_GEOM_R","CART_G_DEPL_R", - "NOEU_G_DEPL_R","ELEM_G_DEPL_R","ELNO_G_DEPL_R", - "ELGA_G_DEPL_R","CART_HYDR_R","NOEU_HYDR_R", - "ELEM_HYDR_R","ELNO_HYDR_R","ELGA_HYDR_R", - "CART_INST_R","NOEU_INST_R","ELEM_INST_R", - "ELNO_INST_R","ELGA_INST_R","CART_INTE_R", - "NOEU_INTE_R","ELEM_INTE_R","ELNO_INTE_R", - "ELGA_INTE_R","CART_META_R","NOEU_META_R", - "ELEM_META_R","ELNO_META_R","ELGA_META_R", - "CART_NEUT_F","NOEU_NEUT_F","ELEM_NEUT_F", - "ELNO_NEUT_F","ELGA_NEUT_F","CART_NEUT_R", - "NOEU_NEUT_R","ELEM_NEUT_R","ELNO_NEUT_R", - "ELGA_NEUT_R","CART_PRES_R","NOEU_PRES_R", - "ELEM_PRES_R","ELNO_PRES_R","ELGA_PRES_R", - "CART_SIEF_R","NOEU_SIEF_R","ELEM_SIEF_R", - "ELNO_SIEF_R","ELGA_SIEF_R","CART_SOUR_R", - "NOEU_SOUR_R","ELEM_SOUR_R","ELNO_SOUR_R", - "ELGA_SOUR_R","CART_TEMP_F","NOEU_TEMP_F", - "ELEM_TEMP_F","ELNO_TEMP_F","ELGA_TEMP_F", - "CART_TEMP_R","NOEU_TEMP_R","ELEM_TEMP_R", - "ELNO_TEMP_R","ELGA_TEMP_R","CART_VAR2_R", - "NOEU_VAR2_R","ELEM_VARI_R","ELNO_VARI_R", - "ELGA_VARI_R","CART_VNOR_C","NOEU_VNOR_C", + UIinfo={"groupes":("Résultats et champs",)}, + TYPE_CHAM =SIMP(statut='o',typ='TXM', + into=("CART_DBEL_R","NOEU_DBEL_R","ELEM_DBEL_R", + "ELNO_DBEL_R","ELGA_DBEL_R","CART_DEPL_C", + "NOEU_DEPL_C","ELEM_DEPL_C","ELNO_DEPL_C", + "ELGA_DEPL_C","CART_DEPL_F","NOEU_DEPL_F", + "ELEM_DEPL_F","ELNO_DEPL_F","ELGA_DEPL_F", + "CART_DEPL_R","NOEU_DEPL_R","ELEM_DEPL_R", + "ELNO_DEPL_R","ELGA_DEPL_R","CART_DURT_R", + "NOEU_DURT_R","ELEM_DURT_R","ELNO_DURT_R", + "ELGA_DURT_R","CART_ENER_R","NOEU_ENER_R", + "ELEM_ENER_R","ELNO_ENER_R","ELGA_ENER_R", + "CART_EPSI_R","NOEU_EPSI_R","ELEM_EPSI_R", + "ELNO_EPSI_R","ELGA_EPSI_R","CART_ERREUR", + "NOEU_ERREUR","ELEM_ERREUR","ELNO_ERREUR", + "ELGA_ERREUR","CART_FLUX_R","NOEU_FLUX_R", + "ELEM_FLUX_R","ELNO_FLUX_R","ELGA_FLUX_R", + "CART_GEOM_R","NOEU_GEOM_R","ELEM_GEOM_R", + "ELNO_GEOM_R","ELGA_GEOM_R","CART_G_DEPL_R", + "NOEU_G_DEPL_R","ELEM_G_DEPL_R","ELNO_G_DEPL_R", + "ELGA_G_DEPL_R","CART_HYDR_R","NOEU_HYDR_R", + "ELEM_HYDR_R","ELNO_HYDR_R","ELGA_HYDR_R", + "CART_INST_R","NOEU_INST_R","ELEM_INST_R", + "ELNO_INST_R","ELGA_INST_R","CART_INTE_R", + "NOEU_INTE_R","ELEM_INTE_R","ELNO_INTE_R", + "ELGA_INTE_R","CART_META_R","NOEU_META_R", + "ELEM_META_R","ELNO_META_R","ELGA_META_R", + "CART_NEUT_F","NOEU_NEUT_F","ELEM_NEUT_F", + "ELNO_NEUT_F","ELGA_NEUT_F","CART_NEUT_R", + "NOEU_NEUT_R","ELEM_NEUT_R","ELNO_NEUT_R", + "ELGA_NEUT_R","CART_PRES_R","NOEU_PRES_R", + "ELEM_PRES_R","ELNO_PRES_R","ELGA_PRES_R", + "CART_SIEF_R","NOEU_SIEF_R","ELEM_SIEF_R", + "ELNO_SIEF_R","ELGA_SIEF_R","CART_SOUR_R", + "NOEU_SOUR_R","ELEM_SOUR_R","ELNO_SOUR_R", + "ELGA_SOUR_R","CART_TEMP_F","NOEU_TEMP_F", + "ELEM_TEMP_F","ELNO_TEMP_F","ELGA_TEMP_F", + "CART_TEMP_R","NOEU_TEMP_R","ELEM_TEMP_R", + "ELNO_TEMP_R","ELGA_TEMP_R","CART_VAR2_R", + "NOEU_VAR2_R","ELEM_VARI_R","ELNO_VARI_R", + "ELGA_VARI_R","CART_VNOR_C","NOEU_VNOR_C", "ELEM_VNOR_C","ELNO_VNOR_C","ELGA_VNOR_C", "CART_IRRA_R","NOEU_IRRA_R","ELEM_IRRA_R", "ELNO_IRRA_R","ELGA_IRRA_R",) ), # SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS : # ------------------------------------------------------------------ - regles=(EXCLUS('NUME_DDL','CHAM_NO',)), + regles=(EXCLUS('NUME_DDL','CHAM_NO',)), NUME_DDL =SIMP(statut='f',typ=(nume_ddl) ), CHAM_NO =SIMP(statut='f',typ=(cham_no) ), OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC",) ), - b_affe =BLOC(condition = "OPERATION == 'AFFE'", - regles=(UN_PARMI('MAILLAGE','MODELE'),EXCLUS('MAILLAGE','PROL_ZERO'),), + b_affe =BLOC(condition = "OPERATION == 'AFFE'", + regles=(UN_PARMI('MAILLAGE','MODELE'),), MAILLAGE =SIMP(statut='f',typ=(maillage) ), MODELE =SIMP(statut='f',typ=(modele) ), - PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - AFFE =FACT(statut='o',min=01,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), + b_affe_modele =BLOC(condition = "MODELE != None", + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ), + AFFE =FACT(statut='o',min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',), UN_PARMI('VALE','VALE_I','VALE_C','VALE_F', ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), - NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ), - VALE =SIMP(statut='f',typ='R',max='**' ), - VALE_I =SIMP(statut='f',typ='I',max='**' ), - VALE_C =SIMP(statut='f',typ='C',max='**' ), - VALE_F =SIMP(statut='f',typ=fonction,max='**'), + NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ), + VALE =SIMP(statut='f',typ='R',max='**' ), + VALE_I =SIMP(statut='f',typ='I',max='**' ), + VALE_C =SIMP(statut='f',typ='C',max='**' ), + VALE_F =SIMP(statut='f',typ=fonction,max='**'), ), ), - b_asse =BLOC(condition = "OPERATION == 'ASSE'", - regles=(UN_PARMI('MAILLAGE','MODELE'),EXCLUS('MAILLAGE','PROL_ZERO'),), + b_asse =BLOC(condition = "OPERATION == 'ASSE'", + regles=(UN_PARMI('MAILLAGE','MODELE'),), MAILLAGE =SIMP(statut='f',typ=(maillage) ), MODELE =SIMP(statut='f',typ=(modele) ), - PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - ASSE =FACT(statut='o',min=01,max='**', - regles=(AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), + b_asse_modele =BLOC(condition = "MODELE != None", + PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ), + ASSE =FACT(statut='o',min=1,max='**', + regles=(AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',), PRESENT_PRESENT('NOM_CMP_RESU','NOM_CMP', ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -4777,91 +4950,91 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, MAILLE =SIMP(statut='f',typ=ma,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), CHAM_GD =SIMP(statut='o',typ=(cham_gd)), - NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ), - NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ), + NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ), + NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ), CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - COEF_R =SIMP(statut='f',typ='R',defaut= 1. ), + COEF_R =SIMP(statut='f',typ='R',defaut= 1. ), ), ), - b_eval =BLOC(condition = "OPERATION == 'EVAL'", + b_eval =BLOC(condition = "OPERATION == 'EVAL'", CHAM_F =SIMP(statut='o',typ=(cham_gd)), CHAM_PARA =SIMP(statut='o',typ=(cham_gd),max='**'), ), - b_disc =BLOC(condition = "OPERATION == 'DISC'", + b_disc =BLOC(condition = "OPERATION == 'DISC'", MODELE =SIMP(statut='f',typ=(modele) ), PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), CHAM_GD =SIMP(statut='o',typ=(cham_gd)), ), - b_extr =BLOC(condition = "OPERATION == 'EXTR'", - regles=(UN_PARMI('MAILLAGE','RESULTAT'),), + b_extr =BLOC(condition = "OPERATION == 'EXTR'", + regles=(UN_PARMI('MAILLAGE','RESULTAT'),), MAILLAGE =SIMP(statut='f',typ=(maillage) ), RESULTAT =SIMP(statut='f',typ=(resultat) ), b_extr_maillage =BLOC(condition = "MAILLAGE != None", NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)), ), b_extr_resultat =BLOC(condition = "RESULTAT != None", - regles=(EXCLUS('TYPE_MAXI','NUME_ORDRE','INST','FREQ','NUME_MODE', + regles=(EXCLUS('TYPE_MAXI','NUME_ORDRE','INST','FREQ','NUME_MODE', 'NOEUD_CMP','NOM_CAS','ANGL', ),), SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),max='**', fr="Liste des paramètres de sensibilité.", ang="List of sensitivity parameters"), - NOM_CHAM =SIMP(statut='o',typ='TXM', - into=("DEPL","VITE","ACCE", + NOM_CHAM =SIMP(statut='o',typ='TXM', + into=("DEPL","VITE","ACCE", "DEPL_ABSOLU","VITE_ABSOLU", - "TEMP","IRRA","ACCE_ABSOLU", - "FORC_NODA","REAC_NODA","EFGE_NOEU_DEPL", - "EFGE_NOEU_CART","EPSI_NOEU_DEPL", - "SIGM_NOEU_DEPL","SIGM_NOEU_CART", - "SIPO_NOEU_DEPL","EQUI_NOEU_SIGM", - "EQUI_NOEU_EPSI","FLUX_NOEU_TEMP", - "FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", - "META_ELGA_TEMP","META_ELNO_TEMP", - "META_NOEU_TEMP","DURT_ELGA_META", - "DURT_ELNO_META","DURT_NOEU_META","SIEF_ELGA", - "SIEF_ELNO_ELGA","SIEF_ELGA_DEPL", - "VARI_ELNO_ELGA","VARI_ELGA","EPOT_ELEM_DEPL", - "ECIN_ELEM_DEPL","SOUR_ELGA_ELEC", - "PRES_ELNO_REEL","PRES_ELNO_IMAG", - "PRES_ELNO_DBEL","INTE_ELNO_ACTI", - "INTE_ELNO_REAC","EFGE_ELNO_DEPL", - "SIGM_ELNO_DEPL","EFGE_ELNO_CART", - "SIGM_ELNO_CART","SIPO_ELNO_DEPL", - "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL", - "EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO", - "EPSP_ELGA","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", - "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI", - "ERRE_ELNO_ELGA","ERRE_ELGA_NORE", - "ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2", - "SIGM_NOZ1_ELGA","SIGM_NOZ2_ELGA", - "DEGE_ELNO_DEPL","SIRE_ELNO_DEPL", - "VNOR_ELEM_DEPL","SIEF_ELNO","VARI_ELNO", - "SIEF_NOEU_ELGA","VARI_NOEU_ELGA", - "PRES_NOEU_DBEL","PRES_NOEU_REEL", - "PRES_NOEU_IMAG","INTE_NOEU_ACTI", - "INTE_NOEU_REAC","DCHA_ELGA_SIGM", - "DCHA_ELNO_SIGM","RADI_ELGA_SIGM", - "RADI_ELNO_SIGM","ENDO_ELNO_SIGA", - "ENDO_ELNO_SINO","ENDO_ELNO_SIGM", - "SIGM_ELNO_VARI","SIGM_NOEU_VARI", - "EPME_ELNO_DEPL","EPME_ELGA_DEPL", - "EPME_ELNO_DPGE","EPMG_ELNO_DEPL", - "EPMG_ELGA_DEPL","GRAD_ELGA_THETA", + "TEMP","IRRA","ACCE_ABSOLU", + "FORC_NODA","REAC_NODA","EFGE_NOEU_DEPL", + "EFGE_NOEU_CART","EPSI_NOEU_DEPL", + "SIGM_NOEU_DEPL","SIGM_NOEU_CART", + "SIPO_NOEU_DEPL","EQUI_NOEU_SIGM", + "EQUI_NOEU_EPSI","FLUX_NOEU_TEMP", + "FLUX_ELGA_TEMP","FLUX_ELNO_TEMP", + "META_ELGA_TEMP","META_ELNO_TEMP", + "META_NOEU_TEMP","DURT_ELGA_META", + "DURT_ELNO_META","DURT_NOEU_META","SIEF_ELGA", + "SIEF_ELNO_ELGA","SIEF_ELGA_DEPL", + "VARI_ELNO_ELGA","VARI_ELGA","EPOT_ELEM_DEPL", + "ECIN_ELEM_DEPL","SOUR_ELGA_ELEC", + "PRES_ELNO_REEL","PRES_ELNO_IMAG", + "PRES_ELNO_DBEL","INTE_ELNO_ACTI", + "INTE_ELNO_REAC","EFGE_ELNO_DEPL", + "SIGM_ELNO_DEPL","EFGE_ELNO_CART", + "SIGM_ELNO_CART","SIPO_ELNO_DEPL", + "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL", + "EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO", + "EPSP_ELGA","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM", + "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI", + "ERRE_ELNO_ELGA","ERRE_ELGA_NORE", + "ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2", + "SIGM_NOZ1_ELGA","SIGM_NOZ2_ELGA", + "DEGE_ELNO_DEPL","SIRE_ELNO_DEPL", + "VNOR_ELEM_DEPL","SIEF_ELNO","VARI_ELNO", + "SIEF_NOEU_ELGA","VARI_NOEU_ELGA", + "PRES_NOEU_DBEL","PRES_NOEU_REEL", + "PRES_NOEU_IMAG","INTE_NOEU_ACTI", + "INTE_NOEU_REAC","DCHA_ELGA_SIGM", + "DCHA_ELNO_SIGM","RADI_ELGA_SIGM", + "RADI_ELNO_SIGM","ENDO_ELNO_SIGA", + "ENDO_ELNO_SINO","ENDO_ELNO_SIGM", + "SIGM_ELNO_VARI","SIGM_NOEU_VARI", + "EPME_ELNO_DEPL","EPME_ELGA_DEPL", + "EPME_ELNO_DPGE","EPMG_ELNO_DEPL", + "EPMG_ELGA_DEPL","GRAD_ELGA_THETA", "GTHE_ELNO_ELGA","GRAD_NOEU_THETA", - "HYDR_ELGA","HYDR_ELNO_ELGA","HYDR_NOEU_ELGA", + "HYDR_ELGA","HYDR_ELNO_ELGA","HYDR_NOEU_ELGA", "THETA","SIGM_ELNO_SIEF","SIPO_ELNO_SIEF", "VALE_CONT",) ), TYPE_MAXI =SIMP(statut='f',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS","NORM_TRAN",) ), TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE",into=("VALE","INST",) ), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), LIST_INST =SIMP(statut='f',typ=(listr8) ), - NUME_ORDRE =SIMP(statut='f',typ='I'), - INST =SIMP(statut='f',typ='R'), - FREQ =SIMP(statut='f',typ='R'), - NUME_MODE =SIMP(statut='f',typ='I'), - NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'), - NOM_CAS =SIMP(statut='f',typ='TXM'), - ANGL =SIMP(statut='f',typ='R'), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), + NUME_ORDRE =SIMP(statut='f',typ='I'), + INST =SIMP(statut='f',typ='R'), + FREQ =SIMP(statut='f',typ='R'), + NUME_MODE =SIMP(statut='f',typ='I'), + NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'), + NOM_CAS =SIMP(statut='f',typ='TXM'), + ANGL =SIMP(statut='f',typ='R'), + PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ), ), @@ -4870,9 +5043,9 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, # FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULAT : #----------------------------------------------------- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ), - TITRE =SIMP(statut='f',typ='TXM',max='**' ), + TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4892,12 +5065,13 @@ CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod, # ====================================================================== CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, docu="U4.23.02-d1",reentrant='n', + UIinfo={"groupes":("Maillage",)}, regles=(EXCLUS('ECLA_PG','CREA_MAILLE'), EXCLUS('ECLA_PG','CREA_GROUP_MA'), EXCLUS('ECLA_PG','DETR_GROUP_MA'), EXCLUS('ECLA_PG','MODI_MAILLE'),), MAILLAGE =SIMP(statut='o',typ=maillage ), - CREA_POI1 =FACT(statut='f',min=01,max='**',fr="Création de mailles de type POI1 à partir de noeuds", + CREA_POI1 =FACT(statut='f',min=1,max='**',fr="Création de mailles de type POI1 à partir de noeuds", regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD' ),), NOM_GROUP_MA =SIMP(statut='f',typ=grma,max='**'), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -4906,7 +5080,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, GROUP_NO =SIMP(statut='f',typ=grno,max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), ), - CREA_MAILLE =FACT(statut='f',min=01,max='**',fr="Duplication de mailles", + CREA_MAILLE =FACT(statut='f',min=1,max='**',fr="Duplication de mailles", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE =SIMP(statut='f',typ=ma,max='**'), @@ -4914,7 +5088,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, PREF_MAILLE =SIMP(statut='o',typ='TXM' ), PREF_NUME =SIMP(statut='f',typ='I' ), ), - CREA_GROUP_MA =FACT(statut='f',min=01,max='**',fr="Duplication de mailles et création de groupes de mailles", + CREA_GROUP_MA =FACT(statut='f',min=1,max='**',fr="Duplication de mailles et création de groupes de mailles", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), NOM =SIMP(statut='o',typ='TXM'), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -4923,12 +5097,12 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, PREF_MAILLE =SIMP(statut='o',typ='TXM' ), PREF_NUME =SIMP(statut='f',typ='I' ), ), - DETR_GROUP_MA =FACT(statut='f',min=01,max=01,fr="Destruction de groupes de mailles", + DETR_GROUP_MA =FACT(statut='f',min=1,max=1,fr="Destruction de groupes de mailles", GROUP_MA =SIMP(statut='f',typ=grma,max='**'), NB_MAILLE =SIMP(statut='f',typ='I',defaut= 0, fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit", ), ), - MODI_MAILLE =FACT(statut='f',min=01,max='**',fr="Modification du type de mailles", + MODI_MAILLE =FACT(statut='f',min=1,max='**',fr="Modification du type de mailles", regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE =SIMP(statut='f',typ=grma,max='**'), @@ -4937,7 +5111,7 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"), PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ), ), - REPERE =FACT(statut='f',min=01,max='**', + REPERE =FACT(statut='f',min=1,max='**', fr="changement de repère servant à déterminer les caractéristiques d une section de poutre", TABLE =SIMP(statut='o',typ=tabl_cara_geom, fr="Nom de la table contenant les caractéristiques de la section de poutre" ), @@ -4948,14 +5122,14 @@ CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage, fr="Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère"), ), ), - ECLA_PG =FACT(statut='f',min=01,max=01, + ECLA_PG =FACT(statut='f',min=1,max=1, fr="Eclatement des mailles en petites mailles contenant chacune un seul point de gauss", MODELE =SIMP(statut='o',typ=modele ), SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -4983,6 +5157,7 @@ def crea_resu_prod(TYPE_RESU,**args): raise AsException("type de concept resultat non prevu") CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3",reentrant='f', + UIinfo={"groupes":("Modélisation",)}, fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes", OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ECLA_PG","PERM_CHAM","PROL_RTZ",), @@ -4993,7 +5168,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS", "EVOL_THER","EVOL_VARC",) ), NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","TEMP","IRRA","HYDR_ELGA",),max=1 ), - AFFE =FACT(statut='f',min=01,max='**', + AFFE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOM_CAS','NUME_MODE','LIST_INST','INST',),), CHAM_GD =SIMP(statut='f',typ=(cham_gd)), NOM_CAS =SIMP(statut='f',typ='TXM' ), @@ -5012,7 +5187,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_ELAS","EVOL_NOLI","EVOL_THER"), ), - ECLA_PG =FACT(statut='f',min=01,max=01, + ECLA_PG =FACT(statut='f',min=1,max=1, regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), NOM_CHAM =SIMP(statut='o',typ='TXM',max='**', into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ), @@ -5040,7 +5215,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", MAILLAGE_INIT =SIMP(statut='o',typ=maillage,), RESU_FINAL =SIMP(statut='o',typ=evol_noli,), MAILLAGE_FINAL =SIMP(statut='o',typ=maillage,), - PERM_CHAM =FACT(statut='o',min=01,max=01, + PERM_CHAM =FACT(statut='o',min=1,max=1, GROUP_MA_FINAL =SIMP(statut='o',typ=grma), GROUP_MA_INIT =SIMP(statut='o',typ=grma), TRAN =SIMP(statut='o',typ='R',max='**'), @@ -5052,7 +5227,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER",) ), - PROL_RTZ =FACT(statut='f',min=01,max=01, + PROL_RTZ =FACT(statut='f',min=1,max=1, regles=(EXCLUS('INST','LIST_INST'),), MAILLAGE_FINAL =SIMP(statut='o',typ=maillage,), TABLE =SIMP(statut='o',typ=tabl_post_rele,fr="Table issue de post_releve_t"), @@ -5065,13 +5240,13 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),), REPERE =SIMP(statut='o',typ='TXM',into=("CYLINDRIQUE",),), - ORIGINE =SIMP(statut='o',typ='R',min=03,max=03), - AXE_Z =SIMP(statut='o',typ='R',min=03,max=03), + ORIGINE =SIMP(statut='o',typ='R',min=3,max=3), + AXE_Z =SIMP(statut='o',typ='R',min=3,max=3), ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5090,6 +5265,7 @@ CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,docu="U4.44.12-e3", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEBUT=MACRO(nom="DEBUT",op=0 ,docu="U4.11.01-g2",repetable='n', + UIinfo={"groupes":("Gestion du travail",)}, fr="Ouverture d une étude. Allocation des ressources mémoire et disque", sd_prod=ops.DEBUT, @@ -5129,7 +5305,7 @@ DEBUT=MACRO(nom="DEBUT",op=0 ,docu="U4.11.01-g2",repetable='n', ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA", statut='f',typ='TXM',into=('TEST',)), ), - MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=01,max=01, + MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1, GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'), TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1), TAILLE =SIMP(statut='f',typ='I'), @@ -5137,7 +5313,7 @@ DEBUT=MACRO(nom="DEBUT",op=0 ,docu="U4.11.01-g2",repetable='n', PARTITION =SIMP(statut='f',typ='R'), ), ); -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5157,13 +5333,14 @@ DEBUT=MACRO(nom="DEBUT",op=0 ,docu="U4.11.01-g2",repetable='n', # ====================================================================== DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, docu="U4.64.02-f1",reentrant='f', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS'),), - CLASSIQUE =FACT(statut='f',min=01,max=01, + CLASSIQUE =FACT(statut='f',min=1,max=1, INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ), MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ), NMAX_MODE =SIMP(statut='f',typ='I',defaut= 10 ), ), - RITZ =FACT(statut='f',min=01,max='**', + RITZ =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MODE_STAT','MODE_MECA','MULT_ELAS','BASE_MODALE'),), MODE_MECA =SIMP(statut='f',typ=mode_meca,max='**' ), NMAX_MODE =SIMP(statut='f',typ='I',defaut= 999 ), @@ -5171,7 +5348,7 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, MULT_ELAS =SIMP(statut='f',typ=mult_elas ), BASE_MODALE =SIMP(statut='f',typ=base_modale ), ), - DIAG_MASS =FACT(statut='f',min=01,max='**', + DIAG_MASS =FACT(statut='f',min=1,max='**', MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ), MODE_STAT =SIMP(statut='o',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ), ), @@ -5184,7 +5361,7 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5205,6 +5382,7 @@ DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale, DEFI_CABLE_BP=OPER(nom="DEFI_CABLE_BP",op= 180,sd_prod=cabl_precont, fr=" ", docu="U4.42.04-a",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, MODELE =SIMP(statut='o',typ=modele ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='o',typ=cara_elem ), @@ -5226,7 +5404,7 @@ DEFI_CABLE_BP=OPER(nom="DEFI_CABLE_BP",op= 180,sd_prod=cabl_precont, ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5247,11 +5425,12 @@ DEFI_CABLE_BP=OPER(nom="DEFI_CABLE_BP",op= 180,sd_prod=cabl_precont, DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction, fr="Définition d une fonction constante", docu="U4.31.01-f",reentrant='n', + UIinfo={"groupes":("Fonction",)}, NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), - VALE =SIMP(statut='o',typ='R',max=01 ), + VALE =SIMP(statut='o',typ='R',max=1 ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5270,20 +5449,21 @@ DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater,docu="U4.42.03-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, fr="Définition d une coque composite couche par couche", - COUCHE =FACT(statut='o',min=01,max='**', + COUCHE =FACT(statut='o',min=1,max='**', EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ), MATER =SIMP(statut='o',typ=(mater) ), ORIENTATION =SIMP(statut='f',typ='R',defaut= 0.E+0, val_min=-90.E+0,val_max=90.E+0 ), ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT", into=("RESULTAT",) ), ), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5303,8 +5483,9 @@ DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater,docu="U4.42.03-e",r # ====================================================================== DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, docu="U4.25.01-d",reentrant='n', + UIinfo={"groupes":("Maillage",)}, regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),), - FAISCEAU_TRANS =FACT(statut='f',min=01,max='**', + FAISCEAU_TRANS =FACT(statut='f',min=1,max='**', COUPLAGE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), PROF_VITE_FLUI =SIMP(statut='o',typ=fonction ), @@ -5318,7 +5499,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, UNITE_CK =SIMP(statut='f',typ='I',defaut=71), PAS =SIMP(statut='f',typ='R' ), ), - GRAPPE =FACT(statut='f',min=00,max=01, + GRAPPE =FACT(statut='f',max=1, regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',), PRESENT_PRESENT('COEF_MASS_AJOU','GRAPPE_2', ),), # peut on créer un bloc a partir de la valeur de couplage @@ -5333,7 +5514,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, UNITE_CA =SIMP(statut='f',typ='I',defaut=70), UNITE_KA =SIMP(statut='f',typ='I',defaut=71), ), - FAISCEAU_AXIAL =FACT(statut='f',min=01,max='**', + FAISCEAU_AXIAL =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('GROUP_MA','TRI_GROUP_MA'), UN_PARMI('CARA_ELEM','RAYON_TUBE'), ENSEMBLE('RAYON_TUBE','COOR_TUBE'), @@ -5344,17 +5525,17 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, # on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire GROUP_MA =SIMP(statut='f',typ=grma,max='**'), TRI_GROUP_MA =SIMP(statut='f',typ='TXM' ), - VECT_X =SIMP(statut='f',typ='R',max=03), + VECT_X =SIMP(statut='f',typ='R',max=3), PROF_RHO_FLUI =SIMP(statut='f',typ=fonction ), PROF_VISC_CINE =SIMP(statut='f',typ=fonction ), CARA_ELEM =SIMP(statut='f',typ=cara_elem ), RAYON_TUBE =SIMP(statut='f',typ='R' ), COOR_TUBE =SIMP(statut='f',typ='R',max='**'), - PESANTEUR =SIMP(statut='f',typ='R',min=04,max=04), + PESANTEUR =SIMP(statut='f',typ='R',min=4,max=4), RUGO_TUBE =SIMP(statut='f',typ='R' ), - CARA_PAROI =SIMP(statut='f',typ='TXM',max=05, + CARA_PAROI =SIMP(statut='f',typ='TXM',max=5, into=("YC","ZC","R","HY","HZ") ), - VALE_PAROI =SIMP(statut='f',typ='R',max=05), + VALE_PAROI =SIMP(statut='f',typ='R',max=5), ANGL_VRIL =SIMP(statut='f',typ='R' ), LONG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), LARG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0), @@ -5365,7 +5546,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, COOR_GRILLE =SIMP(statut='f',typ='R',max='**'), TYPE_GRILLE =SIMP(statut='f',typ='I',max='**'), ), - COQUE_COAX =FACT(statut='f',min=00,max=01, + COQUE_COAX =FACT(statut='f',max=1, MASS_AJOU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), GROUP_MA_INT =SIMP(statut='o',typ=grma), GROUP_MA_EXT =SIMP(statut='o',typ=grma), @@ -5383,7 +5564,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 23/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5402,6 +5583,7 @@ DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction,docu="U4.MK.10-e",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, fr="Définition d une fonction du temps pour calculer des forces de LAPLACE", regles=(UN_PARMI('COUR_PRIN','COUR'), EXCLUS('COUR','COUR_SECO'), ), @@ -5451,7 +5633,7 @@ DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction,docu="U4.MK.10-e ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 03/10/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5471,6 +5653,7 @@ DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction,docu="U4.MK.10-e # ====================================================================== DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction, docu="U4.35.01-c",reentrant='n', + UIinfo={"groupes":("Fonction",)}, MAILLAGE =SIMP(statut='o',typ=(maillage) ), NOEUD_INIT =SIMP(statut='o',typ=no), NOEUD_FIN =SIMP(statut='o',typ=no), @@ -5488,7 +5671,7 @@ DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5517,6 +5700,7 @@ def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,**args): DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod ,fr="Définition des valeurs réelles ou complexes d une fonction réelle", docu="U4.31.02-g3",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),), NOM_PARA =SIMP(statut='o',typ='TXM', into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP", @@ -5547,7 +5731,7 @@ DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5566,6 +5750,7 @@ DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,docu="U4.82.01-e",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, fr="Définition de lèvres et d un fond de fissure en 3D", regles=(UN_PARMI('FOND','FOND_FERME'), EXCLUS('FOND_FERME','DTAN_ORIG'), @@ -5579,7 +5764,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,docu="U4.82.01- EXCLUS('DTAN_ORIG','VECT_GRNO_ORIG'), EXCLUS('DTAN_EXTR','VECT_GRNO_EXTR') ,), MAILLAGE =SIMP(statut='o',typ=maillage ), - FOND =FACT(statut='f',min=01,max=01, + FOND =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'), EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'), EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),), @@ -5593,7 +5778,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,docu="U4.82.01- NOEUD_EXTR =SIMP(statut='f',typ=no,max=1), GROUP_NO_EXTR =SIMP(statut='f',typ=grno,max=1), ), - FOND_FERME =FACT(statut='f',min=01,max=01, + FOND_FERME =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'), EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), @@ -5605,12 +5790,12 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,docu="U4.82.01- MAILLE_ORIG =SIMP(statut='f',typ=ma,max=1), GROUP_MA_ORIG =SIMP(statut='f',typ=ma,max=1), ), - LEVRE_SUP =FACT(statut='f',min=01,max=01, + LEVRE_SUP =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('GROUP_MA','MAILLE'),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), ), - LEVRE_INF =FACT(statut='f',min=01,max=01, + LEVRE_INF =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('GROUP_MA','MAILLE', ),), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), @@ -5622,7 +5807,7 @@ DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,docu="U4.82.01- VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,max=2), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5649,10 +5834,11 @@ def defi_group_prod(MAILLAGE,**args): DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage", docu="U4.22.01-f1",reentrant='o', + UIinfo={"groupes":("Maillage",)}, regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO'),), MAILLAGE =SIMP(statut='o',typ=(maillage,squelette) ), - CREA_GROUP_MA =FACT(statut='f',min=01,max='**', + CREA_GROUP_MA =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','INTERSEC','UNION','DIFFE','OPTION'),), # quel est le concept attendu deriere NOM NOM =SIMP(statut='o',typ=grma), @@ -5673,37 +5859,37 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, ), b_face_normale =BLOC(condition = "OPTION == 'FACE_NORMALE'", regles=(UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), - ANGL_NAUT =SIMP(statut='f',typ='R',max=02), - VECT_NORMALE =SIMP(statut='f',typ='R',max=03), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), ANGL_PREC =SIMP(statut='f',typ='R',defaut= 0.5 ), VERI_SIGNE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), ), b_sphere =BLOC(condition = "OPTION == 'SPHERE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'),), - POINT =SIMP(statut='f',typ='R',max=03), + POINT =SIMP(statut='f',typ='R',max=3), NOEUD_CENTRE =SIMP(statut='f',typ=no), RAYON =SIMP(statut='o',typ='R' ), ), b_cylindre =BLOC(condition = "OPTION == 'CYLINDRE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'), UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), - POINT =SIMP(statut='f',typ='R',max=03), + POINT =SIMP(statut='f',typ='R',max=3), NOEUD_CENTRE =SIMP(statut='f',typ=no), RAYON =SIMP(statut='o',typ='R' ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=02), - VECT_NORMALE =SIMP(statut='f',typ='R',max=03), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), ), b_bande =BLOC(condition = "OPTION == 'BANDE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'), UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), - POINT =SIMP(statut='f',typ='R',max=03), + POINT =SIMP(statut='f',typ='R',max=3), NOEUD_CENTRE =SIMP(statut='f',typ=no), DIST =SIMP(statut='o',typ='R' ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=02), - VECT_NORMALE =SIMP(statut='f',typ='R',max=03), + ANGL_NAUT =SIMP(statut='f',typ='R',max=2), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), ), ), - CREA_GROUP_NO =FACT(statut='f',min=01,max='**', + CREA_GROUP_NO =FACT(statut='f',min=1,max='**', regles = ( AU_MOINS_UN ('TOUT_GROUP_MA','GROUP_MA','NOEUD', 'INTERSEC','UNION','DIFFE','GROUP_NO','OPTION'), @@ -5737,8 +5923,8 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, ), b_env_sphere =BLOC(condition = "OPTION == 'ENV_SPHERE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'),), - POINT =SIMP(statut='f',typ='R',max=03), - NOEUD_CENTRE =SIMP(statut='f',typ=no,max=01), + POINT =SIMP(statut='f',typ='R',max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no,max=1), RAYON =SIMP(statut='o',typ='R' ), PRECISION =SIMP(statut='f',typ='R' ), CRITERE =SIMP(statut='f',typ='TXM',into=("ABSOLU","RELATIF") ), @@ -5746,21 +5932,21 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, b_env_cylindre =BLOC(condition = "OPTION == 'ENV_CYLINDRE'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'), UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), - POINT =SIMP(statut='f',typ='R',max=03), - NOEUD_CENTRE =SIMP(statut='f',typ=no,max=01), + POINT =SIMP(statut='f',typ='R',max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no,max=1), RAYON =SIMP(statut='o',typ='R' ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=03), - VECT_NORMALE =SIMP(statut='f',typ='R',max=03), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), PRECISION =SIMP(statut='f',typ='R' ), CRITERE =SIMP(statut='f',typ='TXM',into=("ABSOLU","RELATIF") ), ), b_env_plan =BLOC(condition = "OPTION == 'PLAN'", regles=(UN_PARMI('POINT','NOEUD_CENTRE'), UN_PARMI('ANGL_NAUT','VECT_NORMALE'),), - POINT =SIMP(statut='f',typ='R',max=03), - NOEUD_CENTRE =SIMP(statut='f',typ=no,max=01), - ANGL_NAUT =SIMP(statut='f',typ='R',max=03), - VECT_NORMALE =SIMP(statut='f',typ='R',max=03), + POINT =SIMP(statut='f',typ='R',max=3), + NOEUD_CENTRE =SIMP(statut='f',typ=no,max=1), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + VECT_NORMALE =SIMP(statut='f',typ='R',max=3), PRECISION =SIMP(statut='f',typ='R' ), CRITERE =SIMP(statut='f',typ='TXM',into=("ABSOLU","RELATIF") ), ), @@ -5787,7 +5973,7 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, ), INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5807,6 +5993,7 @@ DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod, # ====================================================================== DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp, docu="U4.36.02-f2",reentrant='n', + UIinfo={"groupes":("Fonction",)}, DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ), @@ -5846,7 +6033,7 @@ DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5866,8 +6053,9 @@ DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp, # ====================================================================== DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, docu="U4.64.01-e",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, NUME_DDL =SIMP(statut='o',typ=nume_ddl ), - INTERFACE =FACT(statut='o',min=01,max='**', + INTERFACE =FACT(statut='o',min=1,max='**', regles=(ENSEMBLE('NOM','TYPE'), # erreur doc U sur la condition qui suit UN_PARMI('NOEUD','GROUP_NO'),), @@ -5881,7 +6069,7 @@ DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, FREQ =SIMP(statut='f',typ='R',defaut= 1.), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5903,11 +6091,12 @@ DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas, DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis, fr="Définition d une suite croissante d entiers", docu="U4.34.02-f",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('VALE','DEBUT'), EXCLUS('VALE','INTERVALLE'),), VALE =SIMP(statut='f',typ='I',max='**'), DEBUT =SIMP(statut='f',typ='I'), - INTERVALLE =FACT(statut='f',min=01,max='**', + INTERVALLE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOMBRE','PAS'),), JUSQU_A =SIMP(statut='o',typ='I'), NOMBRE =SIMP(statut='f',typ='I',val_min=1,), @@ -5916,7 +6105,7 @@ DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5938,12 +6127,13 @@ DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis, DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8, fr="Définition d une suite croissante de réels", docu="U4.34.01-g1",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('VALE','DEBUT',), EXCLUS('VALE','INTERVALLE'), ENSEMBLE('DEBUT','INTERVALLE')), VALE =SIMP(statut='f',typ='R',max='**'), DEBUT =SIMP(statut='f',typ='R'), - INTERVALLE =FACT(statut='f',min=01,max='**', + INTERVALLE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOMBRE','PAS'),), JUSQU_A =SIMP(statut='o',typ='R'), NOMBRE =SIMP(statut='f',typ='I'), @@ -5952,7 +6142,7 @@ DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8, INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -5974,23 +6164,24 @@ DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8, DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, fr="Définition d un nouveau maillage à partir de macro éléments", docu="U4.23.01-e",reentrant='n', - DEFI_MAILLE =FACT(statut='o',min=01,max='**', + UIinfo={"groupes":("Maillage",)}, + DEFI_MAILLE =FACT(statut='o',min=1,max='**', MACR_ELEM_STAT =SIMP(statut='o',typ=macr_elem_stat,max='**' ), MAILLE =SIMP(statut='f',typ=ma,max='**'), - TRAN =SIMP(statut='f',typ='R',max=03), - ANGL_NAUT =SIMP(statut='f',typ='R',max=03), + TRAN =SIMP(statut='f',typ='R',max=3), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), b_angl_naut =BLOC(condition = "ANGL_NAUT != None", - CENTRE =SIMP(statut='f',typ='R',max=03), + CENTRE =SIMP(statut='f',typ='R',max=3), ), ), - RECO_GLOBAL =FACT(statut='f',min=01,max='**', + RECO_GLOBAL =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','MAILLE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), MAILLE =SIMP(statut='f',typ=ma,max='**'), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), ), - RECO_MAILLE =FACT(statut='f',min=01,max='**', + RECO_MAILLE =FACT(statut='f',min=1,max='**', MAILLE =SIMP(statut='o',typ=ma,max='**'), GROUP_NO =SIMP(statut='o',typ=grno,max='**'), OPTION =SIMP(statut='f',typ='TXM',defaut="GEOMETRIQUE",into=("GEOMETRIQUE","NOEUD_A_NOEUD","INVERSE") ), @@ -5999,7 +6190,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), ), ), - DEFI_NOEUD =FACT(statut='f',min=01,max='**', + DEFI_NOEUD =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','NOEUD_INIT'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), fr="Renommage de tous les noeuds" ), @@ -6014,7 +6205,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, NOEUD_FIN =SIMP(statut='o',typ=no), ), ), - DEFI_GROUP_NO =FACT(statut='f',min=01,max='**', + DEFI_GROUP_NO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','MAILLE'), AU_MOINS_UN('INDEX','GROUP_NO_FIN'), ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),), @@ -6030,7 +6221,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, GROUP_NO_FIN =SIMP(statut='f',typ=grno), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -6051,6 +6242,7 @@ DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage, DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, fr="Définition des paramètres décrivant le comportement d un matériau", docu="U4.43.01-g4",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH', 'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO', 'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'), @@ -6069,13 +6261,12 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, EXCLUS('LMARC','LMARC_FO'), EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'), EXCLUS('VENDOCHAB','VENDOCHAB_FO'), - PRESENT_PRESENT('BPEL_BETON','ELAS'), PRESENT_PRESENT('BPEL_ACIER','ELAS'), EXCLUS('RCCM','RCCM_FO'), EXCLUS('WEIBULL','WEIBULL_FO'), PRESENT_PRESENT('CAM_CLAY','ELAS'), PRESENT_PRESENT('LAIGLE','ELAS'), - PRESENT_PRESENT('MAZARS','ELAS'), + EXCLUS('MAZARS','MAZARS_FO'), PRESENT_PRESENT('GRANGER_FD','ELAS_FO'), ), @@ -6800,7 +6991,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ), JEU =SIMP(statut='f',typ='R',defaut= 0.E+0 ), KT_ULTM =SIMP(statut='f',typ='R',defaut= 0.E+0 ), - EFFO_N_INIT =SIMP(statut='f',typ='R'), + EFFO_N_INIT =SIMP(statut='f',typ=fonction), regles=(EXCLUS('RIGI_N_FO','RIGI_N_IRRA',),), RIGI_N_IRRA =SIMP(statut='f',typ=fonction), RIGI_N_FO =SIMP(statut='f',typ=fonction), @@ -6808,6 +6999,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, C_PRAGER_MZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ), VERI_P1 =SIMP(statut='c',typ='TXM',defaut="DRZ",into=("DRZ",) ), VERI_P2 =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ), + VERI_P3 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), NADAI_B =FACT(statut='f',min=0,max=1, F_C =SIMP(statut='o',typ='R'), @@ -6852,7 +7044,16 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, AT =SIMP(statut='o',typ='R'), BT =SIMP(statut='o',typ='R'), ), - VENDOCHAB =FACT(statut='f',min=0,max=1, + MAZARS_FO=FACT(statut='f',min=0 ,max=1, + EPSD0 =SIMP(statut='o',typ=fonction), + BETA =SIMP(statut='o',typ='R'), + AC =SIMP(statut='o',typ=fonction), + BC =SIMP(statut='o',typ=fonction), + AT =SIMP(statut='o',typ=fonction), + BT =SIMP(statut='o',typ=fonction), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), + ), + VENDOCHAB =FACT(statut='f',min=0,max=1, S_VP =SIMP(statut='o',typ='R'), SEDVP1 =SIMP(statut='o',typ='R'), SEDVP2 =SIMP(statut='o',typ='R'), @@ -6910,11 +7111,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, PA =SIMP(statut='o',typ='R'), ), CJS =FACT(statut='f',min=0,max=1, - regles=(ENSEMBLE('B_CJS','C_CJS','MU_CJS','PCO',), - ENSEMBLE('N_CJS','KP','RC',), - PRESENT_ABSENT('A_CJS','B_CJS',), - PRESENT_PRESENT('A_CJS','N_CJS',), - PRESENT_PRESENT('B_CJS','N_CJS', ),), BETA_CJS =SIMP(statut='o',typ='R'), RM =SIMP(statut='o',typ='R'), N_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), @@ -6953,9 +7149,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, TAUX_6 =SIMP(statut='f',typ='R'), TAUX_7 =SIMP(statut='f',typ='R'), TAUX_8 =SIMP(statut='f',typ='R'), - FONC_DESORP =SIMP(statut='f',typ=fonction), QSR_K =SIMP(statut='f',typ='R'), - VERI_P1 =SIMP(statut='c',typ='TXM',defaut="SECH",into=("SECH",) ), ), V_GRANGER_FP =FACT(statut='f',min=0,max=1, QSR_VEIL =SIMP(statut='f',typ='R'), @@ -7050,8 +7244,6 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, D1 =SIMP(statut='o',typ='R'), ALPHA_BAZANT =SIMP(statut='o',typ='R'), N =SIMP(statut='o',typ='R'), - FONC_DESORP =SIMP(statut='o',typ=fonction), - VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), SECH_NAPPE =FACT(statut='f',min=0,max=1, FONCTION =SIMP(statut='o',typ=fonction), @@ -7378,6 +7570,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, S =SIMP(statut='f',typ=fonction), N_KE =SIMP(statut='f',typ=fonction), M_KE =SIMP(statut='f',typ=fonction), + VERI_P1 =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ), ), LAIGLE =FACT(statut='f',min=0,max=1, GAMMA_ULT =SIMP(statut='o',typ='R'), @@ -7398,7 +7591,7 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7418,26 +7611,27 @@ DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater, # ====================================================================== DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, docu="U4.65.02-d",reentrant='n', - SOUS_STRUC =FACT(statut='o',min=01,max='**', + UIinfo={"groupes":("Matrices/vecteurs",)}, + SOUS_STRUC =FACT(statut='o',min=1,max='**', NOM =SIMP(statut='o',typ='TXM' ), MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), - ANGL_NAUT =SIMP(statut='f',typ='R',max=03), - TRANS =SIMP(statut='f',typ='R',max=03), + ANGL_NAUT =SIMP(statut='f',typ='R',max=3), + TRANS =SIMP(statut='f',typ='R',max=3), ), - LIAISON =FACT(statut='o',min=01,max='**', + LIAISON =FACT(statut='o',min=1,max='**', SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ), INTERFACE_1 =SIMP(statut='o',typ='TXM' ), SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ), INTERFACE_2 =SIMP(statut='o',typ='TXM' ), ), - VERIF =FACT(statut='f',min=01,max='**', + VERIF =FACT(statut='f',min=1,max='**', # dans la doc U stop_erreur est obligatoire STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7458,16 +7652,19 @@ DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene, DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=fonction, fr="Définition des valeurs d une fonction de deux variables réelles", docu="U4.31.03-g1",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('FONCTION','DEFI_FONCTION'), EXCLUS('FONCTION','NOM_PARA_FONC',), ENSEMBLE('NOM_PARA_FONC','DEFI_FONCTION'),), NOM_PARA =SIMP(statut='o',typ='TXM',into=("TEMP","INST","X","Y","Z","FREQ","PULS", - "AMOR","EPAIS","TSEC","HYDR","SECH") ), + "AMOR","EPAIS","TSEC","HYDR","SECH", + "SAT", "PGAZ","PCAP" + ) ), NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"), PARA =SIMP(statut='o',typ='R',max='**'), FONCTION =SIMP(statut='f',typ=fonction,max='**' ), NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=("TEMP","INST","X","Y","Z","EPSI","FREQ", - "PULS","AMOR","EPAIS") ), + "PULS","AMOR","EPAIS","SAT", "PGAZ","PCAP") ), DEFI_FONCTION =FACT(statut='f',max='**', VALE =SIMP(statut='o',typ='R',max='**'), INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ), @@ -7481,7 +7678,7 @@ DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=fonction, VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7502,6 +7699,7 @@ DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=fonction, DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=obstacle ,fr="Définition d un obstacle plan perpendiculaire à une structure filaire", docu="U4.44.21-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, TYPE =SIMP(statut='o',typ='TXM',defaut="CERCLE", into=("CERCLE","PLAN_Y","PLAN_Z","DISCRET", "BI_CERCLE","BI_PLAN_Y","BI_PLAN_Z","BI_CERC_INT", @@ -7533,7 +7731,7 @@ DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=obstacle VALE =SIMP(statut='f',typ='R',max='**'), VERIF =SIMP(statut='f',typ='TXM',defaut="FERME"), ) ; -#& MODIF COMMANDE DATE 10/10/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7556,15 +7754,16 @@ DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi, fr="Définition d'un paramètre de sensibilité", ang="Definition of a sensitive parameter", docu="U4.31.xx-a",reentrant='n', + UIinfo={"groupes":("Fonction",)}, NOM_RESU =SIMP(statut='c',typ='TXM',into=("TOUTRESU",),defaut="TOUTRESU", fr="Nom du concept créé", ang="Name of the concept"), - VALE =SIMP(statut='o',typ='R',max=01, + VALE =SIMP(statut='o',typ='R',max=1, fr="Valeur du parametre", ang="Value of the parameter"), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 07/03/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7585,15 +7784,16 @@ DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi, DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, fr="Définition d'un spectre d'excitation turbulente", docu="U4.44.31-c",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3', 'SPEC_LONG_COR_4','SPEC_CORR_CONV_1','SPEC_CORR_CONV_2', 'SPEC_FONC_FORME','SPEC_EXCI_POINT'),), - SPEC_LONG_COR_1 =FACT(statut='f',min=00,max=01, + SPEC_LONG_COR_1 =FACT(statut='f',max=1, LONG_COR =SIMP(statut='o',typ='R' ), PROF_VITE_FLUI =SIMP(statut='o',typ=fonction ), VISC_CINE =SIMP(statut='o',typ='R' ), ), - SPEC_LONG_COR_2 =FACT(statut='f',min=00,max=01, + SPEC_LONG_COR_2 =FACT(statut='f',max=1, regles=(ENSEMBLE('FREQ_COUP','PHI0','BETA' ),), LONG_COR =SIMP(statut='o',typ='R' ), PROF_VITE_FLUI =SIMP(statut='o',typ=fonction ), @@ -7601,7 +7801,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, PHI0 =SIMP(statut='f',typ='R',defaut= 1.5E-3 ), BETA =SIMP(statut='f',typ='R',defaut= 2.7 ), ), - SPEC_LONG_COR_3 =FACT(statut='f',min=00,max=01, + SPEC_LONG_COR_3 =FACT(statut='f',max=1, regles=(ENSEMBLE('PHI0_1','BETA_1','PHI0_2','BETA_2','FREQ_COUP'),), LONG_COR =SIMP(statut='o',typ='R' ), PROF_VITE_FLUI =SIMP(statut='o',typ=fonction ), @@ -7611,7 +7811,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, PHI0_2 =SIMP(statut='f',typ='R',defaut= 4.E-5 ), BETA_2 =SIMP(statut='f',typ='R',defaut= 3.5 ), ), - SPEC_LONG_COR_4 =FACT(statut='f',min=00,max=01, + SPEC_LONG_COR_4 =FACT(statut='f',max=1, regles=(ENSEMBLE('BETA','GAMMA'),), LONG_COR =SIMP(statut='o',typ='R' ), PROF_VITE_FLUI =SIMP(statut='o',typ=fonction ), @@ -7619,7 +7819,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, BETA =SIMP(statut='f',typ='R',defaut= 2. ), GAMMA =SIMP(statut='f',typ='R',defaut= 4. ), ), - SPEC_CORR_CONV_1=FACT(statut='f',min=00,max=01, + SPEC_CORR_CONV_1=FACT(statut='f',max=1, LONG_COR_1 =SIMP(statut='o',typ='R' ), LONG_COR_2 =SIMP(statut='f',typ='R' ), VITE_FLUI =SIMP(statut='o',typ='R' ), @@ -7632,7 +7832,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE", into=("AU_YANG","GENERALE","CORCOS") ), ), - SPEC_CORR_CONV_2=FACT(statut='f',min=00,max=01, + SPEC_CORR_CONV_2=FACT(statut='f',max=1, FONCTION =SIMP(statut='o',typ=fonction ), VITE_FLUI =SIMP(statut='o',typ='R' ), FREQ_COUP =SIMP(statut='f',typ='R' ), @@ -7641,7 +7841,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ), COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ), ), - SPEC_FONC_FORME =FACT(statut='f',min=00,max=01, + SPEC_FONC_FORME =FACT(statut='f',max=1, regles=(UN_PARMI('INTE_SPEC','GRAPPE_1'), ENSEMBLE('INTE_SPEC','FONCTION'),), INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ), @@ -7651,7 +7851,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, CARA_ELEM =SIMP(statut='o',typ=cara_elem ), MODELE =SIMP(statut='o',typ=modele ), ), - SPEC_EXCI_POINT =FACT(statut='f',min=00,max=01, + SPEC_EXCI_POINT =FACT(statut='f',max=1, regles=(UN_PARMI('INTE_SPEC','GRAPPE_2'),), INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ), GRAPPE_2 =SIMP(statut='f',typ='TXM', @@ -7671,7 +7871,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7692,6 +7892,7 @@ DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre, DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, fr="Définition d un maillage de visualisation", docu="U4.24.01-e",reentrant='n', + UIinfo={"groupes":("Maillage",)}, regles=(UN_PARMI('MODE_CYCL','MODELE_GENE','MAILLAGE'), PRESENT_PRESENT('MODE_CYCL','SECTEUR'), EXCLUS('SOUS_STRUC','SECTEUR'), @@ -7700,7 +7901,7 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, MODE_CYCL =SIMP(statut='f',typ=mode_cycl ), MODELE_GENE =SIMP(statut='f',typ=modele_gene ), SQUELETTE =SIMP(statut='f',typ=squelette ), - RECO_GLOBAL =FACT(statut='f',min=01,max='**', + RECO_GLOBAL =FACT(statut='f',min=1,max='**', regles=(EXCLUS('TOUT','GROUP_NO_1'), PRESENT_PRESENT('GROUP_NO_1','GROUP_NO_2'), PRESENT_PRESENT('GROUP_NO_1','SOUS_STRUC_1'), @@ -7715,7 +7916,7 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), DIST_REFE =SIMP(statut='f',typ='R' ), ), - NOM_GROUP_MA =FACT(statut='f',min=01,max='**', + NOM_GROUP_MA =FACT(statut='f',min=1,max='**', NOM =SIMP(statut='o',typ='TXM' ), SOUS_STRUC =SIMP(statut='o',typ='TXM' ), GROUP_MA =SIMP(statut='o',typ=grma), @@ -7727,20 +7928,20 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), TRANS =SIMP(statut='f',typ='R',min=3,max=3), ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3), - SOUS_STRUC =FACT(statut='f',min=01,max='**', + SOUS_STRUC =FACT(statut='f',min=1,max='**', NOM =SIMP(statut='f',typ='TXM' ), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), ), - SECTEUR =FACT(statut='f',min=01,max='**', + SECTEUR =FACT(statut='f',min=1,max='**', MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7760,6 +7961,7 @@ DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette, # ====================================================================== DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture, fr=" ",docu="U4.43.05-a",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, SYST_GLISSEMENT =FACT(statut='o',min=3,max=3, N =SIMP(statut='o',typ='R',min=12,max=12 ), L =SIMP(statut='o',typ='R',max='**' ), @@ -7770,7 +7972,7 @@ DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture, ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 03/10/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7789,6 +7991,7 @@ DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction,docu="U4.MK.20-d",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, fr="Calculer la fonction d évolution temporelle de température due à l effet JOULE dans un cable", LIST_INST =SIMP(statut='o',typ=listr8), INST_CC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ), @@ -7798,7 +8001,7 @@ DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction,docu="U4.MK. TEMP_EXT_POSE =SIMP(statut='f',typ='R',defaut= 15.0E+0), TEMP_EXT =SIMP(statut='f',typ='R',defaut= 15.0E+0), TEMP_RESI_REF =SIMP(statut='f',typ='R',defaut= 20.0E+0), - PARA_COND_1D =FACT(statut='f',min=01,max='**', + PARA_COND_1D =FACT(statut='f',min=1,max='**', INTE_CC =SIMP(statut='f',typ='R',defaut= 0.0E+0), INTE_RENC =SIMP(statut='f',typ='R',defaut= 0.0E+0), A =SIMP(statut='f',typ='R',defaut= 1.0E+0), @@ -7811,7 +8014,7 @@ DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction,docu="U4.MK. ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7830,22 +8033,23 @@ DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction,docu="U4.MK. # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=tabl_trc,docu="U4.43.04-e",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, fr="Définition d un diagramme de transformations en refroidissement continu d un acier", - HIST_EXP =FACT(statut='o',min=01,max='**', + HIST_EXP =FACT(statut='o',min=1,max='**', VALE =SIMP(statut='o',typ='R',max='**'), ), - TEMP_MS =FACT(statut='o',min=01,max='**', + TEMP_MS =FACT(statut='o',min=1,max='**', SEUIL =SIMP(statut='o',typ='R'), AKM =SIMP(statut='o',typ='R'), BKM =SIMP(statut='o',typ='R'), TPLM =SIMP(statut='o',typ='R'), ), - GRAIN_AUST =FACT(statut='f',min=01,max='**', + GRAIN_AUST =FACT(statut='f',min=1,max='**', DREF =SIMP(statut='f',typ='R'), A =SIMP(statut='f',typ='R'), ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7874,6 +8078,7 @@ def defi_valeur_prod(self,IS=None,R8=None,TX=None,C8=None,LS=None): DEFI_VALEUR=MACRO(nom="DEFI_VALEUR",op=-4,sd_prod=defi_valeur_prod, fr="Affectation d une valeur à une variable Superviseur", docu="U4.31.04-f1",reentrant='f', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('IS','R8','TX','C8','LS'),), IS =SIMP(statut='f',typ='I',max='**'), R8 =SIMP(statut='f',typ='R',max='**'), @@ -7881,7 +8086,7 @@ DEFI_VALEUR=MACRO(nom="DEFI_VALEUR",op=-4,sd_prod=defi_valeur_prod, C8 =SIMP(statut='f',typ='C',max='**'), LS =SIMP(statut='f',typ='L',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7900,13 +8105,14 @@ DEFI_VALEUR=MACRO(nom="DEFI_VALEUR",op=-4,sd_prod=defi_valeur_prod, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEFUFI=PROC(nom="DEFUFI",op=21,docu="U4.12.01-d", + UIinfo={"groupes":("Gestion du travail",)}, fr="Modification / ajout d une unité logique en sortie en complément de celles définies dans DEBUT", - IMPRESSION =FACT(statut='o',min=01,max='**', + IMPRESSION =FACT(statut='o',min=1,max='**', NOM =SIMP(statut='o',typ='TXM',max='**'), UNITE =SIMP(statut='o',typ='I' ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7925,12 +8131,13 @@ DEFUFI=PROC(nom="DEFUFI",op=21,docu="U4.12.01-d", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_depl_r,docu="U4.62.02-e",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Récupération du champ de déplacement interne à une sous-structure", DEPL_GLOBAL =SIMP(statut='o',typ=cham_no_depl_r), MAILLE =SIMP(statut='o',typ=ma,max=1), NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7949,13 +8156,14 @@ DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_depl_r,docu="U4.62.02 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DETRUIRE=PROC(nom="DETRUIRE",op=-7,docu="U4.14.01-d", + UIinfo={"groupes":("Gestion du travail",)}, fr="Destruction d un concept utilisateur dans la base GLOBALE", op_init=ops.detruire, CONCEPT =FACT(statut='o',min=01, NOM =SIMP(statut='o',typ=assd,max='**'), ), ); -#& MODIF COMMANDE DATE 03/10/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -7974,6 +8182,7 @@ DETRUIRE=PROC(nom="DETRUIRE",op=-7,docu="U4.14.01-d", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction,docu="U4.MK.30-d",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, fr="Calcul sous forme d une fonction du temps de la distance minimale entre deux structures filaires", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'), UN_PARMI('GROUP_MA_2','POIN_FIXE'),), @@ -7991,7 +8200,7 @@ DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction,docu="U4.MK.30-d", POIN_FIXE =SIMP(statut='f',typ='R',min=3,max=3), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/03/2001 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8012,10 +8221,11 @@ DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction,docu="U4.MK.30-d", DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp ,fr="Calcule la réponse spectrale d une structure linéaire sous une excitation connue par sa DSP", docu="U4.53.22-d",reentrant='n', - BASE_MODALE =FACT(statut='o',min=01,max=01, + UIinfo={"groupes":("Résolution",)}, + BASE_MODALE =FACT(statut='o',min=1,max=1, regles=(UN_PARMI('NUME_ORDRE','BANDE'),), MODE_MECA =SIMP(statut='o',typ=mode_meca ), - BANDE =SIMP(statut='f',typ='R',max=02), + BANDE =SIMP(statut='f',typ='R',max=2), NUME_ORDRE =SIMP(statut='f',typ='I',max='**'), b_bande =BLOC(condition = "BANDE != None", AMOR_UNIF =SIMP(statut='o',typ='R' ), @@ -8025,7 +8235,7 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp ), ), MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)), - EXCIT =FACT(statut='o',min=01,max=01, + EXCIT =FACT(statut='o',min=1,max=1, regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I'), EXCLUS('CHAM_NO','NOEUD'),), DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ), @@ -8053,10 +8263,10 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp NOM_CMP =SIMP(statut='o',typ='TXM',max='**'), ), ), - REPONSE =FACT(statut='f',min=01,max=01, - regles=(EXCLUS('FREQ_MIN','NB_POIN_MODE'), - EXCLUS('FREQ_MIN','FREQ_EXCIT'), - ENSEMBLE('FREQ_MIN','FREQ_MAX'),), + REPONSE =FACT(statut='f',min=1,max=1, +# regles=(EXCLUS('FREQ_MIN','NB_POIN_MODE'), +# EXCLUS('FREQ_MIN','FREQ_EXCIT'), + regles=(ENSEMBLE('FREQ_MIN','FREQ_MAX'),), # Toutes les regles ne semblent pas avoir été ecrites dans la doc U DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ,) ), OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), @@ -8069,7 +8279,7 @@ DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 26/03/2002 AUTEUR CAMBIER S.CAMBIER +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8097,6 +8307,7 @@ def dyna_line_harm_prod(MATR_MASS,**args): DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, fr="Réponse dynamique complexe d un système à une excitation harmonique", docu="U4.53.11-e",reentrant='n', + UIinfo={"groupes":("Résolution",)}, regles=(PRESENT_ABSENT('AMOR_REDUIT','MATR_AMOR'), PRESENT_ABSENT('AMOR_REDUIT','LIST_AMOR'), PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'), @@ -8114,8 +8325,8 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, FREQ =SIMP(statut='f',typ='R',max='**'), LIST_FREQ =SIMP(statut='f',typ=listr8 ), TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)), - NOM_CHAM =SIMP(statut='f',typ='TXM',max=03,into=("DEPL","VITE","ACCE") ), - EXCIT =FACT(statut='o',min=01,max='**', + NOM_CHAM =SIMP(statut='f',typ='TXM',max=3,into=("DEPL","VITE","ACCE") ), + EXCIT =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('VECT_ASSE','CHARGE'), UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),), VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_pres_c,vect_asse_gene ) ), @@ -8136,7 +8347,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, # Rajouter test icompatibilite vect_asse et sensibilite # Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation # presents dans le Fortran -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8157,6 +8368,7 @@ DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod, DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, fr="Réponse temporelle d un système à une excitation transitoire", docu="U4.53.02-g1",reentrant='f', + UIinfo={"groupes":("Résolution",)}, # regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),), regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'),), MODELE =SIMP(statut='f',typ=modele ), @@ -8166,18 +8378,18 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ), MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ), - NEWMARK =FACT(statut='f',min=01,max=01, + NEWMARK =FACT(statut='f',min=1,max=1, ALPHA =SIMP(statut='f',typ='R',defaut= 0.25 ), DELTA =SIMP(statut='f',typ='R',defaut= 0.5 ), ), - WILSON =FACT(statut='f',min=01,max=01, + WILSON =FACT(statut='f',min=1,max=1, THETA =SIMP(statut='f',typ='R',defaut= 1.4 ), ), - DIFF_CENTRE =FACT(statut='f',min=01,max=01, + DIFF_CENTRE =FACT(statut='f',min=1,max=1, ), - ADAPT =FACT(statut='f',min=01,max=01, + ADAPT =FACT(statut='f',min=1,max=1, ), - ETAT_INIT =FACT(statut='f',min=01,max=01, + ETAT_INIT =FACT(statut='f',min=1,max=1, regles=(AU_MOINS_UN('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT',), PRESENT_ABSENT('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT'),), DYNA_TRANS =SIMP(statut='f',typ=dyna_trans ), @@ -8193,7 +8405,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, DEPL_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ), VITE_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ), ), - EXCIT =FACT(statut='f',min=01,max='**', + EXCIT =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('CHARGE','VECT_ASSE'), EXCLUS('CHARGE','COEF_MULT'), EXCLUS('FONC_MULT','COEF_MULT'), @@ -8209,26 +8421,26 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, ACCE =SIMP(statut='f',typ=fonction ), VITE =SIMP(statut='f',typ=fonction ), DEPL =SIMP(statut='f',typ=fonction ), - MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), DIRECTION =SIMP(statut='f',typ='R',max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), ), - AMOR_MODAL =FACT(statut='f',min=01,max=01, + AMOR_MODAL =FACT(statut='f',min=1,max=1, MODE_MECA =SIMP(statut='f',typ=mode_meca ), AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'), NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ), REAC_VITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ), # ce n est pas le mot clesolveur standard - SOLVEUR =FACT(statut='d',min=01,max=01, + SOLVEUR =FACT(statut='d',min=1,max=1, EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ), NPREC =SIMP(statut='f',typ='I',defaut= 8 ), STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ), NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ), ), - INCREMENT =FACT(statut='o',min=01,max='**', + INCREMENT =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('LIST_INST','FONC_INST','PAS'),), LIST_INST =SIMP(statut='f',typ=listr8 ), FONC_INST =SIMP(statut='f',typ=fonction ), @@ -8250,7 +8462,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), PAS_CALCUL =SIMP(statut='f',typ='I',defaut= 1 ), ), - ARCHIVAGE =FACT(statut='f',min=01,max=01, + ARCHIVAGE =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),), LIST_ARCH =SIMP(statut='f',typ=listis ), PAS_ARCH =SIMP(statut='f',typ='I' ), @@ -8259,7 +8471,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8279,6 +8491,7 @@ DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans, # ====================================================================== DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', fr="Analyse mécanique dynamique non linéaire",docu="U4.53.01-f2", + UIinfo={"groupes":("Résolution",)}, regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',), UN_PARMI('NEWMARK','HHT', ),), MODELE =SIMP(statut='o',typ=modele), @@ -8296,7 +8509,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', DEPL =SIMP(statut='f',typ=fonction), ACCE =SIMP(statut='f',typ=fonction), VITE =SIMP(statut='f',typ=fonction), - MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), DIRECTION =SIMP(statut='f',typ='R',max='**'), NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), @@ -8352,8 +8565,8 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "VISC_TAHERI", "CHABOCHE", "VISCOCHAB", - "VMIS_CIN1_CHAB", - "VMIS_CIN2_CHAB", + "VISC_CIN1_CHAB", + "VISC_CIN2_CHAB", "POLY_CFC", "LMARC", "ROUSSELIER", @@ -8390,6 +8603,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "KIT_HM", "KIT_HHM", "KIT_THH", + "KIT_THV", "KIT_THM", "KIT_THHM", "VMIS_ASYM_LINE", @@ -8399,19 +8613,18 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "CAM_CLAY_THM", "KIT_DDI", ) ), - ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - MAZARS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - BETON_GRAD_EPSI =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - BARENBLATT =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)), + VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), + LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)), + ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + MAZARS =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + BARENBLATT =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), META_P_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)), META_P_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), META_P_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)), @@ -8435,59 +8648,60 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', META_V_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)), META_V_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - CHABOCHE =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)), - VMIS_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - VMIS_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), - POLY_CFC =SIMP(statut='c',typ='I',defaut=1688,into=(1688,)), - LMARC =SIMP(statut='c',typ='I',defaut=20,into=(20,)), - VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - ROUSS_PR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)), - VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)), - COULOMB =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - ASSE_CORN =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ZIRC_CYRA2 =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ZIRC_EPRI =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - ASSE_COMBU =SIMP(statut='c',typ='I',defaut=5,into=(5,)), - NADAI_B =SIMP(statut='c',typ='I',defaut=34,into=(34,)), - VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)), - GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), - GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), - GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)), - DIS_CONTACT =SIMP(statut='c',typ='I',defaut=6,into=(6,)), - DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)), - DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - CJS =SIMP(statut='c',typ='I',defaut=16,into=(16,)), - CAM_CLAY =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LAIGLE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), - OHNO =SIMP(statut='c',typ='I',defaut=32,into=(32,)), - GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)), - GRANGER_FD =SIMP(statut='c',typ='I',defaut=1,into=(1,)), - BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)), - KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), - VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)), + CHABOCHE =SIMP(statut='c',typ='I',defaut=14,into=(14,)), + VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)), + VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)), + VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)), + POLY_CFC =SIMP(statut='c',typ='I',defaut=1688,into=(1688,)), + LMARC =SIMP(statut='c',typ='I',defaut=20,into=(20,)), + VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)), + ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)), + ROUSS_PR =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)), + VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)), + COULOMB =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + ASSE_CORN =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + ZIRC_CYRA2 =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + ZIRC_EPRI =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + ASSE_COMBU =SIMP(statut='c',typ='I',defaut=5,into=(5,)), + NADAI_B =SIMP(statut='c',typ='I',defaut=34,into=(34,)), + VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)), + GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), + GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)), + GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)), + DIS_CONTACT =SIMP(statut='c',typ='I',defaut=6,into=(6,)), + DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)), + DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)), + CJS =SIMP(statut='c',typ='I',defaut=16,into=(16,)), + CAM_CLAY =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + LAIGLE =SIMP(statut='c',typ='I',defaut=8,into=(8,)), + OHNO =SIMP(statut='c',typ='I',defaut=32,into=(32,)), + GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)), + GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)), + GRANGER_FD =SIMP(statut='c',typ='I',defaut=1,into=(1,)), + BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_THV =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), RELATION_KIT =SIMP(statut='f',typ='TXM',max='**', into=( # MECA "ELAS", "CJS", - "LAIGLE", "CAM_CLAY", + "LAIGLE", "ELAS_THM", "SURF_ETAT_NSAT", "SURF_ETAT_SATU", @@ -8498,6 +8712,7 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', "LIQU_SATU_GAT", "LIQU_GAZ_ATM", "LIQU_VAPE_GAZ", + "LIQU_VAPE", "LIQU_NSAT_GAT", "LIQU_GAZ", # THER @@ -8528,10 +8743,11 @@ DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f', GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)), LIQU_SATU =SIMP(statut='c',typ='I',defaut=2,into=(2,)), LIQU_SATU_GAT =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + LIQU_VAPE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), LIQU_NSAT_GAT =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + LIQU_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)), THER_HOMO =SIMP(statut='c',typ='I',defaut=0,into=(0,)), THER_POLY =SIMP(statut='c',typ='I',defaut=0,into=(0,)), HYDR_UTIL =SIMP(statut='c',typ='I',defaut=0,into=(0,)), @@ -8744,7 +8960,7 @@ into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU"," INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8765,14 +8981,15 @@ into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU"," DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp, fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire", docu="U4.53.23-c",reentrant='n', + UIinfo={"groupes":("Résolution",)}, BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu ), - EXCIT =FACT(statut='o',min=00,max=01, + EXCIT =FACT(statut='o',max=1, INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ), ), OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8793,6 +9010,7 @@ DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp, DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, fr="Réponse dynamique transitoire en coordonnées généralisées par recombinaison modale", docu="U4.53.21-f1",reentrant='f', + UIinfo={"groupes":("Résolution",)}, regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'), PRESENT_ABSENT('MODE_STAT','MODE_CORR'),), METHODE =SIMP(statut='f',typ='TXM',defaut="EULER", @@ -8805,7 +9023,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc) ), MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_stat_acce) ,), - ETAT_INIT =FACT(statut='f',min=01,max=01, + ETAT_INIT =FACT(statut='f',min=1,max=1, regles=(EXCLUS('RESU_GENE','DEPL_INIT_GENE'), EXCLUS('RESU_GENE','VITE_INIT_GENE'),), RESU_GENE =SIMP(statut='f',typ=tran_gene ), @@ -8817,7 +9035,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ), VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ), ), - INCREMENT =FACT(statut='o',min=01,max='**', + INCREMENT =FACT(statut='o',min=1,max='**', INST_INIT =SIMP(statut='f',typ='R' ), INST_FIN =SIMP(statut='o',typ='R' ), PAS =SIMP(statut='f',typ='R' ), @@ -8829,7 +9047,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ), NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ), ), - ARCHIVAGE =FACT(statut='f',min=01,max=01, + ARCHIVAGE =FACT(statut='f',min=1,max=1, regles=(UN_PARMI('LIST_ARCH','PAS_ARCH'),), LIST_ARCH =SIMP(statut='f',typ=listis ), PAS_ARCH =SIMP(statut='f',typ='I' ), @@ -8839,12 +9057,12 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ), LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ), - EXCIT =FACT(statut='f',min=01,max='**', + EXCIT =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'), PRESENT_PRESENT('ACCE','VITE','DEPL'), PRESENT_PRESENT('D_FONC_DT','D_FONC_DT2'), PRESENT_ABSENT('NUME_MODE','VECT_GENE','COEF_MULT'), - PRESENT_ABSENT('MULT_APPUI','CORR_STAT'), + EXCLUS('MULT_APPUI','CORR_STAT'), PRESENT_ABSENT('MULT_APPUI','COEF_MULT'), PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),), VECT_GENE =SIMP(statut='f',typ=vect_asse_gene ), @@ -8854,18 +9072,18 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, ACCE =SIMP(statut='f',typ=fonction ), VITE =SIMP(statut='f',typ=fonction ), DEPL =SIMP(statut='f',typ=fonction ), - MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), DIRECTION =SIMP(statut='f',typ='R',max='**'), b_loca =BLOC(condition= "DIRECTION != None", regles=(EXCLUS('NOEUD','GROUP_NO'),), NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), ), - CORR_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), D_FONC_DT =SIMP(statut='f',typ=fonction ), D_FONC_DT2 =SIMP(statut='f',typ=fonction ), ), - CHOC =FACT(statut='f',min=01,max='**', + CHOC =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD_1','GROUP_NO_1' ), PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'), PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),), @@ -8898,11 +9116,11 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, DELTA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), ), - VERI_CHOC =FACT(statut='f',min=01,max='**', + VERI_CHOC =FACT(statut='f',min=1,max='**', STOP_CRITERE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), SEUIL =SIMP(statut='f',typ='R',defaut= 0.5 ), ), - FLAMBAGE =FACT(statut='f',min=01,max='**', + FLAMBAGE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'), PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),), @@ -8923,7 +9141,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, FNOR_POST_FL =SIMP(statut='f',typ='R' ), RIGI_NOR_POST_FL=SIMP(statut='f',typ='R' ), ), - ANTI_SISM =FACT(statut='f',min=01,max='**', + ANTI_SISM =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'), UN_PARMI('NOEUD_2','GROUP_NO_2'), PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'), @@ -8939,19 +9157,19 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, PUIS_ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ), DX_MAX =SIMP(statut='f',typ='R',defaut= 1. ), ), - RELA_EFFO_DEPL =FACT(statut='f',min=01,max='**', + RELA_EFFO_DEPL =FACT(statut='f',min=1,max='**', NOEUD =SIMP(statut='o',typ=no), SOUS_STRUC =SIMP(statut='f',typ='TXM' ), NOM_CMP =SIMP(statut='f',typ='TXM' ), RELATION =SIMP(statut='o',typ=fonction ), ), - RELA_TRANSIS =FACT(statut='f',min=01,max='**', + RELA_TRANSIS =FACT(statut='f',min=1,max='**', NOEUD =SIMP(statut='o',typ=no), SOUS_STRUC =SIMP(statut='f',typ='TXM' ), NOM_CMP =SIMP(statut='f',typ='TXM' ), RELATION =SIMP(statut='o',typ=fonction ), ), - RELA_EFFO_VITE =FACT(statut='f',min=01,max='**', + RELA_EFFO_VITE =FACT(statut='f',min=1,max='**', NOEUD =SIMP(statut='o',typ=no), SOUS_STRUC =SIMP(statut='f',typ='TXM' ), NOM_CMP =SIMP(statut='f',typ='TXM' ), @@ -8970,16 +9188,16 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, TS_REG_ETAB =SIMP(statut='f',typ='R' ), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), - IMPRESSION =FACT(statut='f',min=01,max='**', + IMPRESSION =FACT(statut='f',min=1,max='**', regles=(EXCLUS('TOUT','NIVEAU'),), - TOUT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), NIVEAU =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ), INST_INIT =SIMP(statut='f',typ='R' ), INST_FIN =SIMP(statut='f',typ='R' ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -8999,6 +9217,7 @@ DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene, # ====================================================================== # RESPONSABLE VABHHTS J.PELLET ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,docu="U4.92.11-b", + UIinfo={"groupes":("Impression",)}, regles=(UN_PARMI('TOUT','CO'),), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -9007,7 +9226,7 @@ ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,docu="U4.92.11-b", FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"), PREC_R =SIMP(statut='f',typ='TXM',defaut="1.E-5"), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9026,12 +9245,13 @@ ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,docu="U4.92.11-b", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,fr="",docu="U7.00.01-a", + UIinfo={"groupes":("Impression",)}, LOGICIEL =SIMP(statut='f',typ='TXM' ), - ARGUMENT =FACT(statut='f',min=01,max='**', + ARGUMENT =FACT(statut='f',min=1,max='**', NOM_PARA =SIMP(statut='f',typ='TXM' ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9049,8 +9269,6 @@ EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,fr="",docu="U7.00.01-a", # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -#def extr_mode_prod(FILTRE_MODE,TITRE,IMPRESSION ): -# Sait-on faire def extr_mode_prod(FILTRE_MODE,**args): vale=FILTRE_MODE[0]['MODE'] if AsType(vale) == mode_meca : return mode_meca @@ -9060,7 +9278,8 @@ def extr_mode_prod(FILTRE_MODE,**args): EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, docu="U4.52.12-c",reentrant='n', - FILTRE_MODE =FACT(statut='o',min=01,max='**', + UIinfo={"groupes":("Résolution",)}, + FILTRE_MODE =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),), MODE =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_gene ) ), TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), @@ -9068,8 +9287,7 @@ EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, NUME_MODE =SIMP(statut='f',typ='I',max='**'), NUME_MODE_EXCLU =SIMP(statut='f',typ='I',max='**'), FREQ_MIN =SIMP(statut='f',typ='R' ), - CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN" - ,into=("MASS_EFFE_UN","MASS_GENE") ), + CRIT_EXTR =SIMP(statut='f',typ='TXM',into=("MASS_EFFE_UN","MASS_GENE") ), b_freq_min =BLOC(condition = "FREQ_MIN != None", FREQ_MAX =SIMP(statut='o',typ='R' ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), @@ -9079,12 +9297,12 @@ EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod, ), ), TITRE =SIMP(statut='f',typ='TXM',max='**'), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9109,6 +9327,7 @@ def extr_resu_prod(RESULTAT,**args): raise AsException("type de concept resultat non prevu") EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,docu="U4.71.04-c2",reentrant='f', + UIinfo={"groupes":("Résultats et champs",)}, RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca, mode_acou,mode_stat_depl,mode_stat_acce,mode_stat_forc,evol_ther,evol_noli, mult_elas,fourier_elas ) ), @@ -9141,7 +9360,7 @@ EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,docu="U4.71.04-c2", TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9166,6 +9385,7 @@ def fact_grad_prod(MATR_ASSE,**args): raise AsException("type de concept resultat non prevu") FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,docu="U4.55.03-e", + UIinfo={"groupes":("Résolution",)}, fr="Préconditionnement pour résolution par gradient conjugué", reentrant='n', MATR_ASSE =SIMP(statut='o', @@ -9175,7 +9395,7 @@ FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,docu="U4.55.03-e", NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9196,6 +9416,7 @@ FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,docu="U4.55.03-e", FACT_INTE_SPEC=OPER(nom="FACT_INTE_SPEC",op= 117,sd_prod=interspfact, fr="Factorisation d une matrice interspectrale hermitienne", docu="U4.36.04-e",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(ENSEMBLE('FREQ_FIN','NB_POIN'),), # regle non indiquée dans la doc U INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ), @@ -9206,7 +9427,7 @@ FACT_INTE_SPEC=OPER(nom="FACT_INTE_SPEC",op= 117,sd_prod=interspfact, SUR_ECHAN =SIMP(statut='f',typ='R',defaut= 1. ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9236,6 +9457,7 @@ def fact_ldlt_prod(MATR_ASSE,**args): FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,fr="Factorisation en place ou hors place", docu="U4.55.01-f",reentrant='f', + UIinfo={"groupes":("Résolution",)}, regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'), EXCLUS('BLOC_FIN','DDL_FIN'),), MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, @@ -9253,7 +9475,7 @@ FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,fr="Factorisation en TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9274,9 +9496,10 @@ FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,fr="Factorisation en # NEW 5.3.23 FERMER=PROC(nom="FERMER",op= 10,fr=" ", docu="U4.12.02-a", + UIinfo={"groupes":("Gestion du travail",)}, UNITE =SIMP(statut='o',typ='I',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9296,6 +9519,7 @@ FERMER=PROC(nom="FERMER",op= 10,fr=" ", # ====================================================================== FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude", docu="U4.11.02-f", + UIinfo={"groupes":("Gestion du travail",)}, RETASSAGE =SIMP(fr="provoque le retassage de la base GLOBALE", statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), PERFORMANCE =SIMP(fr="provoque l'impression d'un résumé des mesures de temps ", @@ -9304,7 +9528,7 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), FICHIER =SIMP(statut='f',typ='TXM',defaut="MESSAGE"), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9324,8 +9548,34 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une # ====================================================================== FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction, docu="U4.35.02-c",reentrant='n', + UIinfo={"groupes":("Fonction",)}, TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ), ) ; +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# 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. +# ====================================================================== +FORMULE = FORM( nom='FORMULE',op=-5,sd_prod=fonction, + fr="Définition d une fonction",reentrant = 'n', + regles=(UN_PARMI('REEL','ENTIER','COMPLEXE'),), + REEL = SIMP(typ = 'shell',max=1), + ENTIER = SIMP(typ = 'shell',max=1), + COMPLEXE = SIMP(typ = 'shell',max=1), +) ; #& MODIF COMMANDE DATE 17/09/2001 AUTEUR MCOURTOI M.COURTOIS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -9351,7 +9601,7 @@ FORMULE = FORM( nom='FORMULE',op=-5,sd_prod=fonction, ENTIER = SIMP(typ = 'shell',max=1), COMPLEXE = SIMP(typ = 'shell',max=1), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9372,13 +9622,14 @@ FORMULE = FORM( nom='FORMULE',op=-5,sd_prod=fonction, GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=tabl_fonc, fr="Génération de la fonction temporelle à partir d une matrice interspectrale factorisée", docu="U4.36.05-e",reentrant='n', + UIinfo={"groupes":("Fonction",)}, INTE_SPEC_FACT =SIMP(statut='o',typ=interspfact ), INIT_ALEA =SIMP(statut='f',typ='I',defaut= 12312745 ), NB_TIRAGE =SIMP(statut='f',typ='I',defaut= 1 ), NB_POIN =SIMP(statut='f',typ='I' ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -9399,12 +9650,13 @@ GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=tabl_fonc, GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,sd_prod=matr_asse_gene_r, fr="Generateur de matrice aleatoire", docu="U4.36.06",reentrant='n', + UIinfo={"groupes":("Fonction",)}, MATR_MOYEN = SIMP(statut='o', typ=matr_asse_gene_r), DELTA = SIMP(statut='f', typ='R', defaut=0.1), INIT = SIMP(statut='f', typ='TXM', into=("OUI","NON"),defaut="NON"), ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -9425,6 +9677,7 @@ GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,sd_prod=matr_asse_gene_r, GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table, fr="Generateur de variable aleatoire", docu="U4.36.07",reentrant='n', + UIinfo={"groupes":("Fonction",)}, TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="EXP_TRONQUEE"), VALE_MOY = SIMP(statut='f', typ='R', defaut=0.), DELTA = SIMP(statut='f', typ='R', defaut=0.1), @@ -9433,7 +9686,7 @@ GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table, INIT = SIMP(statut='f', typ='TXM', into=("OUI","NON"),defaut="NON"), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9454,12 +9707,13 @@ GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table, IMPR_CHARGE=PROC(nom="IMPR_CHARGE",op= 158, fr="Impression des charges mécaniques de type ddl imposés et relations linéaires entre les ddl", docu="U7.04.31-c", + UIinfo={"groupes":("Fonction",)}, FICHIER =SIMP(statut='f',typ='TXM' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",) ), VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ), CHARGE =SIMP(statut='o',typ=char_meca,max='**', ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9478,6 +9732,7 @@ IMPR_CHARGE=PROC(nom="IMPR_CHARGE",op= 158, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,docu="U7.04.21-a", + UIinfo={"groupes":("Fonction",)}, regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ', 'LIST_ORDRE' ),), UNITE_CLASSI =SIMP(statut='o',typ='I' ), @@ -9493,7 +9748,7 @@ IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,docu="U7.04.21-a", CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF", into=("RELATIF","ABSOLU") ), ), - IMPRESSION =FACT(statut='f',min=01,max='**', + IMPRESSION =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD','GROUP_NO', ),), NOEUD =SIMP(statut='f',typ=no,max='**'), GROUP_NO =SIMP(statut='f',typ=grno,max='**'), @@ -9501,7 +9756,7 @@ IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,docu="U7.04.21-a", ), AMOR =SIMP(statut='o',typ='R',max='**'), ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9521,6 +9776,7 @@ IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,docu="U7.04.21-a", # ====================================================================== # RESPONSABLE VABHHTS J.PELLET IMPR_CO=PROC(nom="IMPR_CO",op=17,docu="U4.91.11-f", + UIinfo={"groupes":("Impression",)}, fr="Impression du contenu d un concept utilisateur (pour développeur)", regles=(UN_PARMI('CO','CHAINE', ),), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), @@ -9532,7 +9788,7 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17,docu="U4.91.11-f", CHAINE =SIMP(statut='f',typ='TXM'), POSITION =SIMP(statut='f',typ='I',defaut=1), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9553,6 +9809,7 @@ IMPR_CO=PROC(nom="IMPR_CO",op=17,docu="U4.91.11-f", # RESPONSABLE MCOURTOI M.COURTOIS IMPR_COURBE=PROC(nom="IMPR_COURBE",op= 141,fr="Impression, sur fichiers", docu="U4.33.01-e2", + UIinfo={"groupes":("Fonction",)}, FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), FORMAT =SIMP(statut='f',typ='TXM',position='global' ,into=("AGRAF","EXCEL","POSTSCRIPT","RESULTAT","COMMANDE","SEISME") ), @@ -9588,7 +9845,7 @@ IMPR_COURBE=PROC(nom="IMPR_COURBE",op= 141,fr="Impression, sur fichiers", FENETRE =SIMP(statut='f',typ='TXM',defaut="RECTANGLE",into=("CARREE","RECTANGLE"), fr="Forme de la fenetre contenant le graphique" ), ), - COURBE =FACT(statut='o',min=01,max='**',fr="Définition de la courbe à tracer", + COURBE =FACT(statut='o',min=1,max='**',fr="Définition de la courbe à tracer", regles=(UN_PARMI('FONCTION','LIST_RESU','TABLE','FONC_X','RESU_GENE'),), FONCTION =SIMP(statut='f',typ=(fonction, fonction_c), fr="Fonction réelle ou complexe", ), @@ -9658,7 +9915,7 @@ IMPR_COURBE=PROC(nom="IMPR_COURBE",op= 141,fr="Impression, sur fichiers", ), ), ) ; -#& MODIF COMMANDE DATE 05/03/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9678,6 +9935,7 @@ IMPR_COURBE=PROC(nom="IMPR_COURBE",op= 141,fr="Impression, sur fichiers", # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b2", + UIinfo={"groupes":("Fonction",)}, fr="Imprime le fichier de configuration de HOMARD.", ang="Writes the configuration file for HOMARD.", # @@ -9702,7 +9960,7 @@ IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b2", # # 5. LE TYPE DE TRAITEMENT : # - TRAITEMENT =FACT(statut='o',min=01,max=01, + TRAITEMENT =FACT(statut='o',min=1,max=1, # # 5.1. QUATRE CHOIX EXCLUSIFS : # @@ -9881,7 +10139,7 @@ IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b2", # # 6. L'ANALYSE DU MAILLAGE # - ANALYSE =FACT(statut='f',min=01,max=01, + ANALYSE =FACT(statut='f',min=1,max=1, fr="Analyse du maillage.", ang="Mesh analysis.", # @@ -9917,7 +10175,7 @@ IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b2", ), # ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9938,7 +10196,8 @@ IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b2", IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, fr="Calcul du dommage subi par une structure soumise à une sollicitation de type aléatoire", docu="U4.91.02-c", - GENE =FACT(statut='o',min=01,max='**', + UIinfo={"groupes":("Impression",)}, + GENE =FACT(statut='o',min=1,max='**', regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE', 'LIST_INST','LIST_FREQ','TOUT_MODE','TOUT_INST','LIST_ORDRE'), EXCLUS('TOUT_MODE','NUME_ORDRE','INST','FREQ','NUME_MODE', @@ -9978,7 +10237,7 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -9997,6 +10256,7 @@ IMPR_GENE=PROC(nom="IMPR_GENE",op= 157, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,docu="U4.91.21-f", + UIinfo={"groupes":("Impression",)}, fr="Impression de caractéristiques d'objets JEVEUX (pour développeur)", ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM', into=("DISQUE","MEMOIRE","REPERTOIRE", @@ -10026,13 +10286,13 @@ IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,docu="U4.91.21-f", b_disque =BLOC(condition = "(ENTITE=='DISQUE')", CLASSE =SIMP(statut='f',typ='TXM' ,into=('G','V','L',' '),defaut=' '), ), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, NOM =SIMP(statut='f',typ='TXM' ), UNITE =SIMP(statut='f',typ='I'), ), COMMENTAIRE =SIMP(statut='f',typ='TXM' ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10052,6 +10312,7 @@ IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,docu="U4.91.21-f", # ====================================================================== IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, docu="U7.04.33-d1", + UIinfo={"groupes":("Impression",)}, MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), FICHIER =SIMP(statut='f',typ='TXM' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", @@ -10084,7 +10345,7 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10105,9 +10366,10 @@ IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160, IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, fr="Impression des matrices élémentaires et des matrices assemblées", docu="U7.04.32-c", + UIinfo={"groupes":("Impression",)}, regles=(AU_MOINS_UN('MATR_ELEM','MATR_ASSE'),), - MATR_ELEM =FACT(statut='f',min=01,max='**', + MATR_ELEM =FACT(statut='f',min=1,max='**', FICHIER =SIMP(statut='f',typ='TXM' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", into=("IDEAS","RESULTAT") ), @@ -10127,7 +10389,7 @@ IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, into=("VALEUR","NOEUD","MAILLE") ), NB_CHIFFRE =SIMP(statut='f',typ='I',defaut= 4 ), ), - MATR_ASSE =FACT(statut='f',min=01,max='**', + MATR_ASSE =FACT(statut='f',min=1,max='**', FICHIER =SIMP(statut='f',typ='TXM' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS", into=("IDEAS","RESULTAT") ), @@ -10149,7 +10411,7 @@ IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, VALE_ZERO =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10169,17 +10431,18 @@ IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159, # ====================================================================== IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, docu="U7.04.11-c", + UIinfo={"groupes":("Impression",)}, regles=(UN_PARMI('INST_INIT','FREQ_INIT'), PRESENT_PRESENT('INST_INIT','INST_FIN'), PRESENT_PRESENT('FREQ_INIT','FREQ_FIN'),), MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), - EXCIT =FACT(statut='f',min=01,max='**', + EXCIT =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),), VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ), FONC_MULT =SIMP(statut='f',typ=fonction ), COEF_MULT =SIMP(statut='f',typ='R' ), ), - EXCIT_SOL =FACT(statut='f',min=01,max='**', + EXCIT_SOL =FACT(statut='f',min=1,max='**', DIRECTION =SIMP(statut='o',typ='R',max='**'), FONC_SIGNAL =SIMP(statut='f',typ=fonction ), NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL", @@ -10194,7 +10457,7 @@ IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 05/03/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10213,9 +10476,10 @@ IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== IMPR_RESU=PROC(nom="IMPR_RESU",op=39,docu="U4.91.01-g1", + UIinfo={"groupes":("Impression",)}, fr="Impression du résultat d un calcul (différents formats)", MODELE =SIMP(statut='f',typ=modele), - RESU =FACT(statut='o',min=01,max='**', + RESU =FACT(statut='o',min=1,max='**', FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT", into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ), @@ -10314,7 +10578,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,docu="U4.91.01-g1", ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10334,6 +10598,7 @@ IMPR_RESU=PROC(nom="IMPR_RESU",op=39,docu="U4.91.01-g1", # ====================================================================== IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un intervalle donné", docu="U4.52.01-f", + UIinfo={"groupes":("Résolution",)}, MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE"), @@ -10354,7 +10619,7 @@ IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de val PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ), SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10374,6 +10639,7 @@ IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de val # ====================================================================== # RESPONSABLE VABHHTS J.PELLET IMPR_TABLE=PROC(nom="IMPR_TABLE",op=155,docu="U4.91.03-d2", + UIinfo={"groupes":("Impression",)}, fr="Impression d un concept de type table", TABLE =SIMP(statut='o',typ=table), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT", ), @@ -10409,7 +10675,7 @@ IMPR_TABLE=PROC(nom="IMPR_TABLE",op=155,docu="U4.91.03-d2", TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI",)), IMPR_FONCTION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10428,12 +10694,13 @@ IMPR_TABLE=PROC(nom="IMPR_TABLE",op=155,docu="U4.91.03-d2", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== INCLUDE=MACRO(nom="INCLUDE",op=-1,docu="U4.13.01-e", + UIinfo={"groupes":("Gestion du travail",)}, fr="Débranchement vers un fichier de commandes secondaires", sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1, UNITE = SIMP(statut='o',typ='I'), INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ); -#& MODIF COMMANDE DATE 14/02/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10452,6 +10719,7 @@ INCLUDE=MACRO(nom="INCLUDE",op=-1,docu="U4.13.01-e", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a", + UIinfo={"groupes":("Modélisation",)}, fr=" ", sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0, NOM_AFNOR =SIMP(statut='o',typ='TXM' ), @@ -10463,13 +10731,13 @@ INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a", TYPE_VALE =SIMP(statut='o',typ='TXM',into=("NOMI","MINI","MAXI") ), NOM_MATER =SIMP(statut='o',typ='TXM' ), UNITE =SIMP(statut='f',typ='I',defaut= 32 ), - EXTRACTION =FACT(statut='f',min=01,max=99, + EXTRACTION =FACT(statut='f',min=1,max=99, COMPOR =SIMP(statut='o',typ='TXM' ), TEMP_EVAL =SIMP(statut='o',typ='R' ), ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10489,6 +10757,7 @@ INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a", # ====================================================================== # RESPONSABLE G8BHHXD X.DESROCHES INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", + UIinfo={"groupes":("Post traitements",)}, fr="Définition d une courbe sur un maillage 2D",reentrant='n', MAILLAGE =SIMP(statut='o',typ=(maillage) ), @@ -10506,7 +10775,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - DEFI_SEGMENT =FACT(statut='f',min=01,max='**', + DEFI_SEGMENT =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),), ORIGINE =SIMP(statut='f',typ='R',min=2,max=2), @@ -10517,7 +10786,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", GROUP_NO_EXTR =SIMP(statut='f',typ=grno,max=1), ), - DEFI_ARC =FACT(statut='f',min=01,max='**', + DEFI_ARC =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'), UN_PARMI('RAYON','ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), UN_PARMI('RAYON','EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'), @@ -10539,7 +10808,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", into=("RELATIF","ABSOLU",) ), ), - DEFI_CHEMIN =FACT(statut='f',min=01,max='**', + DEFI_CHEMIN =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','GROUP_MA'),), MAILLE =SIMP(statut='f',typ=ma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), @@ -10550,7 +10819,7 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10570,12 +10839,13 @@ INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe,docu="U4.81.11-e", # ====================================================================== # RESPONSABLE G8BHHXD X.DESROCHES INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface,docu="U4.81.12-e", + UIinfo={"groupes":("Post traitements",)}, fr="Définition d un chemin sur un maillage 3D",reentrant='n', MAILLAGE =SIMP(statut='o',typ=maillage), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), MAILLE =SIMP(statut='f',typ=ma,max='**'), - DEFI_SEGMENT =FACT(statut='o',min=01,max='**', + DEFI_SEGMENT =FACT(statut='o',min=1,max='**', regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'), UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),), ORIGINE =SIMP(statut='f',typ='R',min=3,max=3), @@ -10588,7 +10858,7 @@ INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface,docu="U4.81.12-e", PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10615,6 +10885,7 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, fr="Lire un champ dans un fichier et le stocker dans un concept.", ang="To read a field in a file and to save it in a concept.", docu="U7.02.02-b2",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, # # 1. Le maillage support du champ # @@ -10684,7 +10955,7 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, # INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10705,6 +10976,7 @@ LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod, LIRE_FONCTION=OPER(nom="LIRE_FONCTION",op= 83,sd_prod=fonction, fr="Lecture d une fonction dans un fichier ", docu="U4.32.02-f1",reentrant='n', + UIinfo={"groupes":("Fonction",)}, UNITE =SIMP(statut='o',typ='I' ), NOM_PARA =SIMP(statut='f',typ='TXM', into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP", @@ -10722,7 +10994,7 @@ LIRE_FONCTION=OPER(nom="LIRE_FONCTION",op= 83,sd_prod=fonction, INFO =SIMP(statut='f',typ='I',defaut= 2,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10743,6 +11015,7 @@ LIRE_FONCTION=OPER(nom="LIRE_FONCTION",op= 83,sd_prod=fonction, LIRE_INTE_SPEC=OPER(nom="LIRE_INTE_SPEC",op= 116,sd_prod=tabl_intsp, fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale", docu="U4.36.01-f2",reentrant='n', + UIinfo={"groupes":("Fonction",)}, UNITE =SIMP(statut='o',typ='I' ), FORMAT =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",into=("REEL_IMAG","MODULE_PHASE") ), NOM_PARA =SIMP(statut='f',typ='TXM', @@ -10755,7 +11028,7 @@ LIRE_INTE_SPEC=OPER(nom="LIRE_INTE_SPEC",op= 116,sd_prod=tabl_intsp, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10778,6 +11051,7 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage, fr="Lecture d'un fichier de maillage", ang="Readings of a mesh file", docu="U4.21.01-g1",reentrant='n', + UIinfo={"groupes":("Maillage",)}, # UNITE =SIMP(statut='f',typ='I',defaut= 20 ), # @@ -10812,7 +11086,7 @@ LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), # ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10827,13 +11101,14 @@ def lire_miss_3d_prod(TYPE_RESU,**args): LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, fr="Restitution au format MISS3D d une évolution harmonique ou transitoire", docu="U7.02.31-c",reentrant='n', + UIinfo={"groupes":("Maillage",)}, MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ), UNITE =SIMP(statut='f',typ='I',defaut= 27 ), NOM =SIMP(statut='f',typ='TXM' ), TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10854,6 +11129,7 @@ LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod, LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, fr=" ", docu="U7.02.11-a",reentrant='n', + UIinfo={"groupes":("Maillage",)}, regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), UNITE =SIMP(statut='f',typ='I',defaut= 19 ), FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",)), @@ -10872,7 +11148,7 @@ LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char, ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -10892,6 +11168,7 @@ def lire_resu_prod(TYPE_RESU,**args): raise AsException("type de concept resultat non prevu") LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,docu="U7.02.01-d2",reentrant='n', + UIinfo={"groupes":("Maillage",)}, fr="Lecture de champs aux noeuds ou par éléments aux noeuds sur un fichier IDEAS ou EnSight", @@ -11004,7 +11281,10 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,docu="U7.02.01-d2", ), b_mode_meca =BLOC(condition="TYPE_RESU=='MODE_MECA'", NOM_CHAM =SIMP(statut='o',typ='TXM',max='**', - into=("DEPL",) ), + into=("DEPL",) + ), + MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,min=1,max=1,), + MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,min=1,max=1,), ), b_dyna =BLOC(condition="((TYPE_RESU=='DYNA_TRANS') or (TYPE_RESU=='DYNA_HARMO') or\ (TYPE_RESU=='HARM_GENE')) and (DATASET_58=='NON')", @@ -11031,7 +11311,7 @@ LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,docu="U7.02.01-d2", ), ), ) ; -#& MODIF COMMANDE DATE 08/08/2002 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -11058,6 +11338,7 @@ def lire_table_prod(TYPE_TABLE,**args): raise AsException("type de concept resultat non prevu") LIRE_TABLE=OPER(nom="LIRE_TABLE",op=29,sd_prod=lire_table_prod, docu="U7.02.03",fr="Lecture d un concept de type table", + UIinfo={"groupes":("Maillage",)}, UNITE =SIMP(statut='o',typ='I' ), FORMAT =SIMP(statut='f',typ='TXM',into=("ASTER",),defaut="ASTER"), NUME_TABLE =SIMP(statut='f',typ='I',defaut=1), @@ -11070,7 +11351,7 @@ LIRE_TABLE=OPER(nom="LIRE_TABLE",op=29,sd_prod=lire_table_prod, SEPARATEUR =SIMP(statut='o',typ='TXM'), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 08/10/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -11112,8 +11393,8 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=-24,sd_prod=macr_adap_mail_prod, # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V5_3", - into=("V5_3", "V5_N", "V5_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V5_5", + into=("V5_5", "V5_N", "V5_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # @@ -11323,7 +11604,7 @@ MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=-24,sd_prod=macr_adap_mail_prod, MENAGE = SIMP(statut='f',typ='TXM',into=("MAILLAGE","SOLUTION","TOUT") ), # ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -11354,11 +11635,13 @@ def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,CHARGE,RESU MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op= -20,sd_prod=macr_ascouf_calc_prod, fr=" ", docu="U4.CF.20-b1",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),), TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', into=("SAIN", "FISS_COUDE", + "FISS_AXIS_DEB", "SOUS_EPAIS_COUDE" ) ), @@ -11386,6 +11669,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op= -20,sd_prod=macr_ascouf_calc_p PRES_REP =FACT(statut='f',min=1,max=1, PRES =SIMP(statut='o',typ='R' ), EFFE_FOND_P1 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ), + PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), FONC_MULT =SIMP(statut='f',typ=fonction ), ), @@ -11527,7 +11811,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op= -20,sd_prod=macr_ascouf_calc_p INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -11548,6 +11832,7 @@ MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op= -20,sd_prod=macr_ascouf_calc_p # RESPONSABLE F1BHHAJ J.ANGLES MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op= -19,sd_prod=maillage, fr=" ",docu="U4.CF.10-b1",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),), @@ -11673,7 +11958,7 @@ MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op= -19,sd_prod=maillage, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -11704,6 +11989,7 @@ def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=-17,sd_prod=macr_aspic_calc_prod, fr=" ",docu="U4.PC.20-b2",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),), TYPE_MAILLAGE =SIMP(statut='o',typ='TXM', @@ -11739,6 +12025,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=-17,sd_prod=macr_aspic_calc_prod, PRES =SIMP(statut='o',typ='R'), NOEUD =SIMP(statut='f',typ=no), EFFE_FOND =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), + PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), FONC_MULT =SIMP(statut='f',typ=fonction), ), @@ -11890,7 +12177,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=-17,sd_prod=macr_aspic_calc_prod, TITRE =SIMP(statut='f',typ='TXM'), ) ; # debut entete -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -11911,6 +12198,7 @@ MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=-17,sd_prod=macr_aspic_calc_prod, # RESPONSABLE F1BHHAJ J.ANGLES MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= -16,sd_prod=maillage,reentrant='n', fr=" ",docu="U4.PC.10-b1", + UIinfo={"groupes":("Outils métier",)}, EXEC_MAILLAGE =FACT(statut='o',min=1,max=1, LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000")), @@ -11983,7 +12271,7 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= -16,sd_prod=maillage,reentrant=' INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12004,6 +12292,7 @@ MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= -16,sd_prod=maillage,reentrant=' MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, fr="Définition d un macro élément pour analyse modale ou harmonique par sous structuration dynamique", docu="U4.65.01-e1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ),), BASE_MODALE =SIMP(statut='o',typ=base_modale ), MATR_RIGI =SIMP(statut='f',typ=matr_asse_depl_r ), @@ -12013,7 +12302,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","RITZ", "DIAG_MASS") ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12032,6 +12321,7 @@ MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,docu="U4.62.01-f1",reentrant='f', + UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Définition d un macro-élément pour l analyse statique par sous structuration", regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'), ENSEMBLE('DEFINITION','EXTERIEUR'),), @@ -12061,7 +12351,7 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,docu="U4.6 INST =SIMP(statut='f',typ='R',defaut=0.E+0), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12081,8 +12371,9 @@ MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,docu="U4.6 # ====================================================================== MACR_GOUJ2E_CALC=MACRO(nom="MACR_GOUJ2E_CALC",op=-23,sd_prod=evol_noli, fr=" ",docu="U4.GJ.20-a",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, MAILLAGE =SIMP(statut='o',typ=maillage), - DEFI_GOUJ =FACT(statut='o',min=01,max=01, + DEFI_GOUJ =FACT(statut='o',min=1,max=1, TYPE =SIMP(statut='o',typ='TXM',into=("M33","M64","M90","M115","M155","M180","M186")), VARIANTE =SIMP(statut='o',typ='TXM',into=("A","B","C","D","E","F","G","H","I","J","K","L","M", "N","O","P","Q","R","S","T","U","V","W","X","Y","Z")), @@ -12093,15 +12384,15 @@ MACR_GOUJ2E_CALC=MACRO(nom="MACR_GOUJ2E_CALC",op=-23,sd_prod=evol_noli, FILET_JEU_HTA =SIMP(statut='f',typ='I',max='**'), FILET_JEU_HTB =SIMP(statut='f',typ='I',max='**'), ), - EXCIT =FACT(statut='o',min=01,max=01, + EXCIT =FACT(statut='o',min=1,max=1, TYPE_BLOCAGE =SIMP(statut='o',typ='I',defaut=2,into=(1,2,3)), FORCE_GOUJ =SIMP(statut='o',typ='R'), ), - CALCUL =FACT(statut='o',min=01,max=01, + CALCUL =FACT(statut='o',min=1,max=1, TYPE_CALCUL =SIMP(statut='o',typ='TXM',into=("ELASTIQUE","ELASTOPLASTIQUE")), NB_INCR =SIMP(statut='o',typ='I'), ), - IMPRESSION =FACT(statut='f',min=01,max=01, + IMPRESSION =FACT(statut='f',min=1,max=1, FORMAT =SIMP(statut='f',typ='TXM',defaut="TABLE", into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","TABLE")), VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)), @@ -12109,7 +12400,7 @@ MACR_GOUJ2E_CALC=MACRO(nom="MACR_GOUJ2E_CALC",op=-23,sd_prod=evol_noli, TITRE =SIMP(statut='f',typ='TXM'), INFO =SIMP(statut='f',typ='I',defaut=1 ,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 03/10/2001 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12129,6 +12420,7 @@ MACR_GOUJ2E_CALC=MACRO(nom="MACR_GOUJ2E_CALC",op=-23,sd_prod=evol_noli, # ====================================================================== MACR_GOUJ2E_MAIL=MACRO(nom="MACR_GOUJ2E_MAIL",op= -22,sd_prod=maillage, fr=" ",docu="U4.GJ.10-a",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, EXEC_MAILLAGE =FACT(statut='o',min=1,max=1, LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ), UNITE_DATG =SIMP(statut='f',typ='I',defaut=70), @@ -12159,7 +12451,7 @@ MACR_GOUJ2E_MAIL=MACRO(nom="MACR_GOUJ2E_MAIL",op= -22,sd_prod=maillage, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 16/07/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 08/10/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12188,8 +12480,8 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=-24,docu="U7.03.02-b2", # # 2. Version de HOMARD # - VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V5_3", - into=("V5_3", "V5_N","V5_N_PERSO"), + VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V5_5", + into=("V5_5", "V5_N","V5_N_PERSO"), fr="Version de HOMARD", ang="HOMARD release"), # @@ -12238,7 +12530,7 @@ MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=-24,docu="U7.03.02-b2", ang="Overlapping checking." ), # ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -12268,6 +12560,7 @@ def macr_lign_coupe_prod(self,LIGN_COUPE,**args): MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=macr_lign_coupe_prod, docu="",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, fr="extraction d un résultat sur des lignes de coupes définies par 2 points et un intervalle", RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ), b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique", @@ -12285,7 +12578,47 @@ MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=macr_ TABLE =SIMP(statut='o',typ=(table,CO)), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# ====================================================================== + +from Macro.macr_recal_ops import macr_recal_ops + +def macr_recal_prod(self,**args ): + return listr8 + +MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,docu="U4.73.02", + UIinfo={"groupes":("Résultats et champs",)}, + sd_prod=macr_recal_prod, + fr="Réalise le recalage de modèles Aster", + UNITE_ESCL =SIMP(statut='o',typ='I'), + RESU_EXP =SIMP(statut='o',typ=assd,min = 1, max='**'), + RESU_CALC =SIMP(statut='o',typ=assd,min = 1, max='**'), + LIST_PARA =SIMP(statut='o',typ=assd,min = 1, max='**'), + ITER_MAXI =SIMP(statut='f',typ='I',defaut=10), + RESI_GLOB_RELA =SIMP(statut='f',typ='R',defaut=1.E-3), + UNITE_RESU =SIMP(statut='f',typ='I',defaut=91), + PARA_DIFF_FINI =SIMP(statut='f',typ='R',defaut=0.001), + GRAPHIQUE =FACT(statut='d',min=1,max=1, + UNITE =SIMP(statut='f',typ='I',defaut=90), + INTERACTIF =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),) +) ; +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12309,13 +12642,14 @@ from Macro.macro_cara_poutre_ops import macro_cara_poutre_ops MACRO_CARA_POUTRE=MACRO(nom="MACRO_CARA_POUTRE",op=macro_cara_poutre_ops,sd_prod=tabl_cara_geom, docu="U4.42.02-d1",reentrant='n', + UIinfo={"groupes":("Modélisation",)}, fr="caractéristiques d'une section transversale de poutre à partir d'un maillage 2D", regles=(EXCLUS('SYME_X','GROUP_MA_BORD'), EXCLUS('SYME_Y','GROUP_MA_BORD'), ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 20 ), - SYME_X =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), - SYME_Y =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",)), + SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",)), GROUP_MA_BORD =SIMP(statut='f',typ=grma,max='**'), GROUP_MA =SIMP(statut='f',typ=grma,max='**'), ORIG_INER =SIMP(statut='f',typ='R',max='**',defaut=(0.E+0,0.E+0)), @@ -12326,7 +12660,7 @@ MACRO_CARA_POUTRE=MACRO(nom="MACRO_CARA_POUTRE",op=macro_cara_poutre_ops,sd_prod LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT")), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12346,6 +12680,7 @@ MACRO_CARA_POUTRE=MACRO(nom="MACRO_CARA_POUTRE",op=macro_cara_poutre_ops,sd_prod # ====================================================================== MACRO_CHAR_F_U=MACRO(nom="MACRO_CHAR_F_U",op=-15,sd_prod=char_meca, fr=" ",docu="U4.72.07-a",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), CHARGE =SIMP(statut='o',typ=char_meca), @@ -12354,7 +12689,7 @@ MACRO_CHAR_F_U=MACRO(nom="MACRO_CHAR_F_U",op=-15,sd_prod=char_meca, NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="APRES",into=("NORMAL","APRES")), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12383,6 +12718,7 @@ def macro_elas_mult_prod(self,NUME_DDL,CAS_CHARGE,**args ): raise AsException("type de concept resultat non prevu") MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro_elas_mult_prod,docu="U4.51.02-d2",reentrant='f', + UIinfo={"groupes":("Résolution",)}, regles=(UN_PARMI('CHAR_MECA_GLOBAL','CHAR_CINE_GLOBAL','LIAISON_DISCRET', ),), MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='f',typ=cham_mater), @@ -12433,7 +12769,7 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12452,6 +12788,7 @@ MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== MACRO_MADMACS=MACRO(nom="MACRO_MADMACS",op=-9,docu="U7.03.21-c", + UIinfo={"groupes":("Résolution",)}, fr="Impression au format IDEAS des données pour chainage entre Code_Aster et MADMACS", regles=(UN_PARMI('MATR_ELEM_RIGI','MATR_RIGI'), UN_PARMI('MATR_ELEM_MASS','MATR_MASS'), @@ -12470,7 +12807,7 @@ MACRO_MADMACS=MACRO(nom="MACRO_MADMACS",op=-9,docu="U7.03.21-c", MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r), MODE_MECA =SIMP(statut='o',typ=mode_meca), NMAX_MODE =SIMP(statut='f',typ='I',defaut=10), - INTERFACE =FACT(statut='f',min=01,max='**', + INTERFACE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD','GROUP_NO'), UN_PARMI('DDL_ACTIF','MASQUE'),), NOM =SIMP(statut='o',typ='TXM'), @@ -12481,7 +12818,7 @@ MACRO_MADMACS=MACRO(nom="MACRO_MADMACS",op=-9,docu="U7.03.21-c", ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12510,6 +12847,7 @@ def macro_matr_ajou_prod(self,MATR_AMOR_AJOU,MATR_MASS_AJOU,MATR_RIGI_AJOU,FORC_ return None MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=-13,docu="U4.66.11-c1",sd_prod=macro_matr_ajou_prod, + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'), AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'), EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'), @@ -12583,7 +12921,7 @@ MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=-13,docu="U4.66.11-c1",sd_prod=ma NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12627,6 +12965,7 @@ def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): return None MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,docu="U4.61.21-d1", + UIinfo={"groupes":("Matrices/vecteurs",)}, sd_prod=macro_matr_asse_prod, fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ", MODELE =SIMP(statut='o',typ=modele), @@ -12659,7 +12998,7 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,docu="U4.61.2 TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 11/06/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12681,6 +13020,7 @@ MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,docu="U4.61.2 from Macro.macro_miss_3d_ops import macro_miss_3d_ops MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,fr=" ",docu="U7.03.11-a", + UIinfo={"groupes":("Matrices/vecteurs",)}, OPTION =FACT(statut='o',min=1,max=1, regles=(UN_PARMI('TOUT','MODULE'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)), @@ -12693,7 +13033,7 @@ MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,fr=" ",docu="U7.03. UNITE_MODELE_SOL=SIMP(statut='f',typ='I',defaut=27), UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12721,12 +13061,30 @@ def macro_mode_meca_prod(self,MATR_A,MATR_B,**args ): MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=macro_mode_meca_prod, docu="U4.52.02-d1",reentrant='n', + UIinfo={"groupes":("Résolution",)}, MATR_A =SIMP(statut='o',typ=(CO,matr_asse_depl_r) ), MATR_B =SIMP(statut='o',typ=(CO,matr_asse_depl_r) ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), # ce mot cle ne devrait il pas etre dans calc_freq METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN", into=("TRI_DIAG","JACOBI","SORENSEN",) ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), OPTION =SIMP(statut='f',typ='TXM',defaut="SANS", into=("MODE_RIGIDE","SANS") ), CALC_FREQ =FACT(statut='d',min=0,max=1, @@ -12743,17 +13101,6 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=macro NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2 ), - PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-10 ), - PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12 ), - NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5 ), - NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30 ), - PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.4E-10 ), - NMAX_ITER_BATHE =SIMP(statut='f',typ='I' ,defaut= 12 ), - PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2 ), - NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12 ), - PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E0 ), - NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20 ), - PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717 ), SEUIL_FREQ =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ), STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ), ), @@ -12782,7 +13129,7 @@ MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=macro into=("MASS_EFFE_UN","MASS_GENE",) ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12814,17 +13161,18 @@ def macro_proj_base_prod(self,MATR_ASSE_GENE,VECT_ASSE_GENE,**args ): return None MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,docu="U4.63.11-d1", + UIinfo={"groupes":("Matrices/vecteurs",)}, sd_prod=macro_proj_base_prod, fr="Projection des matrices et/ou vecteurs assemblés sur une base de vecteurs", BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene) ), NB_VECT =SIMP(statut='f',typ='I',defaut= 9999), - MATR_ASSE_GENE =FACT(statut='f',min=01,max='**', + MATR_ASSE_GENE =FACT(statut='f',min=1,max='**', MATRICE =SIMP(statut='o',typ=(CO,matr_asse)), MATR_ASSE =SIMP(statut='f',typ=matr_asse_depl_r), MATR_ASSE_GENE =SIMP(statut='f',typ=matr_asse_gene_r), PROFIL =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("PLEIN","DIAG") ), ), - VECT_ASSE_GENE =FACT(statut='f',min=01,max='**', + VECT_ASSE_GENE =FACT(statut='f',min=1,max='**', VECTEUR =SIMP(statut='o',typ=(CO,vect_asse)), TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"), VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r), @@ -12832,7 +13180,7 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,docu="U4.63.1 ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12851,12 +13199,13 @@ MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,docu="U4.63.1 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== MAJ_CATA=PROC(nom="MAJ_CATA",op=20,docu="U4.15.01-e1", + UIinfo={"groupes":("Gestion du travail",)}, fr="Compilation des catalogues de commandes et d éléments", - ELEMENT =FACT(statut='f',min=01,max=01,), + ELEMENT =FACT(statut='f',min=1,max=1,), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12866,6 +13215,7 @@ MAJ_CATA=PROC(nom="MAJ_CATA",op=20,docu="U4.15.01-e1", # RESPONSABLE VABHHTS J.PELLET MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, fr="Analyse mécanique statique linéaire",docu="U4.51.01-g1",reentrant='n', + UIinfo={"groupes":("Résolution",)}, regles=(EXCLUS("INST","LIST_INST"), AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), ), MODELE =SIMP(statut='o',typ=modele), @@ -12921,7 +13271,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 17/06/2002 AUTEUR GNICOLAS G.NICOLAS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -12941,6 +13291,7 @@ MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas, # ====================================================================== # RESPONSABLE GNICOLAS G.NICOLAS MEMO_NOM_SENSI=PROC(nom="MEMO_NOM_SENSI",op=129,docu="U4.31.xx-a", + UIinfo={"groupes":("Fonction",)}, fr="Mémorisation des noms des concepts dérivés.", ang="Memorisation of the names of the sensitive concepts.", @@ -12980,7 +13331,7 @@ MEMO_NOM_SENSI=PROC(nom="MEMO_NOM_SENSI",op=129,docu="U4.31.xx-a", ang="Name of the one fonction"), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13001,29 +13352,30 @@ MEMO_NOM_SENSI=PROC(nom="MEMO_NOM_SENSI",op=129,docu="U4.31.xx-a", MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl, fr="Modes propres d une structure à répétitivité cyclique à partir d une base de modes propres réels", docu="U4.52.05-e",reentrant='n', + UIinfo={"groupes":("Résolution",)}, BASE_MODALE =SIMP(statut='o',typ=base_modale ), NB_MODE =SIMP(statut='f',typ='I',defaut= 999 ), NB_SECTEUR =SIMP(statut='o',typ='I' ), - LIAISON =FACT(statut='o',min=01,max=01, + LIAISON =FACT(statut='o',min=1,max=1, DROITE =SIMP(statut='o',typ='TXM' ), GAUCHE =SIMP(statut='o',typ='TXM' ), AXE =SIMP(statut='f',typ='TXM' ), ), - VERI_CYCL =FACT(statut='f',min=01,max=01, + VERI_CYCL =FACT(statut='f',min=1,max=1, PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF",) ), DIST_REFE =SIMP(statut='f',typ='R' ), ), - CALCUL =FACT(statut='o',min=01,max=01, + CALCUL =FACT(statut='o',min=1,max=1, TOUT_DIAM =SIMP(statut='f',typ='TXM',into=("OUI",) ), NB_DIAM =SIMP(statut='f',typ='I',max='**'), OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE" ,into=("PLUS_PETITE","CENTRE","BANDE") ), b_centre =BLOC(condition = "OPTION == 'CENTRE'", - FREQ =SIMP(statut='o',typ='R',min=01,max=01), + FREQ =SIMP(statut='o',typ='R',min=1,max=1), ), b_bande =BLOC(condition = "OPTION == 'BANDE'", - FREQ =SIMP(statut='o',typ='R',min=02,max=02), + FREQ =SIMP(statut='o',typ='R',min=2,max=2), ), # NMAX_FREQ n a-t-il pas un sens qu avec OPTION CENTRE NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10 ), @@ -13033,7 +13385,7 @@ MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl, ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13062,6 +13414,7 @@ def mode_iter_inv_prod(MATR_A,MATR_C,TYPE_RESU,**args ): MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod ,fr="Modes propres par itérations inverses ; valeurs propres et modes réels ou complexes", docu="U4.52.04-g1",reentrant='n', + UIinfo={"groupes":("Résolution",)}, MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), MATR_C =SIMP(statut='f',typ=matr_asse_depl_r ), @@ -13117,7 +13470,7 @@ MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13146,11 +13499,29 @@ def mode_iter_simult_prod(MATR_A,MATR_C,TYPE_RESU,**args ): MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_prod, fr="Modes propres par itérations simultanées ; valeurs propres et modes propres réels ou complexes", docu="U4.52.03-f2",reentrant='n', + UIinfo={"groupes":("Résolution",)}, MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ), MATR_C =SIMP(statut='f',position='global',typ=matr_asse_depl_r ), METHODE =SIMP(statut='f',position='global',typ='TXM',defaut="SORENSEN", into=("TRI_DIAG","JACOBI","SORENSEN") ), + b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", + PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), + NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), + PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), + NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), + ), + b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", + PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), + NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), + PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), + NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), + ), + b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", + PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), + NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), + PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), + ), TYPE_RESU =SIMP(statut='f',position='global',typ='TXM',defaut="DYNAMIQUE", into=("MODE_FLAMB","DYNAMIQUE"), fr="Type d analyse" ), @@ -13179,23 +13550,6 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", - PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), - NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), - PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), - NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), - ), - b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", - PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), - NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), - PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), - NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), - ), - b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", - PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), - NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), - PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), - ), NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), @@ -13227,23 +13581,6 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),), DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ), COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ), - b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'", - PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ), - NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), - PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ), - NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ), - ), - b_jacobi =BLOC(condition = "METHODE == 'JACOBI'", - PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ), - NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ), - PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ), - NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ), - ), - b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'", - PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ), - NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ), - PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ), - ), NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ), NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ), PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ), @@ -13262,7 +13599,7 @@ MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_pr INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13288,10 +13625,11 @@ def mode_stat_prod(MODE_STAT,FORCE_NODALE,PSEUDO_MODE,**args): MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, fr="Calcul de modes statiques", docu="U4.52.14-f2",reentrant='n', + UIinfo={"groupes":("Résolution",)}, MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ), MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ), regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE'),), - MODE_STAT =FACT(statut='f',min=01,max='**', + MODE_STAT =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ,), @@ -13301,7 +13639,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), ), - FORCE_NODALE =FACT(statut='f',min=01,max='**', + FORCE_NODALE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'), UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),), TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ), @@ -13311,7 +13649,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), ), - PSEUDO_MODE =FACT(statut='f',min=01,max='**', + PSEUDO_MODE =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('AXE','DIRECTION','TOUT','NOEUD','GROUP_NO' ),), AXE =SIMP(statut='f',typ='TXM',into=("X","Y","Z"),max=3), DIRECTION =SIMP(statut='f',typ='R',min=3,max=3), @@ -13330,7 +13668,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13350,6 +13688,7 @@ MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod, # ====================================================================== MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, docu="U4.66.21-c",reentrant='f', + UIinfo={"groupes":("Matrices/vecteurs",)}, # la commande modi_base _modale : reentrant = f ou o regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),), BASE =SIMP(statut='o',typ=mode_meca ), @@ -13361,39 +13700,47 @@ MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # 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. +# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND +# REDISTRIBUTION OF THIS FILE. # ====================================================================== # RESPONSABLE G8BHHXD X.DESROCHES MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, fr="Modification de la connectivité de groupes de mailles 2D ou 3D affectées à la modélisation de contact", docu="U4.23.04-d1",reentrant='o', - regles=(UN_PARMI('ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', - 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE'), + UIinfo={"groupes":("Maillage",)}, + regles=(AU_MOINS_UN('ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE', + 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE',), + PRESENT_ABSENT('ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('DEFORME','ORIE_CONTACT','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('EQUE_PIQUA','ORIE_CONTACT','DEFORME','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('ORIE_PEAU_2D','ORIE_CONTACT','DEFORME','EQUE_PIQUA', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('ORIE_PEAU_3D','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('ORIE_NORM_COQUE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','PLAQ_TUBE','MODI_MAILLE',), + PRESENT_ABSENT('PLAQ_TUBE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','MODI_MAILLE',), + PRESENT_ABSENT('MODI_MAILLE','ORIE_CONTACT','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D', + 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE',), EXCLUS('EQUE_PIQUA','PLAQ_TUBE'), - EXCLUS('EQUE_PIQUA','TUBE_COUDE'),), + EXCLUS('EQUE_PIQUA','TUBE_COUDE'), + EXCLUS('ROTATION','MODI_BASE'),), MAILLAGE =SIMP(statut='o',typ=maillage ), - ORIE_CONTACT =FACT(statut='f',min=01,max=01, + ORIE_CONTACT =FACT(statut='f',min=1,max=1, GROUP_MA =SIMP(statut='o',typ=grma,max='**'), ), - DEFORME =FACT(statut='f',min=01,max=01, + DEFORME =FACT(statut='f',min=1,max=1, OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ), DEPL =SIMP(statut='o',typ=cham_no_depl_r ), b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'", @@ -13401,12 +13748,13 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, GROUP_NO_STRU = SIMP(statut='o',typ=grno,max='**' ),), ), - EQUE_PIQUA =FACT(statut='f',min=01,max=01, + EQUE_PIQUA =FACT(statut='f',min=1,max=1, GROUP_NO =SIMP(statut='o',typ=grno), E_BASE =SIMP(statut='o',typ='R' ), DEXT_BASE =SIMP(statut='o',typ='R' ), L_BASE =SIMP(statut='o',typ='R' ), L_CHANF =SIMP(statut='o',typ='R' ), + TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")), H_SOUD =SIMP(statut='o',typ='R' ), ANGL_SOUD =SIMP(statut='o',typ='R' ), JEU_SOUD =SIMP(statut='o',typ='R' ), @@ -13416,37 +13764,37 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, RAFF_MAIL =SIMP(statut='o',typ='TXM' ), X_MAX =SIMP(statut='o',typ='R' ), ), - ORIE_PEAU_2D =FACT(statut='f',min=01,max='**', + ORIE_PEAU_2D =FACT(statut='f',min=1,max='**', GROUP_MA =SIMP(statut='o',typ=grma,max='**'), ), - ORIE_PEAU_3D =FACT(statut='f',min=01,max='**', + ORIE_PEAU_3D =FACT(statut='f',min=1,max='**', GROUP_MA =SIMP(statut='o',typ=grma,max='**'), ), - ORIE_NORM_COQUE =FACT(statut='f',min=01,max='**', + ORIE_NORM_COQUE =FACT(statut='f',min=1,max='**', regles=(EXCLUS('NOEUD','GROUP_NO'), PRESENT_PRESENT('NOEUD','VECT_NORM'), PRESENT_PRESENT('GROUP_NO','VECT_NORM'),), GROUP_MA =SIMP(statut='o',typ=grma,max='**'), - VECT_NORM =SIMP(statut='f',typ='R',max=03), + VECT_NORM =SIMP(statut='f',typ='R',max=3), NOEUD =SIMP(statut='f',typ=no), GROUP_NO =SIMP(statut='f',typ=grno), ), b_modele =BLOC(condition = "(ORIE_PEAU_2D != None) or (ORIE_PEAU_3D != None) or(ORIE_NORM_COQUE != None)", MODELE =SIMP(statut='o',typ=modele ), ), - PLAQ_TUBE =FACT(statut='f',min=01,max=01, + PLAQ_TUBE =FACT(statut='f',min=1,max=1, DEXT =SIMP(statut='o',typ='R' ), EPAIS =SIMP(statut='o',typ='R' ), L_TUBE_P1 =SIMP(statut='o',typ='R' ), AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ), COUTURE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ), ), - TUBE_COUDE =FACT(statut='f',min=01,max=01, + TUBE_COUDE =FACT(statut='f',min=1,max=1, ANGLE =SIMP(statut='o',typ='R' ), R_CINTR =SIMP(statut='o',typ='R' ), L_TUBE_P1 =SIMP(statut='o',typ='R' ), ), - MODI_MAILLE =FACT(statut='f',min=01,max=01, + MODI_MAILLE =FACT(statut='f',min=1,max=1, regles=(AU_MOINS_UN('GROUP_MA_FOND','MAILLE_FOND','GROUP_NO_FOND','NOEUD_FOND'),), OPTION =SIMP(statut='o',typ='TXM',into=("NOEUD_QUART",) ), GROUP_MA_FOND =SIMP(statut='f',typ=grma,max='**'), @@ -13454,9 +13802,23 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, GROUP_NO_FOND =SIMP(statut='f',typ=grno,max='**'), NOEUD_FOND =SIMP(statut='f',typ=no,max='**'), ), + MODI_BASE =FACT(statut='f',min=1,max=1, + VECT_X =SIMP(statut='o',typ='R',min=2,max=3), + VECT_Y =SIMP(statut='f',typ='R',min=2,max=3), + ), + ECHELLE =SIMP(statut='f',typ='R',min=1,max=1), + TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3), + ROTATION =FACT(statut='f',min=1,max='**', + POIN_1 =SIMP(statut='o',typ='R',min=2,max=3), + ANGL =SIMP(statut='o',typ='R',defaut= 0.E+0 ), + regles=(EXCLUS('DIR','POIN_2'),), + POIN_2 =SIMP(statut='f',typ='R',min=2,max=3), + DIR =SIMP(statut='f',typ='R',min=2,max=3), + ), + INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 15/01/2002 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13476,6 +13838,7 @@ MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage, # ====================================================================== MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=obstacle, fr=" ",docu="U4.44.22-a",reentrant='f', + UIinfo={"groupes":("Modélisation",)}, regles=(PRESENT_ABSENT('R_MOBILE','CRAYON'), PRESENT_PRESENT('TUBE_NEUF','TABL_USURE'), PRESENT_PRESENT('V_USUR_TUBE','V_USUR_OBST'),), @@ -13491,7 +13854,7 @@ MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=obstacle, PERCEMENT =SIMP(statut='f',typ='R',defaut=1), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13523,6 +13886,7 @@ def modi_repere_prod(RESULTAT,**args): raise AsException("type de concept resultat non prevu") MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,docu="U4.74.01-a3",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, fr="Impression des resultats dans un repere cylindrique", RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca, evol_noli,mult_elas, @@ -13543,7 +13907,7 @@ MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,docu="U4.74.0 PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),), - MODI_CHAM =FACT(statut='o',min=01,max='**', + MODI_CHAM =FACT(statut='o',min=1,max='**', TYPE_CHAM =SIMP(statut='o',typ='TXM', max=1, into=("VECT_2D","VECT_3D","TORS_3D","TENS_2D","TENS_3D"),), NOM_CHAM =SIMP(statut='o',typ='TXM',max=1 ), @@ -13568,7 +13932,7 @@ MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,docu="U4.74.0 ), INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13595,6 +13959,7 @@ def norm_mode_prod(MODE,**args ): NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, fr="Normalisation de modes propres", docu="U4.52.11-e",reentrant='f', + UIinfo={"groupes":("Résolution",)}, regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'),), MODE =SIMP(statut='o',typ=(mode_meca,mode_flamb) ), NORME =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...", @@ -13606,7 +13971,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'), SANS_CMP =SIMP(statut='f',typ='TXM',max='**'), MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ), - MODE_SIGNE =FACT(statut='f',min=00,max=01,fr="Imposer un signe sur une des composantes des modes", + MODE_SIGNE =FACT(statut='f',max=1,fr="Imposer un signe sur une des composantes des modes", NOEUD =SIMP(statut='o',typ=no,fr="Noeud ou sera imposé le signe"), NOM_CMP =SIMP(statut='o',typ='TXM',fr="Composante du noeud ou sera imposé le signe" ), SIGNE =SIMP(statut='f',typ='TXM',defaut="POSITIF",into=("NEGATIF","POSITIF"), @@ -13615,7 +13980,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13635,6 +14000,7 @@ NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod, # ====================================================================== # RESPONSABLE VABHHTS J.PELLET NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl,docu="U4.61.11-g1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice", regles=(UN_PARMI('MATR_RIGI','MODELE'),), MATR_RIGI =SIMP(statut='f',typ=(matr_elem_depl_r ,matr_elem_depl_c, @@ -13655,7 +14021,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl,docu="U4.61.11-g1",reentrant ), INFO =SIMP(statut='f',typ='I',into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13676,6 +14042,7 @@ NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl,docu="U4.61.11-g1",reentrant NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, fr="Etablissement de la numérotation des ddl d un modèle établi en coordonnées généralisées", docu="U4.65.03-e1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=UN_PARMI('MODELE_GENE','BASE'), MODELE_GENE =SIMP(statut='f',typ=modele_gene ), b_modele_gene =BLOC(condition = "MODELE_GENE != None", @@ -13687,7 +14054,7 @@ NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13708,6 +14075,7 @@ NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene, POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea, fr="Traitements statistiques de résultats de type interspectre et impression sur fichiers", docu="U4.84.04-d",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),), INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ), NUME_VITE_FLUI =SIMP(statut='f',typ='I' ), @@ -13723,7 +14091,7 @@ POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea, NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**' ), NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**' ), ), - DEPASSEMENT =FACT(statut='f',min=01,max='**', + DEPASSEMENT =FACT(statut='f',min=1,max='**', fr="Loi de dépassement d un seuil pendant une durée donnée", regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),), VALE_MIN =SIMP(statut='f',typ='R' ), @@ -13731,21 +14099,21 @@ POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea, PAS =SIMP(statut='f',typ='R' ), DUREE =SIMP(statut='f',typ='R',defaut= 1. ), ), - RAYLEIGH =FACT(statut='f',min=01,max='**', + RAYLEIGH =FACT(statut='f',min=1,max='**', fr="Densité de probabilité de pic positif, loi adaptée à des signaux à bande étroite", regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),), VALE_MIN =SIMP(statut='f',typ='R' ), VALE_MAX =SIMP(statut='f',typ='R' ), PAS =SIMP(statut='f',typ='R' ), ), - GAUSS =FACT(statut='f',min=01,max='**', + GAUSS =FACT(statut='f',min=1,max='**', fr="Densité de probabilité de pic positif, loi normale adaptée à des signaux large bande", regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),), VALE_MIN =SIMP(statut='f',typ='R' ), VALE_MAX =SIMP(statut='f',typ='R' ), PAS =SIMP(statut='f',typ='R' ), ), - VANMARCKE =FACT(statut='f',min=01,max='**', + VANMARCKE =FACT(statut='f',min=1,max='**', fr="Probabilité de non dépassement de seuil pendant une durée donnée (analyse sismique)", regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),), VALE_MIN =SIMP(statut='f',typ='R' ), @@ -13757,7 +14125,7 @@ POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea, TITRE =SIMP(statut='f',typ='TXM',max='**' ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13778,9 +14146,10 @@ POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea, POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna, fr="Post-traitements en coordonnées généralisées issus de DYNA_TRAN_MODAL", docu="U4.84.02-d",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),), RESU_GENE =SIMP(statut='o',typ=tran_gene ), - CHOC =FACT(statut='f',min=01,max='**', + CHOC =FACT(statut='f',min=1,max='**', fr="Analyse des non linéarités de choc", INST_INIT =SIMP(statut='f',typ='R',defaut= -1. ), INST_FIN =SIMP(statut='f',typ='R',defaut= 999. ), @@ -13790,7 +14159,7 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna, OPTION =SIMP(statut='f',typ='TXM',defaut="USURE",into=("IMPACT","USURE") ), NB_CLASSE =SIMP(statut='f',typ='I',defaut= 10 ), ), - RELA_EFFO_DEPL =FACT(statut='f',min=01,max=01, + RELA_EFFO_DEPL =FACT(statut='f',min=1,max=1, fr="Analyse des relationsnon linéaires effort-déplacement", NOEUD =SIMP(statut='o',typ=no), NOM_CMP =SIMP(statut='o',typ='TXM' ), @@ -13798,7 +14167,7 @@ POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna, INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -13838,6 +14207,7 @@ def post_elem_prod( MASS_INER,ENER_POT,ENER_CIN,TRAV_EXT,WEIBULL, raise AsException("type de concept resultat non prevu") POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,docu="U4.81.22-e3",reentrant='f', + UIinfo={"groupes":("Post traitements",)}, fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle", regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT', @@ -14202,7 +14572,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,docu="U4.81.22-e3", INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14221,6 +14591,7 @@ POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,docu="U4.81.22-e3", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,docu="U4.84.03-c",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, fr="Calcul du dommage subi par une structure soumise à unesollicitation de type aléatoire", regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'), PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'), @@ -14236,7 +14607,7 @@ POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,docu="U MATER =SIMP(statut='o',typ=mater), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14255,6 +14626,7 @@ POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,docu="U # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,docu="U4.83.01-d1",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, fr="Calcul du dommage subi par une structure soumise à une histoire de chargement", CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")), @@ -14313,7 +14685,7 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,docu="U4.83. INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14333,9 +14705,10 @@ POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,docu="U4.83. # ====================================================================== POST_GOUJ2E=OPER(nom="POST_GOUJ2E",op=187,sd_prod=tabl_post_gouj2e,reentrant='n', fr=" ",docu="U4.GJ.30-a", + UIinfo={"groupes":("Outils métier",)}, TABLE =SIMP(statut='o',typ=tabl_post_rele), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14357,6 +14730,7 @@ POST_GOUJ2E=OPER(nom="POST_GOUJ2E",op=187,sd_prod=tabl_post_gouj2e,reentrant='n' POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k, fr="Calcul des FIC par extrapolation du champ de déplacements sur les lèvres de la fissure", docu="U4.82.05-b2",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'), PRESENT_PRESENT('TABL_DEPL_SUP','TABL_DEPL_INF'),), @@ -14399,7 +14773,7 @@ POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k, fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 29/03/2002 AUTEUR CIBHHBC R.FERNANDES +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -14423,6 +14797,7 @@ POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k, POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta, fr="Calcul des FIC par la méthode K_BETA", docu="U4.82.07-a",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, MAILLAGE = SIMP(statut='o',typ=maillage), MATER_REV = SIMP(statut='o',typ=mater), EPAIS_REV = SIMP(statut='o',typ='R'), @@ -14442,7 +14817,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta, INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE = SIMP(statut='f',typ='TXM',max='**'), ); -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14453,8 +14828,7 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta, # # 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. +# MERCHANTABILITY OR FITNESS FOR A PARTIC # # 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, @@ -14464,17 +14838,22 @@ POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta, POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm, fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)", docu="U4.83.11-d1",reentrant='n', - MATER =SIMP(statut='o',typ=mater ), + UIinfo={"groupes":("Post traitements",)}, TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","VALE_INST") ), + INFO =SIMP(statut='f',typ='I',into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), - MAILLAGE =SIMP(statut='f',typ=maillage), OPTION =SIMP(statut='o',typ='TXM',max='**', into=("PM_PB", "SN", "FATIGUE_SPMAX", - "FATIGUE_ZH210" + "FATIGUE_ZH210", + "FATIGUE_B3200", + "FATIGUE_B3600", ) ), - SEGMENT =FACT(statut='o',min=01,max='**',fr="Segment sur lequel s effectue le depouillement", + b_pm_sn =BLOC(condition="(OPTION == 'PM_PB')or(OPTION == 'SN')or(OPTION == 'FATIGUE_SPMAX')or(OPTION == 'FATIGUE_ZH210')", + MATER =SIMP(statut='o',typ=mater ), + MAILLAGE =SIMP(statut='f',typ=maillage), + SEGMENT =FACT(statut='o',min=1,max='**',fr="Segment sur lequel s effectue le depouillement", regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'), EXCLUS('CHEMIN','GROUP_NO'), EXCLUS('CHEMIN','NOEUD'),), @@ -14485,9 +14864,9 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm, b_acce_noeud =BLOC(condition="(NOEUD != None)or(GROUP_NO != None)", PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ), - ), - ), - TRANSITOIRE =FACT(statut='o',min=01,max='**',fr="transitoire à dépouiller", + ), + ), + TRANSITOIRE =FACT(statut='o',min=1,max='**',fr="transitoire à dépouiller", regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),), RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli) ), RESU_SIGM_THER =SIMP(statut='f',typ=(evol_elas,evol_noli),fr="résultat sous chargement thermique seul" ), @@ -14501,10 +14880,146 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm, b_inst =BLOC(condition = "(INST != None) or (LIST_INST != None)" , PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6 ), CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), - ), + ), + ), ), + + b_3200 =BLOC(condition="(OPTION == 'FATIGUE_B3200')", + MATER =SIMP(statut='o',typ=mater ), + CHAR_MECA =FACT(statut='o',min=1,max='**',fr="Chargements mécaniques", + NUME_CHAR =SIMP(statut='o',typ='I',max=1,fr="numéro du chargement" ), + NOM_CHAR =SIMP(statut='f',typ='TXM',max=1,fr="nom du chargement" ), + TYPE_CHAR =SIMP(statut='f',typ='TXM',max=1,fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",), + FX =SIMP(statut='f',typ='R',max=1,fr="effort suivant x", ), + FY =SIMP(statut='f',typ='R',max=1,fr="effort suivant y", ), + FZ =SIMP(statut='f',typ='R',max=1,fr="effort suivant z", ), + MX =SIMP(statut='o',typ='R',max=1,fr="moment suivant x", ), + MY =SIMP(statut='o',typ='R',max=1,fr="moment suivant y", ), + MZ =SIMP(statut='o',typ='R',max=1,fr="moment suivant z", ), + ), + RESU_MECA_UNIT =FACT(statut='o',min=1,max=1,fr="resultats mécaniques unitaires", + TABL_FX =SIMP(statut='f',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire FX"), + TABL_FY =SIMP(statut='f',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire FY"), + TABL_FZ =SIMP(statut='f',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire FZ"), + TABL_MX =SIMP(statut='o',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire MX"), + TABL_MY =SIMP(statut='o',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire MY"), + TABL_MZ =SIMP(statut='o',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire MZ"), + TABL_PRES =SIMP(statut='o',typ=table,max=1, + fr="table relevé des contraintes pour chargement unitaire de pression"), + ), + RESU_THER =FACT(statut='f',min=1,max='**',fr="resultats thermiques", + NUME_RESU_THER =SIMP(statut='o',typ='I',max=1,fr="numéro de la table de résultat thermique" ), + TABL_RESU_THER =SIMP(statut='o',typ=table,max=1, + fr="table relevé des contraintes pour chargement thermique"), + ), + SITUATION =FACT(statut='o',min=1,max='**',fr="Situation",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), + PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"), + PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"), + TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"), + TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"), + ), + ), + b_3600 =BLOC(condition="(OPTION == 'FATIGUE_B3600')", + CHAM_MATER =SIMP(statut='o',typ=cham_mater ), + MODELE =SIMP(statut='o',typ=modele), + CARA_ELEM =SIMP(statut='o',typ=cara_elem), + ZONE_ANALYSE =FACT(statut='o',min=1,max=1,fr="liste des mailles ou des noeuds analysés", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + ), + RESU_MECA =FACT(statut='o',min=1,max='**',fr="Chargements mécaniques", + regles=(UN_PARMI('CHAM_GD','RESULTAT'),), + NUME_CHAR =SIMP(statut='o',typ='I',max=1,fr="numéro du chargement" ), + NOM_CHAR =SIMP(statut='f',typ='TXM',max=1,fr="nom du chargement" ), + TYPE_CHAR =SIMP(statut='f',typ='TXM',max=1,fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",), + CHAM_GD =SIMP(statut='f',typ=cham_gd), + RESULTAT =SIMP(statut='f',typ=resultat), + b_extrac =BLOC(condition="RESULTAT != None", + fr="extraction d un champ de grandeur", + regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),), + NOM_CHAM =SIMP(statut='o',typ='TXM',max=1,into=("EFGE_ELNO_DEPL","SIEF_ELNO_ELGA"),), + TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ), + NUME_ORDRE =SIMP(statut='f',typ='I',max=1), + INST =SIMP(statut='f',typ='R',max=1), + NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'), + b_acce_reel =BLOC(condition="(INST != None)", + PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3), + CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), ), + ), + ), + ), + INDI_SIGM =FACT(statut='o',min=1,max='**',fr="indices de contraintes", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + C1 =SIMP(statut='f',typ='R',max=1,defaut=1.0,fr="indice de contraintes C1 du RCCM"), + K1 =SIMP(statut='f',typ='R',max=1,defaut=1.0,fr="indice de contraintes K1 du RCCM"), + C2 =SIMP(statut='f',typ='R',max=1,defaut=1.0,fr="indice de contraintes C2 du RCCM"), + K2 =SIMP(statut='f',typ='R',max=1,defaut=1.0,fr="indice de contraintes K2 du RCCM"), + C3 =SIMP(statut='f',typ='R',max=1,defaut=0.5,fr="indice de contraintes C3 du RCCM"), + K3 =SIMP(statut='f',typ='R',max=1,defaut=1.0,fr="indice de contraintes K3 du RCCM"), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),), + GROUP_MA =SIMP(statut='f',typ=grma,max='**', + fr="groupe(s) de mailles ou sont affectés les indices de contraintes"), + MAILLE =SIMP(statut='f',typ=ma,max='**', + fr="liste des mailles ou sont affectés les indices de contraintes"), + b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)", + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + ), + TYPE_ELEM_STANDARD =SIMP(statut='f',typ='TXM',into=("DRO","COU","TRN","TEE"), + fr="type d'élément de tuyauterie ou sont affectés les indices de contraintes"), + ), + RESU_THER =FACT(statut='f',min=1,max='**',fr="resultats thermiques", + regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),), + NUME_RESU_THER =SIMP(statut='o',typ='I',max=1,fr="numéro de la table de résultat thermique" ), + TABL_RESU_THER =SIMP(statut='o',typ=table,max=1, + fr="table relevé des températures sur la section"), + TABL_MOYE_THER =SIMP(statut='o',typ=table,max=1, + fr="table relevé des moyennes sur la section"), + TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), + GROUP_MA =SIMP(statut='f',typ=grma,max='**'), + MAILLE =SIMP(statut='f',typ=ma,max='**'), + b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)", + GROUP_NO =SIMP(statut='f',typ=grno,max='**'), + NOEUD =SIMP(statut='f',typ=no,max='**'), + ), + ), + SITUATION =FACT(statut='o',min=1,max='**',fr="Situation",ang="situation_ang", + NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ), + NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ), + NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ), + NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ), + COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ), + NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ), + NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ), + NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ), + CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ), + CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ), + PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"), + PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"), + TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"), + TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"), + ), + ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # ====================================================================== # CONFIGURATION MANAGEMENT OF EDF VERSION # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14524,7 +15039,8 @@ POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm, # ====================================================================== # RESPONSABLE G8BHHXD X.DESROCHES POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,docu="U4.81.21-e1",reentrant='n', - ACTION =FACT(statut='o',min=01,max='**', + UIinfo={"groupes":("Post traitements",)}, + ACTION =FACT(statut='o',min=1,max='**', regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'), EXCLUS('CHEMIN','GROUP_NO'), EXCLUS('CHEMIN','NOEUD'), @@ -14606,7 +15122,7 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,docu="U4.81. INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14626,8 +15142,9 @@ POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,docu="U4.81. # ====================================================================== POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli, fr=" ",docu="U4.PS.10-a",reentrant='n', + UIinfo={"groupes":("Outils métier",)}, MATER =SIMP(statut='o',typ=(mater) ), - DEF_EQUI =FACT(statut='f',min=01,max=01, + DEF_EQUI =FACT(statut='f',min=1,max=1, METHODE =SIMP(statut='f',typ='TXM',max='**',defaut="UTO_2_3", into=("UTO_2_3",) ), EPAIS =SIMP(statut='o',typ='R'), @@ -14637,7 +15154,7 @@ POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli, TEMP_ANALYSE =SIMP(statut='f',typ='R'), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14656,11 +15173,12 @@ POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1",reentrant='f', + UIinfo={"groupes":("Post traitements",)}, fr="Calcul des volumes d'usure et des profondeurs d'usure", regles=(UN_PARMI('RESU_GENE','PUIS_USURE'), PRESENT_PRESENT('RESU_GENE','NOEUD'), UN_PARMI('INST','LIST_INST'),), - ETAT_INIT =FACT(statut='f',min=01,max=01, + ETAT_INIT =FACT(statut='f',min=1,max=1, TABL_USURE =SIMP(statut='f',typ=tabl_post_usur), INST_INIT =SIMP(statut='f',typ='R'), ), @@ -14675,13 +15193,13 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 regles=(UN_PARMI('MOBILE','MATER_USURE','SECTEUR'), EXCLUS('MATER_USURE','OBSTACLE'), EXCLUS('MOBILE','USURE_OBST'),), - MOBILE =FACT(statut='f',min=01,max=01, + MOBILE =FACT(statut='f',min=1,max=1, COEF_USURE =SIMP(statut='o',typ='R'), ), - OBSTACLE =FACT(statut='f',min=01,max=01, + OBSTACLE =FACT(statut='f',min=1,max=1, COEF_USURE =SIMP(statut='o',typ='R'), ), - SECTEUR =FACT(statut='f',min=01,max='**', + SECTEUR =FACT(statut='f',min=1,max='**', CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO", "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE", "GRAPPE_1_ENCO","GRAPPE_2_ENCO")), @@ -14691,20 +15209,20 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 ANGL_FIN =SIMP(statut='f',typ='R'), ), MATER_USURE =SIMP(statut='f',typ='TXM'), - USURE_OBST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), ), b_kwu_epri =BLOC(condition = "LOI_USURE == 'KWU_EPRI'", regles=(UN_PARMI('MOBILE','MATER_USURE'), EXCLUS('MATER_USURE','OBSTACLE'), EXCLUS('MOBILE','USURE_OBST'),), - MOBILE =FACT(statut='f',min=01,max=01, + MOBILE =FACT(statut='f',min=1,max=1, COEF_FNOR =SIMP(statut='f',typ='R'), COEF_VTAN =SIMP(statut='f',typ='R'), COEF_USURE =SIMP(statut='f',typ='R'), COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0), COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0), ), - OBSTACLE =FACT(statut='f',min=01,max=01, + OBSTACLE =FACT(statut='f',min=1,max=1, COEF_FNOR =SIMP(statut='f',typ='R' ), COEF_VTAN =SIMP(statut='f',typ='R' ), COEF_USURE =SIMP(statut='o',typ='R'), @@ -14712,7 +15230,7 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0), ), MATER_USURE =SIMP(statut='f',typ='TXM'), - USURE_OBST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), FNOR_MAXI =SIMP(statut='f',typ='R' ), VTAN_MAXI =SIMP(statut='f',typ='R' ), ), @@ -14720,20 +15238,20 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 regles=(UN_PARMI('MOBILE','MATER_USURE'), EXCLUS('MATER_USURE','OBSTACLE'), EXCLUS('MOBILE','USURE_OBST'),), - MOBILE =FACT(statut='f',min=01,max=01, + MOBILE =FACT(statut='f',min=1,max=1, COEF_USURE =SIMP(statut='f',typ='R',defaut=1.0E-13), COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0), COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8), COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16), ), - OBSTACLE =FACT(statut='f',min=01,max=01, + OBSTACLE =FACT(statut='f',min=1,max=1, COEF_USURE =SIMP(statut='o',typ='R',defaut=1.0E-13), COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0), COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8), COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16), ), MATER_USURE =SIMP(statut='f',typ='TXM'), - USURE_OBST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), + USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)), ), CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO", "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE", @@ -14750,7 +15268,7 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14769,10 +15287,11 @@ POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,docu="U4.84.05-d1 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,docu="U4.83.21-b",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, fr="Donne l'état adapté ou accommodé d'une structure sous chargement cyclique élastique affine ou non", MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), - EXCIT =FACT(statut='o',min=01,max='**', + EXCIT =FACT(statut='o',min=1,max='**', CHARGE =SIMP(statut='o',typ=char_meca), FONC_MULT =SIMP(statut='f',typ=fonction), TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",into=("FIXE_CSTE",)), @@ -14793,7 +15312,7 @@ POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,docu="U4.83.21-b",reentra CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14813,6 +15332,7 @@ POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,docu="U4.83.21-b",reentra # ====================================================================== POURSUITE=MACRO(nom="POURSUITE",op=0,repetable='n',fr="Poursuite d une étude", docu="U4.11.03-g2",sd_prod = ops.POURSUITE, + UIinfo={"groupes":("Gestion du travail",)}, op_init = ops.POURSUITE_context,fichier_ini = 1, PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM', into=("OUI","NON"),defaut="OUI"), @@ -14856,31 +15376,7 @@ POURSUITE=MACRO(nom="POURSUITE",op=0,repetable='n',fr="Poursuite d une UNITE =SIMP(statut='f',typ='I',defaut=15), ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# 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. -# ====================================================================== -PRE_CHAR_IDEAS=PROC(nom="PRE_CHAR_IDEAS",op=100,docu="U7.01.02-e", - fr="Conversion de conditions aux limites et chargements IDEAS en commandes Aster", - UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19), - UNITE_ASTER =SIMP(statut='f',typ='I',defaut=21), - MODELE =SIMP(statut='o',typ=modele), -) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14899,11 +15395,12 @@ PRE_CHAR_IDEAS=PROC(nom="PRE_CHAR_IDEAS",op=100,docu="U7.01.02-e", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== PRE_GIBI=PROC(nom="PRE_GIBI",op=49,docu="U7.01.11-f", + UIinfo={"groupes":("Gestion du travail",)}, fr="Conversion d un fichier de maillage GIBI", UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), ) ; -#& MODIF COMMANDE DATE 11/06/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14925,12 +15422,13 @@ PRE_GIBI=PROC(nom="PRE_GIBI",op=49,docu="U7.01.11-f", from Macro.pre_gmsh_ops import pre_gmsh_ops PRE_GMSH=MACRO(nom="PRE_GMSH",op=pre_gmsh_ops,docu="U7.01.01-f", + UIinfo={"groupes":("Gestion du travail",)}, fr="Conversion d un fichier universel GMSH au format Aster", UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), MODI_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")), ) ; -#& MODIF COMMANDE DATE 11/06/2002 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -14950,11 +15448,12 @@ PRE_GMSH=MACRO(nom="PRE_GMSH",op=pre_gmsh_ops,docu="U7.01.01-f", # ====================================================================== PRE_GMSH_LECT=PROC(nom="PRE_GMSH_LECT",op=47,docu="U7.01.01-f", + UIinfo={"groupes":("Gestion du travail",)}, fr="Conversion d un fichier universel GMSH au format Aster", UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14973,11 +15472,12 @@ PRE_GMSH_LECT=PROC(nom="PRE_GMSH_LECT",op=47,docu="U7.01.01-f", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,docu="U7.01.01-f", + UIinfo={"groupes":("Gestion du travail",)}, fr="Conversion d un fichier universel IDEAS-SUPERTAB au format Aster", UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19), UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -14996,10 +15496,11 @@ PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,docu="U7.01.01-f", # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== PROCEDURE=PROC(nom="PROCEDURE",op=-3, docu="U4.13.03-e", + UIinfo={"groupes":("Gestion du travail",)}, fr="Nommer le fichier de commandes secondaires", NOM =SIMP(statut='f',typ='TXM',defaut=" "), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15027,11 +15528,12 @@ def prod_matr_cham_prod(MATR_ASSE,**args): PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=prod_matr_cham_prod, fr="Effectuer le produit d une matrice par un vecteur", docu="U4.72.06-b",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ), CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_temp_r,cham_no_pres_c ) ), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15065,6 +15567,7 @@ def proj_champ_prod(RESULTAT=None,CHAM_NO_REFE=None,**args ): raise AsException("type de concept resultat non prevu") PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,docu="U4.72.05-d2",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, fr="Projection d'un champ aux noeuds sur les noeuds d'un autre maillage", # METHODE =SIMP(statut='f',typ='TXM',defaut="NUAGE_DEG_1", @@ -15096,7 +15599,7 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,docu="U4.72.05- LIST_FREQ =SIMP(statut='f',typ=listr8), ), - VIS_A_VIS =FACT(statut='f',min=01,max='**', + VIS_A_VIS =FACT(statut='f',min=1,max='**', regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'), AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),), TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ), @@ -15113,7 +15616,7 @@ PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,docu="U4.72.05- TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15141,6 +15644,7 @@ def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args): PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, fr="Projection d une matrice assemblée sur une base (modale ou de RITZ)", docu="U4.63.12-f1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),), BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene ) ), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), @@ -15148,7 +15652,7 @@ PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ), ) ; -#& MODIF COMMANDE DATE 19/12/2001 AUTEUR CIBHHAB N.RAHNI +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15166,46 +15670,49 @@ PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod, # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== -def proj_mesu_modal_prod(MESURE,**args): - vale=MESURE['NOM_PARA'] +def proj_mesu_modal_prod(MODELE_MESURE,**args): + vale=MODELE_MESURE['NOM_PARA'] if vale == 'INST' : return tran_gene + if vale == 'FREQ' : return harm_gene + if vale == 'DEFORMEE' : return mode_gene raise AsException("type de concept resultat non prevu") PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, sd_prod=proj_mesu_modal_prod, docu="U4.73.01-a",reentrant='n', - fr="Extrapolation de resultats experimentaux sur un modele numerique en dynamique", - -# commentaire C. Durand-13/10/2000 : -#le mot cle NOM_PARA, par construction, vaut tjs INST : donc on retourne TRAN_GENE a chaque fois -#def proj_mesu_modal_prod(**args): -# vale=args['MESURE'].get_child('NOM_PARA').get_valeur() -# if vale == 'INST' : return tran_gene -# raise AsException("type de concept resultat non prevu") -#PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,sd_prod=proj_mesu_modal_prod,) - - MODELE =SIMP(statut='f',typ=(modele) ), - MASS_GENE =SIMP(statut='o',typ=(matr_asse_gene_r) ), - RIGI_GENE =SIMP(statut='o',typ=(matr_asse_gene_r) ), - MESURE =FACT(statut='o',min=01,max=01, + UIinfo={"groupes":("Résultats et champs",)}, + fr="Calcul de coordonnees generalisees de mesure experimentale relatives a une base de projection", + + MODELE_CALCUL =FACT(statut='o',min=1,max=1, MODELE =SIMP(statut='o',typ=(modele) ), - MAILLAGE =SIMP(statut='o',typ=(maillage) ), - CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ), - UNITE =SIMP(statut='f',typ='I',defaut= 33 ), - NOM_PARA =SIMP(statut='f',typ='TXM',defaut="INST",into=("INST",) ), - PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), - CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ), - NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","SIGM_NOEU_DEPL","EPSI_NOEU_DEPL",) ), + BASE =SIMP(statut='o',typ=(mode_meca,base_modale,) ), + ), + MODELE_MESURE =FACT(statut='o',min=1,max=1, + MODELE =SIMP(statut='o',typ=(modele) ), + MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,base_modale,) ), + NOM_PARA =SIMP(statut='f',typ='TXM',defaut="INST",into=("INST","FREQ","DEFORMEE",),), + NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ), ), - REGULARISATION =FACT(statut='f',min=01,max=01, - regles=(UN_PARMI('COEF_PONDER','COEF_PONDER_F', ),), - METHODE =SIMP(statut='f',typ='TXM',defaut="TIKHONOV",into=("TIKHONOV",) ), - NORM_MIN =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), - COEF_PONDER =SIMP(statut='f',typ='R',max='**' ), - COEF_PONDER_F =SIMP(statut='f',typ=(fonction),max='**' ), + CORR_MANU =FACT(statut='f',min=1,max='**', + regles=(PRESENT_PRESENT('NOEU_CALCUL','NOEU_MESURE'),), + NOEU_CALCUL =SIMP(statut='f',typ=no), + NOEU_MESURE =SIMP(statut='f',typ=no), ), - ) ; -#& MODIF COMMANDE DATE 16/01/2002 AUTEUR DURAND C.DURAND + RESOLUTION =FACT(statut='f',min=1,max=1, + METHODE =SIMP(statut='f',typ='TXM',defaut="LU",into=("LU","SVD",) ), + b_svd =BLOC(condition="METHODE=='SVD'", + EPS=SIMP(statut='f',typ='R',defaut=0. ), + ), + REGUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","NORM_MIN","TIK_RELA",) ), + b_regul =BLOC(condition="REGUL!='NON'", + regles=(PRESENT_ABSENT('COEF_PONDER','COEF_PONDER_F', ),), + COEF_PONDER =SIMP(statut='f',typ='R',max='**',defaut=0. ), + COEF_PONDER_F =SIMP(statut='f',typ=(fonction),max='**' ), + ), + ), + + ); +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15224,6 +15731,7 @@ PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,docu="U4.63.14-c",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, fr="Projection d un ou plusieurs spectres de turbulenc sur un ensemble de bases modales ", regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'), ENSEMBLE('FREQ_INIT','FREQ_FIN','NB_POIN'),), @@ -15243,7 +15751,7 @@ PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,docu="U4.63. ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15264,6 +15772,7 @@ PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,docu="U4.63. PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, fr="Projection d un vecteur assemblé sur une base (modale ou de RITZ)", docu="U4.63.13-f1",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),), BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene ) ), NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ), @@ -15271,7 +15780,7 @@ PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ), VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ), ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15291,8 +15800,9 @@ PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene, # ====================================================================== RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=tabl_reca_weib, fr=" ",docu="U4.82.06-a",reentrant='n', + UIinfo={"groupes":("Post traitements",)}, LIST_PARA =SIMP(statut='o',typ='TXM',max='**',into=("SIGM_REFE","M",) ), - RESU =FACT(statut='o',min=01,max='**', + RESU =FACT(statut='o',min=1,max='**', regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST',), AU_MOINS_UN('TOUT','GROUP_MA','MAILLE', ),), EVOL_NOLI =SIMP(statut='o',typ=(evol_noli) ), @@ -15316,7 +15826,7 @@ RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=tabl_reca_weib, ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15356,6 +15866,7 @@ def recu_fonction_prod(RESULTAT=None,TABLE=None,OBSTACLE=None, RECU_FONCTION=OPER(nom="RECU_FONCTION",op= 90,sd_prod=recu_fonction_prod, fr="Extraire sous forme d une fonction, l évolution temporelle d une composante d un champ ou d une table", docu="U4.32.03-f2",reentrant='n', + UIinfo={"groupes":("Fonction",)}, regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','OBSTACLE'),), CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_elem_sief_r, @@ -15372,9 +15883,9 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op= 90,sd_prod=recu_fonction_prod, b_tran_gene = BLOC ( condition = "RESU_GENE != None", fr="Récupération de la fonction concernant les chocs à partir d un concept TRAN_GENE", regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'), - PRESENT_ABSENT('MULT_APPUI','CORR_STAT'),), - MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - CORR_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + EXCLUS('MULT_APPUI','CORR_STAT'),), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), ACCE_MONO_APPUI =SIMP(statut='f',typ=fonction), PARA_X =SIMP(statut='f',typ='TXM' ), PARA_Y =SIMP(statut='f',typ='TXM' ), @@ -15539,7 +16050,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op= 90,sd_prod=recu_fonction_prod, TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15558,6 +16069,7 @@ RECU_FONCTION=OPER(nom="RECU_FONCTION",op= 90,sd_prod=recu_fonction_prod, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,docu="U4.71.03-e",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, fr="Récupération d un champ de grandeur à partir d un résultat en coordonnées généralisées", RESU_GENE =SIMP(statut='o',typ=tran_gene ), INST =SIMP(statut='o',typ='R' ), @@ -15566,7 +16078,7 @@ RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,docu="U4.71.03-e", CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15587,13 +16099,14 @@ RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,docu="U4.71.03-e", # RESPONSABLE VABHHTS J.PELLET RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table, fr=" ",docu="U4.71.02-b2",reentrant='n', + UIinfo={"groupes":("Résultats et champs",)}, CO =SIMP(statut='o',typ=assd), regles=(UN_PARMI('NOM_TABLE','NOM_PARA')), NOM_TABLE =SIMP(statut='f',typ='TXM' ), NOM_PARA =SIMP(statut='f',typ='TXM',max='**'), TITRE =SIMP(statut='f',typ='TXM',max='**'), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15620,6 +16133,7 @@ def reso_grad_prod(MATR_ASSE,**args ): RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=reso_grad_prod, fr="Résolution par la méthode du gradient conjugué préconditionné", docu="U4.55.04-e",reentrant='f', + UIinfo={"groupes":("Résolution",)}, MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ), CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r ) ), CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r ) ), @@ -15629,7 +16143,7 @@ RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=reso_grad_prod, RESI_RELA =SIMP(statut='f',typ='R',defaut= 1E-6 ), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15659,6 +16173,7 @@ def reso_ldlt_prod(CHAM_NO,**args ): RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=reso_ldlt_prod,reentrant='f', fr="Résolution en place ou hors place d un système factorisé",docu="U4.55.02-f", + UIinfo={"groupes":("Résolution",)}, MATR_FACT =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r, matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ), CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r, @@ -15667,7 +16182,7 @@ RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=reso_ldlt_prod,reentrant='f', TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 17/04/2002 AUTEUR BOYERE E.BOYERE +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15697,11 +16212,12 @@ def rest_base_phys_prod(RESU_GENE,RESULTAT,**args ): REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, fr="Restituer dans la base physique des résultats en coordonnées généralisées", docu="U4.63.21-e",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(UN_PARMI('RESU_GENE','RESULTAT'), EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'), EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'), # Doc U à revoir - PRESENT_ABSENT('MULT_APPUI','CORR_STAT'), + EXCLUS('MULT_APPUI','CORR_STAT'), EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'), EXCLUS('CORR_STAT','NOEUD','GROUP_NO'), EXCLUS('NOEUD','GROUP_NO'), @@ -15721,8 +16237,8 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ), PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ), INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ), - MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - CORR_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), + MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ), + CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ), NOM_CHAM =SIMP(statut='f',typ='TXM',max=8,defaut="ACCE", into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL", "SIGM_ELNO_DEPL","FORC_NODA",) ), @@ -15738,7 +16254,7 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, SECTEUR =SIMP(statut='f',typ='I',defaut= 1 ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 28/03/2001 AUTEUR CIBHHLV L.VIVAN +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15758,20 +16274,21 @@ REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod, # ====================================================================== REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp, docu="U4.63.22-c",reentrant='n', + UIinfo={"groupes":("Matrices/vecteurs",)}, regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),), BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu ), MODE_MECA =SIMP(statut='f',typ=mode_meca ), - BANDE =SIMP(statut='f',typ='R',min=02,max=02 ), + BANDE =SIMP(statut='f',typ='R',min=2,max=2 ), NUME_ORDRE =SIMP(statut='f',typ='I',max='**' ), INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ), NOEUD =SIMP(statut='o',typ=no,max='**'), NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ), MAILLE =SIMP(statut='f',typ=ma,max='**'), - NOM_CHAM =SIMP(statut='o',typ='TXM',max=07, + NOM_CHAM =SIMP(statut='o',typ='TXM',max=7, into=("DEPL","VITE","ACCE","EFGE_ELNO_DEPL", "SIPO_ELNO_DEPL","SIGM_ELNO_DEPL","FORC_NODA") ), MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc), ), - EXCIT =FACT(statut='f',max=01, + EXCIT =FACT(statut='f',max=1, NOEUD =SIMP(statut='o',typ=no,max='**'), NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ), ), @@ -15780,7 +16297,7 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp, into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 21/12/2000 AUTEUR DURAND C.DURAND +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15799,9 +16316,10 @@ REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== RETOUR=PROC(nom="RETOUR",op= -2,docu="U4.13.02-e", + UIinfo={"groupes":("Gestion du travail",)}, fr="Retour au fichier de commandes appelant", ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -15823,6 +16341,7 @@ RETOUR=PROC(nom="RETOUR",op= -2,docu="U4.13.02-e", STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, fr="Analyse mécanique statique non linéaire", docu="U4.51.03-f4",reentrant='f', + UIinfo={"groupes":("Résolution",)}, regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),), MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), @@ -15916,6 +16435,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, "KIT_HM", "KIT_HHM", "KIT_THH", + "KIT_THV", "KIT_THM", "KIT_THHM", "VMIS_ASYM_LINE", @@ -15933,7 +16453,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)), ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)), ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - MAZARS =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + MAZARS =SIMP(statut='c',typ='I',defaut=3,into=(3,)), RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)), BARENBLATT =SIMP(statut='c',typ='I',defaut=2,into=(2,)), META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)), @@ -16002,6 +16522,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)), + KIT_THV =SIMP(statut='c',typ='I',defaut=0,into=(0,)), KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)), VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), @@ -16023,6 +16544,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, "LIQU_SATU_GAT", "LIQU_GAZ_ATM", "LIQU_VAPE_GAZ", + "LIQU_VAPE", "LIQU_NSAT_GAT", "LIQU_GAZ", # THER @@ -16053,10 +16575,11 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)), LIQU_SATU =SIMP(statut='c',typ='I',defaut=2,into=(2,)), LIQU_SATU_GAT =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)), - LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=3,into=(3,)), + LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=4,into=(4,)), + LIQU_VAPE =SIMP(statut='c',typ='I',defaut=4,into=(4,)), LIQU_NSAT_GAT =SIMP(statut='c',typ='I',defaut=3,into=(3,)), - LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)), + LIQU_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)), THER_HOMO =SIMP(statut='c',typ='I',defaut=0,into=(0,)), THER_POLY =SIMP(statut='c',typ='I',defaut=0,into=(0,)), HYDR_UTIL =SIMP(statut='c',typ='I',defaut=0,into=(0,)), @@ -16250,7 +16773,7 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, INFO =SIMP(statut='f',typ='I',into=(1,2) ), TITRE =SIMP(statut='f',typ='TXM',max='**' ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16271,9 +16794,10 @@ STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli, # RESPONSABLE MCOURTOI M.COURTOIS TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur numérique ou d un attribut de fonction", docu="U4.92.02-f2", + UIinfo={"groupes":("Impression",)}, FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ), - VALEUR =FACT(statut='f',min=01,max='**', + VALEUR =FACT(statut='f',min=1,max='**', fr="Tester la valeur d une fonction ou d une nappe", regles=(UN_PARMI('VALE_REFE','VALE_REFE_C', ),), FONCTION =SIMP(statut='o',typ=fonction ), @@ -16291,7 +16815,7 @@ TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur num VERSION =SIMP(statut='f',typ='TXM' ), ), ), - ATTRIBUT =FACT(statut='f',min=01,max='**', + ATTRIBUT =FACT(statut='f',min=1,max='**', fr="Tester la valeur d un attribut d une fonction ou d''une nappe", FONCTION =SIMP(statut='o',typ=fonction ), PARA =SIMP(statut='f',typ='R' ), @@ -16307,7 +16831,7 @@ TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur num VERSION =SIMP(statut='f',typ='TXM' ), ), ), - TABL_INTSP =FACT(statut='f',min=01,max='**', + TABL_INTSP =FACT(statut='f',min=1,max='**', fr="Tester la valeur d une fonction contenue dans une table interspectrale", regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),), INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ), @@ -16335,7 +16859,7 @@ TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur num ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # RESPONSABLE VABHHTS J.PELLET # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -16357,11 +16881,12 @@ TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur num # # ====================================================================== TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", + UIinfo={"groupes":("Impression",)}, fr="Extraction d une valeur et comparaison à une valeur de référence", regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','OBJET')), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), - CHAM_NO =FACT(statut='f',min=01,max='**', + CHAM_NO =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NOEUD','GROUP_NO','TYPE_TEST'), EXCLUS('NOEUD','GROUP_NO'), PRESENT_PRESENT('NOEUD','NOM_CMP'), @@ -16382,7 +16907,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", VERSION =SIMP(statut='f',typ='TXM'), ), - CHAM_ELEM =FACT(statut='f',min=01,max='**', + CHAM_ELEM =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('MAILLE','TYPE_TEST',), EXCLUS('NOEUD','GROUP_NO','POINT'), PRESENT_PRESENT('NOEUD','NOM_CMP'), @@ -16407,7 +16932,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", VERSION =SIMP(statut='f',typ='TXM' ), ), - RESU =FACT(statut='f',min=01,max='**', + RESU =FACT(statut='f',min=1,max='**', regles=(UN_PARMI('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'), UN_PARMI('NOM_CHAM','PARA'), PRESENT_ABSENT('PARA','NOEUD','GROUP_NO','POINT','NOM_CMP','TYPE_TEST'), @@ -16440,8 +16965,8 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", VALE =SIMP(statut='f',typ='R'), VALE_I =SIMP(statut='f',typ='I'), VALE_C =SIMP(statut='f',typ='C'), - CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=02), - PRECISION =SIMP(statut='f',typ='R',max=02), + CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2), + PRECISION =SIMP(statut='f',typ='R',max=2), REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE", "NON_REGRESSION","AUTRE_ASTER",) ), VERSION =SIMP(statut='f',typ='TXM' ), @@ -16466,7 +16991,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", VERSION =SIMP(statut='f',typ='TXM' ), ), ) ; -#& MODIF COMMANDE DATE 06/03/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16487,6 +17012,7 @@ TEST_RESU=PROC(nom="TEST_RESU",op=23,docu="U4.92.01-g3", # RESPONSABLE VABHHTS J.PELLET TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, docu="U4.92.03-c1", + UIinfo={"groupes":("Impression",)}, regles=(UN_PARMI('VALE','VALE_I','VALE_C', ),), FICHIER =SIMP(statut='f',typ='TXM',defaut="RESULTAT"), # concept table à créer @@ -16520,7 +17046,7 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, VERSION =SIMP(statut='f',typ='TXM' ), ), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16539,6 +17065,7 @@ TEST_TABLE=PROC(nom="TEST_TABLE",op= 177, # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,docu="U4.54.01-g2",reentrant='f', + UIinfo={"groupes":("Résolution",)}, fr="Analyse thermique linéaire stationnaire ou transitoire", MODELE =SIMP(statut='o',typ=modele), CHAM_MATER =SIMP(statut='o',typ=cham_mater), @@ -16608,7 +17135,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,docu="U4.54.01-g2 TITRE =SIMP(statut='f',typ='TXM',max='**'), INFO =SIMP(statut='f',typ='I',into=(1,2)), ) ; -#& MODIF COMMANDE DATE 28/08/2002 AUTEUR MCOURTOI M.COURTOIS +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16627,6 +17154,7 @@ THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,docu="U4.54.01-g2 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. # ====================================================================== THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,docu="U4.54.02-e2",reentrant='f', + UIinfo={"groupes":("Résolution",)}, fr="Analyse thermique non linéaire stationnaire ou transitoire" , MODELE =SIMP(statut='o',typ=(modele) ), CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ), @@ -16718,7 +17246,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,docu="U4.54.02- INFO =SIMP(statut='f',typ='I',into=(1,2) ), ) ; -#& MODIF COMMANDE DATE 05/12/2001 AUTEUR VABHHTS J.PELLET +#& MODIF COMMANDE DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -16739,6 +17267,7 @@ THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,docu="U4.54.02- THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther, fr="Thermique non lineaire en repere mobile", docu="U4.54.03-b",reentrant='f', + UIinfo={"groupes":("Résolution",)}, MODELE =SIMP(statut='o',typ=modele ), CHAM_MATER =SIMP(statut='o',typ=cham_mater ), CARA_ELEM =SIMP(statut='c',typ=cara_elem ), diff --git a/Aster/Cata/ops.py b/Aster/Cata/ops.py index 9d1b4189..9f63dd0f 100644 --- a/Aster/Cata/ops.py +++ b/Aster/Cata/ops.py @@ -1,4 +1,4 @@ -#@ MODIF ops Cata DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF ops Cata DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG @@ -241,4 +241,4 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER, d={} self.g_context = d self.contexte_fichier_init = d - exec code in self.parent.g_context,d + exec code in self.parent.get_global_contexte(),d diff --git a/Aster/INSTALL b/Aster/INSTALL new file mode 100644 index 00000000..e3a5d8fe --- /dev/null +++ b/Aster/INSTALL @@ -0,0 +1,40 @@ + + +1- Installation standard + +Pour installer EFICAS a partir de la distribution : .tgz +faire : + tar xzvf .tgz + +ce qui a pour effet de créer un répertoire de nom . + +Pour modifier l'emplacement de la doc, le chemin d'accès à Acrobat Reader, +les catalogues, il faut modifier le fichier editeur.ini dans le répertoire Aster. + + +ATTENTION : +Si Eficas est installé dans un répertoire particulier d'administration +dans lequel les utilisateurs n'ont pas le droit d'écriture, il faut que +l'administrateur lance Eficas pour générer +les fichiers et catalogues compilés .pyc et _pickled.py + + + +2- Utilisation d'Eficas + +Pour utiliser Eficas, aller dans le répertoire Aster et faire : + python eficas_aster.py + + + +3- Installation avec un noyau pré-installé + +Aller dans le répertoire Aster du répertoire Eficas +et modifier le fichier prefs.py comme suit : +Mettre dans la variable CODE_PATH le chemin absolu vers +le répertoire contenant les deux répertoires Noyau et Validation que vous voulez +utiliser à la place de ceux fournis dans la livraison d'Eficas + +Pour changer les catalogues, modifier le fichier editeur.ini dans le répertoire Aster + + diff --git a/Aster/LICENSE.TERMS b/Aster/LICENSE.TERMS new file mode 100644 index 00000000..8c88a1e5 --- /dev/null +++ b/Aster/LICENSE.TERMS @@ -0,0 +1,21 @@ + ====================================================================== + 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, AND + 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. + ====================================================================== + TRADUCTION EDF ( POUR INFORMATION ) + ====================================================================== + CE PROGRAMME EST UN LOGICIEL LIBRE. VOUS POUVEZ LE DIFFUSER ET/OU LE + MODIFIER SELON LES DISPOSITIONS DE LA LICENCE GRAND PUBLIC GNU (GPL) + TELLE QU'ELLE EST PUBLIEE PAR LA FREE SOFTWARE FOUNDATION, VERSION 2 + DE LA LICENCE ET TOUTE VERSION ULTERIEURE. + CE PROGRAMME EST DIFFUSE AVEC L'ESPOIR QU'IL SERA UTILE, MAIS SANS + GARANTIE, SANS MEME LA GARANTIE IMPLICITE DE QUALIFICATION DE MISE SUR + LE MARCHE OU D'ADAPTATION A UNE UTILISATION PARTICULIERE. + VOIR POUR DE PLUS AMPLES DETAILS LA LICENCE GRAND PUBLIC GNU (GPL) + ====================================================================== diff --git a/Aster/README b/Aster/README new file mode 100644 index 00000000..0597ecbb --- /dev/null +++ b/Aster/README @@ -0,0 +1,2 @@ + +Pour installer EFICAS voir dans le fichier INSTALL diff --git a/Aster/Tests/README b/Aster/Tests/README new file mode 100644 index 00000000..bea23866 --- /dev/null +++ b/Aster/Tests/README @@ -0,0 +1,8 @@ +Ce repertoire contient quelques tests d'Eficas pour Aster. + +Les fichiers tests doivent etre lisibles par Eficas sans probleme. +Le repertoire Recette contient le cas de recette d'eficas_aster. +On doit pouvoir le relire tel que et le reconstruire de zero (fichier +normal et poursuite). + +Le test torsion.comm est un test pour format AsterV5 diff --git a/Aster/Tests/Recette/efica01a.11 b/Aster/Tests/Recette/efica01a.11 new file mode 100755 index 00000000..57c140df --- /dev/null +++ b/Aster/Tests/Recette/efica01a.11 @@ -0,0 +1,21 @@ +DEPL2 = FORMULE(REEL="""(REEL:INST) = +SIN(OMEGAA*INST)/(OMEGAA**2) """) +DEPLACE2=CALC_FONC_INTERP( FONCTION=DEPL2, + LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='DEPL' ) + +MONO_X=CALC_CHAR_SEISME( MATR_MASS=MASSE, + DIRECTION=( 1., 0., 0.,), + MONO_APPUI='OUI' ) + + +MACRO_PROJ_BASE(BASE=MODE_MEC,MATR_ASSE_GENE=( + _F( MATRICE = CO("MASS_GEN"), MATR_ASSE = MASSE), + _F( MATRICE = CO("RIGI_GEN"), MATR_ASSE = RIGIDITE)), + VECT_ASSE_GENE=_F( VECTEUR = CO("VECT_X"), VECT_ASSE = MONO_X) + ) + + +RETOUR() diff --git a/Aster/Tests/Recette/efica01a.com0 b/Aster/Tests/Recette/efica01a.com0 new file mode 100755 index 00000000..ed4ca2de --- /dev/null +++ b/Aster/Tests/Recette/efica01a.com0 @@ -0,0 +1,77 @@ +POURSUITE(CODE=_F( NOM = 'EFICA01A')) + + +TRAN_GE2=DYNA_TRAN_MODAL( MASS_GENE=MGEN_BIC, RIGI_GENE=RGEN_BIC, + METHODE='EULER', + AMOR_REDUIT=( 0.07, 0.07, ), + MODE_STAT=MSTA_BIC,EXCIT=( + _F( VECT_GENE = VECT_X1, ACCE = ACCELER1, + MULT_APPUI = 'OUI', + DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO1', + VITE = VITESSE1, DEPL = DEPLACE1), + _F( VECT_GENE = VECT_X2, ACCE = ACCELER2, + MULT_APPUI = 'OUI', + DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO11', + VITE = VITESSE2, DEPL = DEPLACE2)), + CHOC=_F( GROUP_NO_1 = 'MASSES1', + GROUP_NO_2 = 'MASSES2', + OBSTACLE = GRILLE, + INTITULE = 'NO2/NO12', + NORM_OBST = (0., 0., 1.,), + DIST_1 = 0.4495, + DIST_2 = 0.4495, + RIGI_NOR = 2.88E7, + AMOR_NOR = 0., + RIGI_TAN = 0., + COULOMB = 0.), + INCREMENT=_F( INST_INIT = 0., INST_FIN = 1., PAS = 0.00025), + ARCHIVAGE=_F( PAS_ARCH = 8) + ) + +LISTIMP=DEFI_LIST_REEL( DEBUT=0., + INTERVALLE=_F( JUSQU_A = 1., NOMBRE = 500)) + +RESUA1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1, + LIST_INST=LISTIMP, + INTERPOL='LIN', + NOM_CHAM='DEPL', + MULT_APPUI='OUI' + ) + +RESUR1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1, + LIST_INST=LISTIMP, + INTERPOL='LIN', + NOM_CHAM='DEPL', + MULT_APPUI='NON' + ) + + +NO2_DXA=RECU_FONCTION( NOEUD='NO2', NOM_CMP='DX', NOM_CHAM='DEPL', + RESULTAT=RESUA1, + LIST_INST=LISTIMP, INTERPOL='LIN' ) + +NO2_DX_A=RECU_FONCTION( NOEUD='NO2', NOM_CMP='DX', NOM_CHAM='DEPL', + RESU_GENE=TRAN_GE2, + MULT_APPUI='OUI', INTERP_NUME='LIN', + LIST_INST=LISTIMP, INTERPOL='LIN' ) + +DIFF=CALC_FONCTION(COMB=( + _F( FONCTION = NO2_DX_A, COEF = 1.), + _F( FONCTION = NO2_DXA, COEF = -1.)) + ) + +TEST_FONCTION(VALEUR=( + _F( FONCTION = DIFF, VALE_PARA = 0.10, VALE_REFE = 0., + CRITERE = 'ABSOLU', PRECISION = 3.E-5), + _F( FONCTION = DIFF, VALE_PARA = 0.30, VALE_REFE = 0., + CRITERE = 'ABSOLU', PRECISION = 3.E-5), + _F( FONCTION = DIFF, VALE_PARA = 0.50, VALE_REFE = 0., + CRITERE = 'ABSOLU', PRECISION = 3.E-5), + _F( FONCTION = DIFF, VALE_PARA = 0.70, VALE_REFE = 0., + CRITERE = 'ABSOLU', PRECISION = 3.E-5), + _F( FONCTION = DIFF, VALE_PARA = 1.00, VALE_REFE = 0., + CRITERE = 'ABSOLU', PRECISION = 3.E-5)) + ) + + +FIN() diff --git a/Aster/Tests/Recette/efica01a.comm b/Aster/Tests/Recette/efica01a.comm new file mode 100755 index 00000000..e5eeb902 --- /dev/null +++ b/Aster/Tests/Recette/efica01a.comm @@ -0,0 +1,204 @@ +# MODIF DATE 16/01/2002 AUTEUR DURAND C.DURAND +# TITRE TEST DE NON REGRESSION DE L IHM EFICAS - DERIVE DE SDND102A +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG +# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND +# REDISTRIBUTION OF THIS FILE. +# ====================================================================== +# Ce cas test est gere en configuration dans la base ASTER, il sert de +# modele pour prononcer la recette de l IHM d EFICAS : l objectif est de +# pouvoir recreer ce test a l identique dans EFICAS a partir d une page +# blanche. +# On a donc essaye d y placer toutes les commandes un peu particulieres +# du langage de commandes d ASTER +# +# Il s agit en fait du test SDND102A auquel on a ajoute : +# la definition d un parametre (VAL) +# l inclusion d un fichier (INCLUDE) +# une poursuite (POURSUITE) +# Il contient ainsi : +# des parametres, des formules, des macros, des mots cles facteurs repetes +# (y compris conditionnes par des regles : calc_fonction / COMB), +# des blocs (mode_iter_simult,calc_char_seisme), un defi_valeur, un parametre. +# +# +# Il faudra y associer quelques recommandations pour la recette : +# - verifier qu en ouvrant le .com0, il demande bien a browser le .comm puis, en cascade, le .11 +# - verifier qu on peut bien supprimer une commande, un mot cle simple et facteur +# - verifier les acces a la doc +# + +DEBUT(CODE=_F( NOM = 'EFICA01A')) + +MAILLAGE=LIRE_MAILLAGE( ) + +MAILLA2=LIRE_MAILLAGE( UNITE=19 ) + +MODELE=AFFE_MODELE( MAILLAGE=MAILLAGE, + AFFE=( + _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T', + GROUP_MA = 'RESSORT'), + _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T', + GROUP_NO = 'MASSES') ) + ) + +BICHOC=AFFE_MODELE( MAILLAGE=MAILLA2, + AFFE=( + _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T', + GROUP_MA = 'RESSORTS'), + _F( PHENOMENE = 'MECANIQUE', MODELISATION = 'DIS_T', + GROUP_NO = ( 'MASSES1', 'MASSES2',))) + ) + +VAL = 98696.0 + +CARA_ELE=AFFE_CARA_ELEM( MODELE=MODELE, + DISCRET=( + _F( CARA = 'K_T_D_L', REPERE = 'GLOBAL', GROUP_MA = 'RESSORT', + VALE = (VAL, 0., 0., )), + _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES', VALE = 25.0)) + ) + +CARA_BIC=AFFE_CARA_ELEM( MODELE=BICHOC, + DISCRET=( + _F( CARA = 'K_T_D_L', REPERE = 'GLOBAL', GROUP_MA = 'RESSORTS', + VALE = (VAL, 0., 0., )), + _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES1', VALE = 25.0), + _F( CARA = 'M_T_D_N', GROUP_NO = 'MASSES2', VALE = 25.0)) + ) + + +CON_LIM=AFFE_CHAR_MECA( MODELE=MODELE,DDL_IMPO=( + _F( GROUP_NO = 'ENCASTRE', DX = 0., DY = 0., DZ = 0.), + _F( GROUP_NO = 'MASSES', DY = 0., DZ = 0.)) + ) + +CL_BICHO=AFFE_CHAR_MECA( MODELE=BICHOC,DDL_IMPO=( + _F( GROUP_NO = 'ENCBICHO', DX = 0., DY = 0., DZ = 0.), + _F( GROUP_NO = ( 'MASSES1', 'MASSES2',), DY = 0., DZ = 0.)) + ) + +MACRO_MATR_ASSE( MODELE=MODELE, + CHARGE=CON_LIM, + CARA_ELEM=CARA_ELE, + NUME_DDL=CO("NUMEDDL"), + MATR_ASSE=( + _F( MATRICE = CO("RIGIDITE"), OPTION = 'RIGI_MECA'), + _F( MATRICE = CO("MASSE"), OPTION = 'MASS_MECA')) + ) + +MACRO_MATR_ASSE( MODELE=BICHOC, + CHARGE=CL_BICHO, + CARA_ELEM=CARA_BIC, + NUME_DDL=CO("NUMDDLC"), + MATR_ASSE=( + _F( MATRICE = CO("RIGI_BIC"), OPTION = 'RIGI_MECA'), + _F( MATRICE = CO("MASS_BIC"), OPTION = 'MASS_MECA')) + ) + +MODE_MEC=MODE_ITER_SIMULT( MATR_A=RIGIDITE, MATR_B=MASSE ) + +MODE_MEC=NORM_MODE(reuse=MODE_MEC, MODE=MODE_MEC, NORME='MASS_GENE' ) + +MODE_BIC=MODE_ITER_SIMULT( MATR_A=RIGI_BIC, MATR_B=MASS_BIC, + METHODE='JACOBI', + OPTION='SANS', + CALC_FREQ=_F( OPTION = 'BANDE', FREQ = (1., 10., )) + ) + +MODE_BIC=NORM_MODE(reuse=MODE_BIC, MODE=MODE_BIC, NORME='MASS_GENE' ) + +MODE_STA=MODE_STATIQUE( MATR_RIGI=RIGIDITE, MATR_MASS=MASSE, + MODE_STAT=_F( TOUT = 'OUI', AVEC_CMP = 'DX') ) + +MSTA_BIC=MODE_STATIQUE( MATR_RIGI=RIGI_BIC, MATR_MASS=MASS_BIC, + MODE_STAT=_F( TOUT = 'OUI', AVEC_CMP = 'DX') ) + + +L_INST=DEFI_LIST_REEL( DEBUT=0., + INTERVALLE=_F( JUSQU_A = 1., PAS = 0.0001) ) + +OMEGAA=DEFI_VALEUR( R8=EVAL("""2.*PI*10.""") ) + +ACCE1 = FORMULE(REEL="""(REEL:INST) = SIN(OMEGAA*INST) """) +ACCELER1=CALC_FONC_INTERP( FONCTION=ACCE1, LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='ACCE' ) + +ACCE2 = FORMULE(REEL="""(REEL:INST) =- SIN(OMEGAA*INST) """) +ACCELER2=CALC_FONC_INTERP( FONCTION=ACCE2, LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='ACCE' ) + +VITE1 = FORMULE(REEL="""(REEL:INST) =-COS(OMEGAA*INST)/OMEGAA """) +VITESSE1=CALC_FONC_INTERP( FONCTION=VITE1, LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='VITE' ) + +DEPL1 = FORMULE(REEL="""(REEL:INST) =-SIN(OMEGAA*INST)/(OMEGAA**2) """) +DEPLACE1=CALC_FONC_INTERP( FONCTION=DEPL1, LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='DEPL' ) + +VITE2 = FORMULE(REEL="""(REEL:INST) =COS(OMEGAA*INST)/OMEGAA """) +VITESSE2=CALC_FONC_INTERP( FONCTION=VITE2, LIST_PARA=L_INST, + PROL_DROITE='LINEAIRE', + PROL_GAUCHE='LINEAIRE', + NOM_RESU='VITE' ) + +INCLUDE( UNITE=11, INFO=1 ) + +MUR=DEFI_OBSTACLE( TYPE='PLAN_Z' ) + +TRAN_GE1=DYNA_TRAN_MODAL( MASS_GENE=MASS_GEN, RIGI_GENE=RIGI_GEN, + METHODE='EULER', + AMOR_REDUIT=0.07, + MODE_STAT=MODE_STA, + EXCIT=_F( + VECT_GENE = VECT_X, + ACCE = ACCELER1, + VITE = VITESSE1, + DEPL = DEPLACE1, + MULT_APPUI = 'OUI', + DIRECTION = ( 1., 0., 0.,), + NOEUD = 'NO1'), + CHOC=_F( GROUP_NO_1 = 'MASSES', + OBSTACLE = MUR, + INTITULE = 'NO2/MUR', + ORIG_OBST = ( -1., 0., 0., ), + NORM_OBST = ( 0., 0., 1., ), + JEU = 1.1005, + RIGI_NOR = 5.76E7, + AMOR_NOR = 0., + RIGI_TAN = 0., + COULOMB = 0.0), + INCREMENT=_F( INST_INIT = 0., INST_FIN = 1., PAS = 0.0002), + ARCHIVAGE=_F( PAS_ARCH = 8) + ) + + +MULT_X1=CALC_CHAR_SEISME( MATR_MASS=MASS_BIC, DIRECTION=( 1., 0., 0.,), + MODE_STAT=MSTA_BIC, NOEUD='NO1' ) + +MULT_X2=CALC_CHAR_SEISME( MATR_MASS=MASS_BIC, DIRECTION=( 1., 0., 0.,), + MODE_STAT=MSTA_BIC, NOEUD='NO11' ) + +MACRO_PROJ_BASE(BASE=MODE_BIC, + MATR_ASSE_GENE=( + _F( MATRICE = CO("MGEN_BIC"), MATR_ASSE = MASS_BIC), + _F( MATRICE = CO("RGEN_BIC"), MATR_ASSE = RIGI_BIC)), + VECT_ASSE_GENE=( + _F( VECTEUR = CO("VECT_X1"), VECT_ASSE = MULT_X1), + _F( VECTEUR = CO("VECT_X2"), VECT_ASSE = MULT_X2)) + ) + + +GRILLE=DEFI_OBSTACLE( TYPE='BI_PLAN_Z' ) + + +FIN() diff --git a/Aster/Tests/err.comm b/Aster/Tests/err.comm new file mode 100644 index 00000000..f037ce5f --- /dev/null +++ b/Aster/Tests/err.comm @@ -0,0 +1,16 @@ + + +DEBUT(); + +MA=LIRE_MAILLAGE(); + +kk=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +uu=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +FIN(); diff --git a/Aster/Tests/err2.comm b/Aster/Tests/err2.comm new file mode 100644 index 00000000..1f14ec0e --- /dev/null +++ b/Aster/Tests/err2.comm @@ -0,0 +1,19 @@ + + +DEBUT(); + +MA=LIRE_MAILLAGE(); + +kk=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +uu=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +sansnom=DEFI_MATERIAU(ELAS=_F(E=56.24, + NU=0.3,),); + +FIN(); diff --git a/Aster/Tests/err3.comm b/Aster/Tests/err3.comm new file mode 100644 index 00000000..371a2426 --- /dev/null +++ b/Aster/Tests/err3.comm @@ -0,0 +1,60 @@ + + +DEBUT(); + +ma=LIRE_MAILLAGE(); + +air=DEFI_MATERIAU(); + +champmat=AFFE_MATERIAU(MAILLAGE=ma, + AFFE=_F(TOUT='OUI', + MATER=air,),); + +mo=AFFE_MODELE(MAILLAGE=ma, + AFFE=_F(TOUT='OUI', + PHENOMENE='ACOUSTIQUE', + MODELISATION='3D',),); + +characou=AFFE_CHAR_ACOU(MODELE=mo, + VITE_FACE=_F(GROUP_MA=('ENTREE','SORTIE','TOTO','TITI',), + VNOR=('RI',0.014,0.0,),),); + +MACRO_MATR_ASSE(MODELE=mo, + NUME_DDL=CO('num'), + MATR_ASSE=_F(MATRICE=CO('matasm'), + OPTION='MASS_ACOU',),); + +vectelem=CALC_VECT_ELEM(OPTION='CHAR_ACOU', + CHAM_MATER=champmat, + CHARGE=characou,); + +sansnom=ASSE_VECTEUR(VECT_ELEM=None, + NUME_DDL=num,); + +sansnom=ASSE_VECTEUR(VECT_ELEM=vectelem, + NUME_DDL=num,); + +ch=ASSE_VECTEUR(VECT_ELEM=vectelem, + NUME_DDL=num,); + +sansnom=COMB_CHAM_NO(COMB_C=_F(CHAM_NO=None,),); + +sansnom=COMB_CHAM_NO(COMB_C=_F(CHAM_NO=ch, + COEF_R=1,),); + +chno=COMB_CHAM_NO(COMB_C=_F(CHAM_NO=ch, + COEF_R=1,),); + +matasm=FACT_LDLT(reuse =matasm, + MATR_ASSE=matasm,); + +sansnom=RESO_LDLT(MATR_FACT=matasm, + CHAM_NO=None, + ); +sansnom=RESO_LDLT(MATR_FACT=matasm, + CHAM_NO=chno, + ); +rr =RESO_LDLT(MATR_FACT=matasm, + CHAM_NO=chno, + ); + diff --git a/Aster/Tests/torsion.comm b/Aster/Tests/torsion.comm new file mode 100755 index 00000000..83f56092 --- /dev/null +++ b/Aster/Tests/torsion.comm @@ -0,0 +1,340 @@ + DEBUT(); + + + INCLUDE(UNITE: 80); + +TPS = 1. ; + + + +SY = 90. ; + + + +A = 1. ; +H = 0.01 ; +N = 50 ; +T = 0.01 ; +TD = DEFI_VALEUR(R8: EVAL(T*180./PI)) ; +CT = DEFI_VALEUR(R8: EVAL(COS(T))) ; +ST = DEFI_VALEUR(R8: EVAL(SIN(T))) ; +MST= DEFI_VALEUR(R8: EVAL(-ST)); +RAT= DEFI_VALEUR(R8: EVAL(H/A)); + + +K_REF = DEFI_VALEUR( R8: EVAL(0.9845615*Q1) ); +EPS_Y = DEFI_VALEUR( R8: EVAL( (1./K_REF)**5. )); +YOUNG = DEFI_VALEUR( R8: EVAL(SY/EPS_Y) ); + +!FORMULE( REEL: ( + RP(REEL:EPSI) = K_REF * SY * EPSI**0.2 + ) ); + +ECH_EPSI = DEFI_LIST_REEL ( + DEBUT: EPS_Y + INTERVALLE: ( + JUSQU_A: 3. + NOMBRE : 300 + ) + ) ; + +TRAC = CALC_FONC_INTERP ( + FONCTION: RP + LIST_PARA : ECH_EPSI + PROL_GAUCHE: 'LINEAIRE' + PROL_DROIT : 'LINEAIRE' + ) ; + + + PRE_GIBI(); + MA = LIRE_MAILLAGE(); + +&MA = DEFI_GROUP + ( + MAILLAGE: MA + CREA_GROUP_NO: + ( + TOUT_GROUP_MA: 'OUI' + ) + ) ; + + + CUIVRE = DEFI_MATERIAU + ( + ELAS : + ( + E : YOUNG + NU: 0.3 + ) + TRACTION : ( + SIGM: TRAC + ) + NON_LOCAL: ( + LONG_CARA: LC + ) + ) ; + + CHMAT = AFFE_MATERIAU + ( + MAILLAGE: MA + AFFE : + ( + GROUP_MA: TRANCHE + MATER : CUIVRE + ) + ) ; + + + MO_MECA = AFFE_MODELE + ( + MAILLAGE: MA + AFFE : + ( + GROUP_MA : TRANCHE + PHENOMENE : 'MECANIQUE' + MODELISATION : '3D_SI' + ) + ) ; + + MO_DELO = AFFE_MODELE ( + MAILLAGE: MA + AFFE: + ( + GROUP_MA: TRANCHE + PHENOMENE: 'NON_LOCAL' + MODELISATION: '3D' + ) + ) ; + + +!FORMULE ( REEL : ( UX_IMP(REEL: INST, REEL:X, REEL:Y) = + -INST*RAT*Y + )); +!FORMULE ( REEL : ( UY_IMP(REEL: INST, REEL:X, REEL:Y) = + INST*RAT*X + )); +!FORMULE ( REEL : ( UZ_IMP(REEL:X, REEL:Y) = 0. )); + + + ANCRAGE = AFFE_CHAR_MECA ( + MODELE : MO_MECA + FACE_IMPO: + ( + GROUP_MA: BAS + DX: 0. + DY: 0. + DZ: 0. + ) + ) ; + + TORSION = AFFE_CHAR_MECA_F ( + MODELE : MO_MECA + FACE_IMPO: + ( + GROUP_MA: HAUT + DX : UX_IMP + DY : UY_IMP + DZ : UZ_IMP + ) + ) ; + + + SYMETRIE = AFFE_CHAR_MECA ( + MODELE: MO_MECA + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DX' 'DY' ) + DDL_2 : ('DX' ) + COEF_MULT_1 : (CT MST) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DX' 'DY' ) + DDL_2 : ('DY' ) + COEF_MULT_1 : (ST CT) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DZ') + DDL_2 : ('DZ') + COEF_MULT_1 : (1.) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + ) ; + + + INSTANTS = DEFI_LIST_REEL + ( + DEBUT: 0. + INTERVALLE: + (JUSQU_A: TPS NOMBRE: 50) + ) ; + + + + EVOL = STAT_NON_LINE + ( + MODELE: MO_MECA + CHAM_MATER: CHMAT + EXCIT : + (CHARGE: TORSION) + (CHARGE: ANCRAGE) + (CHARGE: SYMETRIE) + INCREMENT: + ( + LIST_INST: INSTANTS + SUBD_PAS : 5 + SUBD_PAS_MINI: 0.0001 + ) + COMP_INCR: + ( + RELATION: 'PLAS_GRAD_TRAC' + DEFORMATION: 'PETIT' + ) + NEWTON: + ( + MATRICE:'ELASTIQUE' + ) + CONVERGENCE: + ( + RESI_GLOB_RELA: 1.E-4 + ITER_GLOB_MAXI: 500 + ITER_INTE_MAXI: 250 + RESI_INTE_RELA: 1.E-9 + ) + ARCHIVAGE: ( + ARCH_ETAT_INIT: 'OUI' + LIST_INST : INSTANTS + ) + + MODELE_NON_LOCAL: MO_DELO + LAGR_NON_LOCAL: ( + RESI_PRIM_ABSO: 1.E-9 + RESI_DUAL_ABSO: 1.E-4 + RHO: 1000. + ITER_PRIM_MAXI: 100 + ITER_DUAL_MAXI: 10 + ) + ) ; + + + +&EVOL = CALC_ELEM ( + MODELE: MO_MECA + CHAM_MATER: CHMAT + RESULTAT : EVOL + OPTION: ('SIEF_ELNO_ELGA' 'VARI_ELNO_ELGA') + ) ; + +&EVOL = CALC_NO ( + RESULTAT: EVOL + OPTION: ('FORC_NODA' + 'SIEF_NOEU_ELGA' 'VARI_NOEU_ELGA') + ) ; + + +ECHAN = INTE_MAIL_3D ( + MAILLAGE : MA + DEFI_SEGMENT: ( + GROUP_NO_ORIG: O1 + GROUP_NO_EXTR: A1 + ) + ) ; + + PLAS_CUM = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'P' + CHEMIN : ECHAN + RESULTAT : EVOL + NOM_CHAM : 'VARI_NOEU_ELGA' + NOM_CMP : 'V1' + INST : TPS + OPERATION: 'EXTRACTION' + ) + ) ; + + + SIGMA = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'SIYZ' + CHEMIN : ECHAN + RESULTAT : EVOL + NOM_CHAM : 'SIEF_NOEU_ELGA' + NOM_CMP : 'SIYZ' + INST : TPS + OPERATION: 'EXTRACTION' + ) + ) ; + + + + MOM_A = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'MOMENT' + GROUP_NO : HAUT + RESULTAT : EVOL + NOM_CHAM : 'FORC_NODA' + RESULTANTE: ('DX' 'DY' 'DZ') + MOMENT : ('DRX' 'DRY' 'DRZ') + POINT : (0. 0. H) + TOUT_ORDRE: 'OUI' + OPERATION : 'EXTRACTION' + ) + ) ; + + MOM_KA_A = RECU_FONCTION ( + TABLE : MOM_A + PARA_X: 'INST' + PARA_Y: 'MOMENT_Z' + ) ; + +!FORMULE ( REEL:( MA3_KA(REEL: INST) = MOM_KA_A(INST)*360/TD/A**3/SY)); + + + + DEFUFI( + IMPRESSION: ( + NOM: 'POST_PY' + UNITE: 81 + ) + ) ; + + + + IMPR_COURBE( + FORMAT: 'AGRAF' + FICHIER: 'POST_PY' + COURBE: ( + FONCTION : MA3_KA + LIST_PARA: INSTANTS + ) + ) ; + + + FIN(); + + +IMPR_TABLE(TABLE:SIGMA); +IMPR_TABLE(TABLE:PLAS_CUM); + + FIN(); \ No newline at end of file diff --git a/Aster/alphasdist.py b/Aster/alphasdist.py new file mode 100644 index 00000000..1dcaa423 --- /dev/null +++ b/Aster/alphasdist.py @@ -0,0 +1,121 @@ +""" + Ce module sert à construire les distributions de versions alpha d'EFICAS en fonction + du tag CVS courant (Vx_yaz). Une version alpha est une version dont toutes les fonctionnalités + ne sont pas implémentées. On utilise pour ces versions, les packages Noyau Validation Cata et Macro + locaux. + Les distributions sont : + - un tar.gz pour UNIX ne contenant pas mxTextTools + - un zip pour Windows contenant mx TextTools préinstallé + L'utilisation de ce module est la suivante : + 1- Se mettre dans un répertoire de travail + 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS + 3- Exporter les sources d'Eficas par la commande : + cvs export -r TAG -d Eficas_export EficasV1_2 + ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_3a1) + 4- Aller dans le répertoire Eficas_export + 4- Executer le script alphasdist.py + python alphasdist.py + Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions + et de les copier dans le répertoire indiqué par dir_download s'il est accessible + +""" +import os,shutil,glob,sys +import types + +version="$Name: $"[7:-2] or 'Test1_3' +# ==========Path du noyau local ==================== +path_Noyau=".." +# ============================================================ +nom_distrib="Eficas"+version+"AsterSTA6" +path_distrib=os.path.join("dist",nom_distrib) +path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" +dir_download= "/home/eficas/WWW/telechargement/eficas" + +def main(): + if os.path.isdir('dist'):shutil.rmtree('dist') + + copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL']) + + copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt']) + copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py']) + copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py']) + copyfiles('Cata/Macro',os.path.join(path_distrib,'Aster','Cata','Macro'),['*.py']) + copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py']) + copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*']) + copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py', + 'editeur.ini', + 'properties.py', + 'eficas_aster.py', + ]) + copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py']) + copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py']) + + copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py']) + + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif']) + + copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py']) + copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster','Cata'),['*.py', + ]) + + copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py']) + copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py']) + + tarball= maketarball('dist',nom_distrib,nom_distrib) + try: + shutil.copy(tarball,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + + try: + shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools')) + except: + print "Impossible de recuperer mxTextTools : ",dir_download + sys.exit(1) + + zipfile= makezipfile('dist',nom_distrib,nom_distrib) + try: + shutil.copy(zipfile,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + +def make_dir(dir_cible): + if type(dir_cible) is not types.StringType: + raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible` + head,tail=os.path.split(dir_cible) + tails=[tail] + while head and tail and not os.path.isdir(head): + head,tail=os.path.split(head) + tails.insert(0, tail) + + for d in tails: + head = os.path.join(head, d) + if not os.path.isdir(head):os.mkdir(head) + + +def copyfiles(dir_origin,dir_cible,listfiles): + if not os.path.isdir(dir_cible):make_dir(dir_cible) + for glob_files in listfiles: + for file in glob.glob(os.path.join(dir_origin,glob_files)): + shutil.copy(file,dir_cible) + +def maketarball(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + print prev + os.chdir(dir_trav) + os.system("tar -cf "+nom_tar+".tar "+dir_cible) + os.system("gzip -f9 "+nom_tar+".tar ") + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".tar.gz") + +def makezipfile(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + os.chdir(dir_trav) + os.system("zip -rq "+nom_tar+".zip "+dir_cible) + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".zip") + +main() + diff --git a/Aster/editeur.ini b/Aster/editeur.ini index e86dc069..c9e1a9e7 100644 --- a/Aster/editeur.ini +++ b/Aster/editeur.ini @@ -1,3 +1,23 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + import os import prefs @@ -12,11 +32,14 @@ isdeveloppeur = "NON" path_cata_dev = "/tmp/cata" # Répertoire temporaire rep_travail = "/tmp" +# Répertoire initial +initialdir=os.curdir # Choix des catalogues rep_mat="bidon" -catalogues = (('ASTER','v5',os.path.join(rep_cata,'cata_STA5.py'),'asterv5'), +catalogues = ( + #('ASTER','v5',os.path.join(rep_cata,'cata_STA5.py'),'asterv5'), ('ASTER','v6',os.path.join(rep_cata,'cata_STA6.py'),'python','defaut'), ) diff --git a/Aster/eficas_aster.py b/Aster/eficas_aster.py index 2debb64d..ca862a94 100755 --- a/Aster/eficas_aster.py +++ b/Aster/eficas_aster.py @@ -1,4 +1,24 @@ #!/usr/bin/env python +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + """ Ce module sert à lancer EFICAS configuré pour Code_Aster """ diff --git a/Aster/prefs.py b/Aster/prefs.py index f3d82ae8..261ee3b2 100644 --- a/Aster/prefs.py +++ b/Aster/prefs.py @@ -1,3 +1,23 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + import os # REPINI sert à localiser le fichier editeur.ini @@ -19,3 +39,50 @@ CODE_PATH = None # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + +labels= ('Fichier','Edition','Jeu de commandes', +# 'Catalogue','Browsers', + 'Options', + 'Aide', + ) + +appli_composants=['readercata','bureau', +# 'browser', + 'options', + ] + +menu_defs={ 'bureau': [ + ('Fichier',[ + ('Nouveau','newJDC'), + ('Ouvrir','openJDC'), + ('Enregistrer','saveJDC'), + ('Enregistrer sous','saveasJDC'), + None, + ('Fermer','closeJDC'), + ('Quitter','exitEFICAS'), + ] + ), + ('Edition',[ + ('Copier','copy'), + ('Couper','cut'), + ('Coller','paste'), + ] + ), + ('Jeu de commandes',[ + ('Rapport de validation','visuCRJDC'), + # ('Fichier à plat','visu_a_plat'), + ('Fichier format v6','visuJDC_py'), + ('Fichier source','visu_txt_brut_JDC'), + ('Paramètres Eficas','affichage_fichier_ini'), + ('Mots-clés inconnus','mc_inconnus'), + ] + ), + ('Aide',[ + ('Aide EFICAS','aideEFICAS'), + ] + ), + ] + } + diff --git a/Aster/properties.py b/Aster/properties.py new file mode 100644 index 00000000..a3170c0f --- /dev/null +++ b/Aster/properties.py @@ -0,0 +1,24 @@ +#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR +# CONFIGURATION MANAGEMENT OF EDF VERSION +# 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 = "6.3.20" +date = "10/10/2002" diff --git a/Aster/sdist.py b/Aster/sdist.py new file mode 100644 index 00000000..543640d7 --- /dev/null +++ b/Aster/sdist.py @@ -0,0 +1,120 @@ +""" + Ce module sert à construire les distributions d'EFICAS en fonction + du tag CVS courant + Les distributions sont : + - un tar.gz pour UNIX ne contenant pas mxTextTools + - un zip pour Windows contenant mx TextTools préinstallé + L'utilisation de ce module est la suivante : + 1- Se mettre dans un répertoire de travail + 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS + 3- Exporter les sources d'EficasV1 par la commande : + cvs export -r TAG -d Eficas_export EficasV1 + ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1) + 4- Copier le répertoire fourni par Aster (ACCAS6.2.0) au meme niveau que Eficas_export + 5- Aller dans le répertoire Eficas_export + 6- Executer le script sdist.py + python sdist.py + Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions + et de les copier dans le répertoire indiqué par dir_download s'il est accessible + +""" +import os,shutil,glob,sys +import types + +version="$Name: $"[7:-2] or 'Test1_2' +# ==========Path du noyau fourni par Aster==================== +path_Noyau="../../AccasAster" +# ============================================================ +nom_distrib="Eficas"+version+"AsterSTA6" +path_distrib=os.path.join("dist",nom_distrib) +path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" +dir_download= "/home/eficas/WWW/telechargement/eficas" + +def main(): + if os.path.isdir('dist'):shutil.rmtree('dist') + + copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL']) + + copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt']) + copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py']) + copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py']) + copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py']) + copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*']) + copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py', + 'editeur.ini', + 'properties.py', + 'eficas_aster.py', + ]) + copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py']) + copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py']) + + copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py']) + + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif']) + + copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py']) + copyfiles(os.path.join(path_Noyau,'Cata'),os.path.join(path_distrib,'Aster','Cata'),['*.py', + ]) + copyfiles(os.path.join(path_Noyau,'Macro'),os.path.join(path_distrib,'Aster','Cata','Macro'),['*.py']) + + copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py']) + copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py']) + + tarball= maketarball('dist',nom_distrib,nom_distrib) + try: + shutil.copy(tarball,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + + try: + shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools')) + except: + print "Impossible de recuperer mxTextTools : ",dir_download + sys.exit(1) + + zipfile= makezipfile('dist',nom_distrib,nom_distrib) + try: + shutil.copy(zipfile,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + +def make_dir(dir_cible): + if type(dir_cible) is not types.StringType: + raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible` + head,tail=os.path.split(dir_cible) + tails=[tail] + while head and tail and not os.path.isdir(head): + head,tail=os.path.split(head) + tails.insert(0, tail) + + for d in tails: + head = os.path.join(head, d) + if not os.path.isdir(head):os.mkdir(head) + + +def copyfiles(dir_origin,dir_cible,listfiles): + if not os.path.isdir(dir_cible):make_dir(dir_cible) + for glob_files in listfiles: + for file in glob.glob(os.path.join(dir_origin,glob_files)): + shutil.copy(file,dir_cible) + +def maketarball(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + print prev + os.chdir(dir_trav) + os.system("tar -cf "+nom_tar+".tar "+dir_cible) + os.system("gzip -f9 "+nom_tar+".tar ") + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".tar.gz") + +def makezipfile(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + os.chdir(dir_trav) + os.system("zip -rq "+nom_tar+".zip "+dir_cible) + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".zip") + +main() + diff --git a/Descartes/cata_descartes.py b/Descartes/cata_descartes.py new file mode 100755 index 00000000..ae8d16a5 --- /dev/null +++ b/Descartes/cata_descartes.py @@ -0,0 +1,1655 @@ +# debut entete + +import Accas +from Accas import * + +JdC = JDC_CATA(code="DESCARTES", + execmodul=None + ) + +import string + +class TObjet(ASSD): + def __init__(self,**args): + apply(ASSD.__init__,(self,),args) + name=string.ljust(self.__class__.__name__[:12],12) + + def __getitem__(self,attrname): + return self.etape[attrname] + + def db(self): + if hasattr(self,'_dbsun'):return self._dbsun + else: + self._dbsun={'t':1} + return self._dbsun + + def putdb(self,o): + self._dbsun=o + +# +# Definition des types d'objet qui seront produits par les commandes +# Il suffit de declarer une classe qui derive de la classe mere TObjet +# qui derive elle meme de la classe ASSD utilisee dans EFICAS +# +class Isotope (TObjet):pass +class BornesEnergie (TObjet):pass +class BibliothequeIsotopes (TObjet):pass +class ChaineFiliation(TObjet) :pass +class Materiau (TObjet):pass +class Point (TObjet):pass +class Vecteur (TObjet):pass +class Droite (TObjet):pass +class Segment (TObjet):pass +class ArcCercle (TObjet):pass +class Secteur (TObjet):pass +class Conique (TObjet):pass +class Triangle (TObjet):pass +class Rectangle (TObjet):pass +class Carre (TObjet):pass +class Hexagone (TObjet):pass +class Polygone (TObjet):pass +class Sphere (TObjet):pass +class BoiteRectangulaire (TObjet):pass +class BoiteGenerale (TObjet):pass +class CylindreX (TObjet):pass +class CylindreY (TObjet):pass +class CylindreZ (TObjet):pass +class Cylindre (TObjet):pass +class Cone (TObjet):pass +class PrismeHexagonal (TObjet):pass +class Tore (TObjet):pass +class Plan (TObjet):pass +class PlanX (TObjet):pass +class PlanY (TObjet):pass +class PlanZ (TObjet):pass +class Polyedre (TObjet):pass +class Quadrique (TObjet):pass +class Cellule(TObjet) :pass +class Cluster(TObjet):pass +class Orientation(TObjet):pass +class FormePositionnee (TObjet):pass +class GeometrieSurfacique(TObjet):pass +class GeometrieCombinatoire(TObjet):pass +class Reseau(TObjet):pass +class GrilleAssemblage (TObjet):pass +class PartieInferieureAssemblageCombustible (TObjet):pass +class PartieSuperieureAssemblageCombustible (TObjet):pass +class OptionsAutoprotection(TObjet):pass +class AssemblageType(TObjet):pass +class AssemblageCombustibleCharge (TObjet):pass +class ElementBarre (TObjet):pass +class ElementsGrappeCommande (TObjet):pass +class ElementsAbsorbantsFixes (TObjet):pass +class GrappeBouchonAssemblage (TObjet):pass +#class ElementsAssemblage (TObjet):pass +class SystemeUnitesMesure (TObjet):pass +class Vide (TObjet):pass +class ReflexionIsotrope (TObjet):pass +class ReflexionSpeculaire (TObjet):pass +class Albedo (TObjet):pass +class Translation (TObjet):pass +class Rotation (TObjet):pass +class ConditionLimiteSpeciale (TObjet):pass +class ConditionLimiteGenerale (TObjet):pass +class CorrespondanceReperePositionReseau (TObjet):pass +class PositionAssemblageCombustible (TObjet):pass +class PositionInstrumentationInterne (TObjet):pass +class PositionGrappesCommande (TObjet):pass +class StructuresInternesReacteur (TObjet):pass +class CaracteristiquesPalier (TObjet):pass +class SiteNucleaire (TObjet):pass +class EspaceVariations (TObjet):pass +class DonneesEvolutionIrradiation (TObjet):pass +class ConditionsFonctionnementMoyennes (TObjet):pass +#class PlanChargementCoeur (TObjet):pass +class DateClesCampagne (TObjet):pass +class OptionsCodes (TObjet):pass +class DonneesGeneralesEtude (TObjet):pass +# fin entete + +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ISOTOPE : Classe de definition d'un isotope +# Caracteristiques elementaires des isotopes ou molecules et liens avec les bibliotheques de donnees nucleaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ISOTOPE=OPER(nom="ISOTOPE",sd_prod=Isotope,op=0, + + fr = "Definition d'un isotope ou d'une molecule et de ses bibliotheques", + ang = "Isotope or Molecule definition and data libraries", + Symbole = SIMP (typ='TXM',statut='o'), + MasseAtomique = SIMP (typ='R',statut='o',fr="Masse atomique en uma"), + NombreDeCharge = SIMP (typ='I',statut='o',fr="Nombre de charge atomique Z"), + NombreDeMasse = SIMP (typ='I',statut='o',fr="Nombre de masse atomique A"), + Type = SIMP (typ='TXM',statut='f',into=('Standard','Detecteur','Structure','Poison'),fr="Type de l'isotope"), + ConstituantsChimiques = SIMP (typ='TXM',max='**',statut='f',fr="Symboles des constituants elementaires de la molecule"), + NomsBibliotheque = NUPL ( max = '**', + statut = 'o', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque"))), + NomsBibliothequeAutoprotegee = NUPL ( max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant Bibliotheque autoprotegee de l'isotope"))) + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe BORNES_ENERGIE : Classe de definition des limites en energie d'un maillage multigroupe +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BORNES_ENERGIE=OPER(nom="BORNES_ENERGIE",sd_prod=BornesEnergie,op=0, + fr = "Definition d une discretisation de l espace energetique", + ang = "Definition of an energy discretisation", + NbMacrogroupes = SIMP (typ='I',statut='o',fr="Nombre de macrogroupes du maillage energetique"), + BornesEnergetiques = SIMP (typ='R',max='**',statut='o',fr="Bornes en energie du maillage energetique"), + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BIBLIOTHEQUE_ISOTOPES : Classe de definition d'une bibliotheque des donnees nucleaires d'isotopes ou de molecules +# Caracteristiques elementaires des isotopes ou molecules +# et liens avec les bibliotheques de donnees nucleaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BIBLIOTHEQUE_ISOTOPES=OPER(nom="BIBLIOTHEQUE_ISOTOPES",sd_prod=BibliothequeIsotopes,op=0, + + fr = "Definition d une bibliotheque de donnees nucleaires des isotopes", + ang = "Definition of an isotopic nuclear data library", + Description = SIMP (typ='TXM',statut='f'), + Fichiers = FACT ( + max = '**', + statut = 'o', + SystemeExploitation = SIMP (typ='TXM',fr="Systeme d'exploitation"), + NomFichier = SIMP (typ='TXM',fr="Nom du fichier"), + FormatFichier = SIMP (typ='TXM',fr="Format du fichier",statut='f'), + BornesEnergetiques = SIMP (typ=BornesEnergie,statut='f',fr="Bornes en eV du maillage en energie")) + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CHAINE_FILIATION : Classe de definition des filiations isotopiques dues aux transmutations +# sous irradiation neutronique. +# Description textuelle sous format (APOLLO2, SUNSET ou DARWIN) ou description particuliere Descartes. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CHAINE_FILIATION = OPER (nom="CHAINE_FILIATION",op=0,sd_prod=ChaineFiliation, + + fr = "Definition d'une chaine de filiation isotopique sous irradiation", + ang = "Definition of a depletion chain", + NombreIsotopes = SIMP (typ='I',statut='o',fr="Nombre d'isotopes decrits dans la chaine"), + ChaineAPOLLO2 = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format APOLLO2"), + ChaineSUNSET = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format SUNSET"), + ChaineDARWIN = SIMP (typ='TXM',statut='f',fr="Nom du fichier contenant la description DARWIN de la chaine"), + Isotopes = FACT ( max = '**', statut = 'f', + Isotope = FACT ( max = '**', statut = 'f', + IsotopePere = SIMP (typ=Isotope,fr="Nom isotope pere",statut='o'), + TypeReaction = SIMP (typ='TXM',fr="Type de reaction",statut='o'), + RapportBranchement = SIMP (typ='R',fr="Rapport de branchement",defaut=1.,statut='f') + ) + ) + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe MATERIAU : Classe de définition d'un matériau à partir de mélange d'isotopes ou de matériaux. +# Définition alternative par donnée des enrichissements +# Caractéristiques fournies a 20 C. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MATERIAU=OPER(nom="MATERIAU",op=0,sd_prod=Materiau, + + fr = "Definition d'un materiau", + ang = "Definition of a mixture", + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Isotopique",into=("Isotopique","Enrichissement")), + BlocIsotopique = BLOC (condition = "TypeDefinition=='Isotopique'", + Type = SIMP ( statut = 'o', + typ = 'TXM', + into = ('Absorbant','Combustible','Melange','ModerateurInterne','ModerateurExterne','Detecteur', + 'Grille','Gaine','Tube','Poison','PoisonConsommable','AbsorbantIntegre', + 'Solide','Liquide','Gaz','MateriauVide'), + defaut = 'Combustible'), + MethodeMelange = SIMP (statut='o',typ='TXM',into=('Isotopique','Massique','Concentration'),defaut='Massique'), + Constituants = NUPL ( statut = 'o', + max = '**', + elements = (SIMP (typ=(Isotope,Materiau)),SIMP (typ='R')), + fr = "Couples (Isotope ou Materiau) et (Pourcentage ou Cencentration)") + ), + BlocEnrichissement = BLOC (condition = "TypeDefinition=='Enrichissement'", + Type = SIMP (typ='TXM',into=('UO2','MOX','UO2Gadolinium','MOXGadolinium'),statut='o'), + EnrichissementU235 = SIMP (typ=('R','TXM'),defaut=3.7,statut='f',fr="Enrichissement % en U235 du combustible"), + EnrichissementPu = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en plutonium du combustible"), + EnrichissementGado = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en Gd2O3 du combustible"), + VecteurPu = NUPL ( max='**',statut='f', + elements=( SIMP (typ=Isotope,fr="Nom isotope du plutonium"), + SIMP (typ='R',fr="Pourcentage isotopique"))), + DateReference = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de reference du combustible"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de divergence du reacteur ou ce combustible est charge"), + VieillissementJours = SIMP ( typ = 'R', + defaut = 0., + statut = 'f', + fr = "Nbre de jours de vieillissement du combustible, calculable si on donne DateDivergence")), + MasseVolumique = SIMP (statut='f',typ=('R','I','TXM'),fr="Masse volumique theorique du materiau g/cm3"), + TauxEvidement = SIMP (statut='f',typ=('R','I'),fr="Taux % d'evidement du materiau"), + TauxPorosite = SIMP (statut='f',typ=('R','I'),fr="Taux % de porosite du materiau"), + Temperature = SIMP (statut='f',typ=('R','I','TXM'),fr="Temperature en Celsius du materiau"), + GazRemplissage = SIMP (statut='f',typ=(Isotope,Materiau),defaut='HE4',fr="Gaz de remplissage des evidements du materiau solide"), + PressionInitialeGaz = SIMP (statut='f',typ=('R','I'),defaut=32.,fr="Pression en bars du gaz de remplissage des evidements"), + DilatationLineaire = SIMP (statut='f',typ=('R','I'),fr="Coefficient de dilatation thermique lineaire cm/C du materiau"), + Chaine = SIMP (statut='f',typ=ChaineFiliation,defaut='ChaineSaturee',fr="Chaine de filiation isotopique associee au materiau"), + TauxImpuretes = SIMP (statut='f',typ=('R','I'),fr="Taux % d'impuretes") + ); +# ================================================================================================================================== +# Definition des Classes elementaires pour la geometrie +# ================================================================================================================================== +# Classe POINT : Classe de definition d'un point de l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POINT = OPER (nom="POINT",op=0,sd_prod=Point, + + fr = "Definition d'un point de l'espace", + ang = "Definition of a point in space", + Coordonnees = SIMP (typ='R',min=2,max=3,statut='o',fr="Coordonnees du point dans l'espace") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe VECTEUR : Classe de definition d'un vecteur dans l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VECTEUR = OPER (nom="VECTEUR",op=0,sd_prod=Vecteur, + + fr = "Definition d'un vecteur dans l'espace", + ang = "Definition of a vector in space", + regles = (UN_PARMI ('Composantes','Points')), + Composantes = SIMP (typ='R',min=2,max=3,statut='f',fr="Composantes du vecteur en 2D ou 3D"), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Vecteur defini par deux points") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DROITE : Classe de definition d'une droite +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DROITE = OPER (nom="DROITE",op=0,sd_prod=Droite, + + fr = "Definition d'une droite par 2 POINTs, 1 POINT et 1 VECTEUR, ou Equation ax + by + cz + d = 0", + ang = "Definition of a straight line with 2 POINTs or with Equation ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','VecteurOrigine')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition de la droite"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation d'une droite"), + VecteurOrigine = FACT (statut='f', + Vecteur = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur de la droite"), + Origine = SIMP (typ=Point,statut='f',fr="Donnee d'un point de passage de la droite"))) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SEGMENT : Classe de definition d'un segment (Idem DROITE + Longueur et Origine) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SEGMENT = OPER (nom="SEGMENT",op=0,sd_prod=Segment, + + fr = "Definition d'un segment 2 Points ou Origine + ((Longueur + Equation ax + by + d = 0) ou vecteur)", + ang = "Definition of a segment ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','Vecteur')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition du segment"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation de la droite "), + Vecteur = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur du segment"), + Longueur = SIMP (typ='R',statut='f',fr="Longueur du segment"), + Origine = SIMP (typ=Point,statut='f',fr="Donnee de l'origine du segment") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ARC_CERCLE : Classe de definition d'un arc de cercle +# Angles donnes en degres +# Dans le cas 2D on peut positionner l'arc de cercle en donnant l'angle du debut de l'arc par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur de l'arc +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ARC_CERCLE = OPER (nom="ARC_CERCLE",op=0,sd_prod=ArcCercle, + + fr = "Definition d'un arc de cercle", + ang = "Definition of a circular arc", + Type = SIMP (typ='TXM',statut='f',defaut='2D',into=('2D','3D'),fr="Type d'arc 2D ou 3D"), + Rayon = SIMP (typ='R',statut='o',fr="Rayon de l'arc de cercle"), + Angles = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres de l'arc : Total et Debut"), + VecteurAxe = SIMP (typ=Vecteur,statut='f',fr="Vecteur directeur de l'axe de l'arc") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTEUR : Classe de definition d'un disque ou d'un secteur d'une couronne circulaire +# Angle du secteur donne en degres (360° par defaut) +# Dans le cas 2D on peut positionner le secteur en donnant l'angle du debut de secteur par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur du secteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTEUR = OPER (nom="SECTEUR",op=0,sd_prod=Secteur, + + fr = "Definition d'un disque ou d'un secteur d'une couronne", + ang = "Definition of a circular sector", + Type = SIMP (typ='TXM',statut='o',into=('2D','3D'),fr="Type de secteur 2D ou 3D"), + Rayons = SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons interne et externe de la couronne"), + Angles = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres du secteur"), + Hauteur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du secteur"), + VecteurAxe = SIMP (typ=Vecteur,defaut=0.,statut='f',fr="Vecteur directeur de l'axe du secteur") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONIQUE : Classe de definition d'une conique 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONIQUE = OPER (nom="CONIQUE",op=0,sd_prod=Conique, + + fr = "Definition d'une conique 2D ax2+by2+cxy+dx+ey+f=0", + ang = "Definition of a quadratic curve 2D", + Equation = SIMP (typ='R',min=2,max=6,statut='o',fr="Coefficients successifs abcdef de l'equation d'une conique"), + OrigineVecteur = NUPL ( + elements = (SIMP (typ=Point),SIMP (typ=Vecteur)), + statut = 'f', + fr = "Donnee de l'origine et du vecteur directeur") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TRIANGLE : Classe de definition d'un triangle +# Angles donnes en degres par rapport a l'axe Ox horizontal +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TRIANGLE = OPER (nom="TRIANGLE",op=0,sd_prod=Triangle, + + fr = "Definition d'un triangle", + ang = "Definition of a triangle", + regles = (UN_PARMI ('Points','AngleCotes')), + Points = SIMP (typ=Point,min=3,max=3,statut='f'), + AngleCotes = SIMP (typ='R',min=3,max=3,statut='f',fr="Donnee d'un Angle en degres et Longueurs de deux cotes") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RECTANGLE : Classe de definition d'un rectangle +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RECTANGLE = OPER (nom="RECTANGLE",op=0,sd_prod=Rectangle, + + fr = "Definition d'un rectangle", + ang = "Definition of a rectangle", + regles = (UN_PARMI ('Points','Cotes')), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Definition du rectangle par trois points"), + Cotes = SIMP (typ='R',min=2,max=2,statut='f',fr="Donnee de la longueur de deux cotes") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARRE : Classe de definition d'un carre +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARRE = OPER (nom="CARRE",op=0,sd_prod=Carre, + + fr = "Definition d'un carre", + ang = "Definition of a square", + regles = (UN_PARMI ('Points','Cote')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Definition du carre par deux points"), + Cote = SIMP (typ='R',statut='f',fr="Donnee de la longueur du cote du carre") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe HEXAGONE : Classe de definition d'un hexagone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +HEXAGONE = OPER (nom="HEXAGONE",op=0,sd_prod=Hexagone, + + fr = "Definition d'un hexagone", + ang = "Definition of an hexagon", + Rayon = SIMP (typ='R',statut='f',fr="Rayon du cercle inscrit dans l'hexagone") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYGONE : Classe de definition d'un polygone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYGONE = OPER (nom="POLYGONE",op=0,sd_prod=Polygone, + + fr = "Definition d'un polygone", + ang = "Definition of a polygon", + Points = SIMP (typ=Point,max='**',statut='f',fr="Definition d'un polygone par tous ses points") + ); +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques combinatoires ou surfaciques +# L'utilisation de certaines classes de combinatoire en surfacique consiste a simplement specifier la position de l'objet +# ou a eliminer certaines surfaces limites de la classe +# Pour une sphere : donnee du centre de la sphere +# Pour un cylindre : Pas de donnee de la hauteur, mais donnee d'un point de l'axe du cylindre +# ================================================================================================================================== +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SPHERE : Classe de definition d'une sphere (ou d'une sphere sectorisee ou decoupee en rondelles) +# Des portions de la sphere peuvent etre selectionnees en donnant leurs cotes limites sur un axe de la sphere +# (origine de l'axe au centre de la sphere, donc cotes comprises entre -R, +R si R est le rayon de la sphere) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SPHERE = OPER (nom="SPHERE",op=0,sd_prod=Sphere, + + fr = "Definition d'une forme spherique", + ang = "Definition of a spherical form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon de la sphere"), + Secteur = SIMP (typ='R',statut='f',fr="Angle du secteur de la sphere"), + TranchesAxiales = NUPL ( + max = '**', + statut = 'f', + fr = "Limites des tranches axiales de la sphere sectorisee", + elements = (SIMP (typ='R',fr="Cote depart de la tranche"),SIMP (typ='R',fr="Cote finale de la tranche"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_RECTANGULAIRE : Classe de definition d'une forme parallelepipedique de cotes paralleles aux axes de reference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_RECTANGULAIRE = OPER (nom="BOITE_RECTANGULAIRE",op=0,sd_prod=BoiteRectangulaire, + + fr = "Definition d'une d'une forme parallelepipedique rectangulaire", + ang = "Definition of a rectangular box form", + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite rectangulaire") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_GENERALE : Classe de definition d'une forme parallelepipedique quelconque +# Le plan de base de la boite doit etre le plan xOy. On donne donc uniquement les 2 vecteurs **normaux** +# aux 2 autres plans, et les 3 longueurs des arretes principales. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_GENERALE = OPER (nom="BOITE_GENERALE",op=0,sd_prod=BoiteGenerale, + + fr = "Definition d'une forme parallelepipedique quelconque", + ang = "Definition of a general box form", + VecteursDirecteurs = SIMP (typ=Vecteur,min=2,max=2,statut='o',fr="Vecteurs normaux aux faces non horizontales de la boite"), + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_X : Classe de definition d'une forme cylindrique d'axe parallele a Ox +# Pour tous les cylindres, la donnee de deux rayons transforme le cylindre circulaire en cylindre elliptique +# La donnee d'un angle limite le cylindre a ce secteur +# Pour un secteur d'un cylindre elliptique, il est necessaire de donner en plus l'angle de depart du secteur +# par rapport a l'axe majeur de l'ellipse +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_X = OPER (nom="CYLINDRE_X",op=0,sd_prod=CylindreX, + + fr = "Definition d'une forme cylindrique d'axe parallele a Ox", + ang = "Definition of a right cylinder form // Ox", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre X"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre X"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre X") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Y : Classe de definition d'une forme cylindrique d'axe parallele a Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Y = OPER (nom="CYLINDRE_Y",op=0,sd_prod=CylindreY, + + fr = "Definition d'une forme cylindrique d'axe parallele a Oy", + ang = "Definition of a right cylinder form // Oy", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Y"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Y"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Y") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Z : Classe de definition d'une forme cylindrique d'axe parallele a Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Z = OPER (nom="CYLINDRE_Z",op=0,sd_prod=CylindreZ, + + fr = "Definition d'une forme cylindrique d'axe parallele a Oz", + ang = "Definition of a right cylinder form // Oz", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Z"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Z"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Z") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE : Classe de definition d'une forme cylindrique quelconque +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE = OPER (nom="CYLINDRE",op=0,sd_prod=Cylindre, + + fr = "Definition d'une forme cylindrique quelconque", + ang = "Definition of a general cylinder form", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cylindre"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONE : Classe de definition d'un forme conique +# Une portion de cone peut etre definie en donnant les cotes axiales (origine de l'axe du cone au sommet du cone) de +# la zone retenue +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONE = OPER (nom="CONE",op=0,sd_prod=Cone, + + fr = "Definition d'une forme conique", + ang = "Definition of a conic form", + DemiAngleSommet = SIMP (typ='R',statut='o',fr="Demi-angle au sommet"), + LimitesAxiales = SIMP (typ='R',min=2,max=2,statut='f',fr="Limites axiales du cone"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cone") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRISME_HEXAGONAL : Classe de definition d'une forme de prisme hexagonal 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRISME_HEXAGONAL = OPER (nom="PRISME_HEXAGONAL",op=0,sd_prod=PrismeHexagonal, + + fr = "Definition d'une forme de prisme hexagonal 3D", + ang = "Definition of a 3D hexagonal form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon du cercle circonscrit (=cote de l'hexagone)"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur de l'hexagone"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe de l'hexagone") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TORE : Classe de definition d'une forme toroidale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TORE = OPER (nom="TORE",op=0,sd_prod=Tore, + + fr = "Definition d'une forme toroidale", + ang = "Definition of a toroidal form", + Rayons = SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons du tore : 1/2 distance a l'axe et rayon de la section du tore") ) ; +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques surfaciques +# ================================================================================================================================== +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN : Classe de definition d'un plan +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN = OPER (nom="PLAN",op=0,sd_prod=Plan, + + fr = "Definition d'un plan ax + by + cz + d = 0", + ang = "Definition of a plane surface ax + by + cz + d = 0", + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee de 3 points non alignes"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation du plan") + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_X : Classe de definition d'un plan perpendiculaire a l'axe Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_X = OPER (nom="PLAN_X",op=0,sd_prod=PlanX, + + fr = "Definition d'un plan perpendiculaire a Ox", + ang = "Definition of a plane surface perpendicular to Ox", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OyOz") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Y : Classe de definition d'un plan perpendiculaire a l'axe Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Y = OPER (nom="PLAN_Y",op=0,sd_prod=PlanY, + + fr = "Definition d'un plan perpendiculaire a Oy", + ang = "Definition of a plane surface perpendicular to Oy", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOz") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Z : Classe de definition d'un plan perpendiculaire a l'axe Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Z = OPER (nom="PLAN_Z",op=0,sd_prod=PlanZ, + + fr = "Definition d'un plan perpendiculaire a Oz", + ang = "Definition of a plane surface perpendicular to Oz", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOy") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYEDRE : Classe de definition d'une forme polyhedrique 3D quelconque (N faces, N > 4) +# Definition surfacique : Donnee des N plans et du choix du cote positif ou negatif +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYEDRE = OPER (nom="POLYEDRE",op=0,sd_prod=Polyedre, + + fr = "Definition d'une forme polyhedrique 3D quelconque ", + ang = "Definition of a 3D polyhedron form with N > 4 plane faces", + Plans = NUPL ( + min = 5, + max = '**', + statut = 'o', + fr = "Surfaces planes limites du polyedre", + elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"), + SIMP (typ='TXM',into=('Plus','Moins'),fr="Choix du cote positif ou negatif de l'espace"))) + ) ; + +# elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"), +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe QUADRIQUE : Classe de definition d'une quadrique 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +QUADRIQUE = OPER (nom="QUADRIQUE",op=0,sd_prod=Quadrique, + + fr = "Definition d'une quadrique 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + ang = "Definition of a quadratic curve 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + Equation = SIMP (typ='R',min=2,max=10,statut='o',fr="Coefficients successifs abcdefghij de l'equation d'une quadrique") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CELLULE : Classe de definition d'une cellule (ensemble elementaire de regions annulaires et sectorisees) +# Apres la hauteur de la cellule, entree des donnees par listes successives pour l'ensemble des couronnes de la +# cellule, la zone externe etant decrite a part dans l'attribut FormeTechnologique : +# - Liste des materiaux +# - Liste des rayons des couronnes correspondantes +# - Liste des sous-couronnes : - Numero de couronne a discretiser (Numero 1 a partir du centre), +# - Nombre de sous-couronnes, +# - Mot-cle Equivolumique si decoupage en sections transverses egales, +# - Rayons des couronnes intermediaires ou proportions volumiques si mot-cle +# Proportions indique anterieurement. +# - Liste des sectorisations : - Nom de couronne a sectoriser , +# - Nombre de secteurs, +# - Mot-cle Equivolumique si decoupage en secteurs egaux et positionnement du premier +# secteur par rapport a l'axe x, et pas de changement de composition du secteur, +# - Mot-cle alternatif Angle si on veut modifier ou positionner les secteurs dans la +# couronne : on donne alors des triplets de donnees pour chaque secteur : +# - nom du materiau composant le le secteur, +# - position trigonometrique en \260 du debut du secteur +# - et angle en \260 du secteur. +# Le trace des secteurs sont definis en partant du centre de la couronne. +# Pour la sectorisation de la forme externe, deux cas se presentent : +# - soit pas de couronnes internes : les secteurs se tracent alors en partant +# du centre de la forme externe, +# - dans le cas contraire, les secteurs partent du centre des couronnes. +# Les secteurs peuvent ne pas couvrir l'ensemble de la couronne. +# Pour la zone peripherique, on doit definir les cotes de la cellule (cas cartesien), son materiau, sa +# discretisation, et le decentrage du centre des couronnes par rapport au centre de ce contour peripherique +# (Coordonnees x,y du centre des couronnes / au centre du contour) +# Pour le moment, limitation a 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CELLULE = OPER (nom="CELLULE",op=0,sd_prod=Cellule, + + fr = "Definition d'une cellule elementaire d'un assemblage", + ang = "Definition of a basic pin cell", + Type = SIMP (typ='TXM',defaut='Combustible', + into=( 'Combustible','BarreGrise','BarreNoire','BarreAcier','BarreAic','BarreB4c', + 'Detecteur','Trou','TubeGuide','Postiche','Pyrex','ExPyrex','Gadolinium', + 'CellType1','CellType2','CellType3'),statut='o'), + HauteurMoyenne = SIMP (typ='R',defaut=1.,statut='o',fr="Hauteur moyenne de la cellule de base"), + Couronnes = FACT ( + NomsSymboliques = SIMP (typ='TXM',max='**',statut='o',fr="Liste des noms arbitraires des couronnes"), + Materiaux = SIMP (typ=Materiau,max='**',statut='o',fr="Liste des materiaux des couronnes"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',statut='o',fr="Liste des temperatures des couronnes"), + Rayons = SIMP (typ='R',max='**',statut='o',fr="Liste des rayons des couronnes"), + RayonsMineurs = SIMP (typ='R',max='**',statut='f',fr="Liste des rayons mineurs des couronnes elliptiques"), + Hauteurs = SIMP (typ='R',max='**',statut='f',fr="Liste des hauteurs des couronnes")), + SousCouronnes = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',fr="Nom symbolique de la couronne"), + NbSousCouronnes = SIMP (typ='I',fr="Nombre de sous-couronnes de discretisation"), + TypeDiscretisation = SIMP (typ='TXM',defaut='Equivolumique',into=('Equivolumique','Proportions','Equidistant'),statut='f'), + ProportionsVolumiques = SIMP (typ='R',statut='f',max='**',fr="Proportions volumiques optionnelles des sous-couronnes"), + ProfilTemperature = SIMP (typ='R',max='**',statut='f',fr="Profil de temperature")), + Homogeneisation = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',fr="Nom arbitraire de la couronne homogeneisee"), + ListeCouronnes = SIMP (typ='TXM',max='**',fr="Liste des noms des couronnes jointives a homogeneiser")), + Secteurs = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom de la couronne ou de la forme externe a sectoriser"), + NbSecteurs = SIMP (typ='I',fr="Nombre de secteurs de la couronne",statut='o'), + TypeSectorisation = SIMP (typ='TXM',defaut='Coins',into=('Equivolumique','Angle','Coins','MilieuxCotes'),statut='f'), + Sectorisation = FACT ( + max = '**', + statut = 'f', + Materiaux = SIMP (typ=Materiau,max='**',fr="Materiau des secteurs"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature des secteurs"), + AnglesDepart = SIMP (typ='R',max='**',fr="Angle de depart du secteur"), + Angles = SIMP (typ='R',max='**',fr="Angle du secteur"))), + FormeExterne = FACT ( + NomSymbolique = SIMP (typ='TXM',statut='f'), + Type = SIMP ( + typ=(ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'f', # la donnee est facultative si la cellule est inserree dans un reseau + fr = "Forme geometrique exterieure"), + Materiau = SIMP (typ=Materiau,fr="Materiau de la forme externe"), + Temperature = SIMP (typ=('R','I','TXM'),fr="Temperature du materiau de la forme externe"), + Decentrement = SIMP ( + typ = 'R', + min = 2, + max = 3, + defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / centre du contour")) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CLUSTER : Classe de definition d'un cluster de cellules cylindriques de forme exterieure quelconque +# Un cluster est defini comme une superposition centree de cadrans telephoniques (a l'ancienne mode), chaque +# cadran ayant des trous de tailles differentes, l'ensemble etant dispose dans un contour de forme quelconque. +# Possibilites donnees ci-dessous : +# - Positionnement des couronnes de canaux, chaque canal etant une CELLULE predefinie, +# - Definition du fond du cluster : +# - Serie de couronnes de materiaux distincts +# - Forme exterieure quelconque +# - Sectorisation eventuelle de la zone peripherique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CLUSTER = OPER (nom="CLUSTER",op=0,sd_prod=Cluster, + fr = "Definition d'un cluster de cellules cylindriques", + ang = "Definition of a cylindrical cell cluster", + Hauteur = SIMP (typ='R',defaut=1.,statut='f',fr="Hauteur du cluster"), + Couronnes = FACT ( + Cellules = SIMP (typ=Cellule,max='**',fr="Liste des cellules sur chaque cercle"), + Rayons = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes de cellules"), + Angles = SIMP (typ='R',max='**',fr="Liste des pas angulaires de positionnement des cellules cylindriques")), + FormeGlobale = FACT ( + NomSymbolique = SIMP (typ='TXM'), + RayonsInternes = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes internes",statut='f'), + MateriauxInternes = SIMP (typ=Materiau,max='**',fr="Materiaux Couronnes internes",statut='f'), + TemperaturesInternes = SIMP (typ=('R','I','TXM'),max='**',fr="Temperatures des materiaux internes",statut='f'), + FormeExterne = SIMP ( + typ = (ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'o', + fr = "Forme geometrique exterieure"), + MateriauExterne = SIMP (typ=Materiau,fr="Materiau de la forme externe",statut='o'), + TemperatureExterne = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature du materiau externe",statut='f'), + Decentrement = SIMP ( + typ = 'R', + min = 2, + max = 3, + defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / centre du contour")), + SecteursExternes = FACT ( + NbSecteurs = SIMP (typ='I',fr="Nombre de secteurs de la couronne externe",statut='o'), + TypeSecteur = SIMP ( + typ = 'TXM', + defaut = 'Coins', + into = ('Equivolumique','Angle','Coins','MilieuxCotes'), + statut = 'f'), + Materiaux = SIMP (max='**',typ=Materiau,fr="Materiau des secteurs",statut='f'), + AngleDepart = SIMP (max='**',typ='R',fr="Angle de depart des secteurs",statut='f'), + AngleSecteur = SIMP (max='**',typ='R',fr="Angle des secteurs",statut='f')) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ORIENTATION : Classe de definition d'une orientation angulaire dans un plan 2D apres symetrie eventuelle / Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ORIENTATION = OPER (nom="ORIENTATION",op=0,sd_prod=Orientation, + + fr = "Definition d'une orientation d'un reseau ou d'une cellule", + ang = "Definition of a cell or lattice orientation", + Symetrie = SIMP (typ=(Plan,PlanX,PlanY,PlanZ),statut='f',fr="Indication d'une operation de symetrie / Plan"), + AngleRotation = SIMP (typ='R',defaut=0.,statut='f',fr="Angle de rotation en degres"), + CentreRotation = SIMP (typ=Point,statut='f',fr='Centre de rotation'), + AxeRotation = SIMP (typ=Vecteur,statut='f',fr="Vecteur de l'axe de rotation") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FORME_POSITIONNEE : Classe de definition d'une forme geometrique positionnee +# La position est definie a l'aide du centre de la forme geometrique, +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FORME_POSITIONNEE = OPER (nom="FORME_POSITIONNEE",op=0,sd_prod=FormePositionnee, + + fr = "Definition d'une forme positionnee", + ang = "Definition of a shape and its position", + Forme = SIMP ( + typ = (Sphere,BoiteRectangulaire,BoiteGenerale,CylindreX,CylindreY,CylindreZ,Cylindre,Cone, + PrismeHexagonal,Tore,Polyedre,Cellule,Cluster), + statut = 'o', + fr = "Forme geometrique de base a positionner"), + PositionCentre = SIMP (typ=Point,statut='o',fr="Coordonnees du centre de la forme geometrique"), + OrientationForme = SIMP (typ=Orientation,statut='f',fr="Orientation de la forme") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_SURFACIQUE : Classe de definition d'une geometrie surfacique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_SURFACIQUE = OPER (nom="GEOMETRIE_SURFACIQUE",op=0,sd_prod=GeometrieSurfacique, + + fr = "Definition d'une geometrie surfacique", + ang = "Definition of a surfacic geometry", + MateriauRemplissage = SIMP (typ=Materiau,statut='o',fr="Materiau de remplissage de la geometrie surfacique"), + Surfaces = NUPL ( + max = '**', + statut = 'o', + fr = "Serie de couples (Surface,Plus ou Moins) definissant les surfaces limites de la geometrie", + elements = ( + SIMP (typ='TXM'), + SIMP (typ='TXM',into=('Plus','Moins')))) + ); + +# simp (typ=(PlanX,PlanY,PlanZ,Plan,CylindreX,CylindreY,CylindreZ,Cylindre,Sphere,Cone,Quadrique)), + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_COMBINATOIRE : Classe de definition d'une geometrie combinatoire +# Ecrasement : Constitution par ecrasements successifs (dans l'ordre des donnees) de la +# Geometrie Initiale, la frontiere externe etant celle de la geometrie initiale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_COMBINATOIRE = OPER (nom="GEOMETRIE_COMBINATOIRE",op=0,sd_prod=GeometrieCombinatoire, + + fr = "Definition d'une geometrie combinatoire", + ang = "Definition of a combinatorial geometry", + GeometriePremierPlan = SIMP (typ=FormePositionnee,statut='o',fr="Geometrie se trouvant au premier plan"), + GeometrieEcrasee = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries ecrasées et surchargées par la GeometriePremierPlan"), + GeometrieUnion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan en gardant les interfaces, les intersections etant des volumes particuliers"), + GeometrieReunion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan pour former un volume unique"), + GeometrieIntersection = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a intersecter avec la GeometriePremierPlan") + ) ; + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CORRESPONDANCE_REPERE_POSITION_RESEAU : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CORRESPONDANCE_REPERE_POSITION_RESEAU = OPER (nom="CORRESPONDANCE_REPERE_POSITION_RESEAU",op=0,sd_prod=CorrespondanceReperePositionReseau, + + fr = "Correspondance entre reperes alphanumeriques et cases d'un reseau", + ang = "Alphanumeric identificators and lattice coordinates", + Positions = NUPL ( max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I',fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I',fr="Seconde Coordonnee entiere de l'assemblage"))) + ); + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESEAU : +# Classe de definition d'un reseau de juxtapositions de cellules ou de reseaux +# Assemblage de cellules ou de reseaux dans une grille rectangulaire ou hexagonale +# Les positions des cellules et des reseaux dans le nouveau reseau sont a fournir sur les mailles +# du reseau sans tenir compte des symetries, +# Le reseau peut etre charge : +# - de maniere uniforme : un seul type de CELLULE ou de RESEAU +# - de maniere complete : a chaque maille doit etre affecte un reseau ou une cellule et optionnellement son +# orientation, l'ordre des donnees dans le plan radial etant celui obtenu en partant de l'element le plus +# bas a gauche, et dans le sens axial ensuite (eventuellement si 3D) +# - de maniere partielle : liste des cellules et reseaux charges et leur position xyz dans le nouveau reseau +# et orientations correspondantes de ces cellules et reseaux +# Des reperes alphanumeriques arbitraires peuvent etre associes a chaque maille du reseau, ce qui permet +# si necessaire de manipuler ces elements du reseau par l'intermediaire de ces symboles (exemple des +# reperes bataille navale des assemblages dans le reseau d'un coeur REP). +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESEAU = OPER (nom="RESEAU",op=0,sd_prod=Reseau, + + fr = "Definition d'un reseau compose de juxtapositions de cellules, de reseaux ou d'assemblages", + en = "Definition of a lattice", + Identificateur = SIMP (typ='TXM',statut='f',fr="Identificateur arbitraire du reseau"), + TypeGeometrie = SIMP (typ='TXM',into=('cartesienne','hexagonale'),defaut='cartesienne',statut='f'), + NbMaillesX = SIMP (typ='I',defaut=17,statut='o',fr="Nbre de mailles sur le premier axe du reseau"), + NbMaillesY = SIMP (typ='I',defaut=17,statut='f',fr="Nbre de mailles sur le second axe du reseau"), + NbMaillesZ = SIMP (typ='I',defaut=1 ,statut='f',fr="Nbre de mailles sur l'axe vertical du reseau"), + PasReseau = SIMP (typ='R',defaut=1.26 ,statut='f',max=2,fr="Pas du reseau en X et Y"), + MateriauRemplissage = SIMP (typ=Materiau,defaut='ModExt',statut='f',fr="Materiau de remplissage du reseau"), + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Complet",into=("Uniforme","Complet","Partiel")), + BlocUniforme = BLOC (condition = "TypeDefinition=='Uniforme'", + ElementsBase = SIMP (typ=(Cellule,Reseau,Cluster,GeometrieCombinatoire,AssemblageCombustibleCharge),statut='o', + fr = "Remplissage uniforme du nouveau reseau par un element particulier"), + OrientationElement = SIMP (typ=Orientation,fr="Orientation de l'element geometrique de base",statut='f')), + BlocComplet = BLOC (condition = "TypeDefinition=='Complet'", + ElementsBase = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='TXM',fr="Sigle ou repere associe a l'element geometrique de base"))), + Chargement = SIMP (typ='TXM',statut='f',max='**', + fr="Liste ordonnee des sigles associes aux elements geometriques charges"), + Regroupement = SIMP (typ='I',statut='f',max='**', + fr="Indices de regroupement des elements en approximation multicellule"), + Reperes = SIMP (typ='TXM',max='**',statut='f',fr="Reperes arbitraires des elements charges"), + ), + BlocPartiel = BLOC (condition = "TypeDefinition=='Partiel'", + Chargement = FACT (max='**', + ElementsPositionnes = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='I',min=2,max=2,fr="Coordonnees i j de l'element geometrique de base"))), + ElementsReperes = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='TXM',fr="Repere associe a l'element geometrique de base"))), + CorrespondanceReperePositions = SIMP (typ=CorrespondanceReperePositionReseau, + statut='f', + fr="Correspondance entre Repere alphanumerique et coordonnees dans le reseau"), + OrientationElement = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements a positionner"), + )), + ZonePeripherique = FACT ( + Epaisseurs = SIMP (typ='R',max='**',statut='f',fr="Liste des epaisseurs des couches peripheriques"), + Materiaux = SIMP (typ=Materiau,max='**',statut='f',fr="Liste des materiaux des couches peripheriques"), + MateriauExterne = SIMP (typ=Materiau,statut='f',fr="Materiau de remplissage de la zone externe du reseau hexagonal")) + ); + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRILLE_ASSEMBLAGE : Classe de definition des grilles composant le squelette des assemblages combustibles +# Caracteristiques technologiques (dimension, materiaux de composition) et positionnement simplifie +# des materiaux dans les canaux de l'assemblage pour dilution homogene a 2D dans le milieu peripherique. +# - Materiaux fournis sous forme de couples (nom de materiau et masse en g) +# - Repartition decrite en donnant pour une liste de materiaux (faisant partie des materiaux +# precedemment indiques) la liste des types de cellules (precedee du mot-cle TypeCellule) et des +# types de materiaux (precedes du mot-cle TypeMateriau) devant etre modifies par la presence des +# grilles +# < liste de MATERIAU >, +# TypeCellule < liste de types de cellule >, +# TypeMateriau < liste de types de materiau > +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRILLE_ASSEMBLAGE = OPER (nom="GRILLE_ASSEMBLAGE",op=0,sd_prod=GrilleAssemblage, + + fr = "Definition d'une grille d'assemblage", + ang = "Definition of an elementary assembly grid", + TypeGrille = SIMP (typ='TXM',defaut='GrilleMelange',statut='f',fr="Type de grille de structure assemblage"), + Hauteur = SIMP (typ='R',defaut=3.3,statut='f',fr="Hauteur de la grille de structure assemblage"), + Largeur = SIMP (typ='R',defaut=21.338,statut='f',fr="Largeur de la grille de structure assemblage"), + MateriauxMasse = NUPL ( + elements = (SIMP (typ=Materiau),SIMP (typ='R')), + max = '**', + statut = 'f', + fr = "Serie de couples (Materiau,masse en g) de composition de la grille"), + Repartition = FACT ( + max = '**', + statut = 'o', + MateriauGrille = SIMP (typ=Materiau,fr="Nom du materiau a repartir",statut='o'), + TypeCellule = SIMP (typ='TXM',max='**',statut='o',fr="Liste des types de cellule ou est reparti le materiau"), + TypeMateriau = SIMP (typ='TXM',max='**',statut='o') ) + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout inferieur d'un assemblage combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieInferieureAssemblageCombustible, + + fr = "Definition de la partie inferieure d'un assemblage combustible", + ang = "Definition of the bottom part of a fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau de l'embout inferieur"), + MasseBouchonInferieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du bouchon inferieur du crayon combustible"), + HauteurBouchonInferieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon inferieur du crayon combustible"), + MateriauBouchonInferieurCrayonCombustible = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon inferieur du crayon combustible"), + MasseEmbout = SIMP (typ='R',statut='o',fr="Masse de l'embout inferieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice de l'embout inferieur"), + LargeurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice de l'embout inferieur"), + TrousPlaqueAdaptatrice = NUPL ( + max = '**', + statut = 'o', + elements = ( SIMP (typ='I',statut='o',fr="Nombre de trous de taille definie ci-apres"), + SIMP (typ='TXM',into=('Rayon','Cotes'),statut='o',fr="Choix de la forme des trous, elliptique ou rectangulaire"), + SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons ou cotes des trous"), + SIMP (typ='TXM',defaut='Hauteur',into=('Hauteur','Epaisseur'),statut='o',fr="Mot-cle au choix"), + SIMP (typ='R',statut='o',fr="Hauteur des trous dans la plaque adaptatrice"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre bouchon combustible et plaque adaptatrice"), + HauteurPied = SIMP (typ='R',statut='o',fr="Hauteur du pied de l'embout inferieur"), + CapuchonRint = SIMP (typ='R',statut='f',fr="Rayon interne du capuchon"), + CapuchonRext = SIMP (typ='R',statut='f',fr="Rayon externe du capuchon"), + HauteurVisEpaulee = SIMP (typ='R',statut='f',fr="Hauteur des vis epaulees des tubes guides"), + MasseVisEpaulee = SIMP (typ='R',statut='f',fr="Masse totale des vis epaulees des tubes guides"), + VisEpauleeRint = SIMP (typ='R',statut='f',fr="Rayon interne d'une vis epaulee"), + VisEpauleeRext = SIMP (typ='R',statut='f',fr="Rayon externe d'une vis epaulee"), + MasseFiltre = SIMP (typ='R',statut='f',fr="Masse du filtre anti-debris"), + MateriauFiltre = SIMP (typ=Materiau, statut='f', defaut='INCONEL',fr="Materiau du filtre anti-debris"), + HauteurCale = SIMP (typ='R',statut='f',fr="Hauteur de la cale dans le crayon combustible"), + MateriauCale = SIMP (typ=Materiau, statut='f', defaut='ACIER',fr="Materiau de la cale dans le crayon combustible"), + RayonPionCentrage = SIMP (typ='R',statut='f',fr="Rayon externe des pions de centrage de la plaque inferieure coeur"), + HauteurPionCentrage = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage de la plaque inferieure coeur"), + HauteurOgivePionCentrage = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage de la plaque inferieure coeur"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage de la plaque inferieure coeur"), + HauteurBouchonTubeGuide = SIMP (typ='R',statut='f',fr="Hauteur des bouchons des tubes guides"), + MateriauBouchonTubeGuide = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des bouchons des tubes guides") + ) ; + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout superieur d'un assemblage combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieSuperieureAssemblageCombustible, + + fr = "Definition de la partie superieure d'un assemblage combustible", + ang = "Definition of the top part of a fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="materiau de l'embout superieur"), + MasseBouchonSuperieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du bouchon superieur du crayon combustible"), + HauteurBouchonSuperieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon superieur du crayon combustible"), + MateriauBouchonSuperieurCrayonCombustible = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon superieur du crayon combustible"), + RessortCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du ressort du crayon combustible"), + HauteurChambreExpansion = SIMP (typ='R',statut='o',fr="Hauteur de la chambre d'expansion"), + MasseEmbout = SIMP (typ='R',statut='o',fr="Masse de l'embout superieur"), + HauteurEmbout = SIMP (typ='R',statut='o',fr="Hauteur de l'embout superieur"), + MasseRessortsEmbout = SIMP (typ='R',statut='o',fr="Masse des ressorts de l'embout superieur"), + MateriauRessortsEmbout = SIMP (typ=Materiau, statut='f', defaut='INCONEL',fr="Materiau des ressorts de l'embout superieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice"), + LargeurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice"), + TrousPlaqueAdaptatrice = NUPL ( + max = '**', + statut = 'o', + elements = ( SIMP (typ='I',), + SIMP (typ='TXM',into=('Rayon','Cotes')), + SIMP (typ='R',min=2,max=2,fr="Rayons mineur et majeur ou Cotes du trou"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur')), + SIMP (typ='R',fr="Hauteur du trou"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre Bouchon combustible et Plaque adaptatrice"), + EpaisseurJupe = SIMP (typ='R',statut='o',fr="Epaisseur de la jupe de l'embout superieur"), + HauteurJupe = SIMP (typ='R',statut='f',fr="Hauteur de la jupe de l'embout superieur"), + RayonPionCentrage = SIMP (typ='R',statut='f',fr="Rayon des pions de centrage superieurs"), + HauteurPionCentrage = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage superieurs"), + HauteurOgivePionCentrage = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage superieurs"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage superieurs"), + RayonInterneManchon = SIMP (typ='R',statut='f',fr="Rayon interne des manchons des tubes guides"), + RayonExterneManchon = SIMP (typ='R',statut='f',fr="Rayon externe des manchons des tubes guides"), + HauteurManchon = SIMP (typ='R',statut='f',fr="Hauteur des manchons des tubes guides"), + MasseManchon = SIMP (typ='R',statut='f',fr="Masse d'un manchon des tubes guides") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_AUTOPROTECTION : Classe de definition des donnees d'autoprotection du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_AUTOPROTECTION = OPER (nom="OPTIONS_AUTOPROTECTION",op=0,sd_prod=OptionsAutoprotection, + + fr = "Definition des donnees d'autoprotection des resonances", + ang = "Definition of resonance self shielding data", + TypeCombustible = SIMP (typ='TXM',max='**',statut='o',fr="Type de combustible auquel s'appliquent ces options d'autoprotection"), + MethodeAutoprotection = SIMP (typ='TXM',into=('SanchezCoste','SousGroupes'),defaut='SanchezCoste',statut='f'), + IsotopesAutoproteges = NUPL ( + max = '**', + elements = (SIMP (typ=Isotope,statut='o',fr="Nom de l'isotope a autoproteger"), + SIMP (typ='TXM',into=('Moyenne','Detaillee','Couronne'),statut='o'), + SIMP (typ='TXM',into=('Materiaux','Cellules'),statut='f',fr="Choix d'autoprotection sur les materiaux ou les cellules"), + SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou de cellules concernes"))), + Irradiations = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection"), + IrradiationsPoison = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection des poisons integres au combustible") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_TYPE : Classe de definition d'un type d'assemblage (ensemble de crayons ou de reseaux quelconques) +# Rajout des structures grilles et embouts (dans le cas des REP) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_TYPE = OPER (nom="ASSEMBLAGE_TYPE",op=0,sd_prod=AssemblageType, + + fr = "Definition d'un assemblage type et des elements associes eventuels", + ang = "Definition of an assembly type and its associated elements", +# TypeGeometrie = SIMP (typ='TXM',into=('Cartesienne','Hexagonale','Generale'),defaut='Cartesienne',statut='f'), +# TypeAbsorbant = SIMP (typ='TXM',defaut='0P',statut='f'), +# Identificateur = SIMP (typ='TXM',defaut='AFA 17 0P 0P',statut='f'), + Geometrie = SIMP (typ=(Cellule,Reseau,GeometrieCombinatoire),statut='o',max='**', + fr="Liste des geometries associees a l'assemblage"), +# Symetrie = SIMP (typ='TXM',into=('1/4','1/8','1/2','PI','PI/2','PI/6','PI/3','2PI/3','SansSymetrie'), +# defaut='SansSymetrie',statut='f'), +# ZoneCalculee = SIMP (typ='TXM',defaut='Entiere', +# into=('Entiere','1/2 N','1/2 S','1/2 E','1/2 O','1/4 N-E','1/4 N-O','1/4 S-E', +# '1/4 S-O','1/8 E-NE','1/8 N-NE','1/8 N-NO', +# '1/8 O-SO','1/8 S-SO','1/8 S-SE','1/8 E-SE', +# '1/6 E','1/6 NE','1/6 NO','1/6 O''1/6 SO','1/6 SE'),statut='f'), + GrillesStructure = NUPL ( + max = '**', + statut = 'f', + elements = ( SIMP (typ=GrilleAssemblage,fr="Type de grille"), + SIMP (typ='R',max='**',fr="Positions axiales du type de grille"))), + PartieInferieure = SIMP (typ=PartieInferieureAssemblageCombustible,statut='f',fr="Type d'embout inferieur"), + PartieSuperieure = SIMP (typ=PartieSuperieureAssemblageCombustible,statut='f',fr="Type d'embout superieur"), + ElementsAssocies = SIMP (typ=(ElementsGrappeCommande,ElementsAbsorbantsFixes,GrappeBouchonAssemblage),max='**',statut='f') +# ZoneCalculee = SIMP (typ='DROITE',min=2,max=2,statut='f',fr="Droites delimitant la zone de calcul"), +# DonneesAutoprotection = SIMP (typ=Autoprotection,statut='f') + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_COMBUSTIBLE_CHARGE : Classe de definition d'un assemblage combustible charge dans un coeur REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_COMBUSTIBLE_CHARGE = OPER (nom="ASSEMBLAGE_COMBUSTIBLE_CHARGE",op=0,sd_prod=AssemblageCombustibleCharge, + + fr = "Definition d'un assemblage combustible charge en reacteur", + ang = "Definition of a core loaded fuel assembly ", + Identificateur = SIMP (typ='TXM',statut='o',fr="Code d'identification de l'assemblage combustible"), + Constructeur = SIMP (typ='TXM',statut='o',into=('FRAMATOME','SIEMENS','ABB','ENUSA','WESTINGHOUSE')), + TypeAssemblage = SIMP (typ=AssemblageType,statut='o'), + CleControle = SIMP (typ='TXM',statut='o'), + Engagement = SIMP (typ='TXM',statut='o'), + NumeroLot = SIMP (typ='I',statut='o'), + EnrichissementTheoriqueU235 = SIMP (typ='R',statut='o'), + EnrichissementTheoriquePu = SIMP (typ='R',statut='f'), + MasseTheoriqueNL = SIMP (typ='R',statut='o'), + MasseInitialeUPu = SIMP (typ='R',statut='o'), + MasseInitialeU232 = SIMP (typ='R',statut='f'), + MasseInitialeU234 = SIMP (typ='R',statut='f'), + MasseInitialeU235 = SIMP (typ='R',statut='f'), + MasseInitialeU236 = SIMP (typ='R',statut='f'), + MasseInitialePu239 = SIMP (typ='R',statut='f'), + MasseInitialePu240 = SIMP (typ='R',statut='f'), + MasseInitialePu241 = SIMP (typ='R',statut='f'), + MasseInitialePu242 = SIMP (typ='R',statut='f'), + MasseInitialeAm241 = SIMP (typ='R',statut='f'), + AbsorbantFixe = SIMP (typ='TXM',statut='f'), + Campagnes = NUPL ( + max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur de la campagne"),SIMP (typ='TXM',fr="Etat de l'assemblage"))), + BibliothequeNeutronique = SIMP (typ='TXM',statut='f',fr="Repertoire des Bibliothèques neutroniques associees") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENT_BARRE : Classe de définition d'une barre element d'un assemblage +# Definition des barres des grappes de commande (barre et gaine, et composants axiaux) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENT_BARRE = OPER (nom="ELEMENT_BARRE",op=0,sd_prod=ElementBarre, + + fr = "Définition d'une barre element d'un assemblage", + en = "Definition of an assembly rod element", + MateriauPartieInferieure = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie inferieure de la barre"), + MateriauPartieSuperieure = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie superieure de la barre"), + HauteurBarre = SIMP (typ='R',statut='o',fr="Hauteur de la barre"), + HauteurPartieInferieure = SIMP (typ='R',statut='f',fr="Hauteur de la partie inferieure de la barre"), + HauteurPartieSuperieure = SIMP (typ='R',statut='f',fr="Hauteur de la partie superieure de la barre"), + RayonInternePartieInferieure = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie inferieure de la barre"), + RayonInternePartieSuperieure = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie superieure de la barre"), + RayonExternePartieInferieure = SIMP (typ='R',statut='o',fr="Rayon Externe de la partie inferieure de la barre"), + RayonExternePartieSuperieure = SIMP (typ='R',statut='f',fr="Rayon Externe de la partie superieure de la barre"), + MasseRessort = SIMP (typ='R',statut='o',fr="Masse du ressort de la barre"), + MateriauRessort = SIMP (typ=Materiau,statut='o',fr="Materiau du ressort de la barre"), + HauteurRessort = SIMP (typ='R',statut='o',fr="Hauteur du ressort de la barre"), + HauteurBouchonInferieur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon inferieur de la barre"), + HauteurBouchonSuperieur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon superieur de la barre"), + RayonBouchonInferieur = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon inferieur de la barre"), + RayonBouchonSuperieur = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon superieur de la barre"), + MateriauGaine = SIMP (typ=Materiau,defaut='ACIER',statut='o',fr="Materiau de la gaine externe de la barre"), + RayonInterneGaine = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Interne de la gaine externe de la barre"), + RayonExterneGaine = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Externe de la gaine externe de la barre") + ) ; +#---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_GRAPPE_COMMANDE : Classe de définition des éléments des grappes de commande +# Association avec les différents types de barres absorbantes +# Description simplifiée de l'araignée et du bouchon des barres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_GRAPPE_COMMANDE = OPER (nom="ELEMENTS_GRAPPE_COMMANDE",op=0,sd_prod=ElementsGrappeCommande, + + fr = "Définition des éléments des grappes de commande", + en = "Definition of control rod cluster components", + ElementsBarre = SIMP (typ= ElementBarre, max='**',statut='f',fr="Liste des barres absorbantes associees"), + HauteurPasInsertion = SIMP (typ='R',defaut=1.5875, statut='f'), + HauteurInsertionMax = SIMP (typ='R',defaut=300., statut='f'), + NbPasInsertion = SIMP (typ='I',defaut=0, statut='f'), + HauteurAraignee16P = SIMP (typ='R',defaut=0., statut='f'), + HauteurAraignee4M = SIMP (typ='R',defaut=0., statut='f'), + HauteurAraignee4G = SIMP (typ='R',defaut=0., statut='f'), + HauteurPommeau = SIMP (typ='R',defaut=0., statut='f'), + RayonPommeau = SIMP (typ='R',defaut=0., statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ABSORBANTS_REP : Classe de definition des elements des grappes d'absorbants fixes +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_ABSORBANTS_FIXES = OPER (nom="ELEMENTS_ABSORBANTS_FIXES",op=0,sd_prod=ElementsAbsorbantsFixes, + + fr = "Definition des elements des grappes d'absorbants fixes", + ang = "Definition of non movable absorber control rod cluster elements", +# Limitation a 12 caracteres +# HBouchInfPyrex = SIMP (typ='R',statut='f'), +# RBouchInfPyrex = SIMP (typ='R',statut='f'), +# HZoneVidePyrex = SIMP (typ='R',statut='f'), +# HBouchSupPyrex = SIMP (typ='R',statut='f'), +# RBouchSupPyrex = SIMP (typ='R',statut='f'), +# MatBouchonPyrex = SIMP (typ=Materiau,statut='f') + CrayonPyrexHauteurBouchonInferieur = SIMP (typ='R',statut='f'), + CrayonPyrexRayonBouchonInferieur = SIMP (typ='R',statut='f'), + CrayonPyrexHauteurZoneVide = SIMP (typ='R',statut='f'), + CrayonPyrexHauteurBouchonSuperieur = SIMP (typ='R',statut='f'), + CrayonPyrexRayonBouchonSuperieur = SIMP (typ='R',statut='f'), + CrayonPyrexMateriauBouchon = SIMP (typ=Materiau,statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRAPPE_BOUCHON_ASSEMBLAGE_REP : Classe de definition d'une grappe bouchon +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRAPPE_BOUCHON_ASSEMBLAGE = OPER (nom="GRAPPE_BOUCHON_ASSEMBLAGE",op=0,sd_prod=GrappeBouchonAssemblage, + + fr = "Definition d'une grappe bouchon d'assemblage combustible", + ang = "Definition of ", + HauteurBouchonPartieBasse = SIMP (typ='R',statut='f'), + RayonBouchonPartieBasse = SIMP (typ='R',statut='f'), + HauteurBouchonPartieIntermediaire1 = SIMP (typ='R',statut='f'), + RayonBouchonPartieIntermediaire1 = SIMP (typ='R',statut='f'), + HauteurBouchonPartieIntermediaire2 = SIMP (typ='R',statut='f'), + RayonBouchonPartieIntermediaire2 = SIMP (typ='R',statut='f'), + HauteurBouchonRegionSousPlaque = SIMP (typ='R',statut='f'), + HauteurBouchonRegionSurPlaque = SIMP (typ='R',statut='f'), + RayonBouchonRegionPlaque = SIMP (typ='R',statut='f'), + HauteurSupport = SIMP (typ='R',statut='f'), + MasseGrappe = SIMP (typ='R',statut='f'), + Materiau = SIMP (typ=Materiau,statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ASSEMBLAGE : Classe de définition des éléments associes a l'assemblage combustibe REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class ReflexionIsotrope (TObjet):pass +#ELEMENTS_ASSEMBLAGE = OPER (nom="ELEMENTS_ASSEMBLAGE",op=0,sd_prod=ElementsAssemblage, +# +# fr = "Definition des elements associes a l'assemblage", +# ang = "Definition of the fuel assembly associated elements", +# GrappeBouchon = SIMP (typ=GrappeBouchonAssemblage,statut='o'), +# CrayonsAbsorbants = SIMP (typ=ElementsAbsorbants,statut='o'), +# GrappesCommande = SIMP (typ=ElementsGrappeCommande,statut='o') +# ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe SYSTEME_UNITES_MESURE : Classe de definition du systeme d'unites pour l'expression des donnees +# Sauf indication contraire dans les attributs des classes, les unites utilisees sont definies +# dans la classe ci-dessous +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SYSTEME_UNITES_MESURE = OPER (nom="SYSTEME_UNITES_MESURE",op=0,sd_prod=SystemeUnitesMesure, + + fr = "Definition du systeme d'unites pour l'expression des donnees", + ang = "Definition of data unit system", + Longueur = SIMP (typ='TXM',statut='o',defaut='cm'), + Masse = SIMP (typ='TXM',statut='o',defaut='g'), + Temps = SIMP (typ='TXM',statut='o',defaut='s'), + Irradiation = SIMP (typ='TXM',statut='o',defaut='MWj/t'), + Fluence = SIMP (typ='TXM',statut='o',defaut='n/kb'), + SectionEfficaceMicroscopique = SIMP (typ='TXM',statut='o',defaut='barn'), + SectionEfficaceMacroscopique = SIMP (typ='TXM',statut='o',defaut='cm-1'), + MasseVolumique = SIMP (typ='TXM',statut='o',defaut='g/cm3'), + Concentration = SIMP (typ='TXM',statut='o',defaut='E24*atome/cm3'), + Temperature = SIMP (typ='TXM',statut='o',defaut='C'), + ProportionMateriau = SIMP (typ='R',statut='o',defaut=0.01), + Taux = SIMP (typ='R',statut='o',defaut=0.01), + Enrichissement = SIMP (typ='R',statut='o',defaut=0.01), + Pression = SIMP (typ='TXM',statut='o',defaut='bar') ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classes CONDITION_LIMITE elementaires : Classes de definition de Conditions limites elementaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VIDE = OPER (nom="VIDE",op=0,sd_prod=Vide, + fr = "Condition aux limites de vide", + ang= "Void boundary condition" ) ; + +REFLEXION_ISOTROPE = OPER (nom="REFLEXION_ISOTROPE",op=0,sd_prod=ReflexionIsotrope, + fr = "Condition aux limites de reflexion isotrope", + ang= "Isotropic Reflexion boundary condition" ) ; + +REFLEXION_SPECULAIRE = OPER (nom="REFLEXION_SPECULAIRE",op=0,sd_prod=ReflexionSpeculaire, + fr = "Condition aux limites de reflexion speculaire", + ang= "Specular Reflexion boundary condition" ) ; +ALBEDO = OPER (nom="ALBEDO",op=0,sd_prod=Albedo, + fr = "Condition aux limites d'albedo", + ang= "Albedo boundary condition", + albedo = SIMP (typ='R',statut='o',max='**') ) ; +TRANSLATION = OPER (nom="TRANSLATION",op=0,sd_prod=Translation, + fr = "Condition aux limites de translation", + ang = "Translation boundary condition", + Vecteur = SIMP (typ=Vecteur,statut='o') ) ; +ROTATION = OPER (nom="ROTATION",op=0,sd_prod=Rotation, + fr = "Condition aux limites de rotation", + ang = "Rotational boundary condition", + Centre = SIMP (typ=Point,statut='o'), + Angle = SIMP (typ='R',statut='o',defaut=90.) ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_SPECIALE : Classe de definition de Conditions limites sur les surfaces elementaires de la geometrie +# modifiant la CL generale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_SPECIALE = OPER (nom="CONDITION_LIMITE_SPECIALE",op=0,sd_prod=ConditionLimiteSpeciale, + + fr = "Condition limite particuliere qui sera plaquee sur la geometrie", + ang = "Special boundary condition added to the geometry", + Type = SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation),statut='o'), + ZonesApplication = SIMP ( typ=(Segment,ArcCercle,Conique),max='**',statut='o', + fr="Liste des segments ou surfaces sur lesquels porte la condition limite") + ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_GENERALE : Classe de definition des conditions limites de l'objet geometrique complet +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_GENERALE = OPER (nom="CONDITION_LIMITE_GENERALE",op=0,sd_prod=ConditionLimiteGenerale, + + fr = "Condition limite a la surface externe de la geometrie complete", + ang = "Boundary condition for the complete geometry", + ZoneCalculee = NUPL (statut='f',min=2,max=2,fr="Droites ou plans delimitant la zone de calcul", + elements = (SIMP (typ=(Droite,Plan)), SIMP (typ='TXM',into=('Plus','Moins')))), + ConditionParDefaut = SIMP (typ=(Vide, ReflexionIsotrope, ReflexionSpeculaire, Albedo), + defaut=ReflexionIsotrope, + statut='f', + fr="Condition limite par defaut"), + ConditionsParticulieres = NUPL ( + fr = "Conditions particulieres modifiant localement la condition limite par defaut", + max = '**', + statut = 'f', + elements = (SIMP (typ='TXM',into=('X-','X+','Y-','Y+','Z-','Z+','R+','X','Y','Z')), + SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation)))), + ConditionsSupplementaires = SIMP ( + typ = ConditionLimiteSpeciale, + statut = 'f', + max = '**', + fr = "Conditions limites non exprimables avec les donnees precedentes") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="POSITION_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PositionAssemblageCombustible, + + fr = "Position des assemblages combustibles", + ang = "Position of fuel assemblies", + NbAssemblagesCombustibles = SIMP (typ='I',statut='o',defaut=157), + regles=(UN_PARMI('PositionReseau', 'Positions'),), + PositionReseau = SIMP (typ=CorrespondanceReperePositionReseau,statut="f"), + Positions = NUPL ( max='**',statut='f', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere de l'assemblage"))) + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_INSTRUMENTATION : Classe de definition de la position des assemblages instrumentes dans un REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_INSTRUMENTATION_INTERNE = OPER (nom="POSITION_INSTRUMENTATION_INTERNE",op=0,sd_prod=PositionInstrumentationInterne, + + fr = "Definition de la position des assemblages instrumentes", + ang = "Definition of neutron flux detector position", +# TypePalier = SIMP (typ='TXM',max='**',statut='o'), + NbAssemblagesInstrumentes = SIMP (typ='I',statut='o'), + Positions = NUPL ( + max = '**', + statut = 'o', + elements = (SIMP (typ='TXM',fr= "Type d'instrumentation"), + SIMP (typ='I',min=2,max=2,fr= "Coordonnees entieres de l'assemblage instrumente dans le reseau"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_GRAPPES_COMMANDE : Classe de definition des grappes de commande pour un type de schema de grappe +# Donnees de la position (coordonnees entieres en xy), du type de grappe et du groupe d'appartenance +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_GRAPPES_COMMANDE = OPER (nom="POSITION_GRAPPES_COMMANDE",op=0,sd_prod=PositionGrappesCommande, + + fr = "Definition des grappes de commande pour un schema d'implantation particulier", + ang = "Definition of control rod cluster position ant type", + TypeSchema = SIMP (typ='TXM',statut='o'), + NbTotalGrappes = SIMP (typ='I',statut='o'), + PositionsEtType = NUPL (max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Nom du groupe de grappes"), + SIMP (typ='I',fr="Nombre de grappes du groupe"), + SIMP (typ='TXM',fr="Type de grappes"), + SIMP (typ='I',max='**',fr="Coordonnees des grappes"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe STRUCTURES_INTERNES_REACTEUR : Classe de definition des structures internes du coeur du reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +STRUCTURES_INTERNES_REACTEUR = OPER (nom="STRUCTURES_INTERNES_REACTEUR",op=0,sd_prod=StructuresInternesReacteur, + + fr = "Definition des structures internes du coeur", + ang = "Definition of core internal structures", + PlaqueInferieureCoeur = FACT ( + Epaisseur = SIMP (typ='R',statut='o', fr="Epaisseur de la plaque inferieure du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque inferieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayon ou cotes des trous"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou")))), + PlaqueSuperieureCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur de la plaque superieure du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque superieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayon ou cotes des trous"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou")))), + CloisonnementCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur du cloisonnement du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER', fr="Materiau du cloisonnement du coeur"), + DimensionsInterieures = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre d'assemblages dans la rangee"), + SIMP (typ='TXM',into=('Assemblages','Assemblies'),fr="Mot-cle suivant le nombre d'assemblages"), + SIMP (typ='TXM',into=('Largeur','Cote'), fr="Mot-cle precedant la largeur interieure du cloisonnement"), + SIMP (typ='R', fr="Largeur interieure du cloisonnement"), + SIMP (typ='TXM',into=('NbJeuCloisonGrille','NbJeu'),fr="Mot-cle precedant le nombre de jeux CloisonGrille"), + SIMP (typ='I', fr="Nombre de jeux CloisonGrille"))), + TrousDepressurisation = NUPL (elements=(SIMP (typ='I',fr="Nombre de trous de depressurisation"), + SIMP (typ='TXM',into=('Rayon','Radius'),fr="Mot-cle precedant la valeur du rayon des trous"), + SIMP (typ='R',fr="Rayon des trous de depressurisation"))), + TemperatureMoyenne = SIMP (typ='R',fr="Temperature Moyenne du cloisonnement")), + RenfortsInternes = FACT ( + Nombre = SIMP (typ='I',max='**'), + Epaisseur = SIMP (typ='R',max='**'), + Materiau = SIMP (typ=Materiau,max='**',statut='f',defaut='ACIER'), + NbTrousDepressurisation = SIMP (typ='I',max='**'), + RayonsTrousDepressurisation = SIMP (typ='R',max='**'), + TemperatureMoyenne = SIMP (typ='R'),statut='f'), + EnveloppeVirole = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + TemperatureMoyenne = SIMP (typ='R')), + Boucliers = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + Secteurs = NUPL (max='**',elements=(SIMP (typ='R'),SIMP (typ='R'))), + TemperatureMoyenne = SIMP (typ='R')), + Cuve = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + TemperatureMoyenne = SIMP (typ='R')) ) ; # Fin STRUCTURES_INTERNES_REACTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARACTERISTIQUES_PALIER : Classe de definition des donnees generales d'un type de palier de reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARACTERISTIQUES_PALIER = OPER (nom="CARACTERISTIQUES_PALIER",op=0,sd_prod=CaracteristiquesPalier, + + fr = "Definition des donnees generales d'un type de palier de reacteur", + ang = "Definition of general data for a type of nuclear reactor", + TypePalier = SIMP (typ='TXM',statut='o',fr="Identificateur du type de palier"), + PositionCombustible = SIMP (typ=PositionAssemblageCombustible,statut='o'), + PositionDetecteur = SIMP (typ=PositionInstrumentationInterne,statut='o'), + StructuresInternes = SIMP (typ=StructuresInternesReacteur,statut='o'), + NbBouclesPrimaires = SIMP (typ='I',statut='o',defaut=3,fr="Nombre de boucles primaires"), + NbTubesParGV = SIMP (typ='I',statut='f',fr="Nombre de tubes par GV") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SITE_NUCLEAIRE_EDF : Classe de definition d'un site nucleaire EDF (Tranches, paliers et numero comptable) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SITE_NUCLEAIRE = OPER (nom="SITE_NUCLEAIRE",op=0,sd_prod=SiteNucleaire, + + fr = "Definition d'un site nucleaire EDF", + ang = "Definition of a nuclear power plant site", + NomSite = SIMP (typ='TXM',statut='o',fr="Nom du site nucleaire",defaut='TRICASTIN'), + Tranches = NUPL (max='**',elements=( SIMP (typ='I' ,statut='o',fr="Numero de la tranche nucleaire"), + SIMP (typ='TXM',statut='o',fr="Trigramme de la tranche nucleaire"), + SIMP (typ=CaracteristiquesPalier,statut='o',fr="Type de palier"), + SIMP (typ='I' ,statut='o',fr="Numero comptable de la tranche"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ESPACE_VARIATIONS : Classe de definition des parametres de contre-reactions neutroniques et de leurs variations +# Donnees definissant l'espace des parametres dont dependent les bibliotheques +# neutroniques et la discretisation de leur espace de variation. +# Definition de la methode de balayage de cet espace (Suite d'options complementaires) : +# 1) ParametresIndependants : Calculs independants en donnant successivement a chacun +# des parametres leurs valeurs individuelles +# 2) CoinsDomaine : Rajout des calculs aux limites extremes du domaine +# 3) BordsDomaine : Rajout des calculs aux bords du domaine +# 4) Grilles2D : Rajout des calculs sur les grilles 2D +# passant par un point de reference +# 5) CasParticuliers : Rajout de points specifiques de calcul +# 6) EspaceComplet : Balayage complet du domaine des parametres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ESPACE_VARIATIONS = OPER (nom="ESPACE_VARIATIONS",op=0,sd_prod=EspaceVariations, + + fr = "Definition de l'espace de variation des parametres neutroniques", + ang = "Definition of feedback or variable parameters", + Variations = NUPL (max='**',statut='f', + elements=( SIMP (typ='TXM',fr="Nom du parametre a faire varier"), + SIMP (typ='R',max='**',fr="Valeurs discretes de variation du parametre"))), + MethodeBalayage = SIMP ( + typ = 'TXM', + max = '**', + defaut = 'ParametresIndependants', + into = ('ParametresIndependants','CoinsDomaine','BordsDomaine','Grilles2D','CasParticuliers','EspaceComplet'), + statut = 'f'), + TypeVariation = SIMP (typ='TXM',defaut='absolu',into=('relatif','absolu'),statut='f'), + CasParticuliers = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour les cas particuliers", + elements=(SIMP (typ='TXM'),SIMP (typ='R'))), + CasReference = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour le cas de reference", + elements=(SIMP (typ='TXM'),SIMP (typ='R'))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_EVOLUTION_IRRADIATION : Classe de definition des valeurs d'irradiation intervenant dans les phases de calcul et d'edition +# Pour le moment, on ne considere que l'Evolution, les Editions, l'Autoprotection et les ContreReactions +# ou les irradiations de reprise (Normale, Gs et Beta pour EDF). +# Donnees consistant pour chaque phase d'une liste d'irradiations en MWj/t +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_EVOLUTION_IRRADIATION = OPER (nom="DONNEES_EVOLUTION_IRRADIATION",op=0,sd_prod=DonneesEvolutionIrradiation, + + fr = "Definition des donnees du calcul d'evolution et des irradiations de reprise", + ang = "Definition of depletion calculation data and burnup restart calculations", + Unite = SIMP (typ='TXM',defaut='MWj/t',into=('MWj/t','Jours'),statut='f',fr="Unite pour les irradiations"), + Minimum = SIMP (typ='R',defaut=0.,statut='f',fr="Irradiation du debut de calcul"), + Maximum = SIMP (typ='R',defaut=100000.,statut='f',fr="Irradiation maximum des calculs"), + Evolution = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations du calcul d'evolution"), + Editions = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations ou se font les editions"), + ContreReactions = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise de contre-reactions"), + ReprisesGs = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise GS EDF"), + ReprisesBeta = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise BETA EDF"), + Reprises = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise"), + Refroidissement = FACT ( + Instants = SIMP (typ='R',max='**',fr="Irradiations de debut de refroidissement du combustible"), + Jours = SIMP (typ=('R','I'),max='**',fr="Nombre de jours de refroidissement correspondant aux instants de refroidissement")), + InsertionGrappe = NUPL (max='**',statut='f',elements=( + SIMP (typ='TXM',fr="Type de grappe inseree"), + SIMP (typ=('R','I'), min=2,max=2,fr="Irradiations de Debut et Fin d'insertion de la grappe"), + SIMP (typ='R',fr="Cote axiale de la limite inferieure de la grappe inseree"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_FONCTIONNEMENT : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_FONCTIONNEMENT_MOYENNES = OPER (nom="CONDITIONS_FONCTIONNEMENT_MOYENNES",op=0,sd_prod=ConditionsFonctionnementMoyennes, + + fr = "Definition des conditions de fonctionnement pour une campagne donnee", + ang = "Definition of a campaign operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',statut='f',fr="Identificateur de la campagne"), + PuissanceElectriqueMW = SIMP (typ='R',statut='o',defaut=900.,fr="Puissance electrique du reacteur en MW"), + PuissanceThermiqueMWth = SIMP (typ='R',statut='o',defaut=2775.,fr="Puissance thermique du reacteur en MWth"), + PressionPrimaireEntreeBar = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars a l'entree du coeur actif"), + PressionPrimaireSortieBar = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars en sortie du coeur actif"), + TitreMoyenBorePpm = SIMP (typ='R',statut='o',defaut=500.,fr="Titre moyen en ppm en bore dans le moderateur"), + TmodEntreePnulleC = SIMP (typ='R',statut='o',defaut=286.0,fr="Temperature en C du moderateur a puissance nulle a l'entree du coeur"), + TmodEntreePnomC = SIMP (typ='R',statut='o',defaut=286.4,fr="Temperature en C du moderateur a puissance nominale a l'entree du coeur"), + DeltaTmodEntreeSortiePnomC = SIMP (typ='R',statut='o',defaut=39.0,fr="Ecart en C de temperature entre entree et sortie du coeur a puissance nominale"), + TmodMoyenneCoeurPnomC = SIMP (typ='R',statut='o',defaut=305.3,fr="Temperature moyenne en C du moderateur dans le coeur actif"), + TmodMoyenneCuvePnomC = SIMP (typ='R',statut='f',defaut=305.0,fr="Temperature moyenne en C du moderateur dans la cuve"), + TcomMoyennePnomC = SIMP (typ='R',statut='f',defaut=600.0,fr="Temperature moyenne en C du combustible dans le coeur"), + TmodMoyenneReflecteurPnomC = SIMP (typ='R',statut='f',defaut=296.0,fr="Temperature moyenne en C du reflecteur radial"), + PositionGrappeHaute = SIMP (typ='I',statut='f',defaut=225,fr="Position haute des grappes, en nombre de pas extraits"), + DebitPrimaireConceptionM3_h = SIMP (typ='R',statut='f',defaut=70500.,fr="Debit primaire de conception dans le coeur en m3/h"), + ProportionDebitCoeurCuve = SIMP (typ='R',statut='f',defaut=0.97,fr="Rapport du debit coeur / debit cuve"), + NbTubesGVBouches = SIMP (typ='I',statut='f',defaut=0,fr="Nombre de tubes GV bouches"), + SectionEcoulementCoeur = SIMP (typ='R',statut='f',defaut=3.87,fr="Section d'ecoulement du moderateur dans le coeur en m2") + ) ; # Fin CONDITIONS_FONCTIONNEMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_CHARGEMENT_COEUR : Classe de definition du plan de chargement combustible d'un coeur pour une campagne donnee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#PLAN_CHARGEMENT_COEUR = OPER (nom="PLAN_CHARGEMENT_COEUR",op=0,sd_prod=PlanChargementCoeur, +# +# fr = "Definition du plan de chargement combustible d'un coeur", +# ang = "Definition of a fuel loading core map ", +# IdentificateurCampagne = SIMP (typ='TXM',statut='o'), +# TypePlan = SIMP (typ='TXM',into=('STD','FR','FF','FFG'), statut='f'), +# AssemblagePosition = NUPL ( +# max = '**', +# elements = ( SIMP (typ=AssemblageCombustibleCharge,fr="Identificateur de l'assemblage"), +# SIMP (typ='TXM',statut='f',fr="Repere alphanumerique de la Position dans le coeur"), +# SIMP (typ='I',min=2,max=2,statut='f',fr="Coordonnees ij dans le plan radial du reseau du coeur"))) +# ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DATES_CLES_CAMPAGNE : Classe de definition des dates cles d'une campagne et de sa longueur +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DATES_CLES_CAMPAGNE = OPER (nom="DATES_CLES_CAMPAGNE",op=0,sd_prod=DateClesCampagne, + + fr = "Definition des dates cles d'une campagne et de sa longueur", + ang = "Definition of the campaign dates and length", + IdentificateurCampagne = SIMP (typ='TXM',statut='o',defaut='CZ101'), + DateDDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de debut de campagne"), + DatePnom = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A d'atteinte de la puissance nominale"), + DateFDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de fin de campagne"), + LongueurNaturelleTheoriqueMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle theorique calculee de la campagne en MWj/t"), + LongueurNaturelleRecaleeMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle recalee calculee de la campagne en MWj/t"), + LongueurNaturelleExperimentaleMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle mesuree de la campagne en MWj/t"), + LongueurAnticipationJepp = SIMP (typ='R',statut='f',fr="Nombre de JEPP d'anticipation"), + LongueurProlongationJepp = SIMP (typ='R',statut='f',fr="Nombre de JEPP de prolongation"), + LongueurTotaleExperimentaleMWj_t = SIMP (typ='R',statut='f',fr="Longueur totale de la campagne en MWj/t") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODES : Classe de definition des options generales et du type de calcul demande +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODES = OPER (nom="OPTIONS_CODES",op=0,sd_prod=OptionsCodes, + fr = "Definition des options des codes de calcul", + ang = "Definition of calculation code options", +# TypeCalcul = SIMP (typ='TXM',defaut='Evolution',statut='f'), +# CodeCalcul = SIMP (typ='TXM',defaut='SUNSET',statut='f'), +# ConditionLimite = SIMP (typ=ConditionLimiteGenerale,statut='o'), + OptionsCodeReseau = FACT ( + OptionMulticellule = SIMP (typ='TXM',defaut='ROTH',statut='f',into=('ROTH','MULTICELLULE'),fr="Option du calcul multicellule"), + OptionPij = SIMP (typ='TXM',defaut='&UP0 &ROTH',statut='f',into=('&UP0 &ROTH','&UP0 &HETE','&UP1 &HETE'),fr="Option du calcul des Pij"), + ParametresIntegration = SIMP (typ='TXM',defaut='MAIL_INT 7 7 7 7',statut='f',fr="Donnees du maillage d'integration en heterogene"), + ProportionNoyauxParDefaut = SIMP (typ='R',defaut=1.E-12,statut='f',fr="Valeur initiale des concentrations des noyaux lourds non definis"), + OptionLaplacienB2 = SIMP (typ='TXM',defaut='CRITIQUE',statut='f',into=('CRITIQUE','NUL','IMPOSE'),fr="Option du calcul des fuites homogenes"), + LaplacienB2 = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur initiale du laplacien du calcul des fuites"), + OrdreAnisotropie = SIMP (typ='I',defaut=1,statut='f',fr="Ordre d'anisotropie des sections de transfert"), + Autoprotection = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Calcul d'autoprotection ou non"), + DonneesAutoprotection = SIMP (typ=OptionsAutoprotection,statut='f',max='**',fr="Nom des objets decrivant les isotopes a autoproteger et les options associees"), + RecalculAutoprotection = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande ou non de recalcul de l'autoprotection"), + Equivalence = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande ou non de calcul d'equivalence"), + NbGroupesEquivalence = SIMP (typ='I',max='**',defaut=(2,6,16),statut='f',fr="Liste des nombres de groupes des calculs d'quivalence"), + EditionAssemblage = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees sur l'ensemble du domaine"), + EditionCellule = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees par cellule"), + EditionFluxDetaille = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des flux moyens sur l'ensemble du domaine sur la maillage multigroupe detaille"), + EditionMilieu = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des compositions isotopiques detaillees sur tous les milieux de calcul"), + EditionTrimaran = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces pour TRIPOLI multigroupe"), + SpectreNeutrons = SIMP (typ='TXM',defaut='Prompt',statut='f',into=('Prompt','Retarde'),fr="Type de spectre de neutrons pour le calcul de transport"), + ListeIsotopesEdites = SIMP (typ='TXM',statut='f',max='**',fr="Liste des initiales des symboles des isotopes a editer"), + FichierBickley = SIMP (typ='TXM',statut='f',fr="Nom du fichier des fonctions Bickley"), + EditionIsotopeHomogene = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition de constitution d'isotopes homogeneises sous forme APOLLIB"), + RepertoireHomoge = SIMP (typ='TXM',statut='f',fr="Nom du repertoire du fichier des isotopes homogenes sous forme APOLLIB"), + FichierHomoge = SIMP (typ='TXM',statut='f',fr="Nom du fichier des isotopes homogenes sous forme APOLLIB"), + ExecutableAPOLLO = NUPL ( + elements = ( SIMP (typ='TXM',fr="Systeme d'exploitation"),SIMP (typ='TXM',fr="Nom du fichier executable")), + statut = 'f'), + ProceduresApollo2 = FACT ( + OptionsListing = SIMP (typ='TXM',statut='f'), + Evolution = SIMP (typ='TXM',statut='f'), + Reprise = SIMP (typ='TXM',statut='f'), + Equivalence = SIMP (typ='TXM',statut='f'), + EditionCellule = SIMP (typ='TXM',statut='f'), + EditionHomoge = SIMP (typ='TXM',statut='f')), + ProceduresSunset = FACT ( + Evolution = SIMP (typ='TXM',statut='f'), + Reprise = SIMP (typ='TXM',statut='f'), + Equivalence = SIMP (typ='TXM',statut='f'), + EditionCellule = SIMP (typ='TXM',statut='f'), + EditionHomoge = SIMP (typ='TXM',statut='f'))), +# -------------------------------------------------------------- + OptionsCodeCoeur = FACT ( + ReactiviteVisee = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur en pcm de la reactivite visee en calcul critique"), + EfficaciteBoreEstimee = SIMP (typ='R',defaut=-6.,statut='f',fr="Valeur estimee en pcm/ppm de l'efficacite du bore"), + TitreBoreInitiale = SIMP (typ='R',defaut=600.,statut='f',fr="Valeur estimee en ppm du titre en bore du moderateur"), + ApproximationTransport = SIMP (typ='TXM',defaut='SPn',statut='f',into=('SPn','Sn')), + BlocSPn = BLOC (condition = "ApproximationTransport=='SPn'", + OrdreApproximation = SIMP (typ='I',defaut=1,statut='f',fr="Ordre n impair de la methode SPn"), + ElementFini = SIMP (typ='TXM',defaut='RTN0',statut='f',into=('RTN0','RTN1'),fr="Type d'element fini"), + MaxIterationsDiffusion = SIMP (typ='I',defaut=1,into=(1,2,3,4,5),statut='f',fr="Nombre maximal d'iterations de diffusion")), + BlocSn = BLOC (condition = "ApproximationTransport=='Sn'", + OrdreApproximation = SIMP (typ='I',defaut=4,statut='f',fr="Ordre n pair de la methode Sn"), + ElementFini = SIMP (typ='TXM',defaut='RTN',statut='f',into=('RTN','BDM'),fr="Type d'element fini"), + Acceleration = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Acceleration par la diffusion"), + MaxIterationsDiffusion = SIMP (typ='I',defaut=20,statut='f',fr="Nombre maximal d'iterations de calcul de diffusion") ), + PrecisionValeurPropre = SIMP (typ='R',defaut=1.E-5,statut='f',fr="Precision sur la valeur propre"), + PrecisionFlux = SIMP (typ='R',defaut=1.E-3,statut='f',fr="Precision sur le flux"), + PrecisionResolutionMultigroupe = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision de la resolution multigroupe"), + PrecisionIterationTermeDiffusion = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision des iterations sur le terme de diffusion"), + MaxIterationsEnEnergie = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations pour la resolution Gauss Seidel en energie"), + MaxIterationsTermeDiffusion = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations sur le terme de diffusion"), + MaxIterationsDecompositionDomaine = SIMP (typ='I',defaut=1,statut='f',fr="Nombre d'iterations de decomposition de domaine"), + MaxIterationsKeffAvantCR = SIMP (typ='I',defaut=1,statut='f',fr="Nombre de calculs de keff avant appel aux contre-reactions"), + GestionAutomatiquePasCinetique = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),statut='f',fr="Gestion automatique du pas de temps du calcul cinetique"), + PrecisionIterationsFluxPrecurseurs = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision sur les iterations Flux Precurseurs"), + PrecisionParametreGestionAutomatique = SIMP (typ='R',defaut=0.0008,statut='f',fr="Precision sur les iterations Flux Precurseurs"), + MaxIterationsFluxPrecurseurs = SIMP (typ='I',defaut=50,statut='f',fr="Nombre maximal d'iterations Flux Precurseurs"), + ThetaSchemaCinetique = SIMP (typ='R',defaut=0.5,statut='f',fr="Valeur du parametre theta du schema cinetique") ), +# ------------------------------------------------------------------------------------------------------------------------------------ + OptionsThermiqueThermohydraulique = FACT ( + CoefficientEchangeGaineFluide = SIMP (typ='TXM',defaut='DITTUS_BOELTER',into=('FLICA','DITTUS_BOELTER'),statut='f', + fr="Option du Coefficient d'échange gaine-fluide (flux < au flux critique)"), + CoefficientEchangeGaineFluideEbullition = SIMP (typ='TXM',defaut='BST',into=('BST','TONG'),statut='f', + fr="Option du Coefficient d'échange gaine-fluide (Ebullition en film)"), + CoefficientEchangeJeuPastilleGaineConstantTransitoire = SIMP (typ='TXM',defaut='Non',into=('Non','Oui'),statut='f', + fr="Option de constance des coefficients d'échange gap"), + CoefficientEchangeJeuPastilleGaine = SIMP (typ='TXM',defaut='HGAP_88',into=('EJECTION','TUO2','PLIN_BU','FIXE','HGAP_88'),statut='f', + fr="Option du Coefficient d'échange du jeu pastille-gaine"), + BlocHgapTuo2 = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='TUO2'", + Tuo2Initiale = SIMP (typ='R',statut='o', + fr="Température initiale combustible pour le calcul du coefficient d'échange") ), + BlocHgapFixe = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='FIXE'", + Hgap = SIMP (typ='R',statut='o',defaut=5850.,fr="Valeur imposée du coefficient d'échange") ), + ConductiviteCombustible = SIMP (typ='TXM',defaut='HGAP_88',into=('STORA','WESTINGHOUSE','HGAP_88','COMETHE'),statut='f', + fr="Option du Coefficient de conductivité du combustible"), + CapaciteCalorifiqueCombustible = SIMP (typ='TXM',defaut='UO2_FRAMATOME',into=('UO2_BATES','UO2_FRAMATOME','UO2_THYC'),statut='f', + fr="Option du Coefficient de conductivité du combustible"), + MateriauGaine = SIMP (typ='TXM',defaut='ZIRCALOY_CYRANO',into=('ZIRCALOY_CYRANO', 'ZIRCALOY_THYC', 'INCOLOY_800', + 'CHROMESCO_3', 'INOX_16', 'INOX_321', 'INOX_347', 'INOX_347_OXYDE', + 'INCONEL_600', 'NICKEL_75', 'PLATINE'),statut='f', + fr="Materiau de la gaine pour le calcul du roCp de la gaine et de sa conductivite"), + FluxCritique = SIMP (typ='R',defaut=180.E4,fr="Valeur du flux critique en W/m2"), + FractionPuissanceCombustible = SIMP (typ='R',defaut=0.974,fr="Fraction de la puissance degagee dans le combustible"), + Creusement = SIMP (typ='TXM',defaut='Uniforme',statut='f',into=('Uniforme','Runnals','Framatome','Twinkle','Mox','EDF','Specifique')), + BlocCreusement = BLOC (condition = "Creusement=='Specifique'", + RayonsCreusement = SIMP (typ='R',statut='o',fr="Rayons de definition du creusement de puissance (nz)"), + IrradiationsCreusement = SIMP (typ='R',statut='o',fr="Irradiations de definition du creusement de puissance (nbu)"), + EnrichissementsCreusement = SIMP (typ='R',statut='o',fr="Enrichissements de definition du creusement de puissance (nen)"), + PuissancesUO2 = SIMP (typ='R',max='**',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille UO2"), + PuissancesMOX = SIMP (typ='R',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille MOX") ), + DiscretisationPastilleCombustible = SIMP (typ='I',defaut=4,statut='f',fr="Nombre de points de discretisation radiale de la pastille combustible"), + DiscretisationGaine = SIMP (typ='I',defaut=2,statut='f',fr="Nombre de points de discretisation radiale de la gaine de la pastille combustible"), + PrecisionCalculThermique = SIMP (typ='R',defaut=0.1,fr="Precision en Celsius du calcul thermique radiale du crayon"), + PrecisionCalculThermohydraulique = SIMP (typ='R',defaut=0.01,fr="Precision en Celsius du calcul thermohydraulique de la temperature du moderateur"), + MaxIterationsThermique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermique"), + MaxIterationsThermohydraulique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermohydraulique"), + MethodeIntegrationThermohydraulique = SIMP (typ='TXM',defaut='Gauss',statut='f',into=('Gauss','NonGauss'),fr="Methode d'integration thermohydraulique"), + PerteDeCharge = SIMP (typ='TXM',defaut='Non',statut='f',into=('Non','Oui'),fr="Prise en compte ou non de la perte de charge axiale"), + TableEau = SIMP (typ='TXM',defaut='Thetis',statut='f',into=('Thetis','Interne'), + fr="Calcul des caracteristiques du moderateur par THETIS ou par des tables internes") ), +# ---------------------------------------------------------------------------------------------------------------------------------- + OptionsContreReactions = FACT ( + ContreReactions = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),fr="Prise en compte des contre-reactions ou non"), + PrecisionPuissance = SIMP (typ='R',defaut=1.E-4,fr="Precision sur la puissance a la fin des iterations de contre-reactions"), + PrecisionKeff = SIMP (typ='R',defaut=1.E-5,fr="Precision sur keff a la fin des iterations de contre-reactions"), + MethodeCalculSection = SIMP (typ='TXM',defaut='Spline1D',into=('Spline1D','SplinenD','Tabulation'), + fr="Methode de calcul des sections efficaces avec Contre-reactions") ) + ) ; # Fin OPTIONS_CODES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_GENERALES_ETUDE : Classe de definition des caracteristiques globales de l'etude +# Definition de la centrale (site, numero de tranche) et numero de campagne d'irradiation +# Ces caracteristiques d'environnement de l'etude doivent permettre de recuperer l'ensemble +# des parametres de fonctionnement nominales du reacteur sujet de l'etude (creation de +# bibliotheques ou calcul de coeur) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_GENERALES_ETUDE = OPER (nom="DONNEES_GENERALES_ETUDE",op=0,sd_prod=DonneesGeneralesEtude, + + fr = "Definition de la centrale sujet de l'etude et des options globales de l'etude", + ang = "Definition of the power plant and of the global options", + TypeCode = SIMP (typ='TXM',defaut='Reseau',into=('Reseau','Coeur'),statut='o'), + SiteNucleaire = SIMP (typ=SiteNucleaire,defaut='TRICASTIN',statut='o'), + BlocCoeur = BLOC (condition = "TypeCode=='Coeur'", + NumeroTranche = SIMP (typ='I',defaut=1,statut='f'), + NumeroCampagne = SIMP (typ='I',defaut=1,statut='f'), + IdentificateurCampagne = SIMP (typ='TXM',defaut='TN101',statut='f'), + DatesCampagne = SIMP (typ=DateClesCampagne,statut='f'), + TypeGestion = SIMP (typ = 'TXM', + defaut = '370Q', + statut = 'f', + into = ('310Q','310T','325T','325Q','340Q','345AL', + '370Q','370T','400T','HMOX','MOXNT','TMOX')), + TypeSchemaGrappe = SIMP (typ = 'TXM', + defaut = '900CPYUO2', + statut = 'f', + into = ('900CP0','900CPYUO2INITIAL','900CPYUO2', + '900CPYUO2AL','900CPYMOX','1300','N4')), + PositionGrappe = SIMP (typ=PositionGrappesCommande,statut='f'), + TypeEvaluationSurete = SIMP (typ='TXM',defaut='900STD',statut='f', + into=('900STD','900GARANCE','1300STD','1300GEMMES','N4STD')), + ModePilotage = SIMP (typ='TXM',defaut='G',statut='f',into=('A','G','X')), + PlanChargement = SIMP (typ=Reseau,statut='f'), + CodeCalcul = SIMP (typ='TXM',defaut='SNCODE',statut='f')), + BlocReseau = BLOC (condition = "TypeCode=='Reseau'", + Assemblage = SIMP (typ=AssemblageType,statut='f'), + ContreReactions = SIMP (typ=EspaceVariations,statut='f'), + CodeCalcul = SIMP (typ='TXM',defaut='SUNSET',statut='f')), + ConditionsMoyennes = SIMP (typ=ConditionsFonctionnementMoyennes,statut='f'), + Options = SIMP (typ=OptionsCodes,statut='f'), + PasIrradiation = SIMP (typ=DonneesEvolutionIrradiation,statut='f'), +# ConditionLimite = SIMP (typ=ConditionLimiteGenerale,statut='o'), + TypeCalcul = SIMP (typ='TXM',max='**',defaut='Evolution', + into=('Evolution','EvolutionMicroscopique','Reprise','Statique','Cinetique', + 'BoreImpose','BoreCritique'),statut='f') + ) ; + +class resultat(TObjet): pass +class resultat2(resultat): pass + +CALCUL=OPER(nom="CALCUL",op=10,sd_prod=resultat, + materiau=SIMP(typ=Materiau), + PRESSION=SIMP(defaut=10000.,typ="R") + ); + +CALCUL2=OPER(nom="CALCUL2",op=11,sd_prod=resultat2, + donnee=SIMP(typ=resultat), + materiau=SIMP(typ=Materiau), + ); + + + + diff --git a/Descartes/cata_descartes_new.py b/Descartes/cata_descartes_new.py new file mode 100755 index 00000000..bd360594 --- /dev/null +++ b/Descartes/cata_descartes_new.py @@ -0,0 +1,3084 @@ +# debut entete + +import Accas +from Accas import * +# + +JdC = JDC_CATA(code='DESCARTES', + execmodul=None, + niveaux=(NIVEAU(nom='Isotopes',label='Donnees des Isotopes ou molecules et Bibliotheques associees'), + NIVEAU(nom='ChaineFiliationIsotopique',label='Chaines de filiation isotopique'), + NIVEAU(nom='MaillagesEnergie',label='Maillages en energie'), + NIVEAU(nom='DonneesNucleaires',label='Bibliotheques de donnees nucleaires et Fichiers'), + NIVEAU(nom='Materiaux',label='Materiaux'), + NIVEAU(nom='ElementsGeometriques',label='Elements geometriques elementaires'), + NIVEAU(nom='Geometries',label='Geometries globales'), + NIVEAU(nom='MaillagesSpatiaux',label='Maillages en espace'), + NIVEAU(nom='ElementsTechnologiquesAssemblages',label='Elements technologiques des assemblages combustibles'), + NIVEAU(nom='ElementsTechnologiquesReacteur',label='Elements technologiques des reacteurs'), + NIVEAU(nom='AssemblagesReels',label='Assemblages combustibles reels'), + NIVEAU(nom='ConditionsLimites',label='Conditions aux limites'), + NIVEAU(nom='ParametresCalcul',label='Parametres des calculs'), + NIVEAU(nom='SectionsEfficaces',label ='Bibliotheques de sections efficaces'), + NIVEAU(nom='OptionsCodesCalcul',label='Options des codes de calcul'), + NIVEAU(nom='ConfigurationInformatique',label='Choix des ressources informatiques'), + NIVEAU(nom='DonneesDesAccidents',label ='Donnees des etudes d_accidents'), + NIVEAU(nom='DonneesPilotage',label ='Donnees de pilotage du reacteur'), + NIVEAU(nom='DonneesEtude',label ='Donnees des cas de l etude'), + NIVEAU(nom='Operateurs',label ='Definition des operateurs de calcul'), + NIVEAU(nom='Resultats',label ='Resultats des calculs'), + NIVEAU(nom='ResultatsExperimentaux',label ='Resultats issus de mesures experimentales'), + NIVEAU(nom='ResultatsAccidents',label ='Resultats issus de la simulation des accidents'), + NIVEAU(nom='EtudeGenerale',label ="Cas d'etude et resultats") + ) + ) + +import string +#import lcm + +class TObjet(ASSD): + def __init__(self,**args): + apply(ASSD.__init__,(self,),args) + name=string.ljust(self.__class__.__name__[:12],12) + + def __getitem__(self,attrname): + return self.etape[attrname] + + def db(self): + if hasattr(self,'_dbsun'):return self._dbsun + else: + self._dbsun={'t':1} + return self._dbsun + + def putdb(self,o): + self._dbsun=o + +# +# Definition des types d'objet qui seront produits par les commandes +# Il suffit de declarer une classe qui derive de la classe mere TObjet +# qui derive elle meme de la classe ASSD utilisee dans EFICAS +# +# Isotopes +class Isotope (TObjet):pass +# ChaineFiliationIsotopique +class ChaineFiliation (TObjet):pass +# MaillagesEnergie +class BornesEnergie (TObjet):pass +# DonneesNucleaires +class FichierBibliothequeIsotopes (TObjet):pass +# Materiaux +class Materiau (TObjet):pass +# MaillagesSpatiaux +class Maillage1D (TObjet):pass +# ElementsGeometriques +class Point (TObjet):pass +class Vecteur (TObjet):pass +class Droite (TObjet):pass +class Segment (TObjet):pass +class ArcCercle (TObjet):pass +class SecteurDisque (TObjet):pass +class Conique (TObjet):pass +class Triangle (TObjet):pass +class Rectangle (TObjet):pass +class Carre (TObjet):pass +class Hexagone (TObjet):pass +class Polygone (TObjet):pass +class Sphere (TObjet):pass +class BoiteRectangulaire (TObjet):pass +class BoiteGenerale (TObjet):pass +class CylindreX (TObjet):pass +class CylindreY (TObjet):pass +class CylindreZ (TObjet):pass +class Cylindre (TObjet):pass +class Cone (TObjet):pass +class PrismeHexagonal (TObjet):pass +class Tore (TObjet):pass +class Plan (TObjet):pass +class PlanX (TObjet):pass +class PlanY (TObjet):pass +class PlanZ (TObjet):pass +class Polyedre (TObjet):pass +class Quadrique (TObjet):pass +class Orientation (TObjet):pass +class FormePositionnee (TObjet):pass +# Geometries +class Cellule (TObjet):pass +class Cluster (TObjet):pass +class GeometrieSurfacique (TObjet):pass +class GeometrieCombinatoire (TObjet):pass +class Reseau (TObjet):pass +class DecompositionDomaines (TObjet):pass +# ElementsTechnologiquesAssemblages +class GrilleAssemblage (TObjet):pass +class PartieInferieureAssemblageCombustible (TObjet):pass +class PartieSuperieureAssemblageCombustible (TObjet):pass +class AssemblageType (TObjet):pass +class ElementBarre (TObjet):pass +class ElementsGrappeCommande (TObjet):pass +class ElementsAbsorbantsFixes (TObjet):pass +class GrappeBouchonAssemblage (TObjet):pass +# AssemblagesReels +class AssemblageCombustibleReel (TObjet):pass +class ReparationAssemblage (TObjet):pass +class PenaliteAssemblage (TObjet):pass +#class SystemeUnitesMesure (TObjet):pass +# ConditionsLimites +class Vide (TObjet):pass +class ReflexionIsotrope (TObjet):pass +class ReflexionSpeculaire (TObjet):pass +class Albedo (TObjet):pass +class Translation (TObjet):pass +class Rotation (TObjet):pass +class SpecialeConditionLimite (TObjet):pass +class GeneraleConditionLimite (TObjet):pass +# ElementsTechnologiquesReacteur +class CorrespondanceReperePositionReseau(TObjet):pass +class PositionAssemblageCombustible (TObjet):pass +class PositionInstrumentationInterne (TObjet):pass +class ImplantationGrappesCommande (TObjet):pass +class StructuresInternesReacteur (TObjet):pass +class PompePrimaire (TObjet):pass +class Pressuriseur (TObjet):pass +class GenerateurVapeur (TObjet):pass +class CaracteristiquesPalier (TObjet):pass +class SiteNucleaire (TObjet):pass +# ParametresCalcul +class EspaceVariations (TObjet):pass +class DonneesIrradiation (TObjet):pass +class ConditionsFonctionnementMoyennes (TObjet):pass +class ConditionsTransitoire (TObjet):pass +class PositionAxialeGrappesCommande (TObjet):pass +class ParametresCalculGestion (TObjet):pass +# SectionsEfficaces +class Macrolib (TObjet):pass +class SectionsReflecteur (TObjet):pass +# OptionsCodesCalcul +class OptionsAutoprotection (TObjet):pass +class OptionsCodes (TObjet):pass +class OptionsCodeReseau (TObjet):pass +class OptionsCodeCoeurStatique (TObjet):pass +class OptionsCodeCoeurCinetique (TObjet):pass +class OptionsThermiqueThermohydraulique (TObjet):pass +class OptionsContreReactionsCoeur (TObjet):pass +# ConfigurationInformatique +class RessourcesInformatiques (TObjet):pass +# DonneesDesAccidents +class AccidentDilution (TObjet):pass +class AccidentRTV (TObjet):pass +class AccidentChuteGrappe (TObjet):pass +class AccidentEjection (TObjet):pass +class CriteresSurete (TObjet):pass +class DonneesAccidents (TObjet):pass +# DonneesPilotage +class ProlongationCampagne (TObjet):pass +class DonneesPilotageGeneral (TObjet):pass +class CalibrageGroupes (TObjet):pass +# DonneesEtude +class DatesClesCampagne (TObjet):pass +class DonneesCasEtude (TObjet):pass +class DonneesAjustement (TObjet):pass +# Resultats +class ResultatsGlobauxCoeur (TObjet):pass +class ResultatFlux (TObjet):pass +class ResultatPuissances (TObjet):pass +class ResultatIrradiations (TObjet):pass +class ResultatActivites (TObjet):pass +class ResultatRadial (TObjet):pass +class ResultatAxial (TObjet):pass +class ResultatsCalculGestion (TObjet):pass +class ResultatsEtude (TObjet):pass +# ResultatsAccidents +class AccidentDilutionResultat (TObjet):pass +class AccidentChuteGrappeResultat (TObjet):pass +class AccidentEjectionResultat (TObjet):pass +class AccidentsResultats (TObjet):pass +# ResultatsExperimentaux +class ActivitesExperimentales (TObjet):pass +# EtudeGenerale +class DictionnaireCasEtude (TObjet):pass +# fin entete +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ISOTOPE : Classe de definition d'un isotope ou d'une molecule +# Caracteristiques elementaires des isotopes ou molecules et liens avec les bibliotheques de donnees nucleaires +# Ces caracteristiques elementaires ne devraient pas apparaître dans ce type d'objet, mais etre recuperees directement +# dans la bibliotheque de donnees de base. La structure des APOLLIB n'etant pas simple d'acces, la solution +# adoptee permet de mettre a disposition ces informations de maniere simple. A revoir ulterieurement +# apres redefinition du contenu d'une bibliotheque de base. +# La decomposition en éléments chimiques simples est utile pour les calculs de type TRIPOLI, les données nucléaires +# étant définies parfois pour chaque élément et non pour la molécule (cas de l'eau par exemple) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ISOTOPE = OPER (nom="ISOTOPE", sd_prod=Isotope, op=0, niveau = 'Isotopes', + fr = "Definition d'un isotope ou d'une molecule et de ses bibliotheques", + ang = "Isotope or Molecule definition and data libraries", + Symbole = SIMP (typ='TXM',statut='o',fr="Symbole de l'isotope ou de la molecule"), + MasseAtomique = SIMP (typ='R', statut='o',fr="Masse atomique en uma"), + NombreDeCharge = SIMP (typ='I', statut='o',fr="Nombre de charge atomique Z"), + NombreDeMasse = SIMP (typ='I', statut='o',fr="Nombre de masse atomique A"), + Type = SIMP (typ='TXM',statut='f',into=('Standard','Detecteur','Structure','Poison'),fr="Type de l'isotope"), + NomsBibliotheque = NUPL (max = '**', statut = 'o',fr="Association Procedure Bibliotheque et Nom isotope dans le Fichier", + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque"))), + NomsBiblioAutoprotegee = NUPL (max = '**', statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant Bibliotheque autoprotegee de l'isotope"))), + ComposantsElementaires = SIMP (typ=Isotope, max = '**', statut = 'f', + fr="Liste des elements chimiques composant la molecule") + ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe BORNES_ENERGIE : Classe de definition des limites en energie d'un maillage multigroupe +# Objets utilises pour la définition du maillage des bibliothèques de base +# ou des macro-groupes d'énergie de condensation des sections efficaces sur le flux détaillé +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BORNES_ENERGIE = OPER (nom="BORNES_ENERGIE", sd_prod=BornesEnergie, op=0, niveau = 'MaillagesEnergie', + fr = "Definition d'une discretisation de l'espace energetique", + ang = "Definition of an energy discretisation", + NbMacrogroupes = SIMP (statut='o',typ='I', fr="Nombre de macrogroupes du maillage energetique"), + BornesEnergetiques = SIMP (statut='o',typ='R',max='**',fr="Bornes en energie (MeV) du maillage energetique"), + ) ; # Fin BORNES_ENERGIE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe MAILLAGE_1D : Classe de definition d'un maillage spatial 1D : 4 possiblilites de definition : +# 1 et 2) Equidistant et Equivolumique : Largeur totale a fournir +# 3) Liste des dimensions des mailles +# 4) Abscisse initiale et couples (Nb sous-pas, Abscisse suivante) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MAILLAGE_1D = OPER (nom="MAILLAGE_1D", sd_prod=Maillage1D, op=0, niveau = 'MaillagesSpatiaux', + fr = "Definition d'une discretisation d'un espace 1D", + ang = "Definition of a 1D spatial discretisation", + ModeDefinition = SIMP (typ='TXM',statut='o',defaut='LargeurMaille',into=('Equidistant','Equivolumique','LargeurMaille','SousMaille'), + fr="Mode de definition du maillage"), + NbMailles = SIMP (typ='I',statut='o',fr="Nombre de mailles de discretisation"), + BlocEqui = BLOC (condition = "ModeDefinition=='Equidistant' or ModeDefinition=='Equivolumique'", + DimensionTotale = SIMP (typ='R',statut='o',fr="Largeur totale du maillage en cm") + ), + BlocMailles = BLOC (condition = "ModeDefinition=='LargeurMaille'", + LargeursMailles = SIMP (typ='R',max='**',statut='o',fr="Largeurs des mailles en cm") + ), + BlocSousMailles = BLOC (condition = "ModeDefinition=='SousMaille'", + SousMailles = SIMP (typ=('I','R'),max='**',statut='o',fr="Abscisse initiale et couples (Nb sous-pas, Abscisse suivante)") + ) + ) ; # Fin MAILLAGE_1D +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FICHIER_BIBLIOTHEQUE_ISOTOPES : Classe de definition des fichiers des bibliotheques des donnees nucleaires d'isotopes ou de molecules +# Noms et formats des fichiers d'isotopes suivant le systeme d'exploitation +# Dans le cas de TRIPOLI 4, on fournit le nom du dictionnaire ou se trouve la description des +# isotopes disponibles pour le code et le chemin d'accès aux fichiers de sections de ces isotopes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FICHIER_BIBLIOTHEQUE_ISOTOPES = OPER (nom="FICHIER_BIBLIOTHEQUE_ISOTOPES", sd_prod=FichierBibliothequeIsotopes, op=0, niveau = 'DonneesNucleaires', + fr = "Definition d'une bibliotheque de donnees nucleaires des isotopes", + ang = "Definition of a nuclear data isotope library", + Description = SIMP (typ='TXM',statut='o',fr="Identificateur Bibliotheque ou Dictionnaire"), + Fichiers = FACT (max='**', statut='o',fr="Donnee des fichiers associes a la bibliotheque et du maillage energetique", + SystemeExploitation = SIMP (typ='TXM',statut='o',fr="Systeme d'exploitation du reseau informatique"), + NomFichier = SIMP (typ='TXM',statut='o',fr="Nom du fichier de la bibliotheque de donnees de base"), + FormatFichier = SIMP (typ='TXM',statut='o',fr="Format du fichier"), + BornesEnergetiques = SIMP (typ=BornesEnergie,statut='o',fr="Bornes en MeV du maillage en energie") + ) + ) ; # Fin FICHIER_BIBLIOTHEQUE_ISOTOPES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CHAINE_FILIATION : Classe de definition des filiations isotopiques dues aux transmutations +# sous irradiation neutronique. +# Description textuelle sous format (APOLLO2, SUNSET ou DARWIN) +# ou description particuliere des filiations. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CHAINE_FILIATION = OPER (nom="CHAINE_FILIATION", op=0, sd_prod=ChaineFiliation, niveau = 'ChaineFiliationIsotopique', + fr = "Definition d'une chaine de filiation isotopique sous irradiation", + ang = "Definition of a depletion chain", + NombreIsotopes = SIMP (typ='I' ,statut='o',fr="Nombre d'isotopes decrits dans la chaine"), + ChaineAPOLLO2 = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format APOLLO2"), + ChaineSUNSET = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format SUNSET"), + ChaineDARWIN = SIMP (typ='TXM',statut='f',fr="Nom du fichier contenant la description DARWIN de la chaine"), + ListeIsotopes = FACT (max = '**',statut = 'f', + Isotope = SIMP (typ=Isotope,fr="Nom de l'isotope",statut='o'), + Peres = FACT (max = '**',statut = 'o', + IsotopePere = SIMP (statut='o',typ=Isotope,fr="Nom de l'isotope pere"), + TypeReaction = SIMP (statut='o',typ='TXM' ,fr="Type de reaction nucleaire", + into=('nGamma','n2n','n3n','n4n','np','nalpha')), + RapportBranchement = SIMP (statut='o',typ='R' ,fr="Rapport de branchement",defaut=1.) + ) + ) + ) ; # Fin CHAINE_FILIATION +# regles = (UN_PARMI ('ChaineAPOLLO2','ChaineSUNSET','ChaineDARWIN','ListeIsotopes'),), +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe MATERIAU : Classe de définition d'un matériau à partir de mélange d'isotopes ou de matériaux. +# Définition alternative par donnée des enrichissements (Possibilités limitées aux combustibles UO2, MOX, Gd) +# Caractéristiques fournies a 20 C. +# Proprietes thermiques et thermomécaniques éventuelles +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MATERIAU = OPER(nom="MATERIAU", op=0, sd_prod=Materiau, niveau = 'Materiaux', + fr = "Definition d'un materiau", + ang = "Definition of a mixture", + TypeDefinition = SIMP (typ='TXM',statut='o',defaut="Isotopique",into=("Isotopique","Enrichissement")), + TypeMateriau = SIMP (statut = 'o', typ = 'TXM', + into = ('Combustible','Absorbant','Melange','ModerateurInterne','ModerateurExterne','Detecteur', + 'Grille','Gaine','Tube','Poison','PoisonConsommable','AbsorbantIntegre', + 'CoucheCorrosion','Solide','Liquide','Gaz','MateriauVide'), + defaut = 'Combustible'), + BlocIsotopique = BLOC (condition = "TypeDefinition=='Isotopique'", + MethodeMelange = SIMP (statut = 'o',typ='TXM',into=('Isotopique','Massique','Concentration'),defaut='Massique'), + Constituants = NUPL (statut = 'o', max = '**', + fr = "Couples (Isotope ou Materiau) et (Pourcentage ou Concentration)", + elements = (SIMP (typ=(Isotope,Materiau),fr="Isotope ou Materiau constituant"), + SIMP (typ='R',fr="Pourcentage % ou Concentration 10E24 de l'isotope ou du materiau")) + ) + ), + BlocEnrichissement = BLOC (condition = "TypeDefinition=='Enrichissement'", + Type = SIMP (typ='TXM',into=('UO2','MOX','UO2Gadolinium','MOXGadolinium'),statut='o',defaut='UO2',fr="Type de combustible"), + U235Enrichissement = SIMP (typ='R',defaut=3.7,statut='o',val_min=0.,val_max=100., + fr="Enrichissement % en U235 du combustible"), + TeneurU234Naturel = SIMP (typ='R',defaut=110.,statut='f',fr="Teneur (ppm) en U234 de l'uranium naturel"), + DonneesGado = BLOC (condition = "Type=='UO2Gadolinium' or Type=='MOXGadolinium'", + EnrichissementGado = SIMP (typ=('R','TXM'),defaut=8.,statut='o',fr="Enrichissement % en Gd2O3 du combustible")), + DonneesMOX = BLOC (condition = "Type=='MOX' or Type=='MOXGadolinium'", + PuEnrichissement = SIMP (typ=('R','TXM'),defaut=5.3,statut='o',val_min=0.,val_max=100., + fr="Enrichissement % en plutonium du combustible"), + VecteurPu = FACT (statut='o',fr="Definition du vecteur isotopique du plutonium", + Pu238PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu238"), + Pu239PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu239"), + Pu240PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu240"), + Pu241PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu241"), + Pu242PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu242"), + Am241PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Am241"), + ), + DateReference = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de reference du combustible"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de divergence du reacteur ou ce combustible est charge"), + VieillissementJours = SIMP (typ='R',defaut = 0.,statut = 'f', + fr = "Nbre de jours de vieillissement du combustible, calculable si on donne DateDivergence") + ) + ), + TauxEvidement = SIMP (statut='f',typ='R',fr="Taux % d'evidement du materiau"), + TauxPorosite = SIMP (statut='f',typ='R',fr="Taux % de porosite du materiau"), + Temperature = SIMP (statut='f',typ='R',fr="Temperature en Celsius du materiau"), + PlenumGaz = SIMP (statut='f',typ=(Isotope,Materiau),defaut='HE4',fr="Gaz de remplissage des evidements du materiau solide et dans le plenum"), +# PlenumGaz = SIMP (statut='f',typ=(Isotope,Materiau),fr="Gaz de remplissage des evidements du materiau solide et dans le plenum"), + PressionPlenumGaz = SIMP (statut='f',typ='R',defaut=32.,fr="Pression en bars du gaz de remplissage des evidements et dans le plenum"), + Chaine = SIMP (statut='f',typ=ChaineFiliation,defaut='ChaineSaturee',fr="Chaine de filiation isotopique associee au materiau"), + TauxImpuretes = SIMP (statut='f',typ='R',fr="Taux % d'impuretes"), + ChaleurSpecifiquePressionCte = SIMP (statut='f',typ='R',fr="Chaleur Specifique a Pression Constante J/(kg.C)"), + ConductiviteThermique = SIMP (statut='f',typ='R',fr="Conductivite Thermique W/(cm.C)"), + MateriauGazBloc = BLOC (condition = "TypeMateriau=='Gaz'", + GazLongueurExtrapolation = SIMP (statut='f',typ='R',fr="Longueur Extrapolation en cm"), + GazPression = SIMP (statut='f',typ='R',fr="Pression du gaz en bars") + ), + MateriauLiquideBloc = BLOC (condition = "TypeMateriau in ('Liquide','ModerateurInterne','ModerateurExterne')", + RoLiquide = SIMP (statut='f',typ='R',fr="Masse volumique theorique du liquide g/cm3"), + PressionLiquide = SIMP (statut='f',typ='R',fr="Pression du liquide en bars"), + EbullitionTemperature = SIMP (statut='f',typ='R',fr="Temperature Ebullition en Celsius"), + EbullitionPression = SIMP (statut='f',typ='R',fr="Pression Ebullition en bars") + ), + MateriauSolideBloc = BLOC (condition = "TypeMateriau not in ('Liquide','ModerateurInterne','ModerateurExterne','Gaz','MateriauVide')", + RoSolide = SIMP (statut='f',typ='R',fr="Masse volumique theorique du materiau g/cm3"), + DilatationLineaire = SIMP (statut='f',typ='R',fr="Coefficient de dilatation thermique lineaire cm/C du materiau"), + LimiteElastique = SIMP (statut='f',typ='R',fr="Limite Elastique en Pa"), + Fluence = SIMP (statut='f',typ='R',fr="Fluence subie par le materiau en n/cm2"), + Emissivite = SIMP (statut='f',typ='R',fr="Valeur d'emissivite"), + ModuleYoung = SIMP (statut='f',typ='R',fr="Module d'Young en Pa"), + CoefficientPoisson = SIMP (statut='f',typ='R',fr="Coefficient de Poisson"), + RugositeSurface = SIMP (statut='f',typ='R',fr="Rugosite de Surface en cm") + ) + ) ; # Fin MATERIAU +# ================================================================================================================================== +# Definition des Classes elementaires pour la geometrie +# ================================================================================================================================== +# Classe POINT : Classe de definition d'un point de l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POINT = OPER (nom="POINT", op=0, sd_prod=Point, niveau = 'ElementsGeometriques', + fr = "Definition d'un point de l'espace", + ang = "Definition of a point in space", + Coordonnees = SIMP (typ='R',min=2,max=3,statut='o',fr="Coordonnees du point dans l'espace") + ) ;# Fin POINT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe VECTEUR : Classe de definition d'un vecteur dans l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VECTEUR = OPER (nom="VECTEUR", op=0, sd_prod=Vecteur, niveau = 'ElementsGeometriques', + fr = "Definition d'un vecteur dans l'espace", + ang = "Definition of a vector in space", + regles = (UN_PARMI ('Composantes','Points'),), + Composantes = SIMP (typ='R' ,min=2,max=3,statut='f',fr="Composantes du vecteur en 2D ou 3D"), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Vecteur defini par deux points") + ) ; # Fin VECTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DROITE : Classe de definition d'une droite +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DROITE = OPER (nom="DROITE", op=0, sd_prod=Droite, niveau = 'ElementsGeometriques', + fr = "Definition d'une droite par 2 POINTs, 1 POINT et 1 VECTEUR, ou Equation ax + by + cz + d = 0", + ang = "Definition of a straight line by 2 POINTs or through an Equation ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','VecteurOrigine'),), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition de la droite"), + Equation = SIMP (typ='R' ,min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation d'une droite"), + VecteurOrigine = FACT (statut='f', + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Donnee du vecteur directeur de la droite"), + Origine = SIMP (typ=Point ,statut='o',fr="Donnee d'un point de passage de la droite")) + ) ; # Fin DROITE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SEGMENT : Classe de definition d'un segment (Idem DROITE + Longueur et Origine) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SEGMENT = OPER (nom="SEGMENT", op=0, sd_prod=Segment, niveau = 'ElementsGeometriques', + fr = "Definition d'un segment 2 Points ou Origine + ((Longueur + Equation ax + by + d = 0) ou vecteur)", + ang = "Definition of a segment ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','Vecteur'),), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition du segment"), + Equation = FACT (statut='f',fr="Donnee du segment par son equation, sa longueur et son origine", + Coefficients = SIMP (typ='R' ,min=2,max=4,statut='o',fr="Coefficients successifs abcd de l'equation de la droite"), + Longueur = SIMP (typ='R', statut='o',fr="Longueur du segment en cm"), + Origine = SIMP (typ=Point, statut='o',fr="Donnee de l'origine du segment") + ), + Vecteur = FACT (statut='f',fr="Donnee du segment par un vecteur, sa longueur et son origine", + Vecteur = SIMP (typ=Vecteur,min=2,max=4,statut='o',fr="Coefficients successifs abcd de l'equation de la droite"), + Longueur = SIMP (typ='R', statut='o',fr="Longueur du segment en cm"), + Origine = SIMP (typ=Point, statut='o',fr="Donnee de l'origine du segment") + ) + ) ; # Fin SEGMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ARC_CERCLE : Classe de definition d'un arc de cercle +# Angles donnes en degres +# Dans le cas 2D on peut positionner l'arc de cercle en donnant l'angle du debut de l'arc par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur de l'arc +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ARC_CERCLE = OPER (nom="ARC_CERCLE", op=0, sd_prod=ArcCercle, niveau = 'ElementsGeometriques', + fr = "Definition d'un arc de cercle", + ang = "Definition of a circular arc", + Type = SIMP (typ='TXM' ,statut='o',defaut='2D',into=('2D','3D'), fr="Type d'arc 2D ou 3D"), + Rayon = SIMP (typ='R' ,statut='o', fr="Rayon de l'arc de cercle en cm"), + Angles = SIMP (typ='R' ,statut='f',max=2,defaut=(360.,0.), fr="Angles en degres de l'arc : Total et Debut"), + VecteurAxe = SIMP (typ=Vecteur,statut='f', fr="Vecteur directeur de l'axe de l'arc") + ) ; # Fin ARC_CERCLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTEUR_DISQUE : Classe de definition d'un disque ou d'un secteur d'une couronne circulaire +# Angle du secteur donne en degres (360° par defaut) +# Dans le cas 2D on peut positionner le secteur en donnant l'angle du debut de secteur par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur du secteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTEUR_DISQUE = OPER (nom="SECTEUR_DISQUE", op=0, sd_prod=SecteurDisque, niveau = 'ElementsGeometriques', + fr = "Definition d'un disque ou d'un secteur d'une couronne", + ang = "Definition of a circular sector", + Type = SIMP (typ='TXM' ,statut='o',into=('2D','3D'),defaut='2D',fr="Type de secteur 2D ou 3D"), + Rayons = SIMP (typ='R' ,statut='o',min=2,max=2, fr="Rayons interne et externe de la couronne en cm"), + Angles = SIMP (typ='R' ,statut='f',max=2,defaut=(360.,0.), fr="Angles en degres du secteur"), + Hauteur = SIMP (typ='R' ,statut='f',defaut=0., fr="Hauteur du secteur en cm"), + VecteurAxe = SIMP (typ=Vecteur,statut='f',defaut=0., fr="Vecteur directeur de l'axe du secteur") + ) ; # Fin SECTEUR_DISQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONIQUE : Classe de definition d'une conique 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONIQUE = OPER (nom="CONIQUE", op=0, sd_prod=Conique, niveau = 'ElementsGeometriques', + fr = "Definition d'une conique 2D ax2+by2+cxy+dx+ey+f=0", + ang = "Definition of a 2D quadratic curve ax2+by2+cxy+dx+ey+f=0", + Equation = SIMP (typ='R',min=2,max=6,statut='o',fr="Coefficients successifs abcdef de l'equation d'une conique") + ) ; # Fin CONIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TRIANGLE : Classe de definition d'un triangle +# Angles donnes en degres par rapport a l'axe Ox horizontal +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TRIANGLE = OPER (nom="TRIANGLE", op=0, sd_prod=Triangle, niveau = 'ElementsGeometriques', + fr = "Definition d'un triangle", + ang = "Definition of a triangle", + regles = (UN_PARMI ('Points','AngleCotes'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee des 3 sommets du triangle"), + AngleCotes = SIMP (typ='R' ,min=3,max=3,statut='f',fr="Donnee d'un Angle en degres et Longueurs de deux cotes en cm") + ) ; # Fin TRIANGLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RECTANGLE : Classe de definition d'un rectangle +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RECTANGLE = OPER (nom="RECTANGLE", op=0, sd_prod=Rectangle, niveau = 'ElementsGeometriques', + fr = "Definition d'un rectangle", + ang = "Definition of a rectangle", + regles = (UN_PARMI ('Points','Cotes'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Definition du rectangle par trois points"), + LongueursCotes = SIMP (typ='R' ,min=2,max=2,statut='f',fr="Donnee de la longueur de deux cotes en cm") + ) ; # Fin RECTANGLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARRE : Classe de definition d'un carre +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARRE = OPER (nom="CARRE", op=0, sd_prod=Carre, niveau = 'ElementsGeometriques', + fr = "Definition d'un carre", + ang = "Definition of a square", + regles = (UN_PARMI ('Points','Cote'),), + Points = SIMP (typ=Point,min=2,max=2, statut='f',fr="Definition du carre par deux points"), + LongueurCote = SIMP (typ='R', statut='f',fr="Donnee de la longueur du cote du carre en cm") + ) ; # Fin CARRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe HEXAGONE : Classe de definition d'un hexagone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +HEXAGONE = OPER (nom="HEXAGONE", op=0, sd_prod=Hexagone, niveau = 'ElementsGeometriques', + fr = "Definition d'un hexagone", + ang = "Definition of an hexagon", + Rayon = SIMP (typ='R',statut='f',fr="Rayon du cercle inscrit dans l'hexagone en cm") + ) ; # Fin HEXAGONE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYGONE : Classe de definition d'un polygone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYGONE = OPER (nom="POLYGONE", op=0, sd_prod=Polygone, niveau = 'ElementsGeometriques', + fr = "Definition d'un polygone", + ang = "Definition of a polygon", + Points = SIMP (typ=Point,max='**',statut='f',fr="Definition d'un polygone par tous ses points") + ) ; # Fin POLYGONE +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques combinatoires ou surfaciques +# L'utilisation de certaines classes de combinatoire en surfacique consiste a simplement specifier la position de l'objet +# ou a eliminer certaines surfaces limites de la classe +# Pour une sphere : donnee du centre de la sphere +# Pour un cylindre : Pas de donnee de la hauteur, mais donnee d'un point de l'axe du cylindre +# ================================================================================================================================== +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SPHERE : Classe de definition d'une sphere (ou d'une sphere sectorisee ou decoupee en rondelles) +# Des portions de la sphere peuvent etre selectionnees en donnant leurs cotes limites sur un axe de la sphere +# (origine de l'axe au centre de la sphere, donc cotes comprises entre -R, +R si R est le rayon de la sphere) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SPHERE = OPER (nom="SPHERE", op=0, sd_prod=Sphere, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme spherique", + ang = "Definition of a spherical form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon de la sphere en cm"), + Secteur = SIMP (typ='R',statut='f',fr="Angle du secteur de la sphere en degre"), + TranchesAxiales = NUPL (max = '**', statut = 'f', fr = "Limites des tranches axiales de la sphere sectorisee", + elements = ( SIMP (typ='R',statut = 'o', fr="Cote depart de la tranche"), + SIMP (typ='R',statut = 'o', fr="Cote finale de la tranche"))) + ) ; # Fin SPHERE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_RECTANGULAIRE : Classe de definition d'une forme parallelepipedique de cotes paralleles aux axes de reference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_RECTANGULAIRE = OPER (nom="BOITE_RECTANGULAIRE", op=0, sd_prod=BoiteRectangulaire, niveau = 'ElementsGeometriques', + fr = "Definition d'une d'une forme parallelepipedique rectangulaire", + ang = "Definition of a rectangular box form", + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite rectangulaire en cm") + ) ; # Fin BOITE_RECTANGULAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_GENERALE : Classe de definition d'une forme parallelepipedique quelconque +# Le plan de base de la boite doit etre le plan xOy. On donne donc uniquement les 2 vecteurs **normaux** +# aux 2 autres plans, et les 3 longueurs des aretes principales. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_GENERALE = OPER (nom="BOITE_GENERALE", op=0, sd_prod=BoiteGenerale, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme parallelepipedique quelconque", + ang = "Definition of a general box form", + VecteursDirecteurs = SIMP (typ=Vecteur,min=2,max=2,statut='o',fr="Vecteurs normaux aux faces non horizontales de la boite"), + Cotes = SIMP (typ='R' ,min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite en cm") + ) ; # Fin BOITE_GENERALE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_X : Classe de definition d'une forme cylindrique d'axe parallele a Ox +# Pour tous les cylindres, la donnee de deux rayons transforme le cylindre circulaire en cylindre elliptique +# La donnee d'un angle limite le cylindre a ce secteur +# Pour un secteur d'un cylindre elliptique, il est necessaire de donner en plus l'angle de depart du secteur +# par rapport a l'axe majeur de l'ellipse +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_X = OPER (nom="CYLINDRE_X", op=0, sd_prod=CylindreX, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Ox", + ang = "Definition of a right cylinder form // Ox", + Rayons = SIMP (typ='R', max=2, statut='o', fr="Rayons mineur et majeur du cylindre X en cm"), + Hauteur = SIMP (typ='R', statut='f', fr="Hauteur du cylindre X en cm"), + Angles = SIMP (typ='R', max=2, statut='f', fr="Angles du secteur du cylindre X en degres") + ) ; # Fin CYLINDRE_X +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Y : Classe de definition d'une forme cylindrique d'axe parallele a Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Y = OPER (nom="CYLINDRE_Y", op=0, sd_prod=CylindreY, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Oy", + ang = "Definition of a right cylinder form // Oy", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre Y en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre Y en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre Y en degres") + ) ; # Fin CYLINDRE_Y +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Z : Classe de definition d'une forme cylindrique d'axe parallele a Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Z = OPER (nom="CYLINDRE_Z", op=0, sd_prod=CylindreZ, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Oz", + ang = "Definition of a right cylinder form // Oz", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre Z en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre Z en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre Z en degres") + ) ; # Fin CYLINDRE_Z +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE : Classe de definition d'une forme cylindrique quelconque +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE = OPER (nom="CYLINDRE", op=0, sd_prod=Cylindre, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique quelconque", + ang = "Definition of a general cylinder form", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre en cm"), + VecteurAxe = SIMP (statut='o',typ=Vecteur, fr="Vecteur directeur de l'axe du cylindre"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre en degres") + ) ; # Fin CYLINDRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONE : Classe de definition d'un forme conique +# Une portion de cone peut etre definie en donnant les cotes axiales (origine de l'axe du cone au sommet du cone) de +# la zone retenue +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONE = OPER (nom="CONE", op=0, sd_prod=Cone, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme conique", + ang = "Definition of a conic form", + DemiAngleSommet = SIMP (statut='o',typ='R', fr="Demi-angle au sommet en degres"), + LimitesAxiales = SIMP (statut='f',typ='R',min=2,max=2,fr="Limites axiales du cone"), + VecteurAxe = SIMP (statut='o',typ=Vecteur, fr="Vecteur directeur de l'axe du cone") + ) ; # Fin CONE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRISME_HEXAGONAL : Classe de definition d'une forme de prisme hexagonal 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRISME_HEXAGONAL = OPER (nom="PRISME_HEXAGONAL",op=0,sd_prod=PrismeHexagonal, + niveau = 'ElementsGeometriques', + fr = "Definition d'une forme de prisme hexagonal 3D", + ang = "Definition of a 3D hexagonal form", + Rayon = SIMP (statut='o',typ='R', fr="Rayon du cercle circonscrit (=cote de l'hexagone) en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur de l'hexagone en cm"), + VecteurAxe = SIMP (statut='o',typ=Vecteur,fr="Vecteur directeur de l'axe de l'hexagone") + ) ; # Fin PRISME_HEXAGONAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TORE : Classe de definition d'une forme toroidale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TORE = OPER (nom="TORE",op=0,sd_prod=Tore, + niveau = 'ElementsGeometriques', + fr = "Definition d'une forme toroidale", + ang = "Definition of a toroidal form", + Rayons = SIMP (typ='R',min=2,max=2,statut='o', + fr="Rayons du tore : 1/2 distance a l'axe et rayon de la section du tore en cm") + ) ; # Fin TORE +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques surfaciques +# ================================================================================================================================== +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN : Classe de definition d'un plan +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN = OPER (nom="PLAN", op=0, sd_prod=Plan, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan ax + by + cz + d = 0", + ang = "Definition of a plane surface ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee de 3 points non alignes"), + Equation = SIMP (typ='R' ,min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation du plan") + ) ; # Fin PLAN +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_X : Classe de definition d'un plan perpendiculaire a l'axe Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_X = OPER (nom="PLAN_X", op=0, sd_prod=PlanX, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Ox", + ang = "Definition of a plane surface perpendicular to Ox", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OyOz") + ) ; # Fin PLAN_X +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Y : Classe de definition d'un plan perpendiculaire a l'axe Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Y = OPER (nom="PLAN_Y", op=0, sd_prod=PlanY, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Oy", + ang = "Definition of a plane surface perpendicular to Oy", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOz") + ) ; # Fin PLAN_Y +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Z : Classe de definition d'un plan perpendiculaire a l'axe Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Z = OPER (nom="PLAN_Z", op=0, sd_prod=PlanZ, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Oz", + ang = "Definition of a plane surface perpendicular to Oz", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOy") + ) ; # Fin PLAN_Z +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYEDRE : Classe de definition d'une forme polyhedrique 3D quelconque (N faces, N > 4) +# Definition surfacique : Donnee des N plans et du choix du cote positif ou negatif +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYEDRE = OPER (nom="POLYEDRE", op=0, sd_prod=Polyedre, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme polyhedrique 3D quelconque ", + ang = "Definition of a 3D polyhedron form with N > 4 plane faces", + Plans = NUPL (min = 5, max = '**', statut = 'o', fr = "Surfaces planes limites du polyedre", + elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ) ,fr="Plans limites du polyedre"), + SIMP (typ='TXM',into=('Plus','Moins'),fr="Choix du cote positif ou negatif de l'espace"))) + ) ; # Fin POLYEDRE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe QUADRIQUE : Classe de definition d'une quadrique 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +QUADRIQUE = OPER (nom="QUADRIQUE", op=0, sd_prod=Quadrique, niveau = 'ElementsGeometriques', + fr = "Definition d'une quadrique 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + ang = "Definition of a quadratic curve 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + Equation = SIMP (typ='R',min=2,max=10,statut='o',fr="Coefficients successifs abcdefghij de l'equation d'une quadrique") + ) ; # Fin QUADRIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CELLULE : Classe de definition d'une cellule (ensemble elementaire de regions annulaires et sectorisees) +# Apres la hauteur de la cellule, entree des donnees par listes successives pour l'ensemble des couronnes de la +# cellule, la zone externe etant decrite a part dans l'attribut FormeTechnologique : +# - Liste des materiaux +# - Liste des rayons des couronnes correspondantes +# - Liste des sous-couronnes : - Numero de couronne a discretiser (Numero 1 a partir du centre), +# - Nombre de sous-couronnes, +# - Mot-cle Equivolumique si decoupage en sections transverses egales, +# - Rayons des couronnes intermediaires ou proportions volumiques si mot-cle Proportions indique anterieurement. +# - Liste des sectorisations : - Nom de couronne a sectoriser , +# - Nombre de secteurs, +# - Mot-cle Equivolumique si decoupage en secteurs egaux et positionnement du premier +# secteur par rapport a l'axe x, et pas de changement de composition du secteur, +# - Mot-cle alternatif Angle si on veut modifier ou positionner les secteurs dans la +# couronne : on donne alors des triplets de donnees pour chaque secteur : +# - nom du materiau composant le le secteur, +# - position trigonometrique en degres du debut du secteur +# - et angle en degres du secteur. +# Le trace des secteurs sont definis en partant du centre de la couronne. +# Pour la sectorisation de la forme externe, deux cas se presentent : +# - soit pas de couronnes internes : les secteurs se tracent alors en partant du centre de la forme externe, +# - dans le cas contraire, les secteurs partent du centre des couronnes. +# Les secteurs peuvent ne pas couvrir l'ensemble de la couronne. +# - Pour la zone peripherique, on doit definir les cotes de la cellule (cas cartesien), son materiau, sa +# discretisation, et le decentrage du centre des couronnes par rapport au centre de ce contour peripherique +# (Coordonnees x,y du centre des couronnes / au centre du contour) +# - Pour le moment, limitation a 2D, sauf la donnee optionnelle des positions axiales des couronnes +# - Une cellule peut etre definie a partir d'une cellule d'un autre assemblage antérieurement calcule +# - Cette classe sert aussi a definir des microstructures (double heterogeneite) a inclure dans des regions +# d'autres cellules d'ou les attributs relatifs aux microstructures (une microstructure étant une petite cellule +# cylindrique ou spherique a disseminer dans des regions particulieres d'une cellule de taille plus importante +# dans des proportions fixees par l'attribut ProportionsMicroStructures +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CELLULE = OPER (nom="CELLULE", op=0, sd_prod=Cellule, niveau = 'Geometries', + fr = "Definition d'une cellule elementaire", + ang = "Definition of a basic cell", + regles = (UN_PARMI ('Couronnes', 'CelluleIrradiee'),), + Type = SIMP (typ='TXM',defaut='Combustible', + into=( 'Combustible','BarreGrise','BarreNoire','BarreAcier','BarreAic','BarreB4c', + 'Detecteur','Trou','TubeGuide','Postiche','Pyrex','ExPyrex','Gadolinium', + 'CellType1','CellType2','CellType3'),statut='o'), + HauteurTotale = SIMP (typ='R',defaut=1.,statut='o',fr="Hauteur totale de la cellule"), + Cluster = SIMP (typ=Cluster,statut='f',fr="Cluster a integrer dans la cellule de base en cm"), + TypeGeometrie = SIMP (typ='TXM',defaut='Cylindrique',statut='o',into=('Cylindrique','Spherique'),fr="Type de geometrie de la cellule"), + Couronnes = FACT (statut='f',fr="Definition des couronnes cylindriques physiques de materiaux", + NomsSymboliques = SIMP (typ='TXM', max='**',statut='o',fr="Liste des noms arbitraires des couronnes"), + Materiaux = SIMP (typ=Materiau, max='**',statut='o',fr="Liste des materiaux des couronnes"), + Temperatures = SIMP (typ='R', max='**',statut='f',fr="Liste des temperatures des couronnes en Celsius"), + PressionGaz = SIMP (typ='R', statut='f',fr="Valeur de pression de gaz (en bars)"), + Rayons = SIMP (typ='R', max='**',statut='o',fr="Liste des rayons des couronnes en cm"), + RayonsMineurs = SIMP (typ='R', max='**',statut='f',fr="Liste des rayons mineurs des couronnes elliptiques en cm"), + Hauteurs = SIMP (typ='R', max='**',statut='f',fr="Liste des hauteurs des couronnes en cm"), + AxialPositions = SIMP (typ='R', max='**',statut='f', + fr="Positions axiales de la base des couronnes en cm / au zero de la hauteur maximum") + ), + MicroStructures = FACT (max = '**', statut = 'f',fr="Chargement de la double heterogeneite dans chaque couronne", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom symbolique de la couronne ou inserer des microstructures"), + MicroStructures = SIMP (typ=Cellule,max='**',statut='o',fr="Liste des microstructures dans la couronne"), + ProportionsMicroStructures = SIMP (typ='R',max='**',statut='o',fr="Proportions des microstructures dans la couronne") + ), + SousCouronnes = FACT (max = '**', statut = 'f',fr="Discretisation des couronnes de la cellule", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom symbolique de la couronne"), + NbSousCouronnes = SIMP (typ='I' ,statut='o',fr="Nombre de sous-couronnes de discretisation"), + TypeDiscretisation = SIMP (typ='TXM',defaut='Equivolumique',statut='o',into=('Equivolumique','Proportions','Equidistant')), + BlocProportions = BLOC (condition = "TypeDiscretisation=='Proportions'", + ProportionsVolumiques = SIMP (typ='R',statut='o',max='**',fr="Proportions volumiques des sous-couronnes")), + ProfilTemperature = SIMP (typ='R',max='**',statut='f',fr="Profil de temperature") + ), + Homogeneisation = FACT (max = '**', statut = 'f', fr="Homogeneisation de couronnes de la cellule", + NomCouronne = SIMP (typ='TXM' , fr="Nom arbitraire de la couronne homogeneisee"), + ListeCouronnes = SIMP (typ='TXM',max='**' , fr="Liste des noms des couronnes jointives a homogeneiser") + ), + Secteurs = FACT (max = '**', statut = 'f', fr="Sectorisation des couronnes de la cellule", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom de la couronne ou de la forme externe a sectoriser"), + NbSecteurs = SIMP (typ='I' ,statut='o',fr="Nombre de secteurs de la couronne"), + TypeSectorisation = SIMP (typ='TXM',statut='o',defaut='Coins',into=('Equivolumique','Angle','Coins','MilieuxCotes')), + AngleDepart = SIMP (typ='R' ,statut='o',defaut=0.,fr="Angle en degres de depart des secteurs (Origine 0 sur l'axe Ox)"), + Sectorisation = FACT (statut = 'f', + Materiaux = SIMP (typ=Materiau, max='**',statut='f',fr="Materiau des secteurs"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',statut='f',fr="Temperature des secteurs en Celsius"), + Angles = SIMP (typ='R', max='**',statut='f',fr="Angles en degres des secteurs") + ) + ), + FormeExterne = FACT (statut='f',fr="Definition de la region externe au systeme cylindrique interne", + NomSymbolique = SIMP (typ='TXM',statut='f',fr="Nom arbitraire de la zone externe"), + Type = SIMP (typ = (ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'f', # la donnee est facultative si la cellule est inserree dans un reseau + fr = "Forme geometrique exterieure"), + Materiau = SIMP (typ=(Materiau,Cellule),fr="Materiau de la forme externe"), + MicroStructures = SIMP (typ=Cellule,max='**',statut='f',fr="Microstructures de la region externe"), + ProportionsMicroStructures = SIMP (typ='R',max='**',statut='f', + fr="Proportions des microstructures dans la region externe"), + Temperature = SIMP (typ='R',fr="Temperature en Celsius du materiau de la forme externe"), + PressionGaz = SIMP (typ='R',statut='f',fr="Valeur de pression de gaz (en bars)"), + Decentrement = SIMP (typ = 'R', + min = 2, + max = 3, +# defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / barycentre du contour") ), + CelluleIrradiee = FACT (statut='f',fr="Utilisation d'une cellule irradiee d'un assemblage existant", + AssemblageOrigine = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o', + fr="Assemblage d'origine de la cellule a extraire"), + IrradiationMoyenne = SIMP (typ='R',statut='o',fr="Irradiation moyenne MWj/t de l'assemblage d'origine"), + Position = SIMP (typ='I', min=2, max=2, statut='o', + fr="Coordonnees entieres ix,jy du crayon a extraire de l'assemblage") ) + ) ; # Fin CELLULE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CLUSTER : Classe de definition d'un cluster de cellules +# Un cluster est defini comme une superposition centree de cadrans telephoniques (a l'ancienne mode), chaque +# cadran ayant des trous de tailles differentes, l'ensemble devant etre dispose ensuite dans une cellule de forme +# quelconque. +# Donnees de Positionnement des couronnes de canaux, chaque canal etant une CELLULE predefinie, +# Pour chaque type de cellule, on donne : +# - le nombre de cellules a positionner (de maniere uniformement repartie sur le cercle) +# - le rayon du cercle sur lequel on les positionne +# - l'angle / Ox du centre de la premiere cellule (en degres) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CLUSTER = OPER (nom="CLUSTER", op=0, sd_prod=Cluster, niveau = 'Geometries', + fr = "Definition d'un cluster de cellules cylindriques", + ang = "Definition of a cylindrical cell cluster", + Hauteur = SIMP (typ='R',defaut=1.,statut='f',fr="Hauteur du cluster"), + Couronnes = FACT (statut='o',fr="Definition des couronnes de cellules",min=1, + Cellules = SIMP (typ=Cellule,max='**',statut='o',fr="Liste des types de cellules sur chaque cercle"), + NbCellules = SIMP (typ='I' ,max='**',statut='o',fr="Liste des nombres de cellules de chaque type sur chaque cercle"), + Rayons = SIMP (typ='R' ,max='**',statut='o',fr="Liste des rayons des cercles correspondants en cm"), + Angles = SIMP (typ='R' ,max='**',statut='o',fr="Liste des angles de positionnement / Ox de la premiere cellule de chaque type")) + ) ; # Fin CLUSTER +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ORIENTATION : Classe de definition d'une orientation angulaire dans un plan 2D apres symetrie eventuelle / Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ORIENTATION = OPER (nom="ORIENTATION", op=0, sd_prod=Orientation, niveau = 'ElementsGeometriques', + fr = "Definition d'une orientation d'un reseau ou d'une cellule", + ang = "Definition of a cell or lattice orientation", + Symetrie = SIMP (typ=(Plan,PlanX,PlanY,PlanZ),statut='f', + fr="Indication d'une operation de symetrie / Plan, avant rotation"), + AngleRotation = SIMP (typ='R' ,statut='f',fr="Angle de rotation en degres",defaut=0.), + CentreRotation = SIMP (typ=Point ,statut='f',fr="Centre de rotation"), + AxeRotation = SIMP (typ=Vecteur,statut='f',fr="Vecteur de l'axe de rotation") + ) ; # Fin ORIENTATION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FORME_POSITIONNEE : Classe de definition d'une forme geometrique positionnee +# La position est definie a l'aide du centre de la forme geometrique, +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FORME_POSITIONNEE = OPER (nom="FORME_POSITIONNEE", op=0, sd_prod=FormePositionnee, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme positionnee", + ang = "Definition of a shape and its position", + Forme = SIMP ( + typ = (Sphere,BoiteRectangulaire,BoiteGenerale,CylindreX,CylindreY,CylindreZ,Cylindre,SecteurDisque,Cone, + Carre,Rectangle,Triangle,Hexagone,Polygone,PrismeHexagonal,Tore,Polyedre,Cellule,Cluster), + statut = 'o', + fr = "Forme geometrique de base a positionner"), + PositionCentre = SIMP (typ=Point ,statut='o',fr="Coordonnees du centre de la forme geometrique"), + OrientationForme = SIMP (typ=Orientation,statut='f',fr="Orientation de la forme") + ) ; # Fin FORME_POSITIONNEE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_SURFACIQUE : Classe de definition d'une geometrie surfacique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_SURFACIQUE = OPER (nom="GEOMETRIE_SURFACIQUE", op=0, sd_prod=GeometrieSurfacique, niveau = 'Geometries', + fr = "Definition d'une geometrie surfacique", + ang = "Definition of a surfacic geometry", + MateriauRemplissage = SIMP (typ=Materiau,statut='o',fr="Materiau de remplissage de la geometrie surfacique"), + Surfaces = NUPL ( + max = '**', + statut = 'o', + fr = "Serie de couples (Surface,Plus ou Moins) definissant les surfaces limites de la geometrie", + elements = ( + SIMP (typ=(PlanX,PlanY,PlanZ,Plan,CylindreX,CylindreY,CylindreZ,Cylindre,Sphere,Cone,Conique,Quadrique)), + SIMP (typ='TXM',into=('Plus','Moins')))) + ) ; # Fin GEOMETRIE_SURFACIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_COMBINATOIRE : Classe de definition d'une geometrie combinatoire +# Ecrasement : Constitution par ecrasements successifs (dans l'ordre des donnees) de la +# Geometrie Initiale, la frontiere externe etant celle de la geometrie initiale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_COMBINATOIRE = OPER (nom="GEOMETRIE_COMBINATOIRE", op=0, sd_prod=GeometrieCombinatoire, niveau = 'Geometries', + fr = "Definition d'une geometrie combinatoire", + ang = "Definition of a combinatorial geometry", + GeometriePremierPlan = SIMP (typ=FormePositionnee,statut='o',fr="Geometrie se trouvant au premier plan"), + GeometrieEcrasee = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries ecrasées et surchargées par la GeometriePremierPlan"), + GeometrieUnion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan en gardant les interfaces, les intersections etant des volumes particuliers"), + GeometrieReunion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan pour former un volume unique"), + GeometrieIntersection = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a intersecter avec la GeometriePremierPlan") + ) ; # Fin GEOMETRIE_COMBINATOIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CORRESPONDANCE_REPERE_POSITION_RESEAU : +# Classe de definition des reperes alphanumeriques des cases d'un reseau +# Reperes (bataille navale ou autre) et Coordonnees cartesiennes entieres des cases dans un systeme i,j du reseau +# Origine des coordonnees en bas a gauche d'un systeme en xy +# Ceci n'a d'interet que pour l'utilisateur ou pour se conformer aux reperes industriels habituels dans le cas des REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CORRESPONDANCE_REPERE_POSITION_RESEAU = OPER (nom="CORRESPONDANCE_REPERE_POSITION_RESEAU",op=0,sd_prod=CorrespondanceReperePositionReseau, + niveau = 'Geometries', + fr = "Correspondance entre reperes alphanumeriques et cases d'un reseau", + ang = "Alphanumeric identificators and lattice coordinates", + Positions = NUPL (max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire d'une case du reseau"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere dans le systeme i,j du reseau"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere dans le systeme i,j du reseau"))) + ) ; # Fin CORRESPONDANCE_REPERE_POSITION_RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESEAU : +# Classe de definition d'un reseau de juxtapositions de cellules ou de reseaux +# Assemblage de cellules ou de reseaux dans une grille rectangulaire ou hexagonale +# Les positions des cellules et des reseaux dans le nouveau reseau sont a fournir sur les mailles +# du reseau sans tenir compte des symetries, +# Le reseau peut etre charge : +# - de maniere uniforme : un seul type de CELLULE ou de RESEAU +# - de maniere complete : a chaque maille doit etre affecte un reseau ou une cellule et optionnellement son +# orientation, l'ordre des donnees dans le plan radial etant celui obtenu en partant de l'element le plus +# bas a gauche, et dans le sens axial ensuite (eventuellement si 3D) +# - de maniere partielle : liste des cellules et reseaux charges et leur position xyz dans le nouveau reseau +# et orientations correspondantes de ces cellules et reseaux +# Des reperes alphanumeriques arbitraires peuvent etre associes a chaque maille du reseau, ce qui permet +# si necessaire de manipuler ces elements du reseau par l'intermediaire de ces symboles (exemple des +# reperes bataille navale des assemblages dans le reseau d'un coeur REP). +# Le reseau peut etre entoure de zones peripheriques homogenes ou heterogenes. +# - Le cas Homogene peut s'appliquer aux reseaux hexagonaux ou cartesiens ; +# - Dans le cas Heterogene, la reflexion s'est uniquement portee sur la situation cartesienne et particulierement en donnant la +# la possibilite de decrire un assemblage bouillant (avec croix de contrôle et instrumentation) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESEAU = OPER (nom="RESEAU", op=0, sd_prod=Reseau, niveau = 'Geometries', + fr = "Definition d'un reseau compose de juxtapositions de cellules, de reseaux ou d'assemblages", + ang = "Definition of a lattice", + Identificateur = SIMP (typ='TXM',statut='o',fr="Identificateur arbitraire du reseau"), + ReseauReference = SIMP (typ='TXM',statut='f',fr="Identificateur du reseau de reference dans le cas d'une composition de reseaux de reseau"), + DifferenciationCellules = SIMP (typ='I',defaut=0,statut='f',fr="Nombre de couches de cellules a differencier autour du reseau de reference"), + TypeGeometrie = SIMP (typ='TXM',into=('cartesienne','hexagonale'),defaut='cartesienne',statut='f'), + NbMaillesX = SIMP (typ='I',defaut=17,statut='o',fr="Nbre de mailles sur le premier axe du reseau"), + NbMaillesY = SIMP (typ='I',defaut=17,statut='f',fr="Nbre de mailles sur le second axe du reseau"), + NbMaillesZ = SIMP (typ='I',defaut=1 ,statut='f',fr="Nbre de mailles sur l'axe vertical du reseau"), + PasReseau = SIMP (typ='R',defaut=1.26 ,statut='f',max=2,fr="Pas du reseau en X et Y (en cm)"), + MateriauRemplissage = SIMP (typ=Materiau,defaut='ModExt',statut='f',fr="Materiau de remplissage du reseau"), + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Complet",into=("Uniforme","Complet","Partiel"),fr="Mode de chargement du reseau"), + ReseauUniforme = BLOC (condition = "TypeDefinition=='Uniforme'",fr="Chargement uniforme du reseau", + ElementGeomU = SIMP (typ=(Cellule,Reseau,Cluster,GeometrieCombinatoire,AssemblageCombustibleReel,AssemblageType),statut='o', + fr = "Remplissage uniforme du nouveau reseau par un element particulier"), + OrientationU = SIMP (typ=Orientation,fr="Orientation de l'element geometrique de base",statut='f')), + ReseauComplet = BLOC (condition = "TypeDefinition=='Complet'",fr="Chargement complet du reseau", + ElementsGeomC = NUPL (max='**', statut='o', + fr="Liste des couples (ElementGeometrique,SigleTextuel) les sigles textuels servant ensuite au chargement complet du reseau", + elements =(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a associer au sigle"), + SIMP (typ='TXM',fr="Sigle alphanumerique associe a l'element geometrique"))), + ChargementC = SIMP (typ='TXM',statut='o',max='**', + fr="Affectation des sigles aux cases geometriques du reseau"), + RegroupementC = SIMP (typ='I',statut='f',max='**', + fr="Numeros des cellules de calcul en approximation multicellule dans chaque case du reseau"), + OrientationC = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements geometriques dans les cases du reseau"), + ReperesC = SIMP (typ='TXM',max='**',statut='f',fr="Reperes arbitraires des cases geometriques"), + ), + ReseauPartiel = BLOC (condition = "TypeDefinition=='Partiel'",fr="Chargement partiel du reseau", + ChargementP = FACT (max='**',fr="Chargement partiel du reseau", + regles = (UN_PARMI ('ElementsPositionnesP', 'ElementsReperesP'),), + ElementsPositionnesP = NUPL (max='**', statut='f',fr="Donnee des Positions des elements geometriques dans le systeme des coordonnees du reseau", + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a positionner"), + SIMP (typ='I',min=2,max=2,fr="Coordonnees i j de l'element geometrique dans le reseau"))), + ElementsReperesP = NUPL (max='**', statut='f',fr="Donnee des reperes positionnels des elements geometriques", + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a positionner"), + SIMP (typ='TXM',fr="Repere alphanumerique de l'element geometrique"))), + CorrespondanceReperePositions = SIMP (typ=CorrespondanceReperePositionReseau, + statut='f', + fr="Correspondance entre Repere alphanumerique et coordonnees dans le reseau"), + OrientationP = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements geometriques du chargement partiel"), + )), + ZonesPeripheriquesHomogenes = FACT (statut='f',fr="Zones homogenes peripheriques au reseau", + Epaisseurs = SIMP (typ='R' ,max='**',statut='o',fr="Liste des epaisseurs (cm) des couches peripheriques"), + Materiaux = SIMP (typ=Materiau,max='**',statut='f',fr="Liste des materiaux des couches peripheriques"), + MateriauExterne = SIMP (typ=Materiau ,statut='f',fr="Materiau de remplissage de la zone externe du reseau hexagonal")), + ZonesPeripheriquesHeterogenes = FACT (max='**',statut='f',fr="Zones heterogenes peripheriques au reseau", + DimensionsExternes = SIMP (typ='R',min=2,max=2, statut='o', + fr=" Dimensions (cm) externes X et Y zone peripherique comprise"), + Decentrement = SIMP (typ='R',min=2,max=2, statut='f', + fr=" Coordonnees (cm) X et Y du centre de la zone peripherique / au centre du réseau"), + MateriauRemplissage = SIMP (typ=Materiau, statut='f', + fr="Materiau de remplissage de la zone"), + Boitier = FACT (statut='f',fr="Definition d'un boitier", + Epaisseur = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) du boitier dans sa partie lineaire"), + LongueurPartieLineaire = SIMP (typ='R',statut='o',fr= "Longueur (cm) de la partie lineaire du boitier"), + RayonExterneCoinBoitier = SIMP (typ='R',statut='o',fr= "Rayon externe (cm) du coin arrondi du boitier"), + MateriauExterne = SIMP (typ=Materiau,statut='f',fr="Materiau de remplissage de la zone externe au boitier"), + PositionBoitier = SIMP (typ='TXM',statut='o',defaut='Exterieure',into=('Exterieure','Interieure'), + fr="Position du boitier dans la zone")), + CroixControle = FACT (statut='f',fr="Definition d'une croix de controle", + Epaisseur = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) des branches de la croix de controle"), + EpaisseurEnveloppe = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) de l'enveloppe de la croix de controle"), + DemiLongueurCroixCentrale = SIMP (typ='R',statut='o', + fr= "Demi-longueur (cm) de la partie homogene au centre de la croix de controle"), + NombreBarres = SIMP (typ='I',statut='o',fr= "Nombre de barres dans une aile de la croix de controle"), + CellulesBarres = SIMP (typ=Cellule,max='**',statut='o', + fr= "Liste des cellules correspondant aux barres de la croix de contrôle, en partant du centre de la croix"), + MateriauCroix = SIMP (typ=Materiau,statut='o',fr="Materiau de la croix de controle"), + BranchesCroix = SIMP (typ='TXM',statut='o',defaut='NordOuest',into=('NordOuest','NordEst','SudOuest','SudEst'), + fr="Choix des deux branches de la croix de contrôle decrites"), + PositionCroix = SIMP (typ='TXM',statut='o',defaut='AxeExterieure',into=('AxeExterieure','Exterieure','Interieure'), + fr="Position de la croix dans la zone")), + Instrumentation = FACT (statut='f',fr="Definition de l'instrumentation", + Cellule = SIMP (typ=Cellule,statut='o',fr= "Cellule decrivant la geometrie de l'instrumentation"), + Position = SIMP (typ='TXM',statut='o',defaut='SudEst',into=('NordOuest','NordEst','SudOuest','SudEst'), + fr="Choix du coin ou sera centree la cellule")) + ) + ) ; # Fin RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DECOMPOSITION_DOMAINES : Classe de definition de domaines de calcul +# Pour le moment, on ne considere qu'une partition en 2D d'un reseau +# (a completer ulterieurement pour une geometrie generale) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DECOMPOSITION_DOMAINES = OPER (nom="DECOMPOSITION_DOMAINES", op=0, sd_prod=DecompositionDomaines, niveau = 'Geometries', + fr = "Decomposition en domaines d'un reseau", + ang = "Domain decomposition of a lattice", + NbDomainesOx = SIMP (statut='o', typ='I', fr="Nombre de domaines sur l'axe Ox"), + NbDomainesOy = SIMP (statut='o', typ='I', fr="Nombre de domaines sur l'axe Oy"), + OxRepartitionDomaines = SIMP (statut='o', typ='I', max='**', fr="Nombre de mailles du reseau pour chaque domaine de l'axe Ox"), + OyRepartitionDomaines = SIMP (statut='o', typ='I', max='**', fr="Nombre de mailles du reseau pour chaque domaine de l'axe Oy") + ) ; # Fin DECOMPOSITION_DOMAINES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRILLE_ASSEMBLAGE : Classe de definition des grilles composant le squelette des assemblages combustibles +# Caracteristiques technologiques (dimension, materiaux de composition) et positionnement simplifie +# des materiaux dans les canaux de l'assemblage pour dilution homogene a 2D dans le milieu peripherique. +# - Materiaux fournis sous forme de couples (nom de materiau et masse en g) +# - Repartition decrite en donnant pour une liste de materiaux (faisant partie des materiaux +# precedemment indiques) la liste des types de cellules (precedee du mot-cle TypeCellule) et des +# types de materiaux (precedes du mot-cle TypeMateriau) devant etre modifies par la presence des +# grilles +# < liste de MATERIAU >, +# TypeCellule < liste de types de cellule >, +# TypeMateriau < liste de types de materiau > +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRILLE_ASSEMBLAGE = OPER (nom="GRILLE_ASSEMBLAGE", op=0, sd_prod=GrilleAssemblage, niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une grille d'assemblage", + ang = "Definition of an elementary assembly grid", + TypeGrille = SIMP (typ='TXM',defaut='GrilleMelange',statut='f',fr="Type de grille de structure assemblage"), + Hauteur = SIMP (typ='R',defaut=3.3,statut='f',fr="Hauteur de la grille de structure assemblage en cm"), + Largeur = SIMP (typ='R',defaut=21.338,statut='f',fr="Largeur de la grille de structure assemblage en cm"), + MateriauxMasse = NUPL (max = '**', statut = 'o', + elements = (SIMP (typ=Materiau),SIMP (typ='R')), + fr = "Serie de couples (Materiau,masse en g) de composition de la grille"), + Repartition = FACT (max = '**', statut = 'o',fr="Repartition des materiaux par type de cellule ou par type de materiau", + regles = (AU_MOINS_UN ('TypeCellule', 'TypeMateriau'),), + MateriauGrille = SIMP (typ=Materiau,fr="Nom du materiau a repartir",statut='o'), + TypeCellule = SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de cellule ou est reparti le materiau"), + TypeMateriau = SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou est reparti le materiau") ), + CoefficientsThermohydrauliques = FACT (statut = 'f',fr="Donnees de thermohydraulique", + CoeffPerteCharge = SIMP (typ='R',statut='f', + fr="Coefficient Cn de perte de charge au sens monodimensionnel de la singularite"), + CoeffRedressement = SIMP (typ='R',statut='f',val_min=0, + fr="Coefficient R de redressement de l'ecoulement au passage de la singularite"), + CoeffCkg = SIMP (typ='R',statut='f', + fr="Coefficient lie au type de grille et de geometrie")), + Ailettes = FACT (statut = 'f',fr="Donnees des ailettes de melange", + PerteChargeSansAilettes = SIMP (typ='R',statut='f',fr="Coefficient Cn de perte de charge monodimensionnel sans ailettes"), + PerteChargeAvecAilettes = SIMP (typ='R',statut='f',fr="Coefficient Cn de perte de charge avec ailettes"), + CoeffRedressementSansAilettes = SIMP (typ='R',statut='f',val_min=0, + fr="Coefficient R de redressement de l'ecoulement sans ailettes"), + CoeffCkg = SIMP (typ='R',statut='f',fr="Coefficient lie au type de grille et de geometrie"), + AngleOrientation = SIMP (typ='R',statut='f',fr="Angle d'orientation des ailettes"), + Repartition = SIMP (typ='TXM',max='**',into=('Rien','Droite','Gauche','Haut','Bas'),statut='f', + fr="Positionnement des ailettes dans chaque quart de sous-canal (soit 4 donnees par sous-canal)")) + ) ; # Fin GRILLE_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout inferieur d'un assemblage combustible REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieInferieureAssemblageCombustible, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition de la partie inferieure d'un assemblage combustible REP", + ang = "Definition of the bottom part of a PWR fuel assembly", + MateriauEmbout = SIMP (typ=Materiau,statut='f',fr="Materiau de l'embout inferieur",defaut='ACIER'), + MasseBouchonInferieurCrayonCombustible = SIMP (typ='R' ,statut='o',fr="Masse (g) du bouchon inferieur du crayon combustible"), + HauteurBouchonInferieurCrayonCombustible = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) du bouchon inferieur du crayon combustible"), + MateriauBouchonInferieurCrayonCombustible = SIMP (typ=Materiau,statut='f',fr="Materiau du bouchon inferieur du crayon combustible",defaut='ZIRCALOY'), + MasseEmbout = SIMP (typ='R' ,statut='o',fr="Masse (g) de l'embout inferieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R' ,statut='o',fr="Epaisseur (cm) de la plaque adaptatrice de l'embout inferieur en cm"), + LargeurPlaqueAdaptatrice = SIMP (typ='R' ,statut='o',fr="Largeur (cm) de la plaque adaptatrice de l'embout inferieur"), + TrousPlaqueAdaptatrice = NUPL (fr="Dimensions des trous de la plaque adaptatrice", + max = '**', + statut = 'o', + elements = ( SIMP (typ='I' ,statut='o',fr="Nombre de trous de taille definie ci-apres"), + SIMP (typ='TXM',statut='o',into=('Rayon','Cotes'),fr="Choix de la forme des trous, elliptique ou rectangulaire"), + SIMP (typ='R' ,statut='o',min=2,max=2,fr="Rayons ou cotes (cm) des trous"), + SIMP (typ='TXM',statut='o',defaut='Hauteur',into=('Hauteur','Epaisseur'),fr="Mot-cle au choix"), + SIMP (typ='R' ,statut='o',fr="Hauteur (cm) des trous dans la plaque adaptatrice"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R', statut='o',fr="Hauteur (cm) du jeu entre bouchon combustible et plaque adaptatrice"), + HauteurPied = SIMP (typ='R', statut='o',fr="Hauteur (cm) du pied de l'embout inferieur"), + CapuchonRint = SIMP (typ='R', statut='f',fr="Rayon interne (cm) du capuchon"), + CapuchonRext = SIMP (typ='R', statut='f',fr="Rayon externe (cm) du capuchon"), + HauteurVisEpaulee = SIMP (typ='R', statut='f',fr="Hauteur des vis epaulees des tubes guides en cm"), + MasseVisEpaulee = SIMP (typ='R', statut='f',fr="Masse totale des vis epaulees des tubes guides en g"), + RintVisEpaulee = SIMP (typ='R', statut='f',fr="Rayon interne (cm) d'une vis epaulee"), + RextVisEpaulee = SIMP (typ='R', statut='f',fr="Rayon externe (cm) d'une vis epaulee"), + MasseFiltre = SIMP (typ='R', statut='f',fr="Masse (g) du filtre anti-debris"), + MateriauFiltre = SIMP (typ=Materiau, statut='f',fr="Materiau du filtre anti-debris", defaut='INCONEL'), + HauteurCale = SIMP (typ='R', statut='f',fr="Hauteur (cm) de la cale dans le crayon combustible"), + MateriauCale = SIMP (typ=Materiau, statut='f',fr="Materiau de la cale dans le crayon combustible",defaut='ACIER'), + RayonPionCentrage = SIMP (typ='R', statut='f',fr="Rayon externe des pions de centrage de la plaque inferieure coeur en cm"), + HauteurPionCentrage = SIMP (typ='R', statut='f',fr="Hauteur des pions de centrage de la plaque inferieure coeur en cm"), + HauteurOgivePionCentrage = SIMP (typ='R', statut='f',fr="Hauteur de l'ogive des pions de centrage de la plaque inferieure coeur en cm"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',fr="Materiau des pions de centrage de la plaque inferieure coeur",defaut='ACIER'), + BouchonTubGHauteur = SIMP (typ='R', statut='f',fr="Hauteur des bouchons des tubes guides en cm"), + BouchonTubGMateriau = SIMP (typ=Materiau, statut='f',fr="Materiau des bouchons des tubes guides",defaut='ACIER') + ) ; # Fin PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout superieur d'un assemblage combustible REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieSuperieureAssemblageCombustible, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition de la partie superieure d'un assemblage combustible REP", + ang = "Definition of the top part of a PWR fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',fr="Materiau de l'embout superieur",defaut='ACIER'), + MasseBouchonSuperieurCrayonCombustible = SIMP (typ='R', statut='o',fr="Masse du bouchon superieur du crayon combustible en g"), + HauteurBouchonSuperieurCrayonCombustible = SIMP (typ='R', statut='o',fr="Hauteur du bouchon superieur du crayon combustible en cm"), + MateriauBouchonSuperieurCrayonCombustible = SIMP (typ=Materiau, statut='f',fr="Materiau du bouchon superieur du crayon combustible",defaut='ZIRCALOY'), + RessortCrayonCombustible = SIMP (typ='R', statut='o',fr="Masse du ressort du crayon combustible en g"), + ForceRessortCrayonCombustible = SIMP (typ='R', statut='f',fr="Force du ressort du crayon combustible en N"), + HauteurChambreExpansion = SIMP (typ='R', statut='o',fr="Hauteur de la chambre d'expansion en cm"), + MasseEmbout = SIMP (typ='R', statut='o',fr="Masse de l'embout superieur en g"), + HauteurEmbout = SIMP (typ='R', statut='o',fr="Hauteur de l'embout superieur en cm"), + MasseRessortsEmbout = SIMP (typ='R', statut='o',fr="Masse des ressorts de l'embout superieur en g"), + MateriauRessortsEmbout = SIMP (typ=Materiau, statut='f',fr="Materiau des ressorts de l'embout superieur", defaut='INCONEL'), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R', statut='o',fr="Epaisseur de la plaque adaptatrice en cm"), + LargeurPlaqueAdaptatrice = SIMP (typ='R', statut='o',fr="Largeur de la plaque adaptatrice en cm"), + TrousPlaqueAdaptatrice = NUPL (fr="Dimensions des trous de la plaque adaptatrice", + max = '**', + statut = 'o', + elements = ( SIMP (typ='I', fr="Nombre de trous d'un type donne"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot indiquant la donnee des rayons ou cotes des trous"), + SIMP (typ='R' ,min=2,max=2, fr="Rayons mineur et majeur ou Cotes du trou en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'), fr="Mot cle introduisant la hauteur des trous"), + SIMP (typ='R', fr="Hauteur du trou en cm"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R', statut='o',fr="Hauteur du jeu entre Bouchon combustible et Plaque adaptatrice en cm"), + EpaisseurJupe = SIMP (typ='R', statut='o',fr="Epaisseur de la jupe de l'embout superieur en cm"), + HauteurJupe = SIMP (typ='R', statut='f',fr="Hauteur de la jupe de l'embout superieur en cm"), + RayonPionCentrage = SIMP (typ='R', statut='f',fr="Rayon des pions de centrage superieurs en cm"), + HauteurPionCentrage = SIMP (typ='R', statut='f',fr="Hauteur des pions de centrage superieurs en cm"), + HauteurOgivePionCentrage = SIMP (typ='R', statut='f',fr="Hauteur de l'ogive des pions de centrage superieurs en cm"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',fr="Materiau des pions de centrage superieurs",defaut='ACIER'), + RayonInterneManchon = SIMP (typ='R', statut='f',fr="Rayon interne des manchons des tubes guides en cm"), + RayonExterneManchon = SIMP (typ='R', statut='f',fr="Rayon externe des manchons des tubes guides en cm"), + HauteurManchon = SIMP (typ='R', statut='f',fr="Hauteur des manchons des tubes guides en cm"), + MasseManchon = SIMP (typ='R', statut='f',fr="Masse d'un manchon des tubes guides en g") + ) ; # Fin PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_TYPE : Classe de definition d'un type d'assemblage (ensemble de crayons ou de reseaux quelconques) +# Rajout des structures grilles et embouts (dans le cas des REP) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_TYPE = OPER (nom="ASSEMBLAGE_TYPE",op=0,sd_prod=AssemblageType, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'un assemblage type et des elements associes eventuels", + ang = "Definition of an assembly type and its associated elements", + Geometrie = SIMP (typ=(Cellule,Reseau,GeometrieCombinatoire),statut='o',max='**', + fr="Liste des geometries composant l'assemblage"), + GrillesStructure = NUPL (max = '**', statut = 'f',fr="Positions axiales des grilles", + elements = ( SIMP (typ=GrilleAssemblage,fr="Type de grille"), + SIMP (typ='R',max='**', + fr="Positions axiales des milieux des grilles (en cm) / a la limite inferieure du pied de l'assemblage"))), + PartieInferieure = SIMP (typ=PartieInferieureAssemblageCombustible,statut='f',fr="Type d'embout inferieur"), + PartieSuperieure = SIMP (typ=PartieSuperieureAssemblageCombustible,statut='f',fr="Type d'embout superieur"), + ElementsAssocies = SIMP (typ=(ElementsGrappeCommande,ElementsAbsorbantsFixes,GrappeBouchonAssemblage),max='**',statut='f',fr="Liste des elements technologiques associes") + ) ; # Fin ASSEMBLAGE_TYPE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENT_BARRE : Classe de définition d'une barre element d'un assemblage +# Definition des barres des grappes de commande (barre et gaine, et composants axiaux) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENT_BARRE = OPER (nom="ELEMENT_BARRE", op=0, sd_prod=ElementBarre, niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une barre element d'un assemblage", + ang = "Definition of an assembly rod element", + MateriauInferieur = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau composant la partie inferieure de la barre"), + MateriauSuperieur = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau composant la partie superieure de la barre"), + HauteurBarre = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) de la barre"), + HauteurInferieure = SIMP (typ='R' ,statut='f',fr="Hauteur (cm) de la partie inferieure de la barre"), + HauteurSuperieure = SIMP (typ='R' ,statut='f',fr="Hauteur (cm) de la partie superieure de la barre"), + RintPartieInferieure = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la partie inferieure de la barre"), + RintPartieSuperieure = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la partie superieure de la barre"), + RextPartieInferieure = SIMP (typ='R' ,statut='o',fr="Rayon Externe (cm) de la partie inferieure de la barre"), + RextPartieSuperieure = SIMP (typ='R' ,statut='f',fr="Rayon Externe (cm) de la partie superieure de la barre"), + MasseRessort = SIMP (typ='R' ,statut='o',fr="Masse (g) du ressort de la barre"), + MateriauRessort = SIMP (typ=Materiau ,statut='o',fr="Materiau du ressort de la barre"), + HauteurRessort = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) du ressort de la barre"), + BouchonInfHauteur = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Hauteur (cm) du bouchon inferieur de la barre"), + BouchonSupHauteur = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Hauteur (cm) du bouchon superieur de la barre"), + BouchonInfRayon = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon externe (cm) du bouchon inferieur de la barre"), + BouchonSupRayon = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon externe (cm) du bouchon superieur de la barre"), + MateriauGaine = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau de la gaine externe de la barre"), + RayonInterneGaine = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la gaine externe de la barre"), + RayonExterneGaine = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Externe (cm) de la gaine externe de la barre") + ) ; # Fin ELEMENT_BARRE +#---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_GRAPPE_COMMANDE : Classe de définition des éléments des grappes de commande +# Association avec les différents types de barres absorbantes +# Description simplifiée de l'araignée et du bouchon des barres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_GRAPPE_COMMANDE = OPER (nom="ELEMENTS_GRAPPE_COMMANDE",op=0,sd_prod=ElementsGrappeCommande,niveau = 'ElementsTechnologiquesAssemblages', + fr = "Définition des éléments des grappes de commande", + ang = "Definition of control rod cluster components", + ElementsBarre = SIMP (typ= ElementBarre, max='**',statut='o',fr="Liste des barres absorbantes associees"), + HauteurPasInsertion = SIMP (typ='R',defaut=1.5875 ,statut='o',fr="Hauteur (cm) d'un pas d'insertion des grappes"), + CourseTotalePossible = SIMP (typ='R',defaut=361.8 ,statut='o',fr="Course totale possible (cm) d'insertion d'une grappe"), + CoteInferieureGrappe = SIMP (typ='R',defaut=8.5705 ,statut='o',fr="Cote inferieure (cm) d'une grappe / zone active ?"), + VitesseDeplacement = SIMP (typ='R',defaut=72. ,statut='o',fr="Vitesse de deplacement d'une grappe en pas/mn"), + NbPasInsertion = SIMP (typ='I',defaut=225 ,statut='o',fr="Nombre maximum de pas d'insertion "), + Araignee16Phauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 16 petites tiges d'accrochage des barres"), + Araignee4Mhauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 4 tiges moyennes d'accrochage des barres"), + Araignee4Ghauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 4 grandes tiges d'accrochage des barres"), + HauteurPommeau = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) du pommeau d'accrochage de la grappe"), + RayonPommeau = SIMP (typ='R',defaut=0. ,statut='o',fr="Rayon (cm) du pommeau d'accrochage de la grappe") + ) ; # Fin ELEMENTS_GRAPPE_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ABSORBANTS_FIXES : Classe de definition des elements des grappes d'absorbants fixes +# Description des pyrex uniquement pour le moment +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_ABSORBANTS_FIXES = OPER (nom="ELEMENTS_ABSORBANTS_FIXES",op=0,sd_prod=ElementsAbsorbantsFixes, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition des elements des grappes d'absorbants fixes", + ang = "Definition of non movable absorber control rod cluster elements", +# Limitation a 12 caracteres +# HBouchInfPyrex = SIMP (typ='R',statut='f'), +# RBouchInfPyrex = SIMP (typ='R',statut='f'), +# HZoneVidePyrex = SIMP (typ='R',statut='f'), +# HBouchSupPyrex = SIMP (typ='R',statut='f'), +# RBouchSupPyrex = SIMP (typ='R',statut='f'), +# MatBouchonPyrex = SIMP (typ=Materiau, statut='f') + BIPyrexHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm du bouchon inferieur du crayon pyrex"), + BIPyrexRayon = SIMP (typ='R', statut='o',fr="Rayon en cm du bouchon inferieur du crayon pyrex"), + PyrexZoneVideHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm de la zone vide dans le crayon pyrex"), + BSPyrexHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm du bouchon superieur du crayon pyrex"), + BSPyrexRayon = SIMP (typ='R', statut='o',fr="Rayon en cm du bouchon superieur du crayon pyrex"), + PyrexMateriauBouchon = SIMP (typ=Materiau, statut='o',fr="Materiau du bouchon du crayon pyrex") + ) ; # Fin ELEMENTS_ABSORBANTS_FIXES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRAPPE_BOUCHON_ASSEMBLAGE : Classe de definition d'une grappe bouchon REP +# Rappel : Les grappes bouchons se trouvent dans le cas des REP inseres dans la partie embout superieur de tous les assemblages +# ne comportant pas de grappe d'absorbant. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRAPPE_BOUCHON_ASSEMBLAGE = OPER (nom="GRAPPE_BOUCHON_ASSEMBLAGE",op=0,sd_prod=GrappeBouchonAssemblage, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une grappe bouchon d'assemblage combustible", + ang = "Definition d'une grappe bouchon d'assemblage combustible", + HauteurPartieBasseBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la partie basse du bouchon"), + RayonPartieBasseBouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la partie basse du bouchon"), + Hauteur1PartieIntermediaire1Bouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la 1ere partie intermédiaire du bouchon"), + Rayon1PartieIntermediaire1Bouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la 1ere partie intermédiaire du bouchon"), + Hauteur2PartieIntermediaire2Bouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la 2eme partie intermédiaire du bouchon"), + Rayon2PartieIntermediaire2Bouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la 2eme partie intermédiaire du bouchon"), + RegionSousPlaqueHauteurBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la region sous plaque"), + RegionSurPlaqueHauteurBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la region au-dessus de la plaque"), + Rayon3BouchonRegionPlaque = SIMP (typ='R' ,statut='o',fr="Rayon en cm du bouchon au niveau de la plaque"), + HauteurSupport = SIMP (typ='R' ,statut='o',fr="Hauteur en cm du support des bouchons"), + MasseGrappe = SIMP (typ='R' ,statut='o',fr="Masse en g de la grappe bouchon"), + Materiau = SIMP (typ=Materiau,statut='o',fr="Materiau de la grappe bouchon",defaut='ACIER') + ) ; # Fin GRAPPE_BOUCHON_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ASSEMBLAGE : Classe de définition des éléments associes a l'assemblage combustible REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#ELEMENTS_ASSEMBLAGE = OPER (nom="ELEMENTS_ASSEMBLAGE",op=0,sd_prod=ElementsAssemblage, +# +# fr = "Definition des elements associes a l'assemblage", +# ang = "Definition of the fuel assembly associated elements", +# GrappeBouchon = SIMP (typ=GrappeBouchonAssemblage,statut='o'), +# CrayonsAbsorbants = SIMP (typ=ElementsAbsorbants,statut='o'), +# GrappesCommande = SIMP (typ=ElementsGrappeCommande,statut='o') +# ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classes CONDITION_LIMITE elementaires : Classes de definition de Conditions limites elementaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VIDE = OPER (nom="VIDE",op=0,sd_prod=Vide, niveau = 'ConditionsLimites', + fr = "Condition aux limites de vide", + ang = "Void boundary condition" ) ; +REFLEXION_ISOTROPE = OPER (nom="REFLEXION_ISOTROPE",op=0,sd_prod=ReflexionIsotrope, niveau = 'ConditionsLimites', + fr = "Condition aux limites de reflexion isotrope", + ang = "Isotropic Reflexion boundary condition" ) ; +REFLEXION_SPECULAIRE = OPER (nom="REFLEXION_SPECULAIRE",op=0,sd_prod=ReflexionSpeculaire, niveau = 'ConditionsLimites', + fr = "Condition aux limites de reflexion speculaire", + ang = "Specular Reflexion boundary condition" ) ; +ALBEDO = OPER (nom="ALBEDO",op=0,sd_prod=Albedo, niveau = 'ConditionsLimites', + fr = "Condition aux limites d'albedo", + ang = "Albedo boundary condition", + albedo = SIMP (typ='R',statut='o',max='**',fr="Valeurs des albedos") ) ; +TRANSLATION = OPER (nom="TRANSLATION",op=0,sd_prod=Translation, niveau = 'ConditionsLimites', + fr = "Condition aux limites de translation", + ang = "Translation boundary condition", + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Axe de translation") ) ; +ROTATION = OPER (nom="ROTATION",op=0,sd_prod=Rotation, niveau = 'ConditionsLimites', + fr = "Condition aux limites de rotation", + ang = "Rotational boundary condition", + Centre = SIMP (typ=Point ,statut='o',fr="Centre de la rotation"), + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Axe de rotation"), + Angle = SIMP (typ='R' ,statut='o',fr="Angle de rotation",defaut=90.) ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_SPECIALE : Classe de definition de Conditions limites sur les surfaces elementaires de la geometrie +# modifiant la CL generale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_SPECIALE = OPER (nom="CONDITION_LIMITE_SPECIALE",op=0,sd_prod=SpecialeConditionLimite, + niveau = 'ConditionsLimites', + fr = "Condition limite particuliere qui sera plaquee sur la geometrie", + ang = "Special boundary condition added to the geometry", + Type = SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation),statut='o', + fr="Type de condition limite a appliquer aux surfaces listees"), + ZonesApplication = SIMP (typ=(Segment,ArcCercle,Conique),max='**',statut='o', + fr="Liste des segments ou surfaces sur lesquels porte la condition limite") + ) ; # Fin CONDITION_LIMITE_SPECIALE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_GENERALE : Classe de definition des conditions limites de l'objet geometrique complet +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_GENERALE = OPER (nom="CONDITION_LIMITE_GENERALE",op=0,sd_prod=GeneraleConditionLimite, + niveau = 'ConditionsLimites', + fr = "Condition limite a la surface externe de la geometrie complete", + ang = "Boundary condition for the complete geometry", + ZoneCalculee = NUPL (statut='f',min=2,max=2,fr="Droites ou plans delimitant la zone de calcul", + elements = (SIMP (typ=(Droite,Plan)), SIMP (typ='TXM',into=('Plus','Moins')))), + ParDefautCondition = SIMP (typ=(Vide, ReflexionIsotrope, ReflexionSpeculaire, Albedo), + defaut=ReflexionIsotrope, + statut='f', + fr="Condition limite par defaut"), + ParticulieresConditions = NUPL (fr = "Conditions particulieres modifiant localement la condition limite par defaut", + statut = 'f', max = '**', + elements = (SIMP (typ='TXM',into=('X-','X+','Y-','Y+','Z-','Z+','R+','X','Y','Z')), + SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation)))), + SupplementairesConditions = SIMP (typ = SpecialeConditionLimite, + statut = 'f', max = '**', + fr = "Conditions limites non exprimables avec les donnees precedentes") + ) ; # Fin CONDITION_LIMITE_GENERALE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="POSITION_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PositionAssemblageCombustible, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Position des assemblages combustibles", + ang = "Position of fuel assemblies", + NbAssemblagesCombustibles = SIMP (typ='I',statut='o',defaut=157,fr="Nombre d'assemblages combustibles positionnes"), + regles = (UN_PARMI('PositionReseau', 'Positions'),), + PositionReseau = SIMP (typ=CorrespondanceReperePositionReseau,statut="f",fr="Objet donnant la correspondance entre Repere et Coordonnees entieres des assemblages"), + Positions = NUPL (max='**',statut='f', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere de l'assemblage"))) + ) ; # Fin POSITION_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_INSTRUMENTATION_INTERNE : Classe de definition de la position des assemblages instrumentes dans le cœur d'un REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_INSTRUMENTATION_INTERNE = OPER (nom="POSITION_INSTRUMENTATION_INTERNE",op=0,sd_prod=PositionInstrumentationInterne, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition de la position des assemblages instrumentes", + ang = "Definition of neutron flux detector position", +# TypePalier = SIMP (typ='TXM',max='**',statut='o'), + NbAssemblagesInstrumentes = SIMP (typ='I',statut='o',fr="Nombre d'assemblages instrumentes"), + Positions = NUPL ( + max = '**', + statut = 'o', + elements = (SIMP (typ='TXM',fr= "Type d'instrumentation (CFM, Collectron, ou Autre)"), + SIMP (typ='I',min=2,max=2,fr= "Coordonnees entieres de l'assemblage instrumente dans le reseau"))) + ) ; # Fin POSITION_INSTRUMENTATION_INTERNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe IMPLANTATION_GRAPPES_COMMANDE : Classe de definition de l'implantation des grappes de commande pour un type de schema de grappe (REP) +# Donnees de la position (coordonnees entieres en xy), du type de grappe et du groupe d'appartenance +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +IMPLANTATION_GRAPPES_COMMANDE = OPER (nom="IMPLANTATION_GRAPPES_COMMANDE", op=0, sd_prod=ImplantationGrappesCommande, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Position radiale des grappes de commande pour un schema d'implantation particulier", + ang = "Control rod cluster radial positions and types", + TypeSchema = SIMP (typ='TXM',statut='o',fr="Identificateur arbitraire du type de schema"), + NbTotalGrappes = SIMP (typ='I' ,statut='o',fr="Nombre total de grappes du schema"), + PositionsEtType = NUPL (max='**' ,statut='o', + elements=(SIMP (typ='TXM',statut='o',fr="Nom du groupe de grappes"), + SIMP (typ='I' ,statut='o',fr="Nombre de grappes du groupe"), + SIMP (typ='TXM',statut='o',fr="Type de grappes (exemple : '8B', '12B', '24B')"), + SIMP (typ='I' ,statut='o',max='**',fr="Coordonnees entieres des grappes dans le reseau coeur"))) + ) ; # Fin IMPLANTATION_GRAPPES_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe STRUCTURES_INTERNES_REACTEUR : Classe de definition des structures internes d'un coeur de REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +STRUCTURES_INTERNES_REACTEUR = OPER (nom="STRUCTURES_INTERNES_REACTEUR", op=0, sd_prod=StructuresInternesReacteur, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition des structures internes d'un cœur REP", + ang = "Definition of a PWR core internal structures", + PlaqueInferieureCoeur = FACT ( + Epaisseur = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque inferieure du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque inferieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayons ou cotes des trous en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou en cm")))), + PlaqueSuperieureCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur de la plaque superieure du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque superieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayons ou cotes des trous en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou en cm")))), + CloisonnementCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur du cloisonnement du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER', fr="Materiau du cloisonnement du coeur"), + DimensionsInterieures = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre d'assemblages dans la rangee"), + SIMP (typ='TXM',into=('Assemblages','Assemblies'), fr="Mot-cle suivant le nombre d'assemblages"), + SIMP (typ='TXM',into=('Largeur','Cote'), fr="Mot-cle precedant la largeur interieure du cloisonnement"), + SIMP (typ='R', fr="Largeur interieure du cloisonnement en cm"), + SIMP (typ='TXM',into=('NbJeuCloisonGrille','NbJeu'),fr="Mot-cle precedant le nombre de jeux CloisonGrille"), + SIMP (typ='I', fr="Nombre de jeux CloisonGrille"))), + TrousDepressurisation = NUPL (elements=(SIMP (typ='I', fr="Nombre de trous de depressurisation"), + SIMP (typ='TXM',into=('Rayon','Radius'),fr="Mot-cle precedant la valeur du rayon des trous"), + SIMP (typ='R',fr="Rayon des trous de depressurisation en cm"))), + TemperatureMoyenne = SIMP (typ='R',fr="Temperature Moyenne du cloisonnement en Celsius")), + RenfortsInternes = FACT (statut='f', + Nombre = SIMP (typ='I',max='**',statut='o',fr="Liste des nombres de chaque type de renfort interne"), + Epaisseur = SIMP (typ='R',max='**',statut='o',fr="Nombre de renforts internes pour chaque type de renfort"), + Materiau = SIMP (typ=Materiau,max='**',statut='f',defaut='ACIER',fr="Materiau de chaque type de renfort"), + NbTrousDepressurisation = SIMP (typ='I',max='**',statut='o',fr="Nombre de trous dans chaque type de renfort"), + RayonsTrousDepressurisation = SIMP (typ='R',max='**',statut='o',fr="Rayons des trous dans chaque type de renfort en cm"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne des renforts internes en Celsius")), + EnveloppeVirole = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne de l'enveloppe du coeur en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe de l'enveloppe du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de l'enveloppe du coeur"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne de l'enveloppe du coeur en Celsius")), + Boucliers = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne des boucliers thermiques du coeur en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe des boucliers thermiques du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau des boucliers thermiques du coeur"), + Secteurs = NUPL (max='**',statut='f',elements=( + SIMP (typ='R',statut='o',fr="Angle en degres du debut du secteur du bouclier / axe Ox"), + SIMP (typ='R',statut='o',fr="Angle en degres du secteur du bouclier"))), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne en Celsius des boucliers du coeur")), + Cuve = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne de la cuve en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe de la cuve en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la cuve"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne en Celsius de la cuve")) + ) ; # Fin STRUCTURES_INTERNES_REACTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRESSURISEUR : Classe de definition d'un pressuriseur REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRESSURISEUR = OPER (nom="PRESSURISEUR", op=0, sd_prod=Pressuriseur, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'un pressuriseur REP", + ang = "Definition of a PWR pressurizor", + TmNominale = SIMP (typ='R',statut='o',defaut=345.0 ,fr="Temperature nominale en Celsius dans le pressuriseur"), + Volume = SIMP (typ='R',statut='o',defaut=39.865 ,fr="Volume total du pressuriseur en m3"), + VolumeHaut = SIMP (typ='R',statut='o',defaut=37.196 ,fr="Volume d'eau au niveau haut du pressuriseur en m3"), + VolumeBas = SIMP (typ='R',statut='o',defaut=2.597 ,fr="Volume d'eau au niveau bas du pressuriseur en m3"), + DiametreExterne = SIMP (typ='R',statut='o',defaut=235. ,fr="Diametre externe du pressuriseur en cm"), + Hauteur = SIMP (typ='R',statut='o',defaut=1280. ,fr="Hauteur du pressuriseur en cm"), + Pression = SIMP (typ='R',statut='o',defaut=172.37 ,fr="Pression de calcul du pressuriseur en bars"), + CapaciteChaufferette = SIMP (typ='R',statut='o',defaut=1440. ,fr="Capacite des chaufferettes du pressuriseur en kW"), + NbChaufferettes = SIMP (typ='I',statut='o',defaut=60 ,fr="Nombre de chaufferettes du pressuriseur"), + MasseAVide = SIMP (typ='R',statut='o',defaut=78. ,fr="Masse a vide du pressuriseur en tonnes"), + MasseEnService = SIMP (typ='R',statut='o',defaut=95. ,fr="Masse du pressuriseur en service normal en tonnes"), + PressionDecharge = SIMP (typ='R',statut='o',defaut=162. ,fr="Pression d'ouverture de la decharge du pressuriseur en bars"), + PressionSoupape = SIMP (typ='R',statut='o',defaut=171.5 ,fr="Pression de tarage des soupapes de surete du pressuriseur en bars"), + VolumeDecharge = SIMP (typ='R',statut='o',defaut=37. ,fr="Volume total du reservoir de decharge du pressuriseur en m3"), + VolumeliquideDecharge = SIMP (typ='R',statut='o',defaut=25.5 ,fr="Volume de liquide du reservoir de decharge du pressuriseur en fct normal en m3") + ) ; # Fin PRESSURISEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GENERATEUR_VAPEUR : Classe de definition d'un generateur de vapeur REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GENERATEUR_VAPEUR = OPER (nom="GENERATEUR_VAPEUR", op=0, sd_prod=GenerateurVapeur, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'un generateur de vapeur REP", + ang = "Definition of a PWR Steam Generator", + HauteurTotale = SIMP (typ='R',statut='o',defaut=2064.8 ,fr="Hauteur totale d'un GV en cm"), + DiametreMaximum = SIMP (typ='R',statut='o',defaut=446.8 ,fr="Diametre maximum d'un GV en cm"), + DiametreMinimum = SIMP (typ='R',statut='o',defaut=343.4 ,fr="Diametre minimum d'un GV en cm"), + NbTubes = SIMP (typ='I',statut='o',defaut=3330 ,fr="Nombre de tubes d'un GV"), + TubeDiametre = SIMP (typ='R',statut='o',defaut=2.222 ,fr="Diametre des tubes d'un GV en cm"), + TubeEpaisseur = SIMP (typ='R',statut='o',defaut=0.127 ,fr="Epaisseur des tubes d'un GV en cm"), + PasReseau = SIMP (typ='R',statut='o',defaut=3.254 ,fr="Pas du reseau des tubes d'un GV en cm"), + LongueurTube = SIMP (typ='R',statut='o',defaut=963.7 ,fr="Longueur droite des tubes d'un GV en cm"), + SurfaceEchange = SIMP (typ='R',statut='o',defaut=4700. ,fr="Surface d'échange d'un GV en m2"), + PlaqueEpaisseur = SIMP (typ='R',statut='o',defaut=53.4 ,fr="Epaisseur de la plaque tubulaire d'un GV en cm"), + PlaqueDiametre = SIMP (typ='R',statut='o',defaut=345.4 ,fr="Diametre de la plaque tubulaire d'un GV en cm"), + NbEntretoises = SIMP (typ='I',statut='o',defaut=8 ,fr="Nombre de plaques entretoises d'un GV"), + MasseAVide = SIMP (typ='R',statut='o',defaut=300. ,fr="Masse a vide d'un GV en tonnes"), + MasseFctNormal = SIMP (typ='R',statut='o',defaut=364. ,fr="Masse en fonctionnement normal d'un GV en tonnes"), + MasseFaisceau = SIMP (typ='R',statut='o',defaut=51.5 ,fr="Masse du faisceau tubulaire d'un GV en tonnes"), + ViroleSupEpaisseur = SIMP (typ='R',statut='o',defaut=9.4 ,fr="Epaisseur de la virole superieure d'un GV en cm"), + ViroleInfEpaisseur = SIMP (typ='R',statut='o',max=3,defaut=(8.4,7.4),fr="Epaisseur(s) de la virole inferieure d'un GV en cm"), + MateriauEntretroises = SIMP (typ=Materiau,statut='o',defaut='ACIER' ,fr="Materiau des plaques entretoises d'un GV"), + MateriauTube = SIMP (typ=Materiau,statut='o',defaut='INCONEL',fr="Materiau des tubes du faisceau d'un GV"), + GeomReseau = SIMP (typ='TXM',statut='o',defaut='Carre',into=('Carre','Triangulaire'), + fr="Type de geometrie du reseau des tubes d'un GV") + ) ; # Fin GENERATEUR_VAPEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POMPE_PRIMAIRE : Classe de definition d'une pompe primaire REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POMPE_PRIMAIRE = OPER (nom="POMPE_PRIMAIRE", op=0, sd_prod=PompePrimaire, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'une pompe primaire REP", + ang = "Definition of a PWR primary pomp", + Type = SIMP (typ='TXM',statut='o', defaut='93-D7' ,fr="Type de pompe"), + TensionNominale = SIMP (typ='R' ,statut='o', defaut=6600. ,fr="Tension nominale en Volts d'une pompe primaire"), + VitesseRotation = SIMP (typ='I' ,statut='o', defaut=1485 ,fr="Vitesse de rotation tours/mn ? d'une pompe primaire"), + DebitConception = SIMP (typ='R' ,statut='o', defaut=21250. ,fr="Debit de conception m3/h d'une pompe primaire"), + HauteurManometrique = SIMP (typ='R' ,statut='o', defaut=90.7 ,fr="Hauteur manometrique ds pompes en mCE"), + PuissanceFroid = SIMP (typ='R' ,statut='o', defaut=6600. ,fr="Puissance absorbee a froid sur l'arbre de la pompe en kW"), + PuissanceChaud = SIMP (typ='R' ,statut='o', defaut=5000. ,fr="Puissance absorbee a chaud sur l'arbre de la pompe en kW"), + PuissanceNominale = SIMP (typ='R' ,statut='o', defaut=5300. ,fr="Puissance absorbee nominale par moteur en kW"), + TensionMinimale = SIMP (typ='R' ,statut='o', defaut=0.75 ,fr="Tension minimale de démarrage en fraction de la tension nominale"), + Masse = SIMP (typ='R' ,statut='o', defaut=93.9 ,fr="Masse d'une pompe primaire en tonnes avec huile et eau"), + HauteurTotale = SIMP (typ='R' ,statut='o', defaut=8.1 ,fr="Hauteur totale d'une pompe primaire en cm"), + Inertie = SIMP (typ='R' ,statut='o', defaut=3730. ,fr="Inertie des pieces tournantes en kg.m2"), + DebitInjection = SIMP (typ='R' ,statut='o', defaut=1800. ,fr="Debit d'injection aux joints en l/h") + ) ; # Fin POMPE_PRIMAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARACTERISTIQUES_PALIER : Classe de definition des donnees generales d'un type de palier de reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARACTERISTIQUES_PALIER = OPER (nom="CARACTERISTIQUES_PALIER",op=0,sd_prod=CaracteristiquesPalier, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees generales pour un type de palier de reacteur", + ang = "General data for a particular type of nuclear reactor", + TypePalier = SIMP (typ='TXM',statut='o',fr="Identificateur du type de palier"), + PositionCombustible = SIMP (typ=PositionAssemblageCombustible ,statut='o', + fr="Objet definissant la position des assemblages dans le coeur"), + PositionDetecteur = SIMP (typ=PositionInstrumentationInterne,statut='o', + fr="Objet definissant la position des assemblages instrumentes"), + StructuresInternes = SIMP (typ=StructuresInternesReacteur ,statut='o', + fr="Objet definissant les structures internes du reacteur"), + Pressuriseur = SIMP (typ=Pressuriseur ,statut='f', + fr="Objet contenant les caracteristiques du pressuriseur du reacteur"), + Generateur = SIMP (typ=GenerateurVapeur ,statut='f', + fr="Objet contenant les caracteristiques des GV du reacteur"), + Pompes = SIMP (typ=PompePrimaire ,statut='f', + fr="Objet contenant les caracteristiques des pompes primaires du reacteur"), + CoeurPElectriqueNominle = SIMP (typ='R',statut='o',defaut= 900., + fr="Puissance electrique nominale de coeur en MW"), + CoeurPThermiqueNominale = SIMP (typ='R',statut='o',defaut=2775., + fr="Puissance thermique nominale de coeur en MWth"), + ChaudierePThermiqueNominale = SIMP (typ='R',statut='o',defaut=2785., + fr="Puissance thermique nominale de la chaudiere MWth"), + ChaudierePmaxThermique = SIMP (typ='R',statut='o',defaut=2905., + fr="Puissance thermique maximum de la chaudiere MWth"), + NbBouclesPrimaires = SIMP (typ='I',statut='o',defaut=3, + fr="Nombre de boucles primaires"), + ProportionDebitCoeurCuve = SIMP (typ='R',statut='o',defaut=0.97, + fr="Rapport du debit coeur / debit cuve"), + PressionNominalePrimaire = SIMP (typ='R',statut='o',defaut=155., + fr="Pression nominale du circuit primaire en bars"), + PerteChargeCoeurNominale = SIMP (typ='R',statut='o',defaut=1.24, + fr="Perte de charge nominale dans le coeur en bars"), + PerteChargeCuveNominale = SIMP (typ='R',statut='o',defaut=2.34, + fr="Perte de charge nominale dans la cuve en bars"), + TmNomSortieCuveEntreeGV = SIMP (typ='R',statut='o',defaut=323.2, + fr="Temperature nominale sortie Cuve / Entree GV en Celsius"), + TmNomSortieGVEntreePPrimaire = SIMP (typ='R',statut='o',defaut=285.8, + fr="Temperature nominale sortie GV / Entree Pompe primaire en Celsius"), + TmNomSortiePPrimaireEntreeCuve = SIMP (typ='R',statut='o',defaut=286., + fr="Temperature nominale sortie Pompe primaire / Entree Cuve en Celsius"), + TmEntreeCoeurPnulle = SIMP (typ='R',statut='o',defaut=286.0, + fr="Temperature en Celsius du moderateur a puissance nulle a l'entree du coeur"), + TmEntreeCoeurPnom = SIMP (typ='R',statut='o',defaut=286.4, + fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + TmSortieCoeurPnom = SIMP (typ='R',statut='o',defaut=324.7, + fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + TmMoyenneCoeurPnom = SIMP (typ='R',statut='o',defaut=305.3, + fr="Temperature moyenne en Celsius du moderateur dans le coeur actif"), + TmMoyenneCuvePnom = SIMP (typ='R',statut='o',defaut=305.0, + fr="Temperature moyenne en Celsius du moderateur dans la cuve"), + TmMoyenneReflecteurPnom = SIMP (typ='R',statut='o',defaut=296.0, + fr="Temperature moyenne en Celsius du reflecteur radial"), + TcMoyennePnom = SIMP (typ='R',statut='o',defaut=600.0, + fr="Temperature moyenne en Celsius du combustible dans le coeur"), + TcCentrePnom = SIMP (typ='R',statut='o',defaut=1830., + fr="Temperature au centre Pastille en Celsius en fct nominal"), + SectionEcoulementCoeur = SIMP (typ='R',statut='o',defaut=3.86, + fr="Section d'ecoulement du moderateur dans le coeur en m2"), + SurfaceEchangeCoeur = SIMP (typ='R',statut='o',defaut=4520., + fr="Surface d'échange dans le coeur en m2"), + VolumeEauCuve = SIMP (typ='R',statut='o',defaut=105.8, + fr="Volume d'eau primaire m3 dans la cuve (coeur et internes en place)"), + VolumeEauPrimaire = SIMP (typ='R',statut='o',defaut=215., + fr="Volume total d'eau primaire m3)"), + VolumeBallonRCV = SIMP (typ='R',statut='o',defaut=7., + fr="Volume du ballon RCV m3)"), + DebitThermohConception = SIMP (typ='R',statut='o',defaut=63325., + fr="Debit thermohydraulique de conception dans la cuve en m3/h"), + DebitMecaniqueConception = SIMP (typ='R',statut='o',defaut=70920., + fr="Debit mecanique de conception dans la cuve en m3/h"), + BypassConception = SIMP (typ='R',statut='o',defaut=7., + fr="Pourcentage de debit Conception dans le contournement du coeur en %"), + BypassSpin = SIMP (typ='R',statut='o',defaut=4.5, + fr="Pourcentage de debit dans le contournement du coeur en % utilise dans le SPIN"), + DebitBestEstimateBoucle = SIMP (typ='R',statut='o',defaut=21075., + fr="Debit best-estimate par boucle en m3/h"), + DebitMassiqueNominal = SIMP (typ='R',statut='o',defaut=47675., + fr="Debit massique nominal best-estimate dans la cuve en t/h"), + DebitEffMassiqueNominal = SIMP (typ='R',statut='o',defaut=45530., + fr="Debit massique effectif du coeur en t/h"), + FluxMoyenChaleurCoeur = SIMP (typ='R',statut='o',defaut=60., + fr="Flux de chaleur moyen dans le coeur W/cm2"), + FluxMaxChaleurCoeur = SIMP (typ='R',statut='o',defaut=128., + fr="Flux de chaleur maximal dans le coeur W/cm2"), + PlinMoyen = SIMP (typ='R',statut='o',defaut=178., + fr="Puissance lineique Moyenne en W/cm"), + PlinMax = SIMP (typ='R',statut='o',defaut=382., + fr="Puissance lineique Maximum en W/cm"), + FacteurFQN = SIMP (typ='R',statut='o',defaut=2.69, + fr="Facteur de point chaud de conception FQN"), + FacteurFDH = SIMP (typ='R',statut='o',defaut=1.55, + fr="Facteur total d'élévation d'enthalpie FDH de conception"), + RECMinimalNominal = SIMP (typ='R',statut='o',defaut=1.78, + fr="REC minimal en fonctionnement nominal"), + VitesseMoyenneModerCoeur = SIMP (typ='R',statut='o',defaut=4.72, + fr="Vitesse moyenne dans le coeur en m/s"), + VitesseMassiqueModerCoeur = SIMP (typ='R',statut='o',defaut=328., + fr="Vitesse massique moyenne dans le coeur en g/s.cm2"), + VitesseRechaufRefroid = SIMP (typ='R',statut='o',defaut=28., + fr="Vitesse normale maximale de rechauffage ou de refroidissementnormal en Celsius/h"), + VitesseMaxRechaufRefroid = SIMP (typ='R',statut='o',defaut=56., + fr="Vitesse maximale de rechauffage ou de refroidissementnormal en Celsius/h") + ) ; # Fin CARACTERISTIQUES_PALIER +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SITE_NUCLEAIRE_EDF : Classe de definition d'un site nucleaire EDF (Tranches, paliers et numero EPN) +# Le numero EPN correspond au code de la tranche, cette donnee figure dans le fichier ASN transmis par la Division Combustible +# decrivant chaque recharge combustible (et identifie donc la tranche a laquelle elle est destinee) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SITE_NUCLEAIRE = OPER (nom="SITE_NUCLEAIRE", op=0, sd_prod=SiteNucleaire, niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition d'un site nucleaire EDF et de ses tranches", + ang = "Definition of a nuclear power plant site", + NomSite = SIMP (typ='TXM',statut='o',fr="Nom du site nucleaire",defaut='TRICASTIN'), + Tranches = NUPL (max='**',elements=( SIMP (typ='I' ,statut='o',fr="Numero de la tranche nucleaire"), + SIMP (typ='TXM',statut='o',fr="Trigramme de la tranche nucleaire"), + SIMP (typ=CaracteristiquesPalier,statut='o',fr="Type de palier"), + SIMP (typ='I' ,statut='o',fr="Numero EPN de la tranche"))) + ) ; # Fin SITE_NUCLEAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ESPACE_VARIATIONS : Classe de definition de l'espace des parametres variables et sa discretisation. +# De manière generale, un parametre peut valoriser un attribut quelconque de plusieurs objets. L'association +# Parametre-Attributs se fait par l'attribut ObjetsVariations de la classe definie ci-dessous +# de maniere purement textuelle sous la forme 'NomObjet.NomAttribut(.NomSousAttribut)[Index]'. +# L'attribut variable peut etre un objet, auquel cas les valeurs de variation sont les noms textuels +# des objets a remplacer successivement dans chaque calcul elementaire. +# Il n'y a pas de verification de coherence au niveau de la saisie des donnees mais immediatement apres +# lors de l'interpretation de l'ensemble de l'objet DonneesCasEtude . +# Definition de la methode de balayage de cet espace (Suite d'options complementaires) : +# 1) ParametresIndependants : Calculs independants en donnant successivement a chacun +# des parametres leurs valeurs individuelles +# 2) CoinsDomaine : Rajout des calculs aux limites extremes du domaine +# 3) BordsDomaine : Rajout des calculs aux bords du domaine +# 4) Grilles2D : Rajout des calculs sur les grilles 2D +# passant par un point de reference +# 5) CasParticuliers : Rajout de points specifiques de calcul +# 6) EspaceComplet : Balayage complet du domaine des parametres +# Par defaut, le cas de reference est le premier cas defini soit dans CasParticuliers si les cas sont fournis +# de cette façon, soit par les premieres valeurs rentrees pour chacun des paramètres, +# sauf entree explicite de l'attribut CasReference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ESPACE_VARIATIONS = OPER (nom="ESPACE_VARIATIONS", op=0, sd_prod=EspaceVariations, niveau = 'ParametresCalcul', + fr = "Definition de l'espace des parametres et de leurs variations", + ang = "Definition of feedback or variable parameters", + regles = (AU_MOINS_UN ('Variations', 'CasParticuliers'),), + Variations = NUPL (max='**',statut='f', + elements=( SIMP (typ='TXM',statut='o',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('R','I','TXM'),max='**',statut='o',fr="Valeurs discretes de variation du parametre"))), + ObjetsVariations = NUPL (max='**',statut='o',fr="Association Parametre et attributs des objets du modele de donnees", + elements=( SIMP (typ='TXM',statut='o',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ='TXM',max='**',statut='o',fr="Objets, attributs et index associes au parametre"))), + MethodeBalayage = SIMP ( + typ = 'TXM', + max = '**', + defaut = 'ParametresIndependants', + into = ('ParametresIndependants','CoinsDomaine','BordsDomaine','Grilles2D','CasParticuliers','EspaceComplet'), + statut = 'o'), + TypeVariation = SIMP (typ='TXM',defaut='Absolu',into=('Relatif','Absolu'),statut='o'), + CasParticuliers = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour les cas particuliers", + elements=(SIMP (typ='TXM',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('I','R','TXM'),fr="Valeur du parametre"))), + CasReference = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour le cas de reference", + elements=(SIMP (typ='TXM',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('I','R','TXM'),fr="Valeur du parametre"))) + ) ; # Fin ESPACE_VARIATIONS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_IRRADIATION : Classe de definition des valeurs d'irradiation intervenant dans les phases de calcul ou d'edition +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_IRRADIATION = OPER (nom="DONNEES_IRRADIATION",op=0,sd_prod=DonneesIrradiation, + niveau = 'ParametresCalcul', + fr = "Definition des donnees d'irradiation", + ang = "Definition of burnup values", + regles = (AU_MOINS_UN ('Irradiations', 'Refroidissement','InsertionGrappeX'),), + Unite = SIMP (typ='TXM',defaut='MWj/t',into=('MWj/t','Jours'),statut='o',fr="Unite pour les irradiations"), + Minimum = SIMP (typ='R',defaut=0.,statut='f',fr="Irradiation du debut de calcul"), + Maximum = SIMP (typ='R',defaut=100000.,statut='f',fr="Irradiation maximum des calculs"), + Irradiations = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Liste previsionnelle des irradiations"), + Refroidissement = FACT (statut='f',fr="Definition de la periode de refroidissement", + Instants = SIMP (typ='R',max='**',fr="Irradiations MWj/t de debut de refroidissement du combustible"), + Duree = SIMP (typ=('R','I'),max='**',fr="Nombre de jours de refroidissement correspondant aux instants de refroidissement") + ), + InsertionGrappeX = FACT (statut='f',fr="Simulation d'une insertion de grappe dans un assemblage seul (Mode X)", + TypeGrappe = SIMP (typ='TXM', statut='o',fr="Type de grappe inseree"), + IrradiationInsertion = SIMP (typ=('R','I'), statut='o',max='**',fr="Irradiations MWj/t de debut d'insertion de la grappe"), + IrradiationExtraction = SIMP (typ=('R','I'), statut='o',max='**',fr="Irradiations MWj/t d'extraction de la grappe"), + CoteAxiale = SIMP (typ='R', statut='f',fr="Cote axiale (cm) de la limite inferieure de la grappe aux instants d'insertion") + ) + ) ; # Fin DONNEES_IRRADIATION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_FONCTIONNEMENT_MOYENNES : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_FONCTIONNEMENT_MOYENNES = OPER (nom="CONDITIONS_FONCTIONNEMENT_MOYENNES",op=0,sd_prod=ConditionsFonctionnementMoyennes, + niveau = 'ParametresCalcul', + fr = "Definition des conditions de fonctionnement moyennes pour une campagne donnee", + ang = "Definition of a campaign operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',statut='f',fr="Identificateur de la campagne"), + DescriptifFonctionnement = SIMP (typ='TXM',statut='f',fr="Descriptif textuel arbitraire du mode de fonctionnement"), + regles = (UN_PARMI ('PuissanceThermiqueCoeur', 'PuissanceRelativeCoeur'),), + PuissanceThermiqueCoeur = SIMP (typ='R',statut='o',defaut=2775.,fr="Puissance thermique du reacteur en MWth"), + PuissanceRelativeCoeur = SIMP (typ='R',statut='o',defaut=100. ,fr="Puissance relative du reacteur en %"), + FluxSurfaciquePn = SIMP (typ='R',statut='o',defaut=59.74 ,fr="Flux a la surface du crayon en W/cm2"), + PressionEntreePrimaire = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars a l'entree du coeur actif"), + PressionSortiePrimaire = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression moyenne du moderateur en bars en sortie du coeur actif"), + TitreMoyenBore = SIMP (typ='R',statut='o',defaut= 500.,fr="Titre moyen en ppm en bore dans le moderateur"), +# + TmEntreePnulle = SIMP (typ='R',statut='o',defaut=286.0,fr="Temperature en Celsius du moderateur a puissance nulle a l'entree du coeur"), + TmEntreePnom = SIMP (typ='R',statut='o',defaut=286.4,fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + DeltaTmEntreeSortiePnom = SIMP (typ='R',statut='o',defaut= 39.0,fr="Ecart en Celsius de temperature entre entree et sortie du coeur a puissance nominale"), + TmMoyenneCoeurPnom = SIMP (typ='R',statut='o',defaut=305.3,fr="Temperature moyenne en Celsius du moderateur dans le coeur actif"), + TmMoyenneCuvePnom = SIMP (typ='R',statut='f',defaut=305.0,fr="Temperature moyenne en Celsius du moderateur dans la cuve"), + TmMoyenneReflecteurPnom = SIMP (typ='R',statut='f',defaut=296.0,fr="Temperature moyenne en Celsius du reflecteur radial"), + TcMoyennePnom = SIMP (typ='R',statut='f',defaut=600.0,fr="Temperature moyenne en Celsius du combustible dans le coeur"), +# + PositionGrappeHaute = SIMP (typ='I',statut='f',defaut=225 ,fr="Position haute des grappes, en nombre de pas extraits"), + DebitMesureParBoucle = FACT (statut='f',max='**',fr="Debit primaire mesure sur chaque boucle en m3/h", + DateEssai = SIMP (typ='I',min=3,max=3,fr="Date J M A de l'essai"), + Debits = SIMP (typ='R',min=3,max=4,fr="Valeurs des debits primaire par boucle en m3/h") + ), + NbTubesGVBouches = SIMP (typ='I',statut='f',min=3,max=4,fr="Nombre de tubes bouches pour chaque GV") + ) ; # Fin CONDITIONS_FONCTIONNEMENT_MOYENNES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_TRANSITOIRE : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee en transitoire +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_TRANSITOIRE = OPER (nom="CONDITIONS_TRANSITOIRE", op=0, sd_prod=ConditionsTransitoire, niveau = 'ParametresCalcul', + fr = "Definition des conditions de fonctionnement en transitoire pour une campagne donnee", + ang = "Definition of a campaign dynamic operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',max='**',statut='f',fr="Identificateur de la campagne"), + NeutroniqueDiscretisation = SIMP (typ='R',max='**',statut='f',fr="Liste des pas de temps successifs pour le calcul neutronique (en s)"), + ThermohydrauliqueDiscretisation = SIMP (typ='R',statut='f',fr="Liste des pas de temps successifs pour le calcul thermohydraulique (en s)"), + DureeTransitoire = SIMP (typ='R',statut='o',fr="Duree totale en s du transitoire a simuler"), + PuissanceThermiqueRelative = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Puissance thermique relative du reacteur en %)"), + PressionPrimaireEntree = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Pression du moderateur en bars a l'entree du coeur actif)"), + TitreBore = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Titre en bore dans le moderateur (en ppm))"), + DebitPrimaire = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Debit primaire dans le coeur en m3/h)") +# PositionsGrappes = SIMP (typ=PositionAxialeGrappesCommande,statut='f') +# PositionsGrappes = FACT (max='**',statut='f', +# RepereGrappeouGroupe = SIMP (typ='TXM',fr="Repere du groupe de grappes ou de la grappe"), +# Positions = SIMP (typ='R',max='**', +# fr="Couples (Instant en s, Position dans le coeur en nombre de pas extraits)")) + ) ; # Fin CONDITIONS_TRANSITOIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_AXIALE_GRAPPES_COMMANDE : Classe de definition des positions axiales des grappes de commande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_AXIALE_GRAPPES_COMMANDE = OPER (nom="POSITION_AXIALE_GRAPPES_COMMANDE",op=0,sd_prod=PositionAxialeGrappesCommande, + niveau = 'ParametresCalcul', + fr = "Positions axiales des grappes de commande pour une campagne donnee ou pour un transitoire", + ang = "Control rod cluster axial positions for a campaign or for a static or dynamic calculation", + TypeDonnee = SIMP (typ='TXM',statut='o',defaut='Statique',into=('Statique','Cinetique','Campagne'), + fr="Indication de dependance ou non d'un parametre Temps ou Irradiation"), + UnitePosition = SIMP (typ='TXM',statut='o',defaut='PasExtrait',into=('PasExtrait', 'cm', 'Recouvrement')), + BlocStatique = BLOC (condition = "TypeDonnee=='Statique'", + PositionStatique = NUPL (max='**',statut='o',elements =( + SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + SIMP (typ=('R','I'),fr="Position axiale")) + ) + ), + BlocCinetique = BLOC (condition = "TypeDonnee=='Cinetique'", + PositionCinetique = FACT (max='**',statut='o', + NomGrappeouGroupe = SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + CotesAxiales = SIMP (typ=('R','I'),max='**', + fr="Liste des Couples (Instant en s, Position axiale)") + ) + ), + BlocCampagne = BLOC (condition = "TypeDonnee=='Campagne'", + PositionCampagne = FACT (max='**',statut='o', + NomGrappeouGroupe = SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + CotesAxiales = SIMP (typ=('R','I'),max='**', + fr="Liste des Couples (Irradiation MWj/t, Position axiale)") + ) + ) + ) ; # Fin POSITION_AXIALE_GRAPPES_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DATES_CLES_CAMPAGNE : Classe de definition des dates cles d'une campagne et de sa longueur +# Definition des attributs : +# LongueurNaturelleExperimentaleMWj_t : Irradiation moyenne coeur depuis le debut de la campagne jusqu'au moment du passage en +# prolongation de campagne (valeur experimentale transmise par le site). En cas d'anticipation, +# c'est la valeur recalee qui y est stockee. +# LongueurNaturelleRecaleeMWj_t : Longueur naturelle previsionnelle estimee en cours de campagne (par le suivi du bore, +# a chaque carte de flux) +# LongueurNaturelleTheoriqueMWj_t : Longueur naturelle estimee par le code de coeur +# LongueurAnticipationJepp : Longueur d'anticipation de campagne en Jours Equivalents Pleine Puissance +# LongueurProlongationJepp : Longueur de prolongation de campagne en Jours Equivalents Pleine Puissance +# LongueurTotaleExperimentaleMWj_t : Longueur totale de la campagne en MWj/t (Donnee transmise par le site) +# TypePlanChargement : Type de plan pour la fluence cuve : Determine par les irradiations des assemblages places sur les axes medians +# et sur les diagonales +# - 3 Assemblages neufs aux bouts des deux axes : Plan Standard +# - 3 Assemblages (Irradie, Neuf, Irradie) ou (Neuf, Irradie, Neuf) sur les axes : Fluence reduite (REP 900 ou N4) +# - 2 assemblages irradies aux bouts des diagonales : Fluence reduite (REP 1300) +# - 3 Assemblages irradies aux bouts des deux axes : Fluence Faible (REP 900 ou N4) +# - 3 Assemblages irradies aux bouts des deux axes et +# 2 assemblages irradies aux bouts des diagonales : Faible Fluence Generalisee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DATES_CLES_CAMPAGNE = OPER (nom="DATES_CLES_CAMPAGNE", op=0, sd_prod=DatesClesCampagne, niveau = 'DonneesEtude', + fr = "Definition des dates cles d'une campagne et de ses longueurs caracteristiques", + ang = "Definition of the campaign dates and lengths", + IdentificateurCampagne = SIMP (typ='TXM',statut='o',defaut='CZ101',fr="Identificateur de la campagne"), + TypePlanChargement = SIMP (typ='TXM',statut='f',defaut='FluenceFaible', + into=('Standard','FluenceReduite','FluenceFaible','FaibleFluenceGeneralisee')), + DateDDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de debut de campagne"), + regles = (ENSEMBLE ('DatePnom','IrradiationDatePnom'), + ENSEMBLE ('DateCouplage','IrradiationDateCouplage'), + ENSEMBLE ('DatePassageEnProlongation','LongueurNaturelleExperimentale'),), + DatePnom = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A d'atteinte de la puissance nominale"), + IrradDatePnom = SIMP (typ='R', statut='f',fr="Irradiation de la campagne a la date d'atteinte de la puissance nominale"), + DateCouplage = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de couplage au reseau"), + IrradDateCouplage = SIMP (typ='R', statut='f',fr="Irradiation de la campagne atteinte a la date de couplage au reseau"), + DateFDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de fin de campagne reelle"), + LNatTheorique = SIMP (typ='R', statut='f',fr="Longueur naturelle theorique calculee de la campagne en MWj/t"), + LNatRecalee = SIMP (typ='R', statut='f',fr="Longueur naturelle recalee calculee de la campagne en MWj/t"), + DatePassageEnProlongation = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de passage en prolongation de campagne"), + LnatExperimentale = SIMP (typ='R', statut='f',fr="Longueur naturelle mesuree de la campagne en MWj/t"), + LongueurAnticipationJepp = SIMP (typ='R', statut='f',fr="Nombre de JEPP d'anticipation"), + LongueurProlongationJepp = SIMP (typ='R', statut='f',fr="Nombre de JEPP de prolongation"), + LongueurTotaleExperimentale = SIMP (typ='R', statut='f',fr="Longueur totale de la campagne en MWj/t") + ) ; # Fin DATES_CLES_CAMPAGNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_AUTOPROTECTION : Classe de definition des donnees d'autoprotection du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_AUTOPROTECTION = OPER (nom="OPTIONS_AUTOPROTECTION",op=0,sd_prod=OptionsAutoprotection, + niveau = 'OptionsCodesCalcul', + fr = "Definition des donnees d'autoprotection des resonances", + ang = "Definition of resonance self shielding data", + TypeCombustible = SIMP (typ='TXM',max='**',statut='o', + fr="Type de combustible auquel s'appliquent ces options d'autoprotection"), + MethodeAutoprotection = SIMP (typ='TXM',into=('SanchezCoste','SousGroupes'),defaut='SanchezCoste',statut='f'), + EnergieSupAutoprotection = SIMP (typ='R',defaut=55.5952,statut='f', + fr="Energie superieure eV du premier groupe d'autoprotection, gpe 38 dans le cas a 99 groupes"), + IsotopesAutoproteges = NUPL ( + max = '**', + elements = (SIMP (typ=Isotope,statut='o',fr="Nom de l'isotope a autoproteger"), + SIMP (typ='TXM',into=('Moyenne','Detaillee','Couronne'),statut='o'), + SIMP (typ='TXM',into=('Materiaux','Cellules'),statut='f', + fr="Choix d'autoprotection sur les materiaux ou les cellules"), + SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou de cellules concernes"))), + Irradiations = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection"), + PoisonIrradiations = SIMP (typ='R',max='**',statut='f', + fr="Irradiations ou se font les calculs d'autoprotection des poisons integres au combustible") + ) ; # Fin OPTIONS_AUTOPROTECTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_RESEAU : Classe de definition des options du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_RESEAU = OPER (nom="OPTIONS_CODE_RESEAU", op=0, sd_prod=OptionsCodeReseau, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de reseau", + ang = "Definition of lattice code options", + MethodeCalcul = SIMP (typ='TXM',defaut='Multicellule',statut='o', + into=('Multicellule','Pij','Caracteristiques','Monte-Carlo/TRIPOLI','Monte-Carlo/MCNP'), + fr="Methode de calcul"), + ProcedureBibliothequeBase = SIMP (typ='TXM',defaut='CEA93_G99_V5',statut='o', + into=('CEA93_G99_V0','CEA93_G99_V2','CEA93_G99_V3','CEA93_G99_V4', + 'CEA93_G99_V5','CEA93_G99_V6','CEA93_G172_V4'), + fr="Nom de la procedure Bibliotheque"), + CorrectionTransport = SIMP (typ='TXM',defaut='APOLLO',statut='o',into=('APOLLO','WIMS','Non'), + fr="Demande ou non de correction de transport (de type APOLLO ou WIMS)"), + TypeBibliothequeBase = SIMP (typ='TXM',defaut='APOLLIB_2',statut='o', + into=('APOLLIB_1','APOLLIB_2','DRAGON','NJOY_89','NJOY_91','WIMS_D4','WIMS_AECL'), + fr="Format de la bibliotheque de donnees nucleaires multigroupes"), + TableProbabilites = SIMP (typ='TXM',defaut='CALENDF',statut='o',into=('CALENDF','SUBG','Non'), + fr="Calcul des tables de probabilites mathematiques CALENDF ou physiques SUBG"), + RegionPeripheriqueCellule = SIMP(typ='R',defaut=0.,statut='o', + fr="Proportion de Volume de la zone peripherique des cellules cylindrisees"), + OptionMulticellule = SIMP (typ='TXM',defaut='ROTH',statut='o',into=('ROTH','MULTICELLULE'), + fr="Option du calcul multicellule"), + OptionPij = SIMP (typ='TXM',defaut='&UP0 &ROTH',statut='o',into=('&UP0 &ROTH','&UP0 &HETE','&UP1 &HETE'), + fr="Option du calcul des Pij"), + ParametresIntegration = SIMP (typ='TXM',defaut='MAIL_INT 7 7 7 7',statut='f', + fr="Donnees du maillage d'integration en heterogene"), + ProportionNoyauxParDefaut = SIMP (typ='R',defaut=1.E-12,statut='o', + fr="Valeur initiale des concentrations des noyaux lourds non definis"), + OptionLaplacienB2 = SIMP (typ='TXM',defaut='CRITIQUE',statut='o',into=('CRITIQUE','NUL','IMPOSE'), + fr="Option du calcul des fuites homogenes"), + LaplacienB2 = SIMP (typ='R',defaut=0.,statut='o',fr="Valeur initiale du laplacien du calcul des fuites"), + OrdreAnisotropie = SIMP (typ='I',defaut=1 ,statut='o',fr="Ordre d'anisotropie des sections de transfert"), + Autoprotection = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Calcul d'autoprotection ou non"), + BlocAutoprotection = BLOC (condition = "Autoprotection=='Oui'", + DonneesAutoprotection = SIMP (typ=OptionsAutoprotection,statut='f',max='**', + fr="Nom des objets decrivant les isotopes a autoproteger et les options associees"), + RecalculAutoprotection = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande ou non de recalcul de l'autoprotection")), + Equivalence = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande ou non de calcul d'equivalence"), + NbGroupesEquivalence = SIMP (typ='I',max='**',defaut=(2,6,16),statut='o', + fr="Liste des nombres de groupes des calculs d'equivalence"), + EditionSaphyb = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition des bibliotheques de type Saphyb"), + EditionAssemblage = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces homogeneisees sur l'ensemble du domaine"), + EditionCellule = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces homogeneisees par cellule"), + EditionFluxDetaille = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des flux moyens sur l'ensemble du domaine sur la maillage multigroupe detaille"), + EditionMilieu = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des compositions isotopiques detaillees sur tous les milieux de calcul"), + EditionTrimaran = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces pour TRIPOLI multigroupe"), + SpectreNeutrons = SIMP (typ='TXM',defaut='Prompt',statut='o',into=('Prompt','Retarde'), + fr="Type de spectre de neutrons pour le calcul de transport"), + ListeIsotopesEdites = SIMP (typ='TXM',statut='f',max='**',fr="Liste des initiales des symboles des isotopes a editer"), + FichierBickley = SIMP (typ='TXM',statut='f',fr="Nom du fichier des fonctions Bickley"), + EditionIsotopeHomogene = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition de constitution d'isotopes homogeneises sous forme APOLLIB"), + BlocHomoge = BLOC (condition = "EditionIsotopeHomogene=='Oui'", + RepertoireHomoge = SIMP (typ='TXM',statut='f', + fr="Nom du repertoire du fichier des isotopes homogenes sous forme APOLLIB"), + FichierHomoge = SIMP (typ='TXM',statut='f',fr="Nom du fichier des isotopes homogenes sous forme APOLLIB")), + Executable = NUPL (statut = 'f', elements = ( + SIMP (typ='TXM',fr="Systeme d'exploitation"), + SIMP (typ='TXM',fr="Nom du fichier executable"))), + ProceduresApollo2 = FACT (statut='f', + OptionsListing = SIMP (typ='TXM',statut='f',fr="Commandes Gibiane des options d'edition listing"), + Evolution = SIMP (typ='TXM',statut='f',fr="Procedure d'evolution"), + Reprise = SIMP (typ='TXM',statut='f',fr="Procedure de reprise"), + Equivalence = SIMP (typ='TXM',statut='f',fr="Procedure d'equivalence"), + EditionCellule = SIMP (typ='TXM',statut='f',fr="Procedure d'edition par cellule"), + EditionHomoge = SIMP (typ='TXM',statut='f',fr="Procedure d'edition des isotopes Homoge") + ), + ProceduresSunset = FACT (statut='f', + Evolution = SIMP (typ='TXM',statut='f',fr="Procedure d'evolution"), + Reprise = SIMP (typ='TXM',statut='f',fr="Procedure de reprise") + ) + ) ; # Fin OPTIONS_CODE_RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_COEUR_STATIQUE : Classe de definition des options du code de coeur en statique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_COEUR_STATIQUE = OPER (nom="OPTIONS_CODE_COEUR_STATIQUE", op=0, sd_prod=OptionsCodeCoeurStatique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de coeur en statique", + ang = "Definition of core code static options", + DeltaReactivite = SIMP (typ='TXM',statut='o',defaut='DeltaRo',into=('DeltaRo','LogKeff'), + fr="Methode de calcul de variation de reactivite entre deux etats"), + OxMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe x d'un assemblage"), + OyMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe y d'un assemblage"), + OzMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe z d'un assemblage"), + ReactiviteVisee = SIMP (typ='R',defaut= 0.,statut='o',fr="Valeur en pcm de la reactivite visee en calcul critique"), + EfficaciteBoreEstimee = SIMP (typ='R',defaut= -6.,statut='o',fr="Valeur estimee en pcm/ppm de l'efficacite du bore"), + TitreBoreInitiale = SIMP (typ='R',defaut=600.,statut='o',fr="Valeur estimee en ppm du titre en bore du moderateur"), + Factorisation = SIMP (typ='TXM',defaut='Non',statut='o',into=('Coeur2D','Assemblage','Non'), + fr="Option ou non de factorisation par le flux fin Coeur ou Assemblage"), + AxialTypeReflecteurs = SIMP (typ='TXM',defaut='Equivalent',statut='o',into=('Equivalent','Homogeneise')), + RadialTypeReflecteurs = SIMP (typ='TXM',defaut='Equivalent',statut='o',into=('Equivalent','Homogeneise')), + ReflAxiauxEquivalents = BLOC (condition = "TypeReflecteursAxiaux=='Equivalent'", + ReflecteurInferieur = SIMP (typ=SectionsReflecteur,statut='o'), + MaillageInferieur = SIMP (typ=Maillage1D,statut='o'), + ReflecteurSuperieur = SIMP (typ=SectionsReflecteur,statut='o'), + MaillageSuperieur = SIMP (typ=Maillage1D,statut='o') + ), + ReflAxiauxHomogeneises = BLOC (condition = "TypeReflecteursAxiaux=='Homogeneise'", + AxialAbscisses = SIMP (typ='R' ,statut='o',max='**'), + AxialMateriaux = SIMP (typ=Materiau,statut='o',max='**') + ), + ReflRadialEquivalent = BLOC (condition = "TypeReflecteurRadial=='Equivalent'", + ReflecteurRadial = SIMP (typ=SectionsReflecteur,statut='o'), + Epaisseur = SIMP (typ='R' ,statut='o') + ), + ReflRadialHomogeneise = BLOC (condition = "TypeReflecteurRadial=='Homogeneise'", + RadialAbscisses = SIMP (typ='R' ,statut='o',max='**'), + RadialMateriaux = SIMP (typ=Materiau,statut='o',max='**') + ), + ApproximationMigration = SIMP (typ='TXM',defaut='SPn',statut='o',into=('SPn','Sn','Diffusion')), + BlocSPn = BLOC (condition = "ApproximationTransport=='SPn'", + SPnOrdreApproximation = SIMP (typ='I' ,defaut=1,statut='o',fr="Ordre n impair de la methode SPn"), + SPnElementFini = SIMP (typ='TXM',defaut='RTN0',statut='o',into=('RTN0','RTN1'),fr="Type d'element fini"), + SPnMaxIterDiffusion = SIMP (typ='I' ,defaut=1,into=(1,2,3,4,5),statut='o', + fr="Nombre maximal d'iterations de diffusion") + ), + BlocSn = BLOC (condition = "ApproximationTransport=='Sn'", + SnOrdreApproximation = SIMP (typ='I' ,defaut=4,statut='o',fr="Ordre n pair de la methode Sn"), + SnElementFini = SIMP (typ='TXM',defaut='RTN',statut='o',into=('RTN','BDM'),fr="Type d'element fini"), + SnAcceleration = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'),fr="Acceleration par la diffusion"), + SnMaxIterDiffusion = SIMP (typ='I' ,defaut=20,statut='o',fr="Nombre maximal d'iterations de calcul de diffusion") + ), + BlocDiff = BLOC (condition = "ApproximationTransport=='Diffusion'", + MaxIterFlux = SIMP (typ='I',defaut= 5 ,statut='o',fr="Maximum d'iterations du calcul de flux"), + MaxIterKeff = SIMP (typ='I',defaut=50 ,statut='o',fr="Maximum d'iterations du calcul de keff"), + PrecPuissance = SIMP (typ='R',defaut=0.005 ,statut='o',fr="Precision sur la puissance"), + PrecKeff = SIMP (typ='R',defaut=0.0001 ,statut='o',fr="Precision sur keff") + ), + PrecisionValeurPropre = SIMP (typ='R',defaut=1.E-5,statut='o',fr="Precision sur la valeur propre"), + PrecisionFlux = SIMP (typ='R',defaut=1.E-3,statut='o',fr="Precision sur le flux"), + PrecisionMultigroupe = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision de la resolution multigroupe"), + PrecisionIterTermeDiffusion = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision des iterations sur le terme de diffusion"), + MaxIterEnergie = SIMP (typ='I',defaut=1,statut='o', + fr="Nombre maximal d'iterations pour la resolution Gauss Seidel en energie"), + MaxIterTermeDiffusion = SIMP (typ='I',defaut=1,statut='o',fr="Nombre maximal d'iterations sur le terme de diffusion"), + MaxIterDecompositionDomaine = SIMP (typ='I',defaut=1,statut='o',fr="Nombre d'iterations de decomposition de domaine"), + MaxIterKeffAvantCR = SIMP (typ='I',defaut=1,statut='o',fr="Nombre de calculs de keff avant appel aux contre-reactions") + ) ; # Fin OPTIONS_CODE_COEUR_STATIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_COEUR_CINETIQUE : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_COEUR_CINETIQUE = OPER (nom="OPTIONS_CODE_COEUR_CINETIQUE", op=0, sd_prod=OptionsCodeCoeurCinetique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de coeur en cinetique", + ang = "Definition of core code kinetic options", + NombrePrecurseurs = SIMP (typ='I',defaut=6,statut='o',fr="Nombre de groupes de precurseurs"), + GestionAutomatiquePasCinetique = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),statut='o', + fr="Gestion automatique du pas de temps du calcul cinetique"), + BlocSansGestionPas = BLOC (condition = "GestionAutomatiquePasCinetique=='Non'", + DefinitionPasDeTemps = SIMP (typ='R',max='**',statut='o', + fr="Liste de couples (pas de temps, limite superieure de validite du pas de temps)"), + ), + PrecisionIterationFluxPrecurseurs = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision sur les iterations Flux Precurseurs"), + PrecisionParametreGestionAutomatique = SIMP (typ='R',defaut=0.0008,statut='o',fr="Precision sur les iterations Flux Precurseurs"), + MaxIterationsFluxPrecurseurs = SIMP (typ='I',defaut=50,statut='o',fr="Nombre maximal d'iterations Flux Precurseurs"), + ThetaSchemaCinetique = SIMP (typ='R',defaut=0.5,statut='o',fr="Valeur du parametre theta du schema cinetique") + ) ; # Fin OPTIONS_CODE_COEUR_CINETIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_THERMIQUE_THERMOHYDRAULIQUE : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_THERMIQUE_THERMOHYDRAULIQUE = OPER (nom="OPTIONS_THERMIQUE_THERMOHYDRAULIQUE", op=0, sd_prod=OptionsThermiqueThermohydraulique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des modules de calcul de coeur thermique et thermohydraulique simplifiees", + ang = "Definition of thermohydraulic and thermic module options", + HGaineFluide = SIMP (typ='TXM',defaut='DITTUS_BOELTER',into=('FLICA','DITTUS_BOELTER'),statut='o', + fr="Option du Coefficient d'echange gaine-fluide (flux < au flux critique)"), + HGaineFluideEbullition = SIMP (typ='TXM',defaut='BST',into=('BST','TONG'),statut='o', + fr="Option du Coefficient d'echange gaine-fluide (Ebullition en film)"), + OptionHGapConstantTransitoire = SIMP (typ='TXM',defaut='Non',into=('Non','Oui'),statut='o', + fr="Option de constance du coefficient d'echange JeuPastilleGaine"), + OptionHGap = SIMP (typ='TXM',defaut='HGAP_88',into=('EJECTION','TUO2','PLIN_BU','FIXE','HGAP_88'),statut='o', + fr="Option de calcul du Coefficient d'echange du jeu pastille-gaine"), + BlocHgapTuo2 = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='TUO2'", + Tuo2Initiale = SIMP (typ='R',statut='o', + fr="Temperature initiale combustible pour le calcul du coefficient d'echange") ), + BlocHgapFixe = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='FIXE'", + Hgap = SIMP (typ='R',statut='o',defaut=5850.,fr="Valeur imposée du coefficient d'echange") ), + ConductiviteCombustible = SIMP (typ='TXM',defaut='HGAP_88',into=('STORA','WESTINGHOUSE','HGAP_88','COMETHE'),statut='o', + fr="Option du Coefficient de conductivite du combustible"), + CapaciteCalorifiqueCombustible = SIMP (typ='TXM',defaut='UO2_FRAMATOME',into=('UO2_BATES','UO2_FRAMATOME','UO2_THYC'),statut='o', + fr="Option du Coefficient de conductivite du combustible"), + MateriauGaine = SIMP (typ='TXM',defaut='ZIRCALOY_CYRANO',into=('ZIRCALOY_CYRANO', 'ZIRCALOY_THYC', 'INCOLOY_800', + 'CHROMESCO_3', 'INOX_16', 'INOX_321', 'INOX_347', 'INOX_347_OXYDE', + 'INCONEL_600', 'NICKEL_75', 'PLATINE'),statut='o', + fr="Materiau de la gaine pour le calcul du roCp de la gaine et de sa conductivite"), + FluxCritique = SIMP (typ='R',defaut=180.E4,statut='o',fr="Valeur du flux critique en W/m2"), + FractionPuissanceCombustible = SIMP (typ='R',defaut=0.974,statut='o',fr="Fraction de la puissance degagee dans le combustible"), + Creusement = SIMP (typ='TXM',defaut='Uniforme',statut='o', + into=('Uniforme','Runnals','Framatome','Twinkle','Mox','EDF','Specifique')), + BlocCreusement = BLOC (condition = "Creusement=='Specifique'", + RayonsCreusement = SIMP (typ='R',statut='o',fr="Rayons de definition du creusement de puissance (nz)"), + IrradiationsCreusement = SIMP (typ='R',statut='o',fr="Irradiations de definition du creusement de puissance (nbu)"), + EnrichissementsCreusement = SIMP (typ='R',statut='o',fr="Enrichissements de definition du creusement de puissance (nen)"), + PuissancesUO2 = SIMP (typ='R',max='**',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille UO2"), + PuissancesMOX = SIMP (typ='R',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille MOX") ), + PastilleDiscretisation = SIMP (typ='I',defaut=4,statut='o',fr="Nombre de points de discretisation radiale de la pastille combustible"), + GaineDiscretisation = SIMP (typ='I',defaut=2,statut='o', + fr="Nombre de points de discretisation radiale de la gaine de la pastille combustible"), + ThermiquePrecision = SIMP (typ='R',defaut=0.1,statut='o',fr="Precision en Celsius du calcul thermique radiale du crayon"), + ThermohydrauliquePrecision = SIMP (typ='R',defaut=0.01,statut='o', + fr="Precision en Celsius du calcul thermohydraulique de la temperature du moderateur"), + MaxIterThermique = SIMP (typ='I',defaut=100,statut='o', + fr="Nombre maximum d'iterations du calcul de thermique"), + MaxIterThermohydraulique = SIMP (typ='I',defaut=100,statut='o', + fr="Nombre maximum d'iterations du calcul de thermohydraulique"), + MethodeIntegrationThermohydraulique = SIMP (typ='TXM',defaut='Gauss',statut='o',into=('Gauss','NonGauss'), + fr="Methode d'integration thermohydraulique"), + PerteDeCharge = SIMP (typ='TXM',defaut='Non',statut='o',into=('Non','Oui'), + fr="Prise en compte ou non de la perte de charge axiale"), + TableEau = SIMP (typ='TXM',defaut='Thetis',statut='o',into=('Thetis','Interne'), + fr="Calcul des caracteristiques du moderateur par THETIS ou par des tables internes") + ) ; # Fin OPTIONS_THERMIQUE_THERMOHYDRAULIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CONTRE_REACTIONS_COEUR : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CONTRE_REACTIONS_COEUR = OPER (nom="OPTIONS_CONTRE_REACTIONS_COEUR", op=0, sd_prod=OptionsContreReactionsCoeur, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des modules de calcul de contre-reactions coeur", + ang = "Definition of feedback module options", + Iter2dCRN = SIMP (typ='I',defaut=30,statut='o',fr="Nombre maximal d'iterations de contre-reactions en 2D, si 0 pas de CRN"), + Iter3dCRN = SIMP (typ='I',defaut=15,statut='o',fr="Nombre maximal d'iterations de contre-reactions en 3D, si 0 pas de CRN"), + CoeffAttenuation = SIMP (typ='R',defaut=0.8,statut='o',fr="Coefficient d'attenuation des contre-reactions"), + PrecisionPuissance = SIMP (typ='R',defaut=1.E-4,statut='o',fr="Precision sur la puissance a la fin des iterations de contre-reactions"), + PrecisionKeff = SIMP (typ='R',defaut=1.E-5,statut='o',fr="Precision sur keff a la fin des iterations de contre-reactions"), + MethodeCalculSection = SIMP (typ='TXM',defaut='TabulationLineaire',into=('Spline1D','SplinenD','TabulationLineaire'),statut='o', + fr="Methode d'interpolation des sections efficaces avec Contre-reactions"), + FigerCRN = SIMP (typ='TXM',statut='f',max='**',fr="Liste des parametres de contre-reactions a figer") + ) ; # Fin OPTIONS_CONTRE_REACTIONS_COEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODES : Classe de definition des options generales et du type de calcul demande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODES = OPER (nom="OPTIONS_CODES", op=0, sd_prod=OptionsCodes, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul", + ang = "Definition of calculation code options", + regles = (AU_MOINS_UN('OptionsReseau', 'OptionsStatiqueCoeur', 'OptionsCinetiqueCoeur','OptionsThermo', 'OptionsCRNCoeur'),), + OptionsReseau = SIMP (typ=OptionsCodeReseau ,statut='f', fr="Options du code de reseau"), + OptionsStatiqueCoeur = SIMP (typ=OptionsCodeCoeurStatique ,statut='f', fr="Options du code de coeur en statique"), + OptionsCinetiqueCoeur = SIMP (typ=OptionsCodeCoeurCinetique ,statut='f', fr="Options du code de coeur en cinetique"), + OptionsThermo = SIMP (typ=OptionsThermiqueThermohydraulique,statut='f', fr="Options des modules de thermique et thermohydraulique simplifiées)"), + OptionsCRNCoeur = SIMP (typ=OptionsContreReactionsCoeur ,statut='f', fr="Prise en compte des contre-reactions ou non") + ) ; # Fin OPTIONS_CODES +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe RESSOURCES_INFORMATIQUES : Classe de definition des ressources de calcul informatiques +# Cette classe est liee aux possibilites du gestionnaire du traitement par lots et pour le moment +# les attributs affiches sont dependants de LSF : +# si on donne un type de serveur : bsub -R "type=USPARC" monjob +# si on donne un modele de serveur : bsub -R "model=HPK640" monjob +# si on donne un type de ressource : bsub -R "Solaris" monjob +# si on donne des machines particulieres : bsub -m " Nommachine1 NomMachine2 " monjob +# Dans le cas des machines particulieres, il est necessaire de fournir aussi le systeme d'exploitation +# associe (ceci pour distinguer les fichiers necessaires en entree, leurs noms devant contenir +# le nom du systeme d'exploitation (les fichiers etant differents a priori suivant l'OS utilise +# et de format non portable) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESSOURCES_INFORMATIQUES = OPER (nom="RESSOURCES_INFORMATIQUES",sd_prod=RessourcesInformatiques,op=0,niveau = 'ConfigurationInformatique', + fr = "Definition des systemes d'exploitation et des calculateurs de l'etude", + ang = "Software operating system and computers used", + regles = (UN_PARMI('TypesServeursCibles', 'ModelesServeursCibles','OSCible','CalculateursCibles'),), + TypesServeursCibles = SIMP (typ='TXM',statut='f',max='**',defaut='USPARC' ,into=('SPARC', 'USPARC', 'PWR2', 'HPPA20', 'ALPHA'), + fr="Liste des types de serveurs cibles pour la soumission des calculs"), + ModelesServeursCibles = SIMP (typ='TXM',statut='f',max='**',defaut='U2200' ,into=('SS1000E','U2200','IBM3BT','HPK460','DEC5400','U1140'), + fr="Liste des modeles de serveurs cibles pour la soumission des calculs"), + OSCible = SIMP (typ='TXM',statut='f', defaut='solaris',into=('solaris','aix','usparc','alpha','hpux'), + fr="Type de ressource cible pour la soumission des calculs"), + CalculateursCibles = NUPL (statut='f',max='**',fr="Liste des noms des calculateurs cibles pour la soumission des calculs", + elements = (SIMP (typ='TXM',statut='o',fr="Nom du calculateur cible"), + SIMP (typ='TXM',statut='o',fr="Systeme d'exploitation de la machine cible", + defaut='solaris',into=('solaris','aix','usparc','alpha','hpux'))) + ) + ) ; # Fin RESSOURCES_INFORMATIQUES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_CAS_ETUDE : Classe de definition des caracteristiques globales d'un cas de l'etude +# Definition de la centrale (site, numero de tranche) et numero de campagne d'irradiation +# Ces caracteristiques d'environnement de l'etude doivent permettre de recuperer l'ensemble +# des parametres de fonctionnement nominales du reacteur sujet de l'etude (creation de +# bibliotheques ou calcul de coeur) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_CAS_ETUDE = OPER (nom="DONNEES_CAS_ETUDE", op=0, sd_prod=DonneesCasEtude, niveau = 'DonneesEtude', + fr = "Definition de la centrale sujet du cas de l'etude et des options globales du cas", + ang = "Definition of the power plant and of the global options of the calculation case", + TypeCode = SIMP (typ='TXM',defaut='Reseau',into=('Reseau','Coeur'),statut='o'), + SiteNucleaire = SIMP (typ=SiteNucleaire,defaut='TRICASTIN',statut='o'), + BlocCoeur = BLOC (condition = "TypeCode=='Coeur'", + NumeroTranche = SIMP (typ='I',defaut=1,statut='o',fr="Numero de la tranche nucleaire"), + NumeroCampagne = SIMP (typ='I',defaut=1,statut='o',fr="Numero de la campagne d'irradiation"), + IdentificateurCampagne = SIMP (typ='TXM',defaut='TN101',statut='o',fr="Identificateur de la campagne"), + DatesCampagne = SIMP (typ=DatesClesCampagne,statut='f',fr="Dates cles de la campagne"), + TypeGestion = SIMP (typ = 'TXM', + defaut = '370Q', + statut = 'f', fr="Type de gestion du combustible", + into = ('310Q','310T','325T','325Q','340Q','345AL', + '370Q','370T','400T','HMOX','MOXNT','TMOX')), + TypeSchemaGrappe = SIMP (typ = 'TXM', + defaut = '900CPYUO2', + statut = 'f',fr="Type de schema d'implantation des grappes", + into = ('900CP0','900CPYUO2INITIAL','900CPYUO2', + '900CPYUO2AL','900CPYMOX','1300','N4')), + TypeEvaluationSurete = SIMP (typ='TXM',defaut='900STD',statut='f',fr="Type d'evaluation de surete", + into=('900STD','900GARANCE','1300STD','1300GEMMES','N4STD')), + ModePilotage = SIMP (typ='TXM',defaut='G',statut='f',into=('A','G','X'),fr="Mode de pilotage de la tranche"), + ImplantationGrappe = SIMP (typ=ImplantationGrappesCommande,statut='f',fr="Schema d'implantation des grappes de commande dans le coeur"), + PositionAxialeGrappes = SIMP (typ=PositionAxialeGrappesCommande,statut='f',fr="Positions axiales des grappes de commande"), + PlanChargement = SIMP (typ=Reseau,statut='o',fr="Plan de chargement du reseau coeur"), + Penalites = SIMP (typ=PenaliteAssemblage,statut='f',max='**',fr="Liste des objets PenalitesAssemblage"), + ActivitesMesurees = SIMP (typ=ActivitesExperimentales,statut='f',fr="Carte d'activite experimentale"), +# OptionsStatique = SIMP (typ=OptionsCodeCoeurStatique,statut='f'), +# OptionsCinetique = SIMP (typ=OptionsCodeCoeurCinetique,statut='f'), + CodeCalculC = SIMP (typ='TXM',defaut='CodeSn',statut='o',fr="Type de code de coeur a utiliser")), + BlocReseau = BLOC (condition = "TypeCode=='Reseau'", + Assemblage = SIMP (typ=(AssemblageType,ReparationAssemblage),statut='o',fr="Objet Assemblage a reparer et a calculer"), +# Options = SIMP (typ=OptionsCodeReseau,statut='f'), + CodeCalculR = SIMP (typ='TXM',defaut='SUNSET',statut='o',fr="Code de reseau a utiliser")), + Domaines = SIMP (typ=DecompositionDomaines ,statut='f',fr="Objet definissant la decomposition de domaines"), + ConditionsMoyennes = SIMP (typ=ConditionsFonctionnementMoyennes ,statut='f',fr="Objet definissant les conditions de fonctionnement moyennes"), + Transitoire = SIMP (typ=ConditionsTransitoire ,statut='f',fr="Objet contenant les conditions du transtoire"), + Variations = SIMP (typ=EspaceVariations ,statut='f',fr="Objet definissant l'espace de variations des parametres d'une etude parametrique"), + Irradiations = SIMP (typ=DonneesIrradiation ,statut='f',fr="Objet definissant les irradiations du calcul"), + Gestion = SIMP (typ=ParametresCalculGestion ,statut='f',fr="Parametres du calcul de gestion"), + Ajustement = SIMP (typ=DonneesAjustement ,statut='f',fr="Parametres d'ajustement du calcul"), + Accidents = SIMP (typ=DonneesAccidents ,statut='f',fr="Donnees des calculs d'accidents"), + Pilotage = SIMP (typ=DonneesPilotageGeneral ,statut='f',fr="Donnees generales de pilotage du reacteur"), + Calibrage = SIMP (typ=CalibrageGroupes ,statut='f',fr="Donnees de calibrage des groupes de commande du reacteur"), + Stretch = SIMP (typ=ProlongationCampagne ,statut='f',fr="Objet definissant la prolongation de campagne"), + Bibliotheques = SIMP (typ=FichierBibliothequeIsotopes ,statut='f',fr="Fichiers des bibliotheques de donnees de base"), + Ressources = SIMP (typ=RessourcesInformatiques ,statut='f',fr="Objet definissant les ressources informatiques a utiliser"), + ConditionLimite = SIMP (typ=GeneraleConditionLimite ,statut='o',fr="Objet definissant les conditions limites"), + Options = SIMP (typ=OptionsCodes ,statut='o',fr="Options des codes impliques dans le calcul"), + TypeCalcul = SIMP (typ='TXM',max='**',defaut='Evolution',statut='o', + into=('Evolution','EvolutionMicroscopique','EvolutionRefroidissement','Reprise','Statique','Cinetique', + 'BoreImpose','BoreCritique') ,fr="Type de calcul demande") + ) ; # Fin DONNEES_CAS_ETUDE +class resultat(TObjet): pass +class resultat2(resultat): pass +CALCUL=OPER(nom="CALCUL",op=10,sd_prod=resultat, + niveau = 'Operateurs', + materiau=SIMP(typ=Materiau), + PRESSION=SIMP(defaut=10000.,typ="R") + ); +CALCUL2=OPER(nom="CALCUL2",op=11,sd_prod=resultat2, + niveau = 'Operateurs', + donnee=SIMP(typ=resultat), + materiau=SIMP(typ=Materiau), + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTIONS_REFLECTEUR : Classe de definition des sections efficaces multigroupes des reflecteurs +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTIONS_REFLECTEUR = OPER (nom="SECTIONS_REFLECTEUR",sd_prod=SectionsReflecteur,op=0,niveau = 'SectionsEfficaces', + fr = "Definition des sections efficaces equivalentes d'un reflecteur", + ang = "Equivalent reflector cross sections", + NbGroupesEnergie = SIMP (typ='I' ,statut='o',defaut=2,fr="Nombre de groupes d'energie"), + LimitesEnergie = SIMP (typ='R' ,statut='o',defaut=(0.,0.0625,1.E7),max='**',fr="Limites des groupes d'energie"), + DeltaLethargie = SIMP (typ='R' ,statut='o',max='**',fr="Largeur en lethargie des groupes d'energie"), + Sections = FACT (min=1, max='**', statut='o', + TypeSection = SIMP (typ='TXM',fr="Type de section efficace",statut='o', + into=( 'Totale','CorrectionTransport', + 'Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'SectionDiffusionTotale','Transfert')), + Valeurs = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour le reflecteur") + ) + ) ; # Fin SECTIONS_REFLECTEUR +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe MACROLIB : Classe de definition des sections efficaces multigroupes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MACROLIB = OPER (nom="MACROLIB",sd_prod=Macrolib,op=0,niveau = 'SectionsEfficaces', + fr = "Definition d'une macrolib", + ang = "Macrolib Definition", + Signature = SIMP (typ='TXM',statut='o',defaut="MACROLIB",fr="Signature de l'objet MACROLIB"), + NbMateriaux = SIMP (typ='I' ,statut='o',defaut=1,fr="Nombre de materiaux"), + NomsMateriaux = SIMP (typ='TXM',statut='o',max='**',fr="Noms des materiaux"), + OrdreAnisotropieMax = SIMP (typ='I' ,statut='o',defaut=1,fr="Ordre d'anisotropie"), + MaxIsotopesFissiles = SIMP (typ='I' ,statut='o',fr="Nombre maximum d'isotopes fissiles"), + NbTypesSections = SIMP (typ='I' ,statut='o',fr="Nombre de sections efficaces definies"), + CorrectionTransport = SIMP (typ='TXM',statut='o',defaut='Non',into=('Oui','Non'),fr="Indication de Correction de transport"), + NbGroupesPrecurseurs = SIMP (typ='I' ,statut='o',defaut=6,fr="Nombre de groupes de precurseurs de neutrons retardes"), + NbGroupesEnergie = SIMP (typ='I' ,statut='o',defaut=2,fr="Nombre de groupes d'energie"), + LimitesEnergie = SIMP (typ='R' ,statut='o',defaut=(0.,0.0625,1.E7),max='**',fr="Limites des groupes d'energie"), + DeltaLethargie = SIMP (typ='R' ,statut='o',max='**',fr="Largeur en lethargie des groupes d'energie"), + ListeSections = SIMP (typ='TXM',statut='o',max='**',fr="Liste des sections efficaces decrites dans la Macrolib", + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + ModeEntreeSections = SIMP (typ='TXM',statut='o',defaut='ParGroupe',into=('ParGroupe','ParMilieu'), + fr="Choix du mode d'entree des sections par groupe ou par milieu"), + SectionsParGroupe = BLOC (condition = "ModeEntreeSections=='ParGroupe'", + SectionsG = FACT (min=1, max='**', statut='o', + TypeSectionG = SIMP (typ='TXM',fr="Type de section efficace",statut='o', + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + Groupes = BLOC (condition = "TypeSection=='Transfert'", + NumerosGroupes = SIMP (typ='I',min=2,max=2,statut='o', + fr="Numeros des groupes de depart et d'arrivee")), + Groupe = BLOC (condition = "TypeSection!='Transfert'", + NumeroGroupe = SIMP (typ='I',statut='o',fr="Numero de groupe d'energie")), + BlocAnisotropie = BLOC (condition = "TypeSection=='Transfert' or TypeSection== 'SectionDiffusionTotale'", + OrdreAnisotropie = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de transfert")), + Valeurs = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour tous les materiaux") + ) + ), + SectionsParMateriau = BLOC (condition = "ModeEntreeSections=='ParMateriau'", + Materiau = SIMP (typ='TXM',statut='o',fr="Nom du materiau dont on valorise les sections efficaces"), + SectionsM = FACT (min=1, max='**', statut='o',fr="Entree des valeurs de chaque type de section efficace", + TypeSectionM = SIMP (typ='TXM',fr="Type de section efficace definie",statut='o', + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + BlocPasTransfert = BLOC (condition = "TypeSection not in ('Transfert','SectionDiffusionTotale')", + ValeursS = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour tous les groupes")), + BlocDiffusion = BLOC (condition = "TypeSection=='SectionDiffusionTotale'", + OrdreAnisotropieD = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de diffusion totale"), + ValeursD = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections de diffusion totale pour tous les groupes")), + BlocTransfert = BLOC (condition = "TypeSection=='Transfert'", + OrdreAnisotropieT = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de transfert"), + ValeursT = NUPL (min=1,max='**',statut='o', + elements=(SIMP (typ='I',min=2,max=2,fr="Groupes de depart et d'arrivee"), + SIMP (typ='R',fr="Valeur de la section de transfert"))) + ) + ) + ) + ) ; # Fin MACROLIB +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_COMBUSTIBLE_REEL : Classe de definition d'un assemblage combustible reel charge ou decharge d'un coeur REP +# DefautFabrication : Champ texte indicateur precisant si l'assemblage appartient a un lot de fabrication +# ayant un defaut impactant les resultats neutroniques +# CleControle : Donnee fournie par la Division Combustible (Fichier ASN) et calculee a partir du nom de l'assemblage +# IdentificateurInitial : En cas de remplacement de la structure de l'assemblage, ce dernier change de nom +# (donnee transmise par le site) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_COMBUSTIBLE_REEL = OPER (nom="ASSEMBLAGE_COMBUSTIBLE_REEL",op=0,sd_prod=AssemblageCombustibleReel, + niveau = 'AssemblagesReels', + fr = "Definition d'un assemblage combustible a charger, charge en reacteur, ou decharge en coeur, en piscine ou pour retraitement", + ang = "Definition of a core loaded fuel assembly", + regles = (ENSEMBLE('Identificateur','CampagneResquelettage'), + ENSEMBLE('ProgrammeExperimental','NatureElementExperimental'),), + IdentInitial = SIMP (typ='TXM',statut='o',fr="Code d'identification initial de l'assemblage combustible en cas de resquelettage"), + Identificateur = SIMP (typ='TXM',statut='f',fr="Code d'identification de l'assemblage combustible apres resquelettage"), + CampagneResquelettage = SIMP (typ='I',statut='f',fr="Numero de la campagne de rechargement de l'assemblage resquelette"), + Constructeur = SIMP (typ='TXM',statut='o',into=('FRAMATOME','SIEMENS','ABB','ENUSA','WESTINGHOUSE','CEA','KWU','EXXON','ANF'), + fr="Constructeur de l'assemblage combustible"), + TypeTechnologique = SIMP (typ='TXM',defaut='AFA2GE',statut='o', + into=('ABB-97','AB-DEMOS','AB-LFA','AEF-XL', + 'AFA','AFA-XL','AFA-XL-N4','AFA2G','AFA2GE','AFA2GL','AFA2GLE','AFA3G','AA3GL','AGI','AGI-XL', + 'AKA','ALIX','BM','CEA','DEMONSTRATIONS','ENUSA-LFA','HTP','KWU','X1'), + fr="Type technologique de l'assemblage"), + TypeAssemblage = SIMP (typ=AssemblageType,statut='o',fr="Type de l'assemblage"), + CleControle = SIMP (typ='TXM',statut='o',fr="Cle de controle de l'assemblage"), + Engagement = SIMP (typ='TXM',statut='o',fr="Engagement de l'assemblage"), + NumeroLot = SIMP (typ='I', statut='o',fr="Numero du lot de combustible"), + TypeCombustibleDuLot = SIMP (typ='TXM',statut='f',fr="Type combustible et nom du lot (exemple 'MOX FMO1')"), + U235EnrichissementTheorique = SIMP (typ='R', statut='o',fr="Enrichissement theorique en U235 du combustible en %"), + PuEnrichissementTheorique = SIMP (typ='R', statut='o',fr="Enrichissement theorique en Pu du combustible en %",defaut=0.), + MasseTheoriqueNL = SIMP (typ='R', statut='o',fr="Masse theorique en g des noyaux lourds Z > 89 de l'assemblage"), + MasseInitialeNL = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g des noyaux lourds de l'assemblage a la date de reference"), + U232MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 232",defaut=0.), + U234MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 234",defaut=0.), + U235MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 235",defaut=0.), + U236MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 236",defaut=0.), + U238MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 238",defaut=0.), + BlocPu = BLOC (condition = "EnrichissementTheoriquePu > 0.", + DateReference = SIMP (typ='I',min=3,max=3,statut='o',fr="Date de reference Jour, Mois, An du lot MOX"), + DatePrevDivergence = SIMP (typ='I',min=3,max=3,statut='o', + fr="Date de divergence previsionnelle de la tranche chargee de cet assemblage MOX"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='o', + fr="Date de divergence reelle de la tranche chargee de cet assemblage MOX"), + U235EquivEnrichissement = SIMP (typ='R',statut='f',defaut=3.25,fr="Enrichissement en U235 equivalent"), + Pu239MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 239 a la date de reference"), + Pu240MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 240 a la date de reference"), + Pu241MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 241 a la date de reference"), + Pu24MasseInitiale2 = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 242 a la date de reference"), + Am241MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g d'americium 241 a la date de reference") + ), + AbsorbantFixe = SIMP (typ='TXM',statut='f',fr="Texte caracteristique des absorbants fixes inseres dans l'assemblage"), + DefautFabrication = SIMP (typ='TXM',statut='f',fr="Libelle du defaut de fabrication"), + ProgrammeExperimental = SIMP (typ='TXM',statut='f',fr="Nom du programme experimental s'il s'agit d'un assemblage experimental"), + NatureElementExperimental = SIMP (typ='TXM',statut='f',into=('Combustible','Grille','Structure'),fr="Nature de l'element experimental"), + LocalisationAssemblage = SIMP (typ='TXM',statut='f',into=('BR Coeur','BK Piscine','HAGUE'),fr="Localisation de l'assemblage"), + SituationAdministrative = SIMP (typ='TXM',statut='f',into=('SansParticularite','EnReservePourGestionFuture','EnAttenteReparationExamen', + 'aDispositionDAC','AccordCogema','IndisponibleSurSite'), + fr="Situation administrative de l'assemblage"), + EtatGCN = SIMP (typ='TXM',statut='f',into=('Evacuable 0','En attente 1','Rechargeable 2','PourAccordCogema 3'), + fr="Etat de l'assemblage au sens GCN"), + ContraintesPhysiques = NUPL ( max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',statut='o',fr="Texte precisant la contrainte", + into=('NonRechargeable','NonSain','aExaminer','aReparer', + 'Repare','aSubiExtraction','aPenaliser','NonInstrumentable','NonGrappable','Resquelette')), + SIMP (typ='TXM',statut='o',fr="Premiere Campagne concernee") + ) + ), + ContraintesNbCycles = NUPL (max = '**', statut = 'f', + fr = "Liste des contraintes en nombre de cycles", + elements = ( SIMP (typ='TXM',statut='o',fr="Texte precisant la contrainte", + into=('NombreDeCyclesSuccessifsImperatif','NombreMaximumDeCycles')), + SIMP (typ='I',statut='o',fr="Nombre de cycles") + ) + ), + Campagnes = NUPL (max = '**', statut = 'o', + fr = "Liste des campagnes d'irradiation subies par l'assemblage et etats correspondants", + elements = ( SIMP (typ='TXM',fr="Identificateur de la campagne"), + SIMP (typ='TXM',fr="Etat de l'assemblage") + ) + ), + BibliothequesNeutroniques = NUPL (statut='f',elements=(SIMP (typ='TXM', + fr="Identificateur de non presence d'absorbants (TBH) ou d'insertion (24B, 12B, 8B, 12P, 12P0P, etc)"), + SIMP (typ='TXM',fr="Nom du fichier de la bibliotheque neutronique associee")) + ), + TypeDescriptionCalcul = SIMP (typ='TXM',statut='f',defaut='HomogeneAssemblage',into=('HomogeneAssemblage','ParCrayon')), + OxMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe x de l'assemblage"), + OyMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe y de l'assemblage"), + OzMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe z de l'assemblage, Origine en bas de la zone active"), + IrradiationHomogene = FACT (max='**',statut='f',fr="Taux d'irradiation pseudo-experimentale de l'assemblage", + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + IrradiationCycle = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage lors du cycle en cours"), + Irradiations = SIMP (typ='R', max='**', statut='o', fr="Irradiations des mailles (MWj/t) (en partant du bas et a gauche et par plan)") + ), + IrradiationCrayon = FACT (max='**',statut='f',fr="Taux d'irradiation pseudo-experimentale des crayons de l'assemblage", + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + Irradiations = SIMP (typ='R', max='**', statut='o', fr="Irradiations des crayons (MWj/t) (en partant du bas et a gauche et par plan)") + ), + FluenceHomogene = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + FluenceMoyenne = SIMP (typ='R', statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Fluences = SIMP (typ='R', max='**', statut='o', fr="Fluences des mailles (n/kb) (en partant du bas et a gauche et par plan)") + ), + FluenceCrayon = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + FluenceMoyenne = SIMP (typ='R', statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Fluences = SIMP (typ='R', max='**', statut='o', fr="Fluences des crayons (n/kb) (en partant du bas et a gauche et par plan)") + ), + CompositionHomogene = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Isotopes = SIMP (typ='TXM', statut='o', max='**',fr="Liste des noms des isotopes"), + Concentrations = SIMP (typ='R' , statut='o', max='**', + fr="Concentrations des isotopes pour chaque maille radiale et pour chaque plan axial") + ), + CompositionCrayon = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s de l'assemblage"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Isotopes = SIMP (typ='TXM', statut='o', max='**',fr="Liste des noms des isotopes"), + Concentrations = SIMP (typ='R' , statut='o', max='**', + fr="Concentrations des isotopes pour chaque crayon et pour chaque plan axial (du bas vers le haut)") + ) + ) ; # Fin ASSEMBLAGE_COMBUSTIBLE_REEL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe REPARATION_ASSEMBLAGE : Classe de definition des donnees de reparation d'un assemblage +# Donnee de l'assemblage a reparer et des crayons de remplacement +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +REPARATION_ASSEMBLAGE = OPER (nom="REPARATION_ASSEMBLAGE", op=0, sd_prod=ReparationAssemblage, niveau = 'AssemblagesReels', + fr = "Donnee de reparation ou de restauration d'un assemblage", + ang = "Data for an assembly repair", + AssemblageInitial = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o',fr="Type de l'assemblage a reparer"), + IrradiationMoyenne = SIMP (typ='R',statut='o',fr="Taux d'irradiation moyenne MWj/t de l'assemblage a reparer"), + CrayonRemplacement = FACT (max='**',statut='o', + Position = SIMP (typ='I', min=2, max=2, statut='o', fr="Coordonnees x,y du crayon a remplacer dans l'assemblage"), + CelluleRemplacement = SIMP (typ=Cellule, statut='o', fr="Cellule de remplacement") + ) + ) ; # Fin REPARATION_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PENALITE_ASSEMBLAGE : Classe de definition des penalites a appliquer aux puissances des crayons d'un assemblage +# Trois possibilites : 1) de maniere uniforme +# 2) a quelques crayons +# 3) a l'ensemble des crayons et en fonction du taux d'irradiation de l'assemblage +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PENALITE_ASSEMBLAGE = OPER (nom="PENALITE_ASSEMBLAGE", op=0, sd_prod=PenaliteAssemblage, niveau = 'AssemblagesReels', + fr = "Penalites dues a la reparation ou a la restauration d'un assemblage", + ang = "Penalties applied to a repaired assembly", + Assemblage = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o',fr="Type de l'assemblage concerne par les penalites"), + regles = (UN_PARMI('UniformeDeltaP', 'CrayonDeltaP','CarteDeltaP'),), + UniformeDeltaP = SIMP (typ='R', statut='f', fr="Penalite en % a appliquer de maniere uniforme sur l'assemblage"), + CrayonDeltaP = FACT (statut='f',fr="Liste des penalites pour une liste particuliere de crayons d'un assemblage", + Crayons = SIMP (typ='I', statut='o', max='**', fr="Numeros des crayons de l'assemblage"), + DeltaP = SIMP (typ='R', statut='o', max='**', fr="Penalites en % a appliquer aux crayons listes")), + CarteDeltaP = FACT (max='**',statut='f',fr="Penalites pour l'ensemble des crayons de l'assemblage", + BuMoyen = SIMP (typ='R', statut='o',fr="Taux d'irradiation MWj/t de l'assemblage a reparer"), + DeltaP = SIMP (typ='R', statut='o', max='**', fr="Pourcentage de variation de puissance par crayon en %")) +) ; # Fin PENALITE_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_GLOBAUX_COEUR : Classe de stockage des resultats globaux du coeur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTATS_GLOBAUX_COEUR = OPER (nom="RESULTATS_GLOBAUX_COEUR", op=0, sd_prod=ResultatsGlobauxCoeur, niveau = 'Resultats', + fr = "Resultats globaux du calcul de coeur", + ang = "Global Core Calculation Results", + ResultatsCoeur = FACT (max='**',statut='o',fr="Resultats globaux du calcul de coeur calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', max='**', fr="Configuration du coeur : Liste des groupes ou grappes inseres"), + PasInsertion = SIMP (typ='I' , statut='o', max='**', fr="Niveau d'insertion des groupes ou grappes inseres en nombre de pas extraits"), + IndiceConvergence = SIMP (typ='I' , statut='o', fr="Indice de convergence du calcul"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + NiveauPuissance = SIMP (typ='R' , statut='o', fr="Niveau de puissance du calcul en %"), + TypeDeCalcul = SIMP (typ='TXM', statut='o', fr="Type de calcul de coeur Critique ou non"), + ParametreCritique = SIMP (typ='TXM', statut='o', fr="Parametre critique du calcul de coeur"), + TitreBore = SIMP (typ='R' , statut='o', fr="Titre en bore soluble du calcul de coeur en ppm"), + EfficaciteBore = SIMP (typ='R' , statut='o', fr="Efficacite differentielle du bore soluble pcm/ppm"), + Reactivite = SIMP (typ='R' , statut='o', fr="Reactivite du calcul en pcm"), + B2AxialRapide = SIMP (typ='R' , statut='o', fr="Laplacien axial rapide en cm-2"), + B2AxialThermique = SIMP (typ='R' , statut='o', fr="Laplacien axial thermique en cm-2"), + XeAntireactivite = SIMP (typ='R' , statut='o', fr="Antireactivite du xenon en pcm"), + FxyAssemblage = SIMP (typ='R' , statut='o', fr="Fxy Assemblage"), + DopplerCoefficient = SIMP (typ='R' , statut='o', fr="Coefficient Doppler en pcm/C"), + CTModerateur = SIMP (typ='R' , statut='o', fr="Coefficient Temperature moderateur en pcm/C"), + DopplerPuissance = SIMP (typ='R' , statut='o', fr="Coefficient Puissance Doppler seul en pcm/%P"), + CoeffPuissance = SIMP (typ='R' , statut='o', fr="Coefficient Puissance en pcm/%P"), + EfficDiffGrappes = SIMP (typ='R' , statut='f', max='**', + fr="Efficacites differentielles des grappes inserees, Couples de valeurs (Insertion,Efficacite differentielle)"), + Bite = SIMP (typ='R' , statut='f', fr="Position du bite en cours d'evolution, en nombre de pas extraits"), + RMBM = SIMP (typ='R' , statut='f', fr="Position Milieu de la bande de manoeuvre du groupe R, en nombre de pas extraits"), + FxyCrayon = SIMP (typ='R' , statut='f', fr="Fxy Crayon (apres factorisation eventuelle)"), + AssemblageChaud = SIMP (typ='R' , statut='f', fr="Assemblage portant le crayon chaud"), + LotAssemblageChaud = SIMP (typ='I' , statut='f', fr="Lot de l'assemblage portant le crayon chaud"), + NumeroCrayonChaud = SIMP (typ='I' , statut='f', fr="Numero du crayon chaud dans l'assemblage chaud"), + TmEntreeCoeur = SIMP (typ='R' , statut='o', fr="Temperature entree coeur en Celsius"), + TmMoyenneCuve = SIMP (typ='R' , statut='o', fr="Temperature moyenne cuve en Celsius"), + PressionEntreeCoeur = SIMP (typ='R' , statut='o', fr="Pression entree coeur en bars"), + PressionSortieCoeur = SIMP (typ='R' , statut='o', fr="Pression sortie coeur en bars"), + AOCoeur = SIMP (typ='R' , statut='o', fr="Axial Offset Coeur en %"), + DeltaICoeur = SIMP (typ='R' , statut='o', fr="Desequilibre Axial Coeur"), + AOXenon = SIMP (typ='R' , statut='o', fr="Axial Offset Xenon Coeur en %"), + AOIode = SIMP (typ='R' , statut='o', fr="Axial Offset Iode Coeur en %"), + FzCoeur = SIMP (typ='R' , statut='o', fr="Fz Coeur"), + FDH = SIMP (typ='R' , statut='o', fr="Facteur d'elevation d'enthalpie Coeur"), + FQ = SIMP (typ='R' , statut='o', fr="Facteur de point chaud Coeur Fq"), + FQCote = SIMP (typ='R' , statut='o', fr="Cote du Facteur de point chaud Coeur Fq"), + FQAssemblage = SIMP (typ='R' , statut='o', fr="Repere de l'assemblage portant le facteur de point chaud Fq"), + FQCrayon = SIMP (typ='R' , statut='o', fr="Numero de crayon de l'assemblage portant le facteur de point chaud Fq"), + FQLot = SIMP (typ='R' , statut='o', fr="Numero de lot de l'assemblage portant le facteur de point chaud Fq"), + TiltRadial4 = SIMP (typ='R' , statut='o', fr="Desequilibre radial par quart de coeur NE, NO, SO, SE", min=4,max=4), + TiltRadial8 = SIMP (typ='R' , statut='o', + fr="Desequilibre radial par huitieme de coeur, Origine en Ox et sens trigonometrique", min=8,max=8), + BetaTotal = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta total Coeur"), + BetaEffTotal = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta effectif total Coeur"), + ImportanceTotale = SIMP (typ='R' , statut='f', fr="Importance totale Coeur"), + TempsViePrompt = SIMP (typ='R' , statut='f', fr="Temps de vie effectif des neutrons prompts"), + ProductionU5 = SIMP (typ='R' , statut='f', fr="Contribution U235 a la production totale nuSf"), + ProductionU8 = SIMP (typ='R' , statut='f', fr="Contribution U238 a la production totale nuSf"), + ProductionPu = SIMP (typ='R' , statut='f', fr="Contribution Pu9+Pu0+Pu1+Pu2 a la production totale nuSf"), + Lambdai = SIMP (typ='R' , statut='f', fr="Constantes de decroissance moyennes des 6 groupes de precurseurs", min=6,max=6), + Betai = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta i des 6 groupes de precurseurs", min=6,max=6), + BetaiEff = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta i effectif des 6 groupes de precurseurs", min=6,max=6), + RoNordheim = FACT (statut='f', fr="Reactivite en fct du temps de doublement par la relation de Nordheim", + Temps = SIMP (typ='R', statut='o', max='**', fr="Liste des temps de doublement en s"), + Ro = SIMP (typ='R', statut='o', max='**', fr="Liste des reactivites correspondantes en pcm")) + ) +) ; # Fin RESULTATS_GLOBAUX_COEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_FLUX : Classe de stockage des resultats de flux et des courants (a revoir pour ces derniers) +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_FLUX = OPER (nom="RESULTAT_FLUX", op=0, sd_prod=ResultatFlux, niveau = 'Resultats', + fr = "Distributions de flux moyens et de courants", + ang = "Average Flux and current distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages edites"), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de mailles axiales par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition"), + NbGroupes = SIMP (typ='I' , statut='o', fr="Nombre de groupes d'energie"), + NbFluxBord = SIMP (typ='I' , statut='o', fr="Nombre de flux au bord par assemblage et par groupe d'energie"), + NbCourant = SIMP (typ='I' , statut='o', fr="Nombre de courants par assemblage et par groupe d'energie"), + Flux = FACT (max='**',statut='o',fr="Flux calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Flux moyens par assemblage (en partant du bas a gauche) et par groupe") + ), + FluxBord = FACT (max='**',statut='f',fr="Flux moyens au bord des assemblages calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Flux moyens au bord par assemblage (en partant du bas a gauche) et par groupe") + ), + Courant = FACT (max='**',statut='f',fr="Courants calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Courants detailles par assemblage (en partant du bas a gauche) et par groupe") + ) + ) ; # Fin RESULTAT_FLUX +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_PUISSANCES : Classe de stockage des resultats de puissance +# L'edition se fait sur les mailles actives du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_PUISSANCES = OPER (nom="RESULTAT_PUISSANCES", op=0, sd_prod=ResultatPuissances, niveau = 'Resultats', + fr = "Distribution de puissance", + ang = "Power distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages edites"), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de mailles axiales par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition"), + Puissances = FACT (max='**',statut='o',fr="Puissances calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Puissances (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_PUISSANCES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_RADIAL : Classe de stockage des resultats integres sur une zone axiale particuliere (par defaut, toute la zone active) +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_RADIAL = OPER (nom="RESULTAT_RADIAL", op=0, sd_prod=ResultatRadial, niveau = 'Resultats', + fr = "Distribution radiale 2D apres integration axiale d'un type de resultat", + ang = "Radial Result Distribution", + TypeResultat = SIMP (typ='TXM', statut='o', into=('Puissance','Flux','Activite','Irradiation','IrradiationGradient4','Importance', + 'FDHmax','FDHcrayon','TauxReaction','TauxReactionParGroupe','SectionEfficace', + 'SectionEfficaceParGroupe','Kinf','AntireactiviteXenon','AntireactiviteIode', + 'AOPuissance','Tc','TcMax','Tm','TmMax','RoModerateur','Tgaine'), + fr="Type de resultat"), +# BlocGroupe = BLOC (condition = "TypeResultat in ['Flux','TauxReactionParGroupe','SectionEfficaceParGroupe']", + NumeroGroupe = SIMP (typ='I' , statut='o', max=2, fr="Numeros de groupe d'energie associes"), +# ), +# BlocSection = BLOC (condition = "TypeResultat in ['SectionEfficaceParGroupe','TauxReactionParGroupe','SectionEfficace','TauxReaction']", + TypeSection = SIMP (typ='TXM' , statut='o', fr="Type de section concerne"), +# ), + CotesAxiales = SIMP (typ='R', statut='f', min=2,max=2, fr="Cotes axiales de la zone moyennee"), + Radial = FACT (max='**',statut='o',fr="Distribution radiale 2D calculee a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ=('R','I'), statut='o', max='**', + fr="Valeurs (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_RADIAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_AXIAL : Classe de stockage des resultats moyennes axialement sur l'ensemble du reseau combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_AXIAL = OPER (nom="RESULTAT_AXIAL", op=0, sd_prod=ResultatAxial, niveau = 'Resultats', + fr = "Distribution axiale moyenne coeur", + ang = "Average Core Axial Distribution", + OzNbValeurs = SIMP (typ='I', statut='o', fr="Nombre de mailles axiales"), + OzMaillage = SIMP (typ=Maillage1D, statut='o', fr="Maillage axial d'edition"), + TypeResultat = SIMP (typ='TXM', statut='o', into=('Puissance','Flux','Xenon','Iode','Courant','Fxy(z)','Q(z)'), fr="Type de resultat"), + BlocGroupe = BLOC (condition = "TypeResultat in ('Flux','Courant')", + NumeroGroupe = SIMP (typ='I' , statut='o', fr="Numero de groupe d'energie")), + Axial = FACT (max='**',statut='o',fr="Distribution axiale a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Distribution axiale moyenne (en partant du bas)") + ) + ) ; # Fin RESULTAT_AXIAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_IRRADIATIONS : Classe de stockage des resultats de taux d'irradiation +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_IRRADIATIONS = OPER (nom="RESULTAT_IRRADIATIONS", op=0, sd_prod=ResultatIrradiations, niveau = 'Resultats', + fr = "Distribution de taux d'irradiation", + ang = "Burnup distributions", + NbAssemblages = SIMP (typ='I', statut='o', fr="Nombre d'assemblages"), + OzNbValeurs = SIMP (typ='I', statut='o', fr="Nombre de valeurs d'irradiation par assemblage"), + OzMaillage = SIMP (typ=Maillage1D, statut='o', fr="Maillage axial d'edition des irradiations"), + Gradient = SIMP (typ='I', statut='o', defaut=4, fr="Nombre de valeurs d'irradiation par assemblage"), + Irradiation = FACT (max='**',statut='o',fr="Irradiations calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Irradiations (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_IRRADIATIONS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_ACTIVITES : Classe de stockage des resultats d'activite au centre des assemblages instrumentes +# L'edition se fait sur une liste particuliere d'assemblages du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_ACTIVITES = OPER (nom="RESULTAT_ACTIVITES", op=0, sd_prod=ResultatActivites, niveau = 'Resultats', + fr = "Distributions d'activite des detecteurs", + ang = "Detector Activity distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages dont on fournit l'activite calculee"), + ReperesAssemblages = SIMP (typ='TXM' , statut='o', fr="Reperes des assemblages dont on fournit l'activite", max='**'), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de valeurs d'activite par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition des activites"), + CarteActivite = FACT (max='**' , statut='o',fr="Activites calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Activites par assemblage (en partant du bas) dans l'ordre de la liste fournie des assemblages") + ) +) ; # Fin RESULTAT_ACTIVITES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACTIVITES_EXPERIMENTALES : Classe de stockage des cartes d'activite mesuree au centre des assemblages instrumentes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACTIVITES_EXPERIMENTALES = OPER (nom="ACTIVITES_EXPERIMENTALES", op=0, sd_prod=ActivitesExperimentales, niveau = 'ResultatsExperimentaux', + fr = "Distributions experimentales d'activite mesuree dans les detecteurs mobiles", + ang = "Measured Detector Activity distributions", + CaracteristiquesCarte = FACT (statut='o',fr="Caracteristiques de la carte d'Activite mesurees", + Site = SIMP (typ=SiteNucleaire, statut='o', fr="Site nucleaire de realisation de la carte de flux"), + Tranche = SIMP (typ='I', statut='o', fr="Numero de la tranche nucleaire"), + Campagne = SIMP (typ='I', statut='o', fr="Numero de la campagne d'irradiation"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t au debut de la carte"), + TitreBoreSoluble = SIMP (typ='I', statut='o', fr="Titre en ppm en bore soluble du moderateur"), + EnergieProduite = SIMP (typ='R', statut='o', fr="Energie produite en MWh"), + NumeroCarte = SIMP (typ='I', statut='o', fr="Numero de la carte de flux"), + ValiditeCarte = SIMP (typ='TXM', statut='o', into=('Oui','Non'),fr="Validite ou non de la carte de flux"), + DateHeureCarte = SIMP (typ='I', min=5, max=5, statut='o', fr="Date (Jour Mois An) et heure (Heure Minute)de realisation de la carte de flux"), + PuissanceElectrique = SIMP (typ='R', statut='o', fr="Puissance electrique MW au debut de la carte de flux"), + PuissanceRelative = SIMP (typ='R', statut='o', fr="Puissance relative % au debut de la carte de flux"), + ModePilotage = SIMP (typ='TXM', statut='o', fr="Mode de pilotage du reacteur"), + GroupesInseres = SIMP (typ='TXM', statut='f', fr="Groupes inseres dans le coeur"), + PositionsGroupes = SIMP (typ='I' , statut='f', fr="Positions des groupes inseres dans le coeur en nb de pas extraits"), + NbPointsAxiaux = SIMP (typ='I' , statut='o', fr="Nombre de points mesures par trace axiale"), + NbPasses = SIMP (typ='I' , statut='o', fr="Nombre de passes de mesures"), + NbTracesAxiales = SIMP (typ='I' , statut='o', fr="Nombre de traces axiales d'activite mesuree"), + NbThermocouples = SIMP (typ='I' , statut='o', fr="Nombre de thermocouples"), + ReperesThermocouples = SIMP (typ='TXM', statut='f', max='**', fr="Reperes des thermocouples dans le coeur"), + NumerosThermocouples = SIMP (typ='I' , statut='f', max='**', fr="Numeros des thermocouples dans le coeur") + ), + ActivitesAxiales = FACT (statut='o',max='**',fr="Trace axiale d'activite mesuree", + RepereAssemblage = SIMP (typ='TXM', statut='o', fr="Repere de l'assemblage instrumente"), + HeureDeMesure = SIMP (typ='I', min=5, max=5, statut='o', fr="Date (Jour Mois An) et heure (Heure Minute)de realisation de la carte de flux"), + NumeroDetecteur = SIMP (typ='I', statut='o', fr="Numero du detecteur de mesure"), + NumeroFourreau = SIMP (typ='I', statut='o', fr="Numero de fourreau de mesure"), + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + PuissanceThermique = SIMP (typ='R', statut='o', fr="Puissance thermique MWth au moment de la passe"), + ValeursActivites = SIMP (typ='R', statut='o', max='**', + fr="Trace d'activite dans l'assemblage (en partant du bas)"), + ), + ChambresExternes = FACT (statut='f',max='**',fr="Courants mesures dans les chambres externes", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + Courants = SIMP (typ='R', statut='o', max= '**', fr="Valeurs des courants mesures") + ), + Thermohydraulique = FACT (statut='f',max='**',fr="Temperatures et pressions mesurees dans les boucles primaires", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + TemperatureEntree = SIMP (typ='R', statut='o', min=3,max= 4, fr="Valeurs des temperatures mesurees en entree des boucles"), + TemperatureSortie = SIMP (typ='R', statut='o', min=3,max= 4, fr="Valeurs des temperatures mesurees en sortie des boucles"), + DeltaTemperature = SIMP (typ='R', statut='o', min=3,max= 4, fr="Ecarts de temperature mesurees sur les boucles"), + IndiceFctBoucles = SIMP (typ='I', statut='o', min=3,max= 4, fr="Indices de fonctionnement des boucles") + ), + Thermocouples = FACT (statut='f',max='**',fr="Temperatures mesurees par les thermocouples", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + Temperature = SIMP (typ='R', statut='o', max= '**', fr="Temperatures mesurees par les thermocouples") + ) + ) ; # Fin ACTIVITES_EXPERIMENTALES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_ETUDE : Classe de definition des resultats d'une etude +# Regroupement des resultats d'une etude en fonction des donnees +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTATS_ETUDE = OPER (nom="RESULTATS_ETUDE", op=0, sd_prod=ResultatsEtude, niveau = 'Resultats', + fr = "Resultats de tous les cas d'une etude", + ang = "Cases and associated Results", + Resultats = FACT (statut='o',max='**', + Donnees = SIMP (typ=DonneesCasEtude ,statut='o',fr="Objet DonneesGeneralesEtude auquel sont associes les objets resultats "), + Sections = SIMP (typ=Macrolib ,statut='f',max='**',fr="Liste des Objets Sections issus du calcul"), + Flux = SIMP (typ=ResultatFlux ,statut='f',max='**',fr="Liste des Objets Flux issus du calcul"), + Puissances = SIMP (typ=ResultatPuissances ,statut='f',max='**',fr="Liste des Objets Puissances"), + Activites = SIMP (typ=ResultatActivites ,statut='f',max='**',fr="Liste des Objets Activites"), + Irradiations = SIMP (typ=ResultatIrradiations ,statut='f',max='**',fr="Liste des Objets Irradiations"), + ResultatsGlobaux = SIMP (typ=ResultatsGlobauxCoeur ,statut='f',max='**',fr="Liste des Objets contenant les resultats globaux"), + ResultatsAxiaux = SIMP (typ=ResultatAxial ,statut='f',max='**',fr="Liste des Objets contenant les resultats axiaux"), + ResultatsRadiaux = SIMP (typ=ResultatRadial ,statut='f',max='**',fr="Liste des Objets contenant les resultats radiaux"), + Accidents = SIMP (typ=AccidentsResultats,statut='f', fr="Resultats des calculs d'accidents"), + Gestion = SIMP (typ=ResultatsCalculGestion,statut='f',max='**',fr="Liste des Objets contenant les resultats de calcul de gestion") + ) + ) ; # Fin RESULTATS_ETUDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DICTIONNAIRE_CAS_ETUDE : Classe de definition de l'ensemble des resultats d'une etude +# Regroupement des resultats d'une etude en fonction des donnees +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DICTIONNAIRE_CAS_ETUDE = OPER (nom="DICTIONNAIRE_CAS_ETUDE", op=0, sd_prod=DictionnaireCasEtude, niveau = 'EtudeGenerale', + fr = "Dictionnaire des resultats de tous les cas d'une etude", + ang = "Cases and associated Results dictionary", + AssociationDonneesResultats = FACT (statut='o',max='**', + Donnees = SIMP (typ=DonneesCasEtude,statut='o',fr="Objet DonneesGeneralesEtude auquel sont associes les objets resultats"), + Resultats = SIMP (typ=ResultatsEtude,statut='o',max='**',fr="Liste des Objets regroupement des resultats") + ) + ) ; # Fin DICTIONNAIRE_CAS_ETUDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PROLONGATION_CAMPAGNE : Classe de definition des donnees de prolongation de campagne +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PROLONGATION_CAMPAGNE = OPER (nom="PROLONGATION_CAMPAGNE", op=0, sd_prod=ProlongationCampagne, niveau = 'DonneesPilotage', + fr = "Donnees de la prolongation de campagne ", + ang = "Stretch out Data", + NbPas = SIMP (typ='I',statut='o',fr="Nombre d'instants (en JEPP) descriptifs de la prolongation de campagne"), + Jepp = SIMP (typ='R',statut='o',max='**',fr="Instants descriptifs de la prolongation de campagne, en JEPP"), + Puissance = SIMP (typ='R',statut='o',max='**',fr="Niveaux de puissance % correspondant aux Jepp de la prolongation de campagne"), + Temperature = SIMP (typ='R',statut='o',max='**',fr="Temperatures Moderateur (Celsius) correspondant aux Jepp de la prolongation de campagne"), + PositionRegulation = SIMP (typ='R',statut='o',defaut=221.,fr="Position du groupe de regulation en nombre de pas extraits") + ) ; # Fin PROLONGATION_CAMPAGNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_PILOTAGE_GENERAL : Classe de definition des donnees de pilotage general du reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_PILOTAGE_GENERAL = OPER (nom="DONNEES_PILOTAGE_GENERAL", op=0, sd_prod=DonneesPilotageGeneral, niveau = 'DonneesPilotage', + fr = "Donnees generales de pilotage du reacteur ", + ang = "General Reactor Control Data", + RegulationGroupe = SIMP (typ='TXM',statut='o',defaut='R' ,fr="Nom symbolique du groupe de regulation"), + PnomDdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=180.,fr="Limite d'insertion R a Pnom DDC en nombre de pas extraits"), + PnomFdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=180.,fr="Limite d'insertion R a Pnom FDC en nombre de pas extraits"), + PnulDdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=195.,fr="Limite d'insertion R a Pnul DDC en nombre de pas extraits"), + PnulFdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=195.,fr="Limite d'insertion R a Pnul FDC en nombre de pas extraits"), + PuissanceGroupes = SIMP (typ='TXM',statut='o',max='**',defaut=('G1','G2','N1','N2'),fr="Liste ordonnee des noms symboliques des groupes de compensation de puissance"), + Recouvrement = SIMP (typ='I' ,statut='o',max='**',defaut=(100,90,90), + fr="Liste ordonnee des valeurs de recouvrement des groupes de compensation de puissance, en nombre de pas d'insertion"), + BiteDefinition = SIMP (typ='R' ,statut='o',defaut=-2.5, + fr="Efficacite differentielle minimale de la regulation donnant la definition du bite, en pcm/pas"), + BiteFDCPosition = SIMP (typ='I' ,statut='o',defaut=225., fr="Position imposee du bite en FDC, en nombre de pas extraits"), + BiteLimiteBasse = SIMP (typ='I' ,statut='o',defaut=207., fr="Position limite basse du bite, en nombre de pas extraits"), + GrappeExtraite = SIMP (typ='R' ,statut='o',defaut=225., fr="Position Grappe extraite en nombre de pas extraits"), + GrappeInseree = SIMP (typ='R' ,statut='o',defaut=5., fr="Position Grappe inseree en nombre de pas extraits"), + PositionR1ereDiverg = SIMP (typ='R' ,statut='o',defaut=170., fr="Position du groupe de Regulation R a la 1ere divergence"), + BandeManoeuvre = SIMP (typ='R' ,statut='o',defaut=24., fr="Largeur de la bande de manoeuvre du groupe de Regulation R"), + ConfigModeA = SIMP (typ='TXM',statut='o',defaut=('D','CD','BCD','ABCD'),max='**', fr="Configuration des groupes en mode A"), + ConfigModeG = SIMP (typ='TXM',statut='o',defaut=('G1','G1G2','G1G2N1','G1G2N1N2','R','RG1','RG1G2','RG1G2N1','RG1G2N1N2'), + max='**', fr="Configuration des groupes en mode G"), + LimiteDomaineFct = SIMP (typ='I',statut='o',defaut=0.05,fr="Limite du domaine de fonctionnement"), + NbPtsSpin = SIMP (typ='I',statut='o',defaut=31,fr="Nombre de points SPIN"), + SeuilDnbrs = FACT (statut='o',fr="Seuil DNBRS", + PtsSpin = SIMP (typ='I',max='**',statut='o',fr="Liste des points Spin"), + Seuils = SIMP (typ='R',max='**',statut='o',fr="Liste des seuils DNBRS")), + CritereDNBRL = SIMP (typ='R',statut='o', fr="Critere sur le REC"), + AlarmeBasDnbr = SIMP (typ='R',statut='o',defaut=2.03, fr="Alarme Bas DNBR"), + CsteCalibrage = SIMP (typ='R',statut='o',defaut=-0.492, fr="Constante A de calibrage des grappes SPIN"), + DebitCalibrage = SIMP (typ='R',statut='o',defaut=99507., fr="Debit QCAL de calibrage de la puissance SPIN, m3/h"), + ConfigEpsilon = SIMP (typ='TXM',statut='o',defaut=('TBH','R','RG1','RG1G2','RG1G2N1','G1G2N1','G1G2','G1'), + max='**', fr="Configurations pour le calcul des epsilon(z)"), + IrradEpsilon = SIMP (typ='R',statut='o',defaut=(150.,20000.),max='**',fr="Irradiations MWj/t du calcul des epsilon(z)") + ) ; # Fin DONNEES_PILOTAGE_GENERAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_AJUSTEMENT : Classe de definition des donnees d'ajustement des parametres de calcul +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_AJUSTEMENT = OPER (nom="DONNEES_AJUSTEMENT", op=0, sd_prod=DonneesAjustement, niveau = 'DonneesEtude', + fr = "Donnees generales d'ajustement", + ang = "Adjustment Data", + PnomReactivite = SIMP (typ='R',statut='o',defaut=0.,fr="Facteur additif correctif de la reactivite du coeur a Pnom, en pcm"), + PnulReactivite = SIMP (typ='R',statut='o',defaut=0.,fr="Facteur additif correctif de la reactivite du coeur a Pnul, en pcm"), + SectionsBore = SIMP (typ='R',statut='o',defaut=1.,fr="Facteur multiplicatif correctif des sections du bore soluble du moderateur"), + AlphaIsotherme = SIMP (typ='R',statut='o',defaut=3.,fr="Facteur additif correctif du coefficient de temperature isotherme en pcm/C"), + Grappes = NUPL (max = '**', statut = 'f', + fr = "Liste des ajustements associes aux types de grappes de controle", + elements = (SIMP (typ='TXM',statut='o',fr="Type de grappe 0P 24B 8B 12B etc."), + SIMP (typ='R' ,statut='o',max='**', + fr="Coefficients multiplicatifs des sections d'absorption pour tous les groupes d'energie"))), + Configurations = NUPL (max = '**', statut = 'f', + fr = "Liste des ajustements associes aux configurations de groupes de grappes de controle", + elements = (SIMP (typ='TXM',statut='o',fr="Nom de la configuration"), + SIMP (typ='R' ,statut='o',max='**', + fr="Coefficient multiplicatif de l'efficacites de la configuration"))), + Samarium = NUPL (max = '**', statut = 'f', + fr = "Liste des couples (Irradiation, Correction Reactivite due au samarium)", + elements = (SIMP (typ='R',statut='o',fr="Taux d'irradiation en MWj/t"), + SIMP (typ='R',statut='o',fr="Correction de reactivite en pcm au taux d'irradiation precedent"))) + ) ; # Fin DONNEES_AJUSTEMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_DILUTION : Classe de definition des donnees du calcul d'accident de dilution +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_DILUTION = OPER (nom="ACCIDENT_DILUTION", op=0, sd_prod=AccidentDilution, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de dilution", + ang = "Data for dilution accident simulation", + ConfigArretChaud = SIMP (typ='TXM',statut='o',defaut=('R','G1','G2','N1','N2'),max='**', + fr="Liste des groupes de grappes de la configuration a l'arret a chaud"), + ConfigArretFroid = SIMP (typ='TXM',statut='o',defaut=('G1','G2','N1','N2'),max='**', + fr="Liste des groupes de grappes de la configuration a l'arret a froid"), + ConfigFroidDepassement = SIMP (typ='TXM',statut='o',defaut=('G1','N1','N2'),max='**', + fr="Liste des groupes de la configuration a l'arret a froid en cas de depassement du delai"), + ConfigChaudDepassement = SIMP (typ='TXM',statut='o',defaut=('R','G1','N1','N2'),max='**', + fr="Liste des groupes de la configuration a l'arret a chaud en cas de depassement du delai"), + IrradDepassement = SIMP (typ='TXM',statut='o',max='**', fr="Liste des irradiations de calcul en cas de depassement du delai"), + SousCriticiteArret = SIMP (typ='R',statut='o', defaut=1000., fr="Sous-criticite a l'arret en pcm"), + CbDilutionCorrection = SIMP (typ='R',statut='o', defaut=100. , fr="Correction du titre en bore de dilution, en ppm"), + EfficaciteGrappesCorrection = SIMP (typ='R',statut='o', defaut=10. , fr="Correction de l'efficacite des grappes en %"), + DefautPuissanceCorrection = SIMP (typ='R',statut='o', defaut=10. , fr="Correction du defaut de puissance en %"), + DecalageGroupes = SIMP (typ='R',statut='o', defaut=10. , fr="Decalage des groupes, en nombre de pas extraits"), + PerteEfficacite = SIMP (typ='R',statut='o', defaut=1. , fr="Perte d'efficacite par pas des groupes, en pcm/pas"), + PmaxChaud = SIMP (typ='R',statut='o', defaut=35. , fr="Puissance relative maximum en dilution a chaud, en %"), + DebitChaud = SIMP (typ='R',statut='o', defaut=31. , fr="Debit de dilution a chaud en m3/h"), + DebitFroid = SIMP (typ='R',statut='o', defaut=31. , fr="Debit de dilution a froid en m3/h"), + DebitDilution = SIMP (typ='R',statut='o', defaut=60. , fr="Debit de dilution en puissance en m3/h"), + RoEauRCV = SIMP (typ='R',statut='o', defaut=1. , fr="Masse volumique de l'eau du ballon RCV en g/cm3"), + CRNFroid = SIMP (typ='R',statut='o', defaut=250. , fr="Effet des CRN en dilution a froid en pcm"), + TiltFroidMn = SIMP (typ='R',statut='o', defaut=-2. , fr="Provision sur le delai operateur due au tilt radial en accident a froid, en mn"), + TiltChaudMn = SIMP (typ='R',statut='o', defaut=-2. , fr="Provision sur le delai operateur due au tilt radial en accident a chaud, en mn"), + TiltFroidPpm = SIMP (typ='R',statut='o', defaut=5., + fr="Majoration de la teneur en bore a la criticite due au tilt radial en accident a froid, en ppm"), + TiltChaudPpm = SIMP (typ='R',statut='o', defaut=22., + fr="Majoration de la teneur en bore a la criticite due au tilt radial en accident a chaud, en ppm"), + TiltPnDdc = SIMP (typ='R',statut='o', defaut=53., fr="Provision due au tilt radial en accident a Pn DDDC, en pcm"), + DelaiOperateur = SIMP (typ='R',statut='o', defaut=15., fr="Delai d'intervention en accident a froid ou a chaud en mn"), + DelaiRechargement = SIMP (typ='R',statut='o', defaut=20., fr="Delai d'intervention en accident au rechargement en mn") + ) ; # Fin ACCIDENT_DILUTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_DILUTION_RESULTAT : Classe de definition des resultats du calcul d'accident de dilution +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_DILUTION_RESULTAT = OPER (nom="ACCIDENT_DILUTION_RESULTAT", op=0, sd_prod=AccidentDilutionResultat, niveau = 'ResultatsAccidents', + fr = "Resultats de la simulation de l'accident de dilution", + ang = "Results from dilution accident simulation", + EtatArret = SIMP (typ='TXM',statut='o', fr="Etat d'arret",into=('Chaud','Froid','Rechargement')), + BlocRechargement = BLOC (condition = "EtatArret=='Rechargement'", + Keff = SIMP (typ='R' ,statut='o', fr="Keff au rechargement"), + Ebore = SIMP (typ='R' ,statut='o', fr="Efficacite du bore au rechargement pcm/ppm")), + BlocArret = BLOC (condition = "EtatArret!='Rechargement'", + Configuration = SIMP (typ='TXM',statut='o', fr="Configuration a l'arret"), + Irradiation = SIMP (typ='R' ,statut='o', fr="Irradiation de calcul MWj/t"), + CbArret = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'arret en ppm"), + Eb = SIMP (typ='R' ,statut='o', fr="Efficacite du bore a l'arret en pcm/ppm"), + CbArretUrgence = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'arret d'urgence en ppm"), + CbCriticite = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'instant de criticite en ppm"), + EfficaciteAU = SIMP (typ='R' ,statut='o', fr="Efficacite de l'arret d'urgence en pcm"), + DelaiIntervention = SIMP (typ='R' ,statut='o', fr="Delai d'intervention en mn"), + InstantCriticite = SIMP (typ='R' ,statut='f', fr="Instant de criticite en mn"), + IrradiationMin = SIMP (typ='R' ,statut='f', fr="Irradiation minimum MWj/t ou le delai d'intervention est suffisant")) + ) ; # Fin ACCIDENT_DILUTION_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_RTV : Classe de definition des donnees du calcul d'accident de RTV +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_RTV = OPER (nom="ACCIDENT_RTV", op=0, sd_prod=AccidentRTV, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de RTV", + ang = "Data for Steam Line Break accident simulation", + CodeCalcul = SIMP (typ='TXM' ,statut='o', defaut='COBRA',into=('COBRA','THYC','FLICA'),fr="Debit primaire en m3/h"), + DebitPrimaire = SIMP (typ='R' ,statut='o', defaut=70500. ,fr="Debit primaire en m3/h"), + DebitContournement = SIMP (typ='R' ,statut='o', defaut=4.5 ,fr="Debit de contournement en % du debit primaire"), + PressionPrimaire = SIMP (typ='R' ,statut='o', defaut=57.5 ,fr="Pression primaire en bars"), + TmMoyenne = SIMP (typ='R' ,statut='o', defaut=239.8 ,fr="Temperature moyenne moderateur en Celsius"), + TmPnul = SIMP (typ='R' ,statut='o', defaut=286. ,fr="Temperature moderateur a Pnul en Celsius"), + TmPnom = SIMP (typ='R' ,statut='o', defaut=287.8 ,fr="Temperature moderateur a Pnom en Celsius"), + BorePpm = SIMP (typ='R' ,statut='o', defaut=21.9 ,fr="Titre en bore du moderateur en ppm"), + NiveauPuissance = SIMP (typ='R' ,statut='o', defaut=14.1 ,fr="Puissance relative en %"), + GrappeCoincee = SIMP (typ='TXM' ,statut='o', defaut='F14' ,fr="Repere de la grappe coincee lors de l'accident"), + GrappesCorrespondance = SIMP (typ='TXM' ,statut='o', max='**' ,fr="Correspondance entre grappes coincees lors de l'accident"), + AnglesBouclesFroides = SIMP (typ='R' ,statut='o', defaut=(0., 120., 240.),max=4,fr="Positions angulaires des boucles froides"), + TmBoucles = SIMP (typ='R' ,statut='o', defaut=(216.8,250.8,250.8),max=4,fr="Temperatures des boucles"), + TmCanaux = SIMP (typ='R' ,statut='o', max='**',fr="Temperatures moyennes d'entree des canaux COBRA"), + TmAssemblages = SIMP (typ='R' ,statut='o', max='**',fr="Temperatures moyennes a l'entree des assemblages du coeur"), + OrientationBoucles = NUPL (max='**' ,statut='o',fr="Orientation des boucles suivant la grappe coincee", + elements = (SIMP (typ='TXM',statut='o', fr="Repere de la grappe"), + SIMP (typ='R' ,statut='o', fr="Orientation des boucles suivant la grappe coincee, en degres"))) + ) ; # Fin ACCIDENT_RTV +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_CHUTE_GRAPPE : Classe de definition des donnees du calcul d'accident de chute de grappe(s) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_CHUTE_GRAPPE = OPER (nom="ACCIDENT_CHUTE_GRAPPE", op=0, sd_prod=AccidentChuteGrappe, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de chute de grappes", + ang = "Data for rod insertion accident simulation", + RecMinimum = SIMP (typ='R',statut='o',defaut=1.225,fr="REC minimum"), + RoPenalite = SIMP (typ='R',statut='f',defaut=10.,fr="Penalite en % a appliquer aux variations de reactivite"), + RoPenaliteSupp = NUPL (statut='f',fr="Penalite supplementaire suivant la grappe chutee",elements = ( + SIMP (typ='TXM',statut='o',fr="Repere de la grappe"), + SIMP (typ='R' ,statut='o',fr="Penalite supplementaire en %"))), + DroiteDetection = SIMP (typ='R',statut='o',min=4,max=4,defaut=(0.92, 50., 1.11, 250.), + fr="Droite de detection de la chute de grappe dans le plan (Tilt,DeltaRo)(2 points a definir tilt1,deltaro1 et tilt2,deltaro2)"), + CoeffDesalignement = SIMP (typ='R',statut='o',min=8,max=8,defaut=(1.010,1.040,1.040,1.040,1.110,1.040,1.110,1.000), + fr="Coefficients de desalignements K1 KP1 K2 KP2 K3 K4 K5 E"), + DeltaDnbrThermo = SIMP (typ='R',statut='o',min=2,max=2,defaut=(5.7, 0.), + fr="Variation du REC due aux effets thermohydrauliques, pour les chutes d'1 grappe et de 2 grappes"), + DeltaDnbrMax = SIMP (typ='R',statut='o',min=2,max=2,defaut=(39., 74.), + fr="Variation maximum du REC, pour les chutes d'1 grappe et de 2 grappes"), + RecEnveloppe = SIMP (typ='R',statut='o',defaut=(1., 2., 1.5), min=3, max=3, + fr="Definition du domaine REC pour la determination de l'enveloppe de la flyspeck : RecMin RecMax Pente"), + FxyIncertitude = SIMP (typ='R',statut='o',defaut=(0.,1.03,150.,1.03,2000.,1.061), max='**', + fr="Incertitude sur Fxy en fonction de l'irradiation (Couples (MWj/t, Facteur))") + ) ; # Fin ACCIDENT_CHUTE_GRAPPE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_CHUTE_GRAPPE_RESULTAT : Classe de definition des resultats du calcul d'accident de chute de grappe(s) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_CHUTE_GRAPPE_RESULTAT = OPER (nom="ACCIDENT_CHUTE_GRAPPE_RESULTAT", op=0, sd_prod=AccidentChuteGrappeResultat, niveau='ResultatsAccidents', + fr = "Resultats de la simulation de l'accident de chute de grappes", + ang = "Rod insertion accident simulation Results", + Irradiation = SIMP (typ='R' ,statut='o', fr="Irradiation de calcul MWj/t"), + Chute = FACT (max='**' ,statut='f', fr="Resultats de la chute d'1 ou 2 grappes", + Grappes = SIMP (typ='TXM', statut='o', max=2, fr="Reperes des grappes chutees"), + DeltaRo = SIMP (typ='R',statut='o', fr="Antireactivite introduite par la chute des grappes, en pcm"), + DeltaRoPen = SIMP (typ='R',statut='o', fr="Antireactivite penalisee introduite par la chute des grappes, en pcm"), + Keff = SIMP (typ='R',statut='o', fr="Keff apres chute des grappes"), + KeffPen = SIMP (typ='R',statut='o', fr="Keff penalise apres la chute des grappes"), + DeltaFxy = SIMP (typ='R',statut='o', fr="Rapport Fxy/FxyTBH"), + Tilt2emeMinimum = SIMP (typ='R',statut='o', fr="Valeur du 2eme tilt minimum")), + ChuteMax = FACT (statut='f',fr="Valeurs maximales atteintes pour les chutes d'1 ou 2 grappes", + FDH = SIMP (typ='R' ,statut='o', fr="Facteur d'elevation d'enthalpie"), + DeltaRo = SIMP (typ='R' ,statut='o', fr="Antireactivite introduite par la chute des grappes, en pcm"), + DeltaRoPen = SIMP (typ='R' ,statut='o', fr="Antireactivite penalisee introduite par la chute des grappes, en pcm"), + Keff = SIMP (typ='R' ,statut='o', fr="Keff apres chute des grappes"), + KeffPen = SIMP (typ='R' ,statut='o', fr="Keff penalise apres la chute des grappes"), + DeltaFxy = SIMP (typ='R' ,statut='o', fr="Rapport Fxy/FxyTBH"), + PositionDeltaRo = SIMP (typ='TXM',statut='o', max=2,fr="Grappes associees a l'antireactivite max"), + PositionFxy = SIMP (typ='TXM',statut='o', max=2,fr="Grappes associees au Fxy/FxyTBH max")) + ) ; # Fin ACCIDENT_CHUTE_GRAPPE_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_EJECTION : Classe de definition des donnees du calcul d'accident d'ejection d'une grappe +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_EJECTION = OPER (nom="ACCIDENT_EJECTION", op=0, sd_prod=AccidentEjection, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident d'ejection d'une grappe", + ang = "Data for rod ejection accident simulation", + Recouvrement = SIMP (typ='R', statut='o', defaut=100., fr="Recouvrement en ejection Mode A, en nombre de pas"), + DeltaRoPenalite = SIMP (typ='R', statut='o', defaut=1.10, fr="Facteur multiplicatif general des efficacites des grappes ejectees"), + FqPenalite = SIMP (typ='R', statut='o', defaut=1.12, fr="Facteur multiplicatif general des Fq"), + DeltaRoPenGrappe = FACT (statut='f', fr="Corrections specifiques aux grappes ejectees : Couples RepereGrappe,PenaliteDeltaro", + Grappes = SIMP (typ='TXM', statut='f', max='**', fr="Liste des grappes ejectees"), + Penalites = SIMP (typ='R' , statut='f', max='**', fr="Corrections des DeltaRo specifiques aux grappes ejectees")), + FqPenGrappe = FACT (statut='f', fr="Corrections specifiques aux grappes ejectees : Couples RepereGrappe,PenaliteFq", + Grappes = SIMP (typ='TXM', statut='f', max='**', fr="Liste des grappes ejectees"), + Penalites = SIMP (typ='R' , statut='f', max='**', fr="Corrections des Fq specifiques aux grappes ejectees")) + ) ; # Fin ACCIDENT_EJECTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_EJECTION_RESULTAT : Classe de definition des donnees du calcul d'accident d'ejection d'une grappe +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_EJECTION_RESULTAT = OPER (nom="ACCIDENT_EJECTION_RESULTAT", op=0, sd_prod=AccidentEjectionResultat, niveau = 'ResultatsAccidents', + fr = "Resultats de la simulation de l'accident d'ejection d'une grappe", + ang = "Rod ejection accident simulation Results", + Ejection = FACT (statut='o', max='**', fr="Resultats du calcul d'ejection d'une grappe", + Irradiation = SIMP (typ='R' , statut='o', fr="Irradiation MWj/t du calcul d'ejection"), + Puissance = SIMP (typ='R' , statut='o', fr="Niveau de du calcul d'ejection"), + Configuration = SIMP (typ='TXM', statut='o', max='**',fr="Configuration d'ejection (liste des groupes inseres)"), + Grappe = SIMP (typ='TXM', statut='o', fr="Repere de la grappe ejectee"), + Fxy = SIMP (typ='R' , statut='o', fr="Fxy dans la configuration d'ejection"), + Efficacite = SIMP (typ='R' , statut='o', fr="Efficacite de la grappe ejectee"), + Dollar = SIMP (typ='R' , statut='o', fr="Rapport DeltaRoEjectee/BetaTot"), + Fq = SIMP (typ='R' , statut='o', fr="Facteur de point chaud Fq")) + ) ; # Fin ACCIDENT_EJECTION_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CRITERES_SURETE : Classe de definition des criteres de surete et des valeurs limites des parametres cles des accidents +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CRITERES_SURETE = OPER (nom="CRITERES_SURETE", op=0, sd_prod=CriteresSurete, niveau = 'DonneesDesAccidents', + fr = "Criteres et valeurs limites des parametres cles de surete", + ang = "Safety Criteria and Accident Key Parameter Values", + FDHConception = SIMP (typ='R',statut='o',defaut=1.55 ,fr="Facteur d'elevation d'enthalpie de conception"), + RECMinimal = SIMP (typ='R',statut='o',defaut=1.225,fr="Valeur minimale du REC"), + FxyLimite = FACT (statut='o',fr="Liste des configurations de groupes et Fxy limites associes", + Configurations = SIMP (typ='TXM',max='**',statut='o',fr="Liste des configurations de groupes"), + Fxy = SIMP (typ='R' ,max='**',statut='o',fr="Valeurs limites de Fxy pour toutes les configurations")) + ) ; # Fin CRITERES_SURETE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_ACCIDENTS : Agregation des donnees de tous les accidents et des criteres de surete +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_ACCIDENTS = OPER (nom="DONNEES_ACCIDENTS", op=0, sd_prod=DonneesAccidents, niveau = 'DonneesDesAccidents', + fr = "Package des classes des donnees de simulation de tous les accidents", + ang = "All Accident Simulation Data", + regles = (AU_MOINS_UN('Dilution', 'RTV', 'ChuteGrappe','Ejection', 'CriteresSurete'),), + Dilution = SIMP (typ=AccidentDilution ,statut='f', fr="Donnees de l'accident de dilution"), + RTV = SIMP (typ=AccidentRTV ,statut='f', fr="Donnees de l'accident de RTV"), + ChuteGrappe = SIMP (typ=AccidentChuteGrappe ,statut='f', fr="Donnees de l'accident de chute de grappe"), + Ejection = SIMP (typ=AccidentEjection ,statut='f', fr="Donnees de l'accident d'ejection"), + CriteresSurete = SIMP (typ=CriteresSurete ,statut='f', fr="Criteres de surete") + ) ; # Fin DONNEES_ACCIDENTS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENTS_RESULTATS : Classe de definition des options generales et du type de calcul demande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENTS_RESULTATS = OPER (nom="ACCIDENTS_RESULTATS", op=0, sd_prod=AccidentsResultats, niveau = 'ResultatsAccidents', + fr = "Package des classes des resultats de simulation de tous les accidents", + ang = "All Accident Simulation Results", +# regles = (AU_MOINS_UN('Dilution', 'RTV', 'ChuteGrappe','Ejection'),), + Dilution = SIMP (typ=AccidentDilutionResultat ,statut='f', fr="Resultats de la simulation de l'accident de dilution"), +# RTV = SIMP (typ=AccidentRTVResultat ,statut='f', fr="Resultats de la simulation de l'accident de RTV"), + ChuteGrappe = SIMP (typ=AccidentChuteGrappeResultat ,statut='f', fr="Resultats de la simulation de l'accident de chute de grappe"), + Ejection = SIMP (typ=AccidentEjectionResultat ,statut='f', fr="Resultats de la simulation de l'accident d'ejection") + ) ; # Fin ACCIDENTS_RESULTATS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARAMETRES_CALCUL_GESTION : Classe de definition de parametres de calcul de gestion du coeur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARAMETRES_CALCUL_GESTION = OPER (nom="PARAMETRES_CALCUL_GESTION", op=0, sd_prod=ParametresCalculGestion, niveau = 'ParametresCalcul', + fr = "Parametres divers pour le calcul de gestion du coeur", + ang = "Core Management Calculation Parameters", + DecalageGroupes = SIMP (typ='R',statut='o',defaut=0.,fr="Valeur du decalage (en nombre de pas) des groupes a chaque campagne"), + ErreurMaxLnat = SIMP (typ='R',statut='o',defaut=5.,fr="Erreur maximale (MWj/t) du calcul de la longueur naturelle de campagne"), + ErreurBite = SIMP (typ='R',statut='o',defaut=5.,fr="Erreur maximale (en nombre de pas) du calcul de la position du bite en evolution"), + LnatCbDdc = SIMP (typ='R',statut='o',defaut=(7500., 758., 12060., 1300.), min=4, max=4, + fr="Loi lineaire Lnat fonction de CbDDC : 2 points a fournir (MWj/t, Cb)"), + TiltBuMax = SIMP (typ='R',statut='o',defaut=5.,fr="Pourcentage max de desequilibre radial admissible pour les calculs 1/4 coeur"), + CalculMarge = FACT (statut='o',fr="Parametres du calcul de la marge d'antireactivite", + MajorationDefP = SIMP (typ='R' ,statut='o',defaut= 10.,fr="Majoration % du defaut de puissance"), + Redistribution = SIMP (typ='R' ,statut='o',defaut=950.,fr="Effet de redistribution en pcm"), + EffetVide = SIMP (typ='R' ,statut='o',defaut= 50.,fr="Effet de vide en pcm"), + MinorationEFG = SIMP (typ='R' ,statut='o',defaut= 10.,fr="Minoration de l'efficacite des grappes en %"), + Regulation = SIMP (typ='R' ,statut='o',defaut=500.,fr="Antireactivite de la regulation en pcm"), + UsureGrappes = SIMP (typ='R' ,statut='o',defaut=100.,fr="Effet de l'usure des grappes en pcm"), + Calibrage = SIMP (typ='R' ,statut='o',defaut=280.,fr="Incertitude de calibrage en pcm")), + SousCriticiteDdc = SIMP (typ='R',statut='o',defaut=1000.,fr="Sous-criticite initiale en etat d'arret, en pcm"), + SousCriticiteFdc = SIMP (typ='R',statut='o',defaut=1770.,fr="Sous-criticite minimale en etat d'arret FDC bore nul, en pcm"), + CritereArChaud = SIMP (typ='R',statut='o',defaut= 690.,fr="Cb (ppm) de changement de critere sur la sous-criticite minimale en etat d'arret (Ex: 1000 a 1770 pcm)"), + MajorCbArret = SIMP (typ='R',statut='o',defaut= 100.,fr="Majoration (en ppm) des titres en bore en etat d'arret") + ) ; # Fin PARAMETRES_CALCUL_GESTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_CALCUL_GESTION : Classe de stockage des resultats de calcul de gestion +# ----------------------------------------------------------------------------------------------------------------------------------- +RESULTATS_CALCUL_GESTION = OPER (nom="RESULTATS_CALCUL_GESTION", op=0, sd_prod=ResultatsCalculGestion, niveau = 'Resultats', + fr = "Resultats divers des calculs de gestion du coeur", + ang = "Core Management Calculation Results", + Cb1ereDivergence = SIMP (typ='R',statut='f',defaut=0.,fr="Titre en bore a la premiere divergence, en ppm"), + CTMNegatif = FACT (statut='f', + Cbore = SIMP (typ='R',statut='o',fr="Titre en bore (ppm) garantissant un CTM negatif en DDC Pnul"), + Irrad = SIMP (typ='R',statut='o',fr="Irradiation MWj/t au-dela de laquelle le CTM est negatif a Pnul"), + Pmax = SIMP (typ='R',statut='o',defaut=100.,fr="Niveau % de puissance limite garantissant un CTM negatif en DDC"), + CTMP = SIMP (typ='R',statut='o',max='**',fr="CTM pcm/C en fonction du niveau de puissance en DDC (Serie de couples Pr, CTM)"), + Position = SIMP (typ='R',statut='o',max='**', + fr="Chevauchement des groupes conduisant a un CTM nul suivant la puissance (Couples Pr, Chevauchement)")) + ) ; # Fin RESULTATS_CALCUL_GESTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CALIBRAGE_GROUPES : Classe de stockage des positions de calibrage des groupes gris +# ----------------------------------------------------------------------------------------------------------------------------------- +CALIBRAGE_GROUPES = OPER (nom="CALIBRAGE_GROUPES", op=0, sd_prod=CalibrageGroupes, niveau = 'DonneesPilotage', + fr = "Positions de calibrage des groupes gris et coefficients isothermes associes", + ang = "Grey Control Rod Cluster Positions Versus Power Level and Isothermal Coefficients", + PasPuissance = SIMP (typ='R', statut='o', defaut=5., + fr="Pas en puissance (%) pour la donnee des positions de calibrage"), + Calibrage = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Positions = SIMP (typ='I',statut='o',max='**',fr="Positions de calibrage pour tous les niveaux de puissance")), + AlphaIso = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Coefficients = SIMP (typ='R',statut='o',max='**',fr="Coefficients isothermes pour tous les niveaux de puissance pcm/C")), + Chevauchement = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Pas = SIMP (typ='I',statut='o',max='**',fr="Pas de chevauchement des groupes pour tous les niveaux de puissance")), + PnulDDCPosition = SIMP (typ='I',statut='o',max='**',fr="Positions de groupes gris dans les conditions d'essai de demarrage") + ) ; # Fin CALIBRAGE_GROUPES diff --git a/Descartes/editeur.ini b/Descartes/editeur.ini new file mode 100644 index 00000000..99f4d639 --- /dev/null +++ b/Descartes/editeur.ini @@ -0,0 +1,23 @@ +import os + +import prefs + +rep_cata = prefs.REPINI + +# Accès à la documentation +path_doc = os.path.join(rep_cata,'..','Doc') +exec_acrobat = "/usr/bin/acroread" +# Utilisateur/Développeur +isdeveloppeur = "NON" +path_cata_dev = "/tmp/cata" +# Répertoire temporaire +rep_travail = "/tmp" + +# Choix des catalogues +rep_mat="bidon" + +catalogues = ( + ('DESCARTES','v1',os.path.join(rep_cata,'cata_descartes.py'),'python'), + ('DESCARTES','v2',os.path.join(rep_cata,'cata_descartes_new.py'),'python','defaut'), + ) + diff --git a/Descartes/eficas_descartes.py b/Descartes/eficas_descartes.py new file mode 100755 index 00000000..c5368f53 --- /dev/null +++ b/Descartes/eficas_descartes.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + +""" + Ce module sert à lancer EFICAS configuré pour Descartes +""" +# Modules Python +import sys + +# Modules Eficas +import prefs +sys.path[:0]=[prefs.INSTALLDIR] + +import Editeur +from Editeur import eficas_go + +if len(sys.argv) > 1 : + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas(code='DESCARTES',fichier = sys.argv[1]) +else: + # on veut ouvrir Eficas 'vide' + eficas_go.lance_eficas(code='DESCARTES') + diff --git a/Descartes/prefs.py b/Descartes/prefs.py new file mode 100644 index 00000000..c14833ec --- /dev/null +++ b/Descartes/prefs.py @@ -0,0 +1,25 @@ +import os + +# REPINI sert à localiser le fichier editeur.ini +# Obligatoire +REPINI=os.path.dirname(os.path.abspath(__file__)) + +# INSTALLDIR sert à localiser l'installation d'Eficas +# Obligatoire +INSTALLDIR=os.path.join(REPINI,'..') + +# CODE_PATH sert à localiser Noyau et Validation éventuellement +# non contenus dans la distribution EFICAS +# Par défaut on utilise les modules de INSTALLDIR +# Peut valoir None (defaut) +CODE_PATH = None +#CODE_PATH = os.path.join(REPINI,'../../Superv') + +# ICONDIR sert à localiser le répertoire contenant les icones +# Par défaut on utilise le répertoire icons dans Editeur +ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') + +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/Editeur/Interp.py b/Editeur/Interp.py index 5b320e19..752a44c7 100644 --- a/Editeur/Interp.py +++ b/Editeur/Interp.py @@ -1,9 +1,21 @@ -#@ MODIF Interp Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import Tkinter,ScrolledText diff --git a/Editeur/Objecttreeitem.py b/Editeur/Objecttreeitem.py index 7e9ff7db..2ee01c7a 100644 --- a/Editeur/Objecttreeitem.py +++ b/Editeur/Objecttreeitem.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # import généraux @@ -294,10 +313,7 @@ class ObjectTreeItem(TreeItem,Delegate): def get_fr(self): """ Retourne le fr de l'objet pointé par self """ - try: - return self.object.get_fr() - except: - return '' + return self.object.get_fr() def get_docu(self): """ Retourne la clé de doc de l'objet pointé par self """ @@ -393,6 +409,12 @@ class SequenceTreeItem(ObjectTreeItem): def GetText(self): return " " + def additem(self,obj,pos): + # XXX Passer par addentite de MCList ??? + self.object.insert(pos,obj) + item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj) + return item + def suppitem(self,item): if not self.object.isMCList():return 1 try : diff --git a/Editeur/__init__.py b/Editeur/__init__.py index e69de29b..427090e6 100644 --- a/Editeur/__init__.py +++ b/Editeur/__init__.py @@ -0,0 +1,19 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== diff --git a/Editeur/analyse_catalogue.py b/Editeur/analyse_catalogue.py index b52a564f..2a0d4a0b 100644 --- a/Editeur/analyse_catalogue.py +++ b/Editeur/analyse_catalogue.py @@ -1,9 +1,21 @@ -#@ MODIF analyse_catalogue Accas DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from string import split,strip,lowercase,uppercase import re,string,cPickle,os @@ -11,8 +23,8 @@ import re,string,cPickle,os from Noyau.N_CR import CR # -__Id__="$Id: analyse_catalogue.py,v 1.13.18.3 2001/06/19 12:24:48 iliade Exp $" -__version__="$Name: FR_28_06_10_00 $" +__Id__="$Id: analyse_catalogue.py,v 1.2 2002/05/15 15:31:58 eficas Exp $" +__version__="$Name: $" # l_noms_commandes = ['OPER','PROC','MACRO','FORM'] l_noms_composes=['FACT','BLOC','NUPL','FORM'] @@ -92,15 +104,15 @@ class ENTITE : l=[] d={} if len(self.children)==0: - self.liste = l - self.dico = d + self.ordre_mc = l + self.entites = d return try : for child in self.children: l.append(child.nom) d[child.nom]=child - self.liste = l - self.dico = d + self.ordre_mc = l + self.entites = d except: print 'erreur :',self.nom,self.__class__ @@ -254,8 +266,8 @@ class CATALOGUE_CATA: for cmd in self.liste_commandes: l.append(cmd.nom) d[cmd.nom]=cmd - self.liste = l - self.dico = d + self.ordre_mc = l + self.entites = d def report(self): """ retourne l'objet rapport du catalogue de commande """ @@ -283,7 +295,7 @@ def make_cata_pickle(fic_cata): cata_ordonne = analyse_catalogue(None,fic_cata) f = open(fic_cata_p,'w+') p = cPickle.Pickler(f) - p.dump(cata_ordonne.dico) + p.dump(cata_ordonne.entites) f.close() if __name__ == "__main__" : diff --git a/Editeur/appli.py b/Editeur/appli.py index f8b031f7..8dd925b7 100644 --- a/Editeur/appli.py +++ b/Editeur/appli.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe APPLI qui est la classe mère de l'application EFICAS. Elle prend en charge l'organisation générale @@ -6,6 +25,7 @@ """ # Modules Python import sys +import types import Pmw import Tkinter @@ -13,6 +33,10 @@ import Tkinter import splash import prefs import fontes +import tooltip +import properties + +VERSION="EFICAS v1.3" class APPLI: def __init__ (self,master,code='ASTER',fichier=None) : @@ -21,7 +45,7 @@ class APPLI: self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS) self.top.minsize(900,500) self.top.geometry("900x500") - self.top.title('EFICAS v1.1 pour '+self.code) + self.top.title(VERSION + ' pour '+self.code) self.top.withdraw() self.initializeTk(master) Pmw.initialise(master) @@ -29,7 +53,7 @@ class APPLI: self.format_fichier = Tkinter.StringVar() self.message='' self.cree_composants_graphiques() - self.load_extensions() + self.load_appli_composants() self.affiche_FAQ() splash.fini_splash() @@ -69,18 +93,18 @@ class APPLI: import statusbar self.statusbar=statusbar.STATUSBAR(self.top) - def load_extensions(self): - splash._splash.configure(text = "Chargement des extensions") - for mname in self.extensions: - self.load_extension(mname) + def load_appli_composants(self): + splash._splash.configure(text = "Chargement des appli_composants") + for mname in self.appli_composants: + self.load_appli_composant(mname) - def load_extension(self,mname): + def load_appli_composant(self,mname): module=__import__(mname,globals(),locals()) factory=getattr(module,mname.upper()) - extension=factory(self,self.top) - setattr(self,mname,extension) - self.fill_menus(extension,extension.menu_defs) - self.toolbar.creer_boutons_extension(extension.button_defs,extension) + appli_composant=factory(self,self.top) + setattr(self,mname,appli_composant) + self.fill_menus(appli_composant,appli_composant.menu_defs) + self.toolbar.creer_boutons_appli_composant(appli_composant.button_defs,appli_composant) def affiche_FAQ(self): import faq @@ -110,6 +134,7 @@ class APPLI: root.option_add('*background', 'grey') root.option_add('*foreground', 'black') root.option_add('*EntryField.Entry.background', 'white') + root.option_add('*Entry*background', 'white') root.option_add('*Listbox*background', 'white') root.option_add('*Listbox*selectBackground', '#00008b') root.option_add('*Listbox*selectForeground', 'white') @@ -127,10 +152,10 @@ class APPLI: """ Retourne un texte d'informations sur la session courante d'EFICAS """ - texte = 'EFICAS v1.1\n\n' + texte = VERSION + '\n\n' texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n' texte = texte + 'Equipe : MTI/MMN\n\n' - texte = texte + 'Code utilisé : %s\n' %self.code + texte = texte + 'Code utilisé : %s version %s\n' % (self.code,properties.version) return texte def efface_aide(self,event): @@ -150,24 +175,45 @@ class APPLI: x=event.x y=event.y widget=event.widget - self.aide = Tkinter.Label(widget ,text = aide, - bg="yellow",relief="ridge",anchor='w') - self.aide.place(in_=widget, - relx=0.5,rely=0.5,anchor='center') - print aide - return - - def fill_menus(self,extension,defs): + self.aide=tooltip.TOOLTIP(widget) + self.aide.xoffset = 10 + self.aide.yoffset = - widget.winfo_height()/2 + self.aide.setText(aide) + self.aide._showTip() + return + + def cree_menu(self,menu,itemlist,appli_composant): + """ + Ajoute les items du tuple itemlist + dans le menu menu + """ + number_item=0 + radio=None + for item in itemlist: + number_item=number_item + 1 + if not item : + menu.add_separator() + else: + label,method=item + if type(method) == types.TupleType: + # On a un tuple => on cree une cascade + menu_cascade=Tkinter.Menu(menu) + menu.add_cascade(label=label,menu=menu_cascade) + self.cree_menu(menu_cascade,method,appli_composant) + elif method[0] == '&': + # On a une chaine avec & en tete => on cree un radiobouton + command=getattr(appli_composant,method[1:]) + menu.add_radiobutton(label=label,command=command) + if radio == None:radio=number_item + else: + command=getattr(appli_composant,method) + menu.add_command(label=label,command=command) + # Si au moins un radiobouton existe on invoke le premier + if radio:menu.invoke(radio) + + def fill_menus(self,appli_composant,defs): menudict=self.menubar.menudict for mname,itemlist in defs: menu=menudict.get(mname) if not menu:continue - for item in itemlist: - if not item : - menu.add_separator() - else: - label,method=item - command=getattr(extension,method) - menu.add_command(label=label,command=command) - - + self.cree_menu(menu,itemlist,appli_composant) diff --git a/Editeur/autre_analyse_cata.py b/Editeur/autre_analyse_cata.py new file mode 100644 index 00000000..706bf6f2 --- /dev/null +++ b/Editeur/autre_analyse_cata.py @@ -0,0 +1,107 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== +""" + Ce module sert a retrouver l'ordre des mots cles d'un catalogue de + commandes +""" +if __name__ == "__main__" : + import sys + sys.path[:0]=[".."] + sys.path[:0]=["../Aster"] + sys.path[:0]=["../Saturne"] + +from Accas import NUPL + +def traite_entiteNUPL(entite): + """ + Fonction speciale pour les nuplets (classe NUPL) + Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc + qui est une liste vide. + """ + entite.ordre_mc=[] + +def traite_entite(entite): + """ + Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc + qui est une liste contenant le nom des sous entites dans l'ordre + de leur apparition dans le catalogue. + L'ordre d'apparition dans le catalogue est donné par l'attribut _no + de l'entite + La fonction active le meme type de traitement pour les sous entites + de entite + """ + l=[] + for k,v in entite.entites.items(): + if isinstance(v,NUPL): + traite_entiteNUPL(v) + else: + traite_entite(v) + l.append((v._no,k)) + l.sort() + entite.ordre_mc=[ item for index, item in l ] + +def analyse_niveau(cata_ordonne_dico,niveau): + """ + Analyse un niveau dans un catalogue de commandes + """ + if niveau.l_niveaux == (): + # Il n'y a pas de sous niveaux + for oper in niveau.entites: + traite_entite(oper) + cata_ordonne_dico[oper.nom]=oper + else: + for niv in niveau.l_niveaux: + analyse_niveau(cata_ordonne_dico,niv) + +def analyse_catalogue(cata): + """ + Cette fonction analyse le catalogue cata pour construire avec l'aide + de traite_entite la structure de données ordre_mc qui donne l'ordre + d'apparition des mots clés dans le catalogue + Elle retourne un dictionnaire qui contient toutes les commandes + du catalogue indexées par leur nom + """ + cata_ordonne_dico={} + if cata.JdC.l_niveaux == (): + # Il n'y a pas de niveaux + for oper in cata.JdC.commandes: + traite_entite(oper) + cata_ordonne_dico[oper.nom]=oper + else: + for niv in cata.JdC.l_niveaux: + analyse_niveau(cata_ordonne_dico,niv) + return cata_ordonne_dico + + +if __name__ == "__main__" : + from Cata import cata_STA6 + dico=analyse_catalogue(cata_STA6) + #import cata_saturne + #dico=analyse_catalogue(cata_saturne) + + def print_entite(entite,dec=' '): + print dec,entite.nom,entite.__class__.__name__ + for mocle in entite.ordre_mc: + print_entite(entite.entites[mocle],dec=dec+' ') + + for k,v in dico.items(): + print_entite(v,dec='') + + print dico.keys() diff --git a/Editeur/browser.py b/Editeur/browser.py index 0553c6e3..ba5b9eee 100644 --- a/Editeur/browser.py +++ b/Editeur/browser.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python diff --git a/Editeur/bureau.py b/Editeur/bureau.py index 41840842..56bfa7dd 100644 --- a/Editeur/bureau.py +++ b/Editeur/bureau.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe BUREAU qui gere les JDC ouverts """ @@ -10,10 +29,12 @@ from tkMessageBox import showinfo,askyesno,showerror # Modules Eficas import splash +import prefs import convert import generator +import AIDE from jdcdisplay import JDCDISPLAY -from utils import extension,stripPath,save_in_file +from utils import extension_fichier,stripPath,save_in_file from widgets import Fenetre,Ask_Format_Fichier from fenetre_mc_inconnus import fenetre_mc_inconnus @@ -44,6 +65,10 @@ class BUREAU: ('Mots-clés inconnus','mc_inconnus'), ] ), + ('Aide',[ + ('Aide EFICAS','aideEFICAS'), + ] + ), ] button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'), @@ -58,6 +83,14 @@ class BUREAU: ('Delete24',"delete","Supprime l'objet courant",'jdc'), ('Help24',"view_doc","Documentation de l'objet courant",'jdc') ) + try: + menu_defs=prefs.menu_defs['bureau'] + except: + pass + try: + button_defs=prefs.button_defs['bureau'] + except: + pass def __init__(self,appli,parent): self.parent=parent @@ -72,7 +105,7 @@ class BUREAU: def cree_cataitem(self): """ - On récupère dans l'extension readercata les variables + On récupère dans l'appli_composant readercata les variables qui servent par la suite pour la création des JDC """ self.cataitem=self.appli.readercata.cataitem @@ -108,6 +141,7 @@ class BUREAU: cata_ord_dico=self.cata_ordonne_dico, appli=self.appli) self.JDCName=J.nom + self.fileName=None self.ShowJDC(J,self.JDCName) self.appli.toolbar.active_boutons() @@ -196,11 +230,12 @@ class BUREAU: Demande à l'utilisateur quel JDC existant il veut ouvrir """ if self.code == 'ASTER': - filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),) + filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*')) else: filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),) if not hasattr(self,'initialdir'): - self.initialdir = self.appli.CONFIGURATION.rep_user + #self.initialdir = self.appli.CONFIGURATION.rep_user + self.initialdir = self.appli.CONFIGURATION.initialdir if not file : file = askopenfilename(title="Ouverture d'un fichier de commandes Aster", defaultextension=".comm", @@ -208,7 +243,7 @@ class BUREAU: initialdir = self.initialdir) if file != '': self.fileName = file - e=extension(file) + e=extension_fichier(file) self.JDCName=stripPath(file) self.initialdir = os.path.dirname(file) else : @@ -333,7 +368,8 @@ class BUREAU: sauvegarde = asksaveasfilename(title=titre, defaultextension=defext, filetypes = filtyp, - initialdir = self.appli.CONFIGURATION.rep_user) + initialdir = self.appli.CONFIGURATION.initialdir) + #initialdir = self.appli.CONFIGURATION.rep_user) if sauvegarde != '': if not save_in_file(sauvegarde,self.jdc_fini) : showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`) @@ -504,12 +540,16 @@ class BUREAU: """ if not hasattr(self,'JDC') : return titre = "fichier de commandes utilisateur" - texte = self.JDC.procedure - if texte == None: + #texte = self.JDC.procedure + #if texte == None: + if self.JDCDisplay_courant.fichier == None: self.appli.affiche_infos("Pas de fichier initial") - showerror("Impossible de visualiser le fichier initial","EFICAS ne peut visualiser le fichier \ - initial.\nIl s'agit d'un nouveau JDC") + showerror("Impossible de visualiser le fichier initial", + "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC") return + f=open(self.JDCDisplay_courant.fichier,'r') + texte=f.read() + f.close() self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte) def affichage_fichier_ini(self): @@ -537,4 +577,8 @@ class BUREAU: l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus() o = fenetre_mc_inconnus(l_mc) l = o.wait_new_list() + #print "mc_inconnus_new_list: ",l + #CCAR: Il n' y a pas de retour vers le JDC + def aideEFICAS(self): + AIDE.go(master=self.parent) diff --git a/Editeur/catabrowser.py b/Editeur/catabrowser.py index 24535cbc..c72cd2c9 100644 --- a/Editeur/catabrowser.py +++ b/Editeur/catabrowser.py @@ -1,9 +1,21 @@ -#@ MODIF catabrowser Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # Modules Python import os @@ -23,8 +35,8 @@ from Accas import OPER,PROC,MACRO,FORM from Accas import FACT,BLOC,SIMP # -__version__="$Name: V1_1p1 $" -__Id__="$Id: catabrowser.py,v 1.1.1.1 2001/12/04 15:38:22 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: catabrowser.py,v 1.2 2002/05/15 15:31:58 eficas Exp $" # class Tableau: incr = 10 @@ -224,8 +236,8 @@ class CATAItem(TreeItem): def get_liste_mc_ordonnee(self): """ Retourne la liste ordonnée (suivant le catalogue) brute des fils de l'entite courante """ - if hasattr(self.objet_cata_ordonne,'liste'): - return self.objet_cata_ordonne.liste + if hasattr(self.objet_cata_ordonne,'ordre_mc'): + return self.objet_cata_ordonne.ordre_mc else : l=self.objet_cata_ordonne.keys() l.sort() @@ -248,7 +260,7 @@ class CATAItem(TreeItem): l_cles_fils = self.get_liste_mc_ordonnee() for k in l_cles_fils : if type(self.objet_cata_ordonne) == types.InstanceType : - objet_cata = self.objet_cata_ordonne.dico[k] + objet_cata = self.objet_cata_ordonne.entites[k] else : objet_cata = self.objet_cata_ordonne.get(k,None) item = make_objecttreeitem(self.appli,k + " : ",self.d_fils[k], diff --git a/Editeur/cataediteur.py b/Editeur/cataediteur.py index 5cdbe211..b2f30f00 100644 --- a/Editeur/cataediteur.py +++ b/Editeur/cataediteur.py @@ -1,9 +1,21 @@ -#@ MODIF cataediteur Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # Modules Python import os @@ -26,8 +38,8 @@ from Accas import ASSD,GEOM import definition_cata # -__version__="$Name: V1_1p1 $" -__Id__="$Id: cataediteur.py,v 1.1.1.1 2001/12/04 15:38:22 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: cataediteur.py,v 1.2 2002/05/15 15:31:58 eficas Exp $" # Fonte_Niveau = fontes.canvas_gras_italique @@ -134,7 +146,7 @@ class Panel(Frame) : texte_infos = '' for e in cmd.entites.keys() : if e == name : - texte_infos=cmd.entites[e].fr + texte_infos=getattr(cmd.entites[e],'fr') break if texte_infos == '' : texte_infos="Pas d'infos disponibles" self.parent.appli.affiche_infos(texte_infos) @@ -653,7 +665,7 @@ class OPERItem(OBJECTItem): for k in l_cles_fils : typ = TYPE_COMPLET(dico_fils[k]) if type(self.objet_cata_ordonne) == types.InstanceType : - objet_cata = self.objet_cata_ordonne.dico[k] + objet_cata = self.objet_cata_ordonne.entites[k] else : objet_cata = self.objet_cata_ordonne.get(k,None) item = make_objecttreeitem(self.appli,typ + " : ",dico_fils[k],objet_cata_ordonne = objet_cata) @@ -665,7 +677,7 @@ class OPERItem(OBJECTItem): return self.object.get_valeur_attribut('nom') def get_liste_mc_ordonnee(self): - return self.objet_cata_ordonne.liste + return self.objet_cata_ordonne.ordre_mc def GetIconName(self): if self.object.isvalid(): @@ -754,7 +766,7 @@ class NIVEAUItem(OPERItem): for k in l_cles_fils : typ = TYPE_COMPLET(dico_fils[k]) if type(self.objet_cata_ordonne) == types.InstanceType : - objet_cata = self.objet_cata_ordonne.dico[k] + objet_cata = self.objet_cata_ordonne.entites[k] else : objet_cata = self.objet_cata_ordonne.get(k,None) item = make_objecttreeitem(self.appli,typ + " : ",dico_fils[k],objet_cata_ordonne = objet_cata) diff --git a/Editeur/centerwindow.py b/Editeur/centerwindow.py index 95d9d33b..6b80e0d3 100644 --- a/Editeur/centerwindow.py +++ b/Editeur/centerwindow.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la fonction utilitaire centerwindow qui sert à centrer une fenetre diff --git a/Editeur/compobloc.py b/Editeur/compobloc.py index 085c7d97..6f0682a0 100644 --- a/Editeur/compobloc.py +++ b/Editeur/compobloc.py @@ -1,9 +1,21 @@ -#@ MODIF compobloc Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw diff --git a/Editeur/compocomm.py b/Editeur/compocomm.py index 194730ed..d31e71de 100644 --- a/Editeur/compocomm.py +++ b/Editeur/compocomm.py @@ -1,9 +1,21 @@ -#@ MODIF compocomm Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw diff --git a/Editeur/compocommandecomm.py b/Editeur/compocommandecomm.py index 8b8c9237..cab37e89 100644 --- a/Editeur/compocommandecomm.py +++ b/Editeur/compocommandecomm.py @@ -1,9 +1,21 @@ -#@ MODIF compocommandecomm Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw diff --git a/Editeur/compofact.py b/Editeur/compofact.py index 0b52bbb3..7e0a7927 100644 --- a/Editeur/compofact.py +++ b/Editeur/compofact.py @@ -1,9 +1,21 @@ -#@ MODIF compofact Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import Pmw import Objecttreeitem diff --git a/Editeur/compoformule.py b/Editeur/compoformule.py index b2d640f9..345bacc7 100644 --- a/Editeur/compoformule.py +++ b/Editeur/compoformule.py @@ -1,9 +1,21 @@ -#@ MODIF compoformule Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== """ Ce module contient les classes permettant de définir les objets graphiques diff --git a/Editeur/compojdc.py b/Editeur/compojdc.py index 64461749..f331c612 100644 --- a/Editeur/compojdc.py +++ b/Editeur/compojdc.py @@ -1,17 +1,27 @@ -#@ MODIF compojdc Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== -#XXX est ce utile ?from Tkinter import * import Pmw import Objecttreeitem import panels from widgets import ListeChoix -# XXX temporairement supprimé :from Accas import commentaire class JDCPanel(panels.OngletPanel): def init(self): diff --git a/Editeur/compomacro.py b/Editeur/compomacro.py index ce439f5d..edbf840c 100644 --- a/Editeur/compomacro.py +++ b/Editeur/compomacro.py @@ -1,9 +1,21 @@ -#@ MODIF compomacro Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # Modules Python import os,sys,string @@ -23,8 +35,8 @@ import convert from widgets import Fenetre # -__version__="$Name: V1_1p1 $" -__Id__="$Id: compomacro.py,v 1.1.1.1 2001/12/04 15:38:22 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: compomacro.py,v 1.4 2002/05/15 15:31:58 eficas Exp $" # class MACROPanel(panels.OngletPanel): @@ -39,7 +51,7 @@ class MACROPanel(panels.OngletPanel): nb.add('Concept', tab_text='Nommer concept') if ficini == 1: nb.add('Fichierinit',tab_text = 'Fichier %s' %self.node.item.get_nom()) - nb.add('Commande', tab_text='Insérer Commande') + nb.add('Commande', tab_text='Nouvelle Commande') nb.add('Commentaire',tab_text='Paramètre/Commentaire') panneau=Pmw.PanedWidget(nb.page("Mocles"), orient='horizontal') @@ -187,6 +199,11 @@ class MACROTreeItem(compooper.EtapeTreeItem): Ce nom dépend de la validité de l'objet """ if self.object.isactif(): + if self.object.state != 'unchanged': + # Si des modifications ont eu lieu on force le calcul des concepts de sortie + # et celui du contexte glissant + self.object.get_type_produit(force=1) + self.object.parent.reset_context() if self.object.isvalid(): return "ast-green-square" else: @@ -230,6 +247,7 @@ class MACROTreeItem(compooper.EtapeTreeItem): # item.object = MCSIMP, MCFACT, MCBLOC ou MCList if item.object.isoblig() : self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ') + print "Impossible de supprimer un mot-clé obligatoire" return 0 else : self.object.suppentite(item.object) @@ -274,10 +292,6 @@ class MACROTreeItem(compooper.EtapeTreeItem): def verif_condition_bloc(self): return self.object.verif_condition_bloc() - def nomme_sd(self,nom): - """ Lance la méthode de nommage de la SD """ - return self.object.nomme_sd(nom) - def get_noms_sd_oper_reentrant(self): return self.object.get_noms_sd_oper_reentrant() diff --git a/Editeur/compomclist.py b/Editeur/compomclist.py index 74f5254e..e1ba88e4 100644 --- a/Editeur/compomclist.py +++ b/Editeur/compomclist.py @@ -1,9 +1,21 @@ -#@ MODIF compomclist Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw @@ -39,7 +51,35 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem): Retourne 1 si l'objet pointé par self est un MCFact, 0 sinon """ return 0 - + + def isMCList(self): + """ + Retourne 1 si l'objet pointé par self est une MCList, 0 sinon + """ + return 1 + + def additem(self,obj,pos): + """ + Ajoute un objet MCFACT à la MCList (self.object) à la position pos + """ + self.object.init_modif() + obj.verif_existence_sd() + obj.reparent(self.object.parent) + self.object.insert(pos,obj) + item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj) + return item + + def suppitem(self,item): + """ + Retire un objet MCFACT de la MCList (self.object) + """ + self.object.init_modif() + self.object.remove(item.object) + # la liste peut être retournée vide ! + message = "Mot-clé " + item.object.nom + " supprimé" + self.appli.affiche_infos(message) + return 1 + import Accas treeitem = MCListTreeItem objet = Accas.MCList diff --git a/Editeur/componiveau.py b/Editeur/componiveau.py index 67ed0df1..f16c2c13 100644 --- a/Editeur/componiveau.py +++ b/Editeur/componiveau.py @@ -1,9 +1,21 @@ -#@ MODIF componiveau Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * diff --git a/Editeur/componuplet.py b/Editeur/componuplet.py index d4e76fb9..04d11082 100644 --- a/Editeur/componuplet.py +++ b/Editeur/componuplet.py @@ -1,9 +1,21 @@ -#@ MODIF componuplet Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # Modules Python import types @@ -17,8 +29,8 @@ import Objecttreeitem import panels # -__version__="$Name: V1_1p1 $" -__Id__="$Id: componuplet.py,v 1.1.1.1 2001/12/04 15:38:22 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: componuplet.py,v 1.1.1.1 2002/03/26 09:08:46 eficas Exp $" # myrepr = Repr() diff --git a/Editeur/compooper.py b/Editeur/compooper.py index eceb5cf8..154aa2ab 100644 --- a/Editeur/compooper.py +++ b/Editeur/compooper.py @@ -1,12 +1,25 @@ -#@ MODIF compooper Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw +import traceback import Objecttreeitem import panels import fontes @@ -68,7 +81,8 @@ class OPERPanel(panels.OngletPanel): choix = self.listbox.getcurselection()[0] self.valeur_choisie.set(choix) except: - pass + traceback.print_exc() + def choose_valeur_from_list(self,command): try: @@ -76,7 +90,7 @@ class OPERPanel(panels.OngletPanel): self.valeur_choisie.set(choix) apply(command,(),{}) except: - pass + traceback.print_exc() class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): panel = OPERPanel @@ -189,7 +203,9 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): def nomme_sd(self,nom): """ Lance la méthode de nommage de la SD """ - return self.object.nomme_sd(nom) + test,mess= self.object.nomme_sd(nom) + if test:self.object.parent.reset_context() + return test,mess def is_reentrant(self): return self.object.is_reentrant() @@ -218,6 +234,16 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): commande_comment.jdc = commande_comment.parent = self.object.jdc return commande_comment + def replace_child(self,old_item,new_item): + """ + Remplace old_item.object par new_item.object dans les fils de self.object + """ + index = self.object.mc_liste.index(old_item.object) + self.object.init_modif() + self.object.mc_liste.remove(old_item.object) + self.object.mc_liste.insert(index,new_item.object) + self.object.fin_modif() + import Accas treeitem = EtapeTreeItem objet = Accas.ETAPE diff --git a/Editeur/compoparam.py b/Editeur/compoparam.py index cd247e05..b5331466 100644 --- a/Editeur/compoparam.py +++ b/Editeur/compoparam.py @@ -1,9 +1,21 @@ -#@ MODIF compoparam Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== """ Ce module contient les classes permettant de définir les objets graphiques diff --git a/Editeur/compoparameval.py b/Editeur/compoparameval.py index 13bb98ba..2fa34a60 100644 --- a/Editeur/compoparameval.py +++ b/Editeur/compoparameval.py @@ -1,9 +1,21 @@ -#@ MODIF compoparameval Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== """ Ce module contient les classes permettant de définir les objets graphiques diff --git a/Editeur/compoproc.py b/Editeur/compoproc.py index 7cbc5edf..88188816 100644 --- a/Editeur/compoproc.py +++ b/Editeur/compoproc.py @@ -1,9 +1,21 @@ -#@ MODIF compoproc Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== from Tkinter import * import Pmw @@ -19,7 +31,7 @@ class PROCPanel(panels.OngletPanel): nb.pack(fill = 'both', expand = 1) self.nb=nb nb.add('Mocles', tab_text='Ajouter mots-clés') - nb.add('Commande', tab_text='Insérer Commande') + nb.add('Commande', tab_text='Nouvelle Commande') nb.add('Commentaire',tab_text='Paramètre/Commentaire') panneau=Pmw.PanedWidget(nb.page("Mocles"), orient='horizontal') @@ -130,10 +142,6 @@ class ProcEtapeTreeItem(compooper.EtapeTreeItem): def verif_condition_bloc(self): return self.object.verif_condition_bloc() - def nomme_sd(self,nom): - """ Lance la méthode de nommage de la SD """ - return self.object.nomme_sd(nom) - def get_noms_sd_oper_reentrant(self): return self.object.get_noms_sd_oper_reentrant() diff --git a/Editeur/composimp.py b/Editeur/composimp.py index d7ec659b..57e7c505 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -1,17 +1,32 @@ -#@ MODIF composimp Editeur DATE 05/09/2001 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== +# Modules Python import string,types,os from Tkinter import * import Pmw from tkFileDialog import * from tkMessageBox import showinfo from copy import copy,deepcopy +import traceback +# Modules Eficas import Objecttreeitem import prefs import panels @@ -51,7 +66,8 @@ class newSIMPPanel(panels.OngletPanel): def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): """ - Enregistre val comme valeur de self.node.item.object SANS faire de test de validité + Enregistre val comme valeur de self.node.item.object SANS + faire de test de validité """ if self.parent.modified == 'n' : self.parent.init_modif() if name != None: @@ -67,9 +83,9 @@ class newSIMPPanel(panels.OngletPanel): self.node.racine.verif_all() else : self.node.parent.verif() + self.node.update() if self.node.item.isvalid(): self.node.parent.select() - self.node.update() # ---------------------------------------------------------------------------------------- # Méthodes utlisées pour la manipulation des items dans les listes de choix # ---------------------------------------------------------------------------------------- @@ -196,18 +212,18 @@ class PLUSIEURS_Panel(newSIMPPanel): self.record_valeur(valeur) if self.node.item.isvalid(): self.node.parent.select() - # fermeture de la fenêtre de sélection - if self.ajout_valeurs: - self.ajout_valeurs.quit() + # fermeture de la fenêtre de sélection + if self.ajout_valeurs: + self.ajout_valeurs.quit() def annule_modifs_valeur(self): """ RAZ de la liste des valeurs (annule toutes les valeurs saisies par l'utilisateur) """ self.node.select() - # fermeture de la fenêtre de sélection - if self.ajout_valeurs: - self.ajout_valeurs.quit() + # fermeture de la fenêtre de sélection + if self.ajout_valeurs: + self.ajout_valeurs.quit() def traite_reel(self,valeur): """ @@ -305,7 +321,7 @@ class PLUSIEURS_INTO_Panel(PLUSIEURS_Panel): """ Génère la page de saisie de plusieurs valeurs parmi un ensemble discret de possibles - """ + """ self.ajout_valeurs = None # On récupère la bulle d'aide du panneau, l'objet, min et max (cardinalité de la liste), # la liste des choix et la liste des valeurs @@ -424,12 +440,12 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): # Création de l'entry ou de la liste des SD self.label = Label(self.frame_choix,text="Valeur :") self.make_entry(frame = self.frame_choix,command = self.add_valeur_sans_into) - self.label.place(relx=0.05,rely=0.5) - # Création d'un bouton "Importer ..." sur le panel. - bouton_valeurs_fichier = Button(self.frame_choix, - text="Importer ...", - command=self.select_in_file) - bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6) + self.label.place(relx=0.05,rely=0.5) + # Création d'un bouton "Importer ..." sur le panel. + bouton_valeurs_fichier = Button(self.frame_choix, + text="Importer ...", + command=self.select_in_file) + bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6) self.ajout_valeurs = None # boutons Ajouter et Supprimer bouton_add = Button(self.frame_boutons_fleches, @@ -441,10 +457,12 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): bouton_add.place(relx=0.3,rely=0.35) bouton_sup.place(relx=0.3,rely=0.65) # affichage de l'aide + self.frame_aide.update() self.aide = Label(self.frame_aide, text = aide, justify='center', - anchor='center') + anchor='center', + wraplength=int(self.frame_aide.winfo_width()*0.8)) self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1) self.Liste_valeurs.affiche_liste() # boutons Accepter et Annuler @@ -456,21 +474,24 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): command = self.annule_modifs_valeur) for but in (bouton_accepter,bouton_annuler): but.pack(side='left',padx=5) - - def select_in_file(self): - """ Permet d'ouvrir un fichier choisi par l'utilisateur. """ - nom_fichier = askopenfilename(title="Choix fichier :") - if nom_fichier == "": - return - try: - f = open(nom_fichier, "rb") - selection_texte = f.read() - f.close() - self.ajout_valeurs = FenetreDeSelection(self, self.node.item, - titre="Sélection de valeurs", - texte=selection_texte) - except: - showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier) + + def select_in_file(self): + """ Permet d'ouvrir un fichier choisi par l'utilisateur. """ + nom_fichier = askopenfilename(title="Choix fichier :") + if nom_fichier == "": + return + try: + f = open(nom_fichier, "rb") + selection_texte = f.read() + f.close() + self.ajout_valeurs = FenetreDeSelection(self, + self.node.item, + self.parent.appli, + titre="Sélection de valeurs", + texte=selection_texte) + except: + traceback.print_exc() + showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier) def get_bulle_aide(self): """ @@ -700,22 +721,20 @@ class UNIQUE_Panel(newSIMPPanel): if not test : mess = "impossible d'évaluer : %s " %`valeur` self.parent.appli.affiche_infos("Valeur du mot-clé non autorisée :"+mess) - return elif self.node.item.isvalid() : self.parent.appli.affiche_infos('Valeur du mot-clé enregistrée') + if self.node.item.get_position()=='global': + self.node.etape.verif_all() + elif self.node.item.get_position()=='global_jdc': + self.node.racine.verif_all() + else : + self.node.parent.verif() + self.node.update() self.node.parent.select() else : cr = self.node.item.get_cr() mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() self.record_valeur(anc_val,mess=mess) - return - if self.node.item.get_position()=='global': - self.node.etape.verif_all() - elif self.node.item.get_position()=='global_jdc': - self.node.racine.verif_all() - else : - self.node.parent.verif() - self.node.update() class UNIQUE_INTO_Panel(UNIQUE_Panel): """ @@ -878,7 +897,7 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): self.listbox.place(relx=0.5,rely=0.3,relheight=0.4,anchor='center') # affichage du bouton 'Nouveau concept' self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", - items = ('OUI','NON'),menubutton_width=10) + items = ('NON','OUI'),menubutton_width=10) self.b_co.configure(command = lambda e,s=self : s.ask_new_concept()) self.b_co.place(relx=0.05,rely=0.6,anchor='w') self.label_co = Label(self.frame_valeur,text='Nom du nouveau concept :') @@ -888,9 +907,12 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): self.l_resu = Label(self.frame_valeur,text='Structure de donnée choisie :') self.valeur_choisie = StringVar() self.label_valeur = Label(self.frame_valeur,textvariable=self.valeur_choisie) - self.aide = Label(self.frame_valeur, text = aide) + self.frame_valeur.update() + self.aide = Label(self.frame_valeur, + text = aide, + wraplength=int(self.frame_valeur.winfo_width()*0.8), + justify='center') self.aide.place(relx=0.5,rely=0.85,anchor='n') - self.b_co.invoke('NON') # affichage de la valeur courante self.display_valeur() @@ -902,13 +924,66 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): pour valoriser le mot-clé simple courant ou cliquez sur NOUVEAU CONCEPT pour entrer le nom d'un concept non encore existant""" + def valid_valeur(self): + """ + Teste si la valeur fournie par l'utilisateur est une valeur permise : + - si oui, l'enregistre + - si non, restaure l'ancienne valeur + """ + if self.parent.modified == 'n' : self.parent.init_modif() + valeur = self.get_valeur() + self.erase_valeur() + anc_val = self.node.item.get_valeur() + test_CO=self.node.item.is_CO(anc_val) + test = self.node.item.set_valeur(valeur) + if not test : + mess = "impossible d'évaluer : %s " %`valeur` + self.parent.appli.affiche_infos("Valeur du mot-clé non autorisée :"+mess) + return + elif self.node.item.isvalid() : + self.parent.appli.affiche_infos('Valeur du mot-clé enregistrée') + if test_CO: + # il faut egalement propager la destruction de l'ancien concept + self.node.item.delete_valeur_co(valeur=anc_val) + # et on force le recalcul des concepts de sortie de l'etape + self.node.item.object.etape.get_type_produit(force=1) + # et le recalcul du contexte + self.node.item.object.etape.parent.reset_context() + self.node.parent.select() + else : + cr = self.node.item.get_cr() + mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() + self.record_valeur(anc_val,mess=mess) + return + if self.node.item.get_position()=='global': + self.node.etape.verif_all() + elif self.node.item.get_position()=='global_jdc': + self.node.racine.verif_all() + else : + self.node.parent.verif() + self.node.update() + def valid_nom_concept_co(self,event=None): """ Lit le nom donné par l'utilisateur au concept de type CO qui doit être la valeur du MCS courant et stocke cette valeur """ + if self.parent.modified == 'n' : self.parent.init_modif() + anc_val = self.node.item.get_valeur() nom_concept = self.entry_co.get() - self.node.item.set_valeur_co(nom_concept) + test,mess=self.node.item.set_valeur_co(nom_concept) + if not test: + # On n'a pas pu créer le concept + self.parent.appli.affiche_infos(mess) + return + elif self.node.item.isvalid() : + self.parent.appli.affiche_infos('Valeur du mot-clé enregistrée') + self.node.parent.select() + else : + cr = self.node.item.get_cr() + mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal() + self.record_valeur(anc_val,mess=mess) + return if self.node.item.get_position()=='global': self.node.etape.verif_all() elif self.node.item.get_position()=='global_jdc': @@ -932,6 +1007,9 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): self.label_valeur.place_forget() self.entry_co.focus() elif new_concept == 'NON': + # On est passe de OUI à NON, on supprime la valeur + self.node.item.delete_valeur_co() + self.record_valeur(name=None,mess="Suppression CO enregistrée") self.label_co.place_forget() self.entry_co.place_forget() self.l_resu.place(relx=0.05,rely=0.7) @@ -942,14 +1020,40 @@ class UNIQUE_SDCO_Panel(UNIQUE_ASSD_Panel): Affiche la valeur de l'objet pointé par self """ valeur = self.node.item.get_valeur() - if valeur == None : return # pas de valeur à afficher ... + if valeur == None or valeur == '': + self.valeur_choisie.set('') + return # pas de valeur à afficher ... # il faut configurer le bouton si la valeur est un objet CO # sinon afficher le nom du concept dans self.valeur_choisie - if valeur.__class__.__name__ != 'CO': - self.valeur_choisie.set(valeur.nom) - else: + if self.node.item.is_CO(): self.b_co.invoke('OUI') self.entry_co.insert(0,valeur.nom) + else: + self.valeur_choisie.set(valeur.nom) + + def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): + """ + Enregistre val comme valeur de self.node.item.object SANS faire de test de validité + """ + if self.parent.modified == 'n' : self.parent.init_modif() + if name != None: + valeur =name + else : + self.entry_co.delete(0,END) + valeur= self.entry_co.get() + self.node.item.set_valeur_co(valeur) + self.parent.appli.affiche_infos(mess) + # On met a jour le display dans le panneau + self.display_valeur() + if self.node.item.get_position()=='global': + self.node.etape.verif_all() + elif self.node.item.get_position()=='global_jdc': + self.node.racine.verif_all() + else : + self.node.parent.verif() + if self.node.item.isvalid(): + self.node.parent.select() + self.node.update() class UNIQUE_BASE_Panel(UNIQUE_Panel): @@ -980,7 +1084,11 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel): self.entry.bind("",lambda e,c=self.valid_valeur:c()) self.entry.focus() # aide associée au panneau - self.aide = Label(self.frame_valeur, text = aide) + self.frame_valeur.update() + self.aide = Label(self.frame_valeur, + text = aide, + wraplength=int(self.frame_valeur.winfo_width()*0.8), + justify='center') self.aide.place(relx=0.5,rely=0.7,anchor='n') # affichage de la valeur du MCS self.display_valeur() @@ -1047,7 +1155,11 @@ class UNIQUE_COMP_Panel(UNIQUE_Panel): self.entry1.place(relx=0.27,rely = 0.5,relwidth=0.35) self.entry2.place(relx=0.65,rely = 0.5,relwidth=0.35) self.entry1.focus() - self.aide = Label(self.frame_valeur, text = aide) + self.frame_valeur.update() + self.aide = Label(self.frame_valeur, + text = aide, + wraplength=int(self.frame_valeur.winfo_width()*0.8), + justify='center') self.aide.place(relx=0.5,rely=0.7,anchor='n') def get_bulle_aide(self): @@ -1135,7 +1247,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): else: # on attend un entier, un réel ou une string self.panel = UNIQUE_BASE_Panel - def SetText(self, text): try: @@ -1158,7 +1269,8 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): Retourne le texte à afficher dans l'arbre représentant la valeur de l'objet pointé par self """ - return self.object.GetText() + text= self.object.GetText() + return text def wait_co(self): """ @@ -1218,42 +1330,47 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): def GetMinMax(self): """ Retourne les valeurs min et max de la définition de object """ return self.object.get_min_max() - - def GetMultiplicite(self): - """ A préciser. - Retourne la multiplicité des valeurs affectées à l'objet - représenté par l'item. Pour le moment retourne invariablement 1. - """ - return 1 - - def GetType(self): - """ Retourne le type de valeur attendu par l'objet représenté par l'item. - """ - return self.object.get_type() - - def GetIntervalle(self): - """ Retourne le domaine de valeur attendu par l'objet représenté par l'item. - """ - return self.object.getintervalle() - - def IsInIntervalle(self,valeur): - """ Retourne 1 si la valeur est dans l'intervalle permis par - l'objet représenté par l'item. - """ - return self.object.isinintervalle(valeur) + + def GetMultiplicite(self): + """ A préciser. + Retourne la multiplicité des valeurs affectées à l'objet + représenté par l'item. Pour le moment retourne invariablement 1. + """ + return 1 + + def GetType(self): + """ + Retourne le type de valeur attendu par l'objet représenté par l'item. + """ + return self.object.get_type() + + def GetIntervalle(self): + """ + Retourne le domaine de valeur attendu par l'objet représenté + par l'item. + """ + return self.object.getintervalle() + + def IsInIntervalle(self,valeur): + """ + Retourne 1 si la valeur est dans l'intervalle permis par + l'objet représenté par l'item. + """ + return self.object.isinintervalle(valeur) def set_valeur_co(self,nom_co): """ Affecte au MCS pointé par self l'objet de type CO et de nom nom_co """ - self.object.set_valeur_co(nom_co) + return self.object.set_valeur_co(nom_co) def get_sd_avant_du_bon_type(self): """ Retourne la liste des noms des SD présentes avant l'étape qui contient le MCS pointé par self et du type requis par ce MCS """ - return self.object.jdc.get_sd_avant_du_bon_type(self.object.etape,self.object.definition.type) + return self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape, + self.object.definition.type) def GetListeValeurs(self) : """ Retourne la liste des valeurs de object """ @@ -1272,6 +1389,34 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): - retourne 'valeur' (chaîne de caractères) sinon """ return self.object.eval_valeur(valeur) + def is_CO(self,valeur=None): + """ + Indique si valeur est un concept produit de la macro + Cette méthode n'a de sens que pour un MCSIMP d'une MACRO + Si valeur vaut None on teste la valeur du mot cle + """ + # Pour savoir si un concept est un nouveau concept de macro + # on regarde s'il est présent dans l'attribut sdprods de l'étape + # ou si son nom de classe est CO. + # Il faut faire les 2 tests car une macro non valide peut etre + # dans un etat pas tres catholique avec des CO pas encore types + # et donc pas dans sdprods (resultat d'une exception dans type_sdprod) + if not valeur:valeur=self.object.valeur + if valeur in self.object.etape.sdprods:return 1 + if type(valeur) is not types.ClassType:return 0 + if valeur.__class__.__name__ == 'CO':return 1 + return 0 + + def delete_valeur_co(self,valeur=None): + """ + Supprime la valeur du mot cle (de type CO) + il faut propager la destruction aux autres etapes + """ + if not valeur : valeur=self.object.valeur + # XXX faut il vraiment appeler del_sdprod ??? + #self.object.etape.parent.del_sdprod(valeur) + self.object.etape.parent.delete_concept(valeur) + import Accas treeitem = SIMPTreeItem objet = Accas.MCSIMP diff --git a/Editeur/configuration.py b/Editeur/configuration.py index 7a191d57..703ec6d4 100644 --- a/Editeur/configuration.py +++ b/Editeur/configuration.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module sert pour charger les paramètres de configuration d'EFICAS """ @@ -55,8 +74,9 @@ class CONFIG: print string.join(l[2:]) sys.exit() for attr in self.l_nom_param: - nom_attr,statut = attr - valeur = d.get(nom_attr,None) + nom_attr,statut,defaut = attr + #valeur = d.get(nom_attr,None) + valeur = d.get(nom_attr,defaut) if not valeur and statut=='o': showerror("Erreur","Une erreur s'est produite dans la relecture du fichier de configuration : " + self.fic_ini+"\n EFICAS va vous demander les nouveaux paramètres") @@ -81,7 +101,7 @@ class CONFIG: traceback.print_exc() return for attr in self.l_nom_param: - nom_attr,statut = attr + nom_attr,statut,defaut = attr valeur = d.get(nom_attr,None) if valeur : setattr(self,nom_attr,valeur) @@ -94,6 +114,14 @@ class CONFIG: (label,nature,nom_var,defaut) """ self.l_param=[] + # répertoire initial pour OPEN/SAVE des fichiers de commande + # Par defaut, EFICAS utilise le repertoire utilisateur $HOME/Eficas_install + # Il est possible de specifier dans editeur.ini ou eficas.ini un autre chemin + # Ce peut etre un chemin absolu ou le repertoire courant (os.curdir) + if hasattr(self,'initialdir'): + self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.initialdir)) + else: + self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.rep_user)) # répertoire de travail if hasattr(self,'rep_travail'): self.l_param.append(("Répertoire de travail",'rep','rep_travail',self.rep_travail)) @@ -135,11 +163,10 @@ class CONFIG: self.l_nom_param=[] statut='o' for tup in self.l_param: - #self.l_nom_param.append((tup[2],statut)) if tup[1] == 'YesNo': # les paramètres suivant tup sont facultatifs ... statut='f' - self.l_nom_param.append((tup[2],statut)) + self.l_nom_param.append((tup[2],statut,tup[3])) # nom,statut,defaut def affichage_fichier_ini(self): """ diff --git a/Editeur/definition_cata.py b/Editeur/definition_cata.py index d4842980..eeed1410 100644 --- a/Editeur/definition_cata.py +++ b/Editeur/definition_cata.py @@ -1,9 +1,21 @@ -#@ MODIF definition_cata Accas DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # Modules Python import types diff --git a/Editeur/eficas.py b/Editeur/eficas.py index c1d683c1..14419aae 100644 --- a/Editeur/eficas.py +++ b/Editeur/eficas.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe EFICAS qui est l'application proprement dite. Elle est dérivée de la classe APPLI @@ -17,7 +36,10 @@ from widgets import Fenetre class EFICAS(appli.APPLI): - extensions=['readercata','bureau','browser','options'] + try: + from prefs import appli_composants + except: + appli_composants=['readercata','bureau','browser','options'] def get_texte_infos(self): texte=appli.APPLI.get_texte_infos(self) diff --git a/Editeur/eficas_go.py b/Editeur/eficas_go.py index 71f4bd09..3f4df08b 100644 --- a/Editeur/eficas_go.py +++ b/Editeur/eficas_go.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module permet de lancer l'application EFICAS en affichant un ecran Splash pour faire patentier l'utilisateur diff --git a/Editeur/faq.py b/Editeur/faq.py index 8caa7ef9..d480fe22 100644 --- a/Editeur/faq.py +++ b/Editeur/faq.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module sert a afficher le texte du FAQ EFICAS et à attendre l'acquittement par l'utilisateur diff --git a/Editeur/fenetre_mc_inconnus.py b/Editeur/fenetre_mc_inconnus.py index 113ec4e4..e2b4cf78 100644 --- a/Editeur/fenetre_mc_inconnus.py +++ b/Editeur/fenetre_mc_inconnus.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -46,17 +65,13 @@ class fenetre_mc_inconnus : self.frame1.place(relx=0,rely=0,relheight=0.2,relwidth=1) self.frame2.place(relx=0,rely=0.2,relheight=0.6,relwidth=1) self.frame3.place(relx=0,rely=0.8,relheight=0.2,relwidth=1) - self.frame21 = Frame(self.frame2) - self.frame22 = Frame(self.frame2) - self.frame21.place(relx=0,rely=0,relwidth=0.6,relheight=1) - self.frame22.place(relx=0.6,rely=0,relwidth=0.4,relheight=1) def init_label(self): """ Affichage du label dans la zone concernée """ txt = " Un ou plusieurs mots-clés inconnus ont été trouvés dans le fichier de commandes." - txt = txt + "En cliquant sur leur nom, vous pourrez soit corriger l'orthographe soit supprimer ce mot-clé" + #txt = txt + "En cliquant sur leur nom, vous pourrez soit corriger l'orthographe soit supprimer ce mot-clé" self.fenetre.update_idletasks() Label(self.frame1, text = txt, @@ -68,19 +83,24 @@ class fenetre_mc_inconnus : """ Affiche les mots-clés à modifier ou supprimer """ + i=0 + self.widgets=[] for mc in self.l_mc : # mc est une liste : # mc contient comme premiers arguments l'étape et éventuellement les blocs, mcfact ... # et contient comme 2 derniers éléments le nom du mot-clé et sa valeur path_mc = self.get_path(mc[0:-2]) nom_mc = mc[-2] - Label(self.frame21,text = path_mc).pack(side='left') - e = Entry(self.frame22) - e.pack(side='left') + lab=Label(self.frame2,text = path_mc) + lab.grid(row=i,column=1,sticky=W) + e = Entry(self.frame2) + e.grid(row=i,column=0,sticky=W) e.insert(END,nom_mc) - e.bind("",lambda event,en=e,m=mc,s=self : s.select_mc(m,en)) - e.bind("",lambda e,s=self : s.modifie_mc()) + #e.bind("",lambda event,en=e,m=mc,s=self : s.select_mc(m,en)) + #e.bind("",lambda e,s=self : s.modifie_mc()) e.configure(relief='flat',state='disabled') + self.widgets.append((e,lab)) + i=i+1 def init_boutons(self): """ @@ -100,9 +120,10 @@ class fenetre_mc_inconnus : self.b_quit = Button(self.frame3, text = "Fermer", command = self.quit) - self.b_mod.place(relx=0.25,rely=0.5,anchor='center') - self.b_sup.place(relx=0.50,rely=0.5,anchor='center') - self.b_quit.place(relx=0.75,rely=0.5,anchor='center') + #self.b_mod.place(relx=0.25,rely=0.5,anchor='center') + #self.b_sup.place(relx=0.50,rely=0.5,anchor='center') + #self.b_quit.place(relx=0.75,rely=0.5,anchor='center') + self.b_quit.place(relx=0.50,rely=0.5,anchor='center') def wait_new_list(self): """ @@ -120,7 +141,6 @@ class fenetre_mc_inconnus : """ txt = '' for o in l_o : - print o txt = txt + o.nom+'/' # on enlève le dernier slash en trop txt = txt[0:-1] @@ -156,6 +176,9 @@ class fenetre_mc_inconnus : """ index = self.l_mc.index(self.mc_courant) self.new_l_mc[index] = None + e,lab=self.widgets[index] + e.grid_remove() + lab.grid_remove() self.desactive_boutons() self.desactive_entry() diff --git a/Editeur/fontes.py b/Editeur/fontes.py index 013f6d2e..997e77fe 100644 --- a/Editeur/fontes.py +++ b/Editeur/fontes.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== standard = ("Times",10) standard_italique = ("Times",10,'italic') standard_gras = ("Times",10,'bold') diff --git a/Editeur/images.py b/Editeur/images.py index 31f8e2e2..e586d5ba 100644 --- a/Editeur/images.py +++ b/Editeur/images.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module joue le role de cache pour les images stockées dans le repertoire ICONDIR diff --git a/Editeur/import_code.py b/Editeur/import_code.py index 1152f1b7..4d05e343 100644 --- a/Editeur/import_code.py +++ b/Editeur/import_code.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module réalise toutes les mises à jour du chemin pour les imports de modules Python diff --git a/Editeur/jdcdisplay.py b/Editeur/jdcdisplay.py index d85ab06a..05f591ec 100644 --- a/Editeur/jdcdisplay.py +++ b/Editeur/jdcdisplay.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe JDCDISPLAY qui réalise l'affichage du jeu de commandes sous la forme d'un arbre et de panneaux qui portent @@ -25,6 +44,7 @@ class JDCDISPLAY: self.jdc=jdc self.nom_jdc=nom_jdc self.fichier=None + self.panel_courant=None if not appli: class Appli: @@ -52,8 +72,8 @@ class JDCDISPLAY: self.modified='n' self.pane=Pmw.PanedWidget(self.parent,orient='horizontal') - self.pane.add('treebrowser',min=0.5) - self.pane.add('selected',min=0.5) + self.pane.add('treebrowser',min=0.4,size=0.5) + self.pane.add('selected',min=0.4) self.pane.pack(expand=1,fill='both') self.tree=TREEITEMINCANVAS(jdc,nom_jdc,self.pane.pane('treebrowser'), self.appli,self.select_node) @@ -78,13 +98,32 @@ class JDCDISPLAY: Lance la génération du panneau contextuel de l'objet sélectionné dans l'arbre """ + if self.panel_courant: + # On detruit le panneau + self.panel_courant.destroy() + o=self.panel_courant + self.panel_courant=None + # Mettre à 1 pour verifier les cycles entre objets + # pour les panneaux + withCyclops=0 + if withCyclops: + from Misc import Cyclops + z = Cyclops.CycleFinder() + z.register(o) + del o + z.find_cycles() + z.show_stats() + z.show_cycles() + + if node.item.isactif(): if hasattr(node.item,"panel"): - return node.item.panel(self,self.pane.pane('selected'),node) + self.panel_courant=node.item.panel(self,self.pane.pane('selected'),node) else: raise Exception("Le noeud sélectionné n'a pas de panel associé") else: - return panels.Panel_Inactif(self,self.pane.pane('selected'),node) + self.panel_courant = panels.Panel_Inactif(self,self.pane.pane('selected'),node) + return self.panel_courant def init_modif(self): """ @@ -148,7 +187,7 @@ class JDCDISPLAY: Ne permet que la copie d'objets de type Commande ou MCF """ objet_a_copier = self.appli.noeud_a_editer.item.get_copie_objet() - if objet_a_copier.__class__.__name__ in ('ETAPE','PROC_ETAPE','MACRO_ETAPE'): + if objet_a_copier.__class__.__name__ in ('ETAPE','PROC_ETAPE','MACRO_ETAPE','FORM_ETAPE'): self.doPaste_Commande(objet_a_copier) elif objet_a_copier.__class__.__name__ == "MCFACT": self.doPaste_MCF(objet_a_copier) @@ -159,14 +198,16 @@ class JDCDISPLAY: def doPaste_Commande(self,objet_a_copier): """ - Réalise la copie de l'objet passé en argument qui est nécessairement une commande + Réalise la copie de l'objet passé en argument qui est nécessairement + une commande """ # il faut vérifier que le noeud sélectionné (noeud courant) est bien # une commande ou un JDC sinon la copie est impossible ... if self.node_selected.item.isCommande() : child = self.node_selected.append_brother(objet_a_copier,retour='oui') elif self.node_selected.item.isJdc() : - child = self.node_selected.append_child(objet_a_copier,retour='oui') + child = self.node_selected.append_child(objet_a_copier,pos='first', + retour='oui') else: showinfo("Copie impossible", "Vous ne pouvez coller la commande copiée à ce niveau de l'arborescence !") @@ -195,10 +236,17 @@ class JDCDISPLAY: child = self.node_selected.append_child(objet_a_copier,retour='oui') elif self.node_selected.item.isMCList() : # le noeud courant est une MCList - child = self.node_selected.parent.append_child(objet_a_copier,retour='oui') + child = self.node_selected.parent.append_child(objet_a_copier,pos='first',retour='oui') elif self.node_selected.item.isMCFact(): # le noeud courant est un MCFACT - child = self.node_selected.parent.append_child(objet_a_copier,retour='oui') + if self.node_selected.parent.item.isMCList(): + # le noeud selectionne est un MCFACT dans une MCList + child = self.node_selected.parent.append_child(objet_a_copier, + pos=self.node_selected.item, + retour='oui') + else: + # le noeud MCFACT selectionne n'est pas dans une MCList + child = self.node_selected.parent.append_child(objet_a_copier,retour='oui') else: showinfo("Copie impossible", "Vous ne pouvez coller le mot-clé facteur copié à ce niveau de l'arborescence !") diff --git a/Editeur/menubar.py b/Editeur/menubar.py index ad2366e8..d4eaf673 100644 --- a/Editeur/menubar.py +++ b/Editeur/menubar.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ from Tkinter import Menu @@ -12,7 +31,10 @@ class MENUBAR: self.parent.configure(menu=self.menubar) self.init() - labels= ('Fichier','Edition','Jeu de commandes','Catalogue','Browsers','Options') + try: + from prefs import labels + except: + labels= ('Fichier','Edition','Jeu de commandes','Catalogue','Browsers','Options','Aide') def init(self): self.menudict={} @@ -21,11 +43,3 @@ class MENUBAR: self.menudict[label]=menu self.menubar.add_cascade(label=label,menu=menu) - #self.optionmenu.add_command(label='Catalogue développeur',command=self.choix_cata_developpeur) - - #self.browsermenu.add_command(label='Browser catalogue',command = self.browser_catalogue) - #self.browsermenu.add_command(label='Shell',command = self.shell) - #self.browsermenu.add_command(label='Editeur catalogue',command = self.edite_catalogue) - - - diff --git a/Editeur/options.py b/Editeur/options.py index 0101dd05..db1d1b6f 100644 --- a/Editeur/options.py +++ b/Editeur/options.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -6,14 +25,17 @@ from tkFileDialog import * # Modules Eficas +# l'option affichage_commandes peut prendre les valeurs "groupes" ou "alphabetic" +affichage_commandes="alphabetic" class OPTIONS: menu_defs=[ - ('Options',[ - ("Catalogue développeur",'choix_cata_developpeur'), - ] - ) + ('Options',[ + ("Affichage commandes",(("alphabétique",'&affichage_alpha'),("groupes",'&affichage_grp'))), + # ("Catalogue développeur",'choix_cata_developpeur'), + ] + ) ] button_defs=[] @@ -22,6 +44,14 @@ class OPTIONS: self.appli=appli self.parent=parent + def affichage_grp(self): + global affichage_commandes + affichage_commandes="groupes" + + def affichage_alpha(self): + global affichage_commandes + affichage_commandes="alphabetic" + def choix_cata_developpeur(self): """ Cette méthode demande à l'utilisateur-développeur d'indiquer quel catalogue diff --git a/Editeur/panels.py b/Editeur/panels.py index 8338308a..c442939d 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -1,16 +1,32 @@ -#@ MODIF panels Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import string import os from Tkinter import * import Pmw +import time from widgets import ListeChoix +from widgets import ListeChoixParGroupes +import prefs +import options SEPARATEUR = '-'*30 @@ -29,6 +45,32 @@ class Panel(Frame) : self.creer_boutons() self.init() + def destroy(self): + Frame.destroy(self) + self.panneau=None + self.parent=None + # Because on herite de Frame + self.master=None + # On supprime explicitement les references aux objets Tk + self.nb=None + self.fr_but=None + self.bouton_cata=None + self.bouton_doc=None + self.bouton_com=None + self.bouton_sup=None + self.frame_eval=None + self.label=None + self.frame_boutons=None + self.frame_comment=None + self.frame_param=None + # On termine la suppression de facon brutale (objets Tk et non Tk) + for k in self.__dict__.keys(): + # il est plus prudent de ne pas détruire le lien sur le Node + # si on voulait mettre l'attribut node à None, il faudrait + # que tous les appels à node.parent.select() apparaissent après + # toutes les autres actions liées au panel (node.item.isglobal(), ...) + if k != 'node' : setattr(self,k,None) + def creer_boutons(self): """ Méthode créant les boutons se trouvant dans la partie contextuelle d'EFICAS @@ -152,7 +194,6 @@ class Panel(Frame) : if self.parent.modified == 'n' : self.parent.init_modif() pere = self.node.parent self.node.delete() - pere.select() def affiche(self): """ Force l'affichage des fenêtres en cours """ @@ -164,10 +205,9 @@ class Panel(Frame) : texte_infos = '' for e in cmd.entites.keys() : if e == name : - texte_infos=cmd.entites[e].fr + texte_infos=getattr(cmd.entites[e],prefs.lang) break if texte_infos == '' : texte_infos="Pas d'infos disponibles" - #EFICAS.affiche_infos(texte_infos) self.parent.appli.affiche_infos(texte_infos) def defMC(self,name): @@ -182,9 +222,8 @@ class Panel(Frame) : def selectCmd(self,name): """ On retrouve la commande sous le curseur pour affichage du fr """ if name != 'COMMENTAIRE' and name != SEPARATEUR: - #EFICAS.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr) - #self.parent.appli.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr) - self.parent.appli.affiche_infos(self.parent.jdc.get_cmd(name).fr) + texte_infos=getattr(self.parent.jdc.get_cmd(name),prefs.lang) + self.parent.appli.affiche_infos(texte_infos) def defCmd(self,name): """ @@ -280,17 +319,28 @@ class OngletPanel(Panel) : but_apres.grid(column = 1,row =3) def makeCommandePage(self,page): + """ + Cree l'onglet + """ frame1 = Frame(page,height = 20) frame1.pack(side='top',fill='x') label = Label(frame1,text ="La commande choisie sera ajoutée\n APRES la commande courante") label.pack(side='top') frame2 = Frame(page) frame2.pack(side='top',fill='both',expand=1) - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmd)) - Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") + else: + liste_groupes=self.node.item.object.niveau.definition.liste_groupes + dict_groupes=self.node.item.object.niveau.definition.dict_groupes + Liste = ListeChoixParGroupes(self,frame2,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") Liste.affiche_liste() # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" @@ -301,11 +351,19 @@ class OngletPanel(Panel) : """ Crée la page correspondant à un objet de type JDC """ - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmdFirst)) - Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") + else: + liste_groupes=self.node.item.object.niveau.definition.liste_groupes + dict_groupes=self.node.item.object.niveau.definition.dict_groupes + Liste = ListeChoixParGroupes(self,page,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") Liste.affiche_liste() # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" diff --git a/Editeur/readercata.py b/Editeur/readercata.py index 47667a09..1a9f1db3 100644 --- a/Editeur/readercata.py +++ b/Editeur/readercata.py @@ -1,9 +1,29 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module sert à lire un catalogue et à construire un objet CataItem pour Eficas. Il s'appuie sur la classe READERCATA """ # Modules Python +import time import os,sys,py_compile import traceback import cPickle @@ -17,8 +37,11 @@ import fontes import analyse_catalogue from Noyau.N_CR import CR from widgets import Fenetre +from utils import init_rep_cata_dev #import catabrowser +import autre_analyse_cata +import uiinfo class READERCATA: @@ -37,12 +60,7 @@ class READERCATA: self.code=self.appli.code self.appli.format_fichier.set('python') self.OpenCata() - self.cataitem=None - #XXX CCAR : Pour le moment je ne construis pas le CATAItem - #self.cataitem = catabrowser.CATAItem(self,"Catalogue "+self.code, - #self.cata, - #objet_cata_ordonne = self.cata_ordonne_dico) def OpenCata(self): """ @@ -77,18 +95,35 @@ class READERCATA: # détermination de fic_cata_c et fic_cata_p self.fic_cata_c = self.fic_cata + 'c' self.fic_cata_p = os.path.splitext(self.fic_cata)[0]+'_pickled.py' + print "Debut compil cata: ",time.clock() # compilation éventuelle du catalogue test = self.compile_cata(self.fic_cata,self.fic_cata_c) + print "Fin compil cata: ",time.clock() if not test : showerror("Compilation catalogue","Impossible de compiler le catalogue %s" %self.fic_cata) # import du catalogue + print "Debut import_cata: ",time.clock() self.cata = self.import_cata(self.fic_cata) + print "Fin import_cata: ",time.clock() if not self.cata : showerror("Import du catalogue","Impossible d'importer le catalogue %s" %self.fic_cata) + # # analyse du catalogue (ordre des mots-clés) - #XXX A priori ceci fait double emploi. Il faut d'abord calculer l'ordre - # puis fabriquer le CATAItem - #CCAR :self.catalo = catabrowser.CATAItem(self,"Catalogue",self.cata) - self.Retrouve_Ordre_Cata_Standard() + # + print "Debut Retrouve_Ordre: ",time.clock() + # Retrouve_Ordre_Cata_Standard fait une analyse textuelle du catalogue + # remplacé par Retrouve_Ordre_Cata_Standard_autre qui utilise une numerotation + # des mots clés à la création + #self.Retrouve_Ordre_Cata_Standard() + self.Retrouve_Ordre_Cata_Standard_autre() + print "Fin Retrouve_Ordre: ",time.clock() + # + # analyse des données liées à l'IHM : UIinfo + # + print "Debut UIinfo: ",time.clock() + uiinfo.traite_UIinfo(self.cata) + print "Fin UIinfo: ",time.clock() + # # chargement et analyse des catalogues développeur (le cas échéant) + # if self.appli.CONFIGURATION.isdeveloppeur == 'OUI' : init_rep_cata_dev(self.fic_cata,self.appli.CONFIGURATION.path_cata_dev) fic_cata_dev = os.path.join(self.appli.CONFIGURATION.path_cata_dev,'cata_developpeur.py') @@ -101,7 +136,8 @@ class READERCATA: self.cata = (self.cata,) else: self.cata_dev =self.import_cata(fic_cata_dev) - self.Retrouve_Ordre_Cata_Developpeur() + #self.Retrouve_Ordre_Cata_Developpeur() + self.Retrouve_Ordre_Cata_Developpeur_autre() self.cata = (self.cata,self.cata_dev) else: self.cata = (self.cata,) @@ -125,6 +161,15 @@ class READERCATA: traceback.print_exc() return 0 + def Retrouve_Ordre_Cata_Standard_autre(self): + """ + Construit une structure de données dans le catalogue qui permet + à EFICAS de retrouver l'ordre des mots-clés dans le texte du catalogue. + Pour chaque entité du catlogue on crée une liste de nom ordre_mc qui + contient le nom des mots clés dans le bon ordre + """ + self.cata_ordonne_dico=autre_analyse_cata.analyse_catalogue(self.cata) + def Retrouve_Ordre_Cata_Standard(self): """ Retrouve l'ordre des mots-clés dans le catalogue, cad : @@ -146,6 +191,37 @@ class READERCATA: self.Get_Ordre_Cata(mode='cata') self.appli.affiche_infos("Catalogue standard chargé") + def Retrouve_Ordre_Cata_Developpeur(self): + """ + Retrouve l'ordre des mots-clés dans le catalogue, cad : + - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer + l'ordre des mots-clés dans le catalogue + - s'il n'a pas été modifié, relie le fichier pickle + """ + if self.code != 'ASTER' : return + fic_cata = os.path.join(self.appli.CONFIGURATION.path_cata_dev,'cata_developpeur.py') + message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev + splash._splash.configure(text = message,barre='oui') + cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata) + self.cata_dev_ordonne_cr = cata_dev_ordonne.cr + cata_dev_ordonne_dico = cata_dev_ordonne.entites + self.cata_ordonne_dico.update(cata_dev_ordonne_dico) + self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" ) + + def Retrouve_Ordre_Cata_Developpeur_autre(self): + """ + Retrouve l'ordre des mots-clés dans le catalogue, cad : + - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer + l'ordre des mots-clés dans le catalogue + - s'il n'a pas été modifié, relie le fichier pickle + """ + if self.code != 'ASTER' : return + message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev + splash._splash.configure(text = message,barre='oui') + cata_dev_ordonne_dico = autre_analyse_cata.analyse_catalogue(self.cata_dev) + self.cata_ordonne_dico.update(cata_dev_ordonne_dico) + self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" ) + def Get_Ordre_Cata(self,mode='pickle'): """ Retrouve l'ordre du catalogue : @@ -167,7 +243,7 @@ class READERCATA: splash._splash.configure(text = "Analyse du catalogue",barre='oui') cata_ordonne = analyse_catalogue.analyse_catalogue(self,self.fic_cata) self.cata_ordonne_cr = cata_ordonne.cr - self.cata_ordonne_dico = cata_ordonne.dico + self.cata_ordonne_dico = cata_ordonne.entites splash._splash.configure(text = "Sauvegarde des informations sur le catalogue") f = open(self.fic_cata_p,'w+') p = cPickle.Pickler(f) @@ -252,7 +328,7 @@ class READERCATA: if time1 > time2: try: # le catalogue doit être recompilé avant d'être importé - splash._splash.configure(text="Compilation du catalogue\nCela peut prendre une trentaine de secondes ...") + splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...") py_compile.compile(cata) except: return 0 diff --git a/Editeur/splash.py b/Editeur/splash.py index c3e5339d..3002d375 100644 --- a/Editeur/splash.py +++ b/Editeur/splash.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module permet de créer, mettre à jour et détruire un écran Splash diff --git a/Editeur/statusbar.py b/Editeur/statusbar.py index 6c0687a1..604025a8 100644 --- a/Editeur/statusbar.py +++ b/Editeur/statusbar.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python diff --git a/Editeur/toolbar.py b/Editeur/toolbar.py index e99a56de..938d47fa 100644 --- a/Editeur/toolbar.py +++ b/Editeur/toolbar.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -137,7 +156,7 @@ class TOOLBAR: """ self.fen_infos.destroy() - def creer_boutons_extension(self,l_boutons,extension): + def creer_boutons_appli_composant(self,l_boutons,appli_composant): for bouton in l_boutons : if not bouton : # on veut afficher un bouton vide (=espace entre boutons) @@ -146,7 +165,7 @@ class TOOLBAR: relief = 'flat').pack(side='left') continue nom_fic,commande,texte,statut = bouton - commande=getattr(extension,commande) + commande=getattr(appli_composant,commande) b = Button(self.barreboutons, image = images.get_image(nom_fic), command = commande, diff --git a/Editeur/tooltip.py b/Editeur/tooltip.py index d43992c9..752a57b7 100644 --- a/Editeur/tooltip.py +++ b/Editeur/tooltip.py @@ -1,9 +1,50 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module propose la classe TOOLTIP pour mettre en oeuvre les bulles d'aide """ import Tkinter +import types + +def destruct(obj): + # assist in breaking circular references + if obj is not None: + assert type(obj) is types.InstanceType + for k in obj.__dict__.keys(): + obj.__dict__[k] = None + ##del obj.__dict__[k] + +def after(widget, ms, func, *args): + timer = apply(widget.after, (ms, func) + args) + command = widget._tclCommands[-1] + return (timer, command, widget) + +def after_cancel(t): + if t is not None: + t[2].after_cancel(t[0]) + try: + t[2].deletecommand(t[1]) + except Tkinter.TclError: + pass class TOOLTIP: def __init__(self,widget): @@ -76,3 +117,16 @@ class TOOLTIP: self.tooltip.wm_geometry("%+d%+d" % (x, y)) self.tooltip.wm_deiconify() +if __name__ == "__main__": + root=Tkinter.Tk() + + def aide(event): + tp=TOOLTIP(root) + tp.setText("texte d'aide") + tp._showTip() + + label = Tkinter.Label(root, text="coucou") + label.bind("", aide) + label.pack() + root.mainloop() + diff --git a/Editeur/treeitemincanvas.py b/Editeur/treeitemincanvas.py index 5ec26438..2a1c45ac 100644 --- a/Editeur/treeitemincanvas.py +++ b/Editeur/treeitemincanvas.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -25,7 +44,7 @@ class TREEITEMINCANVAS: self.parent=parent self.item=Objecttreeitem.make_objecttreeitem(self.appli,self.nom,self.object) - self.canvas=Pmw.ScrolledCanvas(self.parent,borderframe=1) + self.canvas=Pmw.ScrolledCanvas(self.parent,borderframe=1,canvas_background='gray95') self.canvas.pack(padx=10,pady=10,fill = 'both', expand = 1) if not sel: def sel(event=None): diff --git a/Editeur/treewidget.py b/Editeur/treewidget.py index a0d6554e..fe6e4d28 100644 --- a/Editeur/treewidget.py +++ b/Editeur/treewidget.py @@ -1,11 +1,23 @@ -#@ MODIF treewidget Editeur DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== -import os,sys,string,re,types +import os,sys,string,re,types,traceback from Tkinter import * @@ -13,8 +25,8 @@ import fontes import images # -__version__="$Name: V1_1p1 $" -__Id__="$Id: treewidget.py,v 1.1.1.1 2001/12/04 15:38:23 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: treewidget.py,v 1.6 2002/09/09 10:39:06 eficas Exp $" # Fonte_Standard = fontes.standard @@ -468,6 +480,7 @@ class Node : try: self.canvas.addtag_overlapping('move',bbox1[0],self.y +10,bbox1[2],bbox1[3]) except: + print "Erreur dans move :" print self print self.item print self.item.object @@ -493,6 +506,7 @@ class Node : try: child.trace_ligne() except: + print "Erreur dans trace_ligne :" print child print child.item.object @@ -521,21 +535,23 @@ class Node : def full_creation(self,name,pos=None): """ - Interface avec ACCAS : création de l'objet de nom name et - du noeud associé. Retourne le noeud fils ainsi créé + Interface avec ACCAS : création de l'objet de nom name et + du noeud associé. Retourne le noeud fils ainsi créé """ item = self.item.additem(name,pos) if item == None or item == 0: # impossible d'ajouter le noeud de nom : name return 0 nature = item.get_nature() - #if nature =="COMMANDE" or nature == "OPERATEUR" or nature == "PROCEDURE": if nature in ("COMMANDE","OPERATEUR","PROCEDURE","COMMENTAIRE", "PARAMETRE","COMMANDE_COMMENTARISEE","PARAMETRE_EVAL"): # on veut ajouter une commande ou un commentaire ou un paramètre # il ne faut pas rechercher un même objet déjà existant # à modifier : il faut tester l'attribut 'repetable' enfant = None + elif self.item.object.isMCList(): + # Dans ce cas on ne fait pas de remplacement. On ne cherche pas un objet de meme nom + enfant=None else : enfant = self.get_node_fils(item.get_nom()) if enfant : @@ -611,6 +627,9 @@ class Node : # on donne la position depuis l'extérieur # (appel de append_child par append_brother par exemple) index = pos + elif type(pos) == types.InstanceType: + # pos est un item. Il faut inserer name apres pos + index = self.item.get_index(pos) +1 else : if type(name) == types.InstanceType: index = self.item.get_index_child(name.nom) @@ -676,6 +695,7 @@ class Node : print 'Erreur dans la destruction de ',self.item.get_nom(),' dans delete' nbnew = pere.get_nb_children() pere.redraw(nbnew-nbold) + pere.select() def copynode(self,node,pos) : """ node est le noeud à copier à la position pos de self ( = parent de node) """ @@ -690,15 +710,16 @@ class Node : try : child.item.object.mc_liste = objet_copie.mc_liste except: - pass + traceback.print_exc() #-------------------------------------------------------------- # Méthodes de vérification du contexte et de validité du noeud #-------------------------------------------------------------- - def traite_mclist(self): + def traite_mclist_OLD(self): """ Dans le cas d'une MCList il faut vérifier qu'elle n'est pas vide ou réduite à un seul élément suite à une destruction """ # self représente une MCList + print "on passe par traite_mclist ",len(self.item) if len(self.item) == 0 : # la liste est vide : il faut la supprimer self.delete() @@ -709,6 +730,8 @@ class Node : noeud = self.children[0] if self.parent.delete_child(self): self.parent.append_node_child(noeud.item,pos=index,verif='non') + else: + print "destruction de self impossible !" #if self.parent.delete_child(self): # self.parent.copynode(self.children[0],index) #else : @@ -716,6 +739,26 @@ class Node : else : return + def traite_mclist(self): + """ Dans le cas d'une MCList il faut vérifier qu'elle n'est pas vide + ou réduite à un seul élément suite à une destruction + """ + # self représente une MCList + if len(self.item) == 0 : + # la liste est vide : il faut la supprimer + self.delete() + elif len(self.item) == 1: + # il ne reste plus qu'un élément dans la liste + # il faut supprimer la liste et créer directement l'objet + index = self.parent.children.index(self) + noeud = self.children[0] + noeud.parent = self.parent + self.parent.delete_node_child(self) + self.parent.item.replace_child(self.item,noeud.item) + self.parent.children.insert(index,noeud) + else : + return + def verif_all(self): self.verif_all_children() diff --git a/Editeur/uiinfo.py b/Editeur/uiinfo.py new file mode 100644 index 00000000..d2fa8ba2 --- /dev/null +++ b/Editeur/uiinfo.py @@ -0,0 +1,113 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== +""" + Ce module sert à construire les structures de données porteuses + des informations liées aux groupes de commandes +""" +import types + +class UIINFO: + """ + Pour le moment la classe UIINFO ne sait traiter que des infos + portant sur la definition des groupes de commandes + Les autres informations sont ignorées + """ + def __init__(self,parent,groupes=None,**args): + """ + Initialiseur de la classe UIINFO. + Initialise a partir du dictionnaire UIinfo passé à + un objet ENTITE les attributs de la classe + """ + # L'attribut parent stocke le lien vers l'objet ENTITE relié à UIINFO + self.parent=parent + self.groupes=groupes + if groupes == None: + # L'entite n'a pas de groupe associé. On lui associe le groupe "DEFAUT" + self.groupes=("DEFAUT",) + if type(self.groupes) != types.TupleType: + self.groupes=(self.groupes,) + +def traite_commande(commande,niveau): + """ + Cette fonction cree l'attribut UI de l'objet commande + à partir des informations contenues dans UIinfo + """ + uiinfo=commande.UIinfo or {} + UI=UIINFO(commande,**uiinfo) + commande.UI=UI + if "CACHE" in UI.groupes: + # La commande est cachee aux utilisateurs + #niveau.dict_groupes["CACHE"].append(commande.nom) + pass + else: + # On ajoute la commande dans tous les groupes specifies + for grp in UI.groupes: + if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[] + niveau.dict_groupes[grp].append(commande.nom) + +def traite_niveau(niveau): + if niveau.l_niveaux == (): + # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes + niveau.dict_groupes={} + for oper in niveau.entites: + traite_commande(oper,niveau) + # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes + # sans doublon + niveau.liste_groupes=niveau.dict_groupes.keys() + # On ordonne les listes alphabétiquement + niveau.liste_groupes.sort() + for v in niveau.dict_groupes.values():v.sort() + #print niveau.liste_groupes + #print niveau.dict_groupes + else: + for niv in niveau.l_niveaux: + traite_niveau(niv) + +def traite_UIinfo(cata): + """ + Cette fonction parcourt la liste des commandes d'un catalogue (cata) + construit les objets UIINFO à partir de l'attribut UIinfo de la commande + et construit la liste complète de tous les groupes présents + """ + #dict_groupes["CACHE"]=[] + #XXX Ne doit pas marcher avec les niveaux + if cata.JdC.l_niveaux == (): + # Il n'y a pas de niveaux + # On stocke la liste des groupes et leur contenu dans le JdC + # dans les attributs liste_groupes et dict_groupes + cata.JdC.dict_groupes={} + for commande in cata.JdC.commandes: + traite_commande(commande,cata.JdC) + # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes + # sans doublon + cata.JdC.liste_groupes=cata.JdC.dict_groupes.keys() + # On ordonne les listes alphabétiquement + cata.JdC.liste_groupes.sort() + for v in cata.JdC.dict_groupes.values():v.sort() + #print cata.JdC.liste_groupes + #print cata.JdC.dict_groupes + else: + # Le catalogue de commandes contient des définitions de niveau + for niv in cata.JdC.l_niveaux: + traite_niveau(niv) + + + + diff --git a/Editeur/utils.py b/Editeur/utils.py index 9f09ecd4..5fe39483 100644 --- a/Editeur/utils.py +++ b/Editeur/utils.py @@ -1,7 +1,28 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient des utilitaires divers """ -import os +import os,re +import glob +import traceback def substract_list(liste1,liste2): """ @@ -69,7 +90,7 @@ def save_in_file(file,text): except: return 0 -def extension(pathAndFile): +def extension_fichier(pathAndFile): """ Return ext if path/filename.ext is given """ return os.path.splitext(pathAndFile)[1][1:] @@ -77,3 +98,49 @@ def stripPath(pathAndFile): """ Return filename.ext if path/filename.ext is given """ return os.path.split(pathAndFile)[1] +def init_rep_cata_dev(fic_cata,rep_goal): + """ + Initialise le répertoire des catalogues développeurs (chemin d'accès donné + dans le fichier eficas.ini cad : + - le crée s'il n'existe pas encore + - copie dedans les 3 fichiers nécessaires : + * __init__.py (pour que ce répertoire puisse être interprété comme un package) + * entete.py (pour réaliser les import nécessaires à l'interprétation des catalogues) + * declaration_concepts.py (idem) + - crée le fichier cata_developpeur.py qui sera par la suite importé + """ + try : + if not os.path.isdir(rep_goal) : + os.mkdir(rep_goal) + texte_entete = get_entete_cata(fic_cata) + # rep_goal doit contenir les catalogues du développeur sous la forme *.capy + # il faut créer le catalogue développeur par concaténation de entete,declaration_concepts + # et de tous ces fichiers + cur_dir = os.getcwd() + os.chdir(rep_goal) + l_cata_dev = glob.glob('*.capy') + if os.path.isfile('cata_developpeur.py') : os.remove('cata_developpeur.py') + if len(l_cata_dev) : + # des catalogues développeurs sont effectivement présents : on crée cata_dev.py dans rep_goal + str = '' + str = str + texte_entete+'\n' + for file in l_cata_dev : + str = str + open(file,'r').read() +'\n' + open('cata_developpeur.py','w+').write(str) + os.chdir(cur_dir) + except: + traceback.print_exc() + print "Impossible de transférer les fichiers requis dans :",rep_goal + +def get_entete_cata(fic_cata): + """ Retrouve l'entete du catalogue """ + l_lignes = open(fic_cata,'r').readlines() + txt = '' + flag = 0 + for ligne in l_lignes : + if re.match("# debut entete",ligne) : flag = 1 + if re.match("# fin entete",ligne) : break + if not flag : continue + txt = txt + ligne + return txt + diff --git a/Editeur/widgets.py b/Editeur/widgets.py index 5b5d4ea2..2eefd4b2 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -1,9 +1,21 @@ -#@ MODIF widgets Editeur DATE 05/09/2001 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== # ---------------------------------------------------------- # Cette classe sert à définir les widgets utilisés par @@ -98,7 +110,8 @@ class Fenetre : """ Permet de sauvegarder le texte dans un fichier dont on a demandé le nom à l'utilisateur """ file = asksaveasfilename(defaultextension = '.comm', - initialdir = self.appli.CONFIGURATION.rep_user, + #initialdir = self.appli.CONFIGURATION.rep_user, + initialdir = self.appli.CONFIGURATION.initialdir, title="Sauvegarde du "+self.titre) if file != '': if not save_in_file(file,self.texte) : @@ -554,7 +567,8 @@ class ListeChoix : elif type(objet) in (types.StringType,types.IntType): mot = objet elif type(objet) == types.FloatType : - mot = repr_float(objet) + #mot = repr_float(objet) + mot = str(objet) else: mot=`objet` label = Label(self.MCbox, @@ -806,3 +820,100 @@ class BARRE_K2000(Toplevel): def quit(self): self.quit = 1 + +class ListeChoixParGroupes(ListeChoix) : + """ + Cette classe est utilisée pour afficher une liste de commandes classées par + groupes. L'utilisateur peut réaliser des actions de selection + qui déclenchent des actions spécifiées par les bindings contenus dans liste_commandes + """ + def __init__(self,parent,page,liste_groupes,dict_groupes,liste_commandes=[],liste_marques =[], + active ='oui',filtre='non',titre=''): + self.parent = parent + self.page = page + self.liste_groupes = liste_groupes + self.dict_groupes = dict_groupes + self.dico_labels={} + self.selection = None + self.liste_commandes = liste_commandes + self.liste_marques = liste_marques + self.arg_selected='' + self.active = active + self.titre = titre + self.filtre = filtre + self.init() + + def affiche_liste(self): + """ Affiche la liste dans la fenêtre""" + i=0 + self.MCbox.config(state=NORMAL) + self.MCbox.delete(1.0,END) + for grp in self.liste_groupes: + # On itère sur les groupes + if grp == "CACHE":continue + liste_commandes=self.dict_groupes[grp] + text="GROUPE<<<<<<<< "+grp+" " + text=text+">"*max(0,30-len(text)) + label = Label(self.MCbox, + text = text, + fg = 'black',bg = 'gray95',justify = 'left') + # On stocke la relation entre le nom de la commande et le label + self.dico_labels[grp]=label + self.MCbox.window_create(END, + window=label, + stretch = 1) + self.MCbox.insert(END,'\n') + for cmd in liste_commandes: + label = Label(self.MCbox, + text = cmd, + fg = 'black',bg = 'gray95',justify = 'left') + # On stocke la relation entre le nom de la commande et le label + self.dico_labels[cmd]=label + self.MCbox.window_create(END, + window=label, + stretch = 1) + self.MCbox.insert(END,'\n') + if self.active == 'oui': + label.bind(self.liste_commandes[0][0], + lambda e,s=self,c=self.liste_commandes[0][1],x=cmd,l=label : s.selectitem(x,l,c)) + label.bind(self.liste_commandes[1][0], + lambda e,s=self,c=self.liste_commandes[1][1],x=cmd,l=label : s.deselectitem(l,x,c)) + label.bind(self.liste_commandes[2][0], + lambda e,s=self,c=self.liste_commandes[2][1],x=cmd,l=label : s.chooseitem(x,l,c)) + # On marque les items specifies dans liste_marques + #if i in self.liste_marques : self.markitem(label) + i=i+1 + self.MCbox.config(state=DISABLED) + self.selection = None + + def entry_changed(self,event=None): + """ + Cette méthode est invoquée chaque fois que l'utilisateur modifie le contenu + de l'entry et frappe + """ + if self.arg_selected != '' : self.deselectitem(self.dico_labels[self.arg_selected]) + filtre = self.entry.get()+"*" + FILTRE = string.upper(filtre) + # + # On cherche d'abord dans les noms de groupe + # puis dans les noms de commande groupe par groupe + # + for grp in self.liste_groupes: + if fnmatch.fnmatch(grp,filtre) or fnmatch.fnmatch(grp,FILTRE) : + index = self.MCbox.index(self.dico_labels[grp]) + self.MCbox.see(index) + # On ne selectionne pas le groupe + #self.arg_selected = grp + # On a trouve un groupe on arrete la recherche + return + + for grp in self.liste_groupes: + for cmd in self.dict_groupes[grp] : + if fnmatch.fnmatch(cmd,filtre) or fnmatch.fnmatch(cmd,FILTRE) : + self.highlightitem(self.dico_labels[cmd]) + index = self.MCbox.index(self.dico_labels[cmd]) + self.MCbox.see(index) + self.arg_selected = cmd + # On a trouve une commande on arrete la recherche + return + diff --git a/Exemples/README b/Exemples/README index 01553ea1..62a3bace 100644 --- a/Exemples/README +++ b/Exemples/README @@ -2,3 +2,5 @@ Ce r dans des sous-répertoires de nom exNNN où NNN est le numéro de l'exemple +ex18 : + Cet exemple test met en oeuvre le convertisseur asterV5 diff --git a/Exemples/ex11/main.py b/Exemples/ex11/main.py index 08352a34..942472b5 100644 --- a/Exemples/ex11/main.py +++ b/Exemples/ex11/main.py @@ -28,6 +28,16 @@ class concept: """ Retourne 1 si sd est du bon type par rapport à la classe """ return 0 +class cata: + def __init__(self): + CONTEXT.unset_current_cata() + CONTEXT.set_current_cata(self) + + def enregistre(self,commande): + return + +c=cata() + OP1 = OPER(nom='OP1',op=1,sd_prod=concept,reentrant='f', a=SIMP(typ='I'), c=SIMP(typ='I',position='global'), diff --git a/Exemples/ex18/main.py b/Exemples/ex18/main.py index 3e8f1fa0..43097fee 100644 --- a/Exemples/ex18/main.py +++ b/Exemples/ex18/main.py @@ -5,7 +5,8 @@ sys.path[:0]=['../..','../../..'] import convert p=convert.plugins['asterv5']() -p.readfile('totalmod.comm') +p.readfile('torsion.comm') +#p.readfile('totalmod.comm') if not p.cr.estvide(): print p.cr sys.exit(0) diff --git a/Exemples/ex18/torsion.comm b/Exemples/ex18/torsion.comm new file mode 100755 index 00000000..83f56092 --- /dev/null +++ b/Exemples/ex18/torsion.comm @@ -0,0 +1,340 @@ + DEBUT(); + + + INCLUDE(UNITE: 80); + +TPS = 1. ; + + + +SY = 90. ; + + + +A = 1. ; +H = 0.01 ; +N = 50 ; +T = 0.01 ; +TD = DEFI_VALEUR(R8: EVAL(T*180./PI)) ; +CT = DEFI_VALEUR(R8: EVAL(COS(T))) ; +ST = DEFI_VALEUR(R8: EVAL(SIN(T))) ; +MST= DEFI_VALEUR(R8: EVAL(-ST)); +RAT= DEFI_VALEUR(R8: EVAL(H/A)); + + +K_REF = DEFI_VALEUR( R8: EVAL(0.9845615*Q1) ); +EPS_Y = DEFI_VALEUR( R8: EVAL( (1./K_REF)**5. )); +YOUNG = DEFI_VALEUR( R8: EVAL(SY/EPS_Y) ); + +!FORMULE( REEL: ( + RP(REEL:EPSI) = K_REF * SY * EPSI**0.2 + ) ); + +ECH_EPSI = DEFI_LIST_REEL ( + DEBUT: EPS_Y + INTERVALLE: ( + JUSQU_A: 3. + NOMBRE : 300 + ) + ) ; + +TRAC = CALC_FONC_INTERP ( + FONCTION: RP + LIST_PARA : ECH_EPSI + PROL_GAUCHE: 'LINEAIRE' + PROL_DROIT : 'LINEAIRE' + ) ; + + + PRE_GIBI(); + MA = LIRE_MAILLAGE(); + +&MA = DEFI_GROUP + ( + MAILLAGE: MA + CREA_GROUP_NO: + ( + TOUT_GROUP_MA: 'OUI' + ) + ) ; + + + CUIVRE = DEFI_MATERIAU + ( + ELAS : + ( + E : YOUNG + NU: 0.3 + ) + TRACTION : ( + SIGM: TRAC + ) + NON_LOCAL: ( + LONG_CARA: LC + ) + ) ; + + CHMAT = AFFE_MATERIAU + ( + MAILLAGE: MA + AFFE : + ( + GROUP_MA: TRANCHE + MATER : CUIVRE + ) + ) ; + + + MO_MECA = AFFE_MODELE + ( + MAILLAGE: MA + AFFE : + ( + GROUP_MA : TRANCHE + PHENOMENE : 'MECANIQUE' + MODELISATION : '3D_SI' + ) + ) ; + + MO_DELO = AFFE_MODELE ( + MAILLAGE: MA + AFFE: + ( + GROUP_MA: TRANCHE + PHENOMENE: 'NON_LOCAL' + MODELISATION: '3D' + ) + ) ; + + +!FORMULE ( REEL : ( UX_IMP(REEL: INST, REEL:X, REEL:Y) = + -INST*RAT*Y + )); +!FORMULE ( REEL : ( UY_IMP(REEL: INST, REEL:X, REEL:Y) = + INST*RAT*X + )); +!FORMULE ( REEL : ( UZ_IMP(REEL:X, REEL:Y) = 0. )); + + + ANCRAGE = AFFE_CHAR_MECA ( + MODELE : MO_MECA + FACE_IMPO: + ( + GROUP_MA: BAS + DX: 0. + DY: 0. + DZ: 0. + ) + ) ; + + TORSION = AFFE_CHAR_MECA_F ( + MODELE : MO_MECA + FACE_IMPO: + ( + GROUP_MA: HAUT + DX : UX_IMP + DY : UY_IMP + DZ : UZ_IMP + ) + ) ; + + + SYMETRIE = AFFE_CHAR_MECA ( + MODELE: MO_MECA + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DX' 'DY' ) + DDL_2 : ('DX' ) + COEF_MULT_1 : (CT MST) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DX' 'DY' ) + DDL_2 : ('DY' ) + COEF_MULT_1 : (ST CT) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + LIAISON_GROUP: ( + GROUP_MA_1 : SYM_CY_0 + GROUP_MA_2 : SYM_CY_1 + SANS_GROUP_NO: (HAUT, BAS) + DDL_1 : ('DZ') + DDL_2 : ('DZ') + COEF_MULT_1 : (1.) + COEF_MULT_2 : (-1.) + COEF_IMPO : 0. + CENTRE : (0. 0. 0.) + ANGL_NAUT : (TD 0. 0.) + SOMMET : 'OUI' + ) + ) ; + + + INSTANTS = DEFI_LIST_REEL + ( + DEBUT: 0. + INTERVALLE: + (JUSQU_A: TPS NOMBRE: 50) + ) ; + + + + EVOL = STAT_NON_LINE + ( + MODELE: MO_MECA + CHAM_MATER: CHMAT + EXCIT : + (CHARGE: TORSION) + (CHARGE: ANCRAGE) + (CHARGE: SYMETRIE) + INCREMENT: + ( + LIST_INST: INSTANTS + SUBD_PAS : 5 + SUBD_PAS_MINI: 0.0001 + ) + COMP_INCR: + ( + RELATION: 'PLAS_GRAD_TRAC' + DEFORMATION: 'PETIT' + ) + NEWTON: + ( + MATRICE:'ELASTIQUE' + ) + CONVERGENCE: + ( + RESI_GLOB_RELA: 1.E-4 + ITER_GLOB_MAXI: 500 + ITER_INTE_MAXI: 250 + RESI_INTE_RELA: 1.E-9 + ) + ARCHIVAGE: ( + ARCH_ETAT_INIT: 'OUI' + LIST_INST : INSTANTS + ) + + MODELE_NON_LOCAL: MO_DELO + LAGR_NON_LOCAL: ( + RESI_PRIM_ABSO: 1.E-9 + RESI_DUAL_ABSO: 1.E-4 + RHO: 1000. + ITER_PRIM_MAXI: 100 + ITER_DUAL_MAXI: 10 + ) + ) ; + + + +&EVOL = CALC_ELEM ( + MODELE: MO_MECA + CHAM_MATER: CHMAT + RESULTAT : EVOL + OPTION: ('SIEF_ELNO_ELGA' 'VARI_ELNO_ELGA') + ) ; + +&EVOL = CALC_NO ( + RESULTAT: EVOL + OPTION: ('FORC_NODA' + 'SIEF_NOEU_ELGA' 'VARI_NOEU_ELGA') + ) ; + + +ECHAN = INTE_MAIL_3D ( + MAILLAGE : MA + DEFI_SEGMENT: ( + GROUP_NO_ORIG: O1 + GROUP_NO_EXTR: A1 + ) + ) ; + + PLAS_CUM = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'P' + CHEMIN : ECHAN + RESULTAT : EVOL + NOM_CHAM : 'VARI_NOEU_ELGA' + NOM_CMP : 'V1' + INST : TPS + OPERATION: 'EXTRACTION' + ) + ) ; + + + SIGMA = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'SIYZ' + CHEMIN : ECHAN + RESULTAT : EVOL + NOM_CHAM : 'SIEF_NOEU_ELGA' + NOM_CMP : 'SIYZ' + INST : TPS + OPERATION: 'EXTRACTION' + ) + ) ; + + + + MOM_A = POST_RELEVE_T ( + ACTION: ( + INTITULE : 'MOMENT' + GROUP_NO : HAUT + RESULTAT : EVOL + NOM_CHAM : 'FORC_NODA' + RESULTANTE: ('DX' 'DY' 'DZ') + MOMENT : ('DRX' 'DRY' 'DRZ') + POINT : (0. 0. H) + TOUT_ORDRE: 'OUI' + OPERATION : 'EXTRACTION' + ) + ) ; + + MOM_KA_A = RECU_FONCTION ( + TABLE : MOM_A + PARA_X: 'INST' + PARA_Y: 'MOMENT_Z' + ) ; + +!FORMULE ( REEL:( MA3_KA(REEL: INST) = MOM_KA_A(INST)*360/TD/A**3/SY)); + + + + DEFUFI( + IMPRESSION: ( + NOM: 'POST_PY' + UNITE: 81 + ) + ) ; + + + + IMPR_COURBE( + FORMAT: 'AGRAF' + FICHIER: 'POST_PY' + COURBE: ( + FONCTION : MA3_KA + LIST_PARA: INSTANTS + ) + ) ; + + + FIN(); + + +IMPR_TABLE(TABLE:SIGMA); +IMPR_TABLE(TABLE:PLAS_CUM); + + FIN(); \ No newline at end of file diff --git a/Extensions/__init__.py b/Extensions/__init__.py index e69de29b..427090e6 100644 --- a/Extensions/__init__.py +++ b/Extensions/__init__.py @@ -0,0 +1,19 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== diff --git a/Extensions/commande_comm.py b/Extensions/commande_comm.py index 68bd102d..28b91a3b 100644 --- a/Extensions/commande_comm.py +++ b/Extensions/commande_comm.py @@ -1,9 +1,21 @@ -#@ MODIF commande_comm Accas DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import os,traceback,string @@ -30,6 +42,7 @@ class COMMANDE_COMM: self.definition=self self.nom = '' self.niveau = self.parent.niveau + self.actif=1 #self.appel = N_utils.callee_where(niveau=2) if reg=='oui' : self.register() @@ -216,3 +229,19 @@ class COMMANDE_COMM: """ return [] + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=self + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + --> sans objet pour les commandes commentarisées + """ + pass + diff --git a/Extensions/commentaire.py b/Extensions/commentaire.py index 733a2016..993fda43 100644 --- a/Extensions/commentaire.py +++ b/Extensions/commentaire.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe COMMENTAIRE qui sert dans EFICAS pour gérer les commentaires dans un JDC @@ -145,5 +164,18 @@ class COMMENTAIRE : """ return [] + def get_sdprods(self,nom_sd): + """ + Retourne les concepts produits par la commande + """ + return None + def verif_existence_sd(self): + pass + + def get_fr(self): + """ + Retourne le commentaire lui meme tronque a la 1ere ligne + """ + return self.valeur.split('\n',1)[0] diff --git a/Extensions/etape_niveau.py b/Extensions/etape_niveau.py index 31c7c20a..675fb6b8 100644 --- a/Extensions/etape_niveau.py +++ b/Extensions/etape_niveau.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe ETAPE_NIVEAU qui sert à concrétiser les niveaux au sein d'un JDC @@ -5,6 +24,7 @@ import traceback from Noyau import N_OBJECT +import prefs class ETAPE_NIVEAU(N_OBJECT.OBJECT): @@ -109,3 +129,12 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT): self.jdc.suppentite(etape) + def get_fr(self): + """ + Retourne le texte d'aide dans la langue choisie + """ + try : + return getattr(self.definition,prefs.lang) + except: + return '' + diff --git a/Extensions/interpreteur_formule.py b/Extensions/interpreteur_formule.py index 7e2dbdf9..4d1b93d4 100644 --- a/Extensions/interpreteur_formule.py +++ b/Extensions/interpreteur_formule.py @@ -1,9 +1,21 @@ -#@ MODIF interpreteur_formule Accas DATE 02/07/2001 AUTEUR D6BHHJP J.P.LEFEBVRE # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import string,re,sys,exceptions,types @@ -145,6 +157,8 @@ class Interpreteur_Formule: texte = [texte,] for text_arg in texte: text_arg = string.replace(text_arg,'\n','') + # Enleve les espaces + text_arg = string.replace(text_arg,' ','') try: self.l_operateurs.append(self.split_operateurs(text_arg)) except InterpreteurException,e: diff --git a/Extensions/jdc.py b/Extensions/jdc.py index 8b7cdf29..313ec043 100644 --- a/Extensions/jdc.py +++ b/Extensions/jdc.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe mixin qui porte les méthodes pour traiter les niveaux au sein d'un JDC diff --git a/Extensions/mcnuplet.py b/Extensions/mcnuplet.py index da997b6d..310c981d 100644 --- a/Extensions/mcnuplet.py +++ b/Extensions/mcnuplet.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -32,6 +51,7 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO): self.niveau = None self.etape = None self.state = 'undetermined' + self.actif=1 self.mc_liste=self.build_mc() def build_mc(self): @@ -57,6 +77,8 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO): #XXX et global_jdc ?? mc_liste.append(objet) k=k+1 + # Un nuplet n'a pas de mots inconnus + self.reste_val={} return mc_liste def isvalid(self,cr='non'): @@ -168,5 +190,14 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO): def isoblig(self): return self.definition.statut=='o' + def get_fr(self): + """ + Retourne le texte d'aide dans la langue choisie + """ + try : + return getattr(self.definition,prefs.lang) + except: + return '' + diff --git a/Extensions/niveau.py b/Extensions/niveau.py index b5df8fdf..8b6f0822 100644 --- a/Extensions/niveau.py +++ b/Extensions/niveau.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe NIVEAU qui sert à définir des groupes de commandes dans le catalogue diff --git a/Extensions/nuplet.py b/Extensions/nuplet.py index 63da3689..f5208fb3 100644 --- a/Extensions/nuplet.py +++ b/Extensions/nuplet.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe de définition pour les nuplets NUPL """ @@ -6,9 +25,10 @@ import types # Modules Eficas from Noyau import N_ENTITE,N_MCLIST,N_CR +from Ihm import I_ENTITE import mcnuplet -class NUPL(N_ENTITE.ENTITE): +class NUPL(N_ENTITE.ENTITE,I_ENTITE.ENTITE): """ """ class_instance = mcnuplet.MCNUPLET @@ -19,6 +39,7 @@ class NUPL(N_ENTITE.ENTITE): def __init__(self,fr="",ang="",docu="",statut='f',defaut=None,min=0,max=1, elements=None): N_ENTITE.ENTITE.__init__(self) + I_ENTITE.ENTITE.__init__(self) self.fr=fr self.ang=ang self.docu=docu diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 94f028f0..20455bfe 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe PARAMETRE qui sert à définir des objets paramètres qui sont compréhensibles et donc affichables @@ -33,6 +52,7 @@ class PARAMETRE : self.definition=self self.jdc = self.parent = CONTEXT.get_current_step() self.niveau=self.parent.niveau + self.actif=1 self.register() def interprete_valeur(self,val): @@ -249,7 +269,8 @@ class PARAMETRE : """ return [] - + def verif_existence_sd(self): + pass diff --git a/Extensions/parametre_eval.py b/Extensions/parametre_eval.py index 73bf9bd6..b45546d9 100644 --- a/Extensions/parametre_eval.py +++ b/Extensions/parametre_eval.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe PARAMETRE_EVAL qui sert à définir des objets paramètres qui sont compréhensibles et donc affichables @@ -36,6 +55,7 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) : self.jdc = self.parent = CONTEXT.get_current_step() self.definition=self self.niveau = self.parent.niveau + self.actif=1 # Ceci est-il indispensable ??? #self.appel = N_utils.callee_where(niveau=2) self.register() @@ -60,6 +80,8 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) : """ if not val : return None d={} + val = string.strip(val) + if val[-1] == ';' : val = val[0:-1] d['EVAL'] = Accas.EVAL try: valeur = eval(val,{},d) diff --git a/Extensions/pluginloader.py b/Extensions/pluginloader.py index 659027d2..378500c0 100644 --- a/Extensions/pluginloader.py +++ b/Extensions/pluginloader.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le chargeur dynamique de plugins (emprunté à HappyDoc) """ diff --git a/Ihm/I_ASSD.py b/Ihm/I_ASSD.py new file mode 100644 index 00000000..004d0b86 --- /dev/null +++ b/Ihm/I_ASSD.py @@ -0,0 +1,23 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + +class ASSD: + def __repr__(self): + return "concept %s de type %s" % (self.get_name(),self.__class__.__name__) diff --git a/Ihm/I_A_CLASSER.py b/Ihm/I_A_CLASSER.py index 16853f5f..e1f19ca5 100644 --- a/Ihm/I_A_CLASSER.py +++ b/Ihm/I_A_CLASSER.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ diff --git a/Ihm/I_ENTITE.py b/Ihm/I_ENTITE.py index 3a070e1c..11add723 100644 --- a/Ihm/I_ENTITE.py +++ b/Ihm/I_ENTITE.py @@ -1,4 +1,37 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== +_no=0 + +def number_entite(entite): + """ + Fonction qui attribue un numero unique a tous les objets du catalogue + Ce numero permet de conserver l'ordre des objets + """ + global _no + _no=_no+1 + entite._no=_no + class ENTITE: + def __init__(self): + number_entite(self) + def get_docu(self): if hasattr(self,'docu') : if self.docu != "" : return self.docu diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index 8937c110..865f2378 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -1,29 +1,43 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python import string,types from copy import copy +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import traceback +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + # Modules EFICAS import I_MCCOMPO class ETAPE(I_MCCOMPO.MCCOMPO): - def __init__(self): - self.niveau=self.jdc - def ident(self): return self.nom - def get_fr(self): - """ - Retourne l'attribut fr de self.definition - """ - try: - return self.definition.fr - except: - return '' - def get_sdname(self): if CONTEXT.debug : print "SDNAME ",self.reuse,self.sd,self.sd.get_name() if self.reuse != None: @@ -63,7 +77,8 @@ class ETAPE(I_MCCOMPO.MCCOMPO): """ if self.isvalid() : if type(self.definition.op_init) == types.FunctionType : - apply(self.definition.op_init,(self,self.master.g_context)) + # XXX Normalement en mode editeur g_context ne peut pas etre utilisé + apply(self.definition.op_init,(self,self.parent.g_context)) self.state = 'modified' def nomme_sd(self,nom) : @@ -79,59 +94,87 @@ class ETAPE(I_MCCOMPO.MCCOMPO): if len(nom) > 8 and self.jdc.definition.code == 'ASTER': return 0,"Nom de concept trop long (maxi 8 caractères)" self.init_modif() - # Cas particulier des opérateurs réentrants + # + # On verifie d'abord si les mots cles sont valides + # if not self.isvalid(sd='non') : return 0,"Nommage du concept refusé : l'opérateur n'est pas valide" + # + # Cas particulier des opérateurs obligatoirement réentrants + # if self.definition.reentrant == 'o': - self.sd = self.reuse = self.jdc.get_sdprod(nom) + self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self) if self.sd != None : + self.sdnom=self.sd.nom return 1,"Concept existant" else: return 0,"Opérateur réentrant mais concept non existant" + # + # Cas particulier des opérateurs facultativement réentrants + # + old_reuse=None if self.definition.reentrant == 'f' : sd = self.jdc.get_sd_avant_etape(nom,self) if sd != None : - self.sd = self.reuse = sd - return 1,"Opérateur facultativement réentrant et concept existant trouvé" + # FR : il faut tester que la sd trouvée est du bon type !!!!!!!!!!!!!!!!! + if isinstance(sd,self.get_type_produit()) : + self.sd = self.reuse = sd + self.sdnom = sd.nom + return 1,"Opérateur facultativement réentrant et concept existant trouvé" + else: + return 0,"Concept déjà existant et de mauvais type" else : - # il faut éventuellement enlever le lien vers une SD existante car si on passe ici + # il faut enlever le lien vers une SD existante car si on passe ici # cela signifie que l'opérateur n'est pas utilisé en mode réentrant. - # Si on ne fait pas cela, le nom de l'opérateur réutilisé est aussi modifié - # et on ne peut plus modifier la SD de l'opérateur + # Si on ne fait pas cela, on risque de modifier une SD produite par un autre opérateur if self.reuse : - self.sd = self.reuse = None - # l'opérateur n'est pas réentrant ou facultativement reentrant mais pas dans ce cas + old_reuse=self.reuse + self.sd = self.reuse = self.sdnom = None + # + # On est dans le cas ou l'opérateur n'est pas réentrant ou est facultativement reentrant + # mais est utilisé en mode non réentrant + # if self.sd == None : if self.parent.get_sd_autour_etape(nom,self): - # On force self.valid a 0 car l appel a isvalid precedent l a mis a 1 - # mais ceci indique seulement une validité partielle - # isvalid ne devrait peut etre pas mettre l attribut valid à 1 si sd == 'non' - self.valid=0 - return 0,"Nommage du concept refuse : un concept de meme nom existe deja" - # Il n'existe pas de sd de nom sdnom. On peut donc créer le concept retourné. - # Il est créé sans nom mais enregistré dans la liste des concepts existants - self.get_sd_prod() - self.sd.nom = nom - return 1,"Nommage du concept effectué" - else : - old_nom=self.sd.nom - if string.find(old_nom,'sansnom') : - # Dans le cas où old_nom == sansnom, isvalid retourne 0 alors que ... - # par contre si le concept existe et qu'il s'appelle sansnom c'est que l'étape est valide - # on peut donc le nommer sans test préalable - self.sd.nom=nom - return 1,"Nommage du concept effectué" - if self.isvalid() : - # Normalement l appel de isvalid a mis a jour le concept produit (son type) - # Il suffit de spécifier l attribut nom de sd pour le nommer si le nom n est pas - # deja attribué - if self.parent.get_sd_autour_etape(nom,self): + # Un concept de ce nom existe dans le voisinage de l'etape courante + # On retablit l'ancien concept reentrant s'il existait + if old_reuse: + self.sd=self.reuse=old_reuse + self.sdnom=old_reuse.nom return 0,"Nommage du concept refuse : un concept de meme nom existe deja" else: - self.sd.nom=nom + # Il n'existe pas de concept de ce nom dans le voisinage de l'etape courante + # On peut donc créer le concept retourné. + # Il est créé sans nom mais enregistré dans la liste des concepts existants + self.get_sd_prod() + # Il suffit de changer son attribut nom pour le nommer + self.sd.nom = nom + self.sdnom=nom return 1,"Nommage du concept effectué" - else: - # Normalement on ne devrait pas passer ici - return 0,'Normalement on ne devrait pas passer ici' + else : + old_nom=self.sd.nom + if string.find(old_nom,'sansnom') : + # Dans le cas où old_nom == sansnom, isvalid retourne 0 alors que ... + # par contre si le concept existe et qu'il s'appelle sansnom c'est que l'étape est valide + # on peut donc le nommer sans test préalable + if self.parent.get_sd_autour_etape(nom,self): + return 0,"Nommage du concept refuse : un concept de meme nom existe deja" + else: + self.sd.nom=nom + self.sdnom=nom + return 1,"Nommage du concept effectué" + if self.isvalid() : + # Normalement l appel de isvalid a mis a jour le concept produit (son type) + # Il suffit de spécifier l attribut nom de sd pour le nommer si le nom n est pas + # deja attribué + if self.parent.get_sd_autour_etape(nom,self): + return 0,"Nommage du concept refuse : un concept de meme nom existe deja" + else: + self.sd.nom=nom + self.sdnom=nom + return 1,"Nommage du concept effectué" + else: + # Normalement on ne devrait pas passer ici + return 0,'Normalement on ne devrait pas passer ici' def get_sdprods(self,nom_sd): """ @@ -206,6 +249,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO): Initialise les attributs jdc, id, niveau et réalise les enregistrements nécessaires Pour EFICAS, on tient compte des niveaux + Surcharge la methode make_register du package Noyau """ if self.parent : self.jdc = self.parent.get_jdc_root() @@ -234,9 +278,11 @@ class ETAPE(I_MCCOMPO.MCCOMPO): etape.state = 'modified' etape.reuse = None etape.sdnom = None + etape.etape=etape etape.mc_liste=[] for objet in self.mc_liste: new_obj = objet.copy() + new_obj.reparent(etape) etape.mc_liste.append(new_obj) return etape @@ -270,3 +316,114 @@ class ETAPE(I_MCCOMPO.MCCOMPO): l.extend(child.get_sd_utilisees()) return l + def get_genealogie(self): + """ + Retourne la liste des noms des ascendants de l'objet self + en s'arretant à la première ETAPE rencontrée + """ + return [self.nom] + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=self + for mocle in self.mc_liste: + mocle.reparent(self) + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.mc_liste : + motcle.verif_existence_sd() + + def Build_sd(self,nom): + """ + Construit le concept produit de l'opérateur. Deux cas + peuvent se présenter : + + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création + et le nommage du concept. + + - le parent est défini. Dans ce cas, l'étape demande au parent la création et + le nommage du concept. + + """ + if not self.isactif():return + # FR : attention cette méthode ne devrait pas se trouver là car elle surcharge celle qui + # se trouve dans N_ETAPE.py et elle est partie intégrante du noyau, mais, suite à l'absence de + # test de validité de l'opérateur avant d'essayer de déterminer la sd produite, on n'arrivait + # pas à relire avec EFICAS un fichier contenant une étape encore incomplète du style : + # sansnom = AFFE_CHAR_CINE(MODELE=None) + # Suite à la stabilisation du noyau d'Aster, je n'ai pas eu d'autre solution que de surcharger + # cette méthode ici en rajoutant le test manquant ... + # CCAR : cette modification ne corrige le probleme qu'en partie. Il faudrait probablement + # supprimer les erreurs fatales (exception ) et retourner systematiquement un objet produit + # meme en cas d'erreur et reporter l'emission du message d'erreur a la phase de validation + # + if not self.isvalid(sd='non') : return + self.sdnom=nom + try: + if self.parent: + sd= self.parent.create_sdprod(self,nom) + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + sd=self.get_sd_prod() + # On n'utilise pas self.definition.op_init car self.parent + # n'existe pas + if sd != None and self.reuse == None: + # On ne nomme le concept que dans le cas de non reutilisation + # d un concept + sd.nom=nom + if self.jdc and self.jdc.par_lot == "NON" : + self.Execute() + return sd + except AsException,e: + # Une erreur s'est produite lors de la construction du concept + # Comme on est dans EFICAS, on essaie de poursuivre quand meme + # Si on poursuit, on a le choix entre deux possibilités : + # 1. on annule la sd associée à self + # 2. on la conserve mais il faut la retourner + # En plus il faut rendre coherents sdnom et sd.nom + self.sd=None + self.sdnom=None + self.valid=0 + return self.sd + #raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + # 'fichier : ',self.appel[1],e) + except EOFError: + # XXX Normalement le contexte courant doit etre le parent. + # Il n'y a pas de raison de remettre le contexte au parent + #self.reset_current_step() + raise + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l)) + + + + + + + + + + + + + + + + + + + + + diff --git a/Ihm/I_EXCLUS.py b/Ihm/I_EXCLUS.py index e53ead8e..844d61f0 100644 --- a/Ihm/I_EXCLUS.py +++ b/Ihm/I_EXCLUS.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ @@ -13,7 +32,8 @@ class EXCLUS(I_REGLE.REGLE): if not regle_active : return liste_a_purger for mc in self.mcs: - if mc in liste_a_purger: + # Il ne faut pas purger un mot cle present. Sa cardinalite est verifiee par ailleurs + if mc in liste_a_purger and mc not in liste_mc_presents: liste_a_purger.remove(mc) return liste_a_purger diff --git a/Ihm/I_FONCTION.py b/Ihm/I_FONCTION.py new file mode 100644 index 00000000..b708dee6 --- /dev/null +++ b/Ihm/I_FONCTION.py @@ -0,0 +1,41 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== +from I_ASSD import ASSD + +class FONCTION(ASSD): + def __init__(self,etape=None,sd=None,reg='oui'): + #ASSD.__init__(self,etape=etape,sd=sd,reg=reg) + if reg=='oui': + self.jdc.register_fonction(self) + + def get_formule(self): + """ + Retourne une formule décrivant self sous la forme d'un tuple : + (nom,type_retourne,arguments,corps) + """ + if hasattr(self.etape,'get_formule'): + # on est dans le cas d'une formule Aster + return self.etape.get_formule() + else: + # on est dans le cas d'une fonction + return (self.nom,'REEL','(REEL:x)','''bidon''') + +class fonction(FONCTION) : pass + diff --git a/Ihm/I_FORM_ETAPE.py b/Ihm/I_FORM_ETAPE.py index 51100165..80689be4 100644 --- a/Ihm/I_FORM_ETAPE.py +++ b/Ihm/I_FORM_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ import string,traceback @@ -56,6 +75,15 @@ class FORM_ETAPE(MACRO_ETAPE): else: return '' + def get_formule(self): + """ + Retourne un tuple décrivant la formule : + (nom,type_retourne,arguments,corps) + """ + t,a,c = self.analyse_formule() + n = self.get_nom() + return (n,t,a,c) + def verif_arguments(self,arguments = None): """ Vérifie si les arguments passés en argument (si aucun prend les arguments courants) diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 2c26ab8e..125fb617 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -6,9 +25,8 @@ import string,linecache # Modules Eficas import I_OBJECT -from Noyau.N_ASSD import assd +from Noyau.N_ASSD import ASSD from Noyau.N_ETAPE import ETAPE -from Noyau.N_CO import CO from Noyau.N_Exception import AsException from Extensions import commentaire,parametre,parametre_eval @@ -21,6 +39,7 @@ class JDC(I_OBJECT.OBJECT): self.niveau=self self.params=[] self.fonctions=[] + self._etape_context=None def get_cmd(self,nomcmd): """ @@ -38,20 +57,32 @@ class JDC(I_OBJECT.OBJECT): l=[] for k,v in d.items(): if type(v) != types.InstanceType : continue - if assd in types_permis or CO in types_permis : - l.append(k) - continue - for type_ok in types_permis: - if type_ok in ('R','I','C','TXM') and v in self.params : l.append(k) - elif type_ok == 'R' and v.__class__.__name__ == 'reel' : l.append(k) - elif type_ok == 'I' and v.__class__.__name__ == 'entier' : l.append(k) - elif type_ok == 'C' and v.__class__.__name__ == 'complexe' : l.append(k) - elif type_ok == 'TXM' and v.__class__.__name__ == 'chaine' : l.append(k) - elif type(type_ok) != types.ClassType : continue - elif v.__class__ == type_ok or issubclass(v.__class__,type_ok): l.append(k) + # On considère que seul assd indique un type quelconque pas CO + elif self.assd in types_permis : + l.append(k) + elif self.est_permis(v,types_permis): + l.append(k) l.sort() return l + def est_permis(self,v,types_permis): + for type_ok in types_permis: + if type_ok in ('R','I','C','TXM') and v in self.params : + return 1 + elif type_ok == 'R' and v.__class__.__name__ == 'reel' : + return 1 + elif type_ok == 'I' and v.__class__.__name__ == 'entier' : + return 1 + elif type_ok == 'C' and v.__class__.__name__ == 'complexe' : + return 1 + elif type_ok == 'TXM' and v.__class__.__name__ == 'chaine' : + return 1 + elif type(type_ok) != types.ClassType : + continue + elif v.__class__ == type_ok or issubclass(v.__class__,type_ok): + return 1 + return 0 + def addentite(self,name,pos): """ Ajoute une entite : @@ -83,6 +114,7 @@ class JDC(I_OBJECT.OBJECT): if pos == None : pos = 0 self.etapes.insert(pos,objet) self.editmode=0 + self.reset_context() self.active_etapes() return objet elif name == "PARAMETRE_EVAL": @@ -93,6 +125,7 @@ class JDC(I_OBJECT.OBJECT): if pos == None : pos = 0 self.etapes.insert(pos,objet) self.editmode=0 + self.reset_context() self.active_etapes() return objet elif type(name)==types.InstanceType: @@ -100,10 +133,8 @@ class JDC(I_OBJECT.OBJECT): # existante (par copie donc) # on est donc nécessairement en mode editeur ... objet = name - objet.jdc = objet.parent = self - #XXX current_step n'existe plus. A priori le parent devrait etre self - # ainsi que le step courant. - #objet.parent = self.current_step + # Il ne faut pas oublier de reaffecter le parent d'obj (si copie) + objet.reparent(self) self.set_current_step() if isinstance(objet,ETAPE): if objet.nom_niveau_definition == 'JDC': @@ -115,8 +146,12 @@ class JDC(I_OBJECT.OBJECT): objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet) objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition] self.etapes.insert(pos,objet) + # il faut vérifier que les concepts utilisés par objet existent bien + # à ce niveau d'arborescence + objet.verif_existence_sd() self.active_etapes() self.editmode=0 + self.reset_context() return objet else : # On veut ajouter une nouvelle commande @@ -125,11 +160,13 @@ class JDC(I_OBJECT.OBJECT): cmd=self.get_cmd(name) # L'appel a make_objet n'a pas pour effet d'enregistrer l'étape # auprès du step courant car editmode vaut 1 + # Par contre elle a le bon parent grace a set_current_step e=cmd.make_objet() if pos == None : pos = 0 self.etapes.insert(pos,e) self.reset_current_step() self.editmode=0 + self.reset_context() self.active_etapes() return e except: @@ -151,13 +188,15 @@ class JDC(I_OBJECT.OBJECT): def get_sd_avant_etape(self,nom_sd,etape): return self.get_contexte_avant(etape).get(nom_sd,None) - def get_sd_apres_etape(self,nom_sd,etape): + def get_sd_apres_etape(self,nom_sd,etape,avec='non'): """ Cette méthode retourne la SD de nom nom_sd qui est éventuellement - définie apres etape + définie apres etape + Si avec vaut 'non' exclut etape de la recherche """ ietap=self.etapes.index(etape) - for e in self.etapes[ietap+1:]: + if avec == 'non':ietap=ietap+1 + for e in self.etapes[ietap:]: sd=e.get_sdprods(nom_sd) if sd: if hasattr(e,'reuse'): @@ -165,16 +204,17 @@ class JDC(I_OBJECT.OBJECT): return sd return None - def get_sd_autour_etape(self,nom_sd,etape): + def get_sd_autour_etape(self,nom_sd,etape,avec='non'): """ Fonction: retourne la SD de nom nom_sd qui est éventuellement définie avant ou apres etape Permet de vérifier si un concept de meme nom existe dans le périmètre d'une étape + Si avec vaut 'non' exclut etape de la recherche """ sd=self.get_sd_avant_etape(nom_sd,etape) if sd:return sd - return self.get_sd_apres_etape(nom_sd,etape) + return self.get_sd_apres_etape(nom_sd,etape,avec) def active_etapes(self): """ @@ -267,6 +307,12 @@ class JDC(I_OBJECT.OBJECT): """ self.params.append(param) + def register_fonction(self,fonction): + """ + Cette méthode sert à ajouter une fonction dans la liste des fonctions + """ + self.fonctions.append(fonction) + def delete_param(self,param): """ Supprime le paramètre param de la liste des paramètres @@ -297,6 +343,14 @@ class JDC(I_OBJECT.OBJECT): nom = form.nom if not nom : continue if d.has_key(nom): l_fonctions.append(form.get_formule()) + + # on ajoute les concepts produits par DEFI_VALEUR + # XXX On pourrait peut etre faire plutot le test sur le type + # de concept : entier, reel, complexe, etc. + for k,v in d.items(): + if hasattr(v,'etape') and v.etape.nom in ('DEFI_VALEUR',): + l_constantes.append(k) + # on retourne les deux listes return l_constantes,l_fonctions @@ -373,3 +427,69 @@ class JDC(I_OBJECT.OBJECT): linecache.cache[file]=0,0,string.split(text,'\n'),file return file,text + + def get_genealogie(self): + """ + Retourne la liste des noms des ascendants de l'objet self + jusqu'à la première ETAPE parent. + """ + return [] + + def NommerSdprod(self,sd,sdnom): + """ + Nomme la SD apres avoir verifie que le nommage est possible : nom + non utilise + Si le nom est deja utilise, leve une exception + Met le concept créé dans le concept global g_context + """ + # XXX En mode editeur dans EFICAS, le nommage doit etre géré différemment + # Le dictionnaire g_context ne représente pas le contexte + # effectif avant une étape. + # Il faut utiliser get_contexte_avant avec une indication de l'étape + # traitée. Pour le moment, il n'y a pas de moyen de le faire : ajouter + # un attribut dans le JDC ??? + if CONTEXT.debug : print "JDC.NommerSdprod ",sd,sdnom + if self._etape_context: + o=self.get_contexte_avant(self._etape_context).get(sdnom,None) + else: + o=self.g_context.get(sdnom,None) + if isinstance(o,ASSD): + raise AsException("Nom de concept deja defini : %s" % sdnom) + + # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja. + # Ajoute a la creation (appel de reg_sd). + self.g_context[sdnom]=sd + sd.nom=sdnom + + def set_etape_context(self,etape): + """ + Positionne l'etape qui sera utilisee dans NommerSdProd pour + decider si le concept passé pourra etre nommé + """ + self._etape_context=etape + + def reset_context(self): + """ + Cette methode reinitialise le contexte glissant pour pouvoir + tenir compte des modifications de l'utilisateur : création + de commandes, nommage de concepts, etc. + """ + self.current_context={} + self.index_etape_courante=0 + + def del_param(self,param): + """ + Supprime le paramètre param de la liste des paramètres + et du contexte gobal + """ + if param in self.params : self.params.remove(param) + if self.g_context.has_key(param.nom) : del self.g_context[param.nom] + + def del_fonction(self,fonction): + """ + Supprime la fonction fonction de la liste des fonctions + et du contexte gobal + """ + if fonction in self.fonctions : self.fonctions.remove(fonction) + if self.g_context.has_key(fonction.nom) : del self.g_context[fonction.nom] + diff --git a/Ihm/I_JDC_CATA.py b/Ihm/I_JDC_CATA.py index 945ced80..751cacda 100644 --- a/Ihm/I_JDC_CATA.py +++ b/Ihm/I_JDC_CATA.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from Noyau import N_JDC_CATA class JDC_CATA: diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index be318d25..1fd95f5e 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ # Modules Python @@ -7,10 +26,18 @@ import traceback,types,string import I_ETAPE from Noyau.N_ASSD import ASSD +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + class MACRO_ETAPE(I_ETAPE.ETAPE): def __init__(self): - I_ETAPE.ETAPE.__init__(self) + # XXX CCAR : ne suis pas certain que typret doive etre + # initialise à None (a verifier) + self.typret=None def get_sdprods(self,nom_sd): """ @@ -61,6 +88,10 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): context_ini = context_ini, appli=self.jdc.appli) j.analyse() + # XXX en passant par un jdc auxiliaire, on risque de rendre les etapes inactives + # on les force dans l'etat actif + for etape in j.etapes: + etape.active() except: traceback.print_exc() return None @@ -146,3 +177,60 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): # On met g_context à blanc self.g_context={} + def Build_sd(self,nom): + """ + Construit le concept produit de l'opérateur. Deux cas + peuvent se présenter : + + - le parent n'est pas défini. Dans ce cas, l'étape prend en charge + la création et le nommage du concept. + + - le parent est défini. Dans ce cas, l'étape demande au parent la + création et le nommage du concept. + + """ + if not self.isactif():return + # CCAR : meme modification que dans I_ETAPE + if not self.isvalid(sd='non') : return + self.sdnom=nom + try: + # On positionne la macro self en tant que current_step pour que les + # étapes créées lors de l'appel à sd_prod et à op_init aient la macro + # comme parent + self.set_current_step() + if self.parent: + sd= self.parent.create_sdprod(self,nom) + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + sd=self.get_sd_prod() + if sd != None and self.reuse == None: + # On ne nomme le concept que dans le cas de non reutilisation + # d un concept + sd.nom=nom + self.reset_current_step() + if self.jdc and self.jdc.par_lot == "NON" : + self.Execute() + return sd + except AsException,e: + self.reset_current_step() + # Une erreur s'est produite lors de la construction du concept + # Comme on est dans EFICAS, on essaie de poursuivre quand meme + # Si on poursuit, on a le choix entre deux possibilités : + # 1. on annule la sd associée à self + # 2. on la conserve mais il faut qu'elle soit correcte et la retourner + # En plus il faut rendre coherents sdnom et sd.nom + self.sd=None + self.sdnom=None + self.valid=0 + return self.sd + #raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + # 'fichier : ',self.appel[1],e) + except EOFError: + raise + except : + self.reset_current_step() + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l)) diff --git a/Ihm/I_MCBLOC.py b/Ihm/I_MCBLOC.py index 7b8281d8..7b548225 100644 --- a/Ihm/I_MCBLOC.py +++ b/Ihm/I_MCBLOC.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== import I_MCCOMPO class MCBLOC(I_MCCOMPO.MCCOMPO): def makeobjet(self): diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index 24f71cca..d7e828ff 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ import string,types @@ -25,24 +44,6 @@ class MCCOMPO(I_OBJECT.OBJECT): else: return self.nom - def get_genealogie(self): - """ - Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC - ou ETAPE) de self jusqu'au premier objet etape rencontré - """ - l=[] - objet = self - while objet.definition.label != 'JDC' : - if not objet.isMCList() : - l.append(string.strip(objet.nom)) - else : - pass - # Si objet.etape == etape c'est que objet est l'étape origine de la généalogie - if objet.etape == objet: break - objet = objet.parent - l.reverse() - return l - def get_liste_mc_ordonnee(self,liste,dico): """ Retourne la liste ordonnée (suivant le catalogue) des mots-clés @@ -61,8 +62,8 @@ class MCCOMPO(I_OBJECT.OBJECT): """ for arg in liste: objet_cata = dico[arg] - dico=objet_cata.dico - return objet_cata.liste + dico=objet_cata.entites + return objet_cata.ordre_mc def filtre_liste_mc(self,liste_brute): """ @@ -113,6 +114,20 @@ class MCCOMPO(I_OBJECT.OBJECT): liste.remove(k) if self.definition.entites[k].label=='BLOC': liste.remove(k) + # Pour corriger les exces qui pourraient etre commis dans la methode purge_liste + # des regles, on essaie de compenser comme suit : + # on ajoute les mots cles facteurs presents dont l'occurence n'est pas atteinte + for k in liste_mc_presents: + if k in liste:continue + objet = self.get_child(k,restreint = 'oui') + if isinstance(objet,MCFACT): + # un mot-clé facteur ne peut pas être répété plus de self.max fois + if objet.definition.max > 1: + liste.append(k) + elif isinstance(objet,MCList): + nb_occur_maxi = objet[0].definition.max + if len(objet) < nb_occur_maxi: + liste.append(k) return liste def liste_mc_presents(self): @@ -178,6 +193,7 @@ class MCCOMPO(I_OBJECT.OBJECT): """ self.init_modif() if type(name)==types.StringType : + # on est en mode création d'un motcle if self.ispermis(name) == 0 : return 0 objet=self.definition.entites[name](val=None,nom=name,parent=self) if hasattr(objet.definition,'position'): @@ -186,7 +202,9 @@ class MCCOMPO(I_OBJECT.OBJECT): elif objet.definition.position == 'global_jdc' : self.append_mc_global_jdc(objet) else : + # dans ce cas on est en mode copie d'un motcle objet = name + objet.verif_existence_sd() # si un objet de même nom est déjà présent dans la liste # et si l'objet est répétable # il faut créer une MCList et remplacer l'objet de la liste @@ -219,6 +237,8 @@ class MCCOMPO(I_OBJECT.OBJECT): new_obj.init(objet.nom,self) new_obj.append(old_obj) new_obj.append(objet) + # Il ne faut pas oublier de reaffecter le parent d'obj + objet.reparent(self) self.mc_liste.remove(old_obj) self.mc_liste.insert(index,new_obj) self.fin_modif() @@ -227,12 +247,16 @@ class MCCOMPO(I_OBJECT.OBJECT): # une liste d'objets de même type existe déjà #print "une liste d'objets de même type existe déjà" old_obj.append(objet) + # Il ne faut pas oublier de reaffecter le parent d'obj + objet.reparent(self) self.fin_modif() return old_obj if pos == None : self.mc_liste.append(objet) else : self.mc_liste.insert(pos,objet) + # Il ne faut pas oublier de reaffecter le parent d'obj (si copie) + objet.reparent(self) self.fin_modif() return objet @@ -304,11 +328,18 @@ class MCCOMPO(I_OBJECT.OBJECT): def copy(self): """ Retourne une copie de self """ objet = self.makeobjet() + # FR : attention !!! avec makeobjet, objet a le même parent que self + # ce qui n'est pas du tout bon dans le cas d'une copie !!!!!!! + # FR : peut-on passer par là autrement que dans le cas d'une copie ??? + # FR --> je suppose que non + # XXX CCAR : le pb c'est qu'on vérifie ensuite quel parent avait l'objet + # Il me semble preferable de changer le parent a la fin quand la copie est acceptee objet.valeur = copy(self.valeur) objet.val = copy(self.val) objet.mc_liste=[] for obj in self.mc_liste: new_obj = obj.copy() + new_obj.reparent(objet) objet.mc_liste.append(new_obj) return objet @@ -333,9 +364,9 @@ class MCCOMPO(I_OBJECT.OBJECT): for child in self.mc_liste : if child.isvalid() : continue l_child = child.get_liste_mc_inconnus() - if l_child : + for mc in l_child: l = [self] - l.extend(l_child) + l.extend(mc) l_mc.append(l) return l_mc @@ -351,9 +382,9 @@ class MCCOMPO(I_OBJECT.OBJECT): liste_retraits = [] dict = self.cree_dict_valeurs(self.mc_liste) for k,v in self.definition.entites.items(): - #dict = self.cree_dict_valeurs(self.mc_liste) if v.label=='BLOC' : - if v.verif_presence(dict) : + globs= self.jdc and self.jdc.condition_context or {} + if v.verif_presence(dict,globs): # le bloc doit être présent if not self.get_child(k,restreint = 'oui'): # le bloc n'est pas présent et il doit être créé @@ -365,3 +396,20 @@ class MCCOMPO(I_OBJECT.OBJECT): liste_retraits.append(k) return liste_ajouts,liste_retraits + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=parent.etape + for mocle in self.mc_liste: + mocle.reparent(self) + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.mc_liste : + motcle.verif_existence_sd() diff --git a/Ihm/I_MCFACT.py b/Ihm/I_MCFACT.py index 08ab1f16..39670364 100644 --- a/Ihm/I_MCFACT.py +++ b/Ihm/I_MCFACT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== import I_MCCOMPO class MCFACT(I_MCCOMPO.MCCOMPO): def isrepetable(self): diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index c08a3834..b9529e33 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== from copy import copy class MCList: @@ -28,9 +47,13 @@ class MCList: return 0 def isoblig(self): - for i in self.data: - if i.isoblig():return 1 - return 0 + """ + Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est + """ + return 0 + #for i in self.data: + # if i.isoblig():return 1 + #return 0 def liste_mc_presents(self): return [] @@ -49,11 +72,17 @@ class MCList: child.delete_concept(sd) def copy(self): + """ + Réalise la copie d'une MCList + """ liste = self.data[0].definition.list_instance() - # XXX Pas de parent ?? - liste.init(self.nom) + # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ... + liste.init(self.nom,self.parent) for objet in self: new_obj = objet.copy() + # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__ + # dans lequel le parent de l'element d'une MCList est le parent de la MCList + new_obj.reparent(self.parent) liste.append(new_obj) return liste @@ -68,10 +97,10 @@ class MCList: for mcfact in self.data : if mcfact.isvalid() : continue l_child = mcfact.get_liste_mc_inconnus() - if l_child : - l = [self] - l.extend(l_child) - l_mc.append(l) + for mc in l_child: + l = [self] + l.extend(mc) + l_mc.append(l) return l_mc def verif_condition_regles(self,liste_presents): @@ -93,3 +122,82 @@ class MCList: # Sans objet pour une liste de mots clés facteurs return [],[] + def init_modif(self): + """ + Met l'état de l'objet à modified et propage au parent + qui vaut None s'il n'existe pas + """ + self.state = 'modified' + if self.parent: + self.parent.init_modif() + + def get_etape(self): + """ + Retourne l'étape à laquelle appartient self + Un objet de la catégorie etape doit retourner self pour indiquer que + l'étape a été trouvée + XXX double emploi avec self.etape ??? + """ + if self.parent == None: return None + return self.parent.get_etape() + + def get_genealogie(self): + """ + Retourne la liste des noms des ascendants. + Un objet MCList n'est pas enregistré dans la genealogie. + XXX Meme si le MCFACT fils ne l'est pas lui non plus ???? + """ + if self.parent: + return self.parent.get_genealogie() + else: + return [] + + def get_liste_mc_ordonnee_brute(self,liste,dico): + """ + Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés + d'une entité composée dont le chemin complet est donné sous forme + d'une liste du type :ETAPE + MCFACT ou MCBLOC + ... + """ + for arg in liste: + objet_cata = dico[arg] + dico=objet_cata.entites + return objet_cata.ordre_mc + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.jdc + self.etape=parent.etape + for mcfact in self.data: + mcfact.reparent(parent) + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + for motcle in self.data : + motcle.verif_existence_sd() + + def get_sd_utilisees(self): + """ + Retourne la liste des concepts qui sont utilisés à l'intérieur de self + ( comme valorisation d'un MCS) + """ + l=[] + for motcle in self.data: + l.extend(motcle.get_sd_utilisees()) + return l + + def get_fr(self): + """ + Retourne la chaine d'aide contenue dans le catalogue + en tenant compte de la langue + """ + try : + return self.data[0].get_fr() + except: + return '' + diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 96fe6ccd..ca1bafa3 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== import types,string import traceback from copy import copy @@ -7,10 +26,21 @@ myrepr.maxstring = 100 myrepr.maxother = 100 from Noyau.N_utils import repr_float + +# Attention : les classes ASSD,.... peuvent etre surchargées +# dans le package Accas. Il faut donc prendre des précautions si +# on utilise les classes du Noyau pour faire des tests (isxxxx, ...) +# Si on veut créer des objets comme des CO avec les classes du noyau +# ils n'auront pas les conportements des autres packages (pb!!!) +# Il vaut mieux les importer d'Accas mais problème d'import circulaire, +# on ne peut pas les importer au début. +# On fait donc un import local quand c'est nécessaire (peut occasionner +# des pbs de prformance). from Noyau.N_ASSD import ASSD,assd from Noyau.N_GEOM import GEOM,geom from Noyau.N_CO import CO -from Noyau.N_EVAL import EVAL +# fin attention + from Extensions import parametre import I_OBJECT @@ -23,13 +53,17 @@ class MCSIMP(I_OBJECT.OBJECT): if self.valeur == None : return None elif type(self.valeur) == types.FloatType : - txt = repr_float(self.valeur) + #txt = repr_float(self.valeur) + # Normalement str fait un travail correct + txt = str(self.valeur) elif type(self.valeur) in (types.ListType,types.TupleType) : txt='(' i=0 for val in self.valeur: if type(val) == types.FloatType : - txt=txt + i*',' + repr_float(val) + # Normalement str fait un travail correct + #txt=txt + i*',' + repr_float(val) + txt=txt + i*',' + str(val) elif type(val) == types.InstanceType and isinstance(val,ASSD): txt = txt + i*',' + val.get_name() else: @@ -43,8 +77,16 @@ class MCSIMP(I_OBJECT.OBJECT): if isinstance(txt,parametre.PARAMETRE): return str(txt) return repr(txt) - # il faut tronquer txt au delà d'un certain nombre de caractères - # et avant tout retour chariot (txt peut être une chaîne de caractères + # txt peut etre une longue chaine sur plusieurs lignes. + # Il est possible de tronquer cette chaine au premier \n et + # de limiter la longueur de la chaine a 30 caracteres. Cependant + # ceci provoque une perte d'information pour l'utilisateur + # Pour le moment on retourne la chaine telle que + return txt + + # Partie de code inaccessible (pour memoire) + # txt est tronquee au dela d'un certain nombre de caractères + # et avant tout retour chariot (txt peut etre une chaine de caractères # sur plusieurs lignes (ex:shell) txt = string.split(txt,'\n')[0] if len(txt) < 30 : @@ -82,7 +124,8 @@ class MCSIMP(I_OBJECT.OBJECT): """ for typ in self.definition.type: if type(typ) == types.ClassType : - if typ is CO : return 1 + if issubclass(typ,CO) : + return 1 return 0 def wait_assd(self): @@ -104,7 +147,7 @@ class MCSIMP(I_OBJECT.OBJECT): """ for typ in self.definition.type: if type(typ) == types.ClassType : - if typ in (GEOM,ASSD,geom,assd) or issubclass(typ,GEOM) : + if typ.__name__ in ("GEOM","ASSD","geom","assd") or issubclass(typ,GEOM) : return 1 return 0 @@ -165,6 +208,8 @@ class MCSIMP(I_OBJECT.OBJECT): # type de nom new_valeur if self.wait_co(): try: + # Pour avoir la classe CO avec tous ses comportements + from Accas import CO self.valeur=CO(new_valeur) except: traceback.print_exc() @@ -204,6 +249,8 @@ class MCSIMP(I_OBJECT.OBJECT): return sd,1 else: d={} + # On veut EVAL avec tous ses comportements. On utilise Accas. Perfs ?? + from Accas import EVAL d['EVAL']=EVAL try : objet = eval(new_valeur,d) @@ -238,9 +285,13 @@ class MCSIMP(I_OBJECT.OBJECT): def copy(self): """ Retourne une copie de self """ objet = self.makeobjet() - #XXX est ce utile ?? - objet.valeur = copy(self.valeur) - objet.val = copy(self.val) + # il faut copier les listes et les tuples mais pas les autres valeurs + # possibles (réel,SD,...) + if type(self.valeur) in (types.ListType,types.TupleType): + objet.valeur = copy(self.valeur) + else: + objet.valeur = self.valeur + objet.val = objet.valeur return objet def makeobjet(self): @@ -257,3 +308,100 @@ class MCSIMP(I_OBJECT.OBJECT): if issubclass(self.valeur.__class__,ASSD) : l.append(self.valeur) return l + + def set_valeur_co(self,nom_co): + """ + Affecte à self l'objet de type CO et de nom nom_co + """ + step=self.etape.parent + if nom_co == None or nom_co == '': + new_objet=None + else: + # Pour le moment on importe en local le CO de Accas. + # Si problème de perfs, il faudra faire autrement + from Accas import CO + # Avant de créer un concept il faut s'assurer du contexte : step + # courant + sd= step.get_sd_autour_etape(nom_co,self.etape,avec='oui') + if sd: + # Si un concept du meme nom existe deja dans la portée de l'étape + # on ne crée pas le concept + return 0,"un concept de meme nom existe deja" + # Il n'existe pas de concept de meme nom. On peut donc le créer + # Il faut néanmoins que la méthode NommerSdProd de step gère les + # contextes en mode editeur + # Normalement la méthode du Noyau doit etre surchargée + # On déclare l'étape du mot clé comme etape courante pour NommerSdprod + cs= CONTEXT.get_current_step() + CONTEXT.unset_current_step() + CONTEXT.set_current_step(step) + step.set_etape_context(self.etape) + new_objet = CO(nom_co) + CONTEXT.unset_current_step() + CONTEXT.set_current_step(cs) + self.valeur = new_objet + self.val = new_objet + self.init_modif() + step.reset_context() + # On force l'enregistrement de new_objet en tant que concept produit + # de la macro en appelant get_type_produit avec force=1 + self.etape.get_type_produit(force=1) + return 1,"Concept créé" + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.jdc + self.etape=parent.etape + + def verif_existence_sd(self): + """ + Vérifie que les structures de données utilisées dans self existent bien dans le contexte + avant étape, sinon enlève la référence à ces concepts + """ + l_sd_avant_etape = self.jdc.get_contexte_avant(self.etape).values() + if type(self.valeur) in (types.TupleType,types.ListType) : + l=[] + for sd in self.valeur: + if isinstance(sd,ASSD) : + if sd in l_sd_avant_etape : + l.append(sd) + else: + l.append(sd) + self.valeur=l + self.init_modif() + else: + if isinstance(self.valeur,ASSD) : + if self.valeur not in l_sd_avant_etape : + self.valeur = None + self.init_modif() + + + def get_min_max(self): + """ + Retourne les valeurs min et max admissibles pour la valeur de self + """ + return self.definition.min,self.definition.max + + + def get_type(self): + """ + Retourne le type attendu par le mot-clé simple + """ + return self.definition.type + + + + + + + + + + + + + + diff --git a/Ihm/I_OBJECT.py b/Ihm/I_OBJECT.py index 559ebcd5..23feeefc 100644 --- a/Ihm/I_OBJECT.py +++ b/Ihm/I_OBJECT.py @@ -1,7 +1,33 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ +import string + +import prefs +import Noyau class OBJECT: + from Noyau.N_CO import CO + from Noyau.N_ASSD import assd + def isMCList(self): """ Retourne 1 si self est une MCList (liste de mots-clés), @@ -80,4 +106,33 @@ class OBJECT: """ return [],[] + def get_genealogie(self): + """ + Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC + ou ETAPE) de self jusqu'au premier objet etape rencontré + """ + if self.parent: + l=self.parent.get_genealogie() + l.append(string.strip(self.nom)) + return l + else: + return [string.strip(self.nom)] + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.jdc + + def get_fr(self): + """ + Retourne la chaine d'aide contenue dans le catalogue + en tenant compte de la langue + """ + try : + return getattr(self.definition,prefs.lang) + except: + return '' + diff --git a/Ihm/I_PRESENT_ABSENT.py b/Ihm/I_PRESENT_ABSENT.py index 5ddd4a80..796d777a 100644 --- a/Ihm/I_PRESENT_ABSENT.py +++ b/Ihm/I_PRESENT_ABSENT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ @@ -9,8 +28,9 @@ class PRESENT_ABSENT(I_REGLE.REGLE): if self.mcs[0] in liste_mc_presents:regle_active=1 if not regle_active : return liste_a_purger - for mc in self.mcs: - if mc in liste_a_purger: + # Il ne faut pas purger le mot cle present + for mc in self.mcs[1:]: + if mc in liste_a_purger : liste_a_purger.remove(mc) return liste_a_purger diff --git a/Ihm/I_PRESENT_PRESENT.py b/Ihm/I_PRESENT_PRESENT.py index e6a841e3..fbd6f681 100644 --- a/Ihm/I_PRESENT_PRESENT.py +++ b/Ihm/I_PRESENT_PRESENT.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ diff --git a/Ihm/I_PROC_ETAPE.py b/Ihm/I_PROC_ETAPE.py index ddfdabeb..81d6c810 100644 --- a/Ihm/I_PROC_ETAPE.py +++ b/Ihm/I_PROC_ETAPE.py @@ -1,4 +1,32 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== import I_ETAPE + + +# import rajoutés suite à l'ajout de Build_sd --> à résorber +import traceback,types +import Noyau +from Noyau import N_Exception +from Noyau.N_Exception import AsException +# fin import à résorber + class PROC_ETAPE(I_ETAPE.ETAPE): def get_sdname(self): return "" @@ -24,3 +52,30 @@ class PROC_ETAPE(I_ETAPE.ETAPE): for child in self.mc_liste : child.delete_concept(sd) + def Build_sd(self): + """ + Cette methode applique la fonction op_init au contexte du parent + et lance l'exécution en cas de traitement commande par commande + Elle doit retourner le concept produit qui pour une PROC est toujours None + En cas d'erreur, elle leve une exception : AsException ou EOFError + """ + if not self.isactif():return + try: + if self.parent: + if type(self.definition.op_init) == types.FunctionType: + apply(self.definition.op_init,(self,self.parent.g_context)) + else: + pass + if self.jdc.par_lot == "NON" : + self.Execute() + except AsException,e: + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1],e) + except EOFError: + self.reset_current_step() + raise + except : + l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) + raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], + 'fichier : ',self.appel[1]+'\n', + string.join(l)) diff --git a/Ihm/I_REGLE.py b/Ihm/I_REGLE.py index 1ff738f3..52a0c47a 100644 --- a/Ihm/I_REGLE.py +++ b/Ihm/I_REGLE.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ import string diff --git a/Ihm/I_UN_PARMI.py b/Ihm/I_UN_PARMI.py index a600514d..bd1ef701 100644 --- a/Ihm/I_UN_PARMI.py +++ b/Ihm/I_UN_PARMI.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ """ @@ -14,8 +33,9 @@ class UN_PARMI(I_REGLE.REGLE): if not regle_active : return liste_a_purger # Si un des mots clés est présent, on les enlève tous + # sauf celui ci for mc in self.mcs: - if mc in liste_a_purger: + if mc in liste_a_purger and mc not in liste_mc_presents: liste_a_purger.remove(mc) return liste_a_purger diff --git a/Ihm/__init__.py b/Ihm/__init__.py index a2c6164b..f12fbf81 100644 --- a/Ihm/__init__.py +++ b/Ihm/__init__.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce package contient les fonctionnalités supplémentaires nécessaires pour l'éditeur graphique EFICAS diff --git a/Installation/Doc_technique_install.doc b/Installation/Doc_technique_install.doc new file mode 100755 index 0000000000000000000000000000000000000000..285a3549f886257670f9fd2c2790cb29b687d7ff GIT binary patch literal 49152 zcmeI5349dg`Nt;-;a(tIq9P0;8Wf@&RYAawfPx}WE-y4Jn@zHk?1tS9hZnZ>Y&|L7 z*y2^K{n*xeUx?PLRZ;)esuU3skZ8T|!UOn!fA74LY%Z>7)i#sQH_yE9%)B!@^Ul1_ zywCeQ^WqCRt8ch-kGGs!(+DTa*|N2j(>yIdgZWH9-NA9%GOxTXTeogib`~((H2sLq zz$7QmU&?Wv(M}ARaOQIrgEj6#N;3a8A8nB(wjmP*#X zOvzPM&t_=hj6Iyp3@z~M9`pYipQAH@CNhU@TQ3ICY>*YAJ7 z&iT&)|Nd{mxoHjla^(j|OSZRCEkF)*gig>C{PlN4>YnZedqZ#72l~LiupbP7^l}=y z{|B<(AQ%ikfrH@?I26Xfj@!t6@pC3#9(QpimgJWSlOb36RoslQA-6|d~VVmqH`GpXHuxAu9cY&UORh@+H%s)!sl{L zyRP~B|20f)dls{qAUT46lBZKaB8& z)boBd=sBw8y0)r|dJe12Dg@~krJ(bh0^RFpfa>Zw&=xKN9phRyQd^|FF{6(iJ9*-m z(UV3`_Kx*I@0e8&b?j;fRhA}Swxv*&qcYUCjEaXV$|A9p(VN^NlGpu3GuIBUn)$&D?Uy!O37a;Y_ zTZGi}aS2lO?KY(9)1Q%g?%j_}uTPDw3#v~PX%0^F`Yp%iQ!!Dds+N&gJ)dpnb?oEg ziLy{>USXWdUt?QmO19EE&LPe~3XmEBCQ7Xys@lgU*pQeUz0)TX~F?)2uws z$~jh^X65NtF0k@vRxUO&=-g=2H(7bJmA|v{Rx9tY@-8dyw(?~wU$yczD_2^%%F6ex z{KCpjMh2ZNHr-E;U(VlAMh2aq+H{eXQ7cci%P+O*%dEWI%4_ZNJFPresx;-EZ{-C> z2Aykc`T;8+vH8#1bnb!PcE=hSbpB-1U3+=?ciMD!o4(7Ydzf_4iP&_JmBmH|of0eW zwfTRy@*|t?sHx|84>L081Z{epl~b*ZTX}|+=NcJwereNxvhop||A9?^Xys>Cc9UA+ z1f3p6<~u#Dbgk@THvM;-_RrrbHh+~puUGKtBJa@Z5H`pEafS#})41}Yh z2rht&;9|HEu7XEk89WYug(u((Xvs6YBXokjU^E;F)8IG=!)!PgZi3&zZSW}k9iD^d z;U)MKTGJMEhAuE3E{7}Nes~Gm(KfV)t}qf#ffD#5+z+q7Yp@BnKuey(z2N|u0#jic zoD2nU0W5~6VFUad-iHt1OW3z9=Lh;iIh+Pp!!>X%+yd`I^8ovTZg3C`fPpXpilG$d z!PW3Otbnz!9$L2JH$yHAgh4PErb7YDfM3BC@EceHkHMR;8s366@HMDSRK?m0dO%P3 z2^<24!EhK2)1VMy5QlP@4QIm7;TLcooDUbnBDezXgnQvWxE~&Zhv8{>2Ht`9;NS2O zY=i*qb0_EwU0^rp20dUO=mVo*42*?iVFH{2B@l%;To3od;>PEg%nu!8NcH{t2(aDp(C`U>&sW#4$rVXb;0+BFuqvVHrFLFTo1<6f!!q zA7~GQ;Rr}V3QmLT;U>5lZh_n3d3YIKf!ARDWhfd`qGge!J3cbkofIz%#hkWXFQZRw z^8B)y@lvPFzFH+e5e=0(9joWv@u5T_K9_g5W=?s_i%=DxK(+Wit8zisOgnGl+G*z< z3ay-xzs_W@Eo3`L!qiJov|_H<)JpwXAc*wYT)Q@TK;k z=|Ov>e#yS{*Ynn@{_o}Mu2Y{5KgGN|(dL_XCfZr^u0;E1meVeocOu#j^Dd-qnx-HB z8K|x|e*N*K>PLbnK<#=|JFPnYPCQ}CmhPPmDb;X63(x#{11v_$OXd0XjdhmQp)6VYyTiR_^F+b-0 zt9q_>3!@3TDOI~BOm-tFGaI4?Rwg5{u$CmR@D#&jyrLw;eG>@;x;QugJnxpL@_%<> z_N^CY-*#d4?=Q^0oz^-xToNgx=e2hKYa|uU%ggKAukNiq7+H&2koVU`2 zHEt+3w>+d>aKDF=<`&bL)Gy@Zx$z365|!nVL@Le+Pxf;Q6Y*%uZV^pYkjJU?j!5UU zG~$LSurgdy$t~T_Wy`WiD&<|PGGnBVcn^}w(n{UYNjFp!jaC0hmfDl<9gWx7+)s_T zKhf~3H$b}HdiWSxpaisp!(j@X2iL#@@F4sXK7-Gph@1H|cobH`8?XvKg)blz#i2V) zhudK}tb|NnV0*v-D1u@*3(kWp;7V8w*TW;Q6kddv;T8A{wcp9FEO|LK&O}r^9vdI6Mo>;RSdRUV%4Y z1Ejwc59WnbFT@AK@h}}uh9W2iz3g5Fo1L#WZ+14@Nr~!|$uwF1@*S67f8kHfPtJ0} zdJn6}aI%lX1ZQmyt-9W zyy0b9VV6DRWR&;b=seVHYkBY2Gi>TQWv+L&EwXB_@?NbC=6gl^)x28vqC-6^&?aYP zR;P7a+78~DAw5^EQHHapZIte-Uc3G|ES=d|IsKho++0>qa|~lLcKsM!dJNj+G^PZ8 zEqy@k`TZH#H>rS3d+-YL@zzXabI+7O`>uDBkX{k%Og)_Z;Kr>t@aB^gk8hnQN$B zHb*erosy@S+`fU4rJ-ap;s$Io8jGgT1ENW;E+sN!lmi+`6p4yN(yUidjx9A(U@A^- z-&UG>yAx({ra9v*>F-sk@l(_QPaQw@cyBAK&lHr;=VZj#_Z;Tj;chaOh?W+QY(-2^?v96DE)S|nYJ23_^quW9yR()Yt=QOtePG3Id%yuy<@ zG`2S9$ZP+TOK)%dnyxs)cQ)etK!;TX(?ioQpO~ukV#4@lazv_ z@-DM!DQenY%9@r-VUv{7rhF-GN=tc@lmaLDqLotQl$J85^`+2BN~u%66gx>Ncal=@ zB&FnOJt=yUQudTDg-=pSpQIE&Etm4Av=l%|DS?tw1SO>mYCW~Dl2QWoJEaIpN*R=t zLa6I5rBG=phLTbaC8Z!rF0}I3Mh1*@b z8l?6=&d7Y{M4OJ;^hH))YUSlt-e%=pMh2Y^Z2ChhKe72;d1C1J`dN9fm4_HfJ+bM# zth~?WudveeA+h~%^(7%k7#Va%TbZ!=7u)nzHvNW`?^xN4K@{4)g^@vLKb!7va+Q^DTDjWF_pBVG5x0~(&dTvto?>LsnPcT#E9cqeS6F$6m4C5vsgXgi zmz(3uS8q4vA7SM zEBhK5bi#eS{6Z@uRu);gz{+!s3_43}`UWeThQN5|uW1O3&O_4>nD1i^vracHfcz6vH_`a%WcKY5-;MMluRK50J z-%rLrP)RBJ+nrFKW&hRSYuSHg2iCMLDNW&XX)3IrJA!^Fy*i9Go7F32|J|46gY9-& zbL&jc{(GX`Zdc`-SidqU?=5RbPM1T--{WY{?tAsIp6rSpSS{4ZuxJ0h4k`QZVDg`3 zKuGP$KM(%#Roj349ADPn($Dv$_Mqu*d!&BJzVz4g)~f#R=lk2$mRf!yH%aYsYNvIk z(x(~s<}B0*@l38Dy06m#Dc#H8t|93kk6)gS=K!|zk1Ks2-`@QHy8TbxMospgCi~9| z-04mBpCr0?@ zfE|Ew3K$nKi5X*tH-Lg3c$qSiu34*}CkjFZ;Y1{o=;tjgNJPp_hK2+%b_lCKM^w9< zc)7+`V8yCs`%1IJrTwyc)Fyd|{1dw8VV?$hg2?Nm?Sbg;AkPGO4_pO*hBswaT~SLc z^)j#b#F_OAv-25Rw%oC+)N?#Lo5edoO(X2E&0Y~Zat{aEbb2gv7dLlYV}Jd7W~V21 zwFs|-OR^hV!i1K)TtXW;Csq$hVHjCOA{+_0)ptXU#oVZ=Xv~hf(G471$e15lfAH&nnrfwcF@Q%8;*Jz3>?yH8YBBpG4kKY&J$95Z_4 z&aZEFR~DaxK{8qzsUF_sS>p=4VNLy9Z=V4@`BI4rGe}DFX_vy>)1?bT2`qx8SMS>?_v~PgHKw8s`t}-TBGd4)J!E_(g28K-a8(GJ2UK+{ujMZE#T~=#h zto`iitFv2=jkt2jP%h})XkjrAw9!1!<{ufwn(7Y{!@^rOvoM6kH0mnZ?|Le^>|IP3f9hH}pzRrL4 zm}Op-_uic#FTHy~UU%}i+Y0iylee8b?Z$yT?BXELI(gN}qwY^2Pda(geF*A0l;@nh z=HxLaZ#j9&$xBWia`K9k2b{Y4Opwi;ao4@cHjsN!l8u#Uo0W;&j2CGfi_3p|w)AhX# zbPaXgCV;NXZLkt-+izR@Z3(;PZ@l}irugqU$5@`e1r4I{?f=qU*FjqE%=oWUos1b7 z^opM9w3rgrDAWPm(~KQ!nGwjyc_OpZu+3dQa=H#fA>%Q}FoKM;!T5#gnxj;1b86#E z{n^QxPPn@>3#G2a$u#>a@%KfY9K*iZS7y!y*^S&+YxXtG?5!J7BeKk%3jIA%)5kD$ zg*|2EjBDA*JvDdqo4U~#-puT!$lnX+XpDouPe!0wPKP#)+)GP)?z%CcGu!NEroW$` zD4tQa6Uff_N1%~=@qSBJ_R+lNJ`UDCnmd8!IahaRUX+H~NUzp*vF#AAyb?p%C zqlFV_ku$whBlnS|Yr?N+S@TyMsy(!H0xfggu8rJ-euef?f*JT*YQW;&m``JDGS$(Vg~ffDY9xy@3fg-H;%!ydh`Pt_mmoE zuWEzdI8fl(=pCGTL2-1D{lRYI7VhV{>{V?*uUXC05-qZ)rmE9Xdm296H655k>%C51 zW>uN~IyH};@O6=JofEi?W8@V2CHb;}YE=Jv+qO8l{X{vgZ-b#5%V3CJ}-!~QkYU&Hn_RR1o}(0UD*KeV0a2YD@0!{P4+4ToQ) z?wyUb#3Nqj5{dQBg8EXYc$qbY-JqsO*EQ?TyT$@@ee=fp(3Q2?^%CmXpLW=X&^!9# zM(n$n^&)J<8EB{LDA$En?Y#g_=*PbB{%aOd-JQH)>M@m?}de-C8Y*ot=U&B<52`iE0IcFYc zxUom_5|LsV4ije6T;=!GD1szjZ{8xcxfSJ!4b~9mxhQ%z{|3xGqbkd2oPBfGLYa}+ zJneVor5WfwqdgYfFqFoLISDUODHy+iQT7kN8+$L+^BNOLSTC73}5RRa&a?YHq8WLunxXC_)) zfRSE*hI?UcGr1MXrAY2X3b-aWBDoOBedv9V+mKv_{AYpOf-ZtfL9Re@1Ck5S zJ@6dJJ#Hn)tw=6GdTz)SNNzxSe#retu0L}7(Q`!ZK63TZ^F+f%<>n(7AG!C)wMT9} za_Nyfk6d}=#v>OVx$nqzM{YZE*^#@BTy^B8BNrXH=g2ijZaH$vkvooDapZ>69pr{1 z7aY0Y$kj$}Hgd6%dyQOc8oATRl}2tfa-os?j9h2rHY1lAxy#5^Ms6~zK!bth zA|v-0xyHyXMlLaOhmk9c++gGaBlj1%zR2z68*lo`N+Z77v}sd~bb6xZ{8!(wZu;aE zkiHUzN4);itUxn4(gvoc-rkx$WeuDrvVW+(y*gsWYHMaJqgf_SPo~q%-Ac>@hyPwj z;1D!FFQOZ{j_{^o2o2g-#D=rU{s`V=lWAFuY=@`dX?Ppf!jn8to`QEED;sSR4uBBM z1v%=z341rETquKEVFk1z+*oVq4FlkCmBm-ePJS?BFt&dccJ2Ilzxri!J2&0U-~Zk0J&QA(#axl?(HUF! z_SX3!F8{F{HwJ#=QZKzrW1uu{C<_PuPQ=C5GWCn--B|i)Y!CF?Uaa5W8w0DcFpAXK z3je0gI1_d=Up7KVv5m}-D<@z z0kz_f!+Y>Cs724F6?dTz42O|03KW=IE&Tr9bD)I1K zoD2#FaxPo~(iComXF&nH-+~QL317mVXbib9K$-&#fw3?P=D-3t56*`rpn%>lgS3rx z(2_dT30{U3uogaqbI>q;3DP*OglplCunOLWjj##6fmYPPQ=k|Yz@@Mdeg}DIB*S19 zoDGk_^UxJdq!-)(e}>*@BL~5JI3HT0iR=a^!KrWoTmk;O-JNJAOQAP)e;`bN>F_MP z27}Q~4u?``LEUd+Tj!wJcXWOZa7=9L-lK<3kI?TMN>0a@k=|(g)fv1Z%y(w^6i9e$ z@c2j~KF=LB(j7Dy*Nc=heY(k+UKl2W^r(@O2j&kRIMAuRV(m0fqMB2)=FJv4?`HP= z!fBqt6Y<(MgIX5y7SX~vJ`?4W|5^Os{=}{CETe8d!~40vzN9~&UP9;VPWWurh~|CV zpADpy^w!XS&1X0+Pw&TTY*v`Qaji1-RwVQVochQx`Lzo8FG^Mo^!Iv)ToY#P2xITF zCNF|=%4-HU8q@KFPmN!-syoE&#u}-;t!=g3_t3#*N0F{dO<+nHLGY5PI+%unfz}vB zU;pvhRU-2u;q8~_Sqbf^{QAqYtL#{LQR3Hav$V7o^5#ZUC54I5+?t2UxOU>DhALd^ zm{c{Gelk6V$&$&k1;x@%VsbvcsAW2P)g7+Z>jJA{)Qi8W^XnGsgd2y8U7T%Ng2zs7Syuw;pt$kz;=;uM)l;OLl42F5 zff@rj%qWvukAl1^8+;ubKR0c)O~;NT@CR_X+Zw^)x>bex0|-n(RRec)$)b^lMkd&8 ze4`W1dQrU2fDijy8XQ_MJ?4%rH4mNifi@b8U>Y40$+e8pHVmEUUE?6PHQdAd75+FH ze@!0w1iXyU*7*hXcJmp{gF+jkRp6nGqb%2hJu{PX<)28vZL;j(%h?tCt@hg0!UQgL zJ300C-Obbl$x)JeYNC@T2?icbG~8a|_+0z?s=De?Zbtv8ylT~_W(y*(X|pjVL%t%Q z-=8RuXJu|*TY?wnv&x-Xx2Be>(6pN^T1Z_`GpPuqX^&X-e<;+N!mKI8TJxT~w}Qf| z9R*`xTp!1TS5s&;g;i5XHHA}CC^dyqy8#qFOkE4NdY*i!_0>Fm@l9WG(-+(H)jRoA7lXcZm+o7wKBy{7T@4GM zpIdLHzi`LoSKftBxBsav_wAVH(eN8v8xjH_n_I|x%#ByKU;&psmac+&2&HRO@Cwzy((UbxFuts@vdE4)@ zGr0N?Yr3NEur9L~U0_+ew(V}ZM)$xsFn(|DC-^Pg3s1p&FrYX6KyW@Rf_LBxDBXwa z4`0JE+|PPW=oz8sf$nqNuet}f!X)ky-7{Of3;O+vRbExI;t?-p#bPg2uP}AR`{x?% zukpTnxXtZym1%5^qt@@~H7=$ZBH9F_V@((h+q4*GeZq$8rKrlSzq(OL@}^|AK@F*j z>|utTO4H-jqg_u;Zi!V7rANt3B~ zc$QIwP5cF&$FzVV={iEa*Hu>)&A#fQ+7r)3tPvIg?W%f-RU`Fo+|YY~-!+16R#kKZ z1u86qALYOP$PBDeQ>$`AeyNq-VRG@j5$yH6!PvJK?`^|77!zYcy%*jfS#6}sKtBYh zTwkK`dPvO6zdf`X)g$7fd1}JzEKUw%a8KTQq2A1{c^T6 zQ7yd4H{3;prDvp?A6|nCQ5`YA>K%w{SY6wb8G0r+#ecz=XLNuJXNSYbI9?0T6#u0u z{)-7%WuIf-Bk8{&{tGvR8Fl3S--WS9bmXONTV2|6lkfdsVdfk9pT17|eBJfa%iQ*w zb+`SlbJCBk>YV&w#vc996`!&UXY4~hyZ%Jc&4BT(& z9kMa;U$*xfS)R#Ty~BW4J7p>ZZArF$S=^gBdl=nG)^pw{&9e0WTC?utBjl|&aKJ(CJa^!bL)@}5*PV#p2p^F2zF#$Spb1se|ekQBO|2rTXiQs52VFUs5HTMqgB&ivQA?rn^rUw%+?>8~60La`$DO zongk~X-r-Vo=#p$hohW~c6_vSY6ku^d>fIdRZd2Z!;q(1dBI)on)N^Kn9+g3e^WE2 z`Fp}ZpV7(T(OW0ieA_bvza4LeP)2QXjBPlB_)l%@nX0hehW+BUbr9R&9e&R(X$%ff(@_*wnFRX*n^-y91O!iUOyw?a2Nx} zLn&xnvb=!)1uLNv-i6la1o8$N3d3OpXbkcw7zf8e95fdB4!9Hk0uO<_hStD3&{*UR zpz+Av>FMbYhk!haj(}5P7MuhZnBt+}k3;syAj@0nZji@PGZdCyun(ZZ7!Rf?$T-XejWd=<(~aQKGoZ22%i$&XKaij6o3I+b z0iLu@CdkXHIkbR|&{yrvW#D_6jbg0qRFJosKdyT%^R0L=_JZEf7Y=~_a1a~^ z@<=-YP6XdG?J?$Ggf@)%?f~*q>jQ^_#)MA=`Ts9~i$P<<<-ztOYyjWC_ao*%gKmr| z>j5rk4EX@iIP%eO3j7M>^>#7b2KT~4@OM}P@`h{1*zzEp2*r@@6_?NH;%Yf{KQgL_ zv25pbif}90-^$N<5-9C|gw%VD@jphIZzADpd3)}D{oY;wIO)#B ze`|{Wx${v?o8o_FoUMCxXMCxf;(zL{&eOkbOuG{QQ^o1)ZOu%4?S?$U-{+~~ed7&f zmuu%w(u;kM@C9T`AC{i$>$W%XRK6LO!DAqu^d@)$R>3-Gj&3*%Ccz@mXPY-eH}pN} zgz`1M~rIeQ5h}_#Dzdu_!36aVorr}m;>tJc?_O~H$bgvSLg}7KrQP8Q0qDkPJjqJ0?XhrcoO~wFN0d# z$#60hfLh;Q!Xmg5K87z~6MO^Nw7PAe9drb>%6TvYil7+EAq8iGTI)q{4?GS}z{~I| ztb+Y$wFiP)@hGSjzaE}~=RmzKtKnb8C(muz!0>G!$F#cA}>yWFx(1vz@4xZI-zlNhruukj)Ifm zZTJ{m>g`V;0qPNX7ER=zpk9LrC_c?P$U_4e29LsX&;jkECk%(9Ap`BBJrqF_UW0d_ z8CpmVoDF(wuY^yb7rNy3eayDy9o@8S=g(i0=XaCmxBpJ|ol07uCd>c#V|#3hyP$Xs z|I<^`-KWd{y;=VEML!cQoVJ;5Gc~74^2cQPZ!+^c{&)eI`P-rtYx2$f>iBpbUV{%n zU7GuH;~fU$K_>nf{0wdYnfRB&8=$UFh3-0p7sn~!cZ15LABWRm5vWV_FK{BG^ejYvppg`~{m<imkLFxkxHHwxl9tODamX)>EWxr4{W( zQW3Ky6*XJS6**f{kzkas2-=d0qOE*I(w0<&7)eFb)^bIPX@OK!?H1&hB3mI9Jx0qF zXorWJi#X+_|cR1|JWMdFrJG;T>n{et+YJrB^CW!QW3x<)%Pf=hzwd^Q5lq0WClq^XOL8c21!L}(0buM fURvJQ%2$*INkwXqRI~=kbBqj{s0~Wr(C7aF7gA*! literal 0 HcmV?d00001 diff --git a/Installation/README b/Installation/README new file mode 100755 index 00000000..4a575ba9 --- /dev/null +++ b/Installation/README @@ -0,0 +1,30 @@ + + + ================================================= + Procédure d'installation d'EFICAS + ================================================= + +Pré-requis : +------------ + + - Python 2.1 ou supérieur avec Tkinter + - PMW 8.0.5 ou supérieur + +Installation : +-------------- + +1°) copiez le fichier eficas.tar.gz dans un répertoire temporaire + +2°) Décompressez ce fichier comme suit : + + gunzip eficas.tar.gz + tar xvf eficas.tar + +3°) Vous devriez désormais voir 4 éléments : + + - 1 fichier README_install + - 1 fichier install.py + - 1 fichier code_aster.gif + - 1 répertoire /Eficas + +4°) Reportez-vous au fichier README_install pour la suite des actions à entreprendre. diff --git a/Installation/README_install b/Installation/README_install new file mode 100755 index 00000000..081d9428 --- /dev/null +++ b/Installation/README_install @@ -0,0 +1,40 @@ + + + ================================================= + Procédure d'installation d'EFICAS + ================================================= + +Pour lancer la procédure d'installation, tapez : + + python install.py + +Vous pouvez remplacer 'python' par le chemin d'accès de votre interpréteur Python. + +La procédure d'installation commence par vérifier que votre système contient bien les +pré-requis pour EFICAS (cf README) + +La procédure va vous demander un certain nombre de chemins d'accès nécessaires à l'établissement du +fichier de configuration d'EFICAS qui s'appelle editeur.ini et qui se trouvera, une fois EFICAS, +installé, dans le répertoire Eficas/Aster + +- Répertoire d'installation : répertoire dans lequel vous voulez installer Eficas +- Répertoire de travail : répertoire de travail temporaire d'EFICAS +- Répertoire matériaux : répertoire dans lequel se trouvent les catalogues matériaux d'ASTER +- Répertoire doc Aster : répertoire dans lequel se trouve le manuel U4 de la doc Aster (format pdf) + ex : /logiciels/aster/NEW6/doc/pdf/u4 +- Exécutable Acrobat Reader : chemin d'accès complet à l'exécutable Acrobat Reader + + +Catalogues Aster : EFICAS installe par défaut le catalogue Aster v6 qui se trouve en + Eficas/Aster/Cata. + Si vous voulez en installer d'autres, il faut qu'ils se trouvent dans ce même répertoire + ou qu'il y ait un lien dans ce répertoire vers le fichier. + Pour ajouter d'autres catalogues, il faut aller modifier directement le fichier editeur.ini + + + +Lancement d'EFICAS : le fichier à lancer est Eficas/Aster/eficas_aster.py + il faut le lancer précédé du chemin d'accès à l'interpréteur Python comme + pour la procédure d'installation. + + diff --git a/Installation/install.py b/Installation/install.py new file mode 100755 index 00000000..dbe14e34 --- /dev/null +++ b/Installation/install.py @@ -0,0 +1,949 @@ +SUCCES,ECHEC = 1,0 +OUI,NON = 1,0 + +## constantes pour les tests de versions + +python_min = 20 +tcl_min = 83 +tk_min = 83 +pmw_min = 85 +test = 0 + +try: + import sys,string,re,types,traceback + import os,commands +except Exception,e: + print "Mauvaise installation de Python" + print str(e) + +REPERTOIRE = os.path.abspath(os.curdir) + +def strip_points(chaine): + """ + Enlève les caractères autres que les chiffres des chaînes + """ + x="" + for i in range(len(chaine)): + try: + dummy = float(chaine[i]) + x=x+chaine[i] + except: + pass + return x + +class Test_Environnement : + def __init__(self): + self.l_errors = [] + + def test_plate_forme(self): + """ + Teste que la plate-forme est bien supportée + """ + if os.name not in ('nt','posix'): + self.l_errors.append("La plate-forme %s n'est pas supportée" %os.name) + + def test_version_python(self): + """ + Test de la version de python + """ + version = sys.version + n = string.index(version,"(") - 1 + vpyt = strip_points(version[0:n])[0:2] ## recupere les 2 premiers caracteres + if int(vpyt) self.max: + value = self.max + if value < self.min: + value = self.min + # Preserve the new value + c=self.canvas + # Adjust the rectangle + if self.orientation == "horizontal": + c.coords(self.scale,0, 0,float(value) / self.max * self.width, self.height) + else: + c.coords(self.scale,0, self.height - (float(value) / self.max*self.height),self.width, self.height) + # Now update the colors + c.itemconfig(self.scale, fill=self.fillColor) + c.itemconfig(self.label, fill=self.labelColor) + # And update the label + if self.autoLabel=="true": + c.itemconfig(self.label, text=self.labelFormat % value) + else: + c.itemconfig(self.label, text=self.labelFormat % self.labelText) + c.update_idletasks() +try : + import Tkinter + import Pmw + from tkMessageBox import showinfo,askyesno,showerror,askretrycancel +except: + pass + +class SplashScreen(Tkinter.Toplevel): + """ Provides a splash screen. Usage: + Subclass and override 'CreateWidgets()' + In constructor of main window/application call + - S = SplashScreen(main=self) (if caller is Toplevel) + - S = SplashScreen(main=self.master) (if caller is Frame) + - S.quit() after you are done creating your widgets etc. + """ + def __init__(self, master,**args): + Tkinter.Toplevel.__init__(self, master, relief='groove',borderwidth=5) + self.protocol("WM_DELETE_WINDOW",lambda x=0: x+x ) # pour ne pas détruire la fenêtre en pleine copie de fichiers + self.main = master + if self.main != None : + self.main.withdraw() + self.frame = Tkinter.Frame(self) + self.frame.pack(expand=1,fill='both') + self.init(args) + self.geometry("300x200") + self.resizable(0,0) + self.CreateWidgets() + + def init(self,args={}): + self.text = Tkinter.StringVar() + self.text.set('') + self.icone = 'Editeur/icons/logo_edf.gif' + self.barre = 'non' + if args == {} : return + if args.has_key('text'): + self.text.set(args['text']) + if args.has_key('titre'): + self.title(args['titre']) + if args.has_key('code'): + self.code = args['code'] + else: + self.code = 'inconnu' + if self.code == 'ASTER' : + self.icone = 'Editeur/icons/code_aster.gif' + + def CreateWidgets(self): + fic_image = os.path.join("./", self.icone) + if os.path.exists(fic_image): + self.catIcon = Tkinter.PhotoImage(file=os.path.join("./", self.icone)) + Tkinter.Label(self.frame, image=self.catIcon).pack(side=Tkinter.TOP) + else: + Tkinter.Label(self.frame, text = "EFICAS pour Code_Aster").pack(side=Tkinter.TOP) + self.label = Tkinter.Label(self.frame, textvariable=self.text) + self.label.pack(side=Tkinter.TOP,expand=1,fill='both') + self.progress = Slider(self.frame,value=0,max=100,orientation='horizontal', + fillColor='blue',width=200,height=30, + background='white',labelColor='red') + + def update_barre(self,event=None): + """ Permet de faire avancer la barre de progression """ + try: + self.progress.value = self.progress.value+self.increment + self.progress.update() + #self.after(100,self.update_barre) + except: + pass + + def configure_barre(self): + """ Calcule l'incrément de progression de la barre en fonction + du nombre d'opérations à effectuer afin que le compteur + soit à 100% à la fin des opérations""" + self.increment = 100./self.ratio + self.progress.update() + + def configure(self,**args): + if args.has_key('text'): + self.text.set(args['text']) + if args.has_key('titre'): + self.title(args['titre']) + if args.has_key('barre'): + old = self.barre + self.barre = args['barre'] + if self.barre == 'oui' and old == 'non': + self.progress.frame.pack(in_=self.frame,side='top') + elif self.barre == 'non' and old == 'oui': + self.progress.frame.pack_forget() + if args.has_key('ratio'): + self.ratio = args['ratio'] + self.configure_barre() + self.update() + + def quit(self): + self.progress = None + self.withdraw() + self.main.update() + self.main.deiconify() + +def centerwindow(window,parent = 'avec'): + if parent =='avec': + parent = window.winfo_parent() + if type(parent) == types.StringType: + try: + parent = window._nametowidget(parent) + except: + parent = window + # Find size of window. + window.update_idletasks() + width = window.winfo_width() + height = window.winfo_height() + if width == 1 and height == 1: + # If the window has not yet been displayed, its size is + # reported as 1x1, so use requested size. + width = window.winfo_reqwidth() + height = window.winfo_reqheight() + # Place in centre of screen: + if parent =='avec' : + x = (window.winfo_screenwidth() - width) / 2 - parent.winfo_vrootx() + y = (window.winfo_screenheight() - height) / 3 - parent.winfo_vrooty() + else: + x = (window.winfo_screenwidth() - width) / 2 + y = (window.winfo_screenheight() - height) / 3 + if x < 0: + x = 0 + if y < 0: + y = 0 + window.geometry('+%d+%d' % (x, y)) + +class config_item: + """ + Classe utilisée pour représenter chaque option de configuration + """ + def __init__(self, pere, nom): + self.nom = nom + self.pere = pere + self.entree_value = None + self.default = None + self.test = None + self.pere.register_item(self) + + def get_valeur(self): + return os.path.abspath(self.entree.get()) + + def set_entree(self,entree): + self.entree = entree + self.pere.register_entree(entree) + +class Config(Tkinter.Toplevel): + """ + Classe principale : une instance de Config est utilisée pour + créer l'interface. Toutes les actions (création de répertoire, copie + de fichiers ...) sont réalisées par des méthodes de Config ou de ses + composants + """ + pat_rep = re.compile(r'^(rep_)([\w_]*)') # expression réguliere pour reconnaitre les + # les options qui désignent des répertoires + def __init__(self, parent): + self.master = parent + Tkinter.Toplevel.__init__(self,None) + parent.withdraw() + self.title("Installation d'EFICAS") + self.geometry("500x320+0+0") + centerwindow(self) + self.install_running = 0 + #évite que la fenêtre puisse être détruite en pleine copie de fichiers + self.protocol("WM_DELETE_WINDOW",self.exit ) + # création des frames + self.frame_gen = Tkinter.Frame(self,bd=1,relief='groove') + self.frame_gen.place(relx=0,rely=0,relwidth=1,relheight=0.9 ) + self.frame_but = Tkinter.Frame(self,bd=1,relief='groove') + self.frame_but.place(relx=0,rely=0.9 ,relheight=0.1 ,relwidth=1) + # création des items de configuration + self.make_items_config() + # remplissage de la frame générale + self.make_frame_gen() + # remplissage de la frame boutons + self.make_frame_but() + # création boîtes de dialogue + self.init_complementaire() + # init système + self.init_systeme() + + def make_items_config(self): + """ + Création des objets Config_item + """ + self.items = [] + self.items_a_creer = [] + self.liste_rep_crees = [] + self.entrees = [] + # designation, texte d'invite , option par defaut(unix), option par defaut(windows), flag obligatoire/facultatif + self.l_tx_items = (('rep_install' , + "Répertoire d'installation :", + '', + '', + 'o'), + ('rep_travail' , + 'Répertoire de travail :', + 'tmp', + 'tmp', + 'f'), + ('rep_mat' , + 'Répertoire matériaux :', + None, + None, + 'f'), + ('rep_docaster' , + "Chemin d'accès à la doc Aster :" , + None, + None, + 'f' + ), + ('acrobat' , + 'Exécutable Acrobat Reader :', + '/usr/bin/acroread', + 'acrobat.exe', + 'o') + ) + + for item in self.l_tx_items: + nom_item = item[0] + setattr(self,nom_item,config_item(self,nom_item)) + + def make_frame_gen(self): + """ + Création des zones de saisie des paramètres généraux + """ + # Création du label titre de la frame + self.information = Tkinter.Label(self.frame_gen,text="CONFIGURATION D'EFICAS") + self.information.pack(side="top",pady=10) + # création des widgets de saisie des items + for txt in self.l_tx_items: + nom_item = txt[0] + txt_item = txt[1] + if os.name == 'nt': + default_value = txt[3] + else: + default_value = txt[2] + item = getattr(self,nom_item) + wdg_item = Pmw.EntryField(self.frame_gen, + labelpos = 'w', + label_text = txt_item, + command = lambda s=self,i=item : s.select_next_entry(i.entree)) + item.default_value = default_value + item.statut = txt[4] + item.set_entree(wdg_item) + # on affiche les entrées + for entree in self.entrees: + entree.pack(fill='x', expand=1, padx=10, pady=5) + Pmw.alignlabels(self.entrees) + self.entrees[0].focus_set() + #self.rep_cata_dev.entree.configure(entry_state = 'disabled') + self.display_defaults() + + def make_frame_but(self): + """ + Création des boutons de commande Installer et Annuler + """ + self.validButton = Tkinter.Button(self.frame_but, text = 'Installer', command = self.run_install) + self.exitButton = Tkinter.Button(self.frame_but, + text = 'Annuler', + command = lambda s=self : s.exit(annule='oui')) + self.exitButton.place(relx=0.35,rely=0.5,anchor='center') + self.validButton.place(relx=0.65,rely=0.5,anchor='center') + + def init_complementaire(self): + """ + Création de widgets complémentaires (boîtes de dialogue ...) + """ + self.erreur_dialog = Pmw.Dialog(self, + buttons = ('Modifier', 'Annuler'), + defaultbutton = 'Modifier', + title = 'Erreur', + command = self.erreur_exec) + self.erreur_dialog.withdraw() + self.fatale_dialog = Pmw.Dialog(self, + buttons = ('Annuler',), + title = 'Fatal', + command = self.fatale_exec) + self.fatale_dialog.withdraw() + self.info_dialog = Pmw.Dialog(self, + buttons = ('Ok',), + title = 'Attention') + self.info_dialog.configure(command=self.info_dialog.withdraw()) + self.info_dialog.withdraw() + self.attente = SplashScreen(None,code="ASTER") + self.attente.withdraw() + + def init_systeme(self): + """ + Détermine les commandes à exécuter en fonction de l'OS + """ + self.d_commandes = {} + if os.name == 'nt': + self.d_commandes['decompress'] = "unzip.exe " + self.d_commandes['copy'] = "copy " + self.d_commandes['delete'] = "del " + elif os.name == 'posix': + self.d_commandes['decompress'] = "gunzip " + self.d_commandes['copy'] = "cp " + self.d_commandes['delete'] = "rm " + + def run_install(self): + """ + Lance l'installation proprement dite d'EFICAS + """ + self.install_running = 1 + self.afficher_splash() + self.deactivate_entries() # Les entrees et les boutons sont desactivees + self.deactivate_buttons() # pendant les operations d'installation + #self.decompress_archive() + #if not os.path.exists(os.path.join(REPERTOIRE,'Eficas')): + # self.afficher_fatale("Il manque des fichiers d'EFICAS") + # self.install_running = 0 + # return + self.nb_fichiers = self.compte_fichiers(REPERTOIRE) + if self.nb_fichiers == 0: + self.afficher_fatale("Il manque des fichiers d'EFICAS") + self.install_running = 0 + return + # essaie de creer les repertoires. + try: + if self.make_dirs() == ECHEC : + self.activate_entries() + self.activate_buttons() + self.install_running = 0 + return + except: + self.install_running = 0 + self.afficher_fatale("Impossible de créer certains répertoires") + + # affiche la fenêtre avec la barre de progression + self.afficher_copie_fichiers() + # essaie de copier les fichiers d'EFICAS + try: + if self.move_files() == ECHEC: + self.afficher_echec("Impossible de copier les fichiers d'EFICAS") + self.activate_buttons() + self.install_running = 0 + return + except : + traceback.print_exc() + self.install_running = 0 + self.afficher_fatale("Impossible de copier certains fichiers") + + #self.rm_temp_dirs() # efface les répertoires temporaires + try: + self.creer_fic_conf() # crée le fichier eficas.conf + except: + afficher_info("Impossible de créer le fichier de configuration\n Il est possible de le faire a la main") +# self.install_running = 0 + self.afficher_install_terminee() # A ce stade tout est fait et il ne reste plus qu'à attendre + # un clic de souris pour sortir + + def display_defaults(self): + """ + Affiche les valeurs par défaut dans les zones de saisie + """ + # racine indique la racine de l'arborescence + if os.name == 'nt': + racine = 'C:\\' + else: + racine = os.environ['HOME'] + # remplit les zones de saisie avec les options par défaut + for item in self.items: + if item.default_value == None : continue + item.default_value = os.path.join(racine,item.default_value) + item.entree.insert(0,item.default_value) + + def register_item(self,item): + """ + Enregistre l'item dans la liste des items et éventuellement + dans la liste des items à créer (répertoires) + """ + self.items.append(item) + if self.pat_rep.match(item.nom) : + self.items_a_creer.append(item) + + def register_entree(self,entree): + """ + Enregistre la zone de saisie dans la liste des zones + """ + self.entrees.append(entree) + + def select_next_entry(self,entree): + """ + Place le focus dans l'entry suivant celle passée en argument + """ + index = self.entrees.index(entree)+1 + if index != len(self.entrees): + self.entrees[index].component('entry').focus() + + def activate_entries(self): + """ + Active les entrées. Les zones de saisie deviennent éditables. + """ + for item in self.entrees: + item.configure(entry_state='normal') + + def deactivate_entries(self): + """ + Désactive les entrées. Les zones ne sont plus éditables. + """ + for item in self.entrees: # Les entrees sont desactivees + item.configure(entry_state='disabled') # pendant les operations d'installation + + def activate_buttons(self): + """ + active les boutons valider et annuler + """ + self.validButton.configure(state = 'normal') + self.exitButton.configure(state = 'normal') + + def deactivate_buttons(self): + """ + désactive des boutons valider de annuler + """ + self.validButton.configure(state = 'disabled') + self.exitButton.configure(state = 'disabled') + + def erreur_exec(self, result): + """ + Callback exécuté lorsque l'utilisateur clique sur un des boutons + Modifier/Annuler de la fenêtre de dialogue qui lui présente les erreurs + """ + self.erreur_dialog.deactivate(result) + self.removedir() + if result == 'Annuler': + self.install_running = 0 + self.exit(annule='non') + + def fatale_exec(self, result): + """ + Callback exécuté lorsque l'utilisateur clique sur le bouton + Quitter de la fenêtre de dialogue qui lui présente les erreurs fatales + Seule solution : sortir de l'installation + """ + self.fatale_dialog.deactivate(result) + self.install_running = 0 + self.exit(annule='oui') + + def test_confirmation(self,flag,nom): + """ + Callback activé par le clic sur bouton fenêtre demandant confirmation + avant création répertoire facultatif + """ + if flag == 'NON': + self.confirmation.destroy() + self.TEST_confirmation_avant_creation = NON + return + else : + self.confirmation.destroy() + self.TEST_confirmation_avant_creation = OUI + + def afficher_fatale(self, message): + """ + Affiche les erreurs fatales + """ + self.attente.withdraw() + w = Tkinter.Label(self.fatale_dialog.interior(),text = message, pady = 5) + w.pack(expand = 1, fill = 'both', padx = 4, pady = 4) + self.fatale_dialog.configure(deactivatecommand = w.destroy) + self.fatale_dialog.activate() + + def afficher_echec(self, message): + """ + Affiche un message d'erreur + Par construction, dès que l'on passe par cette méthode, on sort de l'installation + en passant le flag install_running à 0 + """ + self.attente.withdraw() + w = Tkinter.Label(self.erreur_dialog.interior(),text = message, pady = 5) + w.pack(expand = 1, fill = 'both', padx = 4, pady = 4) + self.erreur_dialog.configure(deactivatecommand = w.destroy) + self.erreur_dialog.activate() + + def confirmation_avant_creation(self,repertoire): + """ + Affiche une boite de dialogue pour confirmer la création + d'un répertoire facultatif. + """ + self.attente.withdraw() + self.confirmation = Pmw.Dialog(self, + buttons = ('OUI', 'NON'), + defaultbutton = 'OUI', + title = "Répertoire inexistant", + command = lambda f,s=self,r=repertoire : s.test_confirmation(f,r)) + self.confirmation.withdraw() + Tkinter.Label(self.confirmation.interior(), + text="Le répertoire %s n'existe pas \n Voulez-vous le créer ?" %repertoire).pack(side='top') + self.confirmation.activate(geometry='centerscreenalways') + return self.TEST_confirmation_avant_creation + + def afficher_splash(self): + """ + Afficher la boite de message + """ + self.attente.deiconify() + self.attente.tkraise() + centerwindow(self.attente) + self.attente.configure(titre="Installation d'EFICAS", + text="Vérification intégrité sources Eficas", + barre="non") + + def afficher_info(self,message): + """ + Afficher une boite de warning + """ + w = Tkinter.Label(self.info_dialog.interior(),text = message, pady = 5) + w.pack(expand = 1, fill = 'both', padx = 4, pady = 4) + self.info_dialog.configure(deactivatecommand = w.destroy) + self.info_dialog.activate() + + def afficher_copie_fichiers(self): + """ + Afficher la boite de message avec la barre de progression + """ + self.attente.deiconify() + self.attente.tkraise() + self.attente.configure(titre="Installation d'EFICAS", + text="copie des fichiers", + barre="oui") + self.attente.ratio = self.nb_fichiers + self.attente.configure_barre() + + def afficher_install_terminee(self): + """ + Afficher le message Installation terminée + """ + self.withdraw() + self.attente.configure(titre="Installation d'EFICAS", + text="Installation terminée", + barre="non") + self.exitButton.place_forget() + self.validButton.place_forget() + self.validButton = Tkinter.Button(self.attente.frame, + text = 'Quitter', + command = self.exit) + self.validButton.pack(side='top',pady=5) + self.install_running = 0 + + def decompress_archive(self) : + """ + Décompresse l'archive d'EFICAS dans un répertoire temporaire (.) + """ + print "decompress_archive" + #try: + commande = os.path.join(REPERTOIRE,self.d_commandes['decompress']) + fichier = os.path.join(REPERTOIRE,"eficas.zip") + print 'commande =',commande + print 'fichier =',fichier + os.execv(commande,("eficas.zip",)) + #except: + # self.affiche_echec("Erreur dans la décompression") + + def normaliser_chemin(self, nom): + """ + Retourne le chemin d'accès complet à nom + """ + return os.path.abspath(os.path.expanduser(nom)) + + def discriminer_noms(self): + """ + Emet un message d'alerte si des zones de saisie ne sont pas remplies + ou si des noms de répertoires à créer sont identiques. + """ + liste_noms = [] + for item in self.items_a_creer: + nom = item.entree.get() + if nom == self.rep_install.entree.get(): # il faut ajouter 'Eficas' au chemin du repertoire + nom = os.path.join(nom,"Eficas") # d'installation + liste_noms.append(nom) + + test = SUCCES + for item in self.items_a_creer: + nom = item.entree.get() + if len(nom) == 0 : + test = ECHEC + message = "attention : certains répertoires n'ont pas de nom" + self.afficher_echec(message) + item.entree.component('entry').focus() + break + + if test == ECHEC : + return test + + for item in self.items_a_creer: + nom = item.entree.get() + if liste_noms.count(nom) >1 : + test = ECHEC + message = "attention : certains répertoires ont le même nom" + self.afficher_echec(message) + item.entree.component('entry').focus() + break + + return test + + def compte_fichiers(self,path): + """ + Dénombre les fichiers présents dans le répertoire Eficas (et ses sous-répertoires) + """ + nb = 0 + l_fic = os.listdir(path) + l_rep = [] + for fic in l_fic : + if os.path.isdir(os.path.join(path,fic)): + l_rep.append(fic) + else: + nb = nb+1 + for rep in l_rep : + nb = nb + self.compte_fichiers(os.path.join(path,rep)) + return nb + + def creer_fic_conf(self): + """ + Crée le fichier editeur.ini a partir des données saisies + par l'administrateur. + """ + fichier_conf = os.path.join(self.normaliser_chemin(self.rep_install.get_valeur()),"Eficas/Aster/editeur.ini") + f = open(fichier_conf,'w') + f.write("path_doc = "+'"'+self.normaliser_chemin(self.rep_docaster.get_valeur())+'"\n') + f.write("exec_acrobat = "+'"'+self.normaliser_chemin(self.acrobat.get_valeur())+'"\n') + f.write('isdeveloppeur = "NON"\n') + f.write("rep_travail = "+'"'+self.normaliser_chemin(self.rep_travail.get_valeur())+'"\n') + f.write("rep_cata = "+'"'+os.path.join(self.normaliser_chemin(self.rep_install.get_valeur()),"Eficas/Aster/Cata/")+'"\n') # attention au dernier slash + f.write("rep_mat = "+'"'+self.normaliser_chemin(self.rep_mat.get_valeur())+'"\n') + cata = """catalogues = (('ASTER','v6',rep_cata + 'cata_STA6.py','python','defaut'),)\n""" + f.write(cata) + f.close() + + + def move_files(self): + """ + Déplace les fichiers Eficas du répertoire temporaire vers + leur répertoire de destination + """ + # création du répertoire Eficas + rep_eficas = os.path.join(self.rep_install.get_valeur(),'Eficas') + self.copy_rep(REPERTOIRE,rep_eficas) + + def copy_rep(self,rep_dep,rep_arr): + """ + Copie le répertoire path_dep et ses sous-répertoires dans path_arr + """ + l_fichiers = os.listdir(rep_dep) + if not os.path.exists(rep_arr) : + # création du répertoire d'arrivée quand il n'existe pas + self.mkdirs(rep_arr) + for fic in l_fichiers : + nom_complet_dep = os.path.join(rep_dep,fic) + nom_complet_arr = os.path.join(rep_arr,fic) + if os.path.isfile(nom_complet_dep): + commande_copie = self.d_commandes['copy']+nom_complet_dep+' '+nom_complet_arr + commande_delete= self.d_commandes['delete']+nom_complet_dep + try: + os.system(commande_copie) + #os.system(commande_delete) + self.attente.update_barre() + except Exception,e: + pass + elif os.path.isdir(nom_complet_dep): + self.copy_rep(nom_complet_dep,nom_complet_arr) + + def rm_temp_dirs(self): + """ + Détruit le répertoire temporaire de l'archive d'Eficas + """ + rep_arch = os.path.join(REPERTOIRE,'Eficas') + self.rm_r(rep_arch) + + def make_dirs(self): + """ + Crée les répertoires d'accueil des fichiers d'EFICAS + """ + # création des répertoires dont l'utilisateur a donné le nom + if self.discriminer_noms() == ECHEC: + return ECHEC + for item in self.items_a_creer: + if not item.entree.get(): + continue + nom = item.get_valeur() + if nom == self.normaliser_chemin(self.rep_install.entree.get()): # il faut ajouter 'Eficas' au chemin du repertoire + nom = os.path.join(nom,"Eficas") # d'installation + item.test = self.essai_creer(nom,item.statut) + if item.test == ECHEC : + item.entree.component('entry').focus() + return ECHEC + return SUCCES + + def essai_creer(self, nom, statut): + """ + Essaie de créer le répertoire nom s'il n'existe pas déjà. + Si statut == 'f' et si le fichier n'existe pas, demande + confirmation avant création + """ + repertoire = self.normaliser_chemin(nom) # repertoire = chemin absolu de nom + if os.path.exists(repertoire): + if statut == 'o' : + self.afficher_echec("Un fichier ou répertoire de nom "+ repertoire+ " existe déjà !\n"+ + "L'installation ne peut continuer") + return ECHEC + else: + return SUCCES + + if statut == 'f' : + # on demande confirmation de création à l'utilisateur + test = self.confirmation_avant_creation(repertoire) + if test == NON: + return SUCCES + + try: + test = self.mkdirs(repertoire) + return SUCCES + except Exception,e: + message = "La création de "+repertoire+" a échoué :\n %s \n Vérifiez vos droits d'écriture" %str(e) # message d'erreur + self.afficher_echec(message) + return ECHEC + + def mkdirs(self,rep): + """ + Création récursive des répertoires d'installation. + Les noms des répertoires crées sont stockés dans + une liste dont se sert la méthode removedir pour + restaurer l'environnement initial en cas d'annulation. + """ + if rep==os.path.dirname(rep): + return SUCCES + + if os.path.exists(os.path.dirname(rep)): + os.mkdir(rep) + self.liste_rep_crees.append(rep) + return SUCCES + else: + test = self.mkdirs(os.path.dirname(rep)) + if test == SUCCES: + os.mkdir(rep) + self.liste_rep_crees.append(rep) + return SUCCES + else: + return ECHEC + + def rm_r(self,path): + """ + Detruit récursivement path + """ + if not os.path.exists(path): + return + try: + if len(os.listdir(path))!=0: + for entree in os.listdir(path): + entree = os.path.join(path,entree) + self.rm_r(entree) + os.rmdir(path) + except Exception,e: + self.afficher_info("Impossible de détruire le répertoire : "+path+"\n"+"\n"+str(e)+"\n L'installation continue néanmoins") + + def removedir(self): + """ + Destruction des répertoires déja crées (en cas d'annulation) + """ + for rep in self.liste_rep_crees: + self.rm_r(rep) + self.liste_rep_crees = [] + + def exit(self,annule='non'): + """ + Tente de sortir de l'application. + Echoue si installation en cours + """ + if self.install_running : + # l'installation est en cours --> on interdit la sortie + self.afficher_info("Impossible de quitter tant que l'installation est en cours\n Veuillez patienter") + else: + if annule == 'oui' : self.removedir() + self.master.quit() + +if __name__ == '__main__': + test = Test_Environnement().test() + if not test : + # environnement incomplet --> on sort de la procédure d'installation + sys.exit() + else: + import Tkinter + import Pmw + root = Tkinter.Tk() + Pmw.initialise(root) + try: + principal = Config(root) + root.mainloop() + except Exception,e: + print "Erreur non prévue rencontrée : ",str(e) + print "Veuillez prévenir la maintenance" + sys.exit() diff --git a/Minicode/cata_saturne.py b/Minicode/cata_saturne.py index 40975a2d..4c742a6a 100755 --- a/Minicode/cata_saturne.py +++ b/Minicode/cata_saturne.py @@ -3,6 +3,8 @@ import Accas from Accas import * +#CONTEXT.debug=1 + import ops JdC = JDC_CATA(code='SATURNE', @@ -11,13 +13,21 @@ JdC = JDC_CATA(code='SATURNE', AU_MOINS_UN('FIN'), A_CLASSER(('DEBUT','POURSUITE'),'FIN') ) - ); + ) # P. RASCLE MMN # remarques diverses sur le catalogue Saturne # - dans les blocs, il faut au moins un mot clé de statut obligatoire # probleme de rafraichissement des blocs dépendants quand la valeur d'un mot cle global (ITURB) passe de 1 à 0 +# Type le plus general +class entier (ASSD):pass +class reel (ASSD):pass +class complexe(ASSD):pass +class liste (ASSD):pass +class chaine (ASSD):pass + + class sonde(ASSD):pass class varsca(ASSD):pass class flusca(ASSD):pass @@ -36,7 +46,35 @@ class tsr23(ASSD):pass class resti(ASSD):pass class maillage(ASSD):pass -class listr8 (ASSD):pass +class modele(ASSD):pass +class matr_asse(ASSD):pass +class cham_elem_sief_r(ASSD):pass +class theta_geom(ASSD):pass +class cham_mater(ASSD):pass +class cara_elem(ASSD):pass +class char_ther(ASSD):pass +class char_meca(ASSD):pass +class nume_ddl(ASSD):pass +class char_acou(ASSD):pass +class listr8 (ASSD):pass +class matr_elem(ASSD):pass +class matr_elem_depl_c(matr_elem):pass +class matr_elem_depl_r(matr_elem):pass +class matr_elem_pres_c(matr_elem):pass +class matr_elem_temp_r(matr_elem):pass + +# matr_asse : +#-------------------------------- +class matr_asse(ASSD):pass +class matr_asse_depl_c(matr_asse):pass +class matr_asse_depl_r(matr_asse):pass +class matr_asse_gene_r(matr_asse):pass +class matr_asse_gene_c(matr_asse):pass +class matr_asse_pres_c(matr_asse):pass +class matr_asse_pres_r(matr_asse):pass +class matr_asse_temp_c(matr_asse):pass +class matr_asse_temp_r(matr_asse):pass + # fin entete @@ -101,6 +139,33 @@ FORMULE = FORM( nom='FORMULE',op=-5,sd_prod=fonction, COMPLEXE = SIMP(typ = 'shell',max=1), ) ; +AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele,docu="U4.41.01-f1", + fr="Affectation des éléments finis sur le maillage",reentrant='n', + MAILLAGE =SIMP(statut='o',typ=(maillage) ), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ), + VERIF =SIMP(statut='f',typ='TXM',max=2,into=("MAILLE","NOEUD") ), + ); +NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl,docu="U4.61.11-f",reentrant='n', + fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice", + MATR_RIGI =SIMP(statut='f',typ=(matr_elem_depl_r ,matr_elem_depl_c, + matr_elem_temp_r,matr_elem_pres_c),max=100 ), + MODELE =SIMP(statut='f',typ=modele ), + b_modele =BLOC(condition = "MODELE != None", + CHARGE =SIMP(statut='f',max='**',typ=(char_meca,char_ther,char_acou, ),), + ), + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ), + b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale", + RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ), + ), + b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué", + RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ), + ), + INFO =SIMP(statut='f',typ='I',into=(1,2)), +) ; + DEFI_SONDE = OPER(nom="DEFI_SONDE",op= 1,sd_prod=sonde, docu="U2D1", fr="définition d'une sonde historique avec ses coordonnées", @@ -1229,3 +1294,258 @@ FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une ) ; +def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE, + SOLVEUR,NUME_DDL,CHARGE,INST,**args): + """ + Ecriture de la macro MACRO_MATR_ASSE + """ + ier=0 + # On met le mot cle NUME_DDL dans une variable locale pour le proteger + numeddl=NUME_DDL + # On importe les definitions des commandes a utiliser dans la macro + # Le nom de la variable doit etre obligatoirement le nom de la commande + CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM') + NUME_DDL =self.get_cmd('NUME_DDL') + ASSE_MATRICE =self.get_cmd('ASSE_MATRICE') + # La macro compte pour 1 dans la numerotation des commandes + self.icmd=1 + + if SOLVEUR: + methode=SOLVEUR['METHODE'] + if methode=='LDLT': + if SOLVEUR['RENUM']: + renum=SOLVEUR['RENUM'] + else: + renum='RCMK' + if renum not in ('SANS','RCMK'): + ier=ier+1 + self.cr.fatal("Avec methode LDLT, RENUM doit etre SANS ou RCMK.") + return ier + elif methode=='MULT_FRONT': + if SOLVEUR['RENUM']: + renum=SOLVEUR['RENUM'] + else: + renum='MDA' + if renum not in ('MDA','MD','METIS'): + ier=ier+1 + self.cr.fatal("Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK.") + return ier + elif methode=='GCPC': + if SOLVEUR['RENUM']: + renum=SOLVEUR['RENUM'] + else: + renum='SANS' + if renum not in ('SANS','RCMK'): + ier=ier+1 + self.cr.fatal("Avec methode GCPC, RENUM doit etre SANS ou RCMK.") + return ier + else: + methode='MULT_FRONT' + renum ='MDA' + + if numeddl in self.sdprods: + # Si le concept numeddl est dans self.sdprods + # il doit etre produit par la macro + # il faudra donc appeler la commande NUME_DDL + lnume = 1 + else: + lnume = 0 + lrigel = 0 + lmasel = 0 + + iocc=0 + for m in MATR_ASSE: + iocc=iocc+1 + option=m['OPTION'] + if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR', + 'RIGI_THER','RIGI_ACOU') : + ier=ier+1 + self.cr.fatal("LA PREMIERE OPTION DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR") + return ier + + if m['SIEF_ELGA']!=None and option!='RIGI_GEOM': + ier=ier+1 + self.cr.fatal("SIEF_ELGA N EST ADMIS QU AVEC L OPTION RIGI_GEOM") + return ier + + if m['MODE_FOURIER']!=None and option not in ('RIGI_MECA','RIGI_FLUI_STRU','RIGI_THER'): + ier=ier+1 + self.cr.fatal("MODE_FOURIER N EST ADMIS QU AVEC UNE DES OPTIONS RIGI_MECA RIGI_FLUI_STRU RIGI_THER") + return ier + + if (m['THETA']!=None or m['PROPAGATION']!=None) and option!='RIGI_MECA_LAGR': + ier=ier+1 + self.cr.fatal("PROPAGATION ET,OU THETA NE SONT ADMIS QU AVEC L OPTION RIGI_MECA_LAGR") + return ier + motscles={'OPTION':option} + if option == 'AMOR_MECA': + if (not lrigel or not lmasel): + ier=ier+1 + self.cr.fatal("""POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE + RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)""") + return ier + if CHAM_MATER != None: + motscles['RIGI_MECA'] =rigel + motscles['MASS_MECA'] =masel + if CHARGE != None: + if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'): + motscles['CHARGE'] =CHARGE + if CHAM_MATER != None: motscles['CHAM_MATER'] =CHAM_MATER + if CARA_ELEM != None: motscles['CARA_ELEM'] =CARA_ELEM + if INST != None: motscles['INST'] =INST + if m['SIEF_ELGA'] : motscles['SIEF_ELGA'] =m['SIEF_ELGA'] + if m['MODE_FOURIER']: motscles['MODE_FOURIER']=m['MODE_FOURIER'] + if m['THETA'] : motscles['THETA'] =m['THETA'] + if m['PROPAGATION'] : motscles['PROPAGATION'] =m['PROPAGATION'] + __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles) + + if option == 'RIGI_MECA': + rigel = __a + lrigel = 1 + if option == 'MASS_MECA': + masel = __a + lmasel = 1 + + if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'): + self.DeclareOut('num',numeddl) + # On peut passer des mots cles egaux a None. Ils sont ignores + num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum) + else: + num=numeddl + + self.DeclareOut('mm',m['MATRICE']) + mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num) + return ier + +def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args): + if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats") + if not NUME_DDL: raise AsException("Impossible de typer les concepts resultats") + self.type_sdprod(NUME_DDL,nume_ddl) + for m in MATR_ASSE: + opti=m['OPTION'] + + if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" , + "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA", + "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R", + "ONDE_FLUI","MASS_MECA_DIAG" ) : t=matr_asse_depl_r + + if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c + + if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" , + "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r + + if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c + + self.type_sdprod(m['MATRICE'],t) + return None + +MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,docu="U4.61.21-c", + sd_prod=macro_matr_asse_prod, + fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ", + MODELE =SIMP(statut='o',typ=modele), + CHAM_MATER =SIMP(statut='f',typ=cham_mater), + CARA_ELEM =SIMP(statut='f',typ=cara_elem), + CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou)), + INST =SIMP(statut='f',typ='R'), + NUME_DDL =SIMP(statut='o',typ=(nume_ddl,CO)), + SOLVEUR =FACT(statut='d',min=01,max=01, + METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT", + into=("LDLT","MULT_FRONT","GCPC")), + RENUM =SIMP(statut='f',typ='TXM',into=("SANS","RCMK","MD","MDA","METIS")), + ), + MATR_ASSE =FACT(statut='o',min=01,max='**', + MATRICE =SIMP(statut='o',typ=(matr_asse,CO)), + OPTION =SIMP(statut='o',typ='TXM', + into=("RIGI_MECA","MASS_MECA","MASS_MECA_DIAG", + "AMOR_MECA","RIGI_MECA_HYST","IMPE_MECA", + "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU", + "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR", + "RIGI_THER","MASS_THER", + "RIGI_ACOU","MASS_ACOU","AMOR_ACOU", + "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",) + ), + SIEF_ELGA =SIMP(statut='f',typ=cham_elem_sief_r), + MODE_FOURIER =SIMP(statut='f',typ='I'), + THETA =SIMP(statut='f',typ=theta_geom), + PROPAGATION =SIMP(statut='f',typ='R'), + ), + TITRE =SIMP(statut='f',typ='TXM',max='**'), + INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)), +) ; + + +def defi_valeur_prod(self,IS=None,R8=None,TX=None,C8=None,LS=None): + if IS != None : return entier + if R8 != None : return reel + if TX != None : return chaine + if C8 != None : return complexe + if LS != None : return liste + raise AsException("type de concept resultat non prevu") + +DEFI_VALEUR=MACRO(nom="DEFI_VALEUR",op=-4,sd_prod=defi_valeur_prod, + fr="Affectation d une valeur à une variable Superviseur", + docu="U4.31.04-e1",reentrant='f', + regles=(UN_PARMI('IS','R8','TX','C8','LS'),), + IS =SIMP(statut='f',typ='I',max='**'), + R8 =SIMP(statut='f',typ='R',max='**'), + TX =SIMP(statut='f',typ='TXM',max='**'), + C8 =SIMP(statut='f',typ='C',max='**'), + LS =SIMP(statut='f',typ='L',max='**'), +) ; + +def macro2_prod(self,MODELE,**args): + return maillage + +MACRO2 =MACRO(nom="MACRO2",op= -5 ,docu="U4.61.21-c", + sd_prod=macro2_prod, + fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ", + MODELE =SIMP(statut='o',typ=modele), +); + +class concept(ASSD):pass + +def op1_prod(x,**args): + if x == 0:return concept + if x == 1:return concept + raise AsException("type de concept resultat non prevu") + +OP1 = OPER(nom='OP1',op=1,sd_prod=op1_prod,reentrant='f', + a=SIMP(statut='o',typ='I',into=(0,1,2)), + b=SIMP(typ=concept), + ccc=FACT(statut='d',d=SIMP(typ='I'),e=SIMP(typ='I')), + b_1=BLOC(condition="a==0", + x=SIMP(statut='o',typ='I',into=(0,1)), + c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + ), + b_2=BLOC(condition="a==1", + x=SIMP(statut='o',typ='I',into=(0,1)), + b_2=BLOC(condition="1", + cc=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + ), + ), + ); + + +def op2_prod(self,x,**args): + if x == 0:return concept + if x == 1:return concept + raise AsException("type de concept resultat non prevu") + +OP2 = MACRO(nom='OP2',op=1,sd_prod=op2_prod,reentrant='f', + a=SIMP(statut='o',typ='I',into=(0,1,2)), + b=SIMP(typ=concept), + ccc=FACT(statut='d',d=SIMP(typ='I'),e=SIMP(typ='I')), + b_1=BLOC(condition="a==0", + x=SIMP(statut='o',typ='I',into=(0,1)), + c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + ), + b_2=BLOC(condition="a==1", + x=SIMP(statut='o',typ='I',into=(0,1)), + b_2=BLOC(condition="1", + cc=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + c=FACT(d=SIMP(typ='I'),e=SIMP(typ='I')), + ), + ), + ); + diff --git a/Minicode/eficas_mini.py b/Minicode/eficas_mini.py index c8a97ac1..281ccc8e 100755 --- a/Minicode/eficas_mini.py +++ b/Minicode/eficas_mini.py @@ -3,19 +3,44 @@ Ce module sert à lancer EFICAS configuré pour Code_Mini """ # Modules Python -import sys +import sys,os # Modules Eficas import prefs sys.path[:0]=[prefs.INSTALLDIR] +args=sys.argv[1:] +for a in args: + if a == "-display": + os.environ['DISPLAY']=args[args.index("-display")+1] + import Editeur from Editeur import eficas_go -if len(sys.argv) > 1 : - # on veut ouvrir un fichier directement au lancement d'Eficas - eficas_go.lance_eficas(code='SATURNE',fichier = sys.argv[1]) +def main(): + if len(sys.argv) > 1 : + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas(code='SATURNE',fichier = sys.argv[1]) + else: + # on veut ouvrir Eficas 'vide' + eficas_go.lance_eficas(code='SATURNE') + +def hidez(): + from Misc import Cyclops + z = Cyclops.CycleFinder() + z.run(main) + z.find_cycles() + z.show_stats() + z.show_cycles() + # z.show_cycleobjs() + # z.show_sccs() + z.show_arcs() + +withCyclops=0 + +if withCyclops: + hidez() else: - # on veut ouvrir Eficas 'vide' - eficas_go.lance_eficas(code='SATURNE') + main() + diff --git a/Minicode/prefs.py b/Minicode/prefs.py index f3d82ae8..57be183f 100644 --- a/Minicode/prefs.py +++ b/Minicode/prefs.py @@ -14,8 +14,13 @@ INSTALLDIR=os.path.join(REPINI,'..') # Peut valoir None (defaut) CODE_PATH = None #CODE_PATH = os.path.join(REPINI,'../../Superv') +#CODE_PATH = "/home01/chris/projet_Eficas/Devel/SUPER6_3/Aster6_3/bibpyt" # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/Noyau/N_ETAPE.py b/Noyau/N_ETAPE.py index c7c5335d..d2bd6f21 100644 --- a/Noyau/N_ETAPE.py +++ b/Noyau/N_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF N_ETAPE Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_ETAPE Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -27,6 +27,7 @@ import types,sys,string,os import linecache import traceback +from copy import copy # Modules EFICAS import N_MCCOMPO @@ -317,6 +318,51 @@ class ETAPE(N_MCCOMPO.MCCOMPO): if self.sd: d[self.sd.nom]=self.sd + def copy(self): + """ Méthode qui retourne une copie de self non enregistrée auprès du JDC + et sans sd + """ + etape = copy(self) + etape.sd = None + etape.state = 'modified' + etape.reuse = None + etape.sdnom = None + etape.etape=etape + etape.mc_liste=[] + for objet in self.mc_liste: + new_obj = objet.copy() + new_obj.reparent(etape) + etape.mc_liste.append(new_obj) + return etape + + def copy_reuse(self,old_etape): + """ Méthode qui copie le reuse d'une autre étape. + """ + if hasattr(old_etape,"reuse") : + self.reuse = old_etape.reuse + def copy_sdnom(self,old_etape): + """ Méthode qui copie le sdnom d'une autre étape. + """ + if hasattr(old_etape,"sdnom") : + self.sdnom = old_etape.sdnom - + def get_sd_utilisees(self): + """ + Retourne la liste des concepts qui sont utilisés à l'intérieur d'une commande + ( comme valorisation d'un MCS) + """ + l=[] + for child in self.mc_liste: + l.extend(child.get_sd_utilisees()) + return l + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=self + for mocle in self.mc_liste: + mocle.reparent(self) diff --git a/Noyau/N_JDC.py b/Noyau/N_JDC.py index 95581464..8a2aa3e1 100644 --- a/Noyau/N_JDC.py +++ b/Noyau/N_JDC.py @@ -1,4 +1,4 @@ -#@ MODIF N_JDC Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_JDC Noyau DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -393,3 +393,5 @@ NONE = None self.index_etape_courante=index_etape return d + def get_global_contexte(self): + return self.g_context.copy() diff --git a/Noyau/N_MACRO.py b/Noyau/N_MACRO.py index 5aa38361..46cb881b 100644 --- a/Noyau/N_MACRO.py +++ b/Noyau/N_MACRO.py @@ -1,4 +1,4 @@ -#@ MODIF N_MACRO Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MACRO Noyau DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -85,7 +85,7 @@ class MACRO(N_ENTITE.ENTITE): nommage = nommage def __init__(self,nom,op,sd_prod=None,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,fichier_ini=0,**args): + docu="",regles=(),op_init=None,niveau = None,fichier_ini=0,UIinfo=None,**args): """ Méthode d'initialisation de l'objet MACRO. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -125,6 +125,7 @@ class MACRO(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,reuse=None,**args): diff --git a/Noyau/N_MACRO_ETAPE.py b/Noyau/N_MACRO_ETAPE.py index 4a883f8f..1139b691 100644 --- a/Noyau/N_MACRO_ETAPE.py +++ b/Noyau/N_MACRO_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF N_MACRO_ETAPE Noyau DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MACRO_ETAPE Noyau DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -511,7 +511,20 @@ class MACRO_ETAPE(N_ETAPE.ETAPE): d={} self.g_context = d self.contexte_fichier_init = d - exec code in self.parent.g_context,d + globs=self.parent.get_global_contexte() + exec code in globs,d + + def get_global_contexte(self): + """ + Cette methode retourne le contexte global fourni + par le parent(self) a une etape fille (l'appelant) pour + realiser des evaluations de texte Python (INCLUDE,...) + """ + # Le contexte global est forme par concatenation du contexte + # du parent de self et de celui de l'etape elle meme (self) + d=self.parent.get_global_contexte() + d.update(self.g_context) + return d diff --git a/Noyau/N_MCBLOC.py b/Noyau/N_MCBLOC.py index 0b05c2de..60f3c80d 100644 --- a/Noyau/N_MCBLOC.py +++ b/Noyau/N_MCBLOC.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCBLOC Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MCBLOC Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -103,3 +103,5 @@ class MCBLOC(N_MCCOMPO.MCCOMPO): """ visitor.visitMCBLOC(self) + def makeobjet(self): + return self.definition(val = None, nom = self.nom,parent = self.parent) diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index da0d0b6a..56fa972d 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCCOMPO Noyau DATE 29/05/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MCCOMPO Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -24,7 +24,7 @@ """ import types - +from copy import copy import N_OBJECT class MCCOMPO(N_OBJECT.OBJECT): @@ -313,5 +313,40 @@ class MCCOMPO(N_OBJECT.OBJECT): nom = mc.nom self.jdc.mc_globaux[nom]=mc + def copy(self): + """ Retourne une copie de self """ + objet = self.makeobjet() + # FR : attention !!! avec makeobjet, objet a le meme parent que self + # ce qui n'est pas du tout bon dans le cas d'une copie !!!!!!! + # FR : peut-on passer par là autrement que dans le cas d'une copie ??? + # FR --> je suppose que non + # XXX CCAR : le pb c'est qu'on vérifie ensuite quel parent avait l'objet + # Il me semble preferable de changer le parent a la fin quand la copie est acceptee + objet.valeur = copy(self.valeur) + objet.val = copy(self.val) + objet.mc_liste=[] + for obj in self.mc_liste: + new_obj = obj.copy() + new_obj.reparent(objet) + objet.mc_liste.append(new_obj) + return objet + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.get_jdc_root() + self.etape=parent.etape + for mocle in self.mc_liste: + mocle.reparent(self) + def get_sd_utilisees(self): + """ + Retourne la liste des concepts qui sont utilisés à l'intérieur de self + ( comme valorisation d'un MCS) + """ + l=[] + for child in self.mc_liste: + l.extend(child.get_sd_utilisees()) + return l diff --git a/Noyau/N_MCFACT.py b/Noyau/N_MCFACT.py index 6cc2eca7..d0f68a45 100644 --- a/Noyau/N_MCFACT.py +++ b/Noyau/N_MCFACT.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCFACT Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MCFACT Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -94,3 +94,5 @@ class MCFACT(N_MCCOMPO.MCCOMPO): """ visitor.visitMCFACT(self) + def makeobjet(self): + return self.definition(val = None, nom = self.nom,parent = self.parent) diff --git a/Noyau/N_MCLIST.py b/Noyau/N_MCLIST.py index 88fc4ac1..9b21cdf9 100644 --- a/Noyau/N_MCLIST.py +++ b/Noyau/N_MCLIST.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCLIST Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MCLIST Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -24,6 +24,7 @@ de type ENTITE """ +from copy import copy import UserList class MCList(UserList.UserList): @@ -109,3 +110,37 @@ class MCList(UserList.UserList): """ visitor.visitMCList(self) + def get_sd_utilisees(self): + """ + Retourne la liste des concepts qui sont utilisés à l'intérieur de self + ( comme valorisation d'un MCS) + """ + l=[] + for child in self.data: + l.extend(child.get_sd_utilisees()) + return l + + def copy(self): + """ + Réalise la copie d'une MCList + """ + liste = self.data[0].definition.list_instance() + # FR -->Il faut spécifier un parent pour la méthode init qui attend 2 arguments ... + liste.init(self.nom,self.parent) + for objet in self: + new_obj = objet.copy() + # Pour etre coherent avec le constructeur de mots cles facteurs N_FACT.__call__ + # dans lequel le parent de l'element d'une MCList est le parent de la MCList + new_obj.reparent(self.parent) + liste.append(new_obj) + return liste + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.jdc + self.etape=parent.etape + for mcfact in self.data: + mcfact.reparent(parent) diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index fc940f7d..7df9f9fd 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCSIMP Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_MCSIMP Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -24,6 +24,10 @@ de type ENTITE """ +import types +from copy import copy + +from Noyau.N_ASSD import ASSD,assd import N_OBJECT class MCSIMP(N_OBJECT.OBJECT): @@ -94,3 +98,40 @@ class MCSIMP(N_OBJECT.OBJECT): """ visitor.visitMCSIMP(self) + def copy(self): + """ Retourne une copie de self """ + objet = self.makeobjet() + # il faut copier les listes et les tuples mais pas les autres valeurs + # possibles (réel,SD,...) + if type(self.valeur) in (types.ListType,types.TupleType): + objet.valeur = copy(self.valeur) + else: + objet.valeur = self.valeur + objet.val = objet.valeur + return objet + + def makeobjet(self): + return self.definition(val = None, nom = self.nom,parent = self.parent) + + def reparent(self,parent): + """ + Cette methode sert a reinitialiser la parente de l'objet + """ + self.parent=parent + self.jdc=parent.jdc + self.etape=parent.etape + + def get_sd_utilisees(self): + """ + Retourne une liste qui contient la SD utilisée par self si c'est le cas + ou alors une liste vide + """ + l=[] + if type(self.valeur) == types.InstanceType: + #XXX Est ce différent de isinstance(self.valeur,ASSD) ?? + if issubclass(self.valeur.__class__,ASSD) : l.append(self.valeur) + elif type(self.valeur) in (types.TupleType,types.ListType): + for val in self.valeur : + if type(val) == types.InstanceType: + if issubclass(val.__class__,ASSD) : l.append(val) + return l diff --git a/Noyau/N_OPER.py b/Noyau/N_OPER.py index dd9812e8..5e43776e 100644 --- a/Noyau/N_OPER.py +++ b/Noyau/N_OPER.py @@ -1,4 +1,4 @@ -#@ MODIF N_OPER Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_OPER Noyau DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -85,7 +85,7 @@ class OPER(N_ENTITE.ENTITE): nommage = nommage def __init__(self,nom,op,sd_prod,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,**args): + docu="",regles=(),op_init=None,niveau = None,UIinfo=None,**args): """ Méthode d'initialisation de l'objet OPER. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -112,6 +112,7 @@ class OPER(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,reuse=None,**args): diff --git a/Noyau/N_PROC.py b/Noyau/N_PROC.py index 173070fb..6e1b73fa 100644 --- a/Noyau/N_PROC.py +++ b/Noyau/N_PROC.py @@ -1,4 +1,4 @@ -#@ MODIF N_PROC Noyau DATE 27/03/2002 AUTEUR DURAND C.DURAND +#@ MODIF N_PROC Noyau DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -79,7 +79,7 @@ class PROC(N_ENTITE.ENTITE): label = 'PROC' def __init__(self,nom,op,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,**args): + docu="",regles=(),op_init=None,niveau = None,UIinfo=None,**args): """ Méthode d'initialisation de l'objet PROC. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -105,6 +105,7 @@ class PROC(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,**args): diff --git a/Noyau/properties.py b/Noyau/properties.py index 41ab579d..a3170c0f 100644 --- a/Noyau/properties.py +++ b/Noyau/properties.py @@ -1,4 +1,4 @@ -#@ MODIF properties Accas DATE 29/08/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR +#@ MODIF properties Accas DATE 10/10/2002 AUTEUR gcbhhhh M.ADMINISTRATEUR # CONFIGURATION MANAGEMENT OF EDF VERSION # RESPONSABLE D6BHHHH J-P.LEFEBVRE # ====================================================================== @@ -20,5 +20,5 @@ # IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR # DE LA VERSION DU CODE_ASTER ASSOCIE #---------------------------------------------------------------------- -version = "6.3.14" -date = "29/08/2002" +version = "6.3.20" +date = "10/10/2002" diff --git a/Saturne/prefs.py b/Saturne/prefs.py index ed24d3cf..c14833ec 100644 --- a/Saturne/prefs.py +++ b/Saturne/prefs.py @@ -19,4 +19,7 @@ CODE_PATH = None # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + diff --git a/Syrthes/cata_syrthes.py b/Syrthes/cata_syrthes.py new file mode 100755 index 00000000..43113e96 --- /dev/null +++ b/Syrthes/cata_syrthes.py @@ -0,0 +1,243 @@ +# debut entete +import Accas +from Accas import * +# +JdC = JDC_CATA(code='SYRTHES', + execmodul=None, + niveaux=(NIVEAU(nom='generalites',label='Généralités',valide_vide=0), + NIVEAU(nom='gest_calc',label='Gestion du calcul',valide_vide=0,actif="generalites == 1"), + NIVEAU(nom='gest_sort',label='Gestion des sorties'), + NIVEAU(nom='choix_num',label='Choix numériques',valide_vide=0), + NIVEAU(nom='prop_phys',label='Propriétés physiques',valide_vide=0,actif='choix_num==1'), + NIVEAU(nom='cond_init',label='Conditions initiales',valide_vide=0,actif='prop_phys==1'), + NIVEAU(nom='cond_limi',label='Conditions aux limites',valide_vide=0,actif='cond_init==1'), + NIVEAU(nom='flux_volu',label='Flux volumiques',valide_vide=0,actif='cond_limi==1'), + NIVEAU(nom='soli_mouv',label='Solides en mouvement'), + NIVEAU(nom='couplages',label='Couplages'), + NIVEAU(nom='rayonnement',label='Rayonnement',valide_vide=0,actif='flux_volu==1'), + NIVEAU(nom='cond_lim_ray',label='Conditions limites rayonnement',valide_vide=0,actif='rayonnement==1'), + NIVEAU(nom='in_out_ray',label='Entrées/Sorties rayonnement',valide_vide=0,actif='rayonnement==1'), + NIVEAU(nom='fichiers',label='Fichiers pour le calcul')) + ) + + +GENERALITES = PROC(nom='GENERALITES',op=10, + fr="Définition des principales options du calcul", + niveau='generalites', + TYPE_DE_CALCUL=SIMP(typ='TXM', + statut='o', + into=('Syrthes thermique solide seule','Syrthes couplé'), + defaut='Syrthes thermique solide seule', + position='global_jdc'), + TITRE = SIMP(statut='f',typ='TXM'), + DIMENSION = SIMP(statut='o', + typ='I', + into=(2,3), + defaut=2, + position='global_jdc'), + b_axys = BLOC(condition="TYPE_DE_CALCUL=='Syrthes thermique solide seule'", + AXE_SYMETRIE = SIMP(statut='o', + typ='TXM', + into=('AUCUN','OX','OY'), + defaut='AUCUN'))); + +GESTION_DU_CALCUL = PROC(nom='GESTION_DU_CALCUL',op=10, + fr="Gestion des pas de temps et éventuellement du couplage fluide/solide", + niveau='gest_calc', + CALCUL_SYRTHES_SEUL = BLOC(condition="TYPE_DE_CALCUL == 'Syrthes thermique solide seule'", + PAS_DE_TEMPS_SOLIDE = SIMP(typ='I',statut='o'), + NB_PAS_DE_TEMPS = SIMP(typ='I',statut='o'), + SUITE_DE_CALCUL = SIMP(typ='TXM',statut='o',into=('OUI','NON'),defaut='NON')), + CALCUL_SYRTHES_COUPLE = BLOC(condition="TYPE_DE_CALCUL =='Syrthes couplé'", + CORRESPONDANCE_MAILLAGES_F_S = SIMP(statut='o', + typ='TXM', + into=('calcul','lecture sur fichier','calcul et écriture sur fichier'), + defaut='calcul et écriture sur fichier'), + PAS_DE_TEMPS_SOLIDE = SIMP(typ='TXM', + statut='o', + into=('fixé indépendamment','égal à celui du fluide'), + defaut='égal à celui du fluide'), + CHOIX_FREQUENCE_CALCUL_SOLIDE = SIMP(typ='TXM', + statut='o', + into=('calcul solide à chaque pas de temps', + 'calcul solide tous les n pas de temps fluide', + 'calcul fluide tous les n pas de temps solide'), + defaut='calcul solide à chaque pas de temps'), + frequence_calcul = BLOC(condition="CHOIX_FREQUENCE_CALCUL_SOLIDE != 'calcul solide à chaque pas de temps'", + FREQUENCE = SIMP(statut='o', + typ='I'))) + + ); + +GESTION_DES_SORTIES = PROC(nom="GESTION_DES_SORTIES",op=10, + fr="Gestion des résultats du code", + niveau='gest_sort', + IMPRESSIONS_SOLIDE=SIMP(statut='o',typ='TXM', + into=('aucune','minimales','normales','détaillées'), + defaut='normales'), + RESULTATS_DOMAINE_SOLIDE=FACT(statut='o', + FICHIER_CHRONOLOGIQUE=SIMP(typ='TXM',statut='o', + into=('aucune sortie','tous les n pas de temps'), + defaut='aucune sortie'), + pas_de_temps=BLOC(condition="FICHIER_CHRONOLOGIQUE=='tous les n pas de temps'", + PAS_DE_TEMPS=SIMP(statut='o',typ='I')), + FICHIER_LISTING=SIMP(statut='o',typ='TXM', + into=('aucune sortie',), + defaut='aucune sortie'), + HISTORIQUE_SOLIDE=SIMP(statut='o',typ='TXM', + into=('OUI','NON'), + defaut='NON'), + historique=BLOC(condition="HISTORIQUE_SOLIDE=='OUI'", + NOMBRE_CAPTEURS=SIMP(statut='o',typ='I'), + FREQUENCE_ECRITURE=SIMP(statut='o',typ='I',defaut=1), + LISTE_NOEUDS = FACT(statut='o',max='**', + NOEUDS=SIMP(statut='o',max='**',typ='I'), + COMMENTAIRE=SIMP(statut='o',typ='TXM',defaut=""))), + ), + RESULTATS_DOMAINE_FLUIDE=BLOC(condition="TYPE_DE_CALCUL=='Syrthes couplé'", + ECRITURE_MAILLAGE_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM'), + ECRITURE_RESULTATS_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM'), + ECRITURE_CHRONO_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM')) + ); + +CHOIX_NUMERIQUES=PROC(nom="CHOIX_NUMERIQUES",op=10, + fr="Modification des options du solveur", + niveau='choix_num', + SOLVEUR_SOLIDE = FACT(statut='o', + NOMBRE_ITERATIONS=SIMP(statut='o',typ='I'), + PRECISION=SIMP(statut='o',typ='R')) + ); + +PROPRIETES_PHYSIQUES=PROC(nom="PROPRIETES_PHYSIQUES",op=10, + fr="Définition des propriétés physiques des matériaux", + niveau='prop_phys', + DEFINITION_PAR = SIMP(statut='o',typ='TXM',into=('NOEUD','ELEMENT','NOEUD PAR ELEMENT'), + defaut='ELEMENT'), + ISOTROPIE = SIMP(statut='o', typ='TXM', into=('Matériaux isotropes', + 'Matériaux anisotropes', + 'Matériaux orthotropes'), + defaut='Matériaux isotropes'), + proprietes_des_materiaux_isotropes = BLOC(condition="ISOTROPIE=='Mat\351riaux isotropes'", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_THERMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_orthotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==2", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_orthotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==3", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_anisotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==2", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_anisotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==3", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_X = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Y = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + ); + +CONDITIONS_INITIALES=PROC(nom="CONDITIONS_INITIALES",op=10, + fr="Définition des conditions initiales", + niveau='cond_init', + Temperature_initiale = FACT(statut='o',max='**', + TEMPERATURE = SIMP(typ='R',statut='o',defaut=20), + REFERENCES = SIMP(statut='o',typ='I',max='**',defaut=-1), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ) + ); + + +CONDITIONS_LIMITES = PROC(nom='CONDITIONS_LIMITES',op=10, + niveau='cond_limi', + fr="Définition des conditions aux limites", + NOEUD_OU_FACE = SIMP(statut='o',typ='TXM',into=('NOEUD','FACE'),defaut='FACE'), + FLUX_SURFACIQUE=FACT(max='**', + FLUX=SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + DIRICHLET=FACT(max='**', + TEMPERATURE=SIMP(statut='o',typ='R',defaut=20), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + + COEFFICIENT_ECHANGE=FACT(max='**', + TEMPERATURE=SIMP(statut='o',typ='R',defaut=20), + COEFFICIENT = SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + RESISTANCE_CONTACT=FACT(max='**', + RESISTANCE = SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + ); + diff --git a/Syrthes/editeur.ini b/Syrthes/editeur.ini new file mode 100644 index 00000000..b7ac1321 --- /dev/null +++ b/Syrthes/editeur.ini @@ -0,0 +1,22 @@ +import os + +import prefs + +rep_cata = prefs.REPINI + +# Accès à la documentation +path_doc = os.path.join(rep_cata,'..','Doc') +exec_acrobat = "/usr/bin/acroread" +# Utilisateur/Développeur +isdeveloppeur = "NON" +path_cata_dev = "/tmp/cata" +# Répertoire temporaire +rep_travail = "/tmp" + +# Choix des catalogues +rep_mat="bidon" + +catalogues = ( + ('SYRTHES','v1',os.path.join(rep_cata,'cata_syrthes.py'),'python','defaut'), + ) + diff --git a/Syrthes/eficas_syrthes.py b/Syrthes/eficas_syrthes.py new file mode 100755 index 00000000..70176441 --- /dev/null +++ b/Syrthes/eficas_syrthes.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +""" + Ce module sert à lancer EFICAS configuré pour Syrthes +""" +# Modules Python +import sys + +# Modules Eficas +import prefs +sys.path[:0]=[prefs.INSTALLDIR] + +import Editeur +from Editeur import eficas_go + +if len(sys.argv) > 1 : + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas(code='SYRTHES',fichier = sys.argv[1]) +else: + # on veut ouvrir Eficas 'vide' + eficas_go.lance_eficas(code='SYRTHES') + diff --git a/Syrthes/prefs.py b/Syrthes/prefs.py new file mode 100644 index 00000000..c14833ec --- /dev/null +++ b/Syrthes/prefs.py @@ -0,0 +1,25 @@ +import os + +# REPINI sert à localiser le fichier editeur.ini +# Obligatoire +REPINI=os.path.dirname(os.path.abspath(__file__)) + +# INSTALLDIR sert à localiser l'installation d'Eficas +# Obligatoire +INSTALLDIR=os.path.join(REPINI,'..') + +# CODE_PATH sert à localiser Noyau et Validation éventuellement +# non contenus dans la distribution EFICAS +# Par défaut on utilise les modules de INSTALLDIR +# Peut valoir None (defaut) +CODE_PATH = None +#CODE_PATH = os.path.join(REPINI,'../../Superv') + +# ICONDIR sert à localiser le répertoire contenant les icones +# Par défaut on utilise le répertoire icons dans Editeur +ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') + +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/Tools/__init__.py b/Tools/__init__.py index 0366cee6..c060d833 100644 --- a/Tools/__init__.py +++ b/Tools/__init__.py @@ -1,8 +1,20 @@ -#@ MODIF __init__ Tools DATE 15/02/2001 AUTEUR YESSAYAN A.YESSAYAN # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== __all__=['foztools'] diff --git a/Validation/V_ETAPE.py b/Validation/V_ETAPE.py index 904333d5..0136bb74 100644 --- a/Validation/V_ETAPE.py +++ b/Validation/V_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF V_ETAPE Validation DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_ETAPE Validation DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -61,24 +61,39 @@ class ETAPE(V_MCCOMPO.MCCOMPO): return self.valid else: valid = 1 + # on teste les enfants + for child in self.mc_liste : + if not child.isvalid(): + valid = 0 + break + # on teste les règles de self + text_erreurs,test_regles = self.verif_regles() + if not test_regles : + if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs))) + valid = 0 + if self.reste_val != {}: + if cr == 'oui' : + self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),',')) + valid=0 + if sd == "non": + # Dans ce cas, on ne teste qu'une validité partielle (sans tests sur le concept produit) + # Conséquence : on ne change pas l'état ni l'attribut valid, on retourne simplement + # l'indicateur de validité valid + return valid + # + # On complète les tests avec ceux sur le concept produit + # if hasattr(self,'valid'): old_valid = self.valid else: old_valid = None - # on teste si demandé la structure de donnée (par défaut) - if sd == 'oui': - if self.sd != None :pass - # Ce test parait superflu. Il est sur que si sd existe il s'agit du concept produit - # Quelle pourrait etre la raison qui ferait que sd n existe pas ??? - #if self.jdc.get_sdprod(self.sd.nom) == None : - # if cr == 'oui' : - # self.cr.fatal('Le concept '+self.sd.nom+" n'existe pas") - # valid = 0 - else : - if cr == 'oui' : self.cr.fatal("Concept retourné non défini") - valid = 0 - # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères) - if self.sd != None : + + if self.sd == None: + # Le concept produit n'existe pas => erreur + if cr == 'oui' : self.cr.fatal("Concept retourné non défini") + valid = 0 + else: + # on teste, si elle existe, le nom de la sd (sa longueur doit etre <= 8 caractères) # la SD existe déjà : on regarde son nom if self.sd.nom != None : if len(self.sd.nom) > 8 and self.jdc.definition.code == 'ASTER' : @@ -95,21 +110,7 @@ class ETAPE(V_MCCOMPO.MCCOMPO): if cr == 'oui' : self.cr.fatal("Pas de nom pour le concept retourné") valid = 0 - # on teste les enfants - for child in self.mc_liste : - if not child.isvalid(): - valid = 0 - break - # on teste les règles de self - text_erreurs,test_regles = self.verif_regles() - if not test_regles : - if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs))) - valid = 0 - if self.reste_val != {}: - if cr == 'oui' : - self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),',')) - valid=0 - if sd == 'oui' and valid: + if valid: valid = self.update_sdprod(cr) self.valid = valid self.state = 'unchanged' diff --git a/Validation/V_MACRO_ETAPE.py b/Validation/V_MACRO_ETAPE.py index 878a14da..d2b175ff 100644 --- a/Validation/V_MACRO_ETAPE.py +++ b/Validation/V_MACRO_ETAPE.py @@ -1,4 +1,4 @@ -#@ MODIF V_MACRO_ETAPE Validation DATE 26/06/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_MACRO_ETAPE Validation DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -62,6 +62,24 @@ class MACRO_ETAPE(V_ETAPE.ETAPE): return self.valid else: valid = 1 + # on teste les mots cles de la commande + for child in self.mc_liste : + if not child.isvalid(): + valid = 0 + break + # on teste les règles de la commande + text_erreurs,test_regles = self.verif_regles() + if not test_regles : + if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs))) + valid = 0 + if self.reste_val != {}: + if cr == 'oui' : + self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),',')) + valid=0 + if sd == "non": + # Dans ce cas, on ne calcule qu'une validite partielle, on ne modifie pas l'état de self + # on retourne simplement l'indicateur valid + return valid if hasattr(self,'valid'): old_valid = self.valid else: @@ -84,21 +102,7 @@ class MACRO_ETAPE(V_ETAPE.ETAPE): if cr == 'oui' : self.cr.fatal("Pas de nom pour le concept retourné") valid = 0 - # on teste les enfants - for child in self.mc_liste : - if not child.isvalid(): - valid = 0 - break - # on teste les règles de self - text_erreurs,test_regles = self.verif_regles() - if not test_regles : - if cr == 'oui' : self.cr.fatal(string.join(("Règle(s) non respectée(s) :", text_erreurs))) - valid = 0 - if self.reste_val != {}: - if cr == 'oui' : - self.cr.fatal("Mots cles inconnus :" + string.join(self.reste_val.keys(),',')) - valid=0 - if sd == 'oui' and valid: + if valid: valid = self.update_sdprod(cr) # Si la macro comprend des etapes internes, on teste leur validite for e in self.etapes: diff --git a/Validation/V_MCCOMPO.py b/Validation/V_MCCOMPO.py index 7f9b4eb0..cb7c7529 100644 --- a/Validation/V_MCCOMPO.py +++ b/Validation/V_MCCOMPO.py @@ -1,4 +1,4 @@ -#@ MODIF V_MCCOMPO Validation DATE 29/05/2002 AUTEUR DURAND C.DURAND +#@ MODIF V_MCCOMPO Validation DATE 09/10/2002 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -77,7 +77,8 @@ class MCCOMPO: - testglob = booléen 1 si toutes les règles OK, 0 sinon """ - dictionnaire=self.dict_mc_presents(restreint='oui') + #dictionnaire=self.dict_mc_presents(restreint='oui') + dictionnaire=self.dict_mc_presents(restreint='non') # On verifie les regles avec les defauts affectés texte='' testglob = 1 for r in self.definition.regles: diff --git a/convert/Parserv5/Translate.py b/convert/Parserv5/Translate.py index 66ddd27c..4cab28d5 100644 --- a/convert/Parserv5/Translate.py +++ b/convert/Parserv5/Translate.py @@ -1,3 +1,23 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + #!/bin/env python -d #!/tools/net/app/Python-1.5.2/bin/python1.5 diff --git a/convert/Parserv5/__init__.py b/convert/Parserv5/__init__.py index 96e6d4d3..21ab883a 100644 --- a/convert/Parserv5/__init__.py +++ b/convert/Parserv5/__init__.py @@ -1,3 +1,23 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + try: import mx.TextTools import sys diff --git a/convert/Parserv5/conv.py b/convert/Parserv5/conv.py index 8f9621c2..646aef38 100644 --- a/convert/Parserv5/conv.py +++ b/convert/Parserv5/conv.py @@ -1,17 +1,30 @@ -#@ MODIF conv Parsers DATE 17/10/2001 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== + import sys,string import TextTools from tables import ERRORS # -__version__="$Name: V1_1p1 $" -__Id__="$Id: conv.py,v 1.1.1.1 2001/12/04 15:38:23 eficas Exp $" +__version__="$Name: $" +__Id__="$Id: conv.py,v 1.2 2002/05/15 15:32:00 eficas Exp $" # Keywords=('MAILLE_1','MAILLE_2','MAILLE_ESCL','MAILLE_FOND','MAILLE_MAIT','MAILLE_ORIG','MAILLE', @@ -446,6 +459,8 @@ def format_errs(text,tags): def conver(text): from tables import aster_script import re + # On ajoute un '\n' en fin au cas ou il serait absent + text=text+'\n' text=string.upper(text) result, taglist, next = TextTools.tag(text,aster_script) # Pour vérifier les résultats intermédiaires décommenter la ligne suivante diff --git a/convert/Parserv5/tables.py b/convert/Parserv5/tables.py index 513b0011..b258354d 100644 --- a/convert/Parserv5/tables.py +++ b/convert/Parserv5/tables.py @@ -1,4 +1,23 @@ -#@ MODIF tables Parsers DATE 15/02/2001 AUTEUR YESSAYAN A.YESSAYAN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + """ Ce fichier définit une table de tags à utiliser avec le package mxTextTools pour décoder un fichier au format Asterv5. @@ -10,7 +29,7 @@ from TextTools import * # __version__="$Name: $" -__Id__="$Id: tables.tag,v 1.11.18.1 2001/06/15 17:20:24 iliade Exp $" +__Id__="$Id: tables.tag,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $" # err0='ERR0 , erreur non identifiee : ' @@ -24,9 +43,10 @@ err7='ERR7 , mot cle facteur errone : ' err8='ERR8 , signe = ou ( attendu : ' err9='ERR9 , ( attendue : ' err10='ERR10 , vexpr attendue : ' +err11='ERR11 , ) attendue : ' ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9, - err10) + err10,err11) white_set=set(whitespace) @@ -170,6 +190,16 @@ t_complexe = \ (err7,Table,t_err,MatchFail,MatchOk), )) +# Table pour identifier le keyword PI + +t_PI = \ + ('PI',Table,( + (None,Word,'PI',MatchFail), + (None,IsIn,alpha+'_'+number,MatchOk,+1), + (None,Skip,-1), + (None,Jump,To,MatchFail), + )) + t_vexpr = ( ('par',Is,'(',+5,+1), commespaces + (+1,), @@ -181,7 +211,7 @@ t_vexpr = ( ('sign',IsIn,'+-',+3,+1), commespaces + (+1,), ('vexpr',Table,ThisTable,+19,+10), - ("PI",Word,'PI',+1,+9), + t_PI + (+1,+9), t_ident + (MatchFail,), commespaces + (+1,), ('listpar',Is,'(',+6,+1), # on peut avoir une liste de parametres @@ -307,9 +337,9 @@ t_formule = \ commespaces + (+1,), ('vexpr',Table,t_vexpr,+9), commespaces + (+1,), - (None,Is,')',+8), + (None,Is,')',+9), commespaces + (+1,), - (None,Is,')',+6), + (None,Is,')',+7), commespaces + (+1,), (None,Is,';',+3), (None,AllNotIn,'\n',+1), @@ -318,6 +348,8 @@ t_formule = \ (err0,Table,t_err,MatchFail,MatchOk), # (err9,Table,t_err,MatchFail,MatchOk), + # + (err11,Table,t_err,MatchFail,MatchOk), )) t_nom_ope = \ diff --git a/convert/Parserv5/tables.tag b/convert/Parserv5/tables.tag index 2a28f072..309dd497 100755 --- a/convert/Parserv5/tables.tag +++ b/convert/Parserv5/tables.tag @@ -1,4 +1,23 @@ -#@ MODIF tables Parsers DATE 15/02/2001 AUTEUR YESSAYAN A.YESSAYAN +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== + """ Ce fichier définit une table de tags à utiliser avec le package mxTextTools pour décoder un fichier au format Asterv5. @@ -10,7 +29,7 @@ from TextTools import * # __version__="$Name: $" -__Id__="$Id: tables.tag,v 1.11.18.1 2001/06/15 17:20:24 iliade Exp $" +__Id__="$Id: tables.tag,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $" # err0='ERR0 , erreur non identifiee : ' @@ -24,9 +43,10 @@ err7='ERR7 , mot cle facteur errone : ' err8='ERR8 , signe = ou ( attendu : ' err9='ERR9 , ( attendue : ' err10='ERR10 , vexpr attendue : ' +err11='ERR11 , ) attendue : ' ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9, - err10) + err10,err11) white_set=set(whitespace) @@ -158,6 +178,15 @@ t_complexe is: err7 = Table t_err F:MatchFail T:MatchOk +# Table pour identifier le keyword PI + +t_PI is: + 'PI' = Table is: + Word 'PI' F:MatchFail + IsIn alpha+'_'+number F:MatchOk T:next + Skip back + Jump To MatchFail + t_vexpr = Table is: 'par' = Is '(': commespaces F:next @@ -169,7 +198,7 @@ t_vexpr = Table is: 'sign' = IsIn '+-': commespaces F:next 'vexpr' = Table ThisTable F: T: - "PI" = Word 'PI' F:next T: + t_PI F:next T: t_ident F:MatchFail commespaces F:next 'listpar' = Is '(': # on peut avoir une liste de parametres @@ -287,9 +316,9 @@ t_formule is: commespaces F:next 'vexpr' = Table t_vexpr F: commespaces F:next - Is ')' F: + Is ')' F: commespaces F:next - Is ')' F: + Is ')' F: commespaces F:next Is ';' F: AllNotIn '\n' F:next @@ -298,6 +327,8 @@ t_formule is: err0 = Table t_err F:MatchFail T:MatchOk err9 = Table t_err F:MatchFail T:MatchOk + + err11 = Table t_err F:MatchFail T:MatchOk t_nom_ope is: 'nom_ope' = Table is: diff --git a/convert/__init__.py b/convert/__init__.py index c6d52220..e731b26d 100644 --- a/convert/__init__.py +++ b/convert/__init__.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce package contient tous les convertisseurs de formats d'entrée en objets compréhensibles par EFICAS. diff --git a/convert/convert_asterv5.py b/convert/convert_asterv5.py index 780626d8..e025eec2 100644 --- a/convert/convert_asterv5.py +++ b/convert/convert_asterv5.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin convertisseur de fichier au format asterv5 pour EFICAS. diff --git a/convert/convert_ini.py b/convert/convert_ini.py index aa32a725..811bc6a5 100644 --- a/convert/convert_ini.py +++ b/convert/convert_ini.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin convertisseur de fichier au format ini pour EFICAS. diff --git a/convert/convert_pyth.py b/convert/convert_pyth.py index 30f3b28a..b408ff21 100644 --- a/convert/convert_pyth.py +++ b/convert/convert_pyth.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin convertisseur de fichier au format python pour EFICAS. diff --git a/convert/convert_python.py b/convert/convert_python.py index a5a69cb2..cfe54a6a 100644 --- a/convert/convert_python.py +++ b/convert/convert_python.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin convertisseur de fichier au format python pour EFICAS. diff --git a/convert/parseur_python.py b/convert/parseur_python.py index b999b6ba..b5a45897 100644 --- a/convert/parseur_python.py +++ b/convert/parseur_python.py @@ -1,9 +1,21 @@ -#@ MODIF parseur_python Parsers DATE 05/09/2001 AUTEUR DURAND C.DURAND # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== -# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG -# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND -# REDISTRIBUTION OF THIS FILE. +# COPYRIGHT (C) 1991 - 2002 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. +# +# # ====================================================================== import sys,string,re diff --git a/generator/Formatage.py b/generator/Formatage.py index d54d464c..aaa531a5 100644 --- a/generator/Formatage.py +++ b/generator/Formatage.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient la classe Formatage qui permet le formatage d'une liste de chaines de caractères dans une syntaxe représentative d'un diff --git a/generator/__init__.py b/generator/__init__.py index 89d4cb40..39110152 100644 --- a/generator/__init__.py +++ b/generator/__init__.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce package contient tous les générateurs de formats de sortie à partir des objets d' EFICAS. diff --git a/generator/generator_aplat.py b/generator/generator_aplat.py index c12b6dac..25c3265f 100644 --- a/generator/generator_aplat.py +++ b/generator/generator_aplat.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin generateur de fichier au format aplat pour EFICAS. @@ -268,7 +287,7 @@ class AplatGenerator: text = '' init = self.init + self.sep + obj.nom old_init=self.init - for data in self.data : + for data in obj.data : i=i+1 self.init = init + self.sep + "occurrence n°"+`i` text = text + self.generator(data) @@ -283,7 +302,7 @@ class AplatGenerator: if type(obj.valeur) in (types.TupleType,types.ListType) : # On est en présence d'une liste de valeur rep = '(' - for val in self.valeur: + for val in obj.valeur: if type(val) == types.InstanceType : rep = rep + self.generator(val) +',' else: diff --git a/generator/generator_asterv5.py b/generator/generator_asterv5.py index fa3b9499..08c178af 100644 --- a/generator/generator_asterv5.py +++ b/generator/generator_asterv5.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin generateur de fichier au format asterv5 pour EFICAS. @@ -347,7 +366,8 @@ class AsterGenerator: elif self.wait_geom(obj): s = s + val elif type(val) == types.FloatType : - s = s + self.repr_float(val) + #s = s + self.repr_float(val) + s = s + str(val) else : s = s + `val` s = s + ')' @@ -364,7 +384,8 @@ class AsterGenerator: elif self.wait_geom(obj): s = obj.valeur elif type(obj.valeur) == types.FloatType : - s = self.repr_float(obj.valeur) + #s = self.repr_float(obj.valeur) + s = str(obj.valeur) else : s = `obj.valeur` s=obj.nom+':'+s+' ' diff --git a/generator/generator_ini.py b/generator/generator_ini.py index 64b5bfd8..2e2ac93b 100644 --- a/generator/generator_ini.py +++ b/generator/generator_ini.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin generateur de fichier au format ini pour EFICAS. diff --git a/generator/generator_pyth.py b/generator/generator_pyth.py index 6d911224..34fa5cf7 100644 --- a/generator/generator_pyth.py +++ b/generator/generator_pyth.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin generateur de fichier au format pyth pour EFICAS. diff --git a/generator/generator_python.py b/generator/generator_python.py index 6220c818..fe631f22 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -1,3 +1,22 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== """ Ce module contient le plugin generateur de fichier au format python pour EFICAS. @@ -393,7 +412,7 @@ class PythonGenerator: for arg in liste : l.append(arg) else: - # on a est en présence d'un MCSIMP : on récupère une string + # on est en présence d'un MCSIMP : on récupère une string text =self.generator(v) l.append(v.nom+'='+text) # il faut être plus subtil dans l'ajout de la virgule en différenciant @@ -453,6 +472,8 @@ class PythonGenerator: if hasattr(obj.etape,'sdprods'): if val in obj.etape.sdprods : s = s + "CO('"+ self.generator(val) +"')" + elif val.__class__.__name__ == 'CO': + s = s + "CO('"+ self.generator(val) +"')" else: s = s + self.generator(val) elif isinstance(val,PARAMETRE): @@ -461,6 +482,10 @@ class PythonGenerator: s = s + val.nom else: s = s + self.generator(val) + elif type(val) == types.FloatType : + # Pour un flottant on utilise str qui a une precision de + # "seulement" 12 chiffres : evite les flottants du genre 0.599999999999998 + s = s + str(val) else : s = s + `val` s = s + ',' @@ -472,6 +497,8 @@ class PythonGenerator: if hasattr(obj.etape,'sdprods'): if val in obj.etape.sdprods : s = "CO('"+ self.generator(val) +"')" + elif val.__class__.__name__ == 'CO': + s = "CO('"+ self.generator(val) +"')" else: s = self.generator(val) elif isinstance(val,PARAMETRE): @@ -481,9 +508,8 @@ class PythonGenerator: else: s = self.generator(val) elif type(val) == types.FloatType : - # Pour un réel on fait un formattage spécial - # XXX bizarrement ce n'est pas fait pour une liste - s = repr_float(val) + #s = repr_float(val) + s = str(val) else : s = `val` s= s + ',' diff --git a/insercopyright.py b/insercopyright.py new file mode 100644 index 00000000..bf6539f1 --- /dev/null +++ b/insercopyright.py @@ -0,0 +1,38 @@ +import glob,os + +copyright="""# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 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. +# +# +# ====================================================================== +""" + +listfich=glob.glob('*') +for fich in listfich: + if not os.path.isfile(fich):continue + print "Lecture ",fich + f=open(fich,'r') + text=f.read() + f.close() + os.rename(fich,fich+'.bak') + + text=copyright + text + + f2=open(fich,'w') + f2.write(text) + f2.close() + -- 2.39.2