--- /dev/null
+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
--- /dev/null
+"""
+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("<Button-1>",lambda e,s=self,o=item : s.update_objet(o))
+ l.bind("<Enter>",lambda e,s=self,o=l : s.select_label(o))
+ l.bind("<Leave>",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()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null
+"""
+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)
+
+
+
--- /dev/null
+"""
+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),
+ )
+ ),
+ ),
+ )
--- /dev/null
+# 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
+# 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
+# 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
+# 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)
+
+# 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
+# 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
# 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)
+# 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):
+# 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
+# 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
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)
+
+# 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
+# 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
+# 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)
+# 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
+# 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)
+
+# 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
+# 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
+# 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
+# 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
+# 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
+# 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
+# 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
+# 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)
+# 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
+# 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
+# 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)
+
+# 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
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)
+# 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)
+
+# 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
+# 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
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
--- /dev/null
+#@ 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<ITER_MAXI)): #boucle principale de l'algo
+ iter = iter +1
+ testbornes = 0 #variable pour tester si les paramatres sont dans les bornes
+ while(testbornes == 0 ) : #boucle secondaire pour avoir des valeurs bornees
+ d = Levenberg(val,A,erreur,l) # Résolution,d est adimensionné
+ d = Dim.redim(d)
+ testbornes,l = test_bornes(l,val,d,borne_inf,borne_sup)
+ #actualisation
+ new_val = copy.copy(val + d)
+ L_F = calcul_F(self,UNITE_ESCL,para,new_val,RESU_CALC)
+ new_L_J,new_erreur = Simul.multi_interpole(L_F, RESU_CALC)
+ new_J = Simul.norme_J(L_J_init,new_L_J,UNITE_RESU)
+ l = actualise_lambda(l,new_J,J)
+ val = copy.copy(new_val)
+ erreur = copy.copy(new_erreur)
+ J = new_J
+ A = Simul.sensibilite(self,UNITE_ESCL,L_F,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
+ A = Dim.adim_sensi(A)
+ residu = test_convergence(gradient_init,erreur,A)
+ Mess.affiche_result_iter(iter,J,val,residu,UNITE_RESU)
+ if GRAPHIQUE:
+ GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
+ interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
+ graphique(L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+ Mess.affiche_etat_final_convergence(iter,ITER_MAXI,RESI_GLOB_RELA,residu,UNITE_RESU)
+ calcul_etat_final(A,iter,ITER_MAXI,RESI_GLOB_RELA,residu,Mess,UNITE_RESU)
+ # creations de la liste de reels contenant les valeurs des parametres a convergence
+ lival=[]
+ for i in range(len(val)):
+ lival.append(val[i])
+ nomres=DEFI_LIST_REEL(VALE=lival)
+ return
-#@ MODIF macro_mode_meca_ops Macro DATE 11/06/2002 AUTEUR DURAND C.DURAND
+#@ MODIF macro_mode_meca_ops Macro DATE 11/09/2002 AUTEUR VABHHTS J.PELLET
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
else:
motscfa['FREQ']=(lborne[i],lborne[i+1])
- if METHODE=='TRI_DIAG':
- motscfa['NMAX_ITER_ORTHO'] =CALC_FREQ['NMAX_ITER_ORTHO']
- motscfa['PREC_ORTHO'] =CALC_FREQ['PREC_ORTHO']
- motscfa['PREC_LANCZOS'] =CALC_FREQ['PREC_LANCZOS']
- motscfa['NMAX_ITER_QR'] =CALC_FREQ['NMAX_ITER_QR']
- elif METHODE=='JACOBI':
- motscfa['NMAX_ITER_BATHE'] =CALC_FREQ['NMAX_ITER_BATHE']
- motscfa['PREC_BATHE'] =CALC_FREQ['PREC_BATHE']
- motscfa['NMAX_ITER_JACOBI']=CALC_FREQ['NMAX_ITER_JACOBI']
- motscfa['PREC_JACOBI'] =CALC_FREQ['PREC_JACOBI']
- elif METHODE=='SORENSEN':
- motscfa['NMAX_ITER_SOREN'] =CALC_FREQ['NMAX_ITER_SOREN']
- motscfa['PARA_ORTHO_SOREN']=CALC_FREQ['PARA_ORTHO_SOREN']
- motscfa['PREC_SOREN'] =CALC_FREQ['PREC_SOREN']
motscit['CALC_FREQ']=_F(OPTION ='BANDE',
SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'],
NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'],
STURM =VERI_MODE['STURM'],
PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
+
+ if METHODE=='TRI_DIAG':
+ if args.has_key('NMAX_ITER_ORTHO'):
+ motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
+ if args.has_key('PREC_ORTHO'):
+ motscit['PREC_ORTHO'] =args['PREC_ORTHO']
+ if args.has_key('PREC_LANCZOS'):
+ motscit['PREC_LANCZOS'] =args['PREC_LANCZOS']
+ if args.has_key('MAX_ITER_QR'):
+ motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR']
+ elif METHODE=='JACOBI':
+ if args.has_key('NMAX_ITER_BATHE'):
+ motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
+ if args.has_key('PREC_BATHE'):
+ motscit['PREC_BATHE'] =args['PREC_BATHE']
+ if args.has_key('NMAX_ITER_JACOBI'):
+ motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
+ if args.has_key('PREC_JACOBI'):
+ motscit['PREC_JACOBI'] =args['PREC_JACOBI']
+ elif METHODE=='SORENSEN':
+ if args.has_key('NMAX_ITER_SOREN'):
+ motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
+ if args.has_key('PARA_ORTHO_SOREN'):
+ motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
+ if args.has_key('PREC_SOREN'):
+ motscit['PREC_SOREN'] =args['PREC_SOREN']
+
__nomre0=MODE_ITER_SIMULT(MATR_A =MATR_A,
MATR_B =MATR_B,
INFO =INFO,
--- /dev/null
+#@ MODIF reca_algo 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 Numeric
+import copy
+import LinearAlgebra
+
+
+
+def calcul_gradient(A,erreur):
+ grad = Numeric.dot(Numeric.transpose(A),erreur)
+ return grad
+
+
+#-------------------------------------------
+#classe gérant l'adimensionnement et le dimensionnemnt
+class Dimension:
+ #le constructeur calcul la matrice D et son inverse
+ def __init__(self,val_initiales,para):
+ self.val_init = val_initiales
+ dim =len(self.val_init)
+ self.D = Numeric.zeros((dim,dim),Numeric.Float)
+ for i in range(dim):
+ self.D[i][i] = self.val_init[i]
+ self.inv_D=LinearAlgebra.inverse(self.D)
+
+
+ def adim_sensi(self,A):
+ for i in range(A.shape[0]):
+ for j in range(A.shape[1]):
+ A[i,j] = A[i,j] * self.val_init[j]
+ return A
+
+
+
+ def redim_sensi(self,A):
+ for i in range(A.shape[0]):
+ for j in range(A.shape[1]):
+ A[i,j] = A[i,j] / self.val_init[j]
+ return A
+
+
+ def adim(self,tab):
+ tab_adim = Numeric.dot(self.inv_D,copy.copy(tab))
+ return tab_adim
+
+
+ def redim(self,tab_adim):
+ tab = Numeric.dot(self.D,tab_adim)
+ return tab
+
+#------------------------------------------
+def cond(matrix):
+ e=LinearAlgebra.eigenvalues(matrix)
+ size=len(e)
+ e=Numeric.sort(e)
+ try:
+ condi=e[size-1]/e[0]
+ except ZeroDivisionError:
+ condi=0.0
+ return condi
+
+#-----------------------------------------
+def norm(matrix):
+ e=LinearAlgebra.eigenvalues(matrix)
+ size=len(e)
+ e=Numeric.sort(e)
+ norm=e[size-1]
+ return norm
+
+#-----------------------------------------
+def lambda_init(matrix):
+# Routine qui calcule la valeur initial du parametre
+# de regularisation l. On le choisit tel que
+# l = alpha*[plus grande valeur propre de AtA]
+# ou alpha = 1.e-3 si AtA est singuliere et 1.e-16 sinon
+ condi=cond(matrix)
+ id=Numeric.identity(matrix.shape[0])
+ if (condi==0.0):
+ l=1.e-3*norm(matrix)
+ else:
+ l=1.e-16*norm(matrix)
+ return l
+
+#-----------------------------------------
+
+def Levenberg(val,A,erreur,l):
+ #on resoud un systeme lineaire afin que l'on puisse réactualiser les valeurs des parametres
+ dim_val = len(val)
+ id = Numeric.identity(dim_val)
+ delta = LinearAlgebra.solve_linear_equations(Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id ,-1*Numeric.matrixmultiply(Numeric.transpose(A),erreur))
+ return delta
+
+def test_bornes(l,val,d,borne_inf,borne_sup):
+ test=1
+ for i in range(len(val)):
+ if((val[i] + d[i] < borne_inf[i]) or (val[i] + d[i] > borne_sup[i])):
+ test = 0
+ if (test == 0):
+ l= l*2
+ return test,l
+
+def actualise_lambda(l,new_J,J):
+ if (new_J<J):
+ l = l/10.
+ else:
+ l = l*10.
+ return l
+
+
+def test_convergence(gradient_init,erreur,A):
+ gradient = calcul_gradient(A,erreur)
+ epsilon = Numeric.dot(gradient,gradient)/Numeric.dot(gradient_init,gradient_init)
+ epsilon = epsilon**0.5
+ return epsilon
+
+
+#fonction appellée quand la convergence est atteinte
+#on calcule le Hessien et les valeurs propres et vecteurs propre associés à l'inverse du Hessien
+# a est la sensibilite
+#le hessien=At*A
+def calcul_etat_final(A,iter,max_iter,prec,residu,Messg,ul_out):
+ if ((iter < max_iter) or (residu < prec)):
+ Hessien = Numeric.matrixmultiply(Numeric.transpose(A),A)
+ valeurs_propres,vecteurs_propres = LinearAlgebra.eigenvectors(Hessien)
+ Messg.affiche_calcul_etat_final(Hessien,valeurs_propres,vecteurs_propres,ul_out)
--- /dev/null
+#@ MODIF reca_interp 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
+import Numeric
+import Macro
+from Macro.recal import *
+
+#===========================================================================================
+# INTERPOLATION, CALCUL DE SENSIBILITE, ETC....
+
+#--------------------------------------
+class Sim_exp :
+
+ def __init__ (self,result_exp) :
+ self.resu_exp = result_exp
+
+# Distance verticale d'un point M à une ligne brisée composée de n points
+
+ def DistVertAdimPointLigneBrisee (self, M, points) :
+ # M = Point (2 colonnes, 1 ligne)
+ # points = Tableau de n points (2 colonnes, n lignes)
+ # on suppose qu'il existe au moins 2 points,
+ # et que les points sont classés selon les abscisses croissantes
+ n = len(points)
+ if ( M[0] < points[0][0] ) or ( M[0] > 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
+
+
+
--- /dev/null
+#@ 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(' <INFO> 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))
+
+
+
--- /dev/null
+#@ 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_inf<val_sup
+# val_init appartient à [val_inf, val_sup]
+# val_init!=0
+ #verification des bornes
+ txt=""
+ for i in range(len(PARAMETRES)):
+ if( PARAMETRES[i][2] >PARAMETRES[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
+
+
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
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='**'),
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='**'),
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='**'),
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='**'),
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='**'),
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='**'),
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'),
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'),
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='**'),
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')),
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='**'),
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='**'),
) ;
-#& 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
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='**'),
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",) ),
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",) ),
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='**'),
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
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",) ),
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",) ),
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='**'),
),
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
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",) ),
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",) ),
),
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
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",
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',
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',),
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",
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'),
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='**',
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='**'),
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
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",) ),
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',),
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='**'),
),
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
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'),
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'),
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'),),
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'),
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'),),
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'),),
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'),
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'),
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'),),
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'),),
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'),
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
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
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",) ),
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'),
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'),
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'),),
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'),
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'),),
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
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'),
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'),
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'),),
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'),
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'),),
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'),
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
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='**'),
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
# ======================================================================
# 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='**'),
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",
"2D_FLUIDE",
"3D",
"3D_ABSO",
- "3D_CONTACT",
"3D_FAISCEAU",
"3D_FLUI_ABSO",
"3D_FLUIDE",
"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",
),
) ;
-#& 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
# 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",
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
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
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
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
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
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
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')
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
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),
- 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),
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
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
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",
),
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
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),
"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,
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
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",) ),
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",
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
# ======================================================================
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 ),
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
# ======================================================================
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"),
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
# ======================================================================
# 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
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")
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) )
),
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 ),
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
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'),
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
# ======================================================================
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' ),
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,) ),
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,) ),
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),
),
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'),
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
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),
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,) ),
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,) ),
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'),
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 ),
),
),
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
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' ),
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
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'),),
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
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",
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
# 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,) ),
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
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,
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
# 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'),
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'),
),
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='**'),
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
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") ),
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
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',
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") ),
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
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' ),
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
# 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
# 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
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
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 ),
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' ),),
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",) ),
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",)),
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='**'),
"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
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
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='**'),
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",) ),
),
# 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
# ======================================================================
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",) ),
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='**'),
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",) ),
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='**'),
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" ),
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
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",),
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' ),
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",) ),
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='**'),
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"),
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
# 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,
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'),
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
# ======================================================================
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 ),
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,) ),
),
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
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 ),
),
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
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
# 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
# ======================================================================
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 ),
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
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'),
# 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),
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),
),
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
# 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'), ),
),
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
# ======================================================================
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),
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
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",
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
# 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'),
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'),),
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='**'),
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='**'),
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
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),
),
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'),
),
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") ),
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") ),
),
),
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
# ======================================================================
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 ),
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
# ======================================================================
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'),),
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
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,),
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
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'),
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
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") ),
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" ),
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'),),
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
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'),
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'),
),
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),
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'),
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'),
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 ),
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'),
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),
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'),
),
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
# ======================================================================
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
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") ),
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
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",
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
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
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 ),
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 ),
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 ),
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' ),
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' ),
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 ),
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',
),
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
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'),
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'),
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),
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
# ======================================================================
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='**' ),
),
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
# 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 ),
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),
),
) ;
-#& 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
# 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
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='**'),
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
# 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
# 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
# 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
# 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'),),
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
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' ),
),
),
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 ) ),
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") ),
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
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'),
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 ) ),
# 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
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 ),
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 ),
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'),
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 ),
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' ),
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
# ======================================================================
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),
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='**'),
"VISC_TAHERI",
"CHABOCHE",
"VISCOCHAB",
- "VMIS_CIN1_CHAB",
- "VMIS_CIN2_CHAB",
+ "VISC_CIN1_CHAB",
+ "VISC_CIN2_CHAB",
"POLY_CFC",
"LMARC",
"ROUSSELIER",
"KIT_HM",
"KIT_HHM",
"KIT_THH",
+ "KIT_THV",
"KIT_THM",
"KIT_THHM",
"VMIS_ASYM_LINE",
"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,)),
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",
"LIQU_SATU_GAT",
"LIQU_GAZ_ATM",
"LIQU_VAPE_GAZ",
+ "LIQU_VAPE",
"LIQU_NSAT_GAT",
"LIQU_GAZ",
# THER
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,)),
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
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
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",
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 ),
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' ),
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' ),
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 ),
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'),),
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'),),
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'),
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' ),
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
# ======================================================================
# 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",) ),
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
# 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
# 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
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") ),
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 ),
),
),
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
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 ) ),
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
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',
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
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 ),
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
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,
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
# 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
# ======================================================================
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 ",
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
# ======================================================================
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
# ======================================================================
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
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
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
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),
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
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
# 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' ),
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='**'),
),
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
# ======================================================================
# 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"),
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
# 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") ),
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", ),
),
),
) ;
-#& 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
# ======================================================================
# 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.",
#
#
# 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 :
#
#
# 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.",
#
),
#
) ;
-#& 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
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',
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
# 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",
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
# ======================================================================
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",
),
) ;
-#& 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
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") ),
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") ),
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
# ======================================================================
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",
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
# 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") ),
),
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
# ======================================================================
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"),
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
# ======================================================================
# 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", ),
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
# 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
# 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' ),
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
# ======================================================================
# 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) ),
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),
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'),
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='**'),
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
# ======================================================================
# 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),
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
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
#
#
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
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",
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
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',
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
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 ),
#
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
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
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",)),
),
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
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",
),
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')",
),
),
) ;
-#& 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
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),
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
#
# 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"),
#
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
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"
) ),
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 ),
),
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
# 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'),),
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
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',
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),
),
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
# 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")),
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
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 ),
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
# 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'),),
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
# ======================================================================
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")),
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)),
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
# ======================================================================
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),
),
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
#
# 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"),
#
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
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",
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
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)),
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
# ======================================================================
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),
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
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),
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
# 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'),
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'),
),
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
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'),
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
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),
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
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",)),
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
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,
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") ),
),
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
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),
),
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
# 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
# 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),
),
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
# ======================================================================
# 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.",
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
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 ),
),
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
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 ),
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
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" ),
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 ),
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 ),
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
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",) ,),
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",), ),
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),
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
# ======================================================================
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 ),
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'",
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' ),
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='**'),
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
# ======================================================================
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'),),
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
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,
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 ),
),
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
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,...",
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"),
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
# ======================================================================
# 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,
),
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
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",
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
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' ),
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' ),
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' ),
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
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. ),
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' ),
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
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',
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
# 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'),
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
# 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")),
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
# ======================================================================
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
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'),),
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
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'),
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 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,
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'),),
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" ),
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
# ======================================================================
# 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'),
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
# ======================================================================
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'),
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
# 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'),
),
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")),
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'),
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' ),
),
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",
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
# 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",)),
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
# ======================================================================
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"),
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
# 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
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
# ======================================================================
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
# 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
# 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
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
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",
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",) ),
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
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 ),
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
# 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
# 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'),),
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
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 ),
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
# ======================================================================
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) ),
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
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,
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' ),
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
# 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' ),
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
# 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
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 ) ),
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
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,
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
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'),
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",) ),
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
# ======================================================================
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='**' ),
),
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
# 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
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),
"KIT_HM",
"KIT_HHM",
"KIT_THH",
+ "KIT_THV",
"KIT_THM",
"KIT_THHM",
"VMIS_ASYM_LINE",
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,)),
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,)),
"LIQU_SATU_GAT",
"LIQU_GAZ_ATM",
"LIQU_VAPE_GAZ",
+ "LIQU_VAPE",
"LIQU_NSAT_GAT",
"LIQU_GAZ",
# THER
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,)),
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
# 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 ),
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' ),
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 ),
),
),
) ;
-#& 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
# ======================================================================
#
# ======================================================================
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'),
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'),
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'),
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' ),
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
# 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
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
# 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),
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
# 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) ),
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
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 ),
-#@ 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
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
--- /dev/null
+
+
+1- Installation standard
+
+Pour installer EFICAS a partir de la distribution : <nom_distrib>.tgz
+faire :
+ tar xzvf <nom_distrib>.tgz
+
+ce qui a pour effet de créer un répertoire de nom <nom_distrib>.
+
+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
+
+
--- /dev/null
+ ======================================================================
+ 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)
+ ======================================================================
--- /dev/null
+
+Pour installer EFICAS voir dans le fichier INSTALL
--- /dev/null
+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
--- /dev/null
+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()
--- /dev/null
+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()
--- /dev/null
+# 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()
--- /dev/null
+
+
+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();
--- /dev/null
+
+
+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();
--- /dev/null
+
+
+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,
+ );
+
--- /dev/null
+ 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
--- /dev/null
+"""
+ 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()
+
+# 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
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'),
)
#!/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
"""
+# 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
# 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'),
+ ]
+ ),
+ ]
+ }
+
--- /dev/null
+#@ 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"
--- /dev/null
+"""
+ 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()
+
--- /dev/null
+# 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),
+ );
+
+
+
+
--- /dev/null
+# 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")\r
+ ) ; # 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",\r
+ 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\9cur 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\9cur 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
--- /dev/null
+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'),
+ )
+
--- /dev/null
+#!/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')
+
--- /dev/null
+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'
+
+
--- /dev/null
+version = "6.3.20"
+date = "10/10/2002"
-#@ 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
+# 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
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 """
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 :
+# 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.
+#
+#
+# ======================================================================
-#@ 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
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']
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__
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 """
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__" :
+# 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
"""
# Modules Python
import sys
+import types
import Pmw
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) :
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)
self.format_fichier = Tkinter.StringVar()
self.message=''
self.cree_composants_graphiques()
- self.load_extensions()
+ self.load_appli_composants()
self.affiche_FAQ()
splash.fini_splash()
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
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')
"""
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):
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)
--- /dev/null
+# 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()
+# 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
+# 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
"""
# 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
('Mots-clés inconnus','mc_inconnus'),
]
),
+ ('Aide',[
+ ('Aide EFICAS','aideEFICAS'),
+ ]
+ ),
]
button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
('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
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
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()
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",
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 :
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`)
"""
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):
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)
-#@ 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
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
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()
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],
-#@ 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
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
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)
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)
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():
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)
+# 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
-#@ 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
-#@ 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
-#@ 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
-#@ 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
-#@ 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
-#@ 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):
-#@ 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
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):
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')
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:
# 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)
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()
-#@ 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
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
-#@ 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 *
-#@ 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
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()
-#@ 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
choix = self.listbox.getcurselection()[0]
self.valeur_choisie.set(choix)
except:
- pass
+ traceback.print_exc()
+
def choose_valeur_from_list(self,command):
try:
self.valeur_choisie.set(choix)
apply(command,(),{})
except:
- pass
+ traceback.print_exc()
class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
panel = OPERPanel
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()
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
-#@ 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
-#@ 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
-#@ 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
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')
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()
-#@ 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
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:
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
# ----------------------------------------------------------------------------------------
def deselectChoix(self,name):
self.selectChoix = None
+ def raisecmd(self,page):
+ try:
+ self.entry.focus()
+ except:
+ pass
+
class SHELLPanel(newSIMPPanel):
"""
Classe Panel utilisé pour les mots-clés simples qui attendent un shell pour valeur
self.record_valeur(valeur)
if self.node.item.isvalid():
self.node.parent.select()
- # fermeture de la fenêtre de sélection\r
- if self.ajout_valeurs:\r
- self.ajout_valeurs.quit()\r
+ # 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\r
- if self.ajout_valeurs:\r
- self.ajout_valeurs.quit()\r
+ # fermeture de la fenêtre de sélection
+ if self.ajout_valeurs:
+ self.ajout_valeurs.quit()
def traite_reel(self,valeur):
"""
"""
Génère la page de saisie de plusieurs valeurs parmi un ensemble discret
de possibles
- """\r
+ """
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
# 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)\r
- # Création d'un bouton "Importer ..." sur le panel.\r
- bouton_valeurs_fichier = Button(self.frame_choix,\r
- text="Importer ...",\r
- command=self.select_in_file)\r
- bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6)\r
+ 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,
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
command = self.annule_modifs_valeur)
for but in (bouton_accepter,bouton_annuler):
but.pack(side='left',padx=5)
-\r
- def select_in_file(self):\r
- """ Permet d'ouvrir un fichier choisi par l'utilisateur. """\r
- nom_fichier = askopenfilename(title="Choix fichier :")\r
- if nom_fichier == "":\r
- return\r
- try:\r
- f = open(nom_fichier, "rb")\r
- selection_texte = f.read()\r
- f.close()\r
- self.ajout_valeurs = FenetreDeSelection(self, self.node.item,\r
- titre="Sélection de valeurs",\r
- texte=selection_texte)\r
- except:\r
- showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier)\r
+
+ 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):
"""
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):
"""
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 :')
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()
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':
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)
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):
self.entry.bind("<Return>",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()
if valeur == None : return # pas de valeur à afficher ...
self.entry.delete(0,END)
self.entry.insert(0,valeur)
+ self.entry.focus()
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):
else:
# on attend un entier, un réel ou une string
self.panel = UNIQUE_BASE_Panel
-
def SetText(self, text):
try:
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):
"""
def GetMinMax(self):
""" Retourne les valeurs min et max de la définition de object """
return self.object.get_min_max()
-\r
- def GetMultiplicite(self):\r
- """ A préciser.\r
- Retourne la multiplicité des valeurs affectées à l'objet\r
- représenté par l'item. Pour le moment retourne invariablement 1.\r
- """\r
- return 1\r
-\r
- def GetType(self):\r
- """ Retourne le type de valeur attendu par l'objet représenté par l'item.\r
- """\r
- return self.object.get_type()\r
-\r
- def GetIntervalle(self):\r
- """ Retourne le domaine de valeur attendu par l'objet représenté par l'item.\r
- """\r
- return self.object.getintervalle()\r
-\r
- def IsInIntervalle(self,valeur):\r
- """ Retourne 1 si la valeur est dans l'intervalle permis par\r
- l'objet représenté par l'item.\r
- """\r
- return self.object.isinintervalle(valeur)\r
+
+ 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 """
- 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
+# 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
"""
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")
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)
(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))
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):
"""
-#@ 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
+# 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
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)
+# 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
+# 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
+# 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
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,
"""
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("<Button-1>",lambda event,en=e,m=mc,s=self : s.select_mc(m,en))
- e.bind("<Return>",lambda e,s=self : s.modifie_mc())
+ #e.bind("<Button-1>",lambda event,en=e,m=mc,s=self : s.select_mc(m,en))
+ #e.bind("<Return>",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):
"""
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):
"""
"""
txt = ''
for o in l_o :
- print o
txt = txt + o.nom+'/'
# on enlève le dernier slash en trop
txt = txt[0:-1]
"""
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()
+# 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')
+# 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
+# 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
+# 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
self.jdc=jdc
self.nom_jdc=nom_jdc
self.fichier=None
+ self.panel_courant=None
if not appli:
class Appli:
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)
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):
"""
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)
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 !")
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 !")
+# 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
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={}
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)
-
-
-
+# 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
# 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=[]
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
-#@ 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
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
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 """
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):
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):
"""
self._any.focus()
except:
pass
+ elif page == 'Commande':
+ try:
+ self.command_entry.component('entry').focus()
+ except:
+ pass
+
def affiche(self):
page=self.nb.getcurselection()
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 = (("<Enter>",self.selectCmd),
("<Leave>",self.deselectCmd),
("<Double-Button-1>",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()
+ self.command_entry=Liste.entry
# aide associée au panneau
bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes"""
Liste.MCbox.bind("<Button-3>", lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
"""
Crée la page correspondant à un objet de type JDC
"""
- liste_cmd = self.get_liste_cmd()
liste_commandes = (("<Enter>",self.selectCmd),
("<Leave>",self.deselectCmd),
("<Double-Button-1>",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"""
command = self.comment_commande).place(relx=0.5,rely=0.5,anchor='center')
def deselectMC(self,name):
- #EFICAS.affiche_infos('')
self.parent.appli.affiche_infos('')
def get_liste_cmd_old(self):
return listeCmd
def deselectCmd(self,name):
- #EFICAS.affiche_infos('')
self.parent.appli.affiche_infos('')
def execConcept(self):
# Pourquoi node.etape ???
#test,mess = self.node.etape.item.nomme_sd(nom)
test,mess = self.node.item.nomme_sd(nom)
- #EFICAS.affiche_infos(mess)
self.parent.appli.affiche_infos(mess)
self.node.racine.update()
Cette méthode a pour but de commentariser la commande pointée par self.node
"""
commande_comment = self.node.item.get_objet_commentarise()
- #XXX il faudrait ici aussi eviter l'appel à EFICAS
self.parent.appli.bureau.JDCDisplay_courant.ReplaceObjectNode(self.node,commande_comment,None)
- #EFICAS.JDCDisplay_courant.ReplaceObjectNode(self.node,commande_comment,None)
class Panel_Inactif(Panel):
"""
+# 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
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:
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):
"""
# 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')
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,)
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 :
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 :
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)
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
+# 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
+# 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
+# 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
b.bind("<Enter>",lambda e,s=self,but=b,t=texte : s.affiche_balloon(e,but,t,pos='right'))
b.bind("<Leave>", self.efface_balloon)
- #self.creer_boutons()
-
- def creer_boutons(self):
- self.l_boutons = (('New24',self.appli.newJDC,"Création d'un nouveau fichier",'always'),
- ('Open24',self.appli.openJDC,"Ouverture d'un fichier existant",'always'),
- ('Save24',self.appli.saveJDC,"Sauvegarde du fichier courant",'always'),
- ('Zoom24',self.appli.visuJDC,"Visualisation du fichier de commandes",'always'),
- None,
- ('Copy24',self.appli.copy,"Copie l'objet courant",'jdc'),
- ('Cut24',self.appli.cut,"Coupe l'objet courant",'jdc'),
- ('Paste24',self.appli.paste,"Colle l'objet copié après l'objet courant",'jdc'),
- None,
- ('Delete24',self.appli.delete,"Supprime l'objet courant",'jdc'),
- ('Help24',self.appli.view_doc,"Documentation de l'objet courant",'jdc')
- )
- # liste des boutons à activer quand statut != 'always'
- self.l_boutons_a_activer = []
-
- for bouton in self.l_boutons :
- if not bouton :
- # on veut afficher un bouton vide (=espace entre boutons)
- Button(self.barreboutons,
- image = images.get_image('New24'),
- relief = 'flat').pack(side='left')
- continue
- nom_fic,commande,texte,statut = bouton
- b = Button(self.barreboutons,
- image = images.get_image(nom_fic),
- command = commande,
- relief='flat')
- b.pack(side='left')
- b.bind("<Enter>",lambda e,s=self,but=b,t=texte : s.affiche_balloon(e,but,t))
- b.bind("<Leave>", self.efface_balloon)
- if statut != 'always':
- self.l_boutons_a_activer.append(b)
- # bouton Infos à l'extrême droite de la barre des boutons
- b = Button(self.barreboutons,
- image = images.get_image('About24'),
- command = self.view_infos)
- b.pack(side='right')
- texte = "Infos EFICAS"
- b.bind("<Enter>",lambda e,s=self,but=b,t=texte : s.affiche_balloon(e,but,t,pos='right'))
- b.bind("<Leave>", self.efface_balloon)
- # inactive les boutons qui doivent l'être tant qu'aucun JDC courant
- self.inactive_boutons()
-
def inactive_boutons(self):
"""
Inactive les boutons de la liste self.l_boutons_a_activer
"""
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)
Button(self.barreboutons,
- image = images.get_image('New24'),
+ image = images.get_image('Sep'),
+ state='disabled',
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,
+# 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):
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("<ButtonPress>", aide)
+ label.pack()
+ root.mainloop()
+
+# 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
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):
-#@ 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 *
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.7 2002/09/10 15:59:37 eficas Exp $"
#
Fonte_Standard = fontes.standard
self.children[0].select()
self.resizescrollregion()
- def deselectall_old(self):
- """ déselectionne tous les éléments de l'arbre """
- for child in self.children:
- child.deselect()
-
def deselectall(self):
""" déselectionne tous les éléments de l'arbre """
if self.node_selected :
self.tree.node_selected = self
if self.command:apply(self.command,(self,))
self.highlight()
- self.canvas.focus_force()
- #self.make_visible()
-
- def deselect_old(self, event=None):
- """ Déselectionne self """
- self.selected = 0
- if self.displayed == 1:
- self.dehighlight()
- for child in self.children:
- child.deselect()
def deselect(self, event=None):
""" Déselectionne self """
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
try:
child.trace_ligne()
except:
+ print "Erreur dans trace_ligne :"
print child
print child.item.object
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 :
# 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)
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) """
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()
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 :
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()
--- /dev/null
+# 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)
+
+
+
+
+# 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):
"""
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:]
""" 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
+
-#@ 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
""" 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) :
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,
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 <Return>
+ """
+ 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
+
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
""" 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'),
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)
--- /dev/null
+ 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
+# 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.
+#
+#
+# ======================================================================
-#@ 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
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()
"""
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
+
+# 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
"""
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]
+# 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
import traceback
from Noyau import N_OBJECT
+import prefs
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 ''
+
-#@ 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
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:
+# 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
+# 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
self.niveau = None
self.etape = None
self.state = 'undetermined'
+ self.actif=1
self.mc_liste=self.build_mc()
def build_mc(self):
#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'):
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 ''
+
+# 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
+# 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
"""
# 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
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
+# 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
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):
"""
return []
-
+ def verif_existence_sd(self):
+ pass
+# 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
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()
"""
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)
+# 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)
"""
--- /dev/null
+# 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__)
+# 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.
+#
+#
+# ======================================================================
"""
"""
+# 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
+# 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:
"""
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) :
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):
"""
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()
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
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))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 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.
+#
+#
+# ======================================================================
"""
"""
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
--- /dev/null
+# 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
+
+# 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
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)
+# 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
# 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
self.niveau=self
self.params=[]
self.fonctions=[]
+ self._etape_context=None
def get_cmd(self,nomcmd):
"""
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 :
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":
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:
# 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':
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
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:
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'):
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):
"""
"""
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
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
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]
+
+# 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:
+# 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 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):
"""
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
# 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))
+# 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):
+# 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
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
"""
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):
"""
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):
"""
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'):
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
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()
# 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
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
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
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éé
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()
+# 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):
+# 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:
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 []
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
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):
# 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 ''
+
+# 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
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
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:
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 :
"""
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):
"""
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
# 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()
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)
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):
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 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),
"""
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 ''
+
+# 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.
+#
+#
+# ======================================================================
"""
"""
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
+# 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.
+#
+#
+# ======================================================================
"""
"""
+# 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 ""
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))
+# 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
+# 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.
+#
+#
+# ======================================================================
"""
"""
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
+# 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
--- /dev/null
+
+
+ =================================================
+ 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.
--- /dev/null
+\r
+\r
+ =================================================\r
+ Procédure d'installation d'EFICAS \r
+ =================================================\r
+\r
+Pour lancer la procédure d'installation, tapez :\r
+\r
+ python install.py\r
+\r
+Vous pouvez remplacer 'python' par le chemin d'accès de votre interpréteur Python.\r
+\r
+La procédure d'installation commence par vérifier que votre système contient bien les\r
+pré-requis pour EFICAS (cf README)\r
+\r
+La procédure va vous demander un certain nombre de chemins d'accès nécessaires à l'établissement du\r
+fichier de configuration d'EFICAS qui s'appelle editeur.ini et qui se trouvera, une fois EFICAS,\r
+installé, dans le répertoire Eficas/Aster\r
+\r
+- Répertoire d'installation : répertoire dans lequel vous voulez installer Eficas\r
+- Répertoire de travail : répertoire de travail temporaire d'EFICAS\r
+- Répertoire matériaux : répertoire dans lequel se trouvent les catalogues matériaux d'ASTER\r
+- Répertoire doc Aster : répertoire dans lequel se trouve le manuel U4 de la doc Aster (format pdf)\r
+ ex : /logiciels/aster/NEW6/doc/pdf/u4\r
+- Exécutable Acrobat Reader : chemin d'accès complet à l'exécutable Acrobat Reader\r
+\r
+\r
+Catalogues Aster : EFICAS installe par défaut le catalogue Aster v6 qui se trouve en\r
+ Eficas/Aster/Cata.\r
+ Si vous voulez en installer d'autres, il faut qu'ils se trouvent dans ce même répertoire\r
+ ou qu'il y ait un lien dans ce répertoire vers le fichier.\r
+ Pour ajouter d'autres catalogues, il faut aller modifier directement le fichier editeur.ini\r
+\r
+ \r
+\r
+Lancement d'EFICAS : le fichier à lancer est Eficas/Aster/eficas_aster.py\r
+ il faut le lancer précédé du chemin d'accès à l'interpréteur Python comme\r
+ pour la procédure d'installation.\r
+\r
+\r
--- /dev/null
+SUCCES,ECHEC = 1,0\r
+OUI,NON = 1,0\r
+\r
+## constantes pour les tests de versions \r
+\r
+python_min = 20\r
+tcl_min = 83\r
+tk_min = 83\r
+pmw_min = 85\r
+test = 0\r
+\r
+try:\r
+ import sys,string,re,types,traceback\r
+ import os,commands\r
+except Exception,e:\r
+ print "Mauvaise installation de Python"\r
+ print str(e)\r
+\r
+REPERTOIRE = os.path.abspath(os.curdir)\r
+\r
+def strip_points(chaine):\r
+ """\r
+ Enlève les caractères autres que les chiffres des chaînes\r
+ """\r
+ x=""\r
+ for i in range(len(chaine)):\r
+ try:\r
+ dummy = float(chaine[i])\r
+ x=x+chaine[i]\r
+ except:\r
+ pass\r
+ return x\r
+\r
+class Test_Environnement :\r
+ def __init__(self):\r
+ self.l_errors = []\r
+\r
+ def test_plate_forme(self):\r
+ """\r
+ Teste que la plate-forme est bien supportée\r
+ """\r
+ if os.name not in ('nt','posix'):\r
+ self.l_errors.append("La plate-forme %s n'est pas supportée" %os.name)\r
+ \r
+ def test_version_python(self):\r
+ """\r
+ Test de la version de python\r
+ """\r
+ version = sys.version\r
+ n = string.index(version,"(") - 1\r
+ vpyt = strip_points(version[0:n])[0:2] ## recupere les 2 premiers caracteres\r
+ if int(vpyt)<python_min :\r
+ self.l_errors.append("La version %s de python n'est plus supportée" %version[0:n])\r
+\r
+ def test_tcl_tk(self):\r
+ """\r
+ Test des versions de tcl et tk\r
+ """\r
+ try:\r
+ import Tkinter\r
+ vtcl = Tkinter.tkinter.TCL_VERSION\r
+ vtk = Tkinter.tkinter.TK_VERSION\r
+ # version tcl\r
+ x = strip_points(vtcl)\r
+ if int(x)<tcl_min :\r
+ self.l_errors.append("La version %s de tcl n'est plus supportée" %vtcl)\r
+ # version tk\r
+ x = strip_points(vtk)\r
+ if int(x)<tk_min :\r
+ self.l_errors.append("La version %s de tk n'est plus supportée" %vtk)\r
+ except Exception,e:\r
+ self.l_errors.append("Tkinter n'est pas installé")\r
+ print str(e)\r
+\r
+ def test_Pmw(self):\r
+ """\r
+ Test de la version de Pmw\r
+ """\r
+ try:\r
+ import Pmw\r
+ vpmw = Pmw._version\r
+ x = strip_points(vpmw)\r
+ if int(x)<pmw_min :\r
+ self.l_errors.append("La version %s de Pmw n'est plus supportée" %vpmw)\r
+ except:\r
+ self.l_errors.append("Pmw n'est pas installé")\r
+\r
+ def test(self):\r
+ """\r
+ Active les tests de version Python, versions Tcl/Tk et Pmw\r
+ """\r
+ self.test_plate_forme()\r
+ self.test_version_python()\r
+ self.test_tcl_tk()\r
+ self.test_Pmw()\r
+ if not len(self.l_errors):\r
+ print "Environnement Ok"\r
+ return 1\r
+ else :\r
+ print "Il manque des prérequis"\r
+ print "EFICAS ne peut pas être installé"\r
+ print "Erreurs : ",string.join(self.l_errors)\r
+ return 0\r
+\r
+class Slider:\r
+ def __init__(self, master=None, orientation="horizontal", min=0, max=100,\r
+ width=100, height=25, autoLabel="true", appearance="sunken",\r
+ fillColor="blue", background="black", labelColor="yellow",\r
+ labelText="", labelFormat="%d%%", value=50, bd=2):\r
+ # preserve various values\r
+ self.master=master\r
+ self.orientation=orientation\r
+ self.min=min\r
+ self.max=max\r
+ self.width=width\r
+ self.height=height\r
+ self.autoLabel=autoLabel\r
+ self.fillColor=fillColor\r
+ self.labelColor=labelColor\r
+ self.background=background\r
+ self.labelText=labelText\r
+ self.labelFormat=labelFormat\r
+ self.value=value\r
+ self.frame=Tkinter.Frame(master, relief=appearance, bd=bd)\r
+ self.canvas=Tkinter.Canvas(self.frame, height=height, width=width, bd=0,\r
+ highlightthickness=0, background=background)\r
+ self.scale=self.canvas.create_rectangle(0, 0, width, height,\r
+ fill=fillColor)\r
+ self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,\r
+ height / 2, text=labelText,\r
+ anchor="c", fill=labelColor)\r
+ self.update()\r
+ self.canvas.pack(side='top', fill='x', expand='no')\r
+\r
+ def update(self):\r
+ # Trim the values to be between min and max\r
+ value=self.value\r
+ if value > self.max:\r
+ value = self.max\r
+ if value < self.min:\r
+ value = self.min\r
+ # Preserve the new value\r
+ c=self.canvas\r
+ # Adjust the rectangle\r
+ if self.orientation == "horizontal":\r
+ c.coords(self.scale,0, 0,float(value) / self.max * self.width, self.height)\r
+ else:\r
+ c.coords(self.scale,0, self.height - (float(value) / self.max*self.height),self.width, self.height)\r
+ # Now update the colors\r
+ c.itemconfig(self.scale, fill=self.fillColor)\r
+ c.itemconfig(self.label, fill=self.labelColor)\r
+ # And update the label\r
+ if self.autoLabel=="true":\r
+ c.itemconfig(self.label, text=self.labelFormat % value)\r
+ else:\r
+ c.itemconfig(self.label, text=self.labelFormat % self.labelText)\r
+ c.update_idletasks()\r
+try :\r
+ import Tkinter\r
+ import Pmw\r
+ from tkMessageBox import showinfo,askyesno,showerror,askretrycancel\r
+except:\r
+ pass\r
+\r
+class SplashScreen(Tkinter.Toplevel):\r
+ """ Provides a splash screen. Usage:\r
+ Subclass and override 'CreateWidgets()'\r
+ In constructor of main window/application call\r
+ - S = SplashScreen(main=self) (if caller is Toplevel)\r
+ - S = SplashScreen(main=self.master) (if caller is Frame)\r
+ - S.quit() after you are done creating your widgets etc.\r
+ """\r
+ def __init__(self, master,**args):\r
+ Tkinter.Toplevel.__init__(self, master, relief='groove',borderwidth=5)\r
+ self.protocol("WM_DELETE_WINDOW",lambda x=0: x+x ) # pour ne pas détruire la fenêtre en pleine copie de fichiers\r
+ self.main = master\r
+ if self.main != None :\r
+ self.main.withdraw()\r
+ self.frame = Tkinter.Frame(self)\r
+ self.frame.pack(expand=1,fill='both')\r
+ self.init(args)\r
+ self.geometry("300x200")\r
+ self.resizable(0,0)\r
+ self.CreateWidgets()\r
+\r
+ def init(self,args={}):\r
+ self.text = Tkinter.StringVar()\r
+ self.text.set('')\r
+ self.icone = 'Editeur/icons/logo_edf.gif'\r
+ self.barre = 'non'\r
+ if args == {} : return\r
+ if args.has_key('text'):\r
+ self.text.set(args['text'])\r
+ if args.has_key('titre'):\r
+ self.title(args['titre'])\r
+ if args.has_key('code'):\r
+ self.code = args['code']\r
+ else:\r
+ self.code = 'inconnu'\r
+ if self.code == 'ASTER' :\r
+ self.icone = 'Editeur/icons/code_aster.gif'\r
+ \r
+ def CreateWidgets(self):\r
+ fic_image = os.path.join("./", self.icone)\r
+ if os.path.exists(fic_image):\r
+ self.catIcon = Tkinter.PhotoImage(file=os.path.join("./", self.icone))\r
+ Tkinter.Label(self.frame, image=self.catIcon).pack(side=Tkinter.TOP)\r
+ else:\r
+ Tkinter.Label(self.frame, text = "EFICAS pour Code_Aster").pack(side=Tkinter.TOP)\r
+ self.label = Tkinter.Label(self.frame, textvariable=self.text)\r
+ self.label.pack(side=Tkinter.TOP,expand=1,fill='both')\r
+ self.progress = Slider(self.frame,value=0,max=100,orientation='horizontal',\r
+ fillColor='blue',width=200,height=30,\r
+ background='white',labelColor='red')\r
+\r
+ def update_barre(self,event=None):\r
+ """ Permet de faire avancer la barre de progression """\r
+ try:\r
+ self.progress.value = self.progress.value+self.increment\r
+ self.progress.update()\r
+ #self.after(100,self.update_barre)\r
+ except:\r
+ pass\r
+\r
+ def configure_barre(self):\r
+ """ Calcule l'incrément de progression de la barre en fonction\r
+ du nombre d'opérations à effectuer afin que le compteur\r
+ soit à 100% à la fin des opérations"""\r
+ self.increment = 100./self.ratio\r
+ self.progress.update()\r
+\r
+ def configure(self,**args):\r
+ if args.has_key('text'):\r
+ self.text.set(args['text'])\r
+ if args.has_key('titre'):\r
+ self.title(args['titre'])\r
+ if args.has_key('barre'):\r
+ old = self.barre\r
+ self.barre = args['barre']\r
+ if self.barre == 'oui' and old == 'non':\r
+ self.progress.frame.pack(in_=self.frame,side='top')\r
+ elif self.barre == 'non' and old == 'oui':\r
+ self.progress.frame.pack_forget()\r
+ if args.has_key('ratio'):\r
+ self.ratio = args['ratio']\r
+ self.configure_barre()\r
+ self.update()\r
+ \r
+ def quit(self):\r
+ self.progress = None\r
+ self.withdraw()\r
+ self.main.update()\r
+ self.main.deiconify()\r
+\r
+def centerwindow(window,parent = 'avec'):\r
+ if parent =='avec':\r
+ parent = window.winfo_parent()\r
+ if type(parent) == types.StringType:\r
+ try:\r
+ parent = window._nametowidget(parent)\r
+ except:\r
+ parent = window\r
+ # Find size of window.\r
+ window.update_idletasks()\r
+ width = window.winfo_width()\r
+ height = window.winfo_height()\r
+ if width == 1 and height == 1:\r
+ # If the window has not yet been displayed, its size is\r
+ # reported as 1x1, so use requested size.\r
+ width = window.winfo_reqwidth()\r
+ height = window.winfo_reqheight()\r
+ # Place in centre of screen:\r
+ if parent =='avec' :\r
+ x = (window.winfo_screenwidth() - width) / 2 - parent.winfo_vrootx()\r
+ y = (window.winfo_screenheight() - height) / 3 - parent.winfo_vrooty()\r
+ else:\r
+ x = (window.winfo_screenwidth() - width) / 2 \r
+ y = (window.winfo_screenheight() - height) / 3\r
+ if x < 0:\r
+ x = 0\r
+ if y < 0:\r
+ y = 0\r
+ window.geometry('+%d+%d' % (x, y))\r
+ \r
+class config_item:\r
+ """\r
+ Classe utilisée pour représenter chaque option de configuration\r
+ """\r
+ def __init__(self, pere, nom):\r
+ self.nom = nom\r
+ self.pere = pere\r
+ self.entree_value = None\r
+ self.default = None\r
+ self.test = None\r
+ self.pere.register_item(self)\r
+\r
+ def get_valeur(self):\r
+ return os.path.abspath(self.entree.get())\r
+ \r
+ def set_entree(self,entree):\r
+ self.entree = entree\r
+ self.pere.register_entree(entree)\r
+\r
+class Config(Tkinter.Toplevel):\r
+ """\r
+ Classe principale : une instance de Config est utilisée pour\r
+ créer l'interface. Toutes les actions (création de répertoire, copie\r
+ de fichiers ...) sont réalisées par des méthodes de Config ou de ses\r
+ composants\r
+ """\r
+ pat_rep = re.compile(r'^(rep_)([\w_]*)') # expression réguliere pour reconnaitre les\r
+ # les options qui désignent des répertoires\r
+ def __init__(self, parent):\r
+ self.master = parent\r
+ Tkinter.Toplevel.__init__(self,None)\r
+ parent.withdraw()\r
+ self.title("Installation d'EFICAS")\r
+ self.geometry("500x320+0+0")\r
+ centerwindow(self)\r
+ self.install_running = 0\r
+ #évite que la fenêtre puisse être détruite en pleine copie de fichiers\r
+ self.protocol("WM_DELETE_WINDOW",self.exit )\r
+ # création des frames\r
+ self.frame_gen = Tkinter.Frame(self,bd=1,relief='groove')\r
+ self.frame_gen.place(relx=0,rely=0,relwidth=1,relheight=0.9 )\r
+ self.frame_but = Tkinter.Frame(self,bd=1,relief='groove')\r
+ self.frame_but.place(relx=0,rely=0.9 ,relheight=0.1 ,relwidth=1)\r
+ # création des items de configuration\r
+ self.make_items_config()\r
+ # remplissage de la frame générale\r
+ self.make_frame_gen()\r
+ # remplissage de la frame boutons\r
+ self.make_frame_but()\r
+ # création boîtes de dialogue\r
+ self.init_complementaire()\r
+ # init système\r
+ self.init_systeme()\r
+ \r
+ def make_items_config(self):\r
+ """\r
+ Création des objets Config_item\r
+ """\r
+ self.items = []\r
+ self.items_a_creer = []\r
+ self.liste_rep_crees = []\r
+ self.entrees = []\r
+ # designation, texte d'invite , option par defaut(unix), option par defaut(windows), flag obligatoire/facultatif\r
+ self.l_tx_items = (('rep_install' ,\r
+ "Répertoire d'installation :",\r
+ '',\r
+ '',\r
+ 'o'),\r
+ ('rep_travail' ,\r
+ 'Répertoire de travail :',\r
+ 'tmp',\r
+ 'tmp',\r
+ 'f'),\r
+ ('rep_mat' ,\r
+ 'Répertoire matériaux :',\r
+ None,\r
+ None,\r
+ 'f'),\r
+ ('rep_docaster' ,\r
+ "Chemin d'accès à la doc Aster :" ,\r
+ None,\r
+ None,\r
+ 'f'\r
+ ),\r
+ ('acrobat' ,\r
+ 'Exécutable Acrobat Reader :',\r
+ '/usr/bin/acroread',\r
+ 'acrobat.exe',\r
+ 'o')\r
+ )\r
+\r
+ for item in self.l_tx_items:\r
+ nom_item = item[0]\r
+ setattr(self,nom_item,config_item(self,nom_item))\r
+\r
+ def make_frame_gen(self):\r
+ """\r
+ Création des zones de saisie des paramètres généraux\r
+ """\r
+ # Création du label titre de la frame\r
+ self.information = Tkinter.Label(self.frame_gen,text="CONFIGURATION D'EFICAS")\r
+ self.information.pack(side="top",pady=10)\r
+ # création des widgets de saisie des items\r
+ for txt in self.l_tx_items:\r
+ nom_item = txt[0]\r
+ txt_item = txt[1]\r
+ if os.name == 'nt':\r
+ default_value = txt[3]\r
+ else:\r
+ default_value = txt[2]\r
+ item = getattr(self,nom_item)\r
+ wdg_item = Pmw.EntryField(self.frame_gen,\r
+ labelpos = 'w',\r
+ label_text = txt_item,\r
+ command = lambda s=self,i=item : s.select_next_entry(i.entree))\r
+ item.default_value = default_value\r
+ item.statut = txt[4]\r
+ item.set_entree(wdg_item)\r
+ # on affiche les entrées\r
+ for entree in self.entrees:\r
+ entree.pack(fill='x', expand=1, padx=10, pady=5)\r
+ Pmw.alignlabels(self.entrees)\r
+ self.entrees[0].focus_set()\r
+ #self.rep_cata_dev.entree.configure(entry_state = 'disabled')\r
+ self.display_defaults()\r
+ \r
+ def make_frame_but(self):\r
+ """\r
+ Création des boutons de commande Installer et Annuler\r
+ """\r
+ self.validButton = Tkinter.Button(self.frame_but, text = 'Installer', command = self.run_install)\r
+ self.exitButton = Tkinter.Button(self.frame_but,\r
+ text = 'Annuler',\r
+ command = lambda s=self : s.exit(annule='oui'))\r
+ self.exitButton.place(relx=0.35,rely=0.5,anchor='center')\r
+ self.validButton.place(relx=0.65,rely=0.5,anchor='center')\r
+\r
+ def init_complementaire(self):\r
+ """\r
+ Création de widgets complémentaires (boîtes de dialogue ...)\r
+ """\r
+ self.erreur_dialog = Pmw.Dialog(self,\r
+ buttons = ('Modifier', 'Annuler'),\r
+ defaultbutton = 'Modifier',\r
+ title = 'Erreur',\r
+ command = self.erreur_exec)\r
+ self.erreur_dialog.withdraw()\r
+ self.fatale_dialog = Pmw.Dialog(self,\r
+ buttons = ('Annuler',),\r
+ title = 'Fatal',\r
+ command = self.fatale_exec)\r
+ self.fatale_dialog.withdraw()\r
+ self.info_dialog = Pmw.Dialog(self,\r
+ buttons = ('Ok',),\r
+ title = 'Attention')\r
+ self.info_dialog.configure(command=self.info_dialog.withdraw())\r
+ self.info_dialog.withdraw()\r
+ self.attente = SplashScreen(None,code="ASTER")\r
+ self.attente.withdraw()\r
+\r
+ def init_systeme(self):\r
+ """\r
+ Détermine les commandes à exécuter en fonction de l'OS\r
+ """\r
+ self.d_commandes = {}\r
+ if os.name == 'nt':\r
+ self.d_commandes['decompress'] = "unzip.exe "\r
+ self.d_commandes['copy'] = "copy "\r
+ self.d_commandes['delete'] = "del "\r
+ elif os.name == 'posix':\r
+ self.d_commandes['decompress'] = "gunzip "\r
+ self.d_commandes['copy'] = "cp "\r
+ self.d_commandes['delete'] = "rm "\r
+\r
+ def run_install(self):\r
+ """\r
+ Lance l'installation proprement dite d'EFICAS\r
+ """\r
+ self.install_running = 1\r
+ self.afficher_splash()\r
+ self.deactivate_entries() # Les entrees et les boutons sont desactivees\r
+ self.deactivate_buttons() # pendant les operations d'installation\r
+ #self.decompress_archive()\r
+ #if not os.path.exists(os.path.join(REPERTOIRE,'Eficas')):\r
+ # self.afficher_fatale("Il manque des fichiers d'EFICAS")\r
+ # self.install_running = 0\r
+ # return\r
+ self.nb_fichiers = self.compte_fichiers(REPERTOIRE)\r
+ if self.nb_fichiers == 0:\r
+ self.afficher_fatale("Il manque des fichiers d'EFICAS")\r
+ self.install_running = 0\r
+ return\r
+ # essaie de creer les repertoires.\r
+ try:\r
+ if self.make_dirs() == ECHEC : \r
+ self.activate_entries() \r
+ self.activate_buttons() \r
+ self.install_running = 0\r
+ return\r
+ except:\r
+ self.install_running = 0\r
+ self.afficher_fatale("Impossible de créer certains répertoires")\r
+ \r
+ # affiche la fenêtre avec la barre de progression\r
+ self.afficher_copie_fichiers() \r
+ # essaie de copier les fichiers d'EFICAS\r
+ try:\r
+ if self.move_files() == ECHEC: \r
+ self.afficher_echec("Impossible de copier les fichiers d'EFICAS")\r
+ self.activate_buttons()\r
+ self.install_running = 0\r
+ return\r
+ except :\r
+ traceback.print_exc()\r
+ self.install_running = 0\r
+ self.afficher_fatale("Impossible de copier certains fichiers")\r
+\r
+ #self.rm_temp_dirs() # efface les répertoires temporaires\r
+ try:\r
+ self.creer_fic_conf() # crée le fichier eficas.conf\r
+ except:\r
+ afficher_info("Impossible de créer le fichier de configuration\n Il est possible de le faire a la main")\r
+# self.install_running = 0\r
+ self.afficher_install_terminee() # A ce stade tout est fait et il ne reste plus qu'à attendre\r
+ # un clic de souris pour sortir\r
+\r
+ def display_defaults(self):\r
+ """\r
+ Affiche les valeurs par défaut dans les zones de saisie\r
+ """\r
+ # racine indique la racine de l'arborescence\r
+ if os.name == 'nt':\r
+ racine = 'C:\\'\r
+ else:\r
+ racine = os.environ['HOME']\r
+ # remplit les zones de saisie avec les options par défaut\r
+ for item in self.items:\r
+ if item.default_value == None : continue\r
+ item.default_value = os.path.join(racine,item.default_value)\r
+ item.entree.insert(0,item.default_value)\r
+\r
+ def register_item(self,item):\r
+ """\r
+ Enregistre l'item dans la liste des items et éventuellement\r
+ dans la liste des items à créer (répertoires)\r
+ """\r
+ self.items.append(item)\r
+ if self.pat_rep.match(item.nom) :\r
+ self.items_a_creer.append(item)\r
+\r
+ def register_entree(self,entree):\r
+ """\r
+ Enregistre la zone de saisie dans la liste des zones\r
+ """\r
+ self.entrees.append(entree)\r
+\r
+ def select_next_entry(self,entree):\r
+ """\r
+ Place le focus dans l'entry suivant celle passée en argument\r
+ """\r
+ index = self.entrees.index(entree)+1\r
+ if index != len(self.entrees):\r
+ self.entrees[index].component('entry').focus()\r
+\r
+ def activate_entries(self):\r
+ """\r
+ Active les entrées. Les zones de saisie deviennent éditables.\r
+ """\r
+ for item in self.entrees:\r
+ item.configure(entry_state='normal')\r
+\r
+ def deactivate_entries(self):\r
+ """\r
+ Désactive les entrées. Les zones ne sont plus éditables.\r
+ """\r
+ for item in self.entrees: # Les entrees sont desactivees\r
+ item.configure(entry_state='disabled') # pendant les operations d'installation\r
+\r
+ def activate_buttons(self):\r
+ """\r
+ active les boutons valider et annuler\r
+ """\r
+ self.validButton.configure(state = 'normal')\r
+ self.exitButton.configure(state = 'normal')\r
+\r
+ def deactivate_buttons(self):\r
+ """\r
+ désactive des boutons valider de annuler\r
+ """\r
+ self.validButton.configure(state = 'disabled')\r
+ self.exitButton.configure(state = 'disabled')\r
+\r
+ def erreur_exec(self, result):\r
+ """\r
+ Callback exécuté lorsque l'utilisateur clique sur un des boutons\r
+ Modifier/Annuler de la fenêtre de dialogue qui lui présente les erreurs\r
+ """\r
+ self.erreur_dialog.deactivate(result)\r
+ self.removedir()\r
+ if result == 'Annuler':\r
+ self.install_running = 0\r
+ self.exit(annule='non')\r
+\r
+ def fatale_exec(self, result):\r
+ """\r
+ Callback exécuté lorsque l'utilisateur clique sur le bouton\r
+ Quitter de la fenêtre de dialogue qui lui présente les erreurs fatales\r
+ Seule solution : sortir de l'installation\r
+ """\r
+ self.fatale_dialog.deactivate(result)\r
+ self.install_running = 0\r
+ self.exit(annule='oui')\r
+ \r
+ def test_confirmation(self,flag,nom):\r
+ """\r
+ Callback activé par le clic sur bouton fenêtre demandant confirmation\r
+ avant création répertoire facultatif\r
+ """\r
+ if flag == 'NON':\r
+ self.confirmation.destroy()\r
+ self.TEST_confirmation_avant_creation = NON\r
+ return \r
+ else :\r
+ self.confirmation.destroy()\r
+ self.TEST_confirmation_avant_creation = OUI \r
+ \r
+ def afficher_fatale(self, message):\r
+ """\r
+ Affiche les erreurs fatales\r
+ """\r
+ self.attente.withdraw()\r
+ w = Tkinter.Label(self.fatale_dialog.interior(),text = message, pady = 5)\r
+ w.pack(expand = 1, fill = 'both', padx = 4, pady = 4)\r
+ self.fatale_dialog.configure(deactivatecommand = w.destroy)\r
+ self.fatale_dialog.activate()\r
+\r
+ def afficher_echec(self, message):\r
+ """\r
+ Affiche un message d'erreur\r
+ Par construction, dès que l'on passe par cette méthode, on sort de l'installation\r
+ en passant le flag install_running à 0\r
+ """\r
+ self.attente.withdraw()\r
+ w = Tkinter.Label(self.erreur_dialog.interior(),text = message, pady = 5)\r
+ w.pack(expand = 1, fill = 'both', padx = 4, pady = 4)\r
+ self.erreur_dialog.configure(deactivatecommand = w.destroy)\r
+ self.erreur_dialog.activate()\r
+\r
+ def confirmation_avant_creation(self,repertoire):\r
+ """\r
+ Affiche une boite de dialogue pour confirmer la création\r
+ d'un répertoire facultatif.\r
+ """\r
+ self.attente.withdraw()\r
+ self.confirmation = Pmw.Dialog(self,\r
+ buttons = ('OUI', 'NON'),\r
+ defaultbutton = 'OUI',\r
+ title = "Répertoire inexistant",\r
+ command = lambda f,s=self,r=repertoire : s.test_confirmation(f,r))\r
+ self.confirmation.withdraw()\r
+ Tkinter.Label(self.confirmation.interior(),\r
+ text="Le répertoire %s n'existe pas \n Voulez-vous le créer ?" %repertoire).pack(side='top')\r
+ self.confirmation.activate(geometry='centerscreenalways')\r
+ return self.TEST_confirmation_avant_creation\r
+ \r
+ def afficher_splash(self):\r
+ """\r
+ Afficher la boite de message \r
+ """\r
+ self.attente.deiconify()\r
+ self.attente.tkraise()\r
+ centerwindow(self.attente)\r
+ self.attente.configure(titre="Installation d'EFICAS",\r
+ text="Vérification intégrité sources Eficas",\r
+ barre="non")\r
+ \r
+ def afficher_info(self,message):\r
+ """\r
+ Afficher une boite de warning\r
+ """\r
+ w = Tkinter.Label(self.info_dialog.interior(),text = message, pady = 5)\r
+ w.pack(expand = 1, fill = 'both', padx = 4, pady = 4)\r
+ self.info_dialog.configure(deactivatecommand = w.destroy)\r
+ self.info_dialog.activate()\r
+ \r
+ def afficher_copie_fichiers(self):\r
+ """\r
+ Afficher la boite de message avec la barre de progression\r
+ """\r
+ self.attente.deiconify()\r
+ self.attente.tkraise()\r
+ self.attente.configure(titre="Installation d'EFICAS",\r
+ text="copie des fichiers",\r
+ barre="oui")\r
+ self.attente.ratio = self.nb_fichiers\r
+ self.attente.configure_barre()\r
+\r
+ def afficher_install_terminee(self):\r
+ """\r
+ Afficher le message Installation terminée\r
+ """\r
+ self.withdraw()\r
+ self.attente.configure(titre="Installation d'EFICAS",\r
+ text="Installation terminée",\r
+ barre="non")\r
+ self.exitButton.place_forget()\r
+ self.validButton.place_forget()\r
+ self.validButton = Tkinter.Button(self.attente.frame,\r
+ text = 'Quitter',\r
+ command = self.exit)\r
+ self.validButton.pack(side='top',pady=5)\r
+ self.install_running = 0\r
+\r
+ def decompress_archive(self) :\r
+ """\r
+ Décompresse l'archive d'EFICAS dans un répertoire temporaire (.)\r
+ """\r
+ print "decompress_archive"\r
+ #try:\r
+ commande = os.path.join(REPERTOIRE,self.d_commandes['decompress'])\r
+ fichier = os.path.join(REPERTOIRE,"eficas.zip")\r
+ print 'commande =',commande\r
+ print 'fichier =',fichier\r
+ os.execv(commande,("eficas.zip",))\r
+ #except:\r
+ # self.affiche_echec("Erreur dans la décompression")\r
+\r
+ def normaliser_chemin(self, nom):\r
+ """\r
+ Retourne le chemin d'accès complet à nom\r
+ """\r
+ return os.path.abspath(os.path.expanduser(nom))\r
+\r
+ def discriminer_noms(self):\r
+ """\r
+ Emet un message d'alerte si des zones de saisie ne sont pas remplies\r
+ ou si des noms de répertoires à créer sont identiques.\r
+ """\r
+ liste_noms = []\r
+ for item in self.items_a_creer:\r
+ nom = item.entree.get()\r
+ if nom == self.rep_install.entree.get(): # il faut ajouter 'Eficas' au chemin du repertoire\r
+ nom = os.path.join(nom,"Eficas") # d'installation\r
+ liste_noms.append(nom)\r
+\r
+ test = SUCCES\r
+ for item in self.items_a_creer:\r
+ nom = item.entree.get()\r
+ if len(nom) == 0 :\r
+ test = ECHEC\r
+ message = "attention : certains répertoires n'ont pas de nom"\r
+ self.afficher_echec(message)\r
+ item.entree.component('entry').focus()\r
+ break\r
+\r
+ if test == ECHEC :\r
+ return test\r
+\r
+ for item in self.items_a_creer:\r
+ nom = item.entree.get()\r
+ if liste_noms.count(nom) >1 :\r
+ test = ECHEC\r
+ message = "attention : certains répertoires ont le même nom"\r
+ self.afficher_echec(message)\r
+ item.entree.component('entry').focus()\r
+ break\r
+\r
+ return test\r
+\r
+ def compte_fichiers(self,path):\r
+ """\r
+ Dénombre les fichiers présents dans le répertoire Eficas (et ses sous-répertoires)\r
+ """\r
+ nb = 0\r
+ l_fic = os.listdir(path)\r
+ l_rep = []\r
+ for fic in l_fic :\r
+ if os.path.isdir(os.path.join(path,fic)):\r
+ l_rep.append(fic)\r
+ else:\r
+ nb = nb+1\r
+ for rep in l_rep :\r
+ nb = nb + self.compte_fichiers(os.path.join(path,rep))\r
+ return nb\r
+\r
+ def creer_fic_conf(self):\r
+ """\r
+ Crée le fichier editeur.ini a partir des données saisies\r
+ par l'administrateur.\r
+ """\r
+ fichier_conf = os.path.join(self.normaliser_chemin(self.rep_install.get_valeur()),"Eficas/Aster/editeur.ini")\r
+ f = open(fichier_conf,'w')\r
+ f.write("path_doc = "+'"'+self.normaliser_chemin(self.rep_docaster.get_valeur())+'"\n')\r
+ f.write("exec_acrobat = "+'"'+self.normaliser_chemin(self.acrobat.get_valeur())+'"\n')\r
+ f.write('isdeveloppeur = "NON"\n')\r
+ f.write("rep_travail = "+'"'+self.normaliser_chemin(self.rep_travail.get_valeur())+'"\n')\r
+ f.write("rep_cata = "+'"'+os.path.join(self.normaliser_chemin(self.rep_install.get_valeur()),"Eficas/Aster/Cata/")+'"\n') # attention au dernier slash\r
+ f.write("rep_mat = "+'"'+self.normaliser_chemin(self.rep_mat.get_valeur())+'"\n')\r
+ cata = """catalogues = (('ASTER','v6',rep_cata + 'cata_STA6.py','python','defaut'),)\n"""\r
+ f.write(cata)\r
+ f.close()\r
+ \r
+\r
+ def move_files(self):\r
+ """\r
+ Déplace les fichiers Eficas du répertoire temporaire vers\r
+ leur répertoire de destination\r
+ """\r
+ # création du répertoire Eficas\r
+ rep_eficas = os.path.join(self.rep_install.get_valeur(),'Eficas')\r
+ self.copy_rep(REPERTOIRE,rep_eficas)\r
+\r
+ def copy_rep(self,rep_dep,rep_arr):\r
+ """\r
+ Copie le répertoire path_dep et ses sous-répertoires dans path_arr\r
+ """\r
+ l_fichiers = os.listdir(rep_dep)\r
+ if not os.path.exists(rep_arr) :\r
+ # création du répertoire d'arrivée quand il n'existe pas \r
+ self.mkdirs(rep_arr)\r
+ for fic in l_fichiers :\r
+ nom_complet_dep = os.path.join(rep_dep,fic)\r
+ nom_complet_arr = os.path.join(rep_arr,fic)\r
+ if os.path.isfile(nom_complet_dep):\r
+ commande_copie = self.d_commandes['copy']+nom_complet_dep+' '+nom_complet_arr\r
+ commande_delete= self.d_commandes['delete']+nom_complet_dep\r
+ try:\r
+ os.system(commande_copie)\r
+ #os.system(commande_delete)\r
+ self.attente.update_barre()\r
+ except Exception,e:\r
+ pass\r
+ elif os.path.isdir(nom_complet_dep):\r
+ self.copy_rep(nom_complet_dep,nom_complet_arr)\r
+\r
+ def rm_temp_dirs(self):\r
+ """\r
+ Détruit le répertoire temporaire de l'archive d'Eficas\r
+ """\r
+ rep_arch = os.path.join(REPERTOIRE,'Eficas')\r
+ self.rm_r(rep_arch)\r
+\r
+ def make_dirs(self):\r
+ """\r
+ Crée les répertoires d'accueil des fichiers d'EFICAS\r
+ """\r
+ # création des répertoires dont l'utilisateur a donné le nom\r
+ if self.discriminer_noms() == ECHEC:\r
+ return ECHEC\r
+ for item in self.items_a_creer:\r
+ if not item.entree.get():\r
+ continue\r
+ nom = item.get_valeur()\r
+ if nom == self.normaliser_chemin(self.rep_install.entree.get()): # il faut ajouter 'Eficas' au chemin du repertoire\r
+ nom = os.path.join(nom,"Eficas") # d'installation\r
+ item.test = self.essai_creer(nom,item.statut)\r
+ if item.test == ECHEC :\r
+ item.entree.component('entry').focus()\r
+ return ECHEC\r
+ return SUCCES\r
+\r
+ def essai_creer(self, nom, statut):\r
+ """\r
+ Essaie de créer le répertoire nom s'il n'existe pas déjà.\r
+ Si statut == 'f' et si le fichier n'existe pas, demande\r
+ confirmation avant création\r
+ """\r
+ repertoire = self.normaliser_chemin(nom) # repertoire = chemin absolu de nom\r
+ if os.path.exists(repertoire):\r
+ if statut == 'o' :\r
+ self.afficher_echec("Un fichier ou répertoire de nom "+ repertoire+ " existe déjà !\n"+\r
+ "L'installation ne peut continuer")\r
+ return ECHEC\r
+ else:\r
+ return SUCCES\r
+\r
+ if statut == 'f' :\r
+ # on demande confirmation de création à l'utilisateur\r
+ test = self.confirmation_avant_creation(repertoire)\r
+ if test == NON:\r
+ return SUCCES\r
+\r
+ try:\r
+ test = self.mkdirs(repertoire)\r
+ return SUCCES\r
+ except Exception,e:\r
+ message = "La création de "+repertoire+" a échoué :\n %s \n Vérifiez vos droits d'écriture" %str(e) # message d'erreur\r
+ self.afficher_echec(message)\r
+ return ECHEC\r
+\r
+ def mkdirs(self,rep):\r
+ """\r
+ Création récursive des répertoires d'installation.\r
+ Les noms des répertoires crées sont stockés dans\r
+ une liste dont se sert la méthode removedir pour\r
+ restaurer l'environnement initial en cas d'annulation.\r
+ """\r
+ if rep==os.path.dirname(rep):\r
+ return SUCCES\r
+\r
+ if os.path.exists(os.path.dirname(rep)):\r
+ os.mkdir(rep)\r
+ self.liste_rep_crees.append(rep)\r
+ return SUCCES\r
+ else:\r
+ test = self.mkdirs(os.path.dirname(rep))\r
+ if test == SUCCES:\r
+ os.mkdir(rep)\r
+ self.liste_rep_crees.append(rep)\r
+ return SUCCES\r
+ else:\r
+ return ECHEC\r
+\r
+ def rm_r(self,path):\r
+ """\r
+ Detruit récursivement path\r
+ """\r
+ if not os.path.exists(path):\r
+ return\r
+ try:\r
+ if len(os.listdir(path))!=0:\r
+ for entree in os.listdir(path):\r
+ entree = os.path.join(path,entree)\r
+ self.rm_r(entree)\r
+ os.rmdir(path)\r
+ except Exception,e:\r
+ self.afficher_info("Impossible de détruire le répertoire : "+path+"\n"+"\n"+str(e)+"\n L'installation continue néanmoins")\r
+\r
+ def removedir(self):\r
+ """\r
+ Destruction des répertoires déja crées (en cas d'annulation)\r
+ """\r
+ for rep in self.liste_rep_crees:\r
+ self.rm_r(rep)\r
+ self.liste_rep_crees = []\r
+\r
+ def exit(self,annule='non'):\r
+ """\r
+ Tente de sortir de l'application.\r
+ Echoue si installation en cours\r
+ """\r
+ if self.install_running :\r
+ # l'installation est en cours --> on interdit la sortie\r
+ self.afficher_info("Impossible de quitter tant que l'installation est en cours\n Veuillez patienter")\r
+ else:\r
+ if annule == 'oui' : self.removedir()\r
+ self.master.quit()\r
+\r
+if __name__ == '__main__':\r
+ test = Test_Environnement().test()\r
+ if not test :\r
+ # environnement incomplet --> on sort de la procédure d'installation\r
+ sys.exit()\r
+ else:\r
+ import Tkinter\r
+ import Pmw\r
+ root = Tkinter.Tk()\r
+ Pmw.initialise(root)\r
+ try:\r
+ principal = Config(root)\r
+ root.mainloop()\r
+ except Exception,e:\r
+ print "Erreur non prévue rencontrée : ",str(e)\r
+ print "Veuillez prévenir la maintenance"\r
+ sys.exit()\r
import Accas
from Accas import *
+#CONTEXT.debug=1
+
import ops
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
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
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",
) ;
+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')),
+ ),
+ ),
+ );
+
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()
+
# 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'
+
+
--- /dev/null
+version = "6.3.20"
+date = "10/10/2002"
-#@ 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
import types,sys,string,os
import linecache
import traceback
+from copy import copy
# Modules EFICAS
import N_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)
-#@ 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
self.index_etape_courante=index_etape
return d
+ def get_global_contexte(self):
+ return self.g_context.copy()
-#@ 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
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
else:
self.niveau=current_cata.get_niveau(niveau)
self.niveau.enregistre(self)
+ self.UIinfo=UIinfo
self.affecter_parente()
def __call__(self,reuse=None,**args):
-#@ 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
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
-#@ 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
"""
visitor.visitMCBLOC(self)
+ def makeobjet(self):
+ return self.definition(val = None, nom = self.nom,parent = self.parent)
-#@ 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
"""
import types
-
+from copy import copy
import N_OBJECT
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
-#@ 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
"""
visitor.visitMCFACT(self)
+ def makeobjet(self):
+ return self.definition(val = None, nom = self.nom,parent = self.parent)
-#@ 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
de type ENTITE
"""
+from copy import copy
import UserList
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)
-#@ 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
de type ENTITE
"""
+import types
+from copy import copy
+
+from Noyau.N_ASSD import ASSD,assd
import N_OBJECT
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
-#@ 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
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
else:
self.niveau=current_cata.get_niveau(niveau)
self.niveau.enregistre(self)
+ self.UIinfo=UIinfo
self.affecter_parente()
def __call__(self,reuse=None,**args):
-#@ 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
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
else:
self.niveau=current_cata.get_niveau(niveau)
self.niveau.enregistre(self)
+ self.UIinfo=UIinfo
self.affecter_parente()
def __call__(self,**args):
-#@ 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
# ======================================================================
# 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"
# 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'
+
--- /dev/null
+version = "6.3.20"
+date = "10/10/2002"
--- /dev/null
+# 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),\r
+ NIVEAU(nom='prop_phys',label='Propriétés physiques',valide_vide=0,actif='choix_num==1'),\r
+ NIVEAU(nom='cond_init',label='Conditions initiales',valide_vide=0,actif='prop_phys==1'),\r
+ NIVEAU(nom='cond_limi',label='Conditions aux limites',valide_vide=0,actif='cond_init==1'),\r
+ NIVEAU(nom='flux_volu',label='Flux volumiques',valide_vide=0,actif='cond_limi==1'),\r
+ NIVEAU(nom='soli_mouv',label='Solides en mouvement'),\r
+ NIVEAU(nom='couplages',label='Couplages'),\r
+ NIVEAU(nom='rayonnement',label='Rayonnement',valide_vide=0,actif='flux_volu==1'),\r
+ NIVEAU(nom='cond_lim_ray',label='Conditions limites rayonnement',valide_vide=0,actif='rayonnement==1'),\r
+ NIVEAU(nom='in_out_ray',label='Entrées/Sorties rayonnement',valide_vide=0,actif='rayonnement==1'),\r
+ NIVEAU(nom='fichiers',label='Fichiers pour le calcul'))
+ )
+
+
+GENERALITES = PROC(nom='GENERALITES',op=10,\r
+ fr="Définition des principales options du calcul",\r
+ niveau='generalites',
+ TYPE_DE_CALCUL=SIMP(typ='TXM',\r
+ statut='o',\r
+ into=('Syrthes thermique solide seule','Syrthes couplé'),\r
+ defaut='Syrthes thermique solide seule',\r
+ position='global_jdc'),
+ TITRE = SIMP(statut='f',typ='TXM'),
+ DIMENSION = SIMP(statut='o',\r
+ typ='I',\r
+ into=(2,3),\r
+ defaut=2,\r
+ position='global_jdc'),
+ b_axys = BLOC(condition="TYPE_DE_CALCUL=='Syrthes thermique solide seule'",\r
+ AXE_SYMETRIE = SIMP(statut='o',\r
+ typ='TXM',\r
+ into=('AUCUN','OX','OY'),\r
+ defaut='AUCUN')));\r
+\r
+GESTION_DU_CALCUL = PROC(nom='GESTION_DU_CALCUL',op=10,\r
+ fr="Gestion des pas de temps et éventuellement du couplage fluide/solide",\r
+ niveau='gest_calc',\r
+ CALCUL_SYRTHES_SEUL = BLOC(condition="TYPE_DE_CALCUL == 'Syrthes thermique solide seule'",\r
+ PAS_DE_TEMPS_SOLIDE = SIMP(typ='I',statut='o'),\r
+ NB_PAS_DE_TEMPS = SIMP(typ='I',statut='o'),\r
+ SUITE_DE_CALCUL = SIMP(typ='TXM',statut='o',into=('OUI','NON'),defaut='NON')),\r
+ CALCUL_SYRTHES_COUPLE = BLOC(condition="TYPE_DE_CALCUL =='Syrthes couplé'",\r
+ CORRESPONDANCE_MAILLAGES_F_S = SIMP(statut='o',\r
+ typ='TXM',\r
+ into=('calcul','lecture sur fichier','calcul et écriture sur fichier'),\r
+ defaut='calcul et écriture sur fichier'),\r
+ PAS_DE_TEMPS_SOLIDE = SIMP(typ='TXM',\r
+ statut='o',\r
+ into=('fixé indépendamment','égal à celui du fluide'),\r
+ defaut='égal à celui du fluide'),\r
+ CHOIX_FREQUENCE_CALCUL_SOLIDE = SIMP(typ='TXM',\r
+ statut='o',\r
+ into=('calcul solide à chaque pas de temps',\r
+ 'calcul solide tous les n pas de temps fluide',\r
+ 'calcul fluide tous les n pas de temps solide'),\r
+ defaut='calcul solide à chaque pas de temps'),\r
+ frequence_calcul = BLOC(condition="CHOIX_FREQUENCE_CALCUL_SOLIDE != 'calcul solide à chaque pas de temps'",\r
+ FREQUENCE = SIMP(statut='o',\r
+ typ='I')))\r
+ \r
+ );\r
+\r
+GESTION_DES_SORTIES = PROC(nom="GESTION_DES_SORTIES",op=10,\r
+ fr="Gestion des résultats du code",\r
+ niveau='gest_sort',\r
+ IMPRESSIONS_SOLIDE=SIMP(statut='o',typ='TXM',\r
+ into=('aucune','minimales','normales','détaillées'),\r
+ defaut='normales'),\r
+ RESULTATS_DOMAINE_SOLIDE=FACT(statut='o',\r
+ FICHIER_CHRONOLOGIQUE=SIMP(typ='TXM',statut='o',\r
+ into=('aucune sortie','tous les n pas de temps'),\r
+ defaut='aucune sortie'),\r
+ pas_de_temps=BLOC(condition="FICHIER_CHRONOLOGIQUE=='tous les n pas de temps'",\r
+ PAS_DE_TEMPS=SIMP(statut='o',typ='I')),\r
+ FICHIER_LISTING=SIMP(statut='o',typ='TXM',\r
+ into=('aucune sortie',),\r
+ defaut='aucune sortie'),\r
+ HISTORIQUE_SOLIDE=SIMP(statut='o',typ='TXM',\r
+ into=('OUI','NON'),\r
+ defaut='NON'),\r
+ historique=BLOC(condition="HISTORIQUE_SOLIDE=='OUI'",\r
+ NOMBRE_CAPTEURS=SIMP(statut='o',typ='I'),\r
+ FREQUENCE_ECRITURE=SIMP(statut='o',typ='I',defaut=1),\r
+ LISTE_NOEUDS = FACT(statut='o',max='**',\r
+ NOEUDS=SIMP(statut='o',max='**',typ='I'),\r
+ COMMENTAIRE=SIMP(statut='o',typ='TXM',defaut=""))),\r
+ ),\r
+ RESULTATS_DOMAINE_FLUIDE=BLOC(condition="TYPE_DE_CALCUL=='Syrthes couplé'",\r
+ ECRITURE_MAILLAGE_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'),\r
+ defaut='NON',typ='TXM'),\r
+ ECRITURE_RESULTATS_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'),\r
+ defaut='NON',typ='TXM'),\r
+ ECRITURE_CHRONO_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'),\r
+ defaut='NON',typ='TXM'))\r
+ );\r
+\r
+CHOIX_NUMERIQUES=PROC(nom="CHOIX_NUMERIQUES",op=10,\r
+ fr="Modification des options du solveur",\r
+ niveau='choix_num',\r
+ SOLVEUR_SOLIDE = FACT(statut='o',\r
+ NOMBRE_ITERATIONS=SIMP(statut='o',typ='I'),\r
+ PRECISION=SIMP(statut='o',typ='R'))\r
+ );\r
+\r
+PROPRIETES_PHYSIQUES=PROC(nom="PROPRIETES_PHYSIQUES",op=10,\r
+ fr="Définition des propriétés physiques des matériaux",\r
+ niveau='prop_phys',\r
+ DEFINITION_PAR = SIMP(statut='o',typ='TXM',into=('NOEUD','ELEMENT','NOEUD PAR ELEMENT'),\r
+ defaut='ELEMENT'),\r
+ ISOTROPIE = SIMP(statut='o', typ='TXM', into=('Matériaux isotropes',\r
+ 'Matériaux anisotropes',\r
+ 'Matériaux orthotropes'),\r
+ defaut='Matériaux isotropes'),\r
+ proprietes_des_materiaux_isotropes = BLOC(condition="ISOTROPIE=='Mat\351riaux isotropes'", \r
+ DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**',\r
+ MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**',\r
+ CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**',\r
+ CONDUCTIVITE_THERMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM'))\r
+ ),\r
+ proprietes_des_materiaux_orthotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==2",\r
+ DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**',\r
+ MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**',\r
+ CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**',\r
+ CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM'))\r
+ ),\r
+ proprietes_des_materiaux_orthotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==3",\r
+ DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**',\r
+ MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**',\r
+ CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**',\r
+ CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM'))\r
+ ),\r
+ proprietes_des_materiaux_anisotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==2",\r
+ DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**',\r
+ MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**',\r
+ CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**',\r
+ CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'),\r
+ ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM'))\r
+ ),\r
+ proprietes_des_materiaux_anisotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==3",\r
+ DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**',\r
+ MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**',\r
+ CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM')),\r
+ DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**',\r
+ CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'),\r
+ CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'),\r
+ ANGLE_SUIVANT_X = SIMP(statut='o',typ='R'),\r
+ ANGLE_SUIVANT_Y = SIMP(statut='o',typ='R'),\r
+ ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES=SIMP(statut='f',typ='TXM'))\r
+ ),\r
+ );\r
+\r
+CONDITIONS_INITIALES=PROC(nom="CONDITIONS_INITIALES",op=10,\r
+ fr="Définition des conditions initiales",\r
+ niveau='cond_init',\r
+ Temperature_initiale = FACT(statut='o',max='**',\r
+ TEMPERATURE = SIMP(typ='R',statut='o',defaut=20),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**',defaut=-1),\r
+ COMMENTAIRES = SIMP(statut='f',typ='TXM')\r
+ )\r
+ );\r
+\r
+\r
+CONDITIONS_LIMITES = PROC(nom='CONDITIONS_LIMITES',op=10,\r
+ niveau='cond_limi',\r
+ fr="Définition des conditions aux limites",\r
+ NOEUD_OU_FACE = SIMP(statut='o',typ='TXM',into=('NOEUD','FACE'),defaut='FACE'),\r
+ FLUX_SURFACIQUE=FACT(max='**',\r
+ FLUX=SIMP(statut='o',typ='R',defaut=0),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES = SIMP(statut='f',typ='TXM')\r
+ ),\r
+ DIRICHLET=FACT(max='**',\r
+ TEMPERATURE=SIMP(statut='o',typ='R',defaut=20),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES = SIMP(statut='f',typ='TXM')\r
+ ),\r
+\r
+ COEFFICIENT_ECHANGE=FACT(max='**',\r
+ TEMPERATURE=SIMP(statut='o',typ='R',defaut=20),\r
+ COEFFICIENT = SIMP(statut='o',typ='R',defaut=0),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES = SIMP(statut='f',typ='TXM')\r
+ ),\r
+ RESISTANCE_CONTACT=FACT(max='**',\r
+ RESISTANCE = SIMP(statut='o',typ='R',defaut=0),\r
+ REFERENCES = SIMP(statut='o',typ='I',max='**'),\r
+ COMMENTAIRES = SIMP(statut='f',typ='TXM')\r
+ ),\r
+ );
+
--- /dev/null
+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'),
+ )
+
--- /dev/null
+#!/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')
+
--- /dev/null
+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'
+
+
--- /dev/null
+version = "6.3.20"
+date = "10/10/2002"
-#@ 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']
-#@ 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
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' :
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'
-#@ 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
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:
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:
-#@ 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
- 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:
+# 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
+# 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
-#@ 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',
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
-#@ 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.
#
__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 : '
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)
(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,),
('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
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),
(err0,Table,t_err,MatchFail,MatchOk),
# <err9>
(err9,Table,t_err,MatchFail,MatchOk),
+ # <err11>
+ (err11,Table,t_err,MatchFail,MatchOk),
))
t_nom_ope = \
-#@ 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.
#
__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 : '
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)
<err>
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
'sign' = IsIn '+-':
commespaces F:next
'vexpr' = Table ThisTable F:<err10> T:<op>
- "PI" = Word 'PI' F:next T:<op>
+ t_PI F:next T:<op>
t_ident F:MatchFail
commespaces F:next
'listpar' = Is '(': # on peut avoir une liste de parametres
commespaces F:next
'vexpr' = Table t_vexpr F:<err>
commespaces F:next
- Is ')' F:<err9>
+ Is ')' F:<err11>
commespaces F:next
- Is ')' F:<err9>
+ Is ')' F:<err11>
commespaces F:next
Is ';' F:<err>
AllNotIn '\n' F:next
err0 = Table t_err F:MatchFail T:MatchOk
<err9>
err9 = Table t_err F:MatchFail T:MatchOk
+ <err11>
+ err11 = Table t_err F:MatchFail T:MatchOk
t_nom_ope is:
'nom_ope' = Table is:
+# 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.
+# 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.
+# 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.
+# 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.
+# 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.
-#@ 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
+# 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
+# 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.
+# 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.
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)
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:
+# 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.
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 + ')'
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+' '
+# 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.
+# 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.
+# 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.
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
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):
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 + ','
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):
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 + ','
--- /dev/null
+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()
+