From c7c7c2d18466e804810c1ed986342f22b16d449a Mon Sep 17 00:00:00 2001 From: eficas <> Date: Fri, 13 Sep 2002 16:49:33 +0000 Subject: [PATCH] =?utf8?q?CCAR:=20Modification=20principale=20:=20ajout=20?= =?utf8?q?de=20la=20possibilit=C3=A9=20d'afficher=20les=20noms=20de=20comm?= =?utf8?q?andes=20par=20groupes=20dans=20le=20panneau=20associ=C3=A9=20?= =?utf8?q?=C3=A0=20une=20commande.=20Pour=20choisir=20son=20mode=20d'affic?= =?utf8?q?hage=20utiliser=20le=20menu=20Options=20->=20affichage=20command?= =?utf8?q?es=20Pour=20sp=C3=A9cifier=20les=20groupes=20utiliser=20le=20par?= =?utf8?q?am=C3=A8tre=20UIinfo=20dans=20la=20d=C3=A9finition=20des=20comma?= =?utf8?q?ndes=20Ce=20d=C3=A9veloppement=20traite=20la=20demande=20EO2002-?= =?utf8?q?092=20de=20Code=5FAster=20Traitement=20de=20AL2001-471=20:=20le?= =?utf8?q?=20convertisseur=20de=20format=20AsterV5=20supporte=20maintenant?= =?utf8?q?=20les=20fichiers=20qui=20n'ont=20pas=20de=20retour=20chariot=20?= =?utf8?q?en=20fin=20de=20fichier=20Traitement=20de=20EO2002-025=20:=20mei?= =?utf8?q?lleur=20formattage=20des=20r=C3=A9els=20(str)=20pour=20les=20g?= =?utf8?q?=C3=A9n=C3=A9rateurs=20au=20format=20python=20(asterV6)=20et=20a?= =?utf8?q?sterV5.=20Diverses=20corrections=20concernant=20les=20niveaux=20?= =?utf8?q?et=20les=20nuplets=20Ajout=20des=20catalogues=20Syrthes=20et=20D?= =?utf8?q?escartes.=20Correction=20du=20catalogue=20Saturne.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- AIDE/index_aide.py | 6 +- Accas/A_ETAPE.py | 1 - Accas/A_PROC_ETAPE.py | 1 - Aster/Cata/cata_STA6.py | 4 +- Aster/editeur.ini | 3 +- Aster/prefs.py | 8 +- Descartes/cata_descartes.py | 1655 +++++++++++++++++ Descartes/cata_descartes_new.py | 3084 +++++++++++++++++++++++++++++++ Descartes/editeur.ini | 23 + Descartes/eficas_descartes.py | 41 + Descartes/prefs.py | 25 + Editeur/appli.py | 40 +- Editeur/autre_analyse_cata.py | 85 +- Editeur/options.py | 19 +- Editeur/panels.py | 30 +- Editeur/readercata.py | 9 +- Editeur/uiinfo.py | 113 ++ Editeur/widgets.py | 100 +- Exemples/README | 2 + Exemples/ex18/main.py | 3 +- Extensions/etape_niveau.py | 10 + Extensions/mcnuplet.py | 2 + Ihm/I_ETAPE.py | 4 +- Ihm/I_MACRO_ETAPE.py | 1 - Minicode/prefs.py | 6 +- Noyau/N_MACRO.py | 3 +- Noyau/N_OPER.py | 3 +- Noyau/N_PROC.py | 3 +- Saturne/prefs.py | 3 + Syrthes/cata_syrthes.py | 243 +++ Syrthes/editeur.ini | 22 + Syrthes/eficas_syrthes.py | 21 + Syrthes/prefs.py | 25 + convert/Parserv5/conv.py | 4 +- generator/generator_asterv5.py | 6 +- generator/generator_python.py | 11 +- 36 files changed, 5570 insertions(+), 49 deletions(-) create mode 100755 Descartes/cata_descartes.py create mode 100755 Descartes/cata_descartes_new.py create mode 100644 Descartes/editeur.ini create mode 100755 Descartes/eficas_descartes.py create mode 100644 Descartes/prefs.py create mode 100644 Editeur/uiinfo.py create mode 100755 Syrthes/cata_syrthes.py create mode 100644 Syrthes/editeur.ini create mode 100755 Syrthes/eficas_syrthes.py create mode 100644 Syrthes/prefs.py diff --git a/AIDE/index_aide.py b/AIDE/index_aide.py index 6c462c81..9c040965 100644 --- a/AIDE/index_aide.py +++ b/AIDE/index_aide.py @@ -16,9 +16,9 @@ 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,"..","README_install"),None), - ) + ( + ("Procedure d'installation",os.path.join(repertoire,"..","INSTALL"),None), + ) ), ), ) diff --git a/Accas/A_ETAPE.py b/Accas/A_ETAPE.py index 512a3648..6ba5b7e9 100644 --- a/Accas/A_ETAPE.py +++ b/Accas/A_ETAPE.py @@ -27,4 +27,3 @@ class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE, # Pas de constructeur pour B_ETAPE.ETAPE N_ETAPE.ETAPE.__init__(self,oper,reuse,args) V_ETAPE.ETAPE.__init__(self) - I_ETAPE.ETAPE.__init__(self) diff --git a/Accas/A_PROC_ETAPE.py b/Accas/A_PROC_ETAPE.py index 26836709..9f0911ae 100644 --- a/Accas/A_PROC_ETAPE.py +++ b/Accas/A_PROC_ETAPE.py @@ -27,4 +27,3 @@ class PROC_ETAPE(I_PROC_ETAPE.PROC_ETAPE, def __init__(self,oper=None,args={}): N_PROC_ETAPE.PROC_ETAPE.__init__(self,oper=oper,args=args) V_PROC_ETAPE.PROC_ETAPE.__init__(self) - I_PROC_ETAPE.PROC_ETAPE.__init__(self) diff --git a/Aster/Cata/cata_STA6.py b/Aster/Cata/cata_STA6.py index 4204f5e0..82444c0f 100755 --- a/Aster/Cata/cata_STA6.py +++ b/Aster/Cata/cata_STA6.py @@ -29,7 +29,7 @@ except: # __version__="$Name: $" -__Id__="$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $" +__Id__="$Id: cata_STA6.py,v 1.1.1.2 2002/09/02 17:27:12 eficas Exp $" # JdC = JDC_CATA(code='ASTER', execmodul=None, @@ -337,6 +337,7 @@ class vect_elem_temp_r(vect_elem):pass AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, fr="Affectation de caractéristiques à des éléments de structure", docu="U4.42.01-g3",reentrant='n', + UIinfo={'groupes':('CACHE',)}, regles=(AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','MASSIF', 'ASSE_GRIL','GRILLE','AFFE_SECT','AFFE_FIBRE'),), MODELE =SIMP(statut='o',typ=modele ), @@ -617,6 +618,7 @@ AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem, AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou, fr="Affectation de charges et conditions aux limites acoustiques constantes", docu="U4.44.04-e",reentrant='n', + UIinfo={'groupes':('CALCUL','ACOU')}, 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") ), diff --git a/Aster/editeur.ini b/Aster/editeur.ini index d455d048..c9e1a9e7 100644 --- a/Aster/editeur.ini +++ b/Aster/editeur.ini @@ -38,7 +38,8 @@ initialdir=os.curdir # Choix des catalogues rep_mat="bidon" -catalogues = (#('ASTER','v5',os.path.join(rep_cata,'cata_STA5.py'),'asterv5'), +catalogues = ( + #('ASTER','v5',os.path.join(rep_cata,'cata_STA5.py'),'asterv5'), ('ASTER','v6',os.path.join(rep_cata,'cata_STA6.py'),'python','defaut'), ) diff --git a/Aster/prefs.py b/Aster/prefs.py index 85890656..261ee3b2 100644 --- a/Aster/prefs.py +++ b/Aster/prefs.py @@ -39,16 +39,18 @@ CODE_PATH = None # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') -# lang indique la langue utilisée pour les chaines d'aide : fr ou an +# 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', +# 'Catalogue','Browsers', + 'Options', 'Aide', ) appli_composants=['readercata','bureau', -# 'browser','options' +# 'browser', + 'options', ] menu_defs={ 'bureau': [ diff --git a/Descartes/cata_descartes.py b/Descartes/cata_descartes.py new file mode 100755 index 00000000..ae8d16a5 --- /dev/null +++ b/Descartes/cata_descartes.py @@ -0,0 +1,1655 @@ +# debut entete + +import Accas +from Accas import * + +JdC = JDC_CATA(code="DESCARTES", + execmodul=None + ) + +import string + +class TObjet(ASSD): + def __init__(self,**args): + apply(ASSD.__init__,(self,),args) + name=string.ljust(self.__class__.__name__[:12],12) + + def __getitem__(self,attrname): + return self.etape[attrname] + + def db(self): + if hasattr(self,'_dbsun'):return self._dbsun + else: + self._dbsun={'t':1} + return self._dbsun + + def putdb(self,o): + self._dbsun=o + +# +# Definition des types d'objet qui seront produits par les commandes +# Il suffit de declarer une classe qui derive de la classe mere TObjet +# qui derive elle meme de la classe ASSD utilisee dans EFICAS +# +class Isotope (TObjet):pass +class BornesEnergie (TObjet):pass +class BibliothequeIsotopes (TObjet):pass +class ChaineFiliation(TObjet) :pass +class Materiau (TObjet):pass +class Point (TObjet):pass +class Vecteur (TObjet):pass +class Droite (TObjet):pass +class Segment (TObjet):pass +class ArcCercle (TObjet):pass +class Secteur (TObjet):pass +class Conique (TObjet):pass +class Triangle (TObjet):pass +class Rectangle (TObjet):pass +class Carre (TObjet):pass +class Hexagone (TObjet):pass +class Polygone (TObjet):pass +class Sphere (TObjet):pass +class BoiteRectangulaire (TObjet):pass +class BoiteGenerale (TObjet):pass +class CylindreX (TObjet):pass +class CylindreY (TObjet):pass +class CylindreZ (TObjet):pass +class Cylindre (TObjet):pass +class Cone (TObjet):pass +class PrismeHexagonal (TObjet):pass +class Tore (TObjet):pass +class Plan (TObjet):pass +class PlanX (TObjet):pass +class PlanY (TObjet):pass +class PlanZ (TObjet):pass +class Polyedre (TObjet):pass +class Quadrique (TObjet):pass +class Cellule(TObjet) :pass +class Cluster(TObjet):pass +class Orientation(TObjet):pass +class FormePositionnee (TObjet):pass +class GeometrieSurfacique(TObjet):pass +class GeometrieCombinatoire(TObjet):pass +class Reseau(TObjet):pass +class GrilleAssemblage (TObjet):pass +class PartieInferieureAssemblageCombustible (TObjet):pass +class PartieSuperieureAssemblageCombustible (TObjet):pass +class OptionsAutoprotection(TObjet):pass +class AssemblageType(TObjet):pass +class AssemblageCombustibleCharge (TObjet):pass +class ElementBarre (TObjet):pass +class ElementsGrappeCommande (TObjet):pass +class ElementsAbsorbantsFixes (TObjet):pass +class GrappeBouchonAssemblage (TObjet):pass +#class ElementsAssemblage (TObjet):pass +class SystemeUnitesMesure (TObjet):pass +class Vide (TObjet):pass +class ReflexionIsotrope (TObjet):pass +class ReflexionSpeculaire (TObjet):pass +class Albedo (TObjet):pass +class Translation (TObjet):pass +class Rotation (TObjet):pass +class ConditionLimiteSpeciale (TObjet):pass +class ConditionLimiteGenerale (TObjet):pass +class CorrespondanceReperePositionReseau (TObjet):pass +class PositionAssemblageCombustible (TObjet):pass +class PositionInstrumentationInterne (TObjet):pass +class PositionGrappesCommande (TObjet):pass +class StructuresInternesReacteur (TObjet):pass +class CaracteristiquesPalier (TObjet):pass +class SiteNucleaire (TObjet):pass +class EspaceVariations (TObjet):pass +class DonneesEvolutionIrradiation (TObjet):pass +class ConditionsFonctionnementMoyennes (TObjet):pass +#class PlanChargementCoeur (TObjet):pass +class DateClesCampagne (TObjet):pass +class OptionsCodes (TObjet):pass +class DonneesGeneralesEtude (TObjet):pass +# fin entete + +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ISOTOPE : Classe de definition d'un isotope +# Caracteristiques elementaires des isotopes ou molecules et liens avec les bibliotheques de donnees nucleaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ISOTOPE=OPER(nom="ISOTOPE",sd_prod=Isotope,op=0, + + fr = "Definition d'un isotope ou d'une molecule et de ses bibliotheques", + ang = "Isotope or Molecule definition and data libraries", + Symbole = SIMP (typ='TXM',statut='o'), + MasseAtomique = SIMP (typ='R',statut='o',fr="Masse atomique en uma"), + NombreDeCharge = SIMP (typ='I',statut='o',fr="Nombre de charge atomique Z"), + NombreDeMasse = SIMP (typ='I',statut='o',fr="Nombre de masse atomique A"), + Type = SIMP (typ='TXM',statut='f',into=('Standard','Detecteur','Structure','Poison'),fr="Type de l'isotope"), + ConstituantsChimiques = SIMP (typ='TXM',max='**',statut='f',fr="Symboles des constituants elementaires de la molecule"), + NomsBibliotheque = NUPL ( max = '**', + statut = 'o', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque"))), + NomsBibliothequeAutoprotegee = NUPL ( max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant Bibliotheque autoprotegee de l'isotope"))) + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe BORNES_ENERGIE : Classe de definition des limites en energie d'un maillage multigroupe +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BORNES_ENERGIE=OPER(nom="BORNES_ENERGIE",sd_prod=BornesEnergie,op=0, + fr = "Definition d une discretisation de l espace energetique", + ang = "Definition of an energy discretisation", + NbMacrogroupes = SIMP (typ='I',statut='o',fr="Nombre de macrogroupes du maillage energetique"), + BornesEnergetiques = SIMP (typ='R',max='**',statut='o',fr="Bornes en energie du maillage energetique"), + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BIBLIOTHEQUE_ISOTOPES : Classe de definition d'une bibliotheque des donnees nucleaires d'isotopes ou de molecules +# Caracteristiques elementaires des isotopes ou molecules +# et liens avec les bibliotheques de donnees nucleaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BIBLIOTHEQUE_ISOTOPES=OPER(nom="BIBLIOTHEQUE_ISOTOPES",sd_prod=BibliothequeIsotopes,op=0, + + fr = "Definition d une bibliotheque de donnees nucleaires des isotopes", + ang = "Definition of an isotopic nuclear data library", + Description = SIMP (typ='TXM',statut='f'), + Fichiers = FACT ( + max = '**', + statut = 'o', + SystemeExploitation = SIMP (typ='TXM',fr="Systeme d'exploitation"), + NomFichier = SIMP (typ='TXM',fr="Nom du fichier"), + FormatFichier = SIMP (typ='TXM',fr="Format du fichier",statut='f'), + BornesEnergetiques = SIMP (typ=BornesEnergie,statut='f',fr="Bornes en eV du maillage en energie")) + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CHAINE_FILIATION : Classe de definition des filiations isotopiques dues aux transmutations +# sous irradiation neutronique. +# Description textuelle sous format (APOLLO2, SUNSET ou DARWIN) ou description particuliere Descartes. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CHAINE_FILIATION = OPER (nom="CHAINE_FILIATION",op=0,sd_prod=ChaineFiliation, + + fr = "Definition d'une chaine de filiation isotopique sous irradiation", + ang = "Definition of a depletion chain", + NombreIsotopes = SIMP (typ='I',statut='o',fr="Nombre d'isotopes decrits dans la chaine"), + ChaineAPOLLO2 = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format APOLLO2"), + ChaineSUNSET = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format SUNSET"), + ChaineDARWIN = SIMP (typ='TXM',statut='f',fr="Nom du fichier contenant la description DARWIN de la chaine"), + Isotopes = FACT ( max = '**', statut = 'f', + Isotope = FACT ( max = '**', statut = 'f', + IsotopePere = SIMP (typ=Isotope,fr="Nom isotope pere",statut='o'), + TypeReaction = SIMP (typ='TXM',fr="Type de reaction",statut='o'), + RapportBranchement = SIMP (typ='R',fr="Rapport de branchement",defaut=1.,statut='f') + ) + ) + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe MATERIAU : Classe de définition d'un matériau à partir de mélange d'isotopes ou de matériaux. +# Définition alternative par donnée des enrichissements +# Caractéristiques fournies a 20 C. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MATERIAU=OPER(nom="MATERIAU",op=0,sd_prod=Materiau, + + fr = "Definition d'un materiau", + ang = "Definition of a mixture", + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Isotopique",into=("Isotopique","Enrichissement")), + BlocIsotopique = BLOC (condition = "TypeDefinition=='Isotopique'", + Type = SIMP ( statut = 'o', + typ = 'TXM', + into = ('Absorbant','Combustible','Melange','ModerateurInterne','ModerateurExterne','Detecteur', + 'Grille','Gaine','Tube','Poison','PoisonConsommable','AbsorbantIntegre', + 'Solide','Liquide','Gaz','MateriauVide'), + defaut = 'Combustible'), + MethodeMelange = SIMP (statut='o',typ='TXM',into=('Isotopique','Massique','Concentration'),defaut='Massique'), + Constituants = NUPL ( statut = 'o', + max = '**', + elements = (SIMP (typ=(Isotope,Materiau)),SIMP (typ='R')), + fr = "Couples (Isotope ou Materiau) et (Pourcentage ou Cencentration)") + ), + BlocEnrichissement = BLOC (condition = "TypeDefinition=='Enrichissement'", + Type = SIMP (typ='TXM',into=('UO2','MOX','UO2Gadolinium','MOXGadolinium'),statut='o'), + EnrichissementU235 = SIMP (typ=('R','TXM'),defaut=3.7,statut='f',fr="Enrichissement % en U235 du combustible"), + EnrichissementPu = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en plutonium du combustible"), + EnrichissementGado = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en Gd2O3 du combustible"), + VecteurPu = NUPL ( max='**',statut='f', + elements=( SIMP (typ=Isotope,fr="Nom isotope du plutonium"), + SIMP (typ='R',fr="Pourcentage isotopique"))), + DateReference = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de reference du combustible"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de divergence du reacteur ou ce combustible est charge"), + VieillissementJours = SIMP ( typ = 'R', + defaut = 0., + statut = 'f', + fr = "Nbre de jours de vieillissement du combustible, calculable si on donne DateDivergence")), + MasseVolumique = SIMP (statut='f',typ=('R','I','TXM'),fr="Masse volumique theorique du materiau g/cm3"), + TauxEvidement = SIMP (statut='f',typ=('R','I'),fr="Taux % d'evidement du materiau"), + TauxPorosite = SIMP (statut='f',typ=('R','I'),fr="Taux % de porosite du materiau"), + Temperature = SIMP (statut='f',typ=('R','I','TXM'),fr="Temperature en Celsius du materiau"), + GazRemplissage = SIMP (statut='f',typ=(Isotope,Materiau),defaut='HE4',fr="Gaz de remplissage des evidements du materiau solide"), + PressionInitialeGaz = SIMP (statut='f',typ=('R','I'),defaut=32.,fr="Pression en bars du gaz de remplissage des evidements"), + DilatationLineaire = SIMP (statut='f',typ=('R','I'),fr="Coefficient de dilatation thermique lineaire cm/C du materiau"), + Chaine = SIMP (statut='f',typ=ChaineFiliation,defaut='ChaineSaturee',fr="Chaine de filiation isotopique associee au materiau"), + TauxImpuretes = SIMP (statut='f',typ=('R','I'),fr="Taux % d'impuretes") + ); +# ================================================================================================================================== +# Definition des Classes elementaires pour la geometrie +# ================================================================================================================================== +# Classe POINT : Classe de definition d'un point de l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POINT = OPER (nom="POINT",op=0,sd_prod=Point, + + fr = "Definition d'un point de l'espace", + ang = "Definition of a point in space", + Coordonnees = SIMP (typ='R',min=2,max=3,statut='o',fr="Coordonnees du point dans l'espace") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe VECTEUR : Classe de definition d'un vecteur dans l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VECTEUR = OPER (nom="VECTEUR",op=0,sd_prod=Vecteur, + + fr = "Definition d'un vecteur dans l'espace", + ang = "Definition of a vector in space", + regles = (UN_PARMI ('Composantes','Points')), + Composantes = SIMP (typ='R',min=2,max=3,statut='f',fr="Composantes du vecteur en 2D ou 3D"), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Vecteur defini par deux points") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DROITE : Classe de definition d'une droite +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DROITE = OPER (nom="DROITE",op=0,sd_prod=Droite, + + fr = "Definition d'une droite par 2 POINTs, 1 POINT et 1 VECTEUR, ou Equation ax + by + cz + d = 0", + ang = "Definition of a straight line with 2 POINTs or with Equation ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','VecteurOrigine')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition de la droite"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation d'une droite"), + VecteurOrigine = FACT (statut='f', + Vecteur = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur de la droite"), + Origine = SIMP (typ=Point,statut='f',fr="Donnee d'un point de passage de la droite"))) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SEGMENT : Classe de definition d'un segment (Idem DROITE + Longueur et Origine) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SEGMENT = OPER (nom="SEGMENT",op=0,sd_prod=Segment, + + fr = "Definition d'un segment 2 Points ou Origine + ((Longueur + Equation ax + by + d = 0) ou vecteur)", + ang = "Definition of a segment ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','Vecteur')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition du segment"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation de la droite "), + Vecteur = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur du segment"), + Longueur = SIMP (typ='R',statut='f',fr="Longueur du segment"), + Origine = SIMP (typ=Point,statut='f',fr="Donnee de l'origine du segment") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ARC_CERCLE : Classe de definition d'un arc de cercle +# Angles donnes en degres +# Dans le cas 2D on peut positionner l'arc de cercle en donnant l'angle du debut de l'arc par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur de l'arc +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ARC_CERCLE = OPER (nom="ARC_CERCLE",op=0,sd_prod=ArcCercle, + + fr = "Definition d'un arc de cercle", + ang = "Definition of a circular arc", + Type = SIMP (typ='TXM',statut='f',defaut='2D',into=('2D','3D'),fr="Type d'arc 2D ou 3D"), + Rayon = SIMP (typ='R',statut='o',fr="Rayon de l'arc de cercle"), + Angles = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres de l'arc : Total et Debut"), + VecteurAxe = SIMP (typ=Vecteur,statut='f',fr="Vecteur directeur de l'axe de l'arc") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTEUR : Classe de definition d'un disque ou d'un secteur d'une couronne circulaire +# Angle du secteur donne en degres (360° par defaut) +# Dans le cas 2D on peut positionner le secteur en donnant l'angle du debut de secteur par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur du secteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTEUR = OPER (nom="SECTEUR",op=0,sd_prod=Secteur, + + fr = "Definition d'un disque ou d'un secteur d'une couronne", + ang = "Definition of a circular sector", + Type = SIMP (typ='TXM',statut='o',into=('2D','3D'),fr="Type de secteur 2D ou 3D"), + Rayons = SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons interne et externe de la couronne"), + Angles = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres du secteur"), + Hauteur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du secteur"), + VecteurAxe = SIMP (typ=Vecteur,defaut=0.,statut='f',fr="Vecteur directeur de l'axe du secteur") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONIQUE : Classe de definition d'une conique 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONIQUE = OPER (nom="CONIQUE",op=0,sd_prod=Conique, + + fr = "Definition d'une conique 2D ax2+by2+cxy+dx+ey+f=0", + ang = "Definition of a quadratic curve 2D", + Equation = SIMP (typ='R',min=2,max=6,statut='o',fr="Coefficients successifs abcdef de l'equation d'une conique"), + OrigineVecteur = NUPL ( + elements = (SIMP (typ=Point),SIMP (typ=Vecteur)), + statut = 'f', + fr = "Donnee de l'origine et du vecteur directeur") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TRIANGLE : Classe de definition d'un triangle +# Angles donnes en degres par rapport a l'axe Ox horizontal +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TRIANGLE = OPER (nom="TRIANGLE",op=0,sd_prod=Triangle, + + fr = "Definition d'un triangle", + ang = "Definition of a triangle", + regles = (UN_PARMI ('Points','AngleCotes')), + Points = SIMP (typ=Point,min=3,max=3,statut='f'), + AngleCotes = SIMP (typ='R',min=3,max=3,statut='f',fr="Donnee d'un Angle en degres et Longueurs de deux cotes") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RECTANGLE : Classe de definition d'un rectangle +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RECTANGLE = OPER (nom="RECTANGLE",op=0,sd_prod=Rectangle, + + fr = "Definition d'un rectangle", + ang = "Definition of a rectangle", + regles = (UN_PARMI ('Points','Cotes')), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Definition du rectangle par trois points"), + Cotes = SIMP (typ='R',min=2,max=2,statut='f',fr="Donnee de la longueur de deux cotes") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARRE : Classe de definition d'un carre +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARRE = OPER (nom="CARRE",op=0,sd_prod=Carre, + + fr = "Definition d'un carre", + ang = "Definition of a square", + regles = (UN_PARMI ('Points','Cote')), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Definition du carre par deux points"), + Cote = SIMP (typ='R',statut='f',fr="Donnee de la longueur du cote du carre") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe HEXAGONE : Classe de definition d'un hexagone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +HEXAGONE = OPER (nom="HEXAGONE",op=0,sd_prod=Hexagone, + + fr = "Definition d'un hexagone", + ang = "Definition of an hexagon", + Rayon = SIMP (typ='R',statut='f',fr="Rayon du cercle inscrit dans l'hexagone") + ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYGONE : Classe de definition d'un polygone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYGONE = OPER (nom="POLYGONE",op=0,sd_prod=Polygone, + + fr = "Definition d'un polygone", + ang = "Definition of a polygon", + Points = SIMP (typ=Point,max='**',statut='f',fr="Definition d'un polygone par tous ses points") + ); +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques combinatoires ou surfaciques +# L'utilisation de certaines classes de combinatoire en surfacique consiste a simplement specifier la position de l'objet +# ou a eliminer certaines surfaces limites de la classe +# Pour une sphere : donnee du centre de la sphere +# Pour un cylindre : Pas de donnee de la hauteur, mais donnee d'un point de l'axe du cylindre +# ================================================================================================================================== +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SPHERE : Classe de definition d'une sphere (ou d'une sphere sectorisee ou decoupee en rondelles) +# Des portions de la sphere peuvent etre selectionnees en donnant leurs cotes limites sur un axe de la sphere +# (origine de l'axe au centre de la sphere, donc cotes comprises entre -R, +R si R est le rayon de la sphere) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SPHERE = OPER (nom="SPHERE",op=0,sd_prod=Sphere, + + fr = "Definition d'une forme spherique", + ang = "Definition of a spherical form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon de la sphere"), + Secteur = SIMP (typ='R',statut='f',fr="Angle du secteur de la sphere"), + TranchesAxiales = NUPL ( + max = '**', + statut = 'f', + fr = "Limites des tranches axiales de la sphere sectorisee", + elements = (SIMP (typ='R',fr="Cote depart de la tranche"),SIMP (typ='R',fr="Cote finale de la tranche"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_RECTANGULAIRE : Classe de definition d'une forme parallelepipedique de cotes paralleles aux axes de reference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_RECTANGULAIRE = OPER (nom="BOITE_RECTANGULAIRE",op=0,sd_prod=BoiteRectangulaire, + + fr = "Definition d'une d'une forme parallelepipedique rectangulaire", + ang = "Definition of a rectangular box form", + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite rectangulaire") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_GENERALE : Classe de definition d'une forme parallelepipedique quelconque +# Le plan de base de la boite doit etre le plan xOy. On donne donc uniquement les 2 vecteurs **normaux** +# aux 2 autres plans, et les 3 longueurs des arretes principales. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_GENERALE = OPER (nom="BOITE_GENERALE",op=0,sd_prod=BoiteGenerale, + + fr = "Definition d'une forme parallelepipedique quelconque", + ang = "Definition of a general box form", + VecteursDirecteurs = SIMP (typ=Vecteur,min=2,max=2,statut='o',fr="Vecteurs normaux aux faces non horizontales de la boite"), + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_X : Classe de definition d'une forme cylindrique d'axe parallele a Ox +# Pour tous les cylindres, la donnee de deux rayons transforme le cylindre circulaire en cylindre elliptique +# La donnee d'un angle limite le cylindre a ce secteur +# Pour un secteur d'un cylindre elliptique, il est necessaire de donner en plus l'angle de depart du secteur +# par rapport a l'axe majeur de l'ellipse +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_X = OPER (nom="CYLINDRE_X",op=0,sd_prod=CylindreX, + + fr = "Definition d'une forme cylindrique d'axe parallele a Ox", + ang = "Definition of a right cylinder form // Ox", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre X"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre X"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre X") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Y : Classe de definition d'une forme cylindrique d'axe parallele a Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Y = OPER (nom="CYLINDRE_Y",op=0,sd_prod=CylindreY, + + fr = "Definition d'une forme cylindrique d'axe parallele a Oy", + ang = "Definition of a right cylinder form // Oy", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Y"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Y"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Y") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Z : Classe de definition d'une forme cylindrique d'axe parallele a Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Z = OPER (nom="CYLINDRE_Z",op=0,sd_prod=CylindreZ, + + fr = "Definition d'une forme cylindrique d'axe parallele a Oz", + ang = "Definition of a right cylinder form // Oz", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Z"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Z"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Z") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE : Classe de definition d'une forme cylindrique quelconque +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE = OPER (nom="CYLINDRE",op=0,sd_prod=Cylindre, + + fr = "Definition d'une forme cylindrique quelconque", + ang = "Definition of a general cylinder form", + Rayons = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cylindre"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre"), + Angles = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONE : Classe de definition d'un forme conique +# Une portion de cone peut etre definie en donnant les cotes axiales (origine de l'axe du cone au sommet du cone) de +# la zone retenue +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONE = OPER (nom="CONE",op=0,sd_prod=Cone, + + fr = "Definition d'une forme conique", + ang = "Definition of a conic form", + DemiAngleSommet = SIMP (typ='R',statut='o',fr="Demi-angle au sommet"), + LimitesAxiales = SIMP (typ='R',min=2,max=2,statut='f',fr="Limites axiales du cone"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cone") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRISME_HEXAGONAL : Classe de definition d'une forme de prisme hexagonal 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRISME_HEXAGONAL = OPER (nom="PRISME_HEXAGONAL",op=0,sd_prod=PrismeHexagonal, + + fr = "Definition d'une forme de prisme hexagonal 3D", + ang = "Definition of a 3D hexagonal form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon du cercle circonscrit (=cote de l'hexagone)"), + Hauteur = SIMP (typ='R',statut='f',fr="Hauteur de l'hexagone"), + VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe de l'hexagone") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TORE : Classe de definition d'une forme toroidale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TORE = OPER (nom="TORE",op=0,sd_prod=Tore, + + fr = "Definition d'une forme toroidale", + ang = "Definition of a toroidal form", + Rayons = SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons du tore : 1/2 distance a l'axe et rayon de la section du tore") ) ; +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques surfaciques +# ================================================================================================================================== +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN : Classe de definition d'un plan +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN = OPER (nom="PLAN",op=0,sd_prod=Plan, + + fr = "Definition d'un plan ax + by + cz + d = 0", + ang = "Definition of a plane surface ax + by + cz + d = 0", + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee de 3 points non alignes"), + Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation du plan") + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_X : Classe de definition d'un plan perpendiculaire a l'axe Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_X = OPER (nom="PLAN_X",op=0,sd_prod=PlanX, + + fr = "Definition d'un plan perpendiculaire a Ox", + ang = "Definition of a plane surface perpendicular to Ox", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OyOz") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Y : Classe de definition d'un plan perpendiculaire a l'axe Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Y = OPER (nom="PLAN_Y",op=0,sd_prod=PlanY, + + fr = "Definition d'un plan perpendiculaire a Oy", + ang = "Definition of a plane surface perpendicular to Oy", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOz") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Z : Classe de definition d'un plan perpendiculaire a l'axe Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Z = OPER (nom="PLAN_Z",op=0,sd_prod=PlanZ, + + fr = "Definition d'un plan perpendiculaire a Oz", + ang = "Definition of a plane surface perpendicular to Oz", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOy") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYEDRE : Classe de definition d'une forme polyhedrique 3D quelconque (N faces, N > 4) +# Definition surfacique : Donnee des N plans et du choix du cote positif ou negatif +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYEDRE = OPER (nom="POLYEDRE",op=0,sd_prod=Polyedre, + + fr = "Definition d'une forme polyhedrique 3D quelconque ", + ang = "Definition of a 3D polyhedron form with N > 4 plane faces", + Plans = NUPL ( + min = 5, + max = '**', + statut = 'o', + fr = "Surfaces planes limites du polyedre", + elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"), + SIMP (typ='TXM',into=('Plus','Moins'),fr="Choix du cote positif ou negatif de l'espace"))) + ) ; + +# elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"), +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe QUADRIQUE : Classe de definition d'une quadrique 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +QUADRIQUE = OPER (nom="QUADRIQUE",op=0,sd_prod=Quadrique, + + fr = "Definition d'une quadrique 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + ang = "Definition of a quadratic curve 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + Equation = SIMP (typ='R',min=2,max=10,statut='o',fr="Coefficients successifs abcdefghij de l'equation d'une quadrique") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CELLULE : Classe de definition d'une cellule (ensemble elementaire de regions annulaires et sectorisees) +# Apres la hauteur de la cellule, entree des donnees par listes successives pour l'ensemble des couronnes de la +# cellule, la zone externe etant decrite a part dans l'attribut FormeTechnologique : +# - Liste des materiaux +# - Liste des rayons des couronnes correspondantes +# - Liste des sous-couronnes : - Numero de couronne a discretiser (Numero 1 a partir du centre), +# - Nombre de sous-couronnes, +# - Mot-cle Equivolumique si decoupage en sections transverses egales, +# - Rayons des couronnes intermediaires ou proportions volumiques si mot-cle +# Proportions indique anterieurement. +# - Liste des sectorisations : - Nom de couronne a sectoriser , +# - Nombre de secteurs, +# - Mot-cle Equivolumique si decoupage en secteurs egaux et positionnement du premier +# secteur par rapport a l'axe x, et pas de changement de composition du secteur, +# - Mot-cle alternatif Angle si on veut modifier ou positionner les secteurs dans la +# couronne : on donne alors des triplets de donnees pour chaque secteur : +# - nom du materiau composant le le secteur, +# - position trigonometrique en \260 du debut du secteur +# - et angle en \260 du secteur. +# Le trace des secteurs sont definis en partant du centre de la couronne. +# Pour la sectorisation de la forme externe, deux cas se presentent : +# - soit pas de couronnes internes : les secteurs se tracent alors en partant +# du centre de la forme externe, +# - dans le cas contraire, les secteurs partent du centre des couronnes. +# Les secteurs peuvent ne pas couvrir l'ensemble de la couronne. +# Pour la zone peripherique, on doit definir les cotes de la cellule (cas cartesien), son materiau, sa +# discretisation, et le decentrage du centre des couronnes par rapport au centre de ce contour peripherique +# (Coordonnees x,y du centre des couronnes / au centre du contour) +# Pour le moment, limitation a 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CELLULE = OPER (nom="CELLULE",op=0,sd_prod=Cellule, + + fr = "Definition d'une cellule elementaire d'un assemblage", + ang = "Definition of a basic pin cell", + Type = SIMP (typ='TXM',defaut='Combustible', + into=( 'Combustible','BarreGrise','BarreNoire','BarreAcier','BarreAic','BarreB4c', + 'Detecteur','Trou','TubeGuide','Postiche','Pyrex','ExPyrex','Gadolinium', + 'CellType1','CellType2','CellType3'),statut='o'), + HauteurMoyenne = SIMP (typ='R',defaut=1.,statut='o',fr="Hauteur moyenne de la cellule de base"), + Couronnes = FACT ( + NomsSymboliques = SIMP (typ='TXM',max='**',statut='o',fr="Liste des noms arbitraires des couronnes"), + Materiaux = SIMP (typ=Materiau,max='**',statut='o',fr="Liste des materiaux des couronnes"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',statut='o',fr="Liste des temperatures des couronnes"), + Rayons = SIMP (typ='R',max='**',statut='o',fr="Liste des rayons des couronnes"), + RayonsMineurs = SIMP (typ='R',max='**',statut='f',fr="Liste des rayons mineurs des couronnes elliptiques"), + Hauteurs = SIMP (typ='R',max='**',statut='f',fr="Liste des hauteurs des couronnes")), + SousCouronnes = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',fr="Nom symbolique de la couronne"), + NbSousCouronnes = SIMP (typ='I',fr="Nombre de sous-couronnes de discretisation"), + TypeDiscretisation = SIMP (typ='TXM',defaut='Equivolumique',into=('Equivolumique','Proportions','Equidistant'),statut='f'), + ProportionsVolumiques = SIMP (typ='R',statut='f',max='**',fr="Proportions volumiques optionnelles des sous-couronnes"), + ProfilTemperature = SIMP (typ='R',max='**',statut='f',fr="Profil de temperature")), + Homogeneisation = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',fr="Nom arbitraire de la couronne homogeneisee"), + ListeCouronnes = SIMP (typ='TXM',max='**',fr="Liste des noms des couronnes jointives a homogeneiser")), + Secteurs = FACT ( + max = '**', + statut = 'f', + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom de la couronne ou de la forme externe a sectoriser"), + NbSecteurs = SIMP (typ='I',fr="Nombre de secteurs de la couronne",statut='o'), + TypeSectorisation = SIMP (typ='TXM',defaut='Coins',into=('Equivolumique','Angle','Coins','MilieuxCotes'),statut='f'), + Sectorisation = FACT ( + max = '**', + statut = 'f', + Materiaux = SIMP (typ=Materiau,max='**',fr="Materiau des secteurs"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature des secteurs"), + AnglesDepart = SIMP (typ='R',max='**',fr="Angle de depart du secteur"), + Angles = SIMP (typ='R',max='**',fr="Angle du secteur"))), + FormeExterne = FACT ( + NomSymbolique = SIMP (typ='TXM',statut='f'), + Type = SIMP ( + typ=(ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'f', # la donnee est facultative si la cellule est inserree dans un reseau + fr = "Forme geometrique exterieure"), + Materiau = SIMP (typ=Materiau,fr="Materiau de la forme externe"), + Temperature = SIMP (typ=('R','I','TXM'),fr="Temperature du materiau de la forme externe"), + Decentrement = SIMP ( + typ = 'R', + min = 2, + max = 3, + defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / centre du contour")) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CLUSTER : Classe de definition d'un cluster de cellules cylindriques de forme exterieure quelconque +# Un cluster est defini comme une superposition centree de cadrans telephoniques (a l'ancienne mode), chaque +# cadran ayant des trous de tailles differentes, l'ensemble etant dispose dans un contour de forme quelconque. +# Possibilites donnees ci-dessous : +# - Positionnement des couronnes de canaux, chaque canal etant une CELLULE predefinie, +# - Definition du fond du cluster : +# - Serie de couronnes de materiaux distincts +# - Forme exterieure quelconque +# - Sectorisation eventuelle de la zone peripherique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CLUSTER = OPER (nom="CLUSTER",op=0,sd_prod=Cluster, + fr = "Definition d'un cluster de cellules cylindriques", + ang = "Definition of a cylindrical cell cluster", + Hauteur = SIMP (typ='R',defaut=1.,statut='f',fr="Hauteur du cluster"), + Couronnes = FACT ( + Cellules = SIMP (typ=Cellule,max='**',fr="Liste des cellules sur chaque cercle"), + Rayons = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes de cellules"), + Angles = SIMP (typ='R',max='**',fr="Liste des pas angulaires de positionnement des cellules cylindriques")), + FormeGlobale = FACT ( + NomSymbolique = SIMP (typ='TXM'), + RayonsInternes = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes internes",statut='f'), + MateriauxInternes = SIMP (typ=Materiau,max='**',fr="Materiaux Couronnes internes",statut='f'), + TemperaturesInternes = SIMP (typ=('R','I','TXM'),max='**',fr="Temperatures des materiaux internes",statut='f'), + FormeExterne = SIMP ( + typ = (ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'o', + fr = "Forme geometrique exterieure"), + MateriauExterne = SIMP (typ=Materiau,fr="Materiau de la forme externe",statut='o'), + TemperatureExterne = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature du materiau externe",statut='f'), + Decentrement = SIMP ( + typ = 'R', + min = 2, + max = 3, + defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / centre du contour")), + SecteursExternes = FACT ( + NbSecteurs = SIMP (typ='I',fr="Nombre de secteurs de la couronne externe",statut='o'), + TypeSecteur = SIMP ( + typ = 'TXM', + defaut = 'Coins', + into = ('Equivolumique','Angle','Coins','MilieuxCotes'), + statut = 'f'), + Materiaux = SIMP (max='**',typ=Materiau,fr="Materiau des secteurs",statut='f'), + AngleDepart = SIMP (max='**',typ='R',fr="Angle de depart des secteurs",statut='f'), + AngleSecteur = SIMP (max='**',typ='R',fr="Angle des secteurs",statut='f')) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ORIENTATION : Classe de definition d'une orientation angulaire dans un plan 2D apres symetrie eventuelle / Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ORIENTATION = OPER (nom="ORIENTATION",op=0,sd_prod=Orientation, + + fr = "Definition d'une orientation d'un reseau ou d'une cellule", + ang = "Definition of a cell or lattice orientation", + Symetrie = SIMP (typ=(Plan,PlanX,PlanY,PlanZ),statut='f',fr="Indication d'une operation de symetrie / Plan"), + AngleRotation = SIMP (typ='R',defaut=0.,statut='f',fr="Angle de rotation en degres"), + CentreRotation = SIMP (typ=Point,statut='f',fr='Centre de rotation'), + AxeRotation = SIMP (typ=Vecteur,statut='f',fr="Vecteur de l'axe de rotation") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FORME_POSITIONNEE : Classe de definition d'une forme geometrique positionnee +# La position est definie a l'aide du centre de la forme geometrique, +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FORME_POSITIONNEE = OPER (nom="FORME_POSITIONNEE",op=0,sd_prod=FormePositionnee, + + fr = "Definition d'une forme positionnee", + ang = "Definition of a shape and its position", + Forme = SIMP ( + typ = (Sphere,BoiteRectangulaire,BoiteGenerale,CylindreX,CylindreY,CylindreZ,Cylindre,Cone, + PrismeHexagonal,Tore,Polyedre,Cellule,Cluster), + statut = 'o', + fr = "Forme geometrique de base a positionner"), + PositionCentre = SIMP (typ=Point,statut='o',fr="Coordonnees du centre de la forme geometrique"), + OrientationForme = SIMP (typ=Orientation,statut='f',fr="Orientation de la forme") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_SURFACIQUE : Classe de definition d'une geometrie surfacique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_SURFACIQUE = OPER (nom="GEOMETRIE_SURFACIQUE",op=0,sd_prod=GeometrieSurfacique, + + fr = "Definition d'une geometrie surfacique", + ang = "Definition of a surfacic geometry", + MateriauRemplissage = SIMP (typ=Materiau,statut='o',fr="Materiau de remplissage de la geometrie surfacique"), + Surfaces = NUPL ( + max = '**', + statut = 'o', + fr = "Serie de couples (Surface,Plus ou Moins) definissant les surfaces limites de la geometrie", + elements = ( + SIMP (typ='TXM'), + SIMP (typ='TXM',into=('Plus','Moins')))) + ); + +# simp (typ=(PlanX,PlanY,PlanZ,Plan,CylindreX,CylindreY,CylindreZ,Cylindre,Sphere,Cone,Quadrique)), + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_COMBINATOIRE : Classe de definition d'une geometrie combinatoire +# Ecrasement : Constitution par ecrasements successifs (dans l'ordre des donnees) de la +# Geometrie Initiale, la frontiere externe etant celle de la geometrie initiale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_COMBINATOIRE = OPER (nom="GEOMETRIE_COMBINATOIRE",op=0,sd_prod=GeometrieCombinatoire, + + fr = "Definition d'une geometrie combinatoire", + ang = "Definition of a combinatorial geometry", + GeometriePremierPlan = SIMP (typ=FormePositionnee,statut='o',fr="Geometrie se trouvant au premier plan"), + GeometrieEcrasee = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries ecrasées et surchargées par la GeometriePremierPlan"), + GeometrieUnion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan en gardant les interfaces, les intersections etant des volumes particuliers"), + GeometrieReunion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan pour former un volume unique"), + GeometrieIntersection = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a intersecter avec la GeometriePremierPlan") + ) ; + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CORRESPONDANCE_REPERE_POSITION_RESEAU : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CORRESPONDANCE_REPERE_POSITION_RESEAU = OPER (nom="CORRESPONDANCE_REPERE_POSITION_RESEAU",op=0,sd_prod=CorrespondanceReperePositionReseau, + + fr = "Correspondance entre reperes alphanumeriques et cases d'un reseau", + ang = "Alphanumeric identificators and lattice coordinates", + Positions = NUPL ( max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I',fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I',fr="Seconde Coordonnee entiere de l'assemblage"))) + ); + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESEAU : +# Classe de definition d'un reseau de juxtapositions de cellules ou de reseaux +# Assemblage de cellules ou de reseaux dans une grille rectangulaire ou hexagonale +# Les positions des cellules et des reseaux dans le nouveau reseau sont a fournir sur les mailles +# du reseau sans tenir compte des symetries, +# Le reseau peut etre charge : +# - de maniere uniforme : un seul type de CELLULE ou de RESEAU +# - de maniere complete : a chaque maille doit etre affecte un reseau ou une cellule et optionnellement son +# orientation, l'ordre des donnees dans le plan radial etant celui obtenu en partant de l'element le plus +# bas a gauche, et dans le sens axial ensuite (eventuellement si 3D) +# - de maniere partielle : liste des cellules et reseaux charges et leur position xyz dans le nouveau reseau +# et orientations correspondantes de ces cellules et reseaux +# Des reperes alphanumeriques arbitraires peuvent etre associes a chaque maille du reseau, ce qui permet +# si necessaire de manipuler ces elements du reseau par l'intermediaire de ces symboles (exemple des +# reperes bataille navale des assemblages dans le reseau d'un coeur REP). +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESEAU = OPER (nom="RESEAU",op=0,sd_prod=Reseau, + + fr = "Definition d'un reseau compose de juxtapositions de cellules, de reseaux ou d'assemblages", + en = "Definition of a lattice", + Identificateur = SIMP (typ='TXM',statut='f',fr="Identificateur arbitraire du reseau"), + TypeGeometrie = SIMP (typ='TXM',into=('cartesienne','hexagonale'),defaut='cartesienne',statut='f'), + NbMaillesX = SIMP (typ='I',defaut=17,statut='o',fr="Nbre de mailles sur le premier axe du reseau"), + NbMaillesY = SIMP (typ='I',defaut=17,statut='f',fr="Nbre de mailles sur le second axe du reseau"), + NbMaillesZ = SIMP (typ='I',defaut=1 ,statut='f',fr="Nbre de mailles sur l'axe vertical du reseau"), + PasReseau = SIMP (typ='R',defaut=1.26 ,statut='f',max=2,fr="Pas du reseau en X et Y"), + MateriauRemplissage = SIMP (typ=Materiau,defaut='ModExt',statut='f',fr="Materiau de remplissage du reseau"), + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Complet",into=("Uniforme","Complet","Partiel")), + BlocUniforme = BLOC (condition = "TypeDefinition=='Uniforme'", + ElementsBase = SIMP (typ=(Cellule,Reseau,Cluster,GeometrieCombinatoire,AssemblageCombustibleCharge),statut='o', + fr = "Remplissage uniforme du nouveau reseau par un element particulier"), + OrientationElement = SIMP (typ=Orientation,fr="Orientation de l'element geometrique de base",statut='f')), + BlocComplet = BLOC (condition = "TypeDefinition=='Complet'", + ElementsBase = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='TXM',fr="Sigle ou repere associe a l'element geometrique de base"))), + Chargement = SIMP (typ='TXM',statut='f',max='**', + fr="Liste ordonnee des sigles associes aux elements geometriques charges"), + Regroupement = SIMP (typ='I',statut='f',max='**', + fr="Indices de regroupement des elements en approximation multicellule"), + Reperes = SIMP (typ='TXM',max='**',statut='f',fr="Reperes arbitraires des elements charges"), + ), + BlocPartiel = BLOC (condition = "TypeDefinition=='Partiel'", + Chargement = FACT (max='**', + ElementsPositionnes = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='I',min=2,max=2,fr="Coordonnees i j de l'element geometrique de base"))), + ElementsReperes = NUPL (max='**', statut='f', + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)), + SIMP (typ='TXM',fr="Repere associe a l'element geometrique de base"))), + CorrespondanceReperePositions = SIMP (typ=CorrespondanceReperePositionReseau, + statut='f', + fr="Correspondance entre Repere alphanumerique et coordonnees dans le reseau"), + OrientationElement = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements a positionner"), + )), + ZonePeripherique = FACT ( + Epaisseurs = SIMP (typ='R',max='**',statut='f',fr="Liste des epaisseurs des couches peripheriques"), + Materiaux = SIMP (typ=Materiau,max='**',statut='f',fr="Liste des materiaux des couches peripheriques"), + MateriauExterne = SIMP (typ=Materiau,statut='f',fr="Materiau de remplissage de la zone externe du reseau hexagonal")) + ); + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRILLE_ASSEMBLAGE : Classe de definition des grilles composant le squelette des assemblages combustibles +# Caracteristiques technologiques (dimension, materiaux de composition) et positionnement simplifie +# des materiaux dans les canaux de l'assemblage pour dilution homogene a 2D dans le milieu peripherique. +# - Materiaux fournis sous forme de couples (nom de materiau et masse en g) +# - Repartition decrite en donnant pour une liste de materiaux (faisant partie des materiaux +# precedemment indiques) la liste des types de cellules (precedee du mot-cle TypeCellule) et des +# types de materiaux (precedes du mot-cle TypeMateriau) devant etre modifies par la presence des +# grilles +# < liste de MATERIAU >, +# TypeCellule < liste de types de cellule >, +# TypeMateriau < liste de types de materiau > +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRILLE_ASSEMBLAGE = OPER (nom="GRILLE_ASSEMBLAGE",op=0,sd_prod=GrilleAssemblage, + + fr = "Definition d'une grille d'assemblage", + ang = "Definition of an elementary assembly grid", + TypeGrille = SIMP (typ='TXM',defaut='GrilleMelange',statut='f',fr="Type de grille de structure assemblage"), + Hauteur = SIMP (typ='R',defaut=3.3,statut='f',fr="Hauteur de la grille de structure assemblage"), + Largeur = SIMP (typ='R',defaut=21.338,statut='f',fr="Largeur de la grille de structure assemblage"), + MateriauxMasse = NUPL ( + elements = (SIMP (typ=Materiau),SIMP (typ='R')), + max = '**', + statut = 'f', + fr = "Serie de couples (Materiau,masse en g) de composition de la grille"), + Repartition = FACT ( + max = '**', + statut = 'o', + MateriauGrille = SIMP (typ=Materiau,fr="Nom du materiau a repartir",statut='o'), + TypeCellule = SIMP (typ='TXM',max='**',statut='o',fr="Liste des types de cellule ou est reparti le materiau"), + TypeMateriau = SIMP (typ='TXM',max='**',statut='o') ) + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout inferieur d'un assemblage combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieInferieureAssemblageCombustible, + + fr = "Definition de la partie inferieure d'un assemblage combustible", + ang = "Definition of the bottom part of a fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau de l'embout inferieur"), + MasseBouchonInferieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du bouchon inferieur du crayon combustible"), + HauteurBouchonInferieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon inferieur du crayon combustible"), + MateriauBouchonInferieurCrayonCombustible = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon inferieur du crayon combustible"), + MasseEmbout = SIMP (typ='R',statut='o',fr="Masse de l'embout inferieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice de l'embout inferieur"), + LargeurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice de l'embout inferieur"), + TrousPlaqueAdaptatrice = NUPL ( + max = '**', + statut = 'o', + elements = ( SIMP (typ='I',statut='o',fr="Nombre de trous de taille definie ci-apres"), + SIMP (typ='TXM',into=('Rayon','Cotes'),statut='o',fr="Choix de la forme des trous, elliptique ou rectangulaire"), + SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons ou cotes des trous"), + SIMP (typ='TXM',defaut='Hauteur',into=('Hauteur','Epaisseur'),statut='o',fr="Mot-cle au choix"), + SIMP (typ='R',statut='o',fr="Hauteur des trous dans la plaque adaptatrice"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre bouchon combustible et plaque adaptatrice"), + HauteurPied = SIMP (typ='R',statut='o',fr="Hauteur du pied de l'embout inferieur"), + CapuchonRint = SIMP (typ='R',statut='f',fr="Rayon interne du capuchon"), + CapuchonRext = SIMP (typ='R',statut='f',fr="Rayon externe du capuchon"), + HauteurVisEpaulee = SIMP (typ='R',statut='f',fr="Hauteur des vis epaulees des tubes guides"), + MasseVisEpaulee = SIMP (typ='R',statut='f',fr="Masse totale des vis epaulees des tubes guides"), + VisEpauleeRint = SIMP (typ='R',statut='f',fr="Rayon interne d'une vis epaulee"), + VisEpauleeRext = SIMP (typ='R',statut='f',fr="Rayon externe d'une vis epaulee"), + MasseFiltre = SIMP (typ='R',statut='f',fr="Masse du filtre anti-debris"), + MateriauFiltre = SIMP (typ=Materiau, statut='f', defaut='INCONEL',fr="Materiau du filtre anti-debris"), + HauteurCale = SIMP (typ='R',statut='f',fr="Hauteur de la cale dans le crayon combustible"), + MateriauCale = SIMP (typ=Materiau, statut='f', defaut='ACIER',fr="Materiau de la cale dans le crayon combustible"), + RayonPionCentrage = SIMP (typ='R',statut='f',fr="Rayon externe des pions de centrage de la plaque inferieure coeur"), + HauteurPionCentrage = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage de la plaque inferieure coeur"), + HauteurOgivePionCentrage = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage de la plaque inferieure coeur"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage de la plaque inferieure coeur"), + HauteurBouchonTubeGuide = SIMP (typ='R',statut='f',fr="Hauteur des bouchons des tubes guides"), + MateriauBouchonTubeGuide = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des bouchons des tubes guides") + ) ; + +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout superieur d'un assemblage combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieSuperieureAssemblageCombustible, + + fr = "Definition de la partie superieure d'un assemblage combustible", + ang = "Definition of the top part of a fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="materiau de l'embout superieur"), + MasseBouchonSuperieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du bouchon superieur du crayon combustible"), + HauteurBouchonSuperieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon superieur du crayon combustible"), + MateriauBouchonSuperieurCrayonCombustible = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon superieur du crayon combustible"), + RessortCrayonCombustible = SIMP (typ='R',statut='o',fr="Masse du ressort du crayon combustible"), + HauteurChambreExpansion = SIMP (typ='R',statut='o',fr="Hauteur de la chambre d'expansion"), + MasseEmbout = SIMP (typ='R',statut='o',fr="Masse de l'embout superieur"), + HauteurEmbout = SIMP (typ='R',statut='o',fr="Hauteur de l'embout superieur"), + MasseRessortsEmbout = SIMP (typ='R',statut='o',fr="Masse des ressorts de l'embout superieur"), + MateriauRessortsEmbout = SIMP (typ=Materiau, statut='f', defaut='INCONEL',fr="Materiau des ressorts de l'embout superieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice"), + LargeurPlaqueAdaptatrice = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice"), + TrousPlaqueAdaptatrice = NUPL ( + max = '**', + statut = 'o', + elements = ( SIMP (typ='I',), + SIMP (typ='TXM',into=('Rayon','Cotes')), + SIMP (typ='R',min=2,max=2,fr="Rayons mineur et majeur ou Cotes du trou"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur')), + SIMP (typ='R',fr="Hauteur du trou"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre Bouchon combustible et Plaque adaptatrice"), + EpaisseurJupe = SIMP (typ='R',statut='o',fr="Epaisseur de la jupe de l'embout superieur"), + HauteurJupe = SIMP (typ='R',statut='f',fr="Hauteur de la jupe de l'embout superieur"), + RayonPionCentrage = SIMP (typ='R',statut='f',fr="Rayon des pions de centrage superieurs"), + HauteurPionCentrage = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage superieurs"), + HauteurOgivePionCentrage = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage superieurs"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage superieurs"), + RayonInterneManchon = SIMP (typ='R',statut='f',fr="Rayon interne des manchons des tubes guides"), + RayonExterneManchon = SIMP (typ='R',statut='f',fr="Rayon externe des manchons des tubes guides"), + HauteurManchon = SIMP (typ='R',statut='f',fr="Hauteur des manchons des tubes guides"), + MasseManchon = SIMP (typ='R',statut='f',fr="Masse d'un manchon des tubes guides") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_AUTOPROTECTION : Classe de definition des donnees d'autoprotection du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_AUTOPROTECTION = OPER (nom="OPTIONS_AUTOPROTECTION",op=0,sd_prod=OptionsAutoprotection, + + fr = "Definition des donnees d'autoprotection des resonances", + ang = "Definition of resonance self shielding data", + TypeCombustible = SIMP (typ='TXM',max='**',statut='o',fr="Type de combustible auquel s'appliquent ces options d'autoprotection"), + MethodeAutoprotection = SIMP (typ='TXM',into=('SanchezCoste','SousGroupes'),defaut='SanchezCoste',statut='f'), + IsotopesAutoproteges = NUPL ( + max = '**', + elements = (SIMP (typ=Isotope,statut='o',fr="Nom de l'isotope a autoproteger"), + SIMP (typ='TXM',into=('Moyenne','Detaillee','Couronne'),statut='o'), + SIMP (typ='TXM',into=('Materiaux','Cellules'),statut='f',fr="Choix d'autoprotection sur les materiaux ou les cellules"), + SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou de cellules concernes"))), + Irradiations = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection"), + IrradiationsPoison = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection des poisons integres au combustible") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_TYPE : Classe de definition d'un type d'assemblage (ensemble de crayons ou de reseaux quelconques) +# Rajout des structures grilles et embouts (dans le cas des REP) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_TYPE = OPER (nom="ASSEMBLAGE_TYPE",op=0,sd_prod=AssemblageType, + + fr = "Definition d'un assemblage type et des elements associes eventuels", + ang = "Definition of an assembly type and its associated elements", +# TypeGeometrie = SIMP (typ='TXM',into=('Cartesienne','Hexagonale','Generale'),defaut='Cartesienne',statut='f'), +# TypeAbsorbant = SIMP (typ='TXM',defaut='0P',statut='f'), +# Identificateur = SIMP (typ='TXM',defaut='AFA 17 0P 0P',statut='f'), + Geometrie = SIMP (typ=(Cellule,Reseau,GeometrieCombinatoire),statut='o',max='**', + fr="Liste des geometries associees a l'assemblage"), +# Symetrie = SIMP (typ='TXM',into=('1/4','1/8','1/2','PI','PI/2','PI/6','PI/3','2PI/3','SansSymetrie'), +# defaut='SansSymetrie',statut='f'), +# ZoneCalculee = SIMP (typ='TXM',defaut='Entiere', +# into=('Entiere','1/2 N','1/2 S','1/2 E','1/2 O','1/4 N-E','1/4 N-O','1/4 S-E', +# '1/4 S-O','1/8 E-NE','1/8 N-NE','1/8 N-NO', +# '1/8 O-SO','1/8 S-SO','1/8 S-SE','1/8 E-SE', +# '1/6 E','1/6 NE','1/6 NO','1/6 O''1/6 SO','1/6 SE'),statut='f'), + GrillesStructure = NUPL ( + max = '**', + statut = 'f', + elements = ( SIMP (typ=GrilleAssemblage,fr="Type de grille"), + SIMP (typ='R',max='**',fr="Positions axiales du type de grille"))), + PartieInferieure = SIMP (typ=PartieInferieureAssemblageCombustible,statut='f',fr="Type d'embout inferieur"), + PartieSuperieure = SIMP (typ=PartieSuperieureAssemblageCombustible,statut='f',fr="Type d'embout superieur"), + ElementsAssocies = SIMP (typ=(ElementsGrappeCommande,ElementsAbsorbantsFixes,GrappeBouchonAssemblage),max='**',statut='f') +# ZoneCalculee = SIMP (typ='DROITE',min=2,max=2,statut='f',fr="Droites delimitant la zone de calcul"), +# DonneesAutoprotection = SIMP (typ=Autoprotection,statut='f') + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_COMBUSTIBLE_CHARGE : Classe de definition d'un assemblage combustible charge dans un coeur REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_COMBUSTIBLE_CHARGE = OPER (nom="ASSEMBLAGE_COMBUSTIBLE_CHARGE",op=0,sd_prod=AssemblageCombustibleCharge, + + fr = "Definition d'un assemblage combustible charge en reacteur", + ang = "Definition of a core loaded fuel assembly ", + Identificateur = SIMP (typ='TXM',statut='o',fr="Code d'identification de l'assemblage combustible"), + Constructeur = SIMP (typ='TXM',statut='o',into=('FRAMATOME','SIEMENS','ABB','ENUSA','WESTINGHOUSE')), + TypeAssemblage = SIMP (typ=AssemblageType,statut='o'), + CleControle = SIMP (typ='TXM',statut='o'), + Engagement = SIMP (typ='TXM',statut='o'), + NumeroLot = SIMP (typ='I',statut='o'), + EnrichissementTheoriqueU235 = SIMP (typ='R',statut='o'), + EnrichissementTheoriquePu = SIMP (typ='R',statut='f'), + MasseTheoriqueNL = SIMP (typ='R',statut='o'), + MasseInitialeUPu = SIMP (typ='R',statut='o'), + MasseInitialeU232 = SIMP (typ='R',statut='f'), + MasseInitialeU234 = SIMP (typ='R',statut='f'), + MasseInitialeU235 = SIMP (typ='R',statut='f'), + MasseInitialeU236 = SIMP (typ='R',statut='f'), + MasseInitialePu239 = SIMP (typ='R',statut='f'), + MasseInitialePu240 = SIMP (typ='R',statut='f'), + MasseInitialePu241 = SIMP (typ='R',statut='f'), + MasseInitialePu242 = SIMP (typ='R',statut='f'), + MasseInitialeAm241 = SIMP (typ='R',statut='f'), + AbsorbantFixe = SIMP (typ='TXM',statut='f'), + Campagnes = NUPL ( + max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur de la campagne"),SIMP (typ='TXM',fr="Etat de l'assemblage"))), + BibliothequeNeutronique = SIMP (typ='TXM',statut='f',fr="Repertoire des Bibliothèques neutroniques associees") ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENT_BARRE : Classe de définition d'une barre element d'un assemblage +# Definition des barres des grappes de commande (barre et gaine, et composants axiaux) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENT_BARRE = OPER (nom="ELEMENT_BARRE",op=0,sd_prod=ElementBarre, + + fr = "Définition d'une barre element d'un assemblage", + en = "Definition of an assembly rod element", + MateriauPartieInferieure = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie inferieure de la barre"), + MateriauPartieSuperieure = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie superieure de la barre"), + HauteurBarre = SIMP (typ='R',statut='o',fr="Hauteur de la barre"), + HauteurPartieInferieure = SIMP (typ='R',statut='f',fr="Hauteur de la partie inferieure de la barre"), + HauteurPartieSuperieure = SIMP (typ='R',statut='f',fr="Hauteur de la partie superieure de la barre"), + RayonInternePartieInferieure = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie inferieure de la barre"), + RayonInternePartieSuperieure = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie superieure de la barre"), + RayonExternePartieInferieure = SIMP (typ='R',statut='o',fr="Rayon Externe de la partie inferieure de la barre"), + RayonExternePartieSuperieure = SIMP (typ='R',statut='f',fr="Rayon Externe de la partie superieure de la barre"), + MasseRessort = SIMP (typ='R',statut='o',fr="Masse du ressort de la barre"), + MateriauRessort = SIMP (typ=Materiau,statut='o',fr="Materiau du ressort de la barre"), + HauteurRessort = SIMP (typ='R',statut='o',fr="Hauteur du ressort de la barre"), + HauteurBouchonInferieur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon inferieur de la barre"), + HauteurBouchonSuperieur = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon superieur de la barre"), + RayonBouchonInferieur = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon inferieur de la barre"), + RayonBouchonSuperieur = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon superieur de la barre"), + MateriauGaine = SIMP (typ=Materiau,defaut='ACIER',statut='o',fr="Materiau de la gaine externe de la barre"), + RayonInterneGaine = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Interne de la gaine externe de la barre"), + RayonExterneGaine = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Externe de la gaine externe de la barre") + ) ; +#---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_GRAPPE_COMMANDE : Classe de définition des éléments des grappes de commande +# Association avec les différents types de barres absorbantes +# Description simplifiée de l'araignée et du bouchon des barres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_GRAPPE_COMMANDE = OPER (nom="ELEMENTS_GRAPPE_COMMANDE",op=0,sd_prod=ElementsGrappeCommande, + + fr = "Définition des éléments des grappes de commande", + en = "Definition of control rod cluster components", + ElementsBarre = SIMP (typ= ElementBarre, max='**',statut='f',fr="Liste des barres absorbantes associees"), + HauteurPasInsertion = SIMP (typ='R',defaut=1.5875, statut='f'), + HauteurInsertionMax = SIMP (typ='R',defaut=300., statut='f'), + NbPasInsertion = SIMP (typ='I',defaut=0, statut='f'), + HauteurAraignee16P = SIMP (typ='R',defaut=0., statut='f'), + HauteurAraignee4M = SIMP (typ='R',defaut=0., statut='f'), + HauteurAraignee4G = SIMP (typ='R',defaut=0., statut='f'), + HauteurPommeau = SIMP (typ='R',defaut=0., statut='f'), + RayonPommeau = SIMP (typ='R',defaut=0., statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ABSORBANTS_REP : Classe de definition des elements des grappes d'absorbants fixes +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_ABSORBANTS_FIXES = OPER (nom="ELEMENTS_ABSORBANTS_FIXES",op=0,sd_prod=ElementsAbsorbantsFixes, + + fr = "Definition des elements des grappes d'absorbants fixes", + ang = "Definition of non movable absorber control rod cluster elements", +# Limitation a 12 caracteres +# HBouchInfPyrex = SIMP (typ='R',statut='f'), +# RBouchInfPyrex = SIMP (typ='R',statut='f'), +# HZoneVidePyrex = SIMP (typ='R',statut='f'), +# HBouchSupPyrex = SIMP (typ='R',statut='f'), +# RBouchSupPyrex = SIMP (typ='R',statut='f'), +# MatBouchonPyrex = SIMP (typ=Materiau,statut='f') + CrayonPyrexHauteurBouchonInferieur = SIMP (typ='R',statut='f'), + CrayonPyrexRayonBouchonInferieur = SIMP (typ='R',statut='f'), + CrayonPyrexHauteurZoneVide = SIMP (typ='R',statut='f'), + CrayonPyrexHauteurBouchonSuperieur = SIMP (typ='R',statut='f'), + CrayonPyrexRayonBouchonSuperieur = SIMP (typ='R',statut='f'), + CrayonPyrexMateriauBouchon = SIMP (typ=Materiau,statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRAPPE_BOUCHON_ASSEMBLAGE_REP : Classe de definition d'une grappe bouchon +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRAPPE_BOUCHON_ASSEMBLAGE = OPER (nom="GRAPPE_BOUCHON_ASSEMBLAGE",op=0,sd_prod=GrappeBouchonAssemblage, + + fr = "Definition d'une grappe bouchon d'assemblage combustible", + ang = "Definition of ", + HauteurBouchonPartieBasse = SIMP (typ='R',statut='f'), + RayonBouchonPartieBasse = SIMP (typ='R',statut='f'), + HauteurBouchonPartieIntermediaire1 = SIMP (typ='R',statut='f'), + RayonBouchonPartieIntermediaire1 = SIMP (typ='R',statut='f'), + HauteurBouchonPartieIntermediaire2 = SIMP (typ='R',statut='f'), + RayonBouchonPartieIntermediaire2 = SIMP (typ='R',statut='f'), + HauteurBouchonRegionSousPlaque = SIMP (typ='R',statut='f'), + HauteurBouchonRegionSurPlaque = SIMP (typ='R',statut='f'), + RayonBouchonRegionPlaque = SIMP (typ='R',statut='f'), + HauteurSupport = SIMP (typ='R',statut='f'), + MasseGrappe = SIMP (typ='R',statut='f'), + Materiau = SIMP (typ=Materiau,statut='f') ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ASSEMBLAGE : Classe de définition des éléments associes a l'assemblage combustibe REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class ReflexionIsotrope (TObjet):pass +#ELEMENTS_ASSEMBLAGE = OPER (nom="ELEMENTS_ASSEMBLAGE",op=0,sd_prod=ElementsAssemblage, +# +# fr = "Definition des elements associes a l'assemblage", +# ang = "Definition of the fuel assembly associated elements", +# GrappeBouchon = SIMP (typ=GrappeBouchonAssemblage,statut='o'), +# CrayonsAbsorbants = SIMP (typ=ElementsAbsorbants,statut='o'), +# GrappesCommande = SIMP (typ=ElementsGrappeCommande,statut='o') +# ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe SYSTEME_UNITES_MESURE : Classe de definition du systeme d'unites pour l'expression des donnees +# Sauf indication contraire dans les attributs des classes, les unites utilisees sont definies +# dans la classe ci-dessous +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SYSTEME_UNITES_MESURE = OPER (nom="SYSTEME_UNITES_MESURE",op=0,sd_prod=SystemeUnitesMesure, + + fr = "Definition du systeme d'unites pour l'expression des donnees", + ang = "Definition of data unit system", + Longueur = SIMP (typ='TXM',statut='o',defaut='cm'), + Masse = SIMP (typ='TXM',statut='o',defaut='g'), + Temps = SIMP (typ='TXM',statut='o',defaut='s'), + Irradiation = SIMP (typ='TXM',statut='o',defaut='MWj/t'), + Fluence = SIMP (typ='TXM',statut='o',defaut='n/kb'), + SectionEfficaceMicroscopique = SIMP (typ='TXM',statut='o',defaut='barn'), + SectionEfficaceMacroscopique = SIMP (typ='TXM',statut='o',defaut='cm-1'), + MasseVolumique = SIMP (typ='TXM',statut='o',defaut='g/cm3'), + Concentration = SIMP (typ='TXM',statut='o',defaut='E24*atome/cm3'), + Temperature = SIMP (typ='TXM',statut='o',defaut='C'), + ProportionMateriau = SIMP (typ='R',statut='o',defaut=0.01), + Taux = SIMP (typ='R',statut='o',defaut=0.01), + Enrichissement = SIMP (typ='R',statut='o',defaut=0.01), + Pression = SIMP (typ='TXM',statut='o',defaut='bar') ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classes CONDITION_LIMITE elementaires : Classes de definition de Conditions limites elementaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VIDE = OPER (nom="VIDE",op=0,sd_prod=Vide, + fr = "Condition aux limites de vide", + ang= "Void boundary condition" ) ; + +REFLEXION_ISOTROPE = OPER (nom="REFLEXION_ISOTROPE",op=0,sd_prod=ReflexionIsotrope, + fr = "Condition aux limites de reflexion isotrope", + ang= "Isotropic Reflexion boundary condition" ) ; + +REFLEXION_SPECULAIRE = OPER (nom="REFLEXION_SPECULAIRE",op=0,sd_prod=ReflexionSpeculaire, + fr = "Condition aux limites de reflexion speculaire", + ang= "Specular Reflexion boundary condition" ) ; +ALBEDO = OPER (nom="ALBEDO",op=0,sd_prod=Albedo, + fr = "Condition aux limites d'albedo", + ang= "Albedo boundary condition", + albedo = SIMP (typ='R',statut='o',max='**') ) ; +TRANSLATION = OPER (nom="TRANSLATION",op=0,sd_prod=Translation, + fr = "Condition aux limites de translation", + ang = "Translation boundary condition", + Vecteur = SIMP (typ=Vecteur,statut='o') ) ; +ROTATION = OPER (nom="ROTATION",op=0,sd_prod=Rotation, + fr = "Condition aux limites de rotation", + ang = "Rotational boundary condition", + Centre = SIMP (typ=Point,statut='o'), + Angle = SIMP (typ='R',statut='o',defaut=90.) ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_SPECIALE : Classe de definition de Conditions limites sur les surfaces elementaires de la geometrie +# modifiant la CL generale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_SPECIALE = OPER (nom="CONDITION_LIMITE_SPECIALE",op=0,sd_prod=ConditionLimiteSpeciale, + + fr = "Condition limite particuliere qui sera plaquee sur la geometrie", + ang = "Special boundary condition added to the geometry", + Type = SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation),statut='o'), + ZonesApplication = SIMP ( typ=(Segment,ArcCercle,Conique),max='**',statut='o', + fr="Liste des segments ou surfaces sur lesquels porte la condition limite") + ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_GENERALE : Classe de definition des conditions limites de l'objet geometrique complet +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_GENERALE = OPER (nom="CONDITION_LIMITE_GENERALE",op=0,sd_prod=ConditionLimiteGenerale, + + fr = "Condition limite a la surface externe de la geometrie complete", + ang = "Boundary condition for the complete geometry", + ZoneCalculee = NUPL (statut='f',min=2,max=2,fr="Droites ou plans delimitant la zone de calcul", + elements = (SIMP (typ=(Droite,Plan)), SIMP (typ='TXM',into=('Plus','Moins')))), + ConditionParDefaut = SIMP (typ=(Vide, ReflexionIsotrope, ReflexionSpeculaire, Albedo), + defaut=ReflexionIsotrope, + statut='f', + fr="Condition limite par defaut"), + ConditionsParticulieres = NUPL ( + fr = "Conditions particulieres modifiant localement la condition limite par defaut", + max = '**', + statut = 'f', + elements = (SIMP (typ='TXM',into=('X-','X+','Y-','Y+','Z-','Z+','R+','X','Y','Z')), + SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation)))), + ConditionsSupplementaires = SIMP ( + typ = ConditionLimiteSpeciale, + statut = 'f', + max = '**', + fr = "Conditions limites non exprimables avec les donnees precedentes") + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="POSITION_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PositionAssemblageCombustible, + + fr = "Position des assemblages combustibles", + ang = "Position of fuel assemblies", + NbAssemblagesCombustibles = SIMP (typ='I',statut='o',defaut=157), + regles=(UN_PARMI('PositionReseau', 'Positions'),), + PositionReseau = SIMP (typ=CorrespondanceReperePositionReseau,statut="f"), + Positions = NUPL ( max='**',statut='f', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere de l'assemblage"))) + ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_INSTRUMENTATION : Classe de definition de la position des assemblages instrumentes dans un REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_INSTRUMENTATION_INTERNE = OPER (nom="POSITION_INSTRUMENTATION_INTERNE",op=0,sd_prod=PositionInstrumentationInterne, + + fr = "Definition de la position des assemblages instrumentes", + ang = "Definition of neutron flux detector position", +# TypePalier = SIMP (typ='TXM',max='**',statut='o'), + NbAssemblagesInstrumentes = SIMP (typ='I',statut='o'), + Positions = NUPL ( + max = '**', + statut = 'o', + elements = (SIMP (typ='TXM',fr= "Type d'instrumentation"), + SIMP (typ='I',min=2,max=2,fr= "Coordonnees entieres de l'assemblage instrumente dans le reseau"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_GRAPPES_COMMANDE : Classe de definition des grappes de commande pour un type de schema de grappe +# Donnees de la position (coordonnees entieres en xy), du type de grappe et du groupe d'appartenance +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_GRAPPES_COMMANDE = OPER (nom="POSITION_GRAPPES_COMMANDE",op=0,sd_prod=PositionGrappesCommande, + + fr = "Definition des grappes de commande pour un schema d'implantation particulier", + ang = "Definition of control rod cluster position ant type", + TypeSchema = SIMP (typ='TXM',statut='o'), + NbTotalGrappes = SIMP (typ='I',statut='o'), + PositionsEtType = NUPL (max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Nom du groupe de grappes"), + SIMP (typ='I',fr="Nombre de grappes du groupe"), + SIMP (typ='TXM',fr="Type de grappes"), + SIMP (typ='I',max='**',fr="Coordonnees des grappes"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe STRUCTURES_INTERNES_REACTEUR : Classe de definition des structures internes du coeur du reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +STRUCTURES_INTERNES_REACTEUR = OPER (nom="STRUCTURES_INTERNES_REACTEUR",op=0,sd_prod=StructuresInternesReacteur, + + fr = "Definition des structures internes du coeur", + ang = "Definition of core internal structures", + PlaqueInferieureCoeur = FACT ( + Epaisseur = SIMP (typ='R',statut='o', fr="Epaisseur de la plaque inferieure du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque inferieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayon ou cotes des trous"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou")))), + PlaqueSuperieureCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur de la plaque superieure du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque superieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayon ou cotes des trous"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou")))), + CloisonnementCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur du cloisonnement du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER', fr="Materiau du cloisonnement du coeur"), + DimensionsInterieures = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre d'assemblages dans la rangee"), + SIMP (typ='TXM',into=('Assemblages','Assemblies'),fr="Mot-cle suivant le nombre d'assemblages"), + SIMP (typ='TXM',into=('Largeur','Cote'), fr="Mot-cle precedant la largeur interieure du cloisonnement"), + SIMP (typ='R', fr="Largeur interieure du cloisonnement"), + SIMP (typ='TXM',into=('NbJeuCloisonGrille','NbJeu'),fr="Mot-cle precedant le nombre de jeux CloisonGrille"), + SIMP (typ='I', fr="Nombre de jeux CloisonGrille"))), + TrousDepressurisation = NUPL (elements=(SIMP (typ='I',fr="Nombre de trous de depressurisation"), + SIMP (typ='TXM',into=('Rayon','Radius'),fr="Mot-cle precedant la valeur du rayon des trous"), + SIMP (typ='R',fr="Rayon des trous de depressurisation"))), + TemperatureMoyenne = SIMP (typ='R',fr="Temperature Moyenne du cloisonnement")), + RenfortsInternes = FACT ( + Nombre = SIMP (typ='I',max='**'), + Epaisseur = SIMP (typ='R',max='**'), + Materiau = SIMP (typ=Materiau,max='**',statut='f',defaut='ACIER'), + NbTrousDepressurisation = SIMP (typ='I',max='**'), + RayonsTrousDepressurisation = SIMP (typ='R',max='**'), + TemperatureMoyenne = SIMP (typ='R'),statut='f'), + EnveloppeVirole = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + TemperatureMoyenne = SIMP (typ='R')), + Boucliers = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + Secteurs = NUPL (max='**',elements=(SIMP (typ='R'),SIMP (typ='R'))), + TemperatureMoyenne = SIMP (typ='R')), + Cuve = FACT ( + RayonInterne = SIMP (typ='R'), + RayonExterne = SIMP (typ='R'), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER'), + TemperatureMoyenne = SIMP (typ='R')) ) ; # Fin STRUCTURES_INTERNES_REACTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARACTERISTIQUES_PALIER : Classe de definition des donnees generales d'un type de palier de reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARACTERISTIQUES_PALIER = OPER (nom="CARACTERISTIQUES_PALIER",op=0,sd_prod=CaracteristiquesPalier, + + fr = "Definition des donnees generales d'un type de palier de reacteur", + ang = "Definition of general data for a type of nuclear reactor", + TypePalier = SIMP (typ='TXM',statut='o',fr="Identificateur du type de palier"), + PositionCombustible = SIMP (typ=PositionAssemblageCombustible,statut='o'), + PositionDetecteur = SIMP (typ=PositionInstrumentationInterne,statut='o'), + StructuresInternes = SIMP (typ=StructuresInternesReacteur,statut='o'), + NbBouclesPrimaires = SIMP (typ='I',statut='o',defaut=3,fr="Nombre de boucles primaires"), + NbTubesParGV = SIMP (typ='I',statut='f',fr="Nombre de tubes par GV") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SITE_NUCLEAIRE_EDF : Classe de definition d'un site nucleaire EDF (Tranches, paliers et numero comptable) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SITE_NUCLEAIRE = OPER (nom="SITE_NUCLEAIRE",op=0,sd_prod=SiteNucleaire, + + fr = "Definition d'un site nucleaire EDF", + ang = "Definition of a nuclear power plant site", + NomSite = SIMP (typ='TXM',statut='o',fr="Nom du site nucleaire",defaut='TRICASTIN'), + Tranches = NUPL (max='**',elements=( SIMP (typ='I' ,statut='o',fr="Numero de la tranche nucleaire"), + SIMP (typ='TXM',statut='o',fr="Trigramme de la tranche nucleaire"), + SIMP (typ=CaracteristiquesPalier,statut='o',fr="Type de palier"), + SIMP (typ='I' ,statut='o',fr="Numero comptable de la tranche"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ESPACE_VARIATIONS : Classe de definition des parametres de contre-reactions neutroniques et de leurs variations +# Donnees definissant l'espace des parametres dont dependent les bibliotheques +# neutroniques et la discretisation de leur espace de variation. +# Definition de la methode de balayage de cet espace (Suite d'options complementaires) : +# 1) ParametresIndependants : Calculs independants en donnant successivement a chacun +# des parametres leurs valeurs individuelles +# 2) CoinsDomaine : Rajout des calculs aux limites extremes du domaine +# 3) BordsDomaine : Rajout des calculs aux bords du domaine +# 4) Grilles2D : Rajout des calculs sur les grilles 2D +# passant par un point de reference +# 5) CasParticuliers : Rajout de points specifiques de calcul +# 6) EspaceComplet : Balayage complet du domaine des parametres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ESPACE_VARIATIONS = OPER (nom="ESPACE_VARIATIONS",op=0,sd_prod=EspaceVariations, + + fr = "Definition de l'espace de variation des parametres neutroniques", + ang = "Definition of feedback or variable parameters", + Variations = NUPL (max='**',statut='f', + elements=( SIMP (typ='TXM',fr="Nom du parametre a faire varier"), + SIMP (typ='R',max='**',fr="Valeurs discretes de variation du parametre"))), + MethodeBalayage = SIMP ( + typ = 'TXM', + max = '**', + defaut = 'ParametresIndependants', + into = ('ParametresIndependants','CoinsDomaine','BordsDomaine','Grilles2D','CasParticuliers','EspaceComplet'), + statut = 'f'), + TypeVariation = SIMP (typ='TXM',defaut='absolu',into=('relatif','absolu'),statut='f'), + CasParticuliers = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour les cas particuliers", + elements=(SIMP (typ='TXM'),SIMP (typ='R'))), + CasReference = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour le cas de reference", + elements=(SIMP (typ='TXM'),SIMP (typ='R'))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_EVOLUTION_IRRADIATION : Classe de definition des valeurs d'irradiation intervenant dans les phases de calcul et d'edition +# Pour le moment, on ne considere que l'Evolution, les Editions, l'Autoprotection et les ContreReactions +# ou les irradiations de reprise (Normale, Gs et Beta pour EDF). +# Donnees consistant pour chaque phase d'une liste d'irradiations en MWj/t +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_EVOLUTION_IRRADIATION = OPER (nom="DONNEES_EVOLUTION_IRRADIATION",op=0,sd_prod=DonneesEvolutionIrradiation, + + fr = "Definition des donnees du calcul d'evolution et des irradiations de reprise", + ang = "Definition of depletion calculation data and burnup restart calculations", + Unite = SIMP (typ='TXM',defaut='MWj/t',into=('MWj/t','Jours'),statut='f',fr="Unite pour les irradiations"), + Minimum = SIMP (typ='R',defaut=0.,statut='f',fr="Irradiation du debut de calcul"), + Maximum = SIMP (typ='R',defaut=100000.,statut='f',fr="Irradiation maximum des calculs"), + Evolution = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations du calcul d'evolution"), + Editions = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations ou se font les editions"), + ContreReactions = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise de contre-reactions"), + ReprisesGs = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise GS EDF"), + ReprisesBeta = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise BETA EDF"), + Reprises = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise"), + Refroidissement = FACT ( + Instants = SIMP (typ='R',max='**',fr="Irradiations de debut de refroidissement du combustible"), + Jours = SIMP (typ=('R','I'),max='**',fr="Nombre de jours de refroidissement correspondant aux instants de refroidissement")), + InsertionGrappe = NUPL (max='**',statut='f',elements=( + SIMP (typ='TXM',fr="Type de grappe inseree"), + SIMP (typ=('R','I'), min=2,max=2,fr="Irradiations de Debut et Fin d'insertion de la grappe"), + SIMP (typ='R',fr="Cote axiale de la limite inferieure de la grappe inseree"))) ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_FONCTIONNEMENT : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_FONCTIONNEMENT_MOYENNES = OPER (nom="CONDITIONS_FONCTIONNEMENT_MOYENNES",op=0,sd_prod=ConditionsFonctionnementMoyennes, + + fr = "Definition des conditions de fonctionnement pour une campagne donnee", + ang = "Definition of a campaign operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',statut='f',fr="Identificateur de la campagne"), + PuissanceElectriqueMW = SIMP (typ='R',statut='o',defaut=900.,fr="Puissance electrique du reacteur en MW"), + PuissanceThermiqueMWth = SIMP (typ='R',statut='o',defaut=2775.,fr="Puissance thermique du reacteur en MWth"), + PressionPrimaireEntreeBar = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars a l'entree du coeur actif"), + PressionPrimaireSortieBar = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars en sortie du coeur actif"), + TitreMoyenBorePpm = SIMP (typ='R',statut='o',defaut=500.,fr="Titre moyen en ppm en bore dans le moderateur"), + TmodEntreePnulleC = SIMP (typ='R',statut='o',defaut=286.0,fr="Temperature en C du moderateur a puissance nulle a l'entree du coeur"), + TmodEntreePnomC = SIMP (typ='R',statut='o',defaut=286.4,fr="Temperature en C du moderateur a puissance nominale a l'entree du coeur"), + DeltaTmodEntreeSortiePnomC = SIMP (typ='R',statut='o',defaut=39.0,fr="Ecart en C de temperature entre entree et sortie du coeur a puissance nominale"), + TmodMoyenneCoeurPnomC = SIMP (typ='R',statut='o',defaut=305.3,fr="Temperature moyenne en C du moderateur dans le coeur actif"), + TmodMoyenneCuvePnomC = SIMP (typ='R',statut='f',defaut=305.0,fr="Temperature moyenne en C du moderateur dans la cuve"), + TcomMoyennePnomC = SIMP (typ='R',statut='f',defaut=600.0,fr="Temperature moyenne en C du combustible dans le coeur"), + TmodMoyenneReflecteurPnomC = SIMP (typ='R',statut='f',defaut=296.0,fr="Temperature moyenne en C du reflecteur radial"), + PositionGrappeHaute = SIMP (typ='I',statut='f',defaut=225,fr="Position haute des grappes, en nombre de pas extraits"), + DebitPrimaireConceptionM3_h = SIMP (typ='R',statut='f',defaut=70500.,fr="Debit primaire de conception dans le coeur en m3/h"), + ProportionDebitCoeurCuve = SIMP (typ='R',statut='f',defaut=0.97,fr="Rapport du debit coeur / debit cuve"), + NbTubesGVBouches = SIMP (typ='I',statut='f',defaut=0,fr="Nombre de tubes GV bouches"), + SectionEcoulementCoeur = SIMP (typ='R',statut='f',defaut=3.87,fr="Section d'ecoulement du moderateur dans le coeur en m2") + ) ; # Fin CONDITIONS_FONCTIONNEMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_CHARGEMENT_COEUR : Classe de definition du plan de chargement combustible d'un coeur pour une campagne donnee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#PLAN_CHARGEMENT_COEUR = OPER (nom="PLAN_CHARGEMENT_COEUR",op=0,sd_prod=PlanChargementCoeur, +# +# fr = "Definition du plan de chargement combustible d'un coeur", +# ang = "Definition of a fuel loading core map ", +# IdentificateurCampagne = SIMP (typ='TXM',statut='o'), +# TypePlan = SIMP (typ='TXM',into=('STD','FR','FF','FFG'), statut='f'), +# AssemblagePosition = NUPL ( +# max = '**', +# elements = ( SIMP (typ=AssemblageCombustibleCharge,fr="Identificateur de l'assemblage"), +# SIMP (typ='TXM',statut='f',fr="Repere alphanumerique de la Position dans le coeur"), +# SIMP (typ='I',min=2,max=2,statut='f',fr="Coordonnees ij dans le plan radial du reseau du coeur"))) +# ); +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DATES_CLES_CAMPAGNE : Classe de definition des dates cles d'une campagne et de sa longueur +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DATES_CLES_CAMPAGNE = OPER (nom="DATES_CLES_CAMPAGNE",op=0,sd_prod=DateClesCampagne, + + fr = "Definition des dates cles d'une campagne et de sa longueur", + ang = "Definition of the campaign dates and length", + IdentificateurCampagne = SIMP (typ='TXM',statut='o',defaut='CZ101'), + DateDDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de debut de campagne"), + DatePnom = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A d'atteinte de la puissance nominale"), + DateFDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de fin de campagne"), + LongueurNaturelleTheoriqueMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle theorique calculee de la campagne en MWj/t"), + LongueurNaturelleRecaleeMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle recalee calculee de la campagne en MWj/t"), + LongueurNaturelleExperimentaleMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle mesuree de la campagne en MWj/t"), + LongueurAnticipationJepp = SIMP (typ='R',statut='f',fr="Nombre de JEPP d'anticipation"), + LongueurProlongationJepp = SIMP (typ='R',statut='f',fr="Nombre de JEPP de prolongation"), + LongueurTotaleExperimentaleMWj_t = SIMP (typ='R',statut='f',fr="Longueur totale de la campagne en MWj/t") ) ; +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODES : Classe de definition des options generales et du type de calcul demande +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODES = OPER (nom="OPTIONS_CODES",op=0,sd_prod=OptionsCodes, + fr = "Definition des options des codes de calcul", + ang = "Definition of calculation code options", +# TypeCalcul = SIMP (typ='TXM',defaut='Evolution',statut='f'), +# CodeCalcul = SIMP (typ='TXM',defaut='SUNSET',statut='f'), +# ConditionLimite = SIMP (typ=ConditionLimiteGenerale,statut='o'), + OptionsCodeReseau = FACT ( + OptionMulticellule = SIMP (typ='TXM',defaut='ROTH',statut='f',into=('ROTH','MULTICELLULE'),fr="Option du calcul multicellule"), + OptionPij = SIMP (typ='TXM',defaut='&UP0 &ROTH',statut='f',into=('&UP0 &ROTH','&UP0 &HETE','&UP1 &HETE'),fr="Option du calcul des Pij"), + ParametresIntegration = SIMP (typ='TXM',defaut='MAIL_INT 7 7 7 7',statut='f',fr="Donnees du maillage d'integration en heterogene"), + ProportionNoyauxParDefaut = SIMP (typ='R',defaut=1.E-12,statut='f',fr="Valeur initiale des concentrations des noyaux lourds non definis"), + OptionLaplacienB2 = SIMP (typ='TXM',defaut='CRITIQUE',statut='f',into=('CRITIQUE','NUL','IMPOSE'),fr="Option du calcul des fuites homogenes"), + LaplacienB2 = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur initiale du laplacien du calcul des fuites"), + OrdreAnisotropie = SIMP (typ='I',defaut=1,statut='f',fr="Ordre d'anisotropie des sections de transfert"), + Autoprotection = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Calcul d'autoprotection ou non"), + DonneesAutoprotection = SIMP (typ=OptionsAutoprotection,statut='f',max='**',fr="Nom des objets decrivant les isotopes a autoproteger et les options associees"), + RecalculAutoprotection = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande ou non de recalcul de l'autoprotection"), + Equivalence = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande ou non de calcul d'equivalence"), + NbGroupesEquivalence = SIMP (typ='I',max='**',defaut=(2,6,16),statut='f',fr="Liste des nombres de groupes des calculs d'quivalence"), + EditionAssemblage = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees sur l'ensemble du domaine"), + EditionCellule = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees par cellule"), + EditionFluxDetaille = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des flux moyens sur l'ensemble du domaine sur la maillage multigroupe detaille"), + EditionMilieu = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des compositions isotopiques detaillees sur tous les milieux de calcul"), + EditionTrimaran = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces pour TRIPOLI multigroupe"), + SpectreNeutrons = SIMP (typ='TXM',defaut='Prompt',statut='f',into=('Prompt','Retarde'),fr="Type de spectre de neutrons pour le calcul de transport"), + ListeIsotopesEdites = SIMP (typ='TXM',statut='f',max='**',fr="Liste des initiales des symboles des isotopes a editer"), + FichierBickley = SIMP (typ='TXM',statut='f',fr="Nom du fichier des fonctions Bickley"), + EditionIsotopeHomogene = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition de constitution d'isotopes homogeneises sous forme APOLLIB"), + RepertoireHomoge = SIMP (typ='TXM',statut='f',fr="Nom du repertoire du fichier des isotopes homogenes sous forme APOLLIB"), + FichierHomoge = SIMP (typ='TXM',statut='f',fr="Nom du fichier des isotopes homogenes sous forme APOLLIB"), + ExecutableAPOLLO = NUPL ( + elements = ( SIMP (typ='TXM',fr="Systeme d'exploitation"),SIMP (typ='TXM',fr="Nom du fichier executable")), + statut = 'f'), + ProceduresApollo2 = FACT ( + OptionsListing = SIMP (typ='TXM',statut='f'), + Evolution = SIMP (typ='TXM',statut='f'), + Reprise = SIMP (typ='TXM',statut='f'), + Equivalence = SIMP (typ='TXM',statut='f'), + EditionCellule = SIMP (typ='TXM',statut='f'), + EditionHomoge = SIMP (typ='TXM',statut='f')), + ProceduresSunset = FACT ( + Evolution = SIMP (typ='TXM',statut='f'), + Reprise = SIMP (typ='TXM',statut='f'), + Equivalence = SIMP (typ='TXM',statut='f'), + EditionCellule = SIMP (typ='TXM',statut='f'), + EditionHomoge = SIMP (typ='TXM',statut='f'))), +# -------------------------------------------------------------- + OptionsCodeCoeur = FACT ( + ReactiviteVisee = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur en pcm de la reactivite visee en calcul critique"), + EfficaciteBoreEstimee = SIMP (typ='R',defaut=-6.,statut='f',fr="Valeur estimee en pcm/ppm de l'efficacite du bore"), + TitreBoreInitiale = SIMP (typ='R',defaut=600.,statut='f',fr="Valeur estimee en ppm du titre en bore du moderateur"), + ApproximationTransport = SIMP (typ='TXM',defaut='SPn',statut='f',into=('SPn','Sn')), + BlocSPn = BLOC (condition = "ApproximationTransport=='SPn'", + OrdreApproximation = SIMP (typ='I',defaut=1,statut='f',fr="Ordre n impair de la methode SPn"), + ElementFini = SIMP (typ='TXM',defaut='RTN0',statut='f',into=('RTN0','RTN1'),fr="Type d'element fini"), + MaxIterationsDiffusion = SIMP (typ='I',defaut=1,into=(1,2,3,4,5),statut='f',fr="Nombre maximal d'iterations de diffusion")), + BlocSn = BLOC (condition = "ApproximationTransport=='Sn'", + OrdreApproximation = SIMP (typ='I',defaut=4,statut='f',fr="Ordre n pair de la methode Sn"), + ElementFini = SIMP (typ='TXM',defaut='RTN',statut='f',into=('RTN','BDM'),fr="Type d'element fini"), + Acceleration = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Acceleration par la diffusion"), + MaxIterationsDiffusion = SIMP (typ='I',defaut=20,statut='f',fr="Nombre maximal d'iterations de calcul de diffusion") ), + PrecisionValeurPropre = SIMP (typ='R',defaut=1.E-5,statut='f',fr="Precision sur la valeur propre"), + PrecisionFlux = SIMP (typ='R',defaut=1.E-3,statut='f',fr="Precision sur le flux"), + PrecisionResolutionMultigroupe = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision de la resolution multigroupe"), + PrecisionIterationTermeDiffusion = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision des iterations sur le terme de diffusion"), + MaxIterationsEnEnergie = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations pour la resolution Gauss Seidel en energie"), + MaxIterationsTermeDiffusion = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations sur le terme de diffusion"), + MaxIterationsDecompositionDomaine = SIMP (typ='I',defaut=1,statut='f',fr="Nombre d'iterations de decomposition de domaine"), + MaxIterationsKeffAvantCR = SIMP (typ='I',defaut=1,statut='f',fr="Nombre de calculs de keff avant appel aux contre-reactions"), + GestionAutomatiquePasCinetique = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),statut='f',fr="Gestion automatique du pas de temps du calcul cinetique"), + PrecisionIterationsFluxPrecurseurs = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision sur les iterations Flux Precurseurs"), + PrecisionParametreGestionAutomatique = SIMP (typ='R',defaut=0.0008,statut='f',fr="Precision sur les iterations Flux Precurseurs"), + MaxIterationsFluxPrecurseurs = SIMP (typ='I',defaut=50,statut='f',fr="Nombre maximal d'iterations Flux Precurseurs"), + ThetaSchemaCinetique = SIMP (typ='R',defaut=0.5,statut='f',fr="Valeur du parametre theta du schema cinetique") ), +# ------------------------------------------------------------------------------------------------------------------------------------ + OptionsThermiqueThermohydraulique = FACT ( + CoefficientEchangeGaineFluide = SIMP (typ='TXM',defaut='DITTUS_BOELTER',into=('FLICA','DITTUS_BOELTER'),statut='f', + fr="Option du Coefficient d'échange gaine-fluide (flux < au flux critique)"), + CoefficientEchangeGaineFluideEbullition = SIMP (typ='TXM',defaut='BST',into=('BST','TONG'),statut='f', + fr="Option du Coefficient d'échange gaine-fluide (Ebullition en film)"), + CoefficientEchangeJeuPastilleGaineConstantTransitoire = SIMP (typ='TXM',defaut='Non',into=('Non','Oui'),statut='f', + fr="Option de constance des coefficients d'échange gap"), + CoefficientEchangeJeuPastilleGaine = SIMP (typ='TXM',defaut='HGAP_88',into=('EJECTION','TUO2','PLIN_BU','FIXE','HGAP_88'),statut='f', + fr="Option du Coefficient d'échange du jeu pastille-gaine"), + BlocHgapTuo2 = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='TUO2'", + Tuo2Initiale = SIMP (typ='R',statut='o', + fr="Température initiale combustible pour le calcul du coefficient d'échange") ), + BlocHgapFixe = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='FIXE'", + Hgap = SIMP (typ='R',statut='o',defaut=5850.,fr="Valeur imposée du coefficient d'échange") ), + ConductiviteCombustible = SIMP (typ='TXM',defaut='HGAP_88',into=('STORA','WESTINGHOUSE','HGAP_88','COMETHE'),statut='f', + fr="Option du Coefficient de conductivité du combustible"), + CapaciteCalorifiqueCombustible = SIMP (typ='TXM',defaut='UO2_FRAMATOME',into=('UO2_BATES','UO2_FRAMATOME','UO2_THYC'),statut='f', + fr="Option du Coefficient de conductivité du combustible"), + MateriauGaine = SIMP (typ='TXM',defaut='ZIRCALOY_CYRANO',into=('ZIRCALOY_CYRANO', 'ZIRCALOY_THYC', 'INCOLOY_800', + 'CHROMESCO_3', 'INOX_16', 'INOX_321', 'INOX_347', 'INOX_347_OXYDE', + 'INCONEL_600', 'NICKEL_75', 'PLATINE'),statut='f', + fr="Materiau de la gaine pour le calcul du roCp de la gaine et de sa conductivite"), + FluxCritique = SIMP (typ='R',defaut=180.E4,fr="Valeur du flux critique en W/m2"), + FractionPuissanceCombustible = SIMP (typ='R',defaut=0.974,fr="Fraction de la puissance degagee dans le combustible"), + Creusement = SIMP (typ='TXM',defaut='Uniforme',statut='f',into=('Uniforme','Runnals','Framatome','Twinkle','Mox','EDF','Specifique')), + BlocCreusement = BLOC (condition = "Creusement=='Specifique'", + RayonsCreusement = SIMP (typ='R',statut='o',fr="Rayons de definition du creusement de puissance (nz)"), + IrradiationsCreusement = SIMP (typ='R',statut='o',fr="Irradiations de definition du creusement de puissance (nbu)"), + EnrichissementsCreusement = SIMP (typ='R',statut='o',fr="Enrichissements de definition du creusement de puissance (nen)"), + PuissancesUO2 = SIMP (typ='R',max='**',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille UO2"), + PuissancesMOX = SIMP (typ='R',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille MOX") ), + DiscretisationPastilleCombustible = SIMP (typ='I',defaut=4,statut='f',fr="Nombre de points de discretisation radiale de la pastille combustible"), + DiscretisationGaine = SIMP (typ='I',defaut=2,statut='f',fr="Nombre de points de discretisation radiale de la gaine de la pastille combustible"), + PrecisionCalculThermique = SIMP (typ='R',defaut=0.1,fr="Precision en Celsius du calcul thermique radiale du crayon"), + PrecisionCalculThermohydraulique = SIMP (typ='R',defaut=0.01,fr="Precision en Celsius du calcul thermohydraulique de la temperature du moderateur"), + MaxIterationsThermique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermique"), + MaxIterationsThermohydraulique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermohydraulique"), + MethodeIntegrationThermohydraulique = SIMP (typ='TXM',defaut='Gauss',statut='f',into=('Gauss','NonGauss'),fr="Methode d'integration thermohydraulique"), + PerteDeCharge = SIMP (typ='TXM',defaut='Non',statut='f',into=('Non','Oui'),fr="Prise en compte ou non de la perte de charge axiale"), + TableEau = SIMP (typ='TXM',defaut='Thetis',statut='f',into=('Thetis','Interne'), + fr="Calcul des caracteristiques du moderateur par THETIS ou par des tables internes") ), +# ---------------------------------------------------------------------------------------------------------------------------------- + OptionsContreReactions = FACT ( + ContreReactions = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),fr="Prise en compte des contre-reactions ou non"), + PrecisionPuissance = SIMP (typ='R',defaut=1.E-4,fr="Precision sur la puissance a la fin des iterations de contre-reactions"), + PrecisionKeff = SIMP (typ='R',defaut=1.E-5,fr="Precision sur keff a la fin des iterations de contre-reactions"), + MethodeCalculSection = SIMP (typ='TXM',defaut='Spline1D',into=('Spline1D','SplinenD','Tabulation'), + fr="Methode de calcul des sections efficaces avec Contre-reactions") ) + ) ; # Fin OPTIONS_CODES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_GENERALES_ETUDE : Classe de definition des caracteristiques globales de l'etude +# Definition de la centrale (site, numero de tranche) et numero de campagne d'irradiation +# Ces caracteristiques d'environnement de l'etude doivent permettre de recuperer l'ensemble +# des parametres de fonctionnement nominales du reacteur sujet de l'etude (creation de +# bibliotheques ou calcul de coeur) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_GENERALES_ETUDE = OPER (nom="DONNEES_GENERALES_ETUDE",op=0,sd_prod=DonneesGeneralesEtude, + + fr = "Definition de la centrale sujet de l'etude et des options globales de l'etude", + ang = "Definition of the power plant and of the global options", + TypeCode = SIMP (typ='TXM',defaut='Reseau',into=('Reseau','Coeur'),statut='o'), + SiteNucleaire = SIMP (typ=SiteNucleaire,defaut='TRICASTIN',statut='o'), + BlocCoeur = BLOC (condition = "TypeCode=='Coeur'", + NumeroTranche = SIMP (typ='I',defaut=1,statut='f'), + NumeroCampagne = SIMP (typ='I',defaut=1,statut='f'), + IdentificateurCampagne = SIMP (typ='TXM',defaut='TN101',statut='f'), + DatesCampagne = SIMP (typ=DateClesCampagne,statut='f'), + TypeGestion = SIMP (typ = 'TXM', + defaut = '370Q', + statut = 'f', + into = ('310Q','310T','325T','325Q','340Q','345AL', + '370Q','370T','400T','HMOX','MOXNT','TMOX')), + TypeSchemaGrappe = SIMP (typ = 'TXM', + defaut = '900CPYUO2', + statut = 'f', + into = ('900CP0','900CPYUO2INITIAL','900CPYUO2', + '900CPYUO2AL','900CPYMOX','1300','N4')), + PositionGrappe = SIMP (typ=PositionGrappesCommande,statut='f'), + TypeEvaluationSurete = SIMP (typ='TXM',defaut='900STD',statut='f', + into=('900STD','900GARANCE','1300STD','1300GEMMES','N4STD')), + ModePilotage = SIMP (typ='TXM',defaut='G',statut='f',into=('A','G','X')), + PlanChargement = SIMP (typ=Reseau,statut='f'), + CodeCalcul = SIMP (typ='TXM',defaut='SNCODE',statut='f')), + BlocReseau = BLOC (condition = "TypeCode=='Reseau'", + Assemblage = SIMP (typ=AssemblageType,statut='f'), + ContreReactions = SIMP (typ=EspaceVariations,statut='f'), + CodeCalcul = SIMP (typ='TXM',defaut='SUNSET',statut='f')), + ConditionsMoyennes = SIMP (typ=ConditionsFonctionnementMoyennes,statut='f'), + Options = SIMP (typ=OptionsCodes,statut='f'), + PasIrradiation = SIMP (typ=DonneesEvolutionIrradiation,statut='f'), +# ConditionLimite = SIMP (typ=ConditionLimiteGenerale,statut='o'), + TypeCalcul = SIMP (typ='TXM',max='**',defaut='Evolution', + into=('Evolution','EvolutionMicroscopique','Reprise','Statique','Cinetique', + 'BoreImpose','BoreCritique'),statut='f') + ) ; + +class resultat(TObjet): pass +class resultat2(resultat): pass + +CALCUL=OPER(nom="CALCUL",op=10,sd_prod=resultat, + materiau=SIMP(typ=Materiau), + PRESSION=SIMP(defaut=10000.,typ="R") + ); + +CALCUL2=OPER(nom="CALCUL2",op=11,sd_prod=resultat2, + donnee=SIMP(typ=resultat), + materiau=SIMP(typ=Materiau), + ); + + + + diff --git a/Descartes/cata_descartes_new.py b/Descartes/cata_descartes_new.py new file mode 100755 index 00000000..bd360594 --- /dev/null +++ b/Descartes/cata_descartes_new.py @@ -0,0 +1,3084 @@ +# debut entete + +import Accas +from Accas import * +# + +JdC = JDC_CATA(code='DESCARTES', + execmodul=None, + niveaux=(NIVEAU(nom='Isotopes',label='Donnees des Isotopes ou molecules et Bibliotheques associees'), + NIVEAU(nom='ChaineFiliationIsotopique',label='Chaines de filiation isotopique'), + NIVEAU(nom='MaillagesEnergie',label='Maillages en energie'), + NIVEAU(nom='DonneesNucleaires',label='Bibliotheques de donnees nucleaires et Fichiers'), + NIVEAU(nom='Materiaux',label='Materiaux'), + NIVEAU(nom='ElementsGeometriques',label='Elements geometriques elementaires'), + NIVEAU(nom='Geometries',label='Geometries globales'), + NIVEAU(nom='MaillagesSpatiaux',label='Maillages en espace'), + NIVEAU(nom='ElementsTechnologiquesAssemblages',label='Elements technologiques des assemblages combustibles'), + NIVEAU(nom='ElementsTechnologiquesReacteur',label='Elements technologiques des reacteurs'), + NIVEAU(nom='AssemblagesReels',label='Assemblages combustibles reels'), + NIVEAU(nom='ConditionsLimites',label='Conditions aux limites'), + NIVEAU(nom='ParametresCalcul',label='Parametres des calculs'), + NIVEAU(nom='SectionsEfficaces',label ='Bibliotheques de sections efficaces'), + NIVEAU(nom='OptionsCodesCalcul',label='Options des codes de calcul'), + NIVEAU(nom='ConfigurationInformatique',label='Choix des ressources informatiques'), + NIVEAU(nom='DonneesDesAccidents',label ='Donnees des etudes d_accidents'), + NIVEAU(nom='DonneesPilotage',label ='Donnees de pilotage du reacteur'), + NIVEAU(nom='DonneesEtude',label ='Donnees des cas de l etude'), + NIVEAU(nom='Operateurs',label ='Definition des operateurs de calcul'), + NIVEAU(nom='Resultats',label ='Resultats des calculs'), + NIVEAU(nom='ResultatsExperimentaux',label ='Resultats issus de mesures experimentales'), + NIVEAU(nom='ResultatsAccidents',label ='Resultats issus de la simulation des accidents'), + NIVEAU(nom='EtudeGenerale',label ="Cas d'etude et resultats") + ) + ) + +import string +#import lcm + +class TObjet(ASSD): + def __init__(self,**args): + apply(ASSD.__init__,(self,),args) + name=string.ljust(self.__class__.__name__[:12],12) + + def __getitem__(self,attrname): + return self.etape[attrname] + + def db(self): + if hasattr(self,'_dbsun'):return self._dbsun + else: + self._dbsun={'t':1} + return self._dbsun + + def putdb(self,o): + self._dbsun=o + +# +# Definition des types d'objet qui seront produits par les commandes +# Il suffit de declarer une classe qui derive de la classe mere TObjet +# qui derive elle meme de la classe ASSD utilisee dans EFICAS +# +# Isotopes +class Isotope (TObjet):pass +# ChaineFiliationIsotopique +class ChaineFiliation (TObjet):pass +# MaillagesEnergie +class BornesEnergie (TObjet):pass +# DonneesNucleaires +class FichierBibliothequeIsotopes (TObjet):pass +# Materiaux +class Materiau (TObjet):pass +# MaillagesSpatiaux +class Maillage1D (TObjet):pass +# ElementsGeometriques +class Point (TObjet):pass +class Vecteur (TObjet):pass +class Droite (TObjet):pass +class Segment (TObjet):pass +class ArcCercle (TObjet):pass +class SecteurDisque (TObjet):pass +class Conique (TObjet):pass +class Triangle (TObjet):pass +class Rectangle (TObjet):pass +class Carre (TObjet):pass +class Hexagone (TObjet):pass +class Polygone (TObjet):pass +class Sphere (TObjet):pass +class BoiteRectangulaire (TObjet):pass +class BoiteGenerale (TObjet):pass +class CylindreX (TObjet):pass +class CylindreY (TObjet):pass +class CylindreZ (TObjet):pass +class Cylindre (TObjet):pass +class Cone (TObjet):pass +class PrismeHexagonal (TObjet):pass +class Tore (TObjet):pass +class Plan (TObjet):pass +class PlanX (TObjet):pass +class PlanY (TObjet):pass +class PlanZ (TObjet):pass +class Polyedre (TObjet):pass +class Quadrique (TObjet):pass +class Orientation (TObjet):pass +class FormePositionnee (TObjet):pass +# Geometries +class Cellule (TObjet):pass +class Cluster (TObjet):pass +class GeometrieSurfacique (TObjet):pass +class GeometrieCombinatoire (TObjet):pass +class Reseau (TObjet):pass +class DecompositionDomaines (TObjet):pass +# ElementsTechnologiquesAssemblages +class GrilleAssemblage (TObjet):pass +class PartieInferieureAssemblageCombustible (TObjet):pass +class PartieSuperieureAssemblageCombustible (TObjet):pass +class AssemblageType (TObjet):pass +class ElementBarre (TObjet):pass +class ElementsGrappeCommande (TObjet):pass +class ElementsAbsorbantsFixes (TObjet):pass +class GrappeBouchonAssemblage (TObjet):pass +# AssemblagesReels +class AssemblageCombustibleReel (TObjet):pass +class ReparationAssemblage (TObjet):pass +class PenaliteAssemblage (TObjet):pass +#class SystemeUnitesMesure (TObjet):pass +# ConditionsLimites +class Vide (TObjet):pass +class ReflexionIsotrope (TObjet):pass +class ReflexionSpeculaire (TObjet):pass +class Albedo (TObjet):pass +class Translation (TObjet):pass +class Rotation (TObjet):pass +class SpecialeConditionLimite (TObjet):pass +class GeneraleConditionLimite (TObjet):pass +# ElementsTechnologiquesReacteur +class CorrespondanceReperePositionReseau(TObjet):pass +class PositionAssemblageCombustible (TObjet):pass +class PositionInstrumentationInterne (TObjet):pass +class ImplantationGrappesCommande (TObjet):pass +class StructuresInternesReacteur (TObjet):pass +class PompePrimaire (TObjet):pass +class Pressuriseur (TObjet):pass +class GenerateurVapeur (TObjet):pass +class CaracteristiquesPalier (TObjet):pass +class SiteNucleaire (TObjet):pass +# ParametresCalcul +class EspaceVariations (TObjet):pass +class DonneesIrradiation (TObjet):pass +class ConditionsFonctionnementMoyennes (TObjet):pass +class ConditionsTransitoire (TObjet):pass +class PositionAxialeGrappesCommande (TObjet):pass +class ParametresCalculGestion (TObjet):pass +# SectionsEfficaces +class Macrolib (TObjet):pass +class SectionsReflecteur (TObjet):pass +# OptionsCodesCalcul +class OptionsAutoprotection (TObjet):pass +class OptionsCodes (TObjet):pass +class OptionsCodeReseau (TObjet):pass +class OptionsCodeCoeurStatique (TObjet):pass +class OptionsCodeCoeurCinetique (TObjet):pass +class OptionsThermiqueThermohydraulique (TObjet):pass +class OptionsContreReactionsCoeur (TObjet):pass +# ConfigurationInformatique +class RessourcesInformatiques (TObjet):pass +# DonneesDesAccidents +class AccidentDilution (TObjet):pass +class AccidentRTV (TObjet):pass +class AccidentChuteGrappe (TObjet):pass +class AccidentEjection (TObjet):pass +class CriteresSurete (TObjet):pass +class DonneesAccidents (TObjet):pass +# DonneesPilotage +class ProlongationCampagne (TObjet):pass +class DonneesPilotageGeneral (TObjet):pass +class CalibrageGroupes (TObjet):pass +# DonneesEtude +class DatesClesCampagne (TObjet):pass +class DonneesCasEtude (TObjet):pass +class DonneesAjustement (TObjet):pass +# Resultats +class ResultatsGlobauxCoeur (TObjet):pass +class ResultatFlux (TObjet):pass +class ResultatPuissances (TObjet):pass +class ResultatIrradiations (TObjet):pass +class ResultatActivites (TObjet):pass +class ResultatRadial (TObjet):pass +class ResultatAxial (TObjet):pass +class ResultatsCalculGestion (TObjet):pass +class ResultatsEtude (TObjet):pass +# ResultatsAccidents +class AccidentDilutionResultat (TObjet):pass +class AccidentChuteGrappeResultat (TObjet):pass +class AccidentEjectionResultat (TObjet):pass +class AccidentsResultats (TObjet):pass +# ResultatsExperimentaux +class ActivitesExperimentales (TObjet):pass +# EtudeGenerale +class DictionnaireCasEtude (TObjet):pass +# fin entete +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ISOTOPE : Classe de definition d'un isotope ou d'une molecule +# Caracteristiques elementaires des isotopes ou molecules et liens avec les bibliotheques de donnees nucleaires +# Ces caracteristiques elementaires ne devraient pas apparaître dans ce type d'objet, mais etre recuperees directement +# dans la bibliotheque de donnees de base. La structure des APOLLIB n'etant pas simple d'acces, la solution +# adoptee permet de mettre a disposition ces informations de maniere simple. A revoir ulterieurement +# apres redefinition du contenu d'une bibliotheque de base. +# La decomposition en éléments chimiques simples est utile pour les calculs de type TRIPOLI, les données nucléaires +# étant définies parfois pour chaque élément et non pour la molécule (cas de l'eau par exemple) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ISOTOPE = OPER (nom="ISOTOPE", sd_prod=Isotope, op=0, niveau = 'Isotopes', + fr = "Definition d'un isotope ou d'une molecule et de ses bibliotheques", + ang = "Isotope or Molecule definition and data libraries", + Symbole = SIMP (typ='TXM',statut='o',fr="Symbole de l'isotope ou de la molecule"), + MasseAtomique = SIMP (typ='R', statut='o',fr="Masse atomique en uma"), + NombreDeCharge = SIMP (typ='I', statut='o',fr="Nombre de charge atomique Z"), + NombreDeMasse = SIMP (typ='I', statut='o',fr="Nombre de masse atomique A"), + Type = SIMP (typ='TXM',statut='f',into=('Standard','Detecteur','Structure','Poison'),fr="Type de l'isotope"), + NomsBibliotheque = NUPL (max = '**', statut = 'o',fr="Association Procedure Bibliotheque et Nom isotope dans le Fichier", + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque"))), + NomsBiblioAutoprotegee = NUPL (max = '**', statut = 'f', + elements = ( SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"), + SIMP (typ='TXM',fr="Identifiant Bibliotheque autoprotegee de l'isotope"))), + ComposantsElementaires = SIMP (typ=Isotope, max = '**', statut = 'f', + fr="Liste des elements chimiques composant la molecule") + ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe BORNES_ENERGIE : Classe de definition des limites en energie d'un maillage multigroupe +# Objets utilises pour la définition du maillage des bibliothèques de base +# ou des macro-groupes d'énergie de condensation des sections efficaces sur le flux détaillé +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BORNES_ENERGIE = OPER (nom="BORNES_ENERGIE", sd_prod=BornesEnergie, op=0, niveau = 'MaillagesEnergie', + fr = "Definition d'une discretisation de l'espace energetique", + ang = "Definition of an energy discretisation", + NbMacrogroupes = SIMP (statut='o',typ='I', fr="Nombre de macrogroupes du maillage energetique"), + BornesEnergetiques = SIMP (statut='o',typ='R',max='**',fr="Bornes en energie (MeV) du maillage energetique"), + ) ; # Fin BORNES_ENERGIE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe MAILLAGE_1D : Classe de definition d'un maillage spatial 1D : 4 possiblilites de definition : +# 1 et 2) Equidistant et Equivolumique : Largeur totale a fournir +# 3) Liste des dimensions des mailles +# 4) Abscisse initiale et couples (Nb sous-pas, Abscisse suivante) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MAILLAGE_1D = OPER (nom="MAILLAGE_1D", sd_prod=Maillage1D, op=0, niveau = 'MaillagesSpatiaux', + fr = "Definition d'une discretisation d'un espace 1D", + ang = "Definition of a 1D spatial discretisation", + ModeDefinition = SIMP (typ='TXM',statut='o',defaut='LargeurMaille',into=('Equidistant','Equivolumique','LargeurMaille','SousMaille'), + fr="Mode de definition du maillage"), + NbMailles = SIMP (typ='I',statut='o',fr="Nombre de mailles de discretisation"), + BlocEqui = BLOC (condition = "ModeDefinition=='Equidistant' or ModeDefinition=='Equivolumique'", + DimensionTotale = SIMP (typ='R',statut='o',fr="Largeur totale du maillage en cm") + ), + BlocMailles = BLOC (condition = "ModeDefinition=='LargeurMaille'", + LargeursMailles = SIMP (typ='R',max='**',statut='o',fr="Largeurs des mailles en cm") + ), + BlocSousMailles = BLOC (condition = "ModeDefinition=='SousMaille'", + SousMailles = SIMP (typ=('I','R'),max='**',statut='o',fr="Abscisse initiale et couples (Nb sous-pas, Abscisse suivante)") + ) + ) ; # Fin MAILLAGE_1D +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FICHIER_BIBLIOTHEQUE_ISOTOPES : Classe de definition des fichiers des bibliotheques des donnees nucleaires d'isotopes ou de molecules +# Noms et formats des fichiers d'isotopes suivant le systeme d'exploitation +# Dans le cas de TRIPOLI 4, on fournit le nom du dictionnaire ou se trouve la description des +# isotopes disponibles pour le code et le chemin d'accès aux fichiers de sections de ces isotopes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FICHIER_BIBLIOTHEQUE_ISOTOPES = OPER (nom="FICHIER_BIBLIOTHEQUE_ISOTOPES", sd_prod=FichierBibliothequeIsotopes, op=0, niveau = 'DonneesNucleaires', + fr = "Definition d'une bibliotheque de donnees nucleaires des isotopes", + ang = "Definition of a nuclear data isotope library", + Description = SIMP (typ='TXM',statut='o',fr="Identificateur Bibliotheque ou Dictionnaire"), + Fichiers = FACT (max='**', statut='o',fr="Donnee des fichiers associes a la bibliotheque et du maillage energetique", + SystemeExploitation = SIMP (typ='TXM',statut='o',fr="Systeme d'exploitation du reseau informatique"), + NomFichier = SIMP (typ='TXM',statut='o',fr="Nom du fichier de la bibliotheque de donnees de base"), + FormatFichier = SIMP (typ='TXM',statut='o',fr="Format du fichier"), + BornesEnergetiques = SIMP (typ=BornesEnergie,statut='o',fr="Bornes en MeV du maillage en energie") + ) + ) ; # Fin FICHIER_BIBLIOTHEQUE_ISOTOPES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CHAINE_FILIATION : Classe de definition des filiations isotopiques dues aux transmutations +# sous irradiation neutronique. +# Description textuelle sous format (APOLLO2, SUNSET ou DARWIN) +# ou description particuliere des filiations. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CHAINE_FILIATION = OPER (nom="CHAINE_FILIATION", op=0, sd_prod=ChaineFiliation, niveau = 'ChaineFiliationIsotopique', + fr = "Definition d'une chaine de filiation isotopique sous irradiation", + ang = "Definition of a depletion chain", + NombreIsotopes = SIMP (typ='I' ,statut='o',fr="Nombre d'isotopes decrits dans la chaine"), + ChaineAPOLLO2 = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format APOLLO2"), + ChaineSUNSET = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format SUNSET"), + ChaineDARWIN = SIMP (typ='TXM',statut='f',fr="Nom du fichier contenant la description DARWIN de la chaine"), + ListeIsotopes = FACT (max = '**',statut = 'f', + Isotope = SIMP (typ=Isotope,fr="Nom de l'isotope",statut='o'), + Peres = FACT (max = '**',statut = 'o', + IsotopePere = SIMP (statut='o',typ=Isotope,fr="Nom de l'isotope pere"), + TypeReaction = SIMP (statut='o',typ='TXM' ,fr="Type de reaction nucleaire", + into=('nGamma','n2n','n3n','n4n','np','nalpha')), + RapportBranchement = SIMP (statut='o',typ='R' ,fr="Rapport de branchement",defaut=1.) + ) + ) + ) ; # Fin CHAINE_FILIATION +# regles = (UN_PARMI ('ChaineAPOLLO2','ChaineSUNSET','ChaineDARWIN','ListeIsotopes'),), +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe MATERIAU : Classe de définition d'un matériau à partir de mélange d'isotopes ou de matériaux. +# Définition alternative par donnée des enrichissements (Possibilités limitées aux combustibles UO2, MOX, Gd) +# Caractéristiques fournies a 20 C. +# Proprietes thermiques et thermomécaniques éventuelles +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MATERIAU = OPER(nom="MATERIAU", op=0, sd_prod=Materiau, niveau = 'Materiaux', + fr = "Definition d'un materiau", + ang = "Definition of a mixture", + TypeDefinition = SIMP (typ='TXM',statut='o',defaut="Isotopique",into=("Isotopique","Enrichissement")), + TypeMateriau = SIMP (statut = 'o', typ = 'TXM', + into = ('Combustible','Absorbant','Melange','ModerateurInterne','ModerateurExterne','Detecteur', + 'Grille','Gaine','Tube','Poison','PoisonConsommable','AbsorbantIntegre', + 'CoucheCorrosion','Solide','Liquide','Gaz','MateriauVide'), + defaut = 'Combustible'), + BlocIsotopique = BLOC (condition = "TypeDefinition=='Isotopique'", + MethodeMelange = SIMP (statut = 'o',typ='TXM',into=('Isotopique','Massique','Concentration'),defaut='Massique'), + Constituants = NUPL (statut = 'o', max = '**', + fr = "Couples (Isotope ou Materiau) et (Pourcentage ou Concentration)", + elements = (SIMP (typ=(Isotope,Materiau),fr="Isotope ou Materiau constituant"), + SIMP (typ='R',fr="Pourcentage % ou Concentration 10E24 de l'isotope ou du materiau")) + ) + ), + BlocEnrichissement = BLOC (condition = "TypeDefinition=='Enrichissement'", + Type = SIMP (typ='TXM',into=('UO2','MOX','UO2Gadolinium','MOXGadolinium'),statut='o',defaut='UO2',fr="Type de combustible"), + U235Enrichissement = SIMP (typ='R',defaut=3.7,statut='o',val_min=0.,val_max=100., + fr="Enrichissement % en U235 du combustible"), + TeneurU234Naturel = SIMP (typ='R',defaut=110.,statut='f',fr="Teneur (ppm) en U234 de l'uranium naturel"), + DonneesGado = BLOC (condition = "Type=='UO2Gadolinium' or Type=='MOXGadolinium'", + EnrichissementGado = SIMP (typ=('R','TXM'),defaut=8.,statut='o',fr="Enrichissement % en Gd2O3 du combustible")), + DonneesMOX = BLOC (condition = "Type=='MOX' or Type=='MOXGadolinium'", + PuEnrichissement = SIMP (typ=('R','TXM'),defaut=5.3,statut='o',val_min=0.,val_max=100., + fr="Enrichissement % en plutonium du combustible"), + VecteurPu = FACT (statut='o',fr="Definition du vecteur isotopique du plutonium", + Pu238PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu238"), + Pu239PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu239"), + Pu240PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu240"), + Pu241PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu241"), + Pu242PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Pu242"), + Am241PourcentageMassique = SIMP (typ='R',statut='o',fr="Pourcentage Massique en Am241"), + ), + DateReference = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de reference du combustible"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de divergence du reacteur ou ce combustible est charge"), + VieillissementJours = SIMP (typ='R',defaut = 0.,statut = 'f', + fr = "Nbre de jours de vieillissement du combustible, calculable si on donne DateDivergence") + ) + ), + TauxEvidement = SIMP (statut='f',typ='R',fr="Taux % d'evidement du materiau"), + TauxPorosite = SIMP (statut='f',typ='R',fr="Taux % de porosite du materiau"), + Temperature = SIMP (statut='f',typ='R',fr="Temperature en Celsius du materiau"), + PlenumGaz = SIMP (statut='f',typ=(Isotope,Materiau),defaut='HE4',fr="Gaz de remplissage des evidements du materiau solide et dans le plenum"), +# PlenumGaz = SIMP (statut='f',typ=(Isotope,Materiau),fr="Gaz de remplissage des evidements du materiau solide et dans le plenum"), + PressionPlenumGaz = SIMP (statut='f',typ='R',defaut=32.,fr="Pression en bars du gaz de remplissage des evidements et dans le plenum"), + Chaine = SIMP (statut='f',typ=ChaineFiliation,defaut='ChaineSaturee',fr="Chaine de filiation isotopique associee au materiau"), + TauxImpuretes = SIMP (statut='f',typ='R',fr="Taux % d'impuretes"), + ChaleurSpecifiquePressionCte = SIMP (statut='f',typ='R',fr="Chaleur Specifique a Pression Constante J/(kg.C)"), + ConductiviteThermique = SIMP (statut='f',typ='R',fr="Conductivite Thermique W/(cm.C)"), + MateriauGazBloc = BLOC (condition = "TypeMateriau=='Gaz'", + GazLongueurExtrapolation = SIMP (statut='f',typ='R',fr="Longueur Extrapolation en cm"), + GazPression = SIMP (statut='f',typ='R',fr="Pression du gaz en bars") + ), + MateriauLiquideBloc = BLOC (condition = "TypeMateriau in ('Liquide','ModerateurInterne','ModerateurExterne')", + RoLiquide = SIMP (statut='f',typ='R',fr="Masse volumique theorique du liquide g/cm3"), + PressionLiquide = SIMP (statut='f',typ='R',fr="Pression du liquide en bars"), + EbullitionTemperature = SIMP (statut='f',typ='R',fr="Temperature Ebullition en Celsius"), + EbullitionPression = SIMP (statut='f',typ='R',fr="Pression Ebullition en bars") + ), + MateriauSolideBloc = BLOC (condition = "TypeMateriau not in ('Liquide','ModerateurInterne','ModerateurExterne','Gaz','MateriauVide')", + RoSolide = SIMP (statut='f',typ='R',fr="Masse volumique theorique du materiau g/cm3"), + DilatationLineaire = SIMP (statut='f',typ='R',fr="Coefficient de dilatation thermique lineaire cm/C du materiau"), + LimiteElastique = SIMP (statut='f',typ='R',fr="Limite Elastique en Pa"), + Fluence = SIMP (statut='f',typ='R',fr="Fluence subie par le materiau en n/cm2"), + Emissivite = SIMP (statut='f',typ='R',fr="Valeur d'emissivite"), + ModuleYoung = SIMP (statut='f',typ='R',fr="Module d'Young en Pa"), + CoefficientPoisson = SIMP (statut='f',typ='R',fr="Coefficient de Poisson"), + RugositeSurface = SIMP (statut='f',typ='R',fr="Rugosite de Surface en cm") + ) + ) ; # Fin MATERIAU +# ================================================================================================================================== +# Definition des Classes elementaires pour la geometrie +# ================================================================================================================================== +# Classe POINT : Classe de definition d'un point de l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POINT = OPER (nom="POINT", op=0, sd_prod=Point, niveau = 'ElementsGeometriques', + fr = "Definition d'un point de l'espace", + ang = "Definition of a point in space", + Coordonnees = SIMP (typ='R',min=2,max=3,statut='o',fr="Coordonnees du point dans l'espace") + ) ;# Fin POINT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe VECTEUR : Classe de definition d'un vecteur dans l'espace +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VECTEUR = OPER (nom="VECTEUR", op=0, sd_prod=Vecteur, niveau = 'ElementsGeometriques', + fr = "Definition d'un vecteur dans l'espace", + ang = "Definition of a vector in space", + regles = (UN_PARMI ('Composantes','Points'),), + Composantes = SIMP (typ='R' ,min=2,max=3,statut='f',fr="Composantes du vecteur en 2D ou 3D"), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Vecteur defini par deux points") + ) ; # Fin VECTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DROITE : Classe de definition d'une droite +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DROITE = OPER (nom="DROITE", op=0, sd_prod=Droite, niveau = 'ElementsGeometriques', + fr = "Definition d'une droite par 2 POINTs, 1 POINT et 1 VECTEUR, ou Equation ax + by + cz + d = 0", + ang = "Definition of a straight line by 2 POINTs or through an Equation ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','VecteurOrigine'),), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition de la droite"), + Equation = SIMP (typ='R' ,min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation d'une droite"), + VecteurOrigine = FACT (statut='f', + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Donnee du vecteur directeur de la droite"), + Origine = SIMP (typ=Point ,statut='o',fr="Donnee d'un point de passage de la droite")) + ) ; # Fin DROITE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SEGMENT : Classe de definition d'un segment (Idem DROITE + Longueur et Origine) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SEGMENT = OPER (nom="SEGMENT", op=0, sd_prod=Segment, niveau = 'ElementsGeometriques', + fr = "Definition d'un segment 2 Points ou Origine + ((Longueur + Equation ax + by + d = 0) ou vecteur)", + ang = "Definition of a segment ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation','Vecteur'),), + Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition du segment"), + Equation = FACT (statut='f',fr="Donnee du segment par son equation, sa longueur et son origine", + Coefficients = SIMP (typ='R' ,min=2,max=4,statut='o',fr="Coefficients successifs abcd de l'equation de la droite"), + Longueur = SIMP (typ='R', statut='o',fr="Longueur du segment en cm"), + Origine = SIMP (typ=Point, statut='o',fr="Donnee de l'origine du segment") + ), + Vecteur = FACT (statut='f',fr="Donnee du segment par un vecteur, sa longueur et son origine", + Vecteur = SIMP (typ=Vecteur,min=2,max=4,statut='o',fr="Coefficients successifs abcd de l'equation de la droite"), + Longueur = SIMP (typ='R', statut='o',fr="Longueur du segment en cm"), + Origine = SIMP (typ=Point, statut='o',fr="Donnee de l'origine du segment") + ) + ) ; # Fin SEGMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ARC_CERCLE : Classe de definition d'un arc de cercle +# Angles donnes en degres +# Dans le cas 2D on peut positionner l'arc de cercle en donnant l'angle du debut de l'arc par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur de l'arc +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ARC_CERCLE = OPER (nom="ARC_CERCLE", op=0, sd_prod=ArcCercle, niveau = 'ElementsGeometriques', + fr = "Definition d'un arc de cercle", + ang = "Definition of a circular arc", + Type = SIMP (typ='TXM' ,statut='o',defaut='2D',into=('2D','3D'), fr="Type d'arc 2D ou 3D"), + Rayon = SIMP (typ='R' ,statut='o', fr="Rayon de l'arc de cercle en cm"), + Angles = SIMP (typ='R' ,statut='f',max=2,defaut=(360.,0.), fr="Angles en degres de l'arc : Total et Debut"), + VecteurAxe = SIMP (typ=Vecteur,statut='f', fr="Vecteur directeur de l'axe de l'arc") + ) ; # Fin ARC_CERCLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTEUR_DISQUE : Classe de definition d'un disque ou d'un secteur d'une couronne circulaire +# Angle du secteur donne en degres (360° par defaut) +# Dans le cas 2D on peut positionner le secteur en donnant l'angle du debut de secteur par rapport a l'axe Ox +# Dans le cas 3D on donne en plus la hauteur et l'axe directeur du secteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTEUR_DISQUE = OPER (nom="SECTEUR_DISQUE", op=0, sd_prod=SecteurDisque, niveau = 'ElementsGeometriques', + fr = "Definition d'un disque ou d'un secteur d'une couronne", + ang = "Definition of a circular sector", + Type = SIMP (typ='TXM' ,statut='o',into=('2D','3D'),defaut='2D',fr="Type de secteur 2D ou 3D"), + Rayons = SIMP (typ='R' ,statut='o',min=2,max=2, fr="Rayons interne et externe de la couronne en cm"), + Angles = SIMP (typ='R' ,statut='f',max=2,defaut=(360.,0.), fr="Angles en degres du secteur"), + Hauteur = SIMP (typ='R' ,statut='f',defaut=0., fr="Hauteur du secteur en cm"), + VecteurAxe = SIMP (typ=Vecteur,statut='f',defaut=0., fr="Vecteur directeur de l'axe du secteur") + ) ; # Fin SECTEUR_DISQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONIQUE : Classe de definition d'une conique 2D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONIQUE = OPER (nom="CONIQUE", op=0, sd_prod=Conique, niveau = 'ElementsGeometriques', + fr = "Definition d'une conique 2D ax2+by2+cxy+dx+ey+f=0", + ang = "Definition of a 2D quadratic curve ax2+by2+cxy+dx+ey+f=0", + Equation = SIMP (typ='R',min=2,max=6,statut='o',fr="Coefficients successifs abcdef de l'equation d'une conique") + ) ; # Fin CONIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TRIANGLE : Classe de definition d'un triangle +# Angles donnes en degres par rapport a l'axe Ox horizontal +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TRIANGLE = OPER (nom="TRIANGLE", op=0, sd_prod=Triangle, niveau = 'ElementsGeometriques', + fr = "Definition d'un triangle", + ang = "Definition of a triangle", + regles = (UN_PARMI ('Points','AngleCotes'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee des 3 sommets du triangle"), + AngleCotes = SIMP (typ='R' ,min=3,max=3,statut='f',fr="Donnee d'un Angle en degres et Longueurs de deux cotes en cm") + ) ; # Fin TRIANGLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RECTANGLE : Classe de definition d'un rectangle +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RECTANGLE = OPER (nom="RECTANGLE", op=0, sd_prod=Rectangle, niveau = 'ElementsGeometriques', + fr = "Definition d'un rectangle", + ang = "Definition of a rectangle", + regles = (UN_PARMI ('Points','Cotes'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Definition du rectangle par trois points"), + LongueursCotes = SIMP (typ='R' ,min=2,max=2,statut='f',fr="Donnee de la longueur de deux cotes en cm") + ) ; # Fin RECTANGLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARRE : Classe de definition d'un carre +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARRE = OPER (nom="CARRE", op=0, sd_prod=Carre, niveau = 'ElementsGeometriques', + fr = "Definition d'un carre", + ang = "Definition of a square", + regles = (UN_PARMI ('Points','Cote'),), + Points = SIMP (typ=Point,min=2,max=2, statut='f',fr="Definition du carre par deux points"), + LongueurCote = SIMP (typ='R', statut='f',fr="Donnee de la longueur du cote du carre en cm") + ) ; # Fin CARRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe HEXAGONE : Classe de definition d'un hexagone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +HEXAGONE = OPER (nom="HEXAGONE", op=0, sd_prod=Hexagone, niveau = 'ElementsGeometriques', + fr = "Definition d'un hexagone", + ang = "Definition of an hexagon", + Rayon = SIMP (typ='R',statut='f',fr="Rayon du cercle inscrit dans l'hexagone en cm") + ) ; # Fin HEXAGONE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYGONE : Classe de definition d'un polygone +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYGONE = OPER (nom="POLYGONE", op=0, sd_prod=Polygone, niveau = 'ElementsGeometriques', + fr = "Definition d'un polygone", + ang = "Definition of a polygon", + Points = SIMP (typ=Point,max='**',statut='f',fr="Definition d'un polygone par tous ses points") + ) ; # Fin POLYGONE +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques combinatoires ou surfaciques +# L'utilisation de certaines classes de combinatoire en surfacique consiste a simplement specifier la position de l'objet +# ou a eliminer certaines surfaces limites de la classe +# Pour une sphere : donnee du centre de la sphere +# Pour un cylindre : Pas de donnee de la hauteur, mais donnee d'un point de l'axe du cylindre +# ================================================================================================================================== +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SPHERE : Classe de definition d'une sphere (ou d'une sphere sectorisee ou decoupee en rondelles) +# Des portions de la sphere peuvent etre selectionnees en donnant leurs cotes limites sur un axe de la sphere +# (origine de l'axe au centre de la sphere, donc cotes comprises entre -R, +R si R est le rayon de la sphere) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SPHERE = OPER (nom="SPHERE", op=0, sd_prod=Sphere, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme spherique", + ang = "Definition of a spherical form", + Rayon = SIMP (typ='R',statut='o',fr="Rayon de la sphere en cm"), + Secteur = SIMP (typ='R',statut='f',fr="Angle du secteur de la sphere en degre"), + TranchesAxiales = NUPL (max = '**', statut = 'f', fr = "Limites des tranches axiales de la sphere sectorisee", + elements = ( SIMP (typ='R',statut = 'o', fr="Cote depart de la tranche"), + SIMP (typ='R',statut = 'o', fr="Cote finale de la tranche"))) + ) ; # Fin SPHERE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_RECTANGULAIRE : Classe de definition d'une forme parallelepipedique de cotes paralleles aux axes de reference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_RECTANGULAIRE = OPER (nom="BOITE_RECTANGULAIRE", op=0, sd_prod=BoiteRectangulaire, niveau = 'ElementsGeometriques', + fr = "Definition d'une d'une forme parallelepipedique rectangulaire", + ang = "Definition of a rectangular box form", + Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite rectangulaire en cm") + ) ; # Fin BOITE_RECTANGULAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe BOITE_GENERALE : Classe de definition d'une forme parallelepipedique quelconque +# Le plan de base de la boite doit etre le plan xOy. On donne donc uniquement les 2 vecteurs **normaux** +# aux 2 autres plans, et les 3 longueurs des aretes principales. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +BOITE_GENERALE = OPER (nom="BOITE_GENERALE", op=0, sd_prod=BoiteGenerale, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme parallelepipedique quelconque", + ang = "Definition of a general box form", + VecteursDirecteurs = SIMP (typ=Vecteur,min=2,max=2,statut='o',fr="Vecteurs normaux aux faces non horizontales de la boite"), + Cotes = SIMP (typ='R' ,min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite en cm") + ) ; # Fin BOITE_GENERALE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_X : Classe de definition d'une forme cylindrique d'axe parallele a Ox +# Pour tous les cylindres, la donnee de deux rayons transforme le cylindre circulaire en cylindre elliptique +# La donnee d'un angle limite le cylindre a ce secteur +# Pour un secteur d'un cylindre elliptique, il est necessaire de donner en plus l'angle de depart du secteur +# par rapport a l'axe majeur de l'ellipse +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_X = OPER (nom="CYLINDRE_X", op=0, sd_prod=CylindreX, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Ox", + ang = "Definition of a right cylinder form // Ox", + Rayons = SIMP (typ='R', max=2, statut='o', fr="Rayons mineur et majeur du cylindre X en cm"), + Hauteur = SIMP (typ='R', statut='f', fr="Hauteur du cylindre X en cm"), + Angles = SIMP (typ='R', max=2, statut='f', fr="Angles du secteur du cylindre X en degres") + ) ; # Fin CYLINDRE_X +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Y : Classe de definition d'une forme cylindrique d'axe parallele a Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Y = OPER (nom="CYLINDRE_Y", op=0, sd_prod=CylindreY, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Oy", + ang = "Definition of a right cylinder form // Oy", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre Y en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre Y en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre Y en degres") + ) ; # Fin CYLINDRE_Y +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE_Z : Classe de definition d'une forme cylindrique d'axe parallele a Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE_Z = OPER (nom="CYLINDRE_Z", op=0, sd_prod=CylindreZ, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique d'axe parallele a Oz", + ang = "Definition of a right cylinder form // Oz", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre Z en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre Z en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre Z en degres") + ) ; # Fin CYLINDRE_Z +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CYLINDRE : Classe de definition d'une forme cylindrique quelconque +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CYLINDRE = OPER (nom="CYLINDRE", op=0, sd_prod=Cylindre, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme cylindrique quelconque", + ang = "Definition of a general cylinder form", + Rayons = SIMP (statut='o',typ='R',max=2,fr="Rayons mineur et majeur du cylindre en cm"), + VecteurAxe = SIMP (statut='o',typ=Vecteur, fr="Vecteur directeur de l'axe du cylindre"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur du cylindre en cm"), + Angles = SIMP (statut='f',typ='R',max=2,fr="Angles du secteur du cylindre en degres") + ) ; # Fin CYLINDRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONE : Classe de definition d'un forme conique +# Une portion de cone peut etre definie en donnant les cotes axiales (origine de l'axe du cone au sommet du cone) de +# la zone retenue +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONE = OPER (nom="CONE", op=0, sd_prod=Cone, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme conique", + ang = "Definition of a conic form", + DemiAngleSommet = SIMP (statut='o',typ='R', fr="Demi-angle au sommet en degres"), + LimitesAxiales = SIMP (statut='f',typ='R',min=2,max=2,fr="Limites axiales du cone"), + VecteurAxe = SIMP (statut='o',typ=Vecteur, fr="Vecteur directeur de l'axe du cone") + ) ; # Fin CONE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRISME_HEXAGONAL : Classe de definition d'une forme de prisme hexagonal 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRISME_HEXAGONAL = OPER (nom="PRISME_HEXAGONAL",op=0,sd_prod=PrismeHexagonal, + niveau = 'ElementsGeometriques', + fr = "Definition d'une forme de prisme hexagonal 3D", + ang = "Definition of a 3D hexagonal form", + Rayon = SIMP (statut='o',typ='R', fr="Rayon du cercle circonscrit (=cote de l'hexagone) en cm"), + Hauteur = SIMP (statut='f',typ='R', fr="Hauteur de l'hexagone en cm"), + VecteurAxe = SIMP (statut='o',typ=Vecteur,fr="Vecteur directeur de l'axe de l'hexagone") + ) ; # Fin PRISME_HEXAGONAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe TORE : Classe de definition d'une forme toroidale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TORE = OPER (nom="TORE",op=0,sd_prod=Tore, + niveau = 'ElementsGeometriques', + fr = "Definition d'une forme toroidale", + ang = "Definition of a toroidal form", + Rayons = SIMP (typ='R',min=2,max=2,statut='o', + fr="Rayons du tore : 1/2 distance a l'axe et rayon de la section du tore en cm") + ) ; # Fin TORE +# ================================================================================================================================== +# Definition des Classes pour une geometrie 3D : Elements geometriques surfaciques +# ================================================================================================================================== +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN : Classe de definition d'un plan +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN = OPER (nom="PLAN", op=0, sd_prod=Plan, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan ax + by + cz + d = 0", + ang = "Definition of a plane surface ax + by + cz + d = 0", + regles = (UN_PARMI ('Points','Equation'),), + Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee de 3 points non alignes"), + Equation = SIMP (typ='R' ,min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation du plan") + ) ; # Fin PLAN +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_X : Classe de definition d'un plan perpendiculaire a l'axe Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_X = OPER (nom="PLAN_X", op=0, sd_prod=PlanX, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Ox", + ang = "Definition of a plane surface perpendicular to Ox", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OyOz") + ) ; # Fin PLAN_X +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Y : Classe de definition d'un plan perpendiculaire a l'axe Oy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Y = OPER (nom="PLAN_Y", op=0, sd_prod=PlanY, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Oy", + ang = "Definition of a plane surface perpendicular to Oy", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOz") + ) ; # Fin PLAN_Y +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe PLAN_Z : Classe de definition d'un plan perpendiculaire a l'axe Oz +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PLAN_Z = OPER (nom="PLAN_Z", op=0, sd_prod=PlanZ, niveau = 'ElementsGeometriques', + fr = "Definition d'un plan perpendiculaire a Oz", + ang = "Definition of a plane surface perpendicular to Oz", + Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOy") + ) ; # Fin PLAN_Z +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POLYEDRE : Classe de definition d'une forme polyhedrique 3D quelconque (N faces, N > 4) +# Definition surfacique : Donnee des N plans et du choix du cote positif ou negatif +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POLYEDRE = OPER (nom="POLYEDRE", op=0, sd_prod=Polyedre, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme polyhedrique 3D quelconque ", + ang = "Definition of a 3D polyhedron form with N > 4 plane faces", + Plans = NUPL (min = 5, max = '**', statut = 'o', fr = "Surfaces planes limites du polyedre", + elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ) ,fr="Plans limites du polyedre"), + SIMP (typ='TXM',into=('Plus','Moins'),fr="Choix du cote positif ou negatif de l'espace"))) + ) ; # Fin POLYEDRE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe QUADRIQUE : Classe de definition d'une quadrique 3D +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +QUADRIQUE = OPER (nom="QUADRIQUE", op=0, sd_prod=Quadrique, niveau = 'ElementsGeometriques', + fr = "Definition d'une quadrique 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + ang = "Definition of a quadratic curve 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0", + Equation = SIMP (typ='R',min=2,max=10,statut='o',fr="Coefficients successifs abcdefghij de l'equation d'une quadrique") + ) ; # Fin QUADRIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CELLULE : Classe de definition d'une cellule (ensemble elementaire de regions annulaires et sectorisees) +# Apres la hauteur de la cellule, entree des donnees par listes successives pour l'ensemble des couronnes de la +# cellule, la zone externe etant decrite a part dans l'attribut FormeTechnologique : +# - Liste des materiaux +# - Liste des rayons des couronnes correspondantes +# - Liste des sous-couronnes : - Numero de couronne a discretiser (Numero 1 a partir du centre), +# - Nombre de sous-couronnes, +# - Mot-cle Equivolumique si decoupage en sections transverses egales, +# - Rayons des couronnes intermediaires ou proportions volumiques si mot-cle Proportions indique anterieurement. +# - Liste des sectorisations : - Nom de couronne a sectoriser , +# - Nombre de secteurs, +# - Mot-cle Equivolumique si decoupage en secteurs egaux et positionnement du premier +# secteur par rapport a l'axe x, et pas de changement de composition du secteur, +# - Mot-cle alternatif Angle si on veut modifier ou positionner les secteurs dans la +# couronne : on donne alors des triplets de donnees pour chaque secteur : +# - nom du materiau composant le le secteur, +# - position trigonometrique en degres du debut du secteur +# - et angle en degres du secteur. +# Le trace des secteurs sont definis en partant du centre de la couronne. +# Pour la sectorisation de la forme externe, deux cas se presentent : +# - soit pas de couronnes internes : les secteurs se tracent alors en partant du centre de la forme externe, +# - dans le cas contraire, les secteurs partent du centre des couronnes. +# Les secteurs peuvent ne pas couvrir l'ensemble de la couronne. +# - Pour la zone peripherique, on doit definir les cotes de la cellule (cas cartesien), son materiau, sa +# discretisation, et le decentrage du centre des couronnes par rapport au centre de ce contour peripherique +# (Coordonnees x,y du centre des couronnes / au centre du contour) +# - Pour le moment, limitation a 2D, sauf la donnee optionnelle des positions axiales des couronnes +# - Une cellule peut etre definie a partir d'une cellule d'un autre assemblage antérieurement calcule +# - Cette classe sert aussi a definir des microstructures (double heterogeneite) a inclure dans des regions +# d'autres cellules d'ou les attributs relatifs aux microstructures (une microstructure étant une petite cellule +# cylindrique ou spherique a disseminer dans des regions particulieres d'une cellule de taille plus importante +# dans des proportions fixees par l'attribut ProportionsMicroStructures +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CELLULE = OPER (nom="CELLULE", op=0, sd_prod=Cellule, niveau = 'Geometries', + fr = "Definition d'une cellule elementaire", + ang = "Definition of a basic cell", + regles = (UN_PARMI ('Couronnes', 'CelluleIrradiee'),), + Type = SIMP (typ='TXM',defaut='Combustible', + into=( 'Combustible','BarreGrise','BarreNoire','BarreAcier','BarreAic','BarreB4c', + 'Detecteur','Trou','TubeGuide','Postiche','Pyrex','ExPyrex','Gadolinium', + 'CellType1','CellType2','CellType3'),statut='o'), + HauteurTotale = SIMP (typ='R',defaut=1.,statut='o',fr="Hauteur totale de la cellule"), + Cluster = SIMP (typ=Cluster,statut='f',fr="Cluster a integrer dans la cellule de base en cm"), + TypeGeometrie = SIMP (typ='TXM',defaut='Cylindrique',statut='o',into=('Cylindrique','Spherique'),fr="Type de geometrie de la cellule"), + Couronnes = FACT (statut='f',fr="Definition des couronnes cylindriques physiques de materiaux", + NomsSymboliques = SIMP (typ='TXM', max='**',statut='o',fr="Liste des noms arbitraires des couronnes"), + Materiaux = SIMP (typ=Materiau, max='**',statut='o',fr="Liste des materiaux des couronnes"), + Temperatures = SIMP (typ='R', max='**',statut='f',fr="Liste des temperatures des couronnes en Celsius"), + PressionGaz = SIMP (typ='R', statut='f',fr="Valeur de pression de gaz (en bars)"), + Rayons = SIMP (typ='R', max='**',statut='o',fr="Liste des rayons des couronnes en cm"), + RayonsMineurs = SIMP (typ='R', max='**',statut='f',fr="Liste des rayons mineurs des couronnes elliptiques en cm"), + Hauteurs = SIMP (typ='R', max='**',statut='f',fr="Liste des hauteurs des couronnes en cm"), + AxialPositions = SIMP (typ='R', max='**',statut='f', + fr="Positions axiales de la base des couronnes en cm / au zero de la hauteur maximum") + ), + MicroStructures = FACT (max = '**', statut = 'f',fr="Chargement de la double heterogeneite dans chaque couronne", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom symbolique de la couronne ou inserer des microstructures"), + MicroStructures = SIMP (typ=Cellule,max='**',statut='o',fr="Liste des microstructures dans la couronne"), + ProportionsMicroStructures = SIMP (typ='R',max='**',statut='o',fr="Proportions des microstructures dans la couronne") + ), + SousCouronnes = FACT (max = '**', statut = 'f',fr="Discretisation des couronnes de la cellule", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom symbolique de la couronne"), + NbSousCouronnes = SIMP (typ='I' ,statut='o',fr="Nombre de sous-couronnes de discretisation"), + TypeDiscretisation = SIMP (typ='TXM',defaut='Equivolumique',statut='o',into=('Equivolumique','Proportions','Equidistant')), + BlocProportions = BLOC (condition = "TypeDiscretisation=='Proportions'", + ProportionsVolumiques = SIMP (typ='R',statut='o',max='**',fr="Proportions volumiques des sous-couronnes")), + ProfilTemperature = SIMP (typ='R',max='**',statut='f',fr="Profil de temperature") + ), + Homogeneisation = FACT (max = '**', statut = 'f', fr="Homogeneisation de couronnes de la cellule", + NomCouronne = SIMP (typ='TXM' , fr="Nom arbitraire de la couronne homogeneisee"), + ListeCouronnes = SIMP (typ='TXM',max='**' , fr="Liste des noms des couronnes jointives a homogeneiser") + ), + Secteurs = FACT (max = '**', statut = 'f', fr="Sectorisation des couronnes de la cellule", + NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom de la couronne ou de la forme externe a sectoriser"), + NbSecteurs = SIMP (typ='I' ,statut='o',fr="Nombre de secteurs de la couronne"), + TypeSectorisation = SIMP (typ='TXM',statut='o',defaut='Coins',into=('Equivolumique','Angle','Coins','MilieuxCotes')), + AngleDepart = SIMP (typ='R' ,statut='o',defaut=0.,fr="Angle en degres de depart des secteurs (Origine 0 sur l'axe Ox)"), + Sectorisation = FACT (statut = 'f', + Materiaux = SIMP (typ=Materiau, max='**',statut='f',fr="Materiau des secteurs"), + Temperatures = SIMP (typ=('R','I','TXM'),max='**',statut='f',fr="Temperature des secteurs en Celsius"), + Angles = SIMP (typ='R', max='**',statut='f',fr="Angles en degres des secteurs") + ) + ), + FormeExterne = FACT (statut='f',fr="Definition de la region externe au systeme cylindrique interne", + NomSymbolique = SIMP (typ='TXM',statut='f',fr="Nom arbitraire de la zone externe"), + Type = SIMP (typ = (ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone), + statut = 'f', # la donnee est facultative si la cellule est inserree dans un reseau + fr = "Forme geometrique exterieure"), + Materiau = SIMP (typ=(Materiau,Cellule),fr="Materiau de la forme externe"), + MicroStructures = SIMP (typ=Cellule,max='**',statut='f',fr="Microstructures de la region externe"), + ProportionsMicroStructures = SIMP (typ='R',max='**',statut='f', + fr="Proportions des microstructures dans la region externe"), + Temperature = SIMP (typ='R',fr="Temperature en Celsius du materiau de la forme externe"), + PressionGaz = SIMP (typ='R',statut='f',fr="Valeur de pression de gaz (en bars)"), + Decentrement = SIMP (typ = 'R', + min = 2, + max = 3, +# defaut = (0.,0.,0.), + statut = 'f', + fr = "Coordonnees xyz du centre des couronnes / barycentre du contour") ), + CelluleIrradiee = FACT (statut='f',fr="Utilisation d'une cellule irradiee d'un assemblage existant", + AssemblageOrigine = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o', + fr="Assemblage d'origine de la cellule a extraire"), + IrradiationMoyenne = SIMP (typ='R',statut='o',fr="Irradiation moyenne MWj/t de l'assemblage d'origine"), + Position = SIMP (typ='I', min=2, max=2, statut='o', + fr="Coordonnees entieres ix,jy du crayon a extraire de l'assemblage") ) + ) ; # Fin CELLULE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CLUSTER : Classe de definition d'un cluster de cellules +# Un cluster est defini comme une superposition centree de cadrans telephoniques (a l'ancienne mode), chaque +# cadran ayant des trous de tailles differentes, l'ensemble devant etre dispose ensuite dans une cellule de forme +# quelconque. +# Donnees de Positionnement des couronnes de canaux, chaque canal etant une CELLULE predefinie, +# Pour chaque type de cellule, on donne : +# - le nombre de cellules a positionner (de maniere uniformement repartie sur le cercle) +# - le rayon du cercle sur lequel on les positionne +# - l'angle / Ox du centre de la premiere cellule (en degres) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CLUSTER = OPER (nom="CLUSTER", op=0, sd_prod=Cluster, niveau = 'Geometries', + fr = "Definition d'un cluster de cellules cylindriques", + ang = "Definition of a cylindrical cell cluster", + Hauteur = SIMP (typ='R',defaut=1.,statut='f',fr="Hauteur du cluster"), + Couronnes = FACT (statut='o',fr="Definition des couronnes de cellules",min=1, + Cellules = SIMP (typ=Cellule,max='**',statut='o',fr="Liste des types de cellules sur chaque cercle"), + NbCellules = SIMP (typ='I' ,max='**',statut='o',fr="Liste des nombres de cellules de chaque type sur chaque cercle"), + Rayons = SIMP (typ='R' ,max='**',statut='o',fr="Liste des rayons des cercles correspondants en cm"), + Angles = SIMP (typ='R' ,max='**',statut='o',fr="Liste des angles de positionnement / Ox de la premiere cellule de chaque type")) + ) ; # Fin CLUSTER +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ORIENTATION : Classe de definition d'une orientation angulaire dans un plan 2D apres symetrie eventuelle / Ox +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ORIENTATION = OPER (nom="ORIENTATION", op=0, sd_prod=Orientation, niveau = 'ElementsGeometriques', + fr = "Definition d'une orientation d'un reseau ou d'une cellule", + ang = "Definition of a cell or lattice orientation", + Symetrie = SIMP (typ=(Plan,PlanX,PlanY,PlanZ),statut='f', + fr="Indication d'une operation de symetrie / Plan, avant rotation"), + AngleRotation = SIMP (typ='R' ,statut='f',fr="Angle de rotation en degres",defaut=0.), + CentreRotation = SIMP (typ=Point ,statut='f',fr="Centre de rotation"), + AxeRotation = SIMP (typ=Vecteur,statut='f',fr="Vecteur de l'axe de rotation") + ) ; # Fin ORIENTATION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe FORME_POSITIONNEE : Classe de definition d'une forme geometrique positionnee +# La position est definie a l'aide du centre de la forme geometrique, +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FORME_POSITIONNEE = OPER (nom="FORME_POSITIONNEE", op=0, sd_prod=FormePositionnee, niveau = 'ElementsGeometriques', + fr = "Definition d'une forme positionnee", + ang = "Definition of a shape and its position", + Forme = SIMP ( + typ = (Sphere,BoiteRectangulaire,BoiteGenerale,CylindreX,CylindreY,CylindreZ,Cylindre,SecteurDisque,Cone, + Carre,Rectangle,Triangle,Hexagone,Polygone,PrismeHexagonal,Tore,Polyedre,Cellule,Cluster), + statut = 'o', + fr = "Forme geometrique de base a positionner"), + PositionCentre = SIMP (typ=Point ,statut='o',fr="Coordonnees du centre de la forme geometrique"), + OrientationForme = SIMP (typ=Orientation,statut='f',fr="Orientation de la forme") + ) ; # Fin FORME_POSITIONNEE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_SURFACIQUE : Classe de definition d'une geometrie surfacique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_SURFACIQUE = OPER (nom="GEOMETRIE_SURFACIQUE", op=0, sd_prod=GeometrieSurfacique, niveau = 'Geometries', + fr = "Definition d'une geometrie surfacique", + ang = "Definition of a surfacic geometry", + MateriauRemplissage = SIMP (typ=Materiau,statut='o',fr="Materiau de remplissage de la geometrie surfacique"), + Surfaces = NUPL ( + max = '**', + statut = 'o', + fr = "Serie de couples (Surface,Plus ou Moins) definissant les surfaces limites de la geometrie", + elements = ( + SIMP (typ=(PlanX,PlanY,PlanZ,Plan,CylindreX,CylindreY,CylindreZ,Cylindre,Sphere,Cone,Conique,Quadrique)), + SIMP (typ='TXM',into=('Plus','Moins')))) + ) ; # Fin GEOMETRIE_SURFACIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GEOMETRIE_COMBINATOIRE : Classe de definition d'une geometrie combinatoire +# Ecrasement : Constitution par ecrasements successifs (dans l'ordre des donnees) de la +# Geometrie Initiale, la frontiere externe etant celle de la geometrie initiale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GEOMETRIE_COMBINATOIRE = OPER (nom="GEOMETRIE_COMBINATOIRE", op=0, sd_prod=GeometrieCombinatoire, niveau = 'Geometries', + fr = "Definition d'une geometrie combinatoire", + ang = "Definition of a combinatorial geometry", + GeometriePremierPlan = SIMP (typ=FormePositionnee,statut='o',fr="Geometrie se trouvant au premier plan"), + GeometrieEcrasee = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries ecrasées et surchargées par la GeometriePremierPlan"), + GeometrieUnion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan en gardant les interfaces, les intersections etant des volumes particuliers"), + GeometrieReunion = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a reunir a la GeometriePremierPlan pour former un volume unique"), + GeometrieIntersection = SIMP (typ=FormePositionnee,max='**',statut='f', + fr="Geometries a intersecter avec la GeometriePremierPlan") + ) ; # Fin GEOMETRIE_COMBINATOIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CORRESPONDANCE_REPERE_POSITION_RESEAU : +# Classe de definition des reperes alphanumeriques des cases d'un reseau +# Reperes (bataille navale ou autre) et Coordonnees cartesiennes entieres des cases dans un systeme i,j du reseau +# Origine des coordonnees en bas a gauche d'un systeme en xy +# Ceci n'a d'interet que pour l'utilisateur ou pour se conformer aux reperes industriels habituels dans le cas des REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CORRESPONDANCE_REPERE_POSITION_RESEAU = OPER (nom="CORRESPONDANCE_REPERE_POSITION_RESEAU",op=0,sd_prod=CorrespondanceReperePositionReseau, + niveau = 'Geometries', + fr = "Correspondance entre reperes alphanumeriques et cases d'un reseau", + ang = "Alphanumeric identificators and lattice coordinates", + Positions = NUPL (max='**',statut='o', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire d'une case du reseau"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere dans le systeme i,j du reseau"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere dans le systeme i,j du reseau"))) + ) ; # Fin CORRESPONDANCE_REPERE_POSITION_RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESEAU : +# Classe de definition d'un reseau de juxtapositions de cellules ou de reseaux +# Assemblage de cellules ou de reseaux dans une grille rectangulaire ou hexagonale +# Les positions des cellules et des reseaux dans le nouveau reseau sont a fournir sur les mailles +# du reseau sans tenir compte des symetries, +# Le reseau peut etre charge : +# - de maniere uniforme : un seul type de CELLULE ou de RESEAU +# - de maniere complete : a chaque maille doit etre affecte un reseau ou une cellule et optionnellement son +# orientation, l'ordre des donnees dans le plan radial etant celui obtenu en partant de l'element le plus +# bas a gauche, et dans le sens axial ensuite (eventuellement si 3D) +# - de maniere partielle : liste des cellules et reseaux charges et leur position xyz dans le nouveau reseau +# et orientations correspondantes de ces cellules et reseaux +# Des reperes alphanumeriques arbitraires peuvent etre associes a chaque maille du reseau, ce qui permet +# si necessaire de manipuler ces elements du reseau par l'intermediaire de ces symboles (exemple des +# reperes bataille navale des assemblages dans le reseau d'un coeur REP). +# Le reseau peut etre entoure de zones peripheriques homogenes ou heterogenes. +# - Le cas Homogene peut s'appliquer aux reseaux hexagonaux ou cartesiens ; +# - Dans le cas Heterogene, la reflexion s'est uniquement portee sur la situation cartesienne et particulierement en donnant la +# la possibilite de decrire un assemblage bouillant (avec croix de contrôle et instrumentation) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESEAU = OPER (nom="RESEAU", op=0, sd_prod=Reseau, niveau = 'Geometries', + fr = "Definition d'un reseau compose de juxtapositions de cellules, de reseaux ou d'assemblages", + ang = "Definition of a lattice", + Identificateur = SIMP (typ='TXM',statut='o',fr="Identificateur arbitraire du reseau"), + ReseauReference = SIMP (typ='TXM',statut='f',fr="Identificateur du reseau de reference dans le cas d'une composition de reseaux de reseau"), + DifferenciationCellules = SIMP (typ='I',defaut=0,statut='f',fr="Nombre de couches de cellules a differencier autour du reseau de reference"), + TypeGeometrie = SIMP (typ='TXM',into=('cartesienne','hexagonale'),defaut='cartesienne',statut='f'), + NbMaillesX = SIMP (typ='I',defaut=17,statut='o',fr="Nbre de mailles sur le premier axe du reseau"), + NbMaillesY = SIMP (typ='I',defaut=17,statut='f',fr="Nbre de mailles sur le second axe du reseau"), + NbMaillesZ = SIMP (typ='I',defaut=1 ,statut='f',fr="Nbre de mailles sur l'axe vertical du reseau"), + PasReseau = SIMP (typ='R',defaut=1.26 ,statut='f',max=2,fr="Pas du reseau en X et Y (en cm)"), + MateriauRemplissage = SIMP (typ=Materiau,defaut='ModExt',statut='f',fr="Materiau de remplissage du reseau"), + TypeDefinition = SIMP (typ='TXM',statut='f',defaut="Complet",into=("Uniforme","Complet","Partiel"),fr="Mode de chargement du reseau"), + ReseauUniforme = BLOC (condition = "TypeDefinition=='Uniforme'",fr="Chargement uniforme du reseau", + ElementGeomU = SIMP (typ=(Cellule,Reseau,Cluster,GeometrieCombinatoire,AssemblageCombustibleReel,AssemblageType),statut='o', + fr = "Remplissage uniforme du nouveau reseau par un element particulier"), + OrientationU = SIMP (typ=Orientation,fr="Orientation de l'element geometrique de base",statut='f')), + ReseauComplet = BLOC (condition = "TypeDefinition=='Complet'",fr="Chargement complet du reseau", + ElementsGeomC = NUPL (max='**', statut='o', + fr="Liste des couples (ElementGeometrique,SigleTextuel) les sigles textuels servant ensuite au chargement complet du reseau", + elements =(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a associer au sigle"), + SIMP (typ='TXM',fr="Sigle alphanumerique associe a l'element geometrique"))), + ChargementC = SIMP (typ='TXM',statut='o',max='**', + fr="Affectation des sigles aux cases geometriques du reseau"), + RegroupementC = SIMP (typ='I',statut='f',max='**', + fr="Numeros des cellules de calcul en approximation multicellule dans chaque case du reseau"), + OrientationC = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements geometriques dans les cases du reseau"), + ReperesC = SIMP (typ='TXM',max='**',statut='f',fr="Reperes arbitraires des cases geometriques"), + ), + ReseauPartiel = BLOC (condition = "TypeDefinition=='Partiel'",fr="Chargement partiel du reseau", + ChargementP = FACT (max='**',fr="Chargement partiel du reseau", + regles = (UN_PARMI ('ElementsPositionnesP', 'ElementsReperesP'),), + ElementsPositionnesP = NUPL (max='**', statut='f',fr="Donnee des Positions des elements geometriques dans le systeme des coordonnees du reseau", + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a positionner"), + SIMP (typ='I',min=2,max=2,fr="Coordonnees i j de l'element geometrique dans le reseau"))), + ElementsReperesP = NUPL (max='**', statut='f',fr="Donnee des reperes positionnels des elements geometriques", + elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire, GeometrieSurfacique, AssemblageCombustibleReel,AssemblageType), + fr="Element geometrique a positionner"), + SIMP (typ='TXM',fr="Repere alphanumerique de l'element geometrique"))), + CorrespondanceReperePositions = SIMP (typ=CorrespondanceReperePositionReseau, + statut='f', + fr="Correspondance entre Repere alphanumerique et coordonnees dans le reseau"), + OrientationP = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements geometriques du chargement partiel"), + )), + ZonesPeripheriquesHomogenes = FACT (statut='f',fr="Zones homogenes peripheriques au reseau", + Epaisseurs = SIMP (typ='R' ,max='**',statut='o',fr="Liste des epaisseurs (cm) des couches peripheriques"), + Materiaux = SIMP (typ=Materiau,max='**',statut='f',fr="Liste des materiaux des couches peripheriques"), + MateriauExterne = SIMP (typ=Materiau ,statut='f',fr="Materiau de remplissage de la zone externe du reseau hexagonal")), + ZonesPeripheriquesHeterogenes = FACT (max='**',statut='f',fr="Zones heterogenes peripheriques au reseau", + DimensionsExternes = SIMP (typ='R',min=2,max=2, statut='o', + fr=" Dimensions (cm) externes X et Y zone peripherique comprise"), + Decentrement = SIMP (typ='R',min=2,max=2, statut='f', + fr=" Coordonnees (cm) X et Y du centre de la zone peripherique / au centre du réseau"), + MateriauRemplissage = SIMP (typ=Materiau, statut='f', + fr="Materiau de remplissage de la zone"), + Boitier = FACT (statut='f',fr="Definition d'un boitier", + Epaisseur = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) du boitier dans sa partie lineaire"), + LongueurPartieLineaire = SIMP (typ='R',statut='o',fr= "Longueur (cm) de la partie lineaire du boitier"), + RayonExterneCoinBoitier = SIMP (typ='R',statut='o',fr= "Rayon externe (cm) du coin arrondi du boitier"), + MateriauExterne = SIMP (typ=Materiau,statut='f',fr="Materiau de remplissage de la zone externe au boitier"), + PositionBoitier = SIMP (typ='TXM',statut='o',defaut='Exterieure',into=('Exterieure','Interieure'), + fr="Position du boitier dans la zone")), + CroixControle = FACT (statut='f',fr="Definition d'une croix de controle", + Epaisseur = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) des branches de la croix de controle"), + EpaisseurEnveloppe = SIMP (typ='R',statut='o',fr= "Epaisseur (cm) de l'enveloppe de la croix de controle"), + DemiLongueurCroixCentrale = SIMP (typ='R',statut='o', + fr= "Demi-longueur (cm) de la partie homogene au centre de la croix de controle"), + NombreBarres = SIMP (typ='I',statut='o',fr= "Nombre de barres dans une aile de la croix de controle"), + CellulesBarres = SIMP (typ=Cellule,max='**',statut='o', + fr= "Liste des cellules correspondant aux barres de la croix de contrôle, en partant du centre de la croix"), + MateriauCroix = SIMP (typ=Materiau,statut='o',fr="Materiau de la croix de controle"), + BranchesCroix = SIMP (typ='TXM',statut='o',defaut='NordOuest',into=('NordOuest','NordEst','SudOuest','SudEst'), + fr="Choix des deux branches de la croix de contrôle decrites"), + PositionCroix = SIMP (typ='TXM',statut='o',defaut='AxeExterieure',into=('AxeExterieure','Exterieure','Interieure'), + fr="Position de la croix dans la zone")), + Instrumentation = FACT (statut='f',fr="Definition de l'instrumentation", + Cellule = SIMP (typ=Cellule,statut='o',fr= "Cellule decrivant la geometrie de l'instrumentation"), + Position = SIMP (typ='TXM',statut='o',defaut='SudEst',into=('NordOuest','NordEst','SudOuest','SudEst'), + fr="Choix du coin ou sera centree la cellule")) + ) + ) ; # Fin RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DECOMPOSITION_DOMAINES : Classe de definition de domaines de calcul +# Pour le moment, on ne considere qu'une partition en 2D d'un reseau +# (a completer ulterieurement pour une geometrie generale) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DECOMPOSITION_DOMAINES = OPER (nom="DECOMPOSITION_DOMAINES", op=0, sd_prod=DecompositionDomaines, niveau = 'Geometries', + fr = "Decomposition en domaines d'un reseau", + ang = "Domain decomposition of a lattice", + NbDomainesOx = SIMP (statut='o', typ='I', fr="Nombre de domaines sur l'axe Ox"), + NbDomainesOy = SIMP (statut='o', typ='I', fr="Nombre de domaines sur l'axe Oy"), + OxRepartitionDomaines = SIMP (statut='o', typ='I', max='**', fr="Nombre de mailles du reseau pour chaque domaine de l'axe Ox"), + OyRepartitionDomaines = SIMP (statut='o', typ='I', max='**', fr="Nombre de mailles du reseau pour chaque domaine de l'axe Oy") + ) ; # Fin DECOMPOSITION_DOMAINES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRILLE_ASSEMBLAGE : Classe de definition des grilles composant le squelette des assemblages combustibles +# Caracteristiques technologiques (dimension, materiaux de composition) et positionnement simplifie +# des materiaux dans les canaux de l'assemblage pour dilution homogene a 2D dans le milieu peripherique. +# - Materiaux fournis sous forme de couples (nom de materiau et masse en g) +# - Repartition decrite en donnant pour une liste de materiaux (faisant partie des materiaux +# precedemment indiques) la liste des types de cellules (precedee du mot-cle TypeCellule) et des +# types de materiaux (precedes du mot-cle TypeMateriau) devant etre modifies par la presence des +# grilles +# < liste de MATERIAU >, +# TypeCellule < liste de types de cellule >, +# TypeMateriau < liste de types de materiau > +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRILLE_ASSEMBLAGE = OPER (nom="GRILLE_ASSEMBLAGE", op=0, sd_prod=GrilleAssemblage, niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une grille d'assemblage", + ang = "Definition of an elementary assembly grid", + TypeGrille = SIMP (typ='TXM',defaut='GrilleMelange',statut='f',fr="Type de grille de structure assemblage"), + Hauteur = SIMP (typ='R',defaut=3.3,statut='f',fr="Hauteur de la grille de structure assemblage en cm"), + Largeur = SIMP (typ='R',defaut=21.338,statut='f',fr="Largeur de la grille de structure assemblage en cm"), + MateriauxMasse = NUPL (max = '**', statut = 'o', + elements = (SIMP (typ=Materiau),SIMP (typ='R')), + fr = "Serie de couples (Materiau,masse en g) de composition de la grille"), + Repartition = FACT (max = '**', statut = 'o',fr="Repartition des materiaux par type de cellule ou par type de materiau", + regles = (AU_MOINS_UN ('TypeCellule', 'TypeMateriau'),), + MateriauGrille = SIMP (typ=Materiau,fr="Nom du materiau a repartir",statut='o'), + TypeCellule = SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de cellule ou est reparti le materiau"), + TypeMateriau = SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou est reparti le materiau") ), + CoefficientsThermohydrauliques = FACT (statut = 'f',fr="Donnees de thermohydraulique", + CoeffPerteCharge = SIMP (typ='R',statut='f', + fr="Coefficient Cn de perte de charge au sens monodimensionnel de la singularite"), + CoeffRedressement = SIMP (typ='R',statut='f',val_min=0, + fr="Coefficient R de redressement de l'ecoulement au passage de la singularite"), + CoeffCkg = SIMP (typ='R',statut='f', + fr="Coefficient lie au type de grille et de geometrie")), + Ailettes = FACT (statut = 'f',fr="Donnees des ailettes de melange", + PerteChargeSansAilettes = SIMP (typ='R',statut='f',fr="Coefficient Cn de perte de charge monodimensionnel sans ailettes"), + PerteChargeAvecAilettes = SIMP (typ='R',statut='f',fr="Coefficient Cn de perte de charge avec ailettes"), + CoeffRedressementSansAilettes = SIMP (typ='R',statut='f',val_min=0, + fr="Coefficient R de redressement de l'ecoulement sans ailettes"), + CoeffCkg = SIMP (typ='R',statut='f',fr="Coefficient lie au type de grille et de geometrie"), + AngleOrientation = SIMP (typ='R',statut='f',fr="Angle d'orientation des ailettes"), + Repartition = SIMP (typ='TXM',max='**',into=('Rien','Droite','Gauche','Haut','Bas'),statut='f', + fr="Positionnement des ailettes dans chaque quart de sous-canal (soit 4 donnees par sous-canal)")) + ) ; # Fin GRILLE_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout inferieur d'un assemblage combustible REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieInferieureAssemblageCombustible, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition de la partie inferieure d'un assemblage combustible REP", + ang = "Definition of the bottom part of a PWR fuel assembly", + MateriauEmbout = SIMP (typ=Materiau,statut='f',fr="Materiau de l'embout inferieur",defaut='ACIER'), + MasseBouchonInferieurCrayonCombustible = SIMP (typ='R' ,statut='o',fr="Masse (g) du bouchon inferieur du crayon combustible"), + HauteurBouchonInferieurCrayonCombustible = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) du bouchon inferieur du crayon combustible"), + MateriauBouchonInferieurCrayonCombustible = SIMP (typ=Materiau,statut='f',fr="Materiau du bouchon inferieur du crayon combustible",defaut='ZIRCALOY'), + MasseEmbout = SIMP (typ='R' ,statut='o',fr="Masse (g) de l'embout inferieur"), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R' ,statut='o',fr="Epaisseur (cm) de la plaque adaptatrice de l'embout inferieur en cm"), + LargeurPlaqueAdaptatrice = SIMP (typ='R' ,statut='o',fr="Largeur (cm) de la plaque adaptatrice de l'embout inferieur"), + TrousPlaqueAdaptatrice = NUPL (fr="Dimensions des trous de la plaque adaptatrice", + max = '**', + statut = 'o', + elements = ( SIMP (typ='I' ,statut='o',fr="Nombre de trous de taille definie ci-apres"), + SIMP (typ='TXM',statut='o',into=('Rayon','Cotes'),fr="Choix de la forme des trous, elliptique ou rectangulaire"), + SIMP (typ='R' ,statut='o',min=2,max=2,fr="Rayons ou cotes (cm) des trous"), + SIMP (typ='TXM',statut='o',defaut='Hauteur',into=('Hauteur','Epaisseur'),fr="Mot-cle au choix"), + SIMP (typ='R' ,statut='o',fr="Hauteur (cm) des trous dans la plaque adaptatrice"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R', statut='o',fr="Hauteur (cm) du jeu entre bouchon combustible et plaque adaptatrice"), + HauteurPied = SIMP (typ='R', statut='o',fr="Hauteur (cm) du pied de l'embout inferieur"), + CapuchonRint = SIMP (typ='R', statut='f',fr="Rayon interne (cm) du capuchon"), + CapuchonRext = SIMP (typ='R', statut='f',fr="Rayon externe (cm) du capuchon"), + HauteurVisEpaulee = SIMP (typ='R', statut='f',fr="Hauteur des vis epaulees des tubes guides en cm"), + MasseVisEpaulee = SIMP (typ='R', statut='f',fr="Masse totale des vis epaulees des tubes guides en g"), + RintVisEpaulee = SIMP (typ='R', statut='f',fr="Rayon interne (cm) d'une vis epaulee"), + RextVisEpaulee = SIMP (typ='R', statut='f',fr="Rayon externe (cm) d'une vis epaulee"), + MasseFiltre = SIMP (typ='R', statut='f',fr="Masse (g) du filtre anti-debris"), + MateriauFiltre = SIMP (typ=Materiau, statut='f',fr="Materiau du filtre anti-debris", defaut='INCONEL'), + HauteurCale = SIMP (typ='R', statut='f',fr="Hauteur (cm) de la cale dans le crayon combustible"), + MateriauCale = SIMP (typ=Materiau, statut='f',fr="Materiau de la cale dans le crayon combustible",defaut='ACIER'), + RayonPionCentrage = SIMP (typ='R', statut='f',fr="Rayon externe des pions de centrage de la plaque inferieure coeur en cm"), + HauteurPionCentrage = SIMP (typ='R', statut='f',fr="Hauteur des pions de centrage de la plaque inferieure coeur en cm"), + HauteurOgivePionCentrage = SIMP (typ='R', statut='f',fr="Hauteur de l'ogive des pions de centrage de la plaque inferieure coeur en cm"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',fr="Materiau des pions de centrage de la plaque inferieure coeur",defaut='ACIER'), + BouchonTubGHauteur = SIMP (typ='R', statut='f',fr="Hauteur des bouchons des tubes guides en cm"), + BouchonTubGMateriau = SIMP (typ=Materiau, statut='f',fr="Materiau des bouchons des tubes guides",defaut='ACIER') + ) ; # Fin PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de l'embout superieur d'un assemblage combustible REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieSuperieureAssemblageCombustible, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition de la partie superieure d'un assemblage combustible REP", + ang = "Definition of the top part of a PWR fuel assembly", + MateriauEmbout = SIMP (typ=Materiau, statut='f',fr="Materiau de l'embout superieur",defaut='ACIER'), + MasseBouchonSuperieurCrayonCombustible = SIMP (typ='R', statut='o',fr="Masse du bouchon superieur du crayon combustible en g"), + HauteurBouchonSuperieurCrayonCombustible = SIMP (typ='R', statut='o',fr="Hauteur du bouchon superieur du crayon combustible en cm"), + MateriauBouchonSuperieurCrayonCombustible = SIMP (typ=Materiau, statut='f',fr="Materiau du bouchon superieur du crayon combustible",defaut='ZIRCALOY'), + RessortCrayonCombustible = SIMP (typ='R', statut='o',fr="Masse du ressort du crayon combustible en g"), + ForceRessortCrayonCombustible = SIMP (typ='R', statut='f',fr="Force du ressort du crayon combustible en N"), + HauteurChambreExpansion = SIMP (typ='R', statut='o',fr="Hauteur de la chambre d'expansion en cm"), + MasseEmbout = SIMP (typ='R', statut='o',fr="Masse de l'embout superieur en g"), + HauteurEmbout = SIMP (typ='R', statut='o',fr="Hauteur de l'embout superieur en cm"), + MasseRessortsEmbout = SIMP (typ='R', statut='o',fr="Masse des ressorts de l'embout superieur en g"), + MateriauRessortsEmbout = SIMP (typ=Materiau, statut='f',fr="Materiau des ressorts de l'embout superieur", defaut='INCONEL'), + EpaisseurPlaqueAdaptatrice = SIMP (typ='R', statut='o',fr="Epaisseur de la plaque adaptatrice en cm"), + LargeurPlaqueAdaptatrice = SIMP (typ='R', statut='o',fr="Largeur de la plaque adaptatrice en cm"), + TrousPlaqueAdaptatrice = NUPL (fr="Dimensions des trous de la plaque adaptatrice", + max = '**', + statut = 'o', + elements = ( SIMP (typ='I', fr="Nombre de trous d'un type donne"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot indiquant la donnee des rayons ou cotes des trous"), + SIMP (typ='R' ,min=2,max=2, fr="Rayons mineur et majeur ou Cotes du trou en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'), fr="Mot cle introduisant la hauteur des trous"), + SIMP (typ='R', fr="Hauteur du trou en cm"))), + JeuBouchonCombustiblePlaque = SIMP (typ='R', statut='o',fr="Hauteur du jeu entre Bouchon combustible et Plaque adaptatrice en cm"), + EpaisseurJupe = SIMP (typ='R', statut='o',fr="Epaisseur de la jupe de l'embout superieur en cm"), + HauteurJupe = SIMP (typ='R', statut='f',fr="Hauteur de la jupe de l'embout superieur en cm"), + RayonPionCentrage = SIMP (typ='R', statut='f',fr="Rayon des pions de centrage superieurs en cm"), + HauteurPionCentrage = SIMP (typ='R', statut='f',fr="Hauteur des pions de centrage superieurs en cm"), + HauteurOgivePionCentrage = SIMP (typ='R', statut='f',fr="Hauteur de l'ogive des pions de centrage superieurs en cm"), + MateriauPionCentrage = SIMP (typ=Materiau, statut='f',fr="Materiau des pions de centrage superieurs",defaut='ACIER'), + RayonInterneManchon = SIMP (typ='R', statut='f',fr="Rayon interne des manchons des tubes guides en cm"), + RayonExterneManchon = SIMP (typ='R', statut='f',fr="Rayon externe des manchons des tubes guides en cm"), + HauteurManchon = SIMP (typ='R', statut='f',fr="Hauteur des manchons des tubes guides en cm"), + MasseManchon = SIMP (typ='R', statut='f',fr="Masse d'un manchon des tubes guides en g") + ) ; # Fin PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_TYPE : Classe de definition d'un type d'assemblage (ensemble de crayons ou de reseaux quelconques) +# Rajout des structures grilles et embouts (dans le cas des REP) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_TYPE = OPER (nom="ASSEMBLAGE_TYPE",op=0,sd_prod=AssemblageType, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'un assemblage type et des elements associes eventuels", + ang = "Definition of an assembly type and its associated elements", + Geometrie = SIMP (typ=(Cellule,Reseau,GeometrieCombinatoire),statut='o',max='**', + fr="Liste des geometries composant l'assemblage"), + GrillesStructure = NUPL (max = '**', statut = 'f',fr="Positions axiales des grilles", + elements = ( SIMP (typ=GrilleAssemblage,fr="Type de grille"), + SIMP (typ='R',max='**', + fr="Positions axiales des milieux des grilles (en cm) / a la limite inferieure du pied de l'assemblage"))), + PartieInferieure = SIMP (typ=PartieInferieureAssemblageCombustible,statut='f',fr="Type d'embout inferieur"), + PartieSuperieure = SIMP (typ=PartieSuperieureAssemblageCombustible,statut='f',fr="Type d'embout superieur"), + ElementsAssocies = SIMP (typ=(ElementsGrappeCommande,ElementsAbsorbantsFixes,GrappeBouchonAssemblage),max='**',statut='f',fr="Liste des elements technologiques associes") + ) ; # Fin ASSEMBLAGE_TYPE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENT_BARRE : Classe de définition d'une barre element d'un assemblage +# Definition des barres des grappes de commande (barre et gaine, et composants axiaux) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENT_BARRE = OPER (nom="ELEMENT_BARRE", op=0, sd_prod=ElementBarre, niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une barre element d'un assemblage", + ang = "Definition of an assembly rod element", + MateriauInferieur = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau composant la partie inferieure de la barre"), + MateriauSuperieur = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau composant la partie superieure de la barre"), + HauteurBarre = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) de la barre"), + HauteurInferieure = SIMP (typ='R' ,statut='f',fr="Hauteur (cm) de la partie inferieure de la barre"), + HauteurSuperieure = SIMP (typ='R' ,statut='f',fr="Hauteur (cm) de la partie superieure de la barre"), + RintPartieInferieure = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la partie inferieure de la barre"), + RintPartieSuperieure = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la partie superieure de la barre"), + RextPartieInferieure = SIMP (typ='R' ,statut='o',fr="Rayon Externe (cm) de la partie inferieure de la barre"), + RextPartieSuperieure = SIMP (typ='R' ,statut='f',fr="Rayon Externe (cm) de la partie superieure de la barre"), + MasseRessort = SIMP (typ='R' ,statut='o',fr="Masse (g) du ressort de la barre"), + MateriauRessort = SIMP (typ=Materiau ,statut='o',fr="Materiau du ressort de la barre"), + HauteurRessort = SIMP (typ='R' ,statut='o',fr="Hauteur (cm) du ressort de la barre"), + BouchonInfHauteur = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Hauteur (cm) du bouchon inferieur de la barre"), + BouchonSupHauteur = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Hauteur (cm) du bouchon superieur de la barre"), + BouchonInfRayon = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon externe (cm) du bouchon inferieur de la barre"), + BouchonSupRayon = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon externe (cm) du bouchon superieur de la barre"), + MateriauGaine = SIMP (typ=Materiau,defaut='ACIER' ,statut='o',fr="Materiau de la gaine externe de la barre"), + RayonInterneGaine = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Interne (cm) de la gaine externe de la barre"), + RayonExterneGaine = SIMP (typ='R' ,defaut=0. ,statut='f',fr="Rayon Externe (cm) de la gaine externe de la barre") + ) ; # Fin ELEMENT_BARRE +#---------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_GRAPPE_COMMANDE : Classe de définition des éléments des grappes de commande +# Association avec les différents types de barres absorbantes +# Description simplifiée de l'araignée et du bouchon des barres +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_GRAPPE_COMMANDE = OPER (nom="ELEMENTS_GRAPPE_COMMANDE",op=0,sd_prod=ElementsGrappeCommande,niveau = 'ElementsTechnologiquesAssemblages', + fr = "Définition des éléments des grappes de commande", + ang = "Definition of control rod cluster components", + ElementsBarre = SIMP (typ= ElementBarre, max='**',statut='o',fr="Liste des barres absorbantes associees"), + HauteurPasInsertion = SIMP (typ='R',defaut=1.5875 ,statut='o',fr="Hauteur (cm) d'un pas d'insertion des grappes"), + CourseTotalePossible = SIMP (typ='R',defaut=361.8 ,statut='o',fr="Course totale possible (cm) d'insertion d'une grappe"), + CoteInferieureGrappe = SIMP (typ='R',defaut=8.5705 ,statut='o',fr="Cote inferieure (cm) d'une grappe / zone active ?"), + VitesseDeplacement = SIMP (typ='R',defaut=72. ,statut='o',fr="Vitesse de deplacement d'une grappe en pas/mn"), + NbPasInsertion = SIMP (typ='I',defaut=225 ,statut='o',fr="Nombre maximum de pas d'insertion "), + Araignee16Phauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 16 petites tiges d'accrochage des barres"), + Araignee4Mhauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 4 tiges moyennes d'accrochage des barres"), + Araignee4Ghauteur = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) d'une des 4 grandes tiges d'accrochage des barres"), + HauteurPommeau = SIMP (typ='R',defaut=0. ,statut='o',fr="Hauteur (cm) du pommeau d'accrochage de la grappe"), + RayonPommeau = SIMP (typ='R',defaut=0. ,statut='o',fr="Rayon (cm) du pommeau d'accrochage de la grappe") + ) ; # Fin ELEMENTS_GRAPPE_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ABSORBANTS_FIXES : Classe de definition des elements des grappes d'absorbants fixes +# Description des pyrex uniquement pour le moment +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ELEMENTS_ABSORBANTS_FIXES = OPER (nom="ELEMENTS_ABSORBANTS_FIXES",op=0,sd_prod=ElementsAbsorbantsFixes, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition des elements des grappes d'absorbants fixes", + ang = "Definition of non movable absorber control rod cluster elements", +# Limitation a 12 caracteres +# HBouchInfPyrex = SIMP (typ='R',statut='f'), +# RBouchInfPyrex = SIMP (typ='R',statut='f'), +# HZoneVidePyrex = SIMP (typ='R',statut='f'), +# HBouchSupPyrex = SIMP (typ='R',statut='f'), +# RBouchSupPyrex = SIMP (typ='R',statut='f'), +# MatBouchonPyrex = SIMP (typ=Materiau, statut='f') + BIPyrexHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm du bouchon inferieur du crayon pyrex"), + BIPyrexRayon = SIMP (typ='R', statut='o',fr="Rayon en cm du bouchon inferieur du crayon pyrex"), + PyrexZoneVideHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm de la zone vide dans le crayon pyrex"), + BSPyrexHauteur = SIMP (typ='R', statut='o',fr="Hauteur en cm du bouchon superieur du crayon pyrex"), + BSPyrexRayon = SIMP (typ='R', statut='o',fr="Rayon en cm du bouchon superieur du crayon pyrex"), + PyrexMateriauBouchon = SIMP (typ=Materiau, statut='o',fr="Materiau du bouchon du crayon pyrex") + ) ; # Fin ELEMENTS_ABSORBANTS_FIXES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GRAPPE_BOUCHON_ASSEMBLAGE : Classe de definition d'une grappe bouchon REP +# Rappel : Les grappes bouchons se trouvent dans le cas des REP inseres dans la partie embout superieur de tous les assemblages +# ne comportant pas de grappe d'absorbant. +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GRAPPE_BOUCHON_ASSEMBLAGE = OPER (nom="GRAPPE_BOUCHON_ASSEMBLAGE",op=0,sd_prod=GrappeBouchonAssemblage, + niveau = 'ElementsTechnologiquesAssemblages', + fr = "Definition d'une grappe bouchon d'assemblage combustible", + ang = "Definition d'une grappe bouchon d'assemblage combustible", + HauteurPartieBasseBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la partie basse du bouchon"), + RayonPartieBasseBouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la partie basse du bouchon"), + Hauteur1PartieIntermediaire1Bouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la 1ere partie intermédiaire du bouchon"), + Rayon1PartieIntermediaire1Bouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la 1ere partie intermédiaire du bouchon"), + Hauteur2PartieIntermediaire2Bouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la 2eme partie intermédiaire du bouchon"), + Rayon2PartieIntermediaire2Bouchon = SIMP (typ='R' ,statut='o',fr="Rayon en cm de la 2eme partie intermédiaire du bouchon"), + RegionSousPlaqueHauteurBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la region sous plaque"), + RegionSurPlaqueHauteurBouchon = SIMP (typ='R' ,statut='o',fr="Hauteur en cm de la region au-dessus de la plaque"), + Rayon3BouchonRegionPlaque = SIMP (typ='R' ,statut='o',fr="Rayon en cm du bouchon au niveau de la plaque"), + HauteurSupport = SIMP (typ='R' ,statut='o',fr="Hauteur en cm du support des bouchons"), + MasseGrappe = SIMP (typ='R' ,statut='o',fr="Masse en g de la grappe bouchon"), + Materiau = SIMP (typ=Materiau,statut='o',fr="Materiau de la grappe bouchon",defaut='ACIER') + ) ; # Fin GRAPPE_BOUCHON_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ELEMENTS_ASSEMBLAGE : Classe de définition des éléments associes a l'assemblage combustible REP +# +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#ELEMENTS_ASSEMBLAGE = OPER (nom="ELEMENTS_ASSEMBLAGE",op=0,sd_prod=ElementsAssemblage, +# +# fr = "Definition des elements associes a l'assemblage", +# ang = "Definition of the fuel assembly associated elements", +# GrappeBouchon = SIMP (typ=GrappeBouchonAssemblage,statut='o'), +# CrayonsAbsorbants = SIMP (typ=ElementsAbsorbants,statut='o'), +# GrappesCommande = SIMP (typ=ElementsGrappeCommande,statut='o') +# ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classes CONDITION_LIMITE elementaires : Classes de definition de Conditions limites elementaires +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +VIDE = OPER (nom="VIDE",op=0,sd_prod=Vide, niveau = 'ConditionsLimites', + fr = "Condition aux limites de vide", + ang = "Void boundary condition" ) ; +REFLEXION_ISOTROPE = OPER (nom="REFLEXION_ISOTROPE",op=0,sd_prod=ReflexionIsotrope, niveau = 'ConditionsLimites', + fr = "Condition aux limites de reflexion isotrope", + ang = "Isotropic Reflexion boundary condition" ) ; +REFLEXION_SPECULAIRE = OPER (nom="REFLEXION_SPECULAIRE",op=0,sd_prod=ReflexionSpeculaire, niveau = 'ConditionsLimites', + fr = "Condition aux limites de reflexion speculaire", + ang = "Specular Reflexion boundary condition" ) ; +ALBEDO = OPER (nom="ALBEDO",op=0,sd_prod=Albedo, niveau = 'ConditionsLimites', + fr = "Condition aux limites d'albedo", + ang = "Albedo boundary condition", + albedo = SIMP (typ='R',statut='o',max='**',fr="Valeurs des albedos") ) ; +TRANSLATION = OPER (nom="TRANSLATION",op=0,sd_prod=Translation, niveau = 'ConditionsLimites', + fr = "Condition aux limites de translation", + ang = "Translation boundary condition", + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Axe de translation") ) ; +ROTATION = OPER (nom="ROTATION",op=0,sd_prod=Rotation, niveau = 'ConditionsLimites', + fr = "Condition aux limites de rotation", + ang = "Rotational boundary condition", + Centre = SIMP (typ=Point ,statut='o',fr="Centre de la rotation"), + Vecteur = SIMP (typ=Vecteur,statut='o',fr="Axe de rotation"), + Angle = SIMP (typ='R' ,statut='o',fr="Angle de rotation",defaut=90.) ) ; +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_SPECIALE : Classe de definition de Conditions limites sur les surfaces elementaires de la geometrie +# modifiant la CL generale +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_SPECIALE = OPER (nom="CONDITION_LIMITE_SPECIALE",op=0,sd_prod=SpecialeConditionLimite, + niveau = 'ConditionsLimites', + fr = "Condition limite particuliere qui sera plaquee sur la geometrie", + ang = "Special boundary condition added to the geometry", + Type = SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation),statut='o', + fr="Type de condition limite a appliquer aux surfaces listees"), + ZonesApplication = SIMP (typ=(Segment,ArcCercle,Conique),max='**',statut='o', + fr="Liste des segments ou surfaces sur lesquels porte la condition limite") + ) ; # Fin CONDITION_LIMITE_SPECIALE +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITION_LIMITE_GENERALE : Classe de definition des conditions limites de l'objet geometrique complet +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITION_LIMITE_GENERALE = OPER (nom="CONDITION_LIMITE_GENERALE",op=0,sd_prod=GeneraleConditionLimite, + niveau = 'ConditionsLimites', + fr = "Condition limite a la surface externe de la geometrie complete", + ang = "Boundary condition for the complete geometry", + ZoneCalculee = NUPL (statut='f',min=2,max=2,fr="Droites ou plans delimitant la zone de calcul", + elements = (SIMP (typ=(Droite,Plan)), SIMP (typ='TXM',into=('Plus','Moins')))), + ParDefautCondition = SIMP (typ=(Vide, ReflexionIsotrope, ReflexionSpeculaire, Albedo), + defaut=ReflexionIsotrope, + statut='f', + fr="Condition limite par defaut"), + ParticulieresConditions = NUPL (fr = "Conditions particulieres modifiant localement la condition limite par defaut", + statut = 'f', max = '**', + elements = (SIMP (typ='TXM',into=('X-','X+','Y-','Y+','Z-','Z+','R+','X','Y','Z')), + SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation)))), + SupplementairesConditions = SIMP (typ = SpecialeConditionLimite, + statut = 'f', max = '**', + fr = "Conditions limites non exprimables avec les donnees precedentes") + ) ; # Fin CONDITION_LIMITE_GENERALE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de la position des assemblages combustibles dans un REP +# Reperes (bataille navale ou autre) et +# Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier +# Origine des coordonnees en bas a gauche d'un systeme en xy +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="POSITION_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PositionAssemblageCombustible, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Position des assemblages combustibles", + ang = "Position of fuel assemblies", + NbAssemblagesCombustibles = SIMP (typ='I',statut='o',defaut=157,fr="Nombre d'assemblages combustibles positionnes"), + regles = (UN_PARMI('PositionReseau', 'Positions'),), + PositionReseau = SIMP (typ=CorrespondanceReperePositionReseau,statut="f",fr="Objet donnant la correspondance entre Repere et Coordonnees entieres des assemblages"), + Positions = NUPL (max='**',statut='f', + elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"), + SIMP (typ='I' ,fr="Premiere Coordonnee entiere de l'assemblage"), + SIMP (typ='I' ,fr="Seconde Coordonnee entiere de l'assemblage"))) + ) ; # Fin POSITION_ASSEMBLAGE_COMBUSTIBLE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_INSTRUMENTATION_INTERNE : Classe de definition de la position des assemblages instrumentes dans le cœur d'un REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_INSTRUMENTATION_INTERNE = OPER (nom="POSITION_INSTRUMENTATION_INTERNE",op=0,sd_prod=PositionInstrumentationInterne, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition de la position des assemblages instrumentes", + ang = "Definition of neutron flux detector position", +# TypePalier = SIMP (typ='TXM',max='**',statut='o'), + NbAssemblagesInstrumentes = SIMP (typ='I',statut='o',fr="Nombre d'assemblages instrumentes"), + Positions = NUPL ( + max = '**', + statut = 'o', + elements = (SIMP (typ='TXM',fr= "Type d'instrumentation (CFM, Collectron, ou Autre)"), + SIMP (typ='I',min=2,max=2,fr= "Coordonnees entieres de l'assemblage instrumente dans le reseau"))) + ) ; # Fin POSITION_INSTRUMENTATION_INTERNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe IMPLANTATION_GRAPPES_COMMANDE : Classe de definition de l'implantation des grappes de commande pour un type de schema de grappe (REP) +# Donnees de la position (coordonnees entieres en xy), du type de grappe et du groupe d'appartenance +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +IMPLANTATION_GRAPPES_COMMANDE = OPER (nom="IMPLANTATION_GRAPPES_COMMANDE", op=0, sd_prod=ImplantationGrappesCommande, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Position radiale des grappes de commande pour un schema d'implantation particulier", + ang = "Control rod cluster radial positions and types", + TypeSchema = SIMP (typ='TXM',statut='o',fr="Identificateur arbitraire du type de schema"), + NbTotalGrappes = SIMP (typ='I' ,statut='o',fr="Nombre total de grappes du schema"), + PositionsEtType = NUPL (max='**' ,statut='o', + elements=(SIMP (typ='TXM',statut='o',fr="Nom du groupe de grappes"), + SIMP (typ='I' ,statut='o',fr="Nombre de grappes du groupe"), + SIMP (typ='TXM',statut='o',fr="Type de grappes (exemple : '8B', '12B', '24B')"), + SIMP (typ='I' ,statut='o',max='**',fr="Coordonnees entieres des grappes dans le reseau coeur"))) + ) ; # Fin IMPLANTATION_GRAPPES_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe STRUCTURES_INTERNES_REACTEUR : Classe de definition des structures internes d'un coeur de REP +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +STRUCTURES_INTERNES_REACTEUR = OPER (nom="STRUCTURES_INTERNES_REACTEUR", op=0, sd_prod=StructuresInternesReacteur, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition des structures internes d'un cœur REP", + ang = "Definition of a PWR core internal structures", + PlaqueInferieureCoeur = FACT ( + Epaisseur = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque inferieure du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque inferieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayons ou cotes des trous en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou en cm")))), + PlaqueSuperieureCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur de la plaque superieure du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la plaque superieure du coeur"), + Trous = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre de trous dont on donne les dimensions"), + SIMP (typ='TXM',into=('Rayon','Cotes'), fr="Mot-cle indiquant si on donne le rayon ou les cotes"), + SIMP (typ='R',min=2,max=2, fr="Rayons ou cotes des trous en cm"), + SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"), + SIMP (typ='R', fr="Hauteur du trou en cm")))), + CloisonnementCoeur = FACT ( + Epaisseur = SIMP (typ='R', fr="Epaisseur du cloisonnement du coeur"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER', fr="Materiau du cloisonnement du coeur"), + DimensionsInterieures = NUPL ( + max = '**', + elements = ( + SIMP (typ='I', fr="Nombre d'assemblages dans la rangee"), + SIMP (typ='TXM',into=('Assemblages','Assemblies'), fr="Mot-cle suivant le nombre d'assemblages"), + SIMP (typ='TXM',into=('Largeur','Cote'), fr="Mot-cle precedant la largeur interieure du cloisonnement"), + SIMP (typ='R', fr="Largeur interieure du cloisonnement en cm"), + SIMP (typ='TXM',into=('NbJeuCloisonGrille','NbJeu'),fr="Mot-cle precedant le nombre de jeux CloisonGrille"), + SIMP (typ='I', fr="Nombre de jeux CloisonGrille"))), + TrousDepressurisation = NUPL (elements=(SIMP (typ='I', fr="Nombre de trous de depressurisation"), + SIMP (typ='TXM',into=('Rayon','Radius'),fr="Mot-cle precedant la valeur du rayon des trous"), + SIMP (typ='R',fr="Rayon des trous de depressurisation en cm"))), + TemperatureMoyenne = SIMP (typ='R',fr="Temperature Moyenne du cloisonnement en Celsius")), + RenfortsInternes = FACT (statut='f', + Nombre = SIMP (typ='I',max='**',statut='o',fr="Liste des nombres de chaque type de renfort interne"), + Epaisseur = SIMP (typ='R',max='**',statut='o',fr="Nombre de renforts internes pour chaque type de renfort"), + Materiau = SIMP (typ=Materiau,max='**',statut='f',defaut='ACIER',fr="Materiau de chaque type de renfort"), + NbTrousDepressurisation = SIMP (typ='I',max='**',statut='o',fr="Nombre de trous dans chaque type de renfort"), + RayonsTrousDepressurisation = SIMP (typ='R',max='**',statut='o',fr="Rayons des trous dans chaque type de renfort en cm"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne des renforts internes en Celsius")), + EnveloppeVirole = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne de l'enveloppe du coeur en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe de l'enveloppe du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de l'enveloppe du coeur"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne de l'enveloppe du coeur en Celsius")), + Boucliers = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne des boucliers thermiques du coeur en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe des boucliers thermiques du coeur en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau des boucliers thermiques du coeur"), + Secteurs = NUPL (max='**',statut='f',elements=( + SIMP (typ='R',statut='o',fr="Angle en degres du debut du secteur du bouclier / axe Ox"), + SIMP (typ='R',statut='o',fr="Angle en degres du secteur du bouclier"))), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne en Celsius des boucliers du coeur")), + Cuve = FACT (statut='f', + RayonInterne = SIMP (typ='R',statut='o',fr="Rayon interne de la cuve en cm"), + RayonExterne = SIMP (typ='R',statut='o',fr="Rayon externe de la cuve en cm"), + Materiau = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau de la cuve"), + TemperatureMoyenne = SIMP (typ='R',statut='f',fr="Temperature moyenne en Celsius de la cuve")) + ) ; # Fin STRUCTURES_INTERNES_REACTEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PRESSURISEUR : Classe de definition d'un pressuriseur REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PRESSURISEUR = OPER (nom="PRESSURISEUR", op=0, sd_prod=Pressuriseur, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'un pressuriseur REP", + ang = "Definition of a PWR pressurizor", + TmNominale = SIMP (typ='R',statut='o',defaut=345.0 ,fr="Temperature nominale en Celsius dans le pressuriseur"), + Volume = SIMP (typ='R',statut='o',defaut=39.865 ,fr="Volume total du pressuriseur en m3"), + VolumeHaut = SIMP (typ='R',statut='o',defaut=37.196 ,fr="Volume d'eau au niveau haut du pressuriseur en m3"), + VolumeBas = SIMP (typ='R',statut='o',defaut=2.597 ,fr="Volume d'eau au niveau bas du pressuriseur en m3"), + DiametreExterne = SIMP (typ='R',statut='o',defaut=235. ,fr="Diametre externe du pressuriseur en cm"), + Hauteur = SIMP (typ='R',statut='o',defaut=1280. ,fr="Hauteur du pressuriseur en cm"), + Pression = SIMP (typ='R',statut='o',defaut=172.37 ,fr="Pression de calcul du pressuriseur en bars"), + CapaciteChaufferette = SIMP (typ='R',statut='o',defaut=1440. ,fr="Capacite des chaufferettes du pressuriseur en kW"), + NbChaufferettes = SIMP (typ='I',statut='o',defaut=60 ,fr="Nombre de chaufferettes du pressuriseur"), + MasseAVide = SIMP (typ='R',statut='o',defaut=78. ,fr="Masse a vide du pressuriseur en tonnes"), + MasseEnService = SIMP (typ='R',statut='o',defaut=95. ,fr="Masse du pressuriseur en service normal en tonnes"), + PressionDecharge = SIMP (typ='R',statut='o',defaut=162. ,fr="Pression d'ouverture de la decharge du pressuriseur en bars"), + PressionSoupape = SIMP (typ='R',statut='o',defaut=171.5 ,fr="Pression de tarage des soupapes de surete du pressuriseur en bars"), + VolumeDecharge = SIMP (typ='R',statut='o',defaut=37. ,fr="Volume total du reservoir de decharge du pressuriseur en m3"), + VolumeliquideDecharge = SIMP (typ='R',statut='o',defaut=25.5 ,fr="Volume de liquide du reservoir de decharge du pressuriseur en fct normal en m3") + ) ; # Fin PRESSURISEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe GENERATEUR_VAPEUR : Classe de definition d'un generateur de vapeur REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +GENERATEUR_VAPEUR = OPER (nom="GENERATEUR_VAPEUR", op=0, sd_prod=GenerateurVapeur, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'un generateur de vapeur REP", + ang = "Definition of a PWR Steam Generator", + HauteurTotale = SIMP (typ='R',statut='o',defaut=2064.8 ,fr="Hauteur totale d'un GV en cm"), + DiametreMaximum = SIMP (typ='R',statut='o',defaut=446.8 ,fr="Diametre maximum d'un GV en cm"), + DiametreMinimum = SIMP (typ='R',statut='o',defaut=343.4 ,fr="Diametre minimum d'un GV en cm"), + NbTubes = SIMP (typ='I',statut='o',defaut=3330 ,fr="Nombre de tubes d'un GV"), + TubeDiametre = SIMP (typ='R',statut='o',defaut=2.222 ,fr="Diametre des tubes d'un GV en cm"), + TubeEpaisseur = SIMP (typ='R',statut='o',defaut=0.127 ,fr="Epaisseur des tubes d'un GV en cm"), + PasReseau = SIMP (typ='R',statut='o',defaut=3.254 ,fr="Pas du reseau des tubes d'un GV en cm"), + LongueurTube = SIMP (typ='R',statut='o',defaut=963.7 ,fr="Longueur droite des tubes d'un GV en cm"), + SurfaceEchange = SIMP (typ='R',statut='o',defaut=4700. ,fr="Surface d'échange d'un GV en m2"), + PlaqueEpaisseur = SIMP (typ='R',statut='o',defaut=53.4 ,fr="Epaisseur de la plaque tubulaire d'un GV en cm"), + PlaqueDiametre = SIMP (typ='R',statut='o',defaut=345.4 ,fr="Diametre de la plaque tubulaire d'un GV en cm"), + NbEntretoises = SIMP (typ='I',statut='o',defaut=8 ,fr="Nombre de plaques entretoises d'un GV"), + MasseAVide = SIMP (typ='R',statut='o',defaut=300. ,fr="Masse a vide d'un GV en tonnes"), + MasseFctNormal = SIMP (typ='R',statut='o',defaut=364. ,fr="Masse en fonctionnement normal d'un GV en tonnes"), + MasseFaisceau = SIMP (typ='R',statut='o',defaut=51.5 ,fr="Masse du faisceau tubulaire d'un GV en tonnes"), + ViroleSupEpaisseur = SIMP (typ='R',statut='o',defaut=9.4 ,fr="Epaisseur de la virole superieure d'un GV en cm"), + ViroleInfEpaisseur = SIMP (typ='R',statut='o',max=3,defaut=(8.4,7.4),fr="Epaisseur(s) de la virole inferieure d'un GV en cm"), + MateriauEntretroises = SIMP (typ=Materiau,statut='o',defaut='ACIER' ,fr="Materiau des plaques entretoises d'un GV"), + MateriauTube = SIMP (typ=Materiau,statut='o',defaut='INCONEL',fr="Materiau des tubes du faisceau d'un GV"), + GeomReseau = SIMP (typ='TXM',statut='o',defaut='Carre',into=('Carre','Triangulaire'), + fr="Type de geometrie du reseau des tubes d'un GV") + ) ; # Fin GENERATEUR_VAPEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POMPE_PRIMAIRE : Classe de definition d'une pompe primaire REP (Valeurs par defaut pour un CP2 900) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POMPE_PRIMAIRE = OPER (nom="POMPE_PRIMAIRE", op=0, sd_prod=PompePrimaire, niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees d'une pompe primaire REP", + ang = "Definition of a PWR primary pomp", + Type = SIMP (typ='TXM',statut='o', defaut='93-D7' ,fr="Type de pompe"), + TensionNominale = SIMP (typ='R' ,statut='o', defaut=6600. ,fr="Tension nominale en Volts d'une pompe primaire"), + VitesseRotation = SIMP (typ='I' ,statut='o', defaut=1485 ,fr="Vitesse de rotation tours/mn ? d'une pompe primaire"), + DebitConception = SIMP (typ='R' ,statut='o', defaut=21250. ,fr="Debit de conception m3/h d'une pompe primaire"), + HauteurManometrique = SIMP (typ='R' ,statut='o', defaut=90.7 ,fr="Hauteur manometrique ds pompes en mCE"), + PuissanceFroid = SIMP (typ='R' ,statut='o', defaut=6600. ,fr="Puissance absorbee a froid sur l'arbre de la pompe en kW"), + PuissanceChaud = SIMP (typ='R' ,statut='o', defaut=5000. ,fr="Puissance absorbee a chaud sur l'arbre de la pompe en kW"), + PuissanceNominale = SIMP (typ='R' ,statut='o', defaut=5300. ,fr="Puissance absorbee nominale par moteur en kW"), + TensionMinimale = SIMP (typ='R' ,statut='o', defaut=0.75 ,fr="Tension minimale de démarrage en fraction de la tension nominale"), + Masse = SIMP (typ='R' ,statut='o', defaut=93.9 ,fr="Masse d'une pompe primaire en tonnes avec huile et eau"), + HauteurTotale = SIMP (typ='R' ,statut='o', defaut=8.1 ,fr="Hauteur totale d'une pompe primaire en cm"), + Inertie = SIMP (typ='R' ,statut='o', defaut=3730. ,fr="Inertie des pieces tournantes en kg.m2"), + DebitInjection = SIMP (typ='R' ,statut='o', defaut=1800. ,fr="Debit d'injection aux joints en l/h") + ) ; # Fin POMPE_PRIMAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CARACTERISTIQUES_PALIER : Classe de definition des donnees generales d'un type de palier de reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CARACTERISTIQUES_PALIER = OPER (nom="CARACTERISTIQUES_PALIER",op=0,sd_prod=CaracteristiquesPalier, + niveau = 'ElementsTechnologiquesReacteur', + fr = "Donnees generales pour un type de palier de reacteur", + ang = "General data for a particular type of nuclear reactor", + TypePalier = SIMP (typ='TXM',statut='o',fr="Identificateur du type de palier"), + PositionCombustible = SIMP (typ=PositionAssemblageCombustible ,statut='o', + fr="Objet definissant la position des assemblages dans le coeur"), + PositionDetecteur = SIMP (typ=PositionInstrumentationInterne,statut='o', + fr="Objet definissant la position des assemblages instrumentes"), + StructuresInternes = SIMP (typ=StructuresInternesReacteur ,statut='o', + fr="Objet definissant les structures internes du reacteur"), + Pressuriseur = SIMP (typ=Pressuriseur ,statut='f', + fr="Objet contenant les caracteristiques du pressuriseur du reacteur"), + Generateur = SIMP (typ=GenerateurVapeur ,statut='f', + fr="Objet contenant les caracteristiques des GV du reacteur"), + Pompes = SIMP (typ=PompePrimaire ,statut='f', + fr="Objet contenant les caracteristiques des pompes primaires du reacteur"), + CoeurPElectriqueNominle = SIMP (typ='R',statut='o',defaut= 900., + fr="Puissance electrique nominale de coeur en MW"), + CoeurPThermiqueNominale = SIMP (typ='R',statut='o',defaut=2775., + fr="Puissance thermique nominale de coeur en MWth"), + ChaudierePThermiqueNominale = SIMP (typ='R',statut='o',defaut=2785., + fr="Puissance thermique nominale de la chaudiere MWth"), + ChaudierePmaxThermique = SIMP (typ='R',statut='o',defaut=2905., + fr="Puissance thermique maximum de la chaudiere MWth"), + NbBouclesPrimaires = SIMP (typ='I',statut='o',defaut=3, + fr="Nombre de boucles primaires"), + ProportionDebitCoeurCuve = SIMP (typ='R',statut='o',defaut=0.97, + fr="Rapport du debit coeur / debit cuve"), + PressionNominalePrimaire = SIMP (typ='R',statut='o',defaut=155., + fr="Pression nominale du circuit primaire en bars"), + PerteChargeCoeurNominale = SIMP (typ='R',statut='o',defaut=1.24, + fr="Perte de charge nominale dans le coeur en bars"), + PerteChargeCuveNominale = SIMP (typ='R',statut='o',defaut=2.34, + fr="Perte de charge nominale dans la cuve en bars"), + TmNomSortieCuveEntreeGV = SIMP (typ='R',statut='o',defaut=323.2, + fr="Temperature nominale sortie Cuve / Entree GV en Celsius"), + TmNomSortieGVEntreePPrimaire = SIMP (typ='R',statut='o',defaut=285.8, + fr="Temperature nominale sortie GV / Entree Pompe primaire en Celsius"), + TmNomSortiePPrimaireEntreeCuve = SIMP (typ='R',statut='o',defaut=286., + fr="Temperature nominale sortie Pompe primaire / Entree Cuve en Celsius"), + TmEntreeCoeurPnulle = SIMP (typ='R',statut='o',defaut=286.0, + fr="Temperature en Celsius du moderateur a puissance nulle a l'entree du coeur"), + TmEntreeCoeurPnom = SIMP (typ='R',statut='o',defaut=286.4, + fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + TmSortieCoeurPnom = SIMP (typ='R',statut='o',defaut=324.7, + fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + TmMoyenneCoeurPnom = SIMP (typ='R',statut='o',defaut=305.3, + fr="Temperature moyenne en Celsius du moderateur dans le coeur actif"), + TmMoyenneCuvePnom = SIMP (typ='R',statut='o',defaut=305.0, + fr="Temperature moyenne en Celsius du moderateur dans la cuve"), + TmMoyenneReflecteurPnom = SIMP (typ='R',statut='o',defaut=296.0, + fr="Temperature moyenne en Celsius du reflecteur radial"), + TcMoyennePnom = SIMP (typ='R',statut='o',defaut=600.0, + fr="Temperature moyenne en Celsius du combustible dans le coeur"), + TcCentrePnom = SIMP (typ='R',statut='o',defaut=1830., + fr="Temperature au centre Pastille en Celsius en fct nominal"), + SectionEcoulementCoeur = SIMP (typ='R',statut='o',defaut=3.86, + fr="Section d'ecoulement du moderateur dans le coeur en m2"), + SurfaceEchangeCoeur = SIMP (typ='R',statut='o',defaut=4520., + fr="Surface d'échange dans le coeur en m2"), + VolumeEauCuve = SIMP (typ='R',statut='o',defaut=105.8, + fr="Volume d'eau primaire m3 dans la cuve (coeur et internes en place)"), + VolumeEauPrimaire = SIMP (typ='R',statut='o',defaut=215., + fr="Volume total d'eau primaire m3)"), + VolumeBallonRCV = SIMP (typ='R',statut='o',defaut=7., + fr="Volume du ballon RCV m3)"), + DebitThermohConception = SIMP (typ='R',statut='o',defaut=63325., + fr="Debit thermohydraulique de conception dans la cuve en m3/h"), + DebitMecaniqueConception = SIMP (typ='R',statut='o',defaut=70920., + fr="Debit mecanique de conception dans la cuve en m3/h"), + BypassConception = SIMP (typ='R',statut='o',defaut=7., + fr="Pourcentage de debit Conception dans le contournement du coeur en %"), + BypassSpin = SIMP (typ='R',statut='o',defaut=4.5, + fr="Pourcentage de debit dans le contournement du coeur en % utilise dans le SPIN"), + DebitBestEstimateBoucle = SIMP (typ='R',statut='o',defaut=21075., + fr="Debit best-estimate par boucle en m3/h"), + DebitMassiqueNominal = SIMP (typ='R',statut='o',defaut=47675., + fr="Debit massique nominal best-estimate dans la cuve en t/h"), + DebitEffMassiqueNominal = SIMP (typ='R',statut='o',defaut=45530., + fr="Debit massique effectif du coeur en t/h"), + FluxMoyenChaleurCoeur = SIMP (typ='R',statut='o',defaut=60., + fr="Flux de chaleur moyen dans le coeur W/cm2"), + FluxMaxChaleurCoeur = SIMP (typ='R',statut='o',defaut=128., + fr="Flux de chaleur maximal dans le coeur W/cm2"), + PlinMoyen = SIMP (typ='R',statut='o',defaut=178., + fr="Puissance lineique Moyenne en W/cm"), + PlinMax = SIMP (typ='R',statut='o',defaut=382., + fr="Puissance lineique Maximum en W/cm"), + FacteurFQN = SIMP (typ='R',statut='o',defaut=2.69, + fr="Facteur de point chaud de conception FQN"), + FacteurFDH = SIMP (typ='R',statut='o',defaut=1.55, + fr="Facteur total d'élévation d'enthalpie FDH de conception"), + RECMinimalNominal = SIMP (typ='R',statut='o',defaut=1.78, + fr="REC minimal en fonctionnement nominal"), + VitesseMoyenneModerCoeur = SIMP (typ='R',statut='o',defaut=4.72, + fr="Vitesse moyenne dans le coeur en m/s"), + VitesseMassiqueModerCoeur = SIMP (typ='R',statut='o',defaut=328., + fr="Vitesse massique moyenne dans le coeur en g/s.cm2"), + VitesseRechaufRefroid = SIMP (typ='R',statut='o',defaut=28., + fr="Vitesse normale maximale de rechauffage ou de refroidissementnormal en Celsius/h"), + VitesseMaxRechaufRefroid = SIMP (typ='R',statut='o',defaut=56., + fr="Vitesse maximale de rechauffage ou de refroidissementnormal en Celsius/h") + ) ; # Fin CARACTERISTIQUES_PALIER +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe SITE_NUCLEAIRE_EDF : Classe de definition d'un site nucleaire EDF (Tranches, paliers et numero EPN) +# Le numero EPN correspond au code de la tranche, cette donnee figure dans le fichier ASN transmis par la Division Combustible +# decrivant chaque recharge combustible (et identifie donc la tranche a laquelle elle est destinee) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SITE_NUCLEAIRE = OPER (nom="SITE_NUCLEAIRE", op=0, sd_prod=SiteNucleaire, niveau = 'ElementsTechnologiquesReacteur', + fr = "Definition d'un site nucleaire EDF et de ses tranches", + ang = "Definition of a nuclear power plant site", + NomSite = SIMP (typ='TXM',statut='o',fr="Nom du site nucleaire",defaut='TRICASTIN'), + Tranches = NUPL (max='**',elements=( SIMP (typ='I' ,statut='o',fr="Numero de la tranche nucleaire"), + SIMP (typ='TXM',statut='o',fr="Trigramme de la tranche nucleaire"), + SIMP (typ=CaracteristiquesPalier,statut='o',fr="Type de palier"), + SIMP (typ='I' ,statut='o',fr="Numero EPN de la tranche"))) + ) ; # Fin SITE_NUCLEAIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ESPACE_VARIATIONS : Classe de definition de l'espace des parametres variables et sa discretisation. +# De manière generale, un parametre peut valoriser un attribut quelconque de plusieurs objets. L'association +# Parametre-Attributs se fait par l'attribut ObjetsVariations de la classe definie ci-dessous +# de maniere purement textuelle sous la forme 'NomObjet.NomAttribut(.NomSousAttribut)[Index]'. +# L'attribut variable peut etre un objet, auquel cas les valeurs de variation sont les noms textuels +# des objets a remplacer successivement dans chaque calcul elementaire. +# Il n'y a pas de verification de coherence au niveau de la saisie des donnees mais immediatement apres +# lors de l'interpretation de l'ensemble de l'objet DonneesCasEtude . +# Definition de la methode de balayage de cet espace (Suite d'options complementaires) : +# 1) ParametresIndependants : Calculs independants en donnant successivement a chacun +# des parametres leurs valeurs individuelles +# 2) CoinsDomaine : Rajout des calculs aux limites extremes du domaine +# 3) BordsDomaine : Rajout des calculs aux bords du domaine +# 4) Grilles2D : Rajout des calculs sur les grilles 2D +# passant par un point de reference +# 5) CasParticuliers : Rajout de points specifiques de calcul +# 6) EspaceComplet : Balayage complet du domaine des parametres +# Par defaut, le cas de reference est le premier cas defini soit dans CasParticuliers si les cas sont fournis +# de cette façon, soit par les premieres valeurs rentrees pour chacun des paramètres, +# sauf entree explicite de l'attribut CasReference +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ESPACE_VARIATIONS = OPER (nom="ESPACE_VARIATIONS", op=0, sd_prod=EspaceVariations, niveau = 'ParametresCalcul', + fr = "Definition de l'espace des parametres et de leurs variations", + ang = "Definition of feedback or variable parameters", + regles = (AU_MOINS_UN ('Variations', 'CasParticuliers'),), + Variations = NUPL (max='**',statut='f', + elements=( SIMP (typ='TXM',statut='o',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('R','I','TXM'),max='**',statut='o',fr="Valeurs discretes de variation du parametre"))), + ObjetsVariations = NUPL (max='**',statut='o',fr="Association Parametre et attributs des objets du modele de donnees", + elements=( SIMP (typ='TXM',statut='o',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ='TXM',max='**',statut='o',fr="Objets, attributs et index associes au parametre"))), + MethodeBalayage = SIMP ( + typ = 'TXM', + max = '**', + defaut = 'ParametresIndependants', + into = ('ParametresIndependants','CoinsDomaine','BordsDomaine','Grilles2D','CasParticuliers','EspaceComplet'), + statut = 'o'), + TypeVariation = SIMP (typ='TXM',defaut='Absolu',into=('Relatif','Absolu'),statut='o'), + CasParticuliers = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour les cas particuliers", + elements=(SIMP (typ='TXM',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('I','R','TXM'),fr="Valeur du parametre"))), + CasReference = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour le cas de reference", + elements=(SIMP (typ='TXM',fr="Nom arbitraire du parametre a faire varier"), + SIMP (typ=('I','R','TXM'),fr="Valeur du parametre"))) + ) ; # Fin ESPACE_VARIATIONS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_IRRADIATION : Classe de definition des valeurs d'irradiation intervenant dans les phases de calcul ou d'edition +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_IRRADIATION = OPER (nom="DONNEES_IRRADIATION",op=0,sd_prod=DonneesIrradiation, + niveau = 'ParametresCalcul', + fr = "Definition des donnees d'irradiation", + ang = "Definition of burnup values", + regles = (AU_MOINS_UN ('Irradiations', 'Refroidissement','InsertionGrappeX'),), + Unite = SIMP (typ='TXM',defaut='MWj/t',into=('MWj/t','Jours'),statut='o',fr="Unite pour les irradiations"), + Minimum = SIMP (typ='R',defaut=0.,statut='f',fr="Irradiation du debut de calcul"), + Maximum = SIMP (typ='R',defaut=100000.,statut='f',fr="Irradiation maximum des calculs"), + Irradiations = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Liste previsionnelle des irradiations"), + Refroidissement = FACT (statut='f',fr="Definition de la periode de refroidissement", + Instants = SIMP (typ='R',max='**',fr="Irradiations MWj/t de debut de refroidissement du combustible"), + Duree = SIMP (typ=('R','I'),max='**',fr="Nombre de jours de refroidissement correspondant aux instants de refroidissement") + ), + InsertionGrappeX = FACT (statut='f',fr="Simulation d'une insertion de grappe dans un assemblage seul (Mode X)", + TypeGrappe = SIMP (typ='TXM', statut='o',fr="Type de grappe inseree"), + IrradiationInsertion = SIMP (typ=('R','I'), statut='o',max='**',fr="Irradiations MWj/t de debut d'insertion de la grappe"), + IrradiationExtraction = SIMP (typ=('R','I'), statut='o',max='**',fr="Irradiations MWj/t d'extraction de la grappe"), + CoteAxiale = SIMP (typ='R', statut='f',fr="Cote axiale (cm) de la limite inferieure de la grappe aux instants d'insertion") + ) + ) ; # Fin DONNEES_IRRADIATION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_FONCTIONNEMENT_MOYENNES : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_FONCTIONNEMENT_MOYENNES = OPER (nom="CONDITIONS_FONCTIONNEMENT_MOYENNES",op=0,sd_prod=ConditionsFonctionnementMoyennes, + niveau = 'ParametresCalcul', + fr = "Definition des conditions de fonctionnement moyennes pour une campagne donnee", + ang = "Definition of a campaign operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',statut='f',fr="Identificateur de la campagne"), + DescriptifFonctionnement = SIMP (typ='TXM',statut='f',fr="Descriptif textuel arbitraire du mode de fonctionnement"), + regles = (UN_PARMI ('PuissanceThermiqueCoeur', 'PuissanceRelativeCoeur'),), + PuissanceThermiqueCoeur = SIMP (typ='R',statut='o',defaut=2775.,fr="Puissance thermique du reacteur en MWth"), + PuissanceRelativeCoeur = SIMP (typ='R',statut='o',defaut=100. ,fr="Puissance relative du reacteur en %"), + FluxSurfaciquePn = SIMP (typ='R',statut='o',defaut=59.74 ,fr="Flux a la surface du crayon en W/cm2"), + PressionEntreePrimaire = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars a l'entree du coeur actif"), + PressionSortiePrimaire = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression moyenne du moderateur en bars en sortie du coeur actif"), + TitreMoyenBore = SIMP (typ='R',statut='o',defaut= 500.,fr="Titre moyen en ppm en bore dans le moderateur"), +# + TmEntreePnulle = SIMP (typ='R',statut='o',defaut=286.0,fr="Temperature en Celsius du moderateur a puissance nulle a l'entree du coeur"), + TmEntreePnom = SIMP (typ='R',statut='o',defaut=286.4,fr="Temperature en Celsius du moderateur a puissance nominale a l'entree du coeur"), + DeltaTmEntreeSortiePnom = SIMP (typ='R',statut='o',defaut= 39.0,fr="Ecart en Celsius de temperature entre entree et sortie du coeur a puissance nominale"), + TmMoyenneCoeurPnom = SIMP (typ='R',statut='o',defaut=305.3,fr="Temperature moyenne en Celsius du moderateur dans le coeur actif"), + TmMoyenneCuvePnom = SIMP (typ='R',statut='f',defaut=305.0,fr="Temperature moyenne en Celsius du moderateur dans la cuve"), + TmMoyenneReflecteurPnom = SIMP (typ='R',statut='f',defaut=296.0,fr="Temperature moyenne en Celsius du reflecteur radial"), + TcMoyennePnom = SIMP (typ='R',statut='f',defaut=600.0,fr="Temperature moyenne en Celsius du combustible dans le coeur"), +# + PositionGrappeHaute = SIMP (typ='I',statut='f',defaut=225 ,fr="Position haute des grappes, en nombre de pas extraits"), + DebitMesureParBoucle = FACT (statut='f',max='**',fr="Debit primaire mesure sur chaque boucle en m3/h", + DateEssai = SIMP (typ='I',min=3,max=3,fr="Date J M A de l'essai"), + Debits = SIMP (typ='R',min=3,max=4,fr="Valeurs des debits primaire par boucle en m3/h") + ), + NbTubesGVBouches = SIMP (typ='I',statut='f',min=3,max=4,fr="Nombre de tubes bouches pour chaque GV") + ) ; # Fin CONDITIONS_FONCTIONNEMENT_MOYENNES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CONDITIONS_TRANSITOIRE : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee en transitoire +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CONDITIONS_TRANSITOIRE = OPER (nom="CONDITIONS_TRANSITOIRE", op=0, sd_prod=ConditionsTransitoire, niveau = 'ParametresCalcul', + fr = "Definition des conditions de fonctionnement en transitoire pour une campagne donnee", + ang = "Definition of a campaign dynamic operating conditions ", + IdentificateurCampagne = SIMP (typ='TXM',max='**',statut='f',fr="Identificateur de la campagne"), + NeutroniqueDiscretisation = SIMP (typ='R',max='**',statut='f',fr="Liste des pas de temps successifs pour le calcul neutronique (en s)"), + ThermohydrauliqueDiscretisation = SIMP (typ='R',statut='f',fr="Liste des pas de temps successifs pour le calcul thermohydraulique (en s)"), + DureeTransitoire = SIMP (typ='R',statut='o',fr="Duree totale en s du transitoire a simuler"), + PuissanceThermiqueRelative = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Puissance thermique relative du reacteur en %)"), + PressionPrimaireEntree = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Pression du moderateur en bars a l'entree du coeur actif)"), + TitreBore = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Titre en bore dans le moderateur (en ppm))"), + DebitPrimaire = SIMP (typ='R',max='**',statut='f',fr="Couples (Instant en s, Debit primaire dans le coeur en m3/h)") +# PositionsGrappes = SIMP (typ=PositionAxialeGrappesCommande,statut='f') +# PositionsGrappes = FACT (max='**',statut='f', +# RepereGrappeouGroupe = SIMP (typ='TXM',fr="Repere du groupe de grappes ou de la grappe"), +# Positions = SIMP (typ='R',max='**', +# fr="Couples (Instant en s, Position dans le coeur en nombre de pas extraits)")) + ) ; # Fin CONDITIONS_TRANSITOIRE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe POSITION_AXIALE_GRAPPES_COMMANDE : Classe de definition des positions axiales des grappes de commande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +POSITION_AXIALE_GRAPPES_COMMANDE = OPER (nom="POSITION_AXIALE_GRAPPES_COMMANDE",op=0,sd_prod=PositionAxialeGrappesCommande, + niveau = 'ParametresCalcul', + fr = "Positions axiales des grappes de commande pour une campagne donnee ou pour un transitoire", + ang = "Control rod cluster axial positions for a campaign or for a static or dynamic calculation", + TypeDonnee = SIMP (typ='TXM',statut='o',defaut='Statique',into=('Statique','Cinetique','Campagne'), + fr="Indication de dependance ou non d'un parametre Temps ou Irradiation"), + UnitePosition = SIMP (typ='TXM',statut='o',defaut='PasExtrait',into=('PasExtrait', 'cm', 'Recouvrement')), + BlocStatique = BLOC (condition = "TypeDonnee=='Statique'", + PositionStatique = NUPL (max='**',statut='o',elements =( + SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + SIMP (typ=('R','I'),fr="Position axiale")) + ) + ), + BlocCinetique = BLOC (condition = "TypeDonnee=='Cinetique'", + PositionCinetique = FACT (max='**',statut='o', + NomGrappeouGroupe = SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + CotesAxiales = SIMP (typ=('R','I'),max='**', + fr="Liste des Couples (Instant en s, Position axiale)") + ) + ), + BlocCampagne = BLOC (condition = "TypeDonnee=='Campagne'", + PositionCampagne = FACT (max='**',statut='o', + NomGrappeouGroupe = SIMP (typ='TXM',fr="Nom du groupe de grappes ou de la grappe"), + CotesAxiales = SIMP (typ=('R','I'),max='**', + fr="Liste des Couples (Irradiation MWj/t, Position axiale)") + ) + ) + ) ; # Fin POSITION_AXIALE_GRAPPES_COMMANDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DATES_CLES_CAMPAGNE : Classe de definition des dates cles d'une campagne et de sa longueur +# Definition des attributs : +# LongueurNaturelleExperimentaleMWj_t : Irradiation moyenne coeur depuis le debut de la campagne jusqu'au moment du passage en +# prolongation de campagne (valeur experimentale transmise par le site). En cas d'anticipation, +# c'est la valeur recalee qui y est stockee. +# LongueurNaturelleRecaleeMWj_t : Longueur naturelle previsionnelle estimee en cours de campagne (par le suivi du bore, +# a chaque carte de flux) +# LongueurNaturelleTheoriqueMWj_t : Longueur naturelle estimee par le code de coeur +# LongueurAnticipationJepp : Longueur d'anticipation de campagne en Jours Equivalents Pleine Puissance +# LongueurProlongationJepp : Longueur de prolongation de campagne en Jours Equivalents Pleine Puissance +# LongueurTotaleExperimentaleMWj_t : Longueur totale de la campagne en MWj/t (Donnee transmise par le site) +# TypePlanChargement : Type de plan pour la fluence cuve : Determine par les irradiations des assemblages places sur les axes medians +# et sur les diagonales +# - 3 Assemblages neufs aux bouts des deux axes : Plan Standard +# - 3 Assemblages (Irradie, Neuf, Irradie) ou (Neuf, Irradie, Neuf) sur les axes : Fluence reduite (REP 900 ou N4) +# - 2 assemblages irradies aux bouts des diagonales : Fluence reduite (REP 1300) +# - 3 Assemblages irradies aux bouts des deux axes : Fluence Faible (REP 900 ou N4) +# - 3 Assemblages irradies aux bouts des deux axes et +# 2 assemblages irradies aux bouts des diagonales : Faible Fluence Generalisee +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DATES_CLES_CAMPAGNE = OPER (nom="DATES_CLES_CAMPAGNE", op=0, sd_prod=DatesClesCampagne, niveau = 'DonneesEtude', + fr = "Definition des dates cles d'une campagne et de ses longueurs caracteristiques", + ang = "Definition of the campaign dates and lengths", + IdentificateurCampagne = SIMP (typ='TXM',statut='o',defaut='CZ101',fr="Identificateur de la campagne"), + TypePlanChargement = SIMP (typ='TXM',statut='f',defaut='FluenceFaible', + into=('Standard','FluenceReduite','FluenceFaible','FaibleFluenceGeneralisee')), + DateDDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de debut de campagne"), + regles = (ENSEMBLE ('DatePnom','IrradiationDatePnom'), + ENSEMBLE ('DateCouplage','IrradiationDateCouplage'), + ENSEMBLE ('DatePassageEnProlongation','LongueurNaturelleExperimentale'),), + DatePnom = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A d'atteinte de la puissance nominale"), + IrradDatePnom = SIMP (typ='R', statut='f',fr="Irradiation de la campagne a la date d'atteinte de la puissance nominale"), + DateCouplage = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de couplage au reseau"), + IrradDateCouplage = SIMP (typ='R', statut='f',fr="Irradiation de la campagne atteinte a la date de couplage au reseau"), + DateFDC = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de fin de campagne reelle"), + LNatTheorique = SIMP (typ='R', statut='f',fr="Longueur naturelle theorique calculee de la campagne en MWj/t"), + LNatRecalee = SIMP (typ='R', statut='f',fr="Longueur naturelle recalee calculee de la campagne en MWj/t"), + DatePassageEnProlongation = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de passage en prolongation de campagne"), + LnatExperimentale = SIMP (typ='R', statut='f',fr="Longueur naturelle mesuree de la campagne en MWj/t"), + LongueurAnticipationJepp = SIMP (typ='R', statut='f',fr="Nombre de JEPP d'anticipation"), + LongueurProlongationJepp = SIMP (typ='R', statut='f',fr="Nombre de JEPP de prolongation"), + LongueurTotaleExperimentale = SIMP (typ='R', statut='f',fr="Longueur totale de la campagne en MWj/t") + ) ; # Fin DATES_CLES_CAMPAGNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_AUTOPROTECTION : Classe de definition des donnees d'autoprotection du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_AUTOPROTECTION = OPER (nom="OPTIONS_AUTOPROTECTION",op=0,sd_prod=OptionsAutoprotection, + niveau = 'OptionsCodesCalcul', + fr = "Definition des donnees d'autoprotection des resonances", + ang = "Definition of resonance self shielding data", + TypeCombustible = SIMP (typ='TXM',max='**',statut='o', + fr="Type de combustible auquel s'appliquent ces options d'autoprotection"), + MethodeAutoprotection = SIMP (typ='TXM',into=('SanchezCoste','SousGroupes'),defaut='SanchezCoste',statut='f'), + EnergieSupAutoprotection = SIMP (typ='R',defaut=55.5952,statut='f', + fr="Energie superieure eV du premier groupe d'autoprotection, gpe 38 dans le cas a 99 groupes"), + IsotopesAutoproteges = NUPL ( + max = '**', + elements = (SIMP (typ=Isotope,statut='o',fr="Nom de l'isotope a autoproteger"), + SIMP (typ='TXM',into=('Moyenne','Detaillee','Couronne'),statut='o'), + SIMP (typ='TXM',into=('Materiaux','Cellules'),statut='f', + fr="Choix d'autoprotection sur les materiaux ou les cellules"), + SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou de cellules concernes"))), + Irradiations = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection"), + PoisonIrradiations = SIMP (typ='R',max='**',statut='f', + fr="Irradiations ou se font les calculs d'autoprotection des poisons integres au combustible") + ) ; # Fin OPTIONS_AUTOPROTECTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_RESEAU : Classe de definition des options du code de reseau +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_RESEAU = OPER (nom="OPTIONS_CODE_RESEAU", op=0, sd_prod=OptionsCodeReseau, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de reseau", + ang = "Definition of lattice code options", + MethodeCalcul = SIMP (typ='TXM',defaut='Multicellule',statut='o', + into=('Multicellule','Pij','Caracteristiques','Monte-Carlo/TRIPOLI','Monte-Carlo/MCNP'), + fr="Methode de calcul"), + ProcedureBibliothequeBase = SIMP (typ='TXM',defaut='CEA93_G99_V5',statut='o', + into=('CEA93_G99_V0','CEA93_G99_V2','CEA93_G99_V3','CEA93_G99_V4', + 'CEA93_G99_V5','CEA93_G99_V6','CEA93_G172_V4'), + fr="Nom de la procedure Bibliotheque"), + CorrectionTransport = SIMP (typ='TXM',defaut='APOLLO',statut='o',into=('APOLLO','WIMS','Non'), + fr="Demande ou non de correction de transport (de type APOLLO ou WIMS)"), + TypeBibliothequeBase = SIMP (typ='TXM',defaut='APOLLIB_2',statut='o', + into=('APOLLIB_1','APOLLIB_2','DRAGON','NJOY_89','NJOY_91','WIMS_D4','WIMS_AECL'), + fr="Format de la bibliotheque de donnees nucleaires multigroupes"), + TableProbabilites = SIMP (typ='TXM',defaut='CALENDF',statut='o',into=('CALENDF','SUBG','Non'), + fr="Calcul des tables de probabilites mathematiques CALENDF ou physiques SUBG"), + RegionPeripheriqueCellule = SIMP(typ='R',defaut=0.,statut='o', + fr="Proportion de Volume de la zone peripherique des cellules cylindrisees"), + OptionMulticellule = SIMP (typ='TXM',defaut='ROTH',statut='o',into=('ROTH','MULTICELLULE'), + fr="Option du calcul multicellule"), + OptionPij = SIMP (typ='TXM',defaut='&UP0 &ROTH',statut='o',into=('&UP0 &ROTH','&UP0 &HETE','&UP1 &HETE'), + fr="Option du calcul des Pij"), + ParametresIntegration = SIMP (typ='TXM',defaut='MAIL_INT 7 7 7 7',statut='f', + fr="Donnees du maillage d'integration en heterogene"), + ProportionNoyauxParDefaut = SIMP (typ='R',defaut=1.E-12,statut='o', + fr="Valeur initiale des concentrations des noyaux lourds non definis"), + OptionLaplacienB2 = SIMP (typ='TXM',defaut='CRITIQUE',statut='o',into=('CRITIQUE','NUL','IMPOSE'), + fr="Option du calcul des fuites homogenes"), + LaplacienB2 = SIMP (typ='R',defaut=0.,statut='o',fr="Valeur initiale du laplacien du calcul des fuites"), + OrdreAnisotropie = SIMP (typ='I',defaut=1 ,statut='o',fr="Ordre d'anisotropie des sections de transfert"), + Autoprotection = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Calcul d'autoprotection ou non"), + BlocAutoprotection = BLOC (condition = "Autoprotection=='Oui'", + DonneesAutoprotection = SIMP (typ=OptionsAutoprotection,statut='f',max='**', + fr="Nom des objets decrivant les isotopes a autoproteger et les options associees"), + RecalculAutoprotection = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande ou non de recalcul de l'autoprotection")), + Equivalence = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande ou non de calcul d'equivalence"), + NbGroupesEquivalence = SIMP (typ='I',max='**',defaut=(2,6,16),statut='o', + fr="Liste des nombres de groupes des calculs d'equivalence"), + EditionSaphyb = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition des bibliotheques de type Saphyb"), + EditionAssemblage = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces homogeneisees sur l'ensemble du domaine"), + EditionCellule = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces homogeneisees par cellule"), + EditionFluxDetaille = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des flux moyens sur l'ensemble du domaine sur la maillage multigroupe detaille"), + EditionMilieu = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'), + fr="Demande d'edition des compositions isotopiques detaillees sur tous les milieux de calcul"), + EditionTrimaran = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition des sections efficaces pour TRIPOLI multigroupe"), + SpectreNeutrons = SIMP (typ='TXM',defaut='Prompt',statut='o',into=('Prompt','Retarde'), + fr="Type de spectre de neutrons pour le calcul de transport"), + ListeIsotopesEdites = SIMP (typ='TXM',statut='f',max='**',fr="Liste des initiales des symboles des isotopes a editer"), + FichierBickley = SIMP (typ='TXM',statut='f',fr="Nom du fichier des fonctions Bickley"), + EditionIsotopeHomogene = SIMP (typ='TXM',defaut='Non',statut='o',into=('Oui','Non'), + fr="Demande d'edition de constitution d'isotopes homogeneises sous forme APOLLIB"), + BlocHomoge = BLOC (condition = "EditionIsotopeHomogene=='Oui'", + RepertoireHomoge = SIMP (typ='TXM',statut='f', + fr="Nom du repertoire du fichier des isotopes homogenes sous forme APOLLIB"), + FichierHomoge = SIMP (typ='TXM',statut='f',fr="Nom du fichier des isotopes homogenes sous forme APOLLIB")), + Executable = NUPL (statut = 'f', elements = ( + SIMP (typ='TXM',fr="Systeme d'exploitation"), + SIMP (typ='TXM',fr="Nom du fichier executable"))), + ProceduresApollo2 = FACT (statut='f', + OptionsListing = SIMP (typ='TXM',statut='f',fr="Commandes Gibiane des options d'edition listing"), + Evolution = SIMP (typ='TXM',statut='f',fr="Procedure d'evolution"), + Reprise = SIMP (typ='TXM',statut='f',fr="Procedure de reprise"), + Equivalence = SIMP (typ='TXM',statut='f',fr="Procedure d'equivalence"), + EditionCellule = SIMP (typ='TXM',statut='f',fr="Procedure d'edition par cellule"), + EditionHomoge = SIMP (typ='TXM',statut='f',fr="Procedure d'edition des isotopes Homoge") + ), + ProceduresSunset = FACT (statut='f', + Evolution = SIMP (typ='TXM',statut='f',fr="Procedure d'evolution"), + Reprise = SIMP (typ='TXM',statut='f',fr="Procedure de reprise") + ) + ) ; # Fin OPTIONS_CODE_RESEAU +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_COEUR_STATIQUE : Classe de definition des options du code de coeur en statique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_COEUR_STATIQUE = OPER (nom="OPTIONS_CODE_COEUR_STATIQUE", op=0, sd_prod=OptionsCodeCoeurStatique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de coeur en statique", + ang = "Definition of core code static options", + DeltaReactivite = SIMP (typ='TXM',statut='o',defaut='DeltaRo',into=('DeltaRo','LogKeff'), + fr="Methode de calcul de variation de reactivite entre deux etats"), + OxMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe x d'un assemblage"), + OyMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe y d'un assemblage"), + OzMaillageFlux = SIMP (typ=Maillage1D,statut='o',fr="Maillage du calcul de flux suivant l'axe z d'un assemblage"), + ReactiviteVisee = SIMP (typ='R',defaut= 0.,statut='o',fr="Valeur en pcm de la reactivite visee en calcul critique"), + EfficaciteBoreEstimee = SIMP (typ='R',defaut= -6.,statut='o',fr="Valeur estimee en pcm/ppm de l'efficacite du bore"), + TitreBoreInitiale = SIMP (typ='R',defaut=600.,statut='o',fr="Valeur estimee en ppm du titre en bore du moderateur"), + Factorisation = SIMP (typ='TXM',defaut='Non',statut='o',into=('Coeur2D','Assemblage','Non'), + fr="Option ou non de factorisation par le flux fin Coeur ou Assemblage"), + AxialTypeReflecteurs = SIMP (typ='TXM',defaut='Equivalent',statut='o',into=('Equivalent','Homogeneise')), + RadialTypeReflecteurs = SIMP (typ='TXM',defaut='Equivalent',statut='o',into=('Equivalent','Homogeneise')), + ReflAxiauxEquivalents = BLOC (condition = "TypeReflecteursAxiaux=='Equivalent'", + ReflecteurInferieur = SIMP (typ=SectionsReflecteur,statut='o'), + MaillageInferieur = SIMP (typ=Maillage1D,statut='o'), + ReflecteurSuperieur = SIMP (typ=SectionsReflecteur,statut='o'), + MaillageSuperieur = SIMP (typ=Maillage1D,statut='o') + ), + ReflAxiauxHomogeneises = BLOC (condition = "TypeReflecteursAxiaux=='Homogeneise'", + AxialAbscisses = SIMP (typ='R' ,statut='o',max='**'), + AxialMateriaux = SIMP (typ=Materiau,statut='o',max='**') + ), + ReflRadialEquivalent = BLOC (condition = "TypeReflecteurRadial=='Equivalent'", + ReflecteurRadial = SIMP (typ=SectionsReflecteur,statut='o'), + Epaisseur = SIMP (typ='R' ,statut='o') + ), + ReflRadialHomogeneise = BLOC (condition = "TypeReflecteurRadial=='Homogeneise'", + RadialAbscisses = SIMP (typ='R' ,statut='o',max='**'), + RadialMateriaux = SIMP (typ=Materiau,statut='o',max='**') + ), + ApproximationMigration = SIMP (typ='TXM',defaut='SPn',statut='o',into=('SPn','Sn','Diffusion')), + BlocSPn = BLOC (condition = "ApproximationTransport=='SPn'", + SPnOrdreApproximation = SIMP (typ='I' ,defaut=1,statut='o',fr="Ordre n impair de la methode SPn"), + SPnElementFini = SIMP (typ='TXM',defaut='RTN0',statut='o',into=('RTN0','RTN1'),fr="Type d'element fini"), + SPnMaxIterDiffusion = SIMP (typ='I' ,defaut=1,into=(1,2,3,4,5),statut='o', + fr="Nombre maximal d'iterations de diffusion") + ), + BlocSn = BLOC (condition = "ApproximationTransport=='Sn'", + SnOrdreApproximation = SIMP (typ='I' ,defaut=4,statut='o',fr="Ordre n pair de la methode Sn"), + SnElementFini = SIMP (typ='TXM',defaut='RTN',statut='o',into=('RTN','BDM'),fr="Type d'element fini"), + SnAcceleration = SIMP (typ='TXM',defaut='Oui',statut='o',into=('Oui','Non'),fr="Acceleration par la diffusion"), + SnMaxIterDiffusion = SIMP (typ='I' ,defaut=20,statut='o',fr="Nombre maximal d'iterations de calcul de diffusion") + ), + BlocDiff = BLOC (condition = "ApproximationTransport=='Diffusion'", + MaxIterFlux = SIMP (typ='I',defaut= 5 ,statut='o',fr="Maximum d'iterations du calcul de flux"), + MaxIterKeff = SIMP (typ='I',defaut=50 ,statut='o',fr="Maximum d'iterations du calcul de keff"), + PrecPuissance = SIMP (typ='R',defaut=0.005 ,statut='o',fr="Precision sur la puissance"), + PrecKeff = SIMP (typ='R',defaut=0.0001 ,statut='o',fr="Precision sur keff") + ), + PrecisionValeurPropre = SIMP (typ='R',defaut=1.E-5,statut='o',fr="Precision sur la valeur propre"), + PrecisionFlux = SIMP (typ='R',defaut=1.E-3,statut='o',fr="Precision sur le flux"), + PrecisionMultigroupe = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision de la resolution multigroupe"), + PrecisionIterTermeDiffusion = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision des iterations sur le terme de diffusion"), + MaxIterEnergie = SIMP (typ='I',defaut=1,statut='o', + fr="Nombre maximal d'iterations pour la resolution Gauss Seidel en energie"), + MaxIterTermeDiffusion = SIMP (typ='I',defaut=1,statut='o',fr="Nombre maximal d'iterations sur le terme de diffusion"), + MaxIterDecompositionDomaine = SIMP (typ='I',defaut=1,statut='o',fr="Nombre d'iterations de decomposition de domaine"), + MaxIterKeffAvantCR = SIMP (typ='I',defaut=1,statut='o',fr="Nombre de calculs de keff avant appel aux contre-reactions") + ) ; # Fin OPTIONS_CODE_COEUR_STATIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODE_COEUR_CINETIQUE : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODE_COEUR_CINETIQUE = OPER (nom="OPTIONS_CODE_COEUR_CINETIQUE", op=0, sd_prod=OptionsCodeCoeurCinetique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul de coeur en cinetique", + ang = "Definition of core code kinetic options", + NombrePrecurseurs = SIMP (typ='I',defaut=6,statut='o',fr="Nombre de groupes de precurseurs"), + GestionAutomatiquePasCinetique = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),statut='o', + fr="Gestion automatique du pas de temps du calcul cinetique"), + BlocSansGestionPas = BLOC (condition = "GestionAutomatiquePasCinetique=='Non'", + DefinitionPasDeTemps = SIMP (typ='R',max='**',statut='o', + fr="Liste de couples (pas de temps, limite superieure de validite du pas de temps)"), + ), + PrecisionIterationFluxPrecurseurs = SIMP (typ='R',defaut=1.E-6,statut='o',fr="Precision sur les iterations Flux Precurseurs"), + PrecisionParametreGestionAutomatique = SIMP (typ='R',defaut=0.0008,statut='o',fr="Precision sur les iterations Flux Precurseurs"), + MaxIterationsFluxPrecurseurs = SIMP (typ='I',defaut=50,statut='o',fr="Nombre maximal d'iterations Flux Precurseurs"), + ThetaSchemaCinetique = SIMP (typ='R',defaut=0.5,statut='o',fr="Valeur du parametre theta du schema cinetique") + ) ; # Fin OPTIONS_CODE_COEUR_CINETIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_THERMIQUE_THERMOHYDRAULIQUE : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_THERMIQUE_THERMOHYDRAULIQUE = OPER (nom="OPTIONS_THERMIQUE_THERMOHYDRAULIQUE", op=0, sd_prod=OptionsThermiqueThermohydraulique, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des modules de calcul de coeur thermique et thermohydraulique simplifiees", + ang = "Definition of thermohydraulic and thermic module options", + HGaineFluide = SIMP (typ='TXM',defaut='DITTUS_BOELTER',into=('FLICA','DITTUS_BOELTER'),statut='o', + fr="Option du Coefficient d'echange gaine-fluide (flux < au flux critique)"), + HGaineFluideEbullition = SIMP (typ='TXM',defaut='BST',into=('BST','TONG'),statut='o', + fr="Option du Coefficient d'echange gaine-fluide (Ebullition en film)"), + OptionHGapConstantTransitoire = SIMP (typ='TXM',defaut='Non',into=('Non','Oui'),statut='o', + fr="Option de constance du coefficient d'echange JeuPastilleGaine"), + OptionHGap = SIMP (typ='TXM',defaut='HGAP_88',into=('EJECTION','TUO2','PLIN_BU','FIXE','HGAP_88'),statut='o', + fr="Option de calcul du Coefficient d'echange du jeu pastille-gaine"), + BlocHgapTuo2 = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='TUO2'", + Tuo2Initiale = SIMP (typ='R',statut='o', + fr="Temperature initiale combustible pour le calcul du coefficient d'echange") ), + BlocHgapFixe = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='FIXE'", + Hgap = SIMP (typ='R',statut='o',defaut=5850.,fr="Valeur imposée du coefficient d'echange") ), + ConductiviteCombustible = SIMP (typ='TXM',defaut='HGAP_88',into=('STORA','WESTINGHOUSE','HGAP_88','COMETHE'),statut='o', + fr="Option du Coefficient de conductivite du combustible"), + CapaciteCalorifiqueCombustible = SIMP (typ='TXM',defaut='UO2_FRAMATOME',into=('UO2_BATES','UO2_FRAMATOME','UO2_THYC'),statut='o', + fr="Option du Coefficient de conductivite du combustible"), + MateriauGaine = SIMP (typ='TXM',defaut='ZIRCALOY_CYRANO',into=('ZIRCALOY_CYRANO', 'ZIRCALOY_THYC', 'INCOLOY_800', + 'CHROMESCO_3', 'INOX_16', 'INOX_321', 'INOX_347', 'INOX_347_OXYDE', + 'INCONEL_600', 'NICKEL_75', 'PLATINE'),statut='o', + fr="Materiau de la gaine pour le calcul du roCp de la gaine et de sa conductivite"), + FluxCritique = SIMP (typ='R',defaut=180.E4,statut='o',fr="Valeur du flux critique en W/m2"), + FractionPuissanceCombustible = SIMP (typ='R',defaut=0.974,statut='o',fr="Fraction de la puissance degagee dans le combustible"), + Creusement = SIMP (typ='TXM',defaut='Uniforme',statut='o', + into=('Uniforme','Runnals','Framatome','Twinkle','Mox','EDF','Specifique')), + BlocCreusement = BLOC (condition = "Creusement=='Specifique'", + RayonsCreusement = SIMP (typ='R',statut='o',fr="Rayons de definition du creusement de puissance (nz)"), + IrradiationsCreusement = SIMP (typ='R',statut='o',fr="Irradiations de definition du creusement de puissance (nbu)"), + EnrichissementsCreusement = SIMP (typ='R',statut='o',fr="Enrichissements de definition du creusement de puissance (nen)"), + PuissancesUO2 = SIMP (typ='R',max='**',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille UO2"), + PuissancesMOX = SIMP (typ='R',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille MOX") ), + PastilleDiscretisation = SIMP (typ='I',defaut=4,statut='o',fr="Nombre de points de discretisation radiale de la pastille combustible"), + GaineDiscretisation = SIMP (typ='I',defaut=2,statut='o', + fr="Nombre de points de discretisation radiale de la gaine de la pastille combustible"), + ThermiquePrecision = SIMP (typ='R',defaut=0.1,statut='o',fr="Precision en Celsius du calcul thermique radiale du crayon"), + ThermohydrauliquePrecision = SIMP (typ='R',defaut=0.01,statut='o', + fr="Precision en Celsius du calcul thermohydraulique de la temperature du moderateur"), + MaxIterThermique = SIMP (typ='I',defaut=100,statut='o', + fr="Nombre maximum d'iterations du calcul de thermique"), + MaxIterThermohydraulique = SIMP (typ='I',defaut=100,statut='o', + fr="Nombre maximum d'iterations du calcul de thermohydraulique"), + MethodeIntegrationThermohydraulique = SIMP (typ='TXM',defaut='Gauss',statut='o',into=('Gauss','NonGauss'), + fr="Methode d'integration thermohydraulique"), + PerteDeCharge = SIMP (typ='TXM',defaut='Non',statut='o',into=('Non','Oui'), + fr="Prise en compte ou non de la perte de charge axiale"), + TableEau = SIMP (typ='TXM',defaut='Thetis',statut='o',into=('Thetis','Interne'), + fr="Calcul des caracteristiques du moderateur par THETIS ou par des tables internes") + ) ; # Fin OPTIONS_THERMIQUE_THERMOHYDRAULIQUE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CONTRE_REACTIONS_COEUR : Classe de definition des options du code de coeur en cinetique +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CONTRE_REACTIONS_COEUR = OPER (nom="OPTIONS_CONTRE_REACTIONS_COEUR", op=0, sd_prod=OptionsContreReactionsCoeur, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des modules de calcul de contre-reactions coeur", + ang = "Definition of feedback module options", + Iter2dCRN = SIMP (typ='I',defaut=30,statut='o',fr="Nombre maximal d'iterations de contre-reactions en 2D, si 0 pas de CRN"), + Iter3dCRN = SIMP (typ='I',defaut=15,statut='o',fr="Nombre maximal d'iterations de contre-reactions en 3D, si 0 pas de CRN"), + CoeffAttenuation = SIMP (typ='R',defaut=0.8,statut='o',fr="Coefficient d'attenuation des contre-reactions"), + PrecisionPuissance = SIMP (typ='R',defaut=1.E-4,statut='o',fr="Precision sur la puissance a la fin des iterations de contre-reactions"), + PrecisionKeff = SIMP (typ='R',defaut=1.E-5,statut='o',fr="Precision sur keff a la fin des iterations de contre-reactions"), + MethodeCalculSection = SIMP (typ='TXM',defaut='TabulationLineaire',into=('Spline1D','SplinenD','TabulationLineaire'),statut='o', + fr="Methode d'interpolation des sections efficaces avec Contre-reactions"), + FigerCRN = SIMP (typ='TXM',statut='f',max='**',fr="Liste des parametres de contre-reactions a figer") + ) ; # Fin OPTIONS_CONTRE_REACTIONS_COEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe OPTIONS_CODES : Classe de definition des options generales et du type de calcul demande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +OPTIONS_CODES = OPER (nom="OPTIONS_CODES", op=0, sd_prod=OptionsCodes, niveau = 'OptionsCodesCalcul', + fr = "Definition des options des codes de calcul", + ang = "Definition of calculation code options", + regles = (AU_MOINS_UN('OptionsReseau', 'OptionsStatiqueCoeur', 'OptionsCinetiqueCoeur','OptionsThermo', 'OptionsCRNCoeur'),), + OptionsReseau = SIMP (typ=OptionsCodeReseau ,statut='f', fr="Options du code de reseau"), + OptionsStatiqueCoeur = SIMP (typ=OptionsCodeCoeurStatique ,statut='f', fr="Options du code de coeur en statique"), + OptionsCinetiqueCoeur = SIMP (typ=OptionsCodeCoeurCinetique ,statut='f', fr="Options du code de coeur en cinetique"), + OptionsThermo = SIMP (typ=OptionsThermiqueThermohydraulique,statut='f', fr="Options des modules de thermique et thermohydraulique simplifiées)"), + OptionsCRNCoeur = SIMP (typ=OptionsContreReactionsCoeur ,statut='f', fr="Prise en compte des contre-reactions ou non") + ) ; # Fin OPTIONS_CODES +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe RESSOURCES_INFORMATIQUES : Classe de definition des ressources de calcul informatiques +# Cette classe est liee aux possibilites du gestionnaire du traitement par lots et pour le moment +# les attributs affiches sont dependants de LSF : +# si on donne un type de serveur : bsub -R "type=USPARC" monjob +# si on donne un modele de serveur : bsub -R "model=HPK640" monjob +# si on donne un type de ressource : bsub -R "Solaris" monjob +# si on donne des machines particulieres : bsub -m " Nommachine1 NomMachine2 " monjob +# Dans le cas des machines particulieres, il est necessaire de fournir aussi le systeme d'exploitation +# associe (ceci pour distinguer les fichiers necessaires en entree, leurs noms devant contenir +# le nom du systeme d'exploitation (les fichiers etant differents a priori suivant l'OS utilise +# et de format non portable) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESSOURCES_INFORMATIQUES = OPER (nom="RESSOURCES_INFORMATIQUES",sd_prod=RessourcesInformatiques,op=0,niveau = 'ConfigurationInformatique', + fr = "Definition des systemes d'exploitation et des calculateurs de l'etude", + ang = "Software operating system and computers used", + regles = (UN_PARMI('TypesServeursCibles', 'ModelesServeursCibles','OSCible','CalculateursCibles'),), + TypesServeursCibles = SIMP (typ='TXM',statut='f',max='**',defaut='USPARC' ,into=('SPARC', 'USPARC', 'PWR2', 'HPPA20', 'ALPHA'), + fr="Liste des types de serveurs cibles pour la soumission des calculs"), + ModelesServeursCibles = SIMP (typ='TXM',statut='f',max='**',defaut='U2200' ,into=('SS1000E','U2200','IBM3BT','HPK460','DEC5400','U1140'), + fr="Liste des modeles de serveurs cibles pour la soumission des calculs"), + OSCible = SIMP (typ='TXM',statut='f', defaut='solaris',into=('solaris','aix','usparc','alpha','hpux'), + fr="Type de ressource cible pour la soumission des calculs"), + CalculateursCibles = NUPL (statut='f',max='**',fr="Liste des noms des calculateurs cibles pour la soumission des calculs", + elements = (SIMP (typ='TXM',statut='o',fr="Nom du calculateur cible"), + SIMP (typ='TXM',statut='o',fr="Systeme d'exploitation de la machine cible", + defaut='solaris',into=('solaris','aix','usparc','alpha','hpux'))) + ) + ) ; # Fin RESSOURCES_INFORMATIQUES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_CAS_ETUDE : Classe de definition des caracteristiques globales d'un cas de l'etude +# Definition de la centrale (site, numero de tranche) et numero de campagne d'irradiation +# Ces caracteristiques d'environnement de l'etude doivent permettre de recuperer l'ensemble +# des parametres de fonctionnement nominales du reacteur sujet de l'etude (creation de +# bibliotheques ou calcul de coeur) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_CAS_ETUDE = OPER (nom="DONNEES_CAS_ETUDE", op=0, sd_prod=DonneesCasEtude, niveau = 'DonneesEtude', + fr = "Definition de la centrale sujet du cas de l'etude et des options globales du cas", + ang = "Definition of the power plant and of the global options of the calculation case", + TypeCode = SIMP (typ='TXM',defaut='Reseau',into=('Reseau','Coeur'),statut='o'), + SiteNucleaire = SIMP (typ=SiteNucleaire,defaut='TRICASTIN',statut='o'), + BlocCoeur = BLOC (condition = "TypeCode=='Coeur'", + NumeroTranche = SIMP (typ='I',defaut=1,statut='o',fr="Numero de la tranche nucleaire"), + NumeroCampagne = SIMP (typ='I',defaut=1,statut='o',fr="Numero de la campagne d'irradiation"), + IdentificateurCampagne = SIMP (typ='TXM',defaut='TN101',statut='o',fr="Identificateur de la campagne"), + DatesCampagne = SIMP (typ=DatesClesCampagne,statut='f',fr="Dates cles de la campagne"), + TypeGestion = SIMP (typ = 'TXM', + defaut = '370Q', + statut = 'f', fr="Type de gestion du combustible", + into = ('310Q','310T','325T','325Q','340Q','345AL', + '370Q','370T','400T','HMOX','MOXNT','TMOX')), + TypeSchemaGrappe = SIMP (typ = 'TXM', + defaut = '900CPYUO2', + statut = 'f',fr="Type de schema d'implantation des grappes", + into = ('900CP0','900CPYUO2INITIAL','900CPYUO2', + '900CPYUO2AL','900CPYMOX','1300','N4')), + TypeEvaluationSurete = SIMP (typ='TXM',defaut='900STD',statut='f',fr="Type d'evaluation de surete", + into=('900STD','900GARANCE','1300STD','1300GEMMES','N4STD')), + ModePilotage = SIMP (typ='TXM',defaut='G',statut='f',into=('A','G','X'),fr="Mode de pilotage de la tranche"), + ImplantationGrappe = SIMP (typ=ImplantationGrappesCommande,statut='f',fr="Schema d'implantation des grappes de commande dans le coeur"), + PositionAxialeGrappes = SIMP (typ=PositionAxialeGrappesCommande,statut='f',fr="Positions axiales des grappes de commande"), + PlanChargement = SIMP (typ=Reseau,statut='o',fr="Plan de chargement du reseau coeur"), + Penalites = SIMP (typ=PenaliteAssemblage,statut='f',max='**',fr="Liste des objets PenalitesAssemblage"), + ActivitesMesurees = SIMP (typ=ActivitesExperimentales,statut='f',fr="Carte d'activite experimentale"), +# OptionsStatique = SIMP (typ=OptionsCodeCoeurStatique,statut='f'), +# OptionsCinetique = SIMP (typ=OptionsCodeCoeurCinetique,statut='f'), + CodeCalculC = SIMP (typ='TXM',defaut='CodeSn',statut='o',fr="Type de code de coeur a utiliser")), + BlocReseau = BLOC (condition = "TypeCode=='Reseau'", + Assemblage = SIMP (typ=(AssemblageType,ReparationAssemblage),statut='o',fr="Objet Assemblage a reparer et a calculer"), +# Options = SIMP (typ=OptionsCodeReseau,statut='f'), + CodeCalculR = SIMP (typ='TXM',defaut='SUNSET',statut='o',fr="Code de reseau a utiliser")), + Domaines = SIMP (typ=DecompositionDomaines ,statut='f',fr="Objet definissant la decomposition de domaines"), + ConditionsMoyennes = SIMP (typ=ConditionsFonctionnementMoyennes ,statut='f',fr="Objet definissant les conditions de fonctionnement moyennes"), + Transitoire = SIMP (typ=ConditionsTransitoire ,statut='f',fr="Objet contenant les conditions du transtoire"), + Variations = SIMP (typ=EspaceVariations ,statut='f',fr="Objet definissant l'espace de variations des parametres d'une etude parametrique"), + Irradiations = SIMP (typ=DonneesIrradiation ,statut='f',fr="Objet definissant les irradiations du calcul"), + Gestion = SIMP (typ=ParametresCalculGestion ,statut='f',fr="Parametres du calcul de gestion"), + Ajustement = SIMP (typ=DonneesAjustement ,statut='f',fr="Parametres d'ajustement du calcul"), + Accidents = SIMP (typ=DonneesAccidents ,statut='f',fr="Donnees des calculs d'accidents"), + Pilotage = SIMP (typ=DonneesPilotageGeneral ,statut='f',fr="Donnees generales de pilotage du reacteur"), + Calibrage = SIMP (typ=CalibrageGroupes ,statut='f',fr="Donnees de calibrage des groupes de commande du reacteur"), + Stretch = SIMP (typ=ProlongationCampagne ,statut='f',fr="Objet definissant la prolongation de campagne"), + Bibliotheques = SIMP (typ=FichierBibliothequeIsotopes ,statut='f',fr="Fichiers des bibliotheques de donnees de base"), + Ressources = SIMP (typ=RessourcesInformatiques ,statut='f',fr="Objet definissant les ressources informatiques a utiliser"), + ConditionLimite = SIMP (typ=GeneraleConditionLimite ,statut='o',fr="Objet definissant les conditions limites"), + Options = SIMP (typ=OptionsCodes ,statut='o',fr="Options des codes impliques dans le calcul"), + TypeCalcul = SIMP (typ='TXM',max='**',defaut='Evolution',statut='o', + into=('Evolution','EvolutionMicroscopique','EvolutionRefroidissement','Reprise','Statique','Cinetique', + 'BoreImpose','BoreCritique') ,fr="Type de calcul demande") + ) ; # Fin DONNEES_CAS_ETUDE +class resultat(TObjet): pass +class resultat2(resultat): pass +CALCUL=OPER(nom="CALCUL",op=10,sd_prod=resultat, + niveau = 'Operateurs', + materiau=SIMP(typ=Materiau), + PRESSION=SIMP(defaut=10000.,typ="R") + ); +CALCUL2=OPER(nom="CALCUL2",op=11,sd_prod=resultat2, + niveau = 'Operateurs', + donnee=SIMP(typ=resultat), + materiau=SIMP(typ=Materiau), + ); +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe SECTIONS_REFLECTEUR : Classe de definition des sections efficaces multigroupes des reflecteurs +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +SECTIONS_REFLECTEUR = OPER (nom="SECTIONS_REFLECTEUR",sd_prod=SectionsReflecteur,op=0,niveau = 'SectionsEfficaces', + fr = "Definition des sections efficaces equivalentes d'un reflecteur", + ang = "Equivalent reflector cross sections", + NbGroupesEnergie = SIMP (typ='I' ,statut='o',defaut=2,fr="Nombre de groupes d'energie"), + LimitesEnergie = SIMP (typ='R' ,statut='o',defaut=(0.,0.0625,1.E7),max='**',fr="Limites des groupes d'energie"), + DeltaLethargie = SIMP (typ='R' ,statut='o',max='**',fr="Largeur en lethargie des groupes d'energie"), + Sections = FACT (min=1, max='**', statut='o', + TypeSection = SIMP (typ='TXM',fr="Type de section efficace",statut='o', + into=( 'Totale','CorrectionTransport', + 'Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'SectionDiffusionTotale','Transfert')), + Valeurs = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour le reflecteur") + ) + ) ; # Fin SECTIONS_REFLECTEUR +# ---------------------------------------------------------------------------------------------------------------------------------- +# Classe MACROLIB : Classe de definition des sections efficaces multigroupes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MACROLIB = OPER (nom="MACROLIB",sd_prod=Macrolib,op=0,niveau = 'SectionsEfficaces', + fr = "Definition d'une macrolib", + ang = "Macrolib Definition", + Signature = SIMP (typ='TXM',statut='o',defaut="MACROLIB",fr="Signature de l'objet MACROLIB"), + NbMateriaux = SIMP (typ='I' ,statut='o',defaut=1,fr="Nombre de materiaux"), + NomsMateriaux = SIMP (typ='TXM',statut='o',max='**',fr="Noms des materiaux"), + OrdreAnisotropieMax = SIMP (typ='I' ,statut='o',defaut=1,fr="Ordre d'anisotropie"), + MaxIsotopesFissiles = SIMP (typ='I' ,statut='o',fr="Nombre maximum d'isotopes fissiles"), + NbTypesSections = SIMP (typ='I' ,statut='o',fr="Nombre de sections efficaces definies"), + CorrectionTransport = SIMP (typ='TXM',statut='o',defaut='Non',into=('Oui','Non'),fr="Indication de Correction de transport"), + NbGroupesPrecurseurs = SIMP (typ='I' ,statut='o',defaut=6,fr="Nombre de groupes de precurseurs de neutrons retardes"), + NbGroupesEnergie = SIMP (typ='I' ,statut='o',defaut=2,fr="Nombre de groupes d'energie"), + LimitesEnergie = SIMP (typ='R' ,statut='o',defaut=(0.,0.0625,1.E7),max='**',fr="Limites des groupes d'energie"), + DeltaLethargie = SIMP (typ='R' ,statut='o',max='**',fr="Largeur en lethargie des groupes d'energie"), + ListeSections = SIMP (typ='TXM',statut='o',max='**',fr="Liste des sections efficaces decrites dans la Macrolib", + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + ModeEntreeSections = SIMP (typ='TXM',statut='o',defaut='ParGroupe',into=('ParGroupe','ParMilieu'), + fr="Choix du mode d'entree des sections par groupe ou par milieu"), + SectionsParGroupe = BLOC (condition = "ModeEntreeSections=='ParGroupe'", + SectionsG = FACT (min=1, max='**', statut='o', + TypeSectionG = SIMP (typ='TXM',fr="Type de section efficace",statut='o', + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + Groupes = BLOC (condition = "TypeSection=='Transfert'", + NumerosGroupes = SIMP (typ='I',min=2,max=2,statut='o', + fr="Numeros des groupes de depart et d'arrivee")), + Groupe = BLOC (condition = "TypeSection!='Transfert'", + NumeroGroupe = SIMP (typ='I',statut='o',fr="Numero de groupe d'energie")), + BlocAnisotropie = BLOC (condition = "TypeSection=='Transfert' or TypeSection== 'SectionDiffusionTotale'", + OrdreAnisotropie = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de transfert")), + Valeurs = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour tous les materiaux") + ) + ), + SectionsParMateriau = BLOC (condition = "ModeEntreeSections=='ParMateriau'", + Materiau = SIMP (typ='TXM',statut='o',fr="Nom du materiau dont on valorise les sections efficaces"), + SectionsM = FACT (min=1, max='**', statut='o',fr="Entree des valeurs de chaque type de section efficace", + TypeSectionM = SIMP (typ='TXM',fr="Type de section efficace definie",statut='o', + into=('Totale','CorrectionTransport','Spectre','Vitesse', + 'Production','Fission','Energie','Absorption','Capture','N2N', + 'CoefficientDiffusionHomogene','CoefficientsDiffusionOrientes', + 'CoefficientEquivalence','ProductionRetardee','SpectreRetarde', + 'SectionDiffusionTotale','Transfert')), + BlocPasTransfert = BLOC (condition = "TypeSection not in ('Transfert','SectionDiffusionTotale')", + ValeursS = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections efficaces pour tous les groupes")), + BlocDiffusion = BLOC (condition = "TypeSection=='SectionDiffusionTotale'", + OrdreAnisotropieD = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de diffusion totale"), + ValeursD = SIMP (typ='R',min=1,max='**',statut='o', + fr="Valeurs des sections de diffusion totale pour tous les groupes")), + BlocTransfert = BLOC (condition = "TypeSection=='Transfert'", + OrdreAnisotropieT = SIMP (typ='I',statut='o',defaut=1, + fr="Ordre d'anisotropie de la section de transfert"), + ValeursT = NUPL (min=1,max='**',statut='o', + elements=(SIMP (typ='I',min=2,max=2,fr="Groupes de depart et d'arrivee"), + SIMP (typ='R',fr="Valeur de la section de transfert"))) + ) + ) + ) + ) ; # Fin MACROLIB +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ASSEMBLAGE_COMBUSTIBLE_REEL : Classe de definition d'un assemblage combustible reel charge ou decharge d'un coeur REP +# DefautFabrication : Champ texte indicateur precisant si l'assemblage appartient a un lot de fabrication +# ayant un defaut impactant les resultats neutroniques +# CleControle : Donnee fournie par la Division Combustible (Fichier ASN) et calculee a partir du nom de l'assemblage +# IdentificateurInitial : En cas de remplacement de la structure de l'assemblage, ce dernier change de nom +# (donnee transmise par le site) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ASSEMBLAGE_COMBUSTIBLE_REEL = OPER (nom="ASSEMBLAGE_COMBUSTIBLE_REEL",op=0,sd_prod=AssemblageCombustibleReel, + niveau = 'AssemblagesReels', + fr = "Definition d'un assemblage combustible a charger, charge en reacteur, ou decharge en coeur, en piscine ou pour retraitement", + ang = "Definition of a core loaded fuel assembly", + regles = (ENSEMBLE('Identificateur','CampagneResquelettage'), + ENSEMBLE('ProgrammeExperimental','NatureElementExperimental'),), + IdentInitial = SIMP (typ='TXM',statut='o',fr="Code d'identification initial de l'assemblage combustible en cas de resquelettage"), + Identificateur = SIMP (typ='TXM',statut='f',fr="Code d'identification de l'assemblage combustible apres resquelettage"), + CampagneResquelettage = SIMP (typ='I',statut='f',fr="Numero de la campagne de rechargement de l'assemblage resquelette"), + Constructeur = SIMP (typ='TXM',statut='o',into=('FRAMATOME','SIEMENS','ABB','ENUSA','WESTINGHOUSE','CEA','KWU','EXXON','ANF'), + fr="Constructeur de l'assemblage combustible"), + TypeTechnologique = SIMP (typ='TXM',defaut='AFA2GE',statut='o', + into=('ABB-97','AB-DEMOS','AB-LFA','AEF-XL', + 'AFA','AFA-XL','AFA-XL-N4','AFA2G','AFA2GE','AFA2GL','AFA2GLE','AFA3G','AA3GL','AGI','AGI-XL', + 'AKA','ALIX','BM','CEA','DEMONSTRATIONS','ENUSA-LFA','HTP','KWU','X1'), + fr="Type technologique de l'assemblage"), + TypeAssemblage = SIMP (typ=AssemblageType,statut='o',fr="Type de l'assemblage"), + CleControle = SIMP (typ='TXM',statut='o',fr="Cle de controle de l'assemblage"), + Engagement = SIMP (typ='TXM',statut='o',fr="Engagement de l'assemblage"), + NumeroLot = SIMP (typ='I', statut='o',fr="Numero du lot de combustible"), + TypeCombustibleDuLot = SIMP (typ='TXM',statut='f',fr="Type combustible et nom du lot (exemple 'MOX FMO1')"), + U235EnrichissementTheorique = SIMP (typ='R', statut='o',fr="Enrichissement theorique en U235 du combustible en %"), + PuEnrichissementTheorique = SIMP (typ='R', statut='o',fr="Enrichissement theorique en Pu du combustible en %",defaut=0.), + MasseTheoriqueNL = SIMP (typ='R', statut='o',fr="Masse theorique en g des noyaux lourds Z > 89 de l'assemblage"), + MasseInitialeNL = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g des noyaux lourds de l'assemblage a la date de reference"), + U232MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 232",defaut=0.), + U234MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 234",defaut=0.), + U235MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 235",defaut=0.), + U236MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 236",defaut=0.), + U238MasseInitiale = SIMP (typ='R', statut='o',fr="Masse initiale reelle en g d'uranium 238",defaut=0.), + BlocPu = BLOC (condition = "EnrichissementTheoriquePu > 0.", + DateReference = SIMP (typ='I',min=3,max=3,statut='o',fr="Date de reference Jour, Mois, An du lot MOX"), + DatePrevDivergence = SIMP (typ='I',min=3,max=3,statut='o', + fr="Date de divergence previsionnelle de la tranche chargee de cet assemblage MOX"), + DateDivergence = SIMP (typ='I',min=3,max=3,statut='o', + fr="Date de divergence reelle de la tranche chargee de cet assemblage MOX"), + U235EquivEnrichissement = SIMP (typ='R',statut='f',defaut=3.25,fr="Enrichissement en U235 equivalent"), + Pu239MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 239 a la date de reference"), + Pu240MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 240 a la date de reference"), + Pu241MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 241 a la date de reference"), + Pu24MasseInitiale2 = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g de plutonium 242 a la date de reference"), + Am241MasseInitiale = SIMP (typ='R',statut='o',fr="Masse reelle initiale en g d'americium 241 a la date de reference") + ), + AbsorbantFixe = SIMP (typ='TXM',statut='f',fr="Texte caracteristique des absorbants fixes inseres dans l'assemblage"), + DefautFabrication = SIMP (typ='TXM',statut='f',fr="Libelle du defaut de fabrication"), + ProgrammeExperimental = SIMP (typ='TXM',statut='f',fr="Nom du programme experimental s'il s'agit d'un assemblage experimental"), + NatureElementExperimental = SIMP (typ='TXM',statut='f',into=('Combustible','Grille','Structure'),fr="Nature de l'element experimental"), + LocalisationAssemblage = SIMP (typ='TXM',statut='f',into=('BR Coeur','BK Piscine','HAGUE'),fr="Localisation de l'assemblage"), + SituationAdministrative = SIMP (typ='TXM',statut='f',into=('SansParticularite','EnReservePourGestionFuture','EnAttenteReparationExamen', + 'aDispositionDAC','AccordCogema','IndisponibleSurSite'), + fr="Situation administrative de l'assemblage"), + EtatGCN = SIMP (typ='TXM',statut='f',into=('Evacuable 0','En attente 1','Rechargeable 2','PourAccordCogema 3'), + fr="Etat de l'assemblage au sens GCN"), + ContraintesPhysiques = NUPL ( max = '**', + statut = 'f', + elements = ( SIMP (typ='TXM',statut='o',fr="Texte precisant la contrainte", + into=('NonRechargeable','NonSain','aExaminer','aReparer', + 'Repare','aSubiExtraction','aPenaliser','NonInstrumentable','NonGrappable','Resquelette')), + SIMP (typ='TXM',statut='o',fr="Premiere Campagne concernee") + ) + ), + ContraintesNbCycles = NUPL (max = '**', statut = 'f', + fr = "Liste des contraintes en nombre de cycles", + elements = ( SIMP (typ='TXM',statut='o',fr="Texte precisant la contrainte", + into=('NombreDeCyclesSuccessifsImperatif','NombreMaximumDeCycles')), + SIMP (typ='I',statut='o',fr="Nombre de cycles") + ) + ), + Campagnes = NUPL (max = '**', statut = 'o', + fr = "Liste des campagnes d'irradiation subies par l'assemblage et etats correspondants", + elements = ( SIMP (typ='TXM',fr="Identificateur de la campagne"), + SIMP (typ='TXM',fr="Etat de l'assemblage") + ) + ), + BibliothequesNeutroniques = NUPL (statut='f',elements=(SIMP (typ='TXM', + fr="Identificateur de non presence d'absorbants (TBH) ou d'insertion (24B, 12B, 8B, 12P, 12P0P, etc)"), + SIMP (typ='TXM',fr="Nom du fichier de la bibliotheque neutronique associee")) + ), + TypeDescriptionCalcul = SIMP (typ='TXM',statut='f',defaut='HomogeneAssemblage',into=('HomogeneAssemblage','ParCrayon')), + OxMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe x de l'assemblage"), + OyMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe y de l'assemblage"), + OzMaillageIrradiation = SIMP (typ=Maillage1D,statut='f',fr="Maillage suivant l'axe z de l'assemblage, Origine en bas de la zone active"), + IrradiationHomogene = FACT (max='**',statut='f',fr="Taux d'irradiation pseudo-experimentale de l'assemblage", + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + IrradiationCycle = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage lors du cycle en cours"), + Irradiations = SIMP (typ='R', max='**', statut='o', fr="Irradiations des mailles (MWj/t) (en partant du bas et a gauche et par plan)") + ), + IrradiationCrayon = FACT (max='**',statut='f',fr="Taux d'irradiation pseudo-experimentale des crayons de l'assemblage", + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + Irradiations = SIMP (typ='R', max='**', statut='o', fr="Irradiations des crayons (MWj/t) (en partant du bas et a gauche et par plan)") + ), + FluenceHomogene = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + FluenceMoyenne = SIMP (typ='R', statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Fluences = SIMP (typ='R', max='**', statut='o', fr="Fluences des mailles (n/kb) (en partant du bas et a gauche et par plan)") + ), + FluenceCrayon = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R', statut='o', fr="Temps d'irradiation en s de l'assemblage"), + FluenceMoyenne = SIMP (typ='R', statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Fluences = SIMP (typ='R', max='**', statut='o', fr="Fluences des crayons (n/kb) (en partant du bas et a gauche et par plan)") + ), + CompositionHomogene = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb de l'assemblage"), + Isotopes = SIMP (typ='TXM', statut='o', max='**',fr="Liste des noms des isotopes"), + Concentrations = SIMP (typ='R' , statut='o', max='**', + fr="Concentrations des isotopes pour chaque maille radiale et pour chaque plan axial") + ), + CompositionCrayon = FACT (max='**',statut='f', + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s de l'assemblage"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t de l'assemblage"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Isotopes = SIMP (typ='TXM', statut='o', max='**',fr="Liste des noms des isotopes"), + Concentrations = SIMP (typ='R' , statut='o', max='**', + fr="Concentrations des isotopes pour chaque crayon et pour chaque plan axial (du bas vers le haut)") + ) + ) ; # Fin ASSEMBLAGE_COMBUSTIBLE_REEL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe REPARATION_ASSEMBLAGE : Classe de definition des donnees de reparation d'un assemblage +# Donnee de l'assemblage a reparer et des crayons de remplacement +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +REPARATION_ASSEMBLAGE = OPER (nom="REPARATION_ASSEMBLAGE", op=0, sd_prod=ReparationAssemblage, niveau = 'AssemblagesReels', + fr = "Donnee de reparation ou de restauration d'un assemblage", + ang = "Data for an assembly repair", + AssemblageInitial = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o',fr="Type de l'assemblage a reparer"), + IrradiationMoyenne = SIMP (typ='R',statut='o',fr="Taux d'irradiation moyenne MWj/t de l'assemblage a reparer"), + CrayonRemplacement = FACT (max='**',statut='o', + Position = SIMP (typ='I', min=2, max=2, statut='o', fr="Coordonnees x,y du crayon a remplacer dans l'assemblage"), + CelluleRemplacement = SIMP (typ=Cellule, statut='o', fr="Cellule de remplacement") + ) + ) ; # Fin REPARATION_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PENALITE_ASSEMBLAGE : Classe de definition des penalites a appliquer aux puissances des crayons d'un assemblage +# Trois possibilites : 1) de maniere uniforme +# 2) a quelques crayons +# 3) a l'ensemble des crayons et en fonction du taux d'irradiation de l'assemblage +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PENALITE_ASSEMBLAGE = OPER (nom="PENALITE_ASSEMBLAGE", op=0, sd_prod=PenaliteAssemblage, niveau = 'AssemblagesReels', + fr = "Penalites dues a la reparation ou a la restauration d'un assemblage", + ang = "Penalties applied to a repaired assembly", + Assemblage = SIMP (typ=(AssemblageType,AssemblageCombustibleReel),statut='o',fr="Type de l'assemblage concerne par les penalites"), + regles = (UN_PARMI('UniformeDeltaP', 'CrayonDeltaP','CarteDeltaP'),), + UniformeDeltaP = SIMP (typ='R', statut='f', fr="Penalite en % a appliquer de maniere uniforme sur l'assemblage"), + CrayonDeltaP = FACT (statut='f',fr="Liste des penalites pour une liste particuliere de crayons d'un assemblage", + Crayons = SIMP (typ='I', statut='o', max='**', fr="Numeros des crayons de l'assemblage"), + DeltaP = SIMP (typ='R', statut='o', max='**', fr="Penalites en % a appliquer aux crayons listes")), + CarteDeltaP = FACT (max='**',statut='f',fr="Penalites pour l'ensemble des crayons de l'assemblage", + BuMoyen = SIMP (typ='R', statut='o',fr="Taux d'irradiation MWj/t de l'assemblage a reparer"), + DeltaP = SIMP (typ='R', statut='o', max='**', fr="Pourcentage de variation de puissance par crayon en %")) +) ; # Fin PENALITE_ASSEMBLAGE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_GLOBAUX_COEUR : Classe de stockage des resultats globaux du coeur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTATS_GLOBAUX_COEUR = OPER (nom="RESULTATS_GLOBAUX_COEUR", op=0, sd_prod=ResultatsGlobauxCoeur, niveau = 'Resultats', + fr = "Resultats globaux du calcul de coeur", + ang = "Global Core Calculation Results", + ResultatsCoeur = FACT (max='**',statut='o',fr="Resultats globaux du calcul de coeur calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', max='**', fr="Configuration du coeur : Liste des groupes ou grappes inseres"), + PasInsertion = SIMP (typ='I' , statut='o', max='**', fr="Niveau d'insertion des groupes ou grappes inseres en nombre de pas extraits"), + IndiceConvergence = SIMP (typ='I' , statut='o', fr="Indice de convergence du calcul"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + NiveauPuissance = SIMP (typ='R' , statut='o', fr="Niveau de puissance du calcul en %"), + TypeDeCalcul = SIMP (typ='TXM', statut='o', fr="Type de calcul de coeur Critique ou non"), + ParametreCritique = SIMP (typ='TXM', statut='o', fr="Parametre critique du calcul de coeur"), + TitreBore = SIMP (typ='R' , statut='o', fr="Titre en bore soluble du calcul de coeur en ppm"), + EfficaciteBore = SIMP (typ='R' , statut='o', fr="Efficacite differentielle du bore soluble pcm/ppm"), + Reactivite = SIMP (typ='R' , statut='o', fr="Reactivite du calcul en pcm"), + B2AxialRapide = SIMP (typ='R' , statut='o', fr="Laplacien axial rapide en cm-2"), + B2AxialThermique = SIMP (typ='R' , statut='o', fr="Laplacien axial thermique en cm-2"), + XeAntireactivite = SIMP (typ='R' , statut='o', fr="Antireactivite du xenon en pcm"), + FxyAssemblage = SIMP (typ='R' , statut='o', fr="Fxy Assemblage"), + DopplerCoefficient = SIMP (typ='R' , statut='o', fr="Coefficient Doppler en pcm/C"), + CTModerateur = SIMP (typ='R' , statut='o', fr="Coefficient Temperature moderateur en pcm/C"), + DopplerPuissance = SIMP (typ='R' , statut='o', fr="Coefficient Puissance Doppler seul en pcm/%P"), + CoeffPuissance = SIMP (typ='R' , statut='o', fr="Coefficient Puissance en pcm/%P"), + EfficDiffGrappes = SIMP (typ='R' , statut='f', max='**', + fr="Efficacites differentielles des grappes inserees, Couples de valeurs (Insertion,Efficacite differentielle)"), + Bite = SIMP (typ='R' , statut='f', fr="Position du bite en cours d'evolution, en nombre de pas extraits"), + RMBM = SIMP (typ='R' , statut='f', fr="Position Milieu de la bande de manoeuvre du groupe R, en nombre de pas extraits"), + FxyCrayon = SIMP (typ='R' , statut='f', fr="Fxy Crayon (apres factorisation eventuelle)"), + AssemblageChaud = SIMP (typ='R' , statut='f', fr="Assemblage portant le crayon chaud"), + LotAssemblageChaud = SIMP (typ='I' , statut='f', fr="Lot de l'assemblage portant le crayon chaud"), + NumeroCrayonChaud = SIMP (typ='I' , statut='f', fr="Numero du crayon chaud dans l'assemblage chaud"), + TmEntreeCoeur = SIMP (typ='R' , statut='o', fr="Temperature entree coeur en Celsius"), + TmMoyenneCuve = SIMP (typ='R' , statut='o', fr="Temperature moyenne cuve en Celsius"), + PressionEntreeCoeur = SIMP (typ='R' , statut='o', fr="Pression entree coeur en bars"), + PressionSortieCoeur = SIMP (typ='R' , statut='o', fr="Pression sortie coeur en bars"), + AOCoeur = SIMP (typ='R' , statut='o', fr="Axial Offset Coeur en %"), + DeltaICoeur = SIMP (typ='R' , statut='o', fr="Desequilibre Axial Coeur"), + AOXenon = SIMP (typ='R' , statut='o', fr="Axial Offset Xenon Coeur en %"), + AOIode = SIMP (typ='R' , statut='o', fr="Axial Offset Iode Coeur en %"), + FzCoeur = SIMP (typ='R' , statut='o', fr="Fz Coeur"), + FDH = SIMP (typ='R' , statut='o', fr="Facteur d'elevation d'enthalpie Coeur"), + FQ = SIMP (typ='R' , statut='o', fr="Facteur de point chaud Coeur Fq"), + FQCote = SIMP (typ='R' , statut='o', fr="Cote du Facteur de point chaud Coeur Fq"), + FQAssemblage = SIMP (typ='R' , statut='o', fr="Repere de l'assemblage portant le facteur de point chaud Fq"), + FQCrayon = SIMP (typ='R' , statut='o', fr="Numero de crayon de l'assemblage portant le facteur de point chaud Fq"), + FQLot = SIMP (typ='R' , statut='o', fr="Numero de lot de l'assemblage portant le facteur de point chaud Fq"), + TiltRadial4 = SIMP (typ='R' , statut='o', fr="Desequilibre radial par quart de coeur NE, NO, SO, SE", min=4,max=4), + TiltRadial8 = SIMP (typ='R' , statut='o', + fr="Desequilibre radial par huitieme de coeur, Origine en Ox et sens trigonometrique", min=8,max=8), + BetaTotal = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta total Coeur"), + BetaEffTotal = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta effectif total Coeur"), + ImportanceTotale = SIMP (typ='R' , statut='f', fr="Importance totale Coeur"), + TempsViePrompt = SIMP (typ='R' , statut='f', fr="Temps de vie effectif des neutrons prompts"), + ProductionU5 = SIMP (typ='R' , statut='f', fr="Contribution U235 a la production totale nuSf"), + ProductionU8 = SIMP (typ='R' , statut='f', fr="Contribution U238 a la production totale nuSf"), + ProductionPu = SIMP (typ='R' , statut='f', fr="Contribution Pu9+Pu0+Pu1+Pu2 a la production totale nuSf"), + Lambdai = SIMP (typ='R' , statut='f', fr="Constantes de decroissance moyennes des 6 groupes de precurseurs", min=6,max=6), + Betai = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta i des 6 groupes de precurseurs", min=6,max=6), + BetaiEff = SIMP (typ='R' , statut='f', fr="Contribution des neutrons retardes Beta i effectif des 6 groupes de precurseurs", min=6,max=6), + RoNordheim = FACT (statut='f', fr="Reactivite en fct du temps de doublement par la relation de Nordheim", + Temps = SIMP (typ='R', statut='o', max='**', fr="Liste des temps de doublement en s"), + Ro = SIMP (typ='R', statut='o', max='**', fr="Liste des reactivites correspondantes en pcm")) + ) +) ; # Fin RESULTATS_GLOBAUX_COEUR +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_FLUX : Classe de stockage des resultats de flux et des courants (a revoir pour ces derniers) +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_FLUX = OPER (nom="RESULTAT_FLUX", op=0, sd_prod=ResultatFlux, niveau = 'Resultats', + fr = "Distributions de flux moyens et de courants", + ang = "Average Flux and current distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages edites"), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de mailles axiales par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition"), + NbGroupes = SIMP (typ='I' , statut='o', fr="Nombre de groupes d'energie"), + NbFluxBord = SIMP (typ='I' , statut='o', fr="Nombre de flux au bord par assemblage et par groupe d'energie"), + NbCourant = SIMP (typ='I' , statut='o', fr="Nombre de courants par assemblage et par groupe d'energie"), + Flux = FACT (max='**',statut='o',fr="Flux calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Flux moyens par assemblage (en partant du bas a gauche) et par groupe") + ), + FluxBord = FACT (max='**',statut='f',fr="Flux moyens au bord des assemblages calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Flux moyens au bord par assemblage (en partant du bas a gauche) et par groupe") + ), + Courant = FACT (max='**',statut='f',fr="Courants calcules a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Courants detailles par assemblage (en partant du bas a gauche) et par groupe") + ) + ) ; # Fin RESULTAT_FLUX +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_PUISSANCES : Classe de stockage des resultats de puissance +# L'edition se fait sur les mailles actives du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_PUISSANCES = OPER (nom="RESULTAT_PUISSANCES", op=0, sd_prod=ResultatPuissances, niveau = 'Resultats', + fr = "Distribution de puissance", + ang = "Power distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages edites"), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de mailles axiales par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition"), + Puissances = FACT (max='**',statut='o',fr="Puissances calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Puissances (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_PUISSANCES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_RADIAL : Classe de stockage des resultats integres sur une zone axiale particuliere (par defaut, toute la zone active) +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_RADIAL = OPER (nom="RESULTAT_RADIAL", op=0, sd_prod=ResultatRadial, niveau = 'Resultats', + fr = "Distribution radiale 2D apres integration axiale d'un type de resultat", + ang = "Radial Result Distribution", + TypeResultat = SIMP (typ='TXM', statut='o', into=('Puissance','Flux','Activite','Irradiation','IrradiationGradient4','Importance', + 'FDHmax','FDHcrayon','TauxReaction','TauxReactionParGroupe','SectionEfficace', + 'SectionEfficaceParGroupe','Kinf','AntireactiviteXenon','AntireactiviteIode', + 'AOPuissance','Tc','TcMax','Tm','TmMax','RoModerateur','Tgaine'), + fr="Type de resultat"), +# BlocGroupe = BLOC (condition = "TypeResultat in ['Flux','TauxReactionParGroupe','SectionEfficaceParGroupe']", + NumeroGroupe = SIMP (typ='I' , statut='o', max=2, fr="Numeros de groupe d'energie associes"), +# ), +# BlocSection = BLOC (condition = "TypeResultat in ['SectionEfficaceParGroupe','TauxReactionParGroupe','SectionEfficace','TauxReaction']", + TypeSection = SIMP (typ='TXM' , statut='o', fr="Type de section concerne"), +# ), + CotesAxiales = SIMP (typ='R', statut='f', min=2,max=2, fr="Cotes axiales de la zone moyennee"), + Radial = FACT (max='**',statut='o',fr="Distribution radiale 2D calculee a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ=('R','I'), statut='o', max='**', + fr="Valeurs (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_RADIAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_AXIAL : Classe de stockage des resultats moyennes axialement sur l'ensemble du reseau combustible +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_AXIAL = OPER (nom="RESULTAT_AXIAL", op=0, sd_prod=ResultatAxial, niveau = 'Resultats', + fr = "Distribution axiale moyenne coeur", + ang = "Average Core Axial Distribution", + OzNbValeurs = SIMP (typ='I', statut='o', fr="Nombre de mailles axiales"), + OzMaillage = SIMP (typ=Maillage1D, statut='o', fr="Maillage axial d'edition"), + TypeResultat = SIMP (typ='TXM', statut='o', into=('Puissance','Flux','Xenon','Iode','Courant','Fxy(z)','Q(z)'), fr="Type de resultat"), + BlocGroupe = BLOC (condition = "TypeResultat in ('Flux','Courant')", + NumeroGroupe = SIMP (typ='I' , statut='o', fr="Numero de groupe d'energie")), + Axial = FACT (max='**',statut='o',fr="Distribution axiale a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Distribution axiale moyenne (en partant du bas)") + ) + ) ; # Fin RESULTAT_AXIAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_IRRADIATIONS : Classe de stockage des resultats de taux d'irradiation +# L'edition se fait sur les mailles du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_IRRADIATIONS = OPER (nom="RESULTAT_IRRADIATIONS", op=0, sd_prod=ResultatIrradiations, niveau = 'Resultats', + fr = "Distribution de taux d'irradiation", + ang = "Burnup distributions", + NbAssemblages = SIMP (typ='I', statut='o', fr="Nombre d'assemblages"), + OzNbValeurs = SIMP (typ='I', statut='o', fr="Nombre de valeurs d'irradiation par assemblage"), + OzMaillage = SIMP (typ=Maillage1D, statut='o', fr="Maillage axial d'edition des irradiations"), + Gradient = SIMP (typ='I', statut='o', defaut=4, fr="Nombre de valeurs d'irradiation par assemblage"), + Irradiation = FACT (max='**',statut='o',fr="Irradiations calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Irradiations (en partant du bas a gauche) par assemblage") + ) +) ; # Fin RESULTAT_IRRADIATIONS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTAT_ACTIVITES : Classe de stockage des resultats d'activite au centre des assemblages instrumentes +# L'edition se fait sur une liste particuliere d'assemblages du reseau associe a l'etude (PlanChargement) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTAT_ACTIVITES = OPER (nom="RESULTAT_ACTIVITES", op=0, sd_prod=ResultatActivites, niveau = 'Resultats', + fr = "Distributions d'activite des detecteurs", + ang = "Detector Activity distributions", + NbAssemblages = SIMP (typ='I' , statut='o', fr="Nombre d'assemblages dont on fournit l'activite calculee"), + ReperesAssemblages = SIMP (typ='TXM' , statut='o', fr="Reperes des assemblages dont on fournit l'activite", max='**'), + OzNbValeurs = SIMP (typ='I' , statut='o', fr="Nombre de valeurs d'activite par assemblage"), + OzMaillage = SIMP (typ=Maillage1D , statut='o', fr="Maillage axial d'edition des activites"), + CarteActivite = FACT (max='**' , statut='o',fr="Activites calculees a un instant et pour une configuration donnee", + Configuration = SIMP (typ='TXM', statut='o', fr="Configuration du coeur ou de l'assemblage"), + TempsIrradiation = SIMP (typ='R' , statut='o', fr="Temps d'irradiation en s"), + IrradiationMoyenne = SIMP (typ='R' , statut='o', fr="Irradiation moyenne MWj/t"), + FluenceMoyenne = SIMP (typ='R' , statut='o', fr="Fluence moyenne n/kb"), + Valeurs = SIMP (typ='R' , statut='o', max='**', + fr="Activites par assemblage (en partant du bas) dans l'ordre de la liste fournie des assemblages") + ) +) ; # Fin RESULTAT_ACTIVITES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACTIVITES_EXPERIMENTALES : Classe de stockage des cartes d'activite mesuree au centre des assemblages instrumentes +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACTIVITES_EXPERIMENTALES = OPER (nom="ACTIVITES_EXPERIMENTALES", op=0, sd_prod=ActivitesExperimentales, niveau = 'ResultatsExperimentaux', + fr = "Distributions experimentales d'activite mesuree dans les detecteurs mobiles", + ang = "Measured Detector Activity distributions", + CaracteristiquesCarte = FACT (statut='o',fr="Caracteristiques de la carte d'Activite mesurees", + Site = SIMP (typ=SiteNucleaire, statut='o', fr="Site nucleaire de realisation de la carte de flux"), + Tranche = SIMP (typ='I', statut='o', fr="Numero de la tranche nucleaire"), + Campagne = SIMP (typ='I', statut='o', fr="Numero de la campagne d'irradiation"), + IrradiationMoyenne = SIMP (typ='R', statut='o', fr="Irradiation moyenne MWj/t au debut de la carte"), + TitreBoreSoluble = SIMP (typ='I', statut='o', fr="Titre en ppm en bore soluble du moderateur"), + EnergieProduite = SIMP (typ='R', statut='o', fr="Energie produite en MWh"), + NumeroCarte = SIMP (typ='I', statut='o', fr="Numero de la carte de flux"), + ValiditeCarte = SIMP (typ='TXM', statut='o', into=('Oui','Non'),fr="Validite ou non de la carte de flux"), + DateHeureCarte = SIMP (typ='I', min=5, max=5, statut='o', fr="Date (Jour Mois An) et heure (Heure Minute)de realisation de la carte de flux"), + PuissanceElectrique = SIMP (typ='R', statut='o', fr="Puissance electrique MW au debut de la carte de flux"), + PuissanceRelative = SIMP (typ='R', statut='o', fr="Puissance relative % au debut de la carte de flux"), + ModePilotage = SIMP (typ='TXM', statut='o', fr="Mode de pilotage du reacteur"), + GroupesInseres = SIMP (typ='TXM', statut='f', fr="Groupes inseres dans le coeur"), + PositionsGroupes = SIMP (typ='I' , statut='f', fr="Positions des groupes inseres dans le coeur en nb de pas extraits"), + NbPointsAxiaux = SIMP (typ='I' , statut='o', fr="Nombre de points mesures par trace axiale"), + NbPasses = SIMP (typ='I' , statut='o', fr="Nombre de passes de mesures"), + NbTracesAxiales = SIMP (typ='I' , statut='o', fr="Nombre de traces axiales d'activite mesuree"), + NbThermocouples = SIMP (typ='I' , statut='o', fr="Nombre de thermocouples"), + ReperesThermocouples = SIMP (typ='TXM', statut='f', max='**', fr="Reperes des thermocouples dans le coeur"), + NumerosThermocouples = SIMP (typ='I' , statut='f', max='**', fr="Numeros des thermocouples dans le coeur") + ), + ActivitesAxiales = FACT (statut='o',max='**',fr="Trace axiale d'activite mesuree", + RepereAssemblage = SIMP (typ='TXM', statut='o', fr="Repere de l'assemblage instrumente"), + HeureDeMesure = SIMP (typ='I', min=5, max=5, statut='o', fr="Date (Jour Mois An) et heure (Heure Minute)de realisation de la carte de flux"), + NumeroDetecteur = SIMP (typ='I', statut='o', fr="Numero du detecteur de mesure"), + NumeroFourreau = SIMP (typ='I', statut='o', fr="Numero de fourreau de mesure"), + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + PuissanceThermique = SIMP (typ='R', statut='o', fr="Puissance thermique MWth au moment de la passe"), + ValeursActivites = SIMP (typ='R', statut='o', max='**', + fr="Trace d'activite dans l'assemblage (en partant du bas)"), + ), + ChambresExternes = FACT (statut='f',max='**',fr="Courants mesures dans les chambres externes", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + Courants = SIMP (typ='R', statut='o', max= '**', fr="Valeurs des courants mesures") + ), + Thermohydraulique = FACT (statut='f',max='**',fr="Temperatures et pressions mesurees dans les boucles primaires", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + TemperatureEntree = SIMP (typ='R', statut='o', min=3,max= 4, fr="Valeurs des temperatures mesurees en entree des boucles"), + TemperatureSortie = SIMP (typ='R', statut='o', min=3,max= 4, fr="Valeurs des temperatures mesurees en sortie des boucles"), + DeltaTemperature = SIMP (typ='R', statut='o', min=3,max= 4, fr="Ecarts de temperature mesurees sur les boucles"), + IndiceFctBoucles = SIMP (typ='I', statut='o', min=3,max= 4, fr="Indices de fonctionnement des boucles") + ), + Thermocouples = FACT (statut='f',max='**',fr="Temperatures mesurees par les thermocouples", + NumeroPasse = SIMP (typ='I', statut='o', fr="Numero de la passe de mesure"), + Temperature = SIMP (typ='R', statut='o', max= '**', fr="Temperatures mesurees par les thermocouples") + ) + ) ; # Fin ACTIVITES_EXPERIMENTALES +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_ETUDE : Classe de definition des resultats d'une etude +# Regroupement des resultats d'une etude en fonction des donnees +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +RESULTATS_ETUDE = OPER (nom="RESULTATS_ETUDE", op=0, sd_prod=ResultatsEtude, niveau = 'Resultats', + fr = "Resultats de tous les cas d'une etude", + ang = "Cases and associated Results", + Resultats = FACT (statut='o',max='**', + Donnees = SIMP (typ=DonneesCasEtude ,statut='o',fr="Objet DonneesGeneralesEtude auquel sont associes les objets resultats "), + Sections = SIMP (typ=Macrolib ,statut='f',max='**',fr="Liste des Objets Sections issus du calcul"), + Flux = SIMP (typ=ResultatFlux ,statut='f',max='**',fr="Liste des Objets Flux issus du calcul"), + Puissances = SIMP (typ=ResultatPuissances ,statut='f',max='**',fr="Liste des Objets Puissances"), + Activites = SIMP (typ=ResultatActivites ,statut='f',max='**',fr="Liste des Objets Activites"), + Irradiations = SIMP (typ=ResultatIrradiations ,statut='f',max='**',fr="Liste des Objets Irradiations"), + ResultatsGlobaux = SIMP (typ=ResultatsGlobauxCoeur ,statut='f',max='**',fr="Liste des Objets contenant les resultats globaux"), + ResultatsAxiaux = SIMP (typ=ResultatAxial ,statut='f',max='**',fr="Liste des Objets contenant les resultats axiaux"), + ResultatsRadiaux = SIMP (typ=ResultatRadial ,statut='f',max='**',fr="Liste des Objets contenant les resultats radiaux"), + Accidents = SIMP (typ=AccidentsResultats,statut='f', fr="Resultats des calculs d'accidents"), + Gestion = SIMP (typ=ResultatsCalculGestion,statut='f',max='**',fr="Liste des Objets contenant les resultats de calcul de gestion") + ) + ) ; # Fin RESULTATS_ETUDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DICTIONNAIRE_CAS_ETUDE : Classe de definition de l'ensemble des resultats d'une etude +# Regroupement des resultats d'une etude en fonction des donnees +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DICTIONNAIRE_CAS_ETUDE = OPER (nom="DICTIONNAIRE_CAS_ETUDE", op=0, sd_prod=DictionnaireCasEtude, niveau = 'EtudeGenerale', + fr = "Dictionnaire des resultats de tous les cas d'une etude", + ang = "Cases and associated Results dictionary", + AssociationDonneesResultats = FACT (statut='o',max='**', + Donnees = SIMP (typ=DonneesCasEtude,statut='o',fr="Objet DonneesGeneralesEtude auquel sont associes les objets resultats"), + Resultats = SIMP (typ=ResultatsEtude,statut='o',max='**',fr="Liste des Objets regroupement des resultats") + ) + ) ; # Fin DICTIONNAIRE_CAS_ETUDE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PROLONGATION_CAMPAGNE : Classe de definition des donnees de prolongation de campagne +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PROLONGATION_CAMPAGNE = OPER (nom="PROLONGATION_CAMPAGNE", op=0, sd_prod=ProlongationCampagne, niveau = 'DonneesPilotage', + fr = "Donnees de la prolongation de campagne ", + ang = "Stretch out Data", + NbPas = SIMP (typ='I',statut='o',fr="Nombre d'instants (en JEPP) descriptifs de la prolongation de campagne"), + Jepp = SIMP (typ='R',statut='o',max='**',fr="Instants descriptifs de la prolongation de campagne, en JEPP"), + Puissance = SIMP (typ='R',statut='o',max='**',fr="Niveaux de puissance % correspondant aux Jepp de la prolongation de campagne"), + Temperature = SIMP (typ='R',statut='o',max='**',fr="Temperatures Moderateur (Celsius) correspondant aux Jepp de la prolongation de campagne"), + PositionRegulation = SIMP (typ='R',statut='o',defaut=221.,fr="Position du groupe de regulation en nombre de pas extraits") + ) ; # Fin PROLONGATION_CAMPAGNE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_PILOTAGE_GENERAL : Classe de definition des donnees de pilotage general du reacteur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_PILOTAGE_GENERAL = OPER (nom="DONNEES_PILOTAGE_GENERAL", op=0, sd_prod=DonneesPilotageGeneral, niveau = 'DonneesPilotage', + fr = "Donnees generales de pilotage du reacteur ", + ang = "General Reactor Control Data", + RegulationGroupe = SIMP (typ='TXM',statut='o',defaut='R' ,fr="Nom symbolique du groupe de regulation"), + PnomDdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=180.,fr="Limite d'insertion R a Pnom DDC en nombre de pas extraits"), + PnomFdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=180.,fr="Limite d'insertion R a Pnom FDC en nombre de pas extraits"), + PnulDdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=195.,fr="Limite d'insertion R a Pnul DDC en nombre de pas extraits"), + PnulFdcLimitInsR = SIMP (typ='R' ,statut='o',defaut=195.,fr="Limite d'insertion R a Pnul FDC en nombre de pas extraits"), + PuissanceGroupes = SIMP (typ='TXM',statut='o',max='**',defaut=('G1','G2','N1','N2'),fr="Liste ordonnee des noms symboliques des groupes de compensation de puissance"), + Recouvrement = SIMP (typ='I' ,statut='o',max='**',defaut=(100,90,90), + fr="Liste ordonnee des valeurs de recouvrement des groupes de compensation de puissance, en nombre de pas d'insertion"), + BiteDefinition = SIMP (typ='R' ,statut='o',defaut=-2.5, + fr="Efficacite differentielle minimale de la regulation donnant la definition du bite, en pcm/pas"), + BiteFDCPosition = SIMP (typ='I' ,statut='o',defaut=225., fr="Position imposee du bite en FDC, en nombre de pas extraits"), + BiteLimiteBasse = SIMP (typ='I' ,statut='o',defaut=207., fr="Position limite basse du bite, en nombre de pas extraits"), + GrappeExtraite = SIMP (typ='R' ,statut='o',defaut=225., fr="Position Grappe extraite en nombre de pas extraits"), + GrappeInseree = SIMP (typ='R' ,statut='o',defaut=5., fr="Position Grappe inseree en nombre de pas extraits"), + PositionR1ereDiverg = SIMP (typ='R' ,statut='o',defaut=170., fr="Position du groupe de Regulation R a la 1ere divergence"), + BandeManoeuvre = SIMP (typ='R' ,statut='o',defaut=24., fr="Largeur de la bande de manoeuvre du groupe de Regulation R"), + ConfigModeA = SIMP (typ='TXM',statut='o',defaut=('D','CD','BCD','ABCD'),max='**', fr="Configuration des groupes en mode A"), + ConfigModeG = SIMP (typ='TXM',statut='o',defaut=('G1','G1G2','G1G2N1','G1G2N1N2','R','RG1','RG1G2','RG1G2N1','RG1G2N1N2'), + max='**', fr="Configuration des groupes en mode G"), + LimiteDomaineFct = SIMP (typ='I',statut='o',defaut=0.05,fr="Limite du domaine de fonctionnement"), + NbPtsSpin = SIMP (typ='I',statut='o',defaut=31,fr="Nombre de points SPIN"), + SeuilDnbrs = FACT (statut='o',fr="Seuil DNBRS", + PtsSpin = SIMP (typ='I',max='**',statut='o',fr="Liste des points Spin"), + Seuils = SIMP (typ='R',max='**',statut='o',fr="Liste des seuils DNBRS")), + CritereDNBRL = SIMP (typ='R',statut='o', fr="Critere sur le REC"), + AlarmeBasDnbr = SIMP (typ='R',statut='o',defaut=2.03, fr="Alarme Bas DNBR"), + CsteCalibrage = SIMP (typ='R',statut='o',defaut=-0.492, fr="Constante A de calibrage des grappes SPIN"), + DebitCalibrage = SIMP (typ='R',statut='o',defaut=99507., fr="Debit QCAL de calibrage de la puissance SPIN, m3/h"), + ConfigEpsilon = SIMP (typ='TXM',statut='o',defaut=('TBH','R','RG1','RG1G2','RG1G2N1','G1G2N1','G1G2','G1'), + max='**', fr="Configurations pour le calcul des epsilon(z)"), + IrradEpsilon = SIMP (typ='R',statut='o',defaut=(150.,20000.),max='**',fr="Irradiations MWj/t du calcul des epsilon(z)") + ) ; # Fin DONNEES_PILOTAGE_GENERAL +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_AJUSTEMENT : Classe de definition des donnees d'ajustement des parametres de calcul +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_AJUSTEMENT = OPER (nom="DONNEES_AJUSTEMENT", op=0, sd_prod=DonneesAjustement, niveau = 'DonneesEtude', + fr = "Donnees generales d'ajustement", + ang = "Adjustment Data", + PnomReactivite = SIMP (typ='R',statut='o',defaut=0.,fr="Facteur additif correctif de la reactivite du coeur a Pnom, en pcm"), + PnulReactivite = SIMP (typ='R',statut='o',defaut=0.,fr="Facteur additif correctif de la reactivite du coeur a Pnul, en pcm"), + SectionsBore = SIMP (typ='R',statut='o',defaut=1.,fr="Facteur multiplicatif correctif des sections du bore soluble du moderateur"), + AlphaIsotherme = SIMP (typ='R',statut='o',defaut=3.,fr="Facteur additif correctif du coefficient de temperature isotherme en pcm/C"), + Grappes = NUPL (max = '**', statut = 'f', + fr = "Liste des ajustements associes aux types de grappes de controle", + elements = (SIMP (typ='TXM',statut='o',fr="Type de grappe 0P 24B 8B 12B etc."), + SIMP (typ='R' ,statut='o',max='**', + fr="Coefficients multiplicatifs des sections d'absorption pour tous les groupes d'energie"))), + Configurations = NUPL (max = '**', statut = 'f', + fr = "Liste des ajustements associes aux configurations de groupes de grappes de controle", + elements = (SIMP (typ='TXM',statut='o',fr="Nom de la configuration"), + SIMP (typ='R' ,statut='o',max='**', + fr="Coefficient multiplicatif de l'efficacites de la configuration"))), + Samarium = NUPL (max = '**', statut = 'f', + fr = "Liste des couples (Irradiation, Correction Reactivite due au samarium)", + elements = (SIMP (typ='R',statut='o',fr="Taux d'irradiation en MWj/t"), + SIMP (typ='R',statut='o',fr="Correction de reactivite en pcm au taux d'irradiation precedent"))) + ) ; # Fin DONNEES_AJUSTEMENT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_DILUTION : Classe de definition des donnees du calcul d'accident de dilution +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_DILUTION = OPER (nom="ACCIDENT_DILUTION", op=0, sd_prod=AccidentDilution, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de dilution", + ang = "Data for dilution accident simulation", + ConfigArretChaud = SIMP (typ='TXM',statut='o',defaut=('R','G1','G2','N1','N2'),max='**', + fr="Liste des groupes de grappes de la configuration a l'arret a chaud"), + ConfigArretFroid = SIMP (typ='TXM',statut='o',defaut=('G1','G2','N1','N2'),max='**', + fr="Liste des groupes de grappes de la configuration a l'arret a froid"), + ConfigFroidDepassement = SIMP (typ='TXM',statut='o',defaut=('G1','N1','N2'),max='**', + fr="Liste des groupes de la configuration a l'arret a froid en cas de depassement du delai"), + ConfigChaudDepassement = SIMP (typ='TXM',statut='o',defaut=('R','G1','N1','N2'),max='**', + fr="Liste des groupes de la configuration a l'arret a chaud en cas de depassement du delai"), + IrradDepassement = SIMP (typ='TXM',statut='o',max='**', fr="Liste des irradiations de calcul en cas de depassement du delai"), + SousCriticiteArret = SIMP (typ='R',statut='o', defaut=1000., fr="Sous-criticite a l'arret en pcm"), + CbDilutionCorrection = SIMP (typ='R',statut='o', defaut=100. , fr="Correction du titre en bore de dilution, en ppm"), + EfficaciteGrappesCorrection = SIMP (typ='R',statut='o', defaut=10. , fr="Correction de l'efficacite des grappes en %"), + DefautPuissanceCorrection = SIMP (typ='R',statut='o', defaut=10. , fr="Correction du defaut de puissance en %"), + DecalageGroupes = SIMP (typ='R',statut='o', defaut=10. , fr="Decalage des groupes, en nombre de pas extraits"), + PerteEfficacite = SIMP (typ='R',statut='o', defaut=1. , fr="Perte d'efficacite par pas des groupes, en pcm/pas"), + PmaxChaud = SIMP (typ='R',statut='o', defaut=35. , fr="Puissance relative maximum en dilution a chaud, en %"), + DebitChaud = SIMP (typ='R',statut='o', defaut=31. , fr="Debit de dilution a chaud en m3/h"), + DebitFroid = SIMP (typ='R',statut='o', defaut=31. , fr="Debit de dilution a froid en m3/h"), + DebitDilution = SIMP (typ='R',statut='o', defaut=60. , fr="Debit de dilution en puissance en m3/h"), + RoEauRCV = SIMP (typ='R',statut='o', defaut=1. , fr="Masse volumique de l'eau du ballon RCV en g/cm3"), + CRNFroid = SIMP (typ='R',statut='o', defaut=250. , fr="Effet des CRN en dilution a froid en pcm"), + TiltFroidMn = SIMP (typ='R',statut='o', defaut=-2. , fr="Provision sur le delai operateur due au tilt radial en accident a froid, en mn"), + TiltChaudMn = SIMP (typ='R',statut='o', defaut=-2. , fr="Provision sur le delai operateur due au tilt radial en accident a chaud, en mn"), + TiltFroidPpm = SIMP (typ='R',statut='o', defaut=5., + fr="Majoration de la teneur en bore a la criticite due au tilt radial en accident a froid, en ppm"), + TiltChaudPpm = SIMP (typ='R',statut='o', defaut=22., + fr="Majoration de la teneur en bore a la criticite due au tilt radial en accident a chaud, en ppm"), + TiltPnDdc = SIMP (typ='R',statut='o', defaut=53., fr="Provision due au tilt radial en accident a Pn DDDC, en pcm"), + DelaiOperateur = SIMP (typ='R',statut='o', defaut=15., fr="Delai d'intervention en accident a froid ou a chaud en mn"), + DelaiRechargement = SIMP (typ='R',statut='o', defaut=20., fr="Delai d'intervention en accident au rechargement en mn") + ) ; # Fin ACCIDENT_DILUTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_DILUTION_RESULTAT : Classe de definition des resultats du calcul d'accident de dilution +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_DILUTION_RESULTAT = OPER (nom="ACCIDENT_DILUTION_RESULTAT", op=0, sd_prod=AccidentDilutionResultat, niveau = 'ResultatsAccidents', + fr = "Resultats de la simulation de l'accident de dilution", + ang = "Results from dilution accident simulation", + EtatArret = SIMP (typ='TXM',statut='o', fr="Etat d'arret",into=('Chaud','Froid','Rechargement')), + BlocRechargement = BLOC (condition = "EtatArret=='Rechargement'", + Keff = SIMP (typ='R' ,statut='o', fr="Keff au rechargement"), + Ebore = SIMP (typ='R' ,statut='o', fr="Efficacite du bore au rechargement pcm/ppm")), + BlocArret = BLOC (condition = "EtatArret!='Rechargement'", + Configuration = SIMP (typ='TXM',statut='o', fr="Configuration a l'arret"), + Irradiation = SIMP (typ='R' ,statut='o', fr="Irradiation de calcul MWj/t"), + CbArret = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'arret en ppm"), + Eb = SIMP (typ='R' ,statut='o', fr="Efficacite du bore a l'arret en pcm/ppm"), + CbArretUrgence = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'arret d'urgence en ppm"), + CbCriticite = SIMP (typ='R' ,statut='o', fr="Titre en bore a l'instant de criticite en ppm"), + EfficaciteAU = SIMP (typ='R' ,statut='o', fr="Efficacite de l'arret d'urgence en pcm"), + DelaiIntervention = SIMP (typ='R' ,statut='o', fr="Delai d'intervention en mn"), + InstantCriticite = SIMP (typ='R' ,statut='f', fr="Instant de criticite en mn"), + IrradiationMin = SIMP (typ='R' ,statut='f', fr="Irradiation minimum MWj/t ou le delai d'intervention est suffisant")) + ) ; # Fin ACCIDENT_DILUTION_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_RTV : Classe de definition des donnees du calcul d'accident de RTV +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_RTV = OPER (nom="ACCIDENT_RTV", op=0, sd_prod=AccidentRTV, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de RTV", + ang = "Data for Steam Line Break accident simulation", + CodeCalcul = SIMP (typ='TXM' ,statut='o', defaut='COBRA',into=('COBRA','THYC','FLICA'),fr="Debit primaire en m3/h"), + DebitPrimaire = SIMP (typ='R' ,statut='o', defaut=70500. ,fr="Debit primaire en m3/h"), + DebitContournement = SIMP (typ='R' ,statut='o', defaut=4.5 ,fr="Debit de contournement en % du debit primaire"), + PressionPrimaire = SIMP (typ='R' ,statut='o', defaut=57.5 ,fr="Pression primaire en bars"), + TmMoyenne = SIMP (typ='R' ,statut='o', defaut=239.8 ,fr="Temperature moyenne moderateur en Celsius"), + TmPnul = SIMP (typ='R' ,statut='o', defaut=286. ,fr="Temperature moderateur a Pnul en Celsius"), + TmPnom = SIMP (typ='R' ,statut='o', defaut=287.8 ,fr="Temperature moderateur a Pnom en Celsius"), + BorePpm = SIMP (typ='R' ,statut='o', defaut=21.9 ,fr="Titre en bore du moderateur en ppm"), + NiveauPuissance = SIMP (typ='R' ,statut='o', defaut=14.1 ,fr="Puissance relative en %"), + GrappeCoincee = SIMP (typ='TXM' ,statut='o', defaut='F14' ,fr="Repere de la grappe coincee lors de l'accident"), + GrappesCorrespondance = SIMP (typ='TXM' ,statut='o', max='**' ,fr="Correspondance entre grappes coincees lors de l'accident"), + AnglesBouclesFroides = SIMP (typ='R' ,statut='o', defaut=(0., 120., 240.),max=4,fr="Positions angulaires des boucles froides"), + TmBoucles = SIMP (typ='R' ,statut='o', defaut=(216.8,250.8,250.8),max=4,fr="Temperatures des boucles"), + TmCanaux = SIMP (typ='R' ,statut='o', max='**',fr="Temperatures moyennes d'entree des canaux COBRA"), + TmAssemblages = SIMP (typ='R' ,statut='o', max='**',fr="Temperatures moyennes a l'entree des assemblages du coeur"), + OrientationBoucles = NUPL (max='**' ,statut='o',fr="Orientation des boucles suivant la grappe coincee", + elements = (SIMP (typ='TXM',statut='o', fr="Repere de la grappe"), + SIMP (typ='R' ,statut='o', fr="Orientation des boucles suivant la grappe coincee, en degres"))) + ) ; # Fin ACCIDENT_RTV +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_CHUTE_GRAPPE : Classe de definition des donnees du calcul d'accident de chute de grappe(s) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_CHUTE_GRAPPE = OPER (nom="ACCIDENT_CHUTE_GRAPPE", op=0, sd_prod=AccidentChuteGrappe, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident de chute de grappes", + ang = "Data for rod insertion accident simulation", + RecMinimum = SIMP (typ='R',statut='o',defaut=1.225,fr="REC minimum"), + RoPenalite = SIMP (typ='R',statut='f',defaut=10.,fr="Penalite en % a appliquer aux variations de reactivite"), + RoPenaliteSupp = NUPL (statut='f',fr="Penalite supplementaire suivant la grappe chutee",elements = ( + SIMP (typ='TXM',statut='o',fr="Repere de la grappe"), + SIMP (typ='R' ,statut='o',fr="Penalite supplementaire en %"))), + DroiteDetection = SIMP (typ='R',statut='o',min=4,max=4,defaut=(0.92, 50., 1.11, 250.), + fr="Droite de detection de la chute de grappe dans le plan (Tilt,DeltaRo)(2 points a definir tilt1,deltaro1 et tilt2,deltaro2)"), + CoeffDesalignement = SIMP (typ='R',statut='o',min=8,max=8,defaut=(1.010,1.040,1.040,1.040,1.110,1.040,1.110,1.000), + fr="Coefficients de desalignements K1 KP1 K2 KP2 K3 K4 K5 E"), + DeltaDnbrThermo = SIMP (typ='R',statut='o',min=2,max=2,defaut=(5.7, 0.), + fr="Variation du REC due aux effets thermohydrauliques, pour les chutes d'1 grappe et de 2 grappes"), + DeltaDnbrMax = SIMP (typ='R',statut='o',min=2,max=2,defaut=(39., 74.), + fr="Variation maximum du REC, pour les chutes d'1 grappe et de 2 grappes"), + RecEnveloppe = SIMP (typ='R',statut='o',defaut=(1., 2., 1.5), min=3, max=3, + fr="Definition du domaine REC pour la determination de l'enveloppe de la flyspeck : RecMin RecMax Pente"), + FxyIncertitude = SIMP (typ='R',statut='o',defaut=(0.,1.03,150.,1.03,2000.,1.061), max='**', + fr="Incertitude sur Fxy en fonction de l'irradiation (Couples (MWj/t, Facteur))") + ) ; # Fin ACCIDENT_CHUTE_GRAPPE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_CHUTE_GRAPPE_RESULTAT : Classe de definition des resultats du calcul d'accident de chute de grappe(s) +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_CHUTE_GRAPPE_RESULTAT = OPER (nom="ACCIDENT_CHUTE_GRAPPE_RESULTAT", op=0, sd_prod=AccidentChuteGrappeResultat, niveau='ResultatsAccidents', + fr = "Resultats de la simulation de l'accident de chute de grappes", + ang = "Rod insertion accident simulation Results", + Irradiation = SIMP (typ='R' ,statut='o', fr="Irradiation de calcul MWj/t"), + Chute = FACT (max='**' ,statut='f', fr="Resultats de la chute d'1 ou 2 grappes", + Grappes = SIMP (typ='TXM', statut='o', max=2, fr="Reperes des grappes chutees"), + DeltaRo = SIMP (typ='R',statut='o', fr="Antireactivite introduite par la chute des grappes, en pcm"), + DeltaRoPen = SIMP (typ='R',statut='o', fr="Antireactivite penalisee introduite par la chute des grappes, en pcm"), + Keff = SIMP (typ='R',statut='o', fr="Keff apres chute des grappes"), + KeffPen = SIMP (typ='R',statut='o', fr="Keff penalise apres la chute des grappes"), + DeltaFxy = SIMP (typ='R',statut='o', fr="Rapport Fxy/FxyTBH"), + Tilt2emeMinimum = SIMP (typ='R',statut='o', fr="Valeur du 2eme tilt minimum")), + ChuteMax = FACT (statut='f',fr="Valeurs maximales atteintes pour les chutes d'1 ou 2 grappes", + FDH = SIMP (typ='R' ,statut='o', fr="Facteur d'elevation d'enthalpie"), + DeltaRo = SIMP (typ='R' ,statut='o', fr="Antireactivite introduite par la chute des grappes, en pcm"), + DeltaRoPen = SIMP (typ='R' ,statut='o', fr="Antireactivite penalisee introduite par la chute des grappes, en pcm"), + Keff = SIMP (typ='R' ,statut='o', fr="Keff apres chute des grappes"), + KeffPen = SIMP (typ='R' ,statut='o', fr="Keff penalise apres la chute des grappes"), + DeltaFxy = SIMP (typ='R' ,statut='o', fr="Rapport Fxy/FxyTBH"), + PositionDeltaRo = SIMP (typ='TXM',statut='o', max=2,fr="Grappes associees a l'antireactivite max"), + PositionFxy = SIMP (typ='TXM',statut='o', max=2,fr="Grappes associees au Fxy/FxyTBH max")) + ) ; # Fin ACCIDENT_CHUTE_GRAPPE_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_EJECTION : Classe de definition des donnees du calcul d'accident d'ejection d'une grappe +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_EJECTION = OPER (nom="ACCIDENT_EJECTION", op=0, sd_prod=AccidentEjection, niveau = 'DonneesDesAccidents', + fr = "Donnees de la simulation de l'accident d'ejection d'une grappe", + ang = "Data for rod ejection accident simulation", + Recouvrement = SIMP (typ='R', statut='o', defaut=100., fr="Recouvrement en ejection Mode A, en nombre de pas"), + DeltaRoPenalite = SIMP (typ='R', statut='o', defaut=1.10, fr="Facteur multiplicatif general des efficacites des grappes ejectees"), + FqPenalite = SIMP (typ='R', statut='o', defaut=1.12, fr="Facteur multiplicatif general des Fq"), + DeltaRoPenGrappe = FACT (statut='f', fr="Corrections specifiques aux grappes ejectees : Couples RepereGrappe,PenaliteDeltaro", + Grappes = SIMP (typ='TXM', statut='f', max='**', fr="Liste des grappes ejectees"), + Penalites = SIMP (typ='R' , statut='f', max='**', fr="Corrections des DeltaRo specifiques aux grappes ejectees")), + FqPenGrappe = FACT (statut='f', fr="Corrections specifiques aux grappes ejectees : Couples RepereGrappe,PenaliteFq", + Grappes = SIMP (typ='TXM', statut='f', max='**', fr="Liste des grappes ejectees"), + Penalites = SIMP (typ='R' , statut='f', max='**', fr="Corrections des Fq specifiques aux grappes ejectees")) + ) ; # Fin ACCIDENT_EJECTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENT_EJECTION_RESULTAT : Classe de definition des donnees du calcul d'accident d'ejection d'une grappe +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENT_EJECTION_RESULTAT = OPER (nom="ACCIDENT_EJECTION_RESULTAT", op=0, sd_prod=AccidentEjectionResultat, niveau = 'ResultatsAccidents', + fr = "Resultats de la simulation de l'accident d'ejection d'une grappe", + ang = "Rod ejection accident simulation Results", + Ejection = FACT (statut='o', max='**', fr="Resultats du calcul d'ejection d'une grappe", + Irradiation = SIMP (typ='R' , statut='o', fr="Irradiation MWj/t du calcul d'ejection"), + Puissance = SIMP (typ='R' , statut='o', fr="Niveau de du calcul d'ejection"), + Configuration = SIMP (typ='TXM', statut='o', max='**',fr="Configuration d'ejection (liste des groupes inseres)"), + Grappe = SIMP (typ='TXM', statut='o', fr="Repere de la grappe ejectee"), + Fxy = SIMP (typ='R' , statut='o', fr="Fxy dans la configuration d'ejection"), + Efficacite = SIMP (typ='R' , statut='o', fr="Efficacite de la grappe ejectee"), + Dollar = SIMP (typ='R' , statut='o', fr="Rapport DeltaRoEjectee/BetaTot"), + Fq = SIMP (typ='R' , statut='o', fr="Facteur de point chaud Fq")) + ) ; # Fin ACCIDENT_EJECTION_RESULTAT +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CRITERES_SURETE : Classe de definition des criteres de surete et des valeurs limites des parametres cles des accidents +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CRITERES_SURETE = OPER (nom="CRITERES_SURETE", op=0, sd_prod=CriteresSurete, niveau = 'DonneesDesAccidents', + fr = "Criteres et valeurs limites des parametres cles de surete", + ang = "Safety Criteria and Accident Key Parameter Values", + FDHConception = SIMP (typ='R',statut='o',defaut=1.55 ,fr="Facteur d'elevation d'enthalpie de conception"), + RECMinimal = SIMP (typ='R',statut='o',defaut=1.225,fr="Valeur minimale du REC"), + FxyLimite = FACT (statut='o',fr="Liste des configurations de groupes et Fxy limites associes", + Configurations = SIMP (typ='TXM',max='**',statut='o',fr="Liste des configurations de groupes"), + Fxy = SIMP (typ='R' ,max='**',statut='o',fr="Valeurs limites de Fxy pour toutes les configurations")) + ) ; # Fin CRITERES_SURETE +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe DONNEES_ACCIDENTS : Agregation des donnees de tous les accidents et des criteres de surete +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +DONNEES_ACCIDENTS = OPER (nom="DONNEES_ACCIDENTS", op=0, sd_prod=DonneesAccidents, niveau = 'DonneesDesAccidents', + fr = "Package des classes des donnees de simulation de tous les accidents", + ang = "All Accident Simulation Data", + regles = (AU_MOINS_UN('Dilution', 'RTV', 'ChuteGrappe','Ejection', 'CriteresSurete'),), + Dilution = SIMP (typ=AccidentDilution ,statut='f', fr="Donnees de l'accident de dilution"), + RTV = SIMP (typ=AccidentRTV ,statut='f', fr="Donnees de l'accident de RTV"), + ChuteGrappe = SIMP (typ=AccidentChuteGrappe ,statut='f', fr="Donnees de l'accident de chute de grappe"), + Ejection = SIMP (typ=AccidentEjection ,statut='f', fr="Donnees de l'accident d'ejection"), + CriteresSurete = SIMP (typ=CriteresSurete ,statut='f', fr="Criteres de surete") + ) ; # Fin DONNEES_ACCIDENTS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe ACCIDENTS_RESULTATS : Classe de definition des options generales et du type de calcul demande +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ACCIDENTS_RESULTATS = OPER (nom="ACCIDENTS_RESULTATS", op=0, sd_prod=AccidentsResultats, niveau = 'ResultatsAccidents', + fr = "Package des classes des resultats de simulation de tous les accidents", + ang = "All Accident Simulation Results", +# regles = (AU_MOINS_UN('Dilution', 'RTV', 'ChuteGrappe','Ejection'),), + Dilution = SIMP (typ=AccidentDilutionResultat ,statut='f', fr="Resultats de la simulation de l'accident de dilution"), +# RTV = SIMP (typ=AccidentRTVResultat ,statut='f', fr="Resultats de la simulation de l'accident de RTV"), + ChuteGrappe = SIMP (typ=AccidentChuteGrappeResultat ,statut='f', fr="Resultats de la simulation de l'accident de chute de grappe"), + Ejection = SIMP (typ=AccidentEjectionResultat ,statut='f', fr="Resultats de la simulation de l'accident d'ejection") + ) ; # Fin ACCIDENTS_RESULTATS +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe PARAMETRES_CALCUL_GESTION : Classe de definition de parametres de calcul de gestion du coeur +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PARAMETRES_CALCUL_GESTION = OPER (nom="PARAMETRES_CALCUL_GESTION", op=0, sd_prod=ParametresCalculGestion, niveau = 'ParametresCalcul', + fr = "Parametres divers pour le calcul de gestion du coeur", + ang = "Core Management Calculation Parameters", + DecalageGroupes = SIMP (typ='R',statut='o',defaut=0.,fr="Valeur du decalage (en nombre de pas) des groupes a chaque campagne"), + ErreurMaxLnat = SIMP (typ='R',statut='o',defaut=5.,fr="Erreur maximale (MWj/t) du calcul de la longueur naturelle de campagne"), + ErreurBite = SIMP (typ='R',statut='o',defaut=5.,fr="Erreur maximale (en nombre de pas) du calcul de la position du bite en evolution"), + LnatCbDdc = SIMP (typ='R',statut='o',defaut=(7500., 758., 12060., 1300.), min=4, max=4, + fr="Loi lineaire Lnat fonction de CbDDC : 2 points a fournir (MWj/t, Cb)"), + TiltBuMax = SIMP (typ='R',statut='o',defaut=5.,fr="Pourcentage max de desequilibre radial admissible pour les calculs 1/4 coeur"), + CalculMarge = FACT (statut='o',fr="Parametres du calcul de la marge d'antireactivite", + MajorationDefP = SIMP (typ='R' ,statut='o',defaut= 10.,fr="Majoration % du defaut de puissance"), + Redistribution = SIMP (typ='R' ,statut='o',defaut=950.,fr="Effet de redistribution en pcm"), + EffetVide = SIMP (typ='R' ,statut='o',defaut= 50.,fr="Effet de vide en pcm"), + MinorationEFG = SIMP (typ='R' ,statut='o',defaut= 10.,fr="Minoration de l'efficacite des grappes en %"), + Regulation = SIMP (typ='R' ,statut='o',defaut=500.,fr="Antireactivite de la regulation en pcm"), + UsureGrappes = SIMP (typ='R' ,statut='o',defaut=100.,fr="Effet de l'usure des grappes en pcm"), + Calibrage = SIMP (typ='R' ,statut='o',defaut=280.,fr="Incertitude de calibrage en pcm")), + SousCriticiteDdc = SIMP (typ='R',statut='o',defaut=1000.,fr="Sous-criticite initiale en etat d'arret, en pcm"), + SousCriticiteFdc = SIMP (typ='R',statut='o',defaut=1770.,fr="Sous-criticite minimale en etat d'arret FDC bore nul, en pcm"), + CritereArChaud = SIMP (typ='R',statut='o',defaut= 690.,fr="Cb (ppm) de changement de critere sur la sous-criticite minimale en etat d'arret (Ex: 1000 a 1770 pcm)"), + MajorCbArret = SIMP (typ='R',statut='o',defaut= 100.,fr="Majoration (en ppm) des titres en bore en etat d'arret") + ) ; # Fin PARAMETRES_CALCUL_GESTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe RESULTATS_CALCUL_GESTION : Classe de stockage des resultats de calcul de gestion +# ----------------------------------------------------------------------------------------------------------------------------------- +RESULTATS_CALCUL_GESTION = OPER (nom="RESULTATS_CALCUL_GESTION", op=0, sd_prod=ResultatsCalculGestion, niveau = 'Resultats', + fr = "Resultats divers des calculs de gestion du coeur", + ang = "Core Management Calculation Results", + Cb1ereDivergence = SIMP (typ='R',statut='f',defaut=0.,fr="Titre en bore a la premiere divergence, en ppm"), + CTMNegatif = FACT (statut='f', + Cbore = SIMP (typ='R',statut='o',fr="Titre en bore (ppm) garantissant un CTM negatif en DDC Pnul"), + Irrad = SIMP (typ='R',statut='o',fr="Irradiation MWj/t au-dela de laquelle le CTM est negatif a Pnul"), + Pmax = SIMP (typ='R',statut='o',defaut=100.,fr="Niveau % de puissance limite garantissant un CTM negatif en DDC"), + CTMP = SIMP (typ='R',statut='o',max='**',fr="CTM pcm/C en fonction du niveau de puissance en DDC (Serie de couples Pr, CTM)"), + Position = SIMP (typ='R',statut='o',max='**', + fr="Chevauchement des groupes conduisant a un CTM nul suivant la puissance (Couples Pr, Chevauchement)")) + ) ; # Fin RESULTATS_CALCUL_GESTION +# ----------------------------------------------------------------------------------------------------------------------------------- +# Classe CALIBRAGE_GROUPES : Classe de stockage des positions de calibrage des groupes gris +# ----------------------------------------------------------------------------------------------------------------------------------- +CALIBRAGE_GROUPES = OPER (nom="CALIBRAGE_GROUPES", op=0, sd_prod=CalibrageGroupes, niveau = 'DonneesPilotage', + fr = "Positions de calibrage des groupes gris et coefficients isothermes associes", + ang = "Grey Control Rod Cluster Positions Versus Power Level and Isothermal Coefficients", + PasPuissance = SIMP (typ='R', statut='o', defaut=5., + fr="Pas en puissance (%) pour la donnee des positions de calibrage"), + Calibrage = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Positions = SIMP (typ='I',statut='o',max='**',fr="Positions de calibrage pour tous les niveaux de puissance")), + AlphaIso = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Coefficients = SIMP (typ='R',statut='o',max='**',fr="Coefficients isothermes pour tous les niveaux de puissance pcm/C")), + Chevauchement = FACT (statut='o',max='**', + Irradiation = SIMP (typ='R',statut='o', fr="Irradiation MWj/t"), + Pas = SIMP (typ='I',statut='o',max='**',fr="Pas de chevauchement des groupes pour tous les niveaux de puissance")), + PnulDDCPosition = SIMP (typ='I',statut='o',max='**',fr="Positions de groupes gris dans les conditions d'essai de demarrage") + ) ; # Fin CALIBRAGE_GROUPES diff --git a/Descartes/editeur.ini b/Descartes/editeur.ini new file mode 100644 index 00000000..99f4d639 --- /dev/null +++ b/Descartes/editeur.ini @@ -0,0 +1,23 @@ +import os + +import prefs + +rep_cata = prefs.REPINI + +# Accès à la documentation +path_doc = os.path.join(rep_cata,'..','Doc') +exec_acrobat = "/usr/bin/acroread" +# Utilisateur/Développeur +isdeveloppeur = "NON" +path_cata_dev = "/tmp/cata" +# Répertoire temporaire +rep_travail = "/tmp" + +# Choix des catalogues +rep_mat="bidon" + +catalogues = ( + ('DESCARTES','v1',os.path.join(rep_cata,'cata_descartes.py'),'python'), + ('DESCARTES','v2',os.path.join(rep_cata,'cata_descartes_new.py'),'python','defaut'), + ) + diff --git a/Descartes/eficas_descartes.py b/Descartes/eficas_descartes.py new file mode 100755 index 00000000..c5368f53 --- /dev/null +++ b/Descartes/eficas_descartes.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== + +""" + Ce module sert à lancer EFICAS configuré pour Descartes +""" +# Modules Python +import sys + +# Modules Eficas +import prefs +sys.path[:0]=[prefs.INSTALLDIR] + +import Editeur +from Editeur import eficas_go + +if len(sys.argv) > 1 : + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas(code='DESCARTES',fichier = sys.argv[1]) +else: + # on veut ouvrir Eficas 'vide' + eficas_go.lance_eficas(code='DESCARTES') + diff --git a/Descartes/prefs.py b/Descartes/prefs.py new file mode 100644 index 00000000..c14833ec --- /dev/null +++ b/Descartes/prefs.py @@ -0,0 +1,25 @@ +import os + +# REPINI sert à localiser le fichier editeur.ini +# Obligatoire +REPINI=os.path.dirname(os.path.abspath(__file__)) + +# INSTALLDIR sert à localiser l'installation d'Eficas +# Obligatoire +INSTALLDIR=os.path.join(REPINI,'..') + +# CODE_PATH sert à localiser Noyau et Validation éventuellement +# non contenus dans la distribution EFICAS +# Par défaut on utilise les modules de INSTALLDIR +# Peut valoir None (defaut) +CODE_PATH = None +#CODE_PATH = os.path.join(REPINI,'../../Superv') + +# ICONDIR sert à localiser le répertoire contenant les icones +# Par défaut on utilise le répertoire icons dans Editeur +ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') + +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/Editeur/appli.py b/Editeur/appli.py index 1fce87ce..41c1e664 100644 --- a/Editeur/appli.py +++ b/Editeur/appli.py @@ -25,6 +25,7 @@ """ # Modules Python import sys +import types import Pmw import Tkinter @@ -180,17 +181,38 @@ class APPLI: 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(appli_composant,method) - menu.add_command(label=label,command=command) - - + self.cree_menu(menu,itemlist,appli_composant) diff --git a/Editeur/autre_analyse_cata.py b/Editeur/autre_analyse_cata.py index 5d1aa36d..706bf6f2 100644 --- a/Editeur/autre_analyse_cata.py +++ b/Editeur/autre_analyse_cata.py @@ -1,3 +1,42 @@ +# 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 @@ -10,21 +49,59 @@ def traite_entite(entite): """ l=[] for k,v in entite.entites.items(): - traite_entite(v) + 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={} - for oper in cata.JdC.commandes: - traite_entite(oper) - cata_ordonne_dico[oper.nom]=oper + if cata.JdC.l_niveaux == (): + # Il n'y a pas de niveaux + for oper in cata.JdC.commandes: + traite_entite(oper) + cata_ordonne_dico[oper.nom]=oper + else: + for niv in cata.JdC.l_niveaux: + analyse_niveau(cata_ordonne_dico,niv) return cata_ordonne_dico +if __name__ == "__main__" : + from Cata import cata_STA6 + dico=analyse_catalogue(cata_STA6) + #import cata_saturne + #dico=analyse_catalogue(cata_saturne) + + def print_entite(entite,dec=' '): + print dec,entite.nom,entite.__class__.__name__ + for mocle in entite.ordre_mc: + print_entite(entite.entites[mocle],dec=dec+' ') + + for k,v in dico.items(): + print_entite(v,dec='') + + print dico.keys() diff --git a/Editeur/options.py b/Editeur/options.py index d08c6c2e..db1d1b6f 100644 --- a/Editeur/options.py +++ b/Editeur/options.py @@ -25,14 +25,17 @@ from tkFileDialog import * # Modules Eficas +# l'option affichage_commandes peut prendre les valeurs "groupes" ou "alphabetic" +affichage_commandes="alphabetic" class OPTIONS: menu_defs=[ - ('Options',[ - ("Catalogue développeur",'choix_cata_developpeur'), - ] - ) + ('Options',[ + ("Affichage commandes",(("alphabétique",'&affichage_alpha'),("groupes",'&affichage_grp'))), + # ("Catalogue développeur",'choix_cata_developpeur'), + ] + ) ] button_defs=[] @@ -41,6 +44,14 @@ class OPTIONS: self.appli=appli self.parent=parent + def affichage_grp(self): + global affichage_commandes + affichage_commandes="groupes" + + def affichage_alpha(self): + global affichage_commandes + affichage_commandes="alphabetic" + def choix_cata_developpeur(self): """ Cette méthode demande à l'utilisateur-développeur d'indiquer quel catalogue diff --git a/Editeur/panels.py b/Editeur/panels.py index 413a3402..c442939d 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -21,9 +21,12 @@ 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 @@ -316,17 +319,28 @@ class OngletPanel(Panel) : but_apres.grid(column = 1,row =3) def makeCommandePage(self,page): + """ + Cree l'onglet + """ frame1 = Frame(page,height = 20) frame1.pack(side='top',fill='x') label = Label(frame1,text ="La commande choisie sera ajoutée\n APRES la commande courante") label.pack(side='top') frame2 = Frame(page) frame2.pack(side='top',fill='both',expand=1) - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmd)) - Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,frame2,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") + else: + liste_groupes=self.node.item.object.niveau.definition.liste_groupes + dict_groupes=self.node.item.object.niveau.definition.dict_groupes + Liste = ListeChoixParGroupes(self,frame2,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") Liste.affiche_liste() # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" @@ -337,11 +351,19 @@ class OngletPanel(Panel) : """ Crée la page correspondant à un objet de type JDC """ - liste_cmd = self.get_liste_cmd() liste_commandes = (("",self.selectCmd), ("",self.deselectCmd), ("",self.defCmdFirst)) - Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes,filtre='oui',titre = "Commandes") + if options.affichage_commandes == "alphabetic": + liste_cmd = self.get_liste_cmd() + Liste = ListeChoix(self,page,liste_cmd,liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") + else: + liste_groupes=self.node.item.object.niveau.definition.liste_groupes + dict_groupes=self.node.item.object.niveau.definition.dict_groupes + Liste = ListeChoixParGroupes(self,page,liste_groupes,dict_groupes, + liste_commandes = liste_commandes, + filtre='oui',titre = "Commandes") Liste.affiche_liste() # aide associée au panneau bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes""" diff --git a/Editeur/readercata.py b/Editeur/readercata.py index a4e2cadf..1a9f1db3 100644 --- a/Editeur/readercata.py +++ b/Editeur/readercata.py @@ -41,6 +41,7 @@ from utils import init_rep_cata_dev #import catabrowser import autre_analyse_cata +import uiinfo class READERCATA: @@ -115,6 +116,12 @@ class READERCATA: 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' : @@ -321,7 +328,7 @@ class READERCATA: if time1 > time2: try: # le catalogue doit être recompilé avant d'être importé - splash._splash.configure(text="Compilation du catalogue\nCela peut prendre une trentaine de secondes ...") + splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...") py_compile.compile(cata) except: return 0 diff --git a/Editeur/uiinfo.py b/Editeur/uiinfo.py new file mode 100644 index 00000000..d2fa8ba2 --- /dev/null +++ b/Editeur/uiinfo.py @@ -0,0 +1,113 @@ +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +""" + Ce module sert à construire les structures de données porteuses + des informations liées aux groupes de commandes +""" +import types + +class UIINFO: + """ + Pour le moment la classe UIINFO ne sait traiter que des infos + portant sur la definition des groupes de commandes + Les autres informations sont ignorées + """ + def __init__(self,parent,groupes=None,**args): + """ + Initialiseur de la classe UIINFO. + Initialise a partir du dictionnaire UIinfo passé à + un objet ENTITE les attributs de la classe + """ + # L'attribut parent stocke le lien vers l'objet ENTITE relié à UIINFO + self.parent=parent + self.groupes=groupes + if groupes == None: + # L'entite n'a pas de groupe associé. On lui associe le groupe "DEFAUT" + self.groupes=("DEFAUT",) + if type(self.groupes) != types.TupleType: + self.groupes=(self.groupes,) + +def traite_commande(commande,niveau): + """ + Cette fonction cree l'attribut UI de l'objet commande + à partir des informations contenues dans UIinfo + """ + uiinfo=commande.UIinfo or {} + UI=UIINFO(commande,**uiinfo) + commande.UI=UI + if "CACHE" in UI.groupes: + # La commande est cachee aux utilisateurs + #niveau.dict_groupes["CACHE"].append(commande.nom) + pass + else: + # On ajoute la commande dans tous les groupes specifies + for grp in UI.groupes: + if not niveau.dict_groupes.has_key(grp): niveau.dict_groupes[grp]=[] + niveau.dict_groupes[grp].append(commande.nom) + +def traite_niveau(niveau): + if niveau.l_niveaux == (): + # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes + niveau.dict_groupes={} + for oper in niveau.entites: + traite_commande(oper,niveau) + # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes + # sans doublon + niveau.liste_groupes=niveau.dict_groupes.keys() + # On ordonne les listes alphabétiquement + niveau.liste_groupes.sort() + for v in niveau.dict_groupes.values():v.sort() + #print niveau.liste_groupes + #print niveau.dict_groupes + else: + for niv in niveau.l_niveaux: + traite_niveau(niv) + +def traite_UIinfo(cata): + """ + Cette fonction parcourt la liste des commandes d'un catalogue (cata) + construit les objets UIINFO à partir de l'attribut UIinfo de la commande + et construit la liste complète de tous les groupes présents + """ + #dict_groupes["CACHE"]=[] + #XXX Ne doit pas marcher avec les niveaux + if cata.JdC.l_niveaux == (): + # Il n'y a pas de niveaux + # On stocke la liste des groupes et leur contenu dans le JdC + # dans les attributs liste_groupes et dict_groupes + cata.JdC.dict_groupes={} + for commande in cata.JdC.commandes: + traite_commande(commande,cata.JdC) + # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes + # sans doublon + cata.JdC.liste_groupes=cata.JdC.dict_groupes.keys() + # On ordonne les listes alphabétiquement + cata.JdC.liste_groupes.sort() + for v in cata.JdC.dict_groupes.values():v.sort() + #print cata.JdC.liste_groupes + #print cata.JdC.dict_groupes + else: + # Le catalogue de commandes contient des définitions de niveau + for niv in cata.JdC.l_niveaux: + traite_niveau(niv) + + + + diff --git a/Editeur/widgets.py b/Editeur/widgets.py index bcdbdc3d..2eefd4b2 100644 --- a/Editeur/widgets.py +++ b/Editeur/widgets.py @@ -567,7 +567,8 @@ class ListeChoix : elif type(objet) in (types.StringType,types.IntType): mot = objet elif type(objet) == types.FloatType : - mot = repr_float(objet) + #mot = repr_float(objet) + mot = str(objet) else: mot=`objet` label = Label(self.MCbox, @@ -819,3 +820,100 @@ class BARRE_K2000(Toplevel): def quit(self): self.quit = 1 + +class ListeChoixParGroupes(ListeChoix) : + """ + Cette classe est utilisée pour afficher une liste de commandes classées par + groupes. L'utilisateur peut réaliser des actions de selection + qui déclenchent des actions spécifiées par les bindings contenus dans liste_commandes + """ + def __init__(self,parent,page,liste_groupes,dict_groupes,liste_commandes=[],liste_marques =[], + active ='oui',filtre='non',titre=''): + self.parent = parent + self.page = page + self.liste_groupes = liste_groupes + self.dict_groupes = dict_groupes + self.dico_labels={} + self.selection = None + self.liste_commandes = liste_commandes + self.liste_marques = liste_marques + self.arg_selected='' + self.active = active + self.titre = titre + self.filtre = filtre + self.init() + + def affiche_liste(self): + """ Affiche la liste dans la fenêtre""" + i=0 + self.MCbox.config(state=NORMAL) + self.MCbox.delete(1.0,END) + for grp in self.liste_groupes: + # On itère sur les groupes + if grp == "CACHE":continue + liste_commandes=self.dict_groupes[grp] + text="GROUPE<<<<<<<< "+grp+" " + text=text+">"*max(0,30-len(text)) + label = Label(self.MCbox, + text = text, + fg = 'black',bg = 'gray95',justify = 'left') + # On stocke la relation entre le nom de la commande et le label + self.dico_labels[grp]=label + self.MCbox.window_create(END, + window=label, + stretch = 1) + self.MCbox.insert(END,'\n') + for cmd in liste_commandes: + label = Label(self.MCbox, + text = cmd, + fg = 'black',bg = 'gray95',justify = 'left') + # On stocke la relation entre le nom de la commande et le label + self.dico_labels[cmd]=label + self.MCbox.window_create(END, + window=label, + stretch = 1) + self.MCbox.insert(END,'\n') + if self.active == 'oui': + label.bind(self.liste_commandes[0][0], + lambda e,s=self,c=self.liste_commandes[0][1],x=cmd,l=label : s.selectitem(x,l,c)) + label.bind(self.liste_commandes[1][0], + lambda e,s=self,c=self.liste_commandes[1][1],x=cmd,l=label : s.deselectitem(l,x,c)) + label.bind(self.liste_commandes[2][0], + lambda e,s=self,c=self.liste_commandes[2][1],x=cmd,l=label : s.chooseitem(x,l,c)) + # On marque les items specifies dans liste_marques + #if i in self.liste_marques : self.markitem(label) + i=i+1 + self.MCbox.config(state=DISABLED) + self.selection = None + + def entry_changed(self,event=None): + """ + Cette méthode est invoquée chaque fois que l'utilisateur modifie le contenu + de l'entry et frappe + """ + if self.arg_selected != '' : self.deselectitem(self.dico_labels[self.arg_selected]) + filtre = self.entry.get()+"*" + FILTRE = string.upper(filtre) + # + # On cherche d'abord dans les noms de groupe + # puis dans les noms de commande groupe par groupe + # + for grp in self.liste_groupes: + if fnmatch.fnmatch(grp,filtre) or fnmatch.fnmatch(grp,FILTRE) : + index = self.MCbox.index(self.dico_labels[grp]) + self.MCbox.see(index) + # On ne selectionne pas le groupe + #self.arg_selected = grp + # On a trouve un groupe on arrete la recherche + return + + for grp in self.liste_groupes: + for cmd in self.dict_groupes[grp] : + if fnmatch.fnmatch(cmd,filtre) or fnmatch.fnmatch(cmd,FILTRE) : + self.highlightitem(self.dico_labels[cmd]) + index = self.MCbox.index(self.dico_labels[cmd]) + self.MCbox.see(index) + self.arg_selected = cmd + # On a trouve une commande on arrete la recherche + return + diff --git a/Exemples/README b/Exemples/README index 01553ea1..62a3bace 100644 --- a/Exemples/README +++ b/Exemples/README @@ -2,3 +2,5 @@ Ce r dans des sous-répertoires de nom exNNN où NNN est le numéro de l'exemple +ex18 : + Cet exemple test met en oeuvre le convertisseur asterV5 diff --git a/Exemples/ex18/main.py b/Exemples/ex18/main.py index 3e8f1fa0..43097fee 100644 --- a/Exemples/ex18/main.py +++ b/Exemples/ex18/main.py @@ -5,7 +5,8 @@ sys.path[:0]=['../..','../../..'] import convert p=convert.plugins['asterv5']() -p.readfile('totalmod.comm') +p.readfile('torsion.comm') +#p.readfile('totalmod.comm') if not p.cr.estvide(): print p.cr sys.exit(0) diff --git a/Extensions/etape_niveau.py b/Extensions/etape_niveau.py index dbd72fea..675fb6b8 100644 --- a/Extensions/etape_niveau.py +++ b/Extensions/etape_niveau.py @@ -24,6 +24,7 @@ import traceback from Noyau import N_OBJECT +import prefs class ETAPE_NIVEAU(N_OBJECT.OBJECT): @@ -128,3 +129,12 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT): self.jdc.suppentite(etape) + def get_fr(self): + """ + Retourne le texte d'aide dans la langue choisie + """ + try : + return getattr(self.definition,prefs.lang) + except: + return '' + diff --git a/Extensions/mcnuplet.py b/Extensions/mcnuplet.py index c11d0cb7..310c981d 100644 --- a/Extensions/mcnuplet.py +++ b/Extensions/mcnuplet.py @@ -77,6 +77,8 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO): #XXX et global_jdc ?? mc_liste.append(objet) k=k+1 + # Un nuplet n'a pas de mots inconnus + self.reste_val={} return mc_liste def isvalid(self,cr='non'): diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index d902f6c0..33a517b7 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -35,9 +35,6 @@ import I_MCCOMPO class ETAPE(I_MCCOMPO.MCCOMPO): - def __init__(self): - self.niveau=self.jdc - def ident(self): return self.nom @@ -252,6 +249,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO): Initialise les attributs jdc, id, niveau et réalise les enregistrements nécessaires Pour EFICAS, on tient compte des niveaux + Surcharge la methode make_register du package Noyau """ if self.parent : self.jdc = self.parent.get_jdc_root() diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index e2aa3f89..fbe6e461 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -35,7 +35,6 @@ from Noyau.N_Exception import AsException 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 diff --git a/Minicode/prefs.py b/Minicode/prefs.py index aa3f6929..57be183f 100644 --- a/Minicode/prefs.py +++ b/Minicode/prefs.py @@ -14,9 +14,13 @@ INSTALLDIR=os.path.join(REPINI,'..') # Peut valoir None (defaut) CODE_PATH = None #CODE_PATH = os.path.join(REPINI,'../../Superv') -CODE_PATH = "/home01/chris/projet_Eficas/Devel/SUPER6_3/Aster6_3/bibpyt" +#CODE_PATH = "/home01/chris/projet_Eficas/Devel/SUPER6_3/Aster6_3/bibpyt" # ICONDIR sert à localiser le répertoire contenant les icones # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/Noyau/N_MACRO.py b/Noyau/N_MACRO.py index 5aa38361..c02c26f8 100644 --- a/Noyau/N_MACRO.py +++ b/Noyau/N_MACRO.py @@ -85,7 +85,7 @@ class MACRO(N_ENTITE.ENTITE): nommage = nommage def __init__(self,nom,op,sd_prod=None,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,fichier_ini=0,**args): + docu="",regles=(),op_init=None,niveau = None,fichier_ini=0,UIinfo=None,**args): """ Méthode d'initialisation de l'objet MACRO. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -125,6 +125,7 @@ class MACRO(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,reuse=None,**args): diff --git a/Noyau/N_OPER.py b/Noyau/N_OPER.py index dd9812e8..2f713787 100644 --- a/Noyau/N_OPER.py +++ b/Noyau/N_OPER.py @@ -85,7 +85,7 @@ class OPER(N_ENTITE.ENTITE): nommage = nommage def __init__(self,nom,op,sd_prod,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,**args): + docu="",regles=(),op_init=None,niveau = None,UIinfo=None,**args): """ Méthode d'initialisation de l'objet OPER. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -112,6 +112,7 @@ class OPER(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,reuse=None,**args): diff --git a/Noyau/N_PROC.py b/Noyau/N_PROC.py index 173070fb..e8010663 100644 --- a/Noyau/N_PROC.py +++ b/Noyau/N_PROC.py @@ -79,7 +79,7 @@ class PROC(N_ENTITE.ENTITE): label = 'PROC' def __init__(self,nom,op,reentrant='n',repetable='o',fr="",ang="", - docu="",regles=(),op_init=None,niveau = None,**args): + docu="",regles=(),op_init=None,niveau = None,UIinfo=None,**args): """ Méthode d'initialisation de l'objet PROC. Les arguments sont utilisés pour initialiser les attributs de meme nom @@ -105,6 +105,7 @@ class PROC(N_ENTITE.ENTITE): else: self.niveau=current_cata.get_niveau(niveau) self.niveau.enregistre(self) + self.UIinfo=UIinfo self.affecter_parente() def __call__(self,**args): diff --git a/Saturne/prefs.py b/Saturne/prefs.py index ed24d3cf..c14833ec 100644 --- a/Saturne/prefs.py +++ b/Saturne/prefs.py @@ -19,4 +19,7 @@ CODE_PATH = None # Par défaut on utilise le répertoire icons dans Editeur ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + diff --git a/Syrthes/cata_syrthes.py b/Syrthes/cata_syrthes.py new file mode 100755 index 00000000..43113e96 --- /dev/null +++ b/Syrthes/cata_syrthes.py @@ -0,0 +1,243 @@ +# debut entete +import Accas +from Accas import * +# +JdC = JDC_CATA(code='SYRTHES', + execmodul=None, + niveaux=(NIVEAU(nom='generalites',label='Généralités',valide_vide=0), + NIVEAU(nom='gest_calc',label='Gestion du calcul',valide_vide=0,actif="generalites == 1"), + NIVEAU(nom='gest_sort',label='Gestion des sorties'), + NIVEAU(nom='choix_num',label='Choix numériques',valide_vide=0), + NIVEAU(nom='prop_phys',label='Propriétés physiques',valide_vide=0,actif='choix_num==1'), + NIVEAU(nom='cond_init',label='Conditions initiales',valide_vide=0,actif='prop_phys==1'), + NIVEAU(nom='cond_limi',label='Conditions aux limites',valide_vide=0,actif='cond_init==1'), + NIVEAU(nom='flux_volu',label='Flux volumiques',valide_vide=0,actif='cond_limi==1'), + NIVEAU(nom='soli_mouv',label='Solides en mouvement'), + NIVEAU(nom='couplages',label='Couplages'), + NIVEAU(nom='rayonnement',label='Rayonnement',valide_vide=0,actif='flux_volu==1'), + NIVEAU(nom='cond_lim_ray',label='Conditions limites rayonnement',valide_vide=0,actif='rayonnement==1'), + NIVEAU(nom='in_out_ray',label='Entrées/Sorties rayonnement',valide_vide=0,actif='rayonnement==1'), + NIVEAU(nom='fichiers',label='Fichiers pour le calcul')) + ) + + +GENERALITES = PROC(nom='GENERALITES',op=10, + fr="Définition des principales options du calcul", + niveau='generalites', + TYPE_DE_CALCUL=SIMP(typ='TXM', + statut='o', + into=('Syrthes thermique solide seule','Syrthes couplé'), + defaut='Syrthes thermique solide seule', + position='global_jdc'), + TITRE = SIMP(statut='f',typ='TXM'), + DIMENSION = SIMP(statut='o', + typ='I', + into=(2,3), + defaut=2, + position='global_jdc'), + b_axys = BLOC(condition="TYPE_DE_CALCUL=='Syrthes thermique solide seule'", + AXE_SYMETRIE = SIMP(statut='o', + typ='TXM', + into=('AUCUN','OX','OY'), + defaut='AUCUN'))); + +GESTION_DU_CALCUL = PROC(nom='GESTION_DU_CALCUL',op=10, + fr="Gestion des pas de temps et éventuellement du couplage fluide/solide", + niveau='gest_calc', + CALCUL_SYRTHES_SEUL = BLOC(condition="TYPE_DE_CALCUL == 'Syrthes thermique solide seule'", + PAS_DE_TEMPS_SOLIDE = SIMP(typ='I',statut='o'), + NB_PAS_DE_TEMPS = SIMP(typ='I',statut='o'), + SUITE_DE_CALCUL = SIMP(typ='TXM',statut='o',into=('OUI','NON'),defaut='NON')), + CALCUL_SYRTHES_COUPLE = BLOC(condition="TYPE_DE_CALCUL =='Syrthes couplé'", + CORRESPONDANCE_MAILLAGES_F_S = SIMP(statut='o', + typ='TXM', + into=('calcul','lecture sur fichier','calcul et écriture sur fichier'), + defaut='calcul et écriture sur fichier'), + PAS_DE_TEMPS_SOLIDE = SIMP(typ='TXM', + statut='o', + into=('fixé indépendamment','égal à celui du fluide'), + defaut='égal à celui du fluide'), + CHOIX_FREQUENCE_CALCUL_SOLIDE = SIMP(typ='TXM', + statut='o', + into=('calcul solide à chaque pas de temps', + 'calcul solide tous les n pas de temps fluide', + 'calcul fluide tous les n pas de temps solide'), + defaut='calcul solide à chaque pas de temps'), + frequence_calcul = BLOC(condition="CHOIX_FREQUENCE_CALCUL_SOLIDE != 'calcul solide à chaque pas de temps'", + FREQUENCE = SIMP(statut='o', + typ='I'))) + + ); + +GESTION_DES_SORTIES = PROC(nom="GESTION_DES_SORTIES",op=10, + fr="Gestion des résultats du code", + niveau='gest_sort', + IMPRESSIONS_SOLIDE=SIMP(statut='o',typ='TXM', + into=('aucune','minimales','normales','détaillées'), + defaut='normales'), + RESULTATS_DOMAINE_SOLIDE=FACT(statut='o', + FICHIER_CHRONOLOGIQUE=SIMP(typ='TXM',statut='o', + into=('aucune sortie','tous les n pas de temps'), + defaut='aucune sortie'), + pas_de_temps=BLOC(condition="FICHIER_CHRONOLOGIQUE=='tous les n pas de temps'", + PAS_DE_TEMPS=SIMP(statut='o',typ='I')), + FICHIER_LISTING=SIMP(statut='o',typ='TXM', + into=('aucune sortie',), + defaut='aucune sortie'), + HISTORIQUE_SOLIDE=SIMP(statut='o',typ='TXM', + into=('OUI','NON'), + defaut='NON'), + historique=BLOC(condition="HISTORIQUE_SOLIDE=='OUI'", + NOMBRE_CAPTEURS=SIMP(statut='o',typ='I'), + FREQUENCE_ECRITURE=SIMP(statut='o',typ='I',defaut=1), + LISTE_NOEUDS = FACT(statut='o',max='**', + NOEUDS=SIMP(statut='o',max='**',typ='I'), + COMMENTAIRE=SIMP(statut='o',typ='TXM',defaut=""))), + ), + RESULTATS_DOMAINE_FLUIDE=BLOC(condition="TYPE_DE_CALCUL=='Syrthes couplé'", + ECRITURE_MAILLAGE_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM'), + ECRITURE_RESULTATS_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM'), + ECRITURE_CHRONO_PEAU_FLUIDE=SIMP(statut='o',into=('OUI','NON'), + defaut='NON',typ='TXM')) + ); + +CHOIX_NUMERIQUES=PROC(nom="CHOIX_NUMERIQUES",op=10, + fr="Modification des options du solveur", + niveau='choix_num', + SOLVEUR_SOLIDE = FACT(statut='o', + NOMBRE_ITERATIONS=SIMP(statut='o',typ='I'), + PRECISION=SIMP(statut='o',typ='R')) + ); + +PROPRIETES_PHYSIQUES=PROC(nom="PROPRIETES_PHYSIQUES",op=10, + fr="Définition des propriétés physiques des matériaux", + niveau='prop_phys', + DEFINITION_PAR = SIMP(statut='o',typ='TXM',into=('NOEUD','ELEMENT','NOEUD PAR ELEMENT'), + defaut='ELEMENT'), + ISOTROPIE = SIMP(statut='o', typ='TXM', into=('Matériaux isotropes', + 'Matériaux anisotropes', + 'Matériaux orthotropes'), + defaut='Matériaux isotropes'), + proprietes_des_materiaux_isotropes = BLOC(condition="ISOTROPIE=='Mat\351riaux isotropes'", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_THERMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_orthotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==2", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_orthotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux orthotropes' and DIMENSION==3", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_anisotropes_2D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==2", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + proprietes_des_materiaux_anisotropes_3D = BLOC(condition="ISOTROPIE=='Mat\351riaux anisotropes' and DIMENSION==3", + DEFINITION_MASSE_VOLUMIQUE=FACT(statut='o',max='**', + MASSE_VOLUMIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CHALEUR_SPECIFIQUE=FACT(statut='o',max='**', + CHALEUR_SPECIFIQUE = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')), + DEFINITION_CONDUCTIVITE_THERMIQUE=FACT(statut='o',max='**', + CONDUCTIVITE_EN_X = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Y = SIMP(statut='o',typ='R'), + CONDUCTIVITE_EN_Z = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_X = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Y = SIMP(statut='o',typ='R'), + ANGLE_SUIVANT_Z = SIMP(statut='o',typ='R'), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES=SIMP(statut='f',typ='TXM')) + ), + ); + +CONDITIONS_INITIALES=PROC(nom="CONDITIONS_INITIALES",op=10, + fr="Définition des conditions initiales", + niveau='cond_init', + Temperature_initiale = FACT(statut='o',max='**', + TEMPERATURE = SIMP(typ='R',statut='o',defaut=20), + REFERENCES = SIMP(statut='o',typ='I',max='**',defaut=-1), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ) + ); + + +CONDITIONS_LIMITES = PROC(nom='CONDITIONS_LIMITES',op=10, + niveau='cond_limi', + fr="Définition des conditions aux limites", + NOEUD_OU_FACE = SIMP(statut='o',typ='TXM',into=('NOEUD','FACE'),defaut='FACE'), + FLUX_SURFACIQUE=FACT(max='**', + FLUX=SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + DIRICHLET=FACT(max='**', + TEMPERATURE=SIMP(statut='o',typ='R',defaut=20), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + + COEFFICIENT_ECHANGE=FACT(max='**', + TEMPERATURE=SIMP(statut='o',typ='R',defaut=20), + COEFFICIENT = SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + RESISTANCE_CONTACT=FACT(max='**', + RESISTANCE = SIMP(statut='o',typ='R',defaut=0), + REFERENCES = SIMP(statut='o',typ='I',max='**'), + COMMENTAIRES = SIMP(statut='f',typ='TXM') + ), + ); + diff --git a/Syrthes/editeur.ini b/Syrthes/editeur.ini new file mode 100644 index 00000000..b7ac1321 --- /dev/null +++ b/Syrthes/editeur.ini @@ -0,0 +1,22 @@ +import os + +import prefs + +rep_cata = prefs.REPINI + +# Accès à la documentation +path_doc = os.path.join(rep_cata,'..','Doc') +exec_acrobat = "/usr/bin/acroread" +# Utilisateur/Développeur +isdeveloppeur = "NON" +path_cata_dev = "/tmp/cata" +# Répertoire temporaire +rep_travail = "/tmp" + +# Choix des catalogues +rep_mat="bidon" + +catalogues = ( + ('SYRTHES','v1',os.path.join(rep_cata,'cata_syrthes.py'),'python','defaut'), + ) + diff --git a/Syrthes/eficas_syrthes.py b/Syrthes/eficas_syrthes.py new file mode 100755 index 00000000..70176441 --- /dev/null +++ b/Syrthes/eficas_syrthes.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +""" + Ce module sert à lancer EFICAS configuré pour Syrthes +""" +# Modules Python +import sys + +# Modules Eficas +import prefs +sys.path[:0]=[prefs.INSTALLDIR] + +import Editeur +from Editeur import eficas_go + +if len(sys.argv) > 1 : + # on veut ouvrir un fichier directement au lancement d'Eficas + eficas_go.lance_eficas(code='SYRTHES',fichier = sys.argv[1]) +else: + # on veut ouvrir Eficas 'vide' + eficas_go.lance_eficas(code='SYRTHES') + diff --git a/Syrthes/prefs.py b/Syrthes/prefs.py new file mode 100644 index 00000000..c14833ec --- /dev/null +++ b/Syrthes/prefs.py @@ -0,0 +1,25 @@ +import os + +# REPINI sert à localiser le fichier editeur.ini +# Obligatoire +REPINI=os.path.dirname(os.path.abspath(__file__)) + +# INSTALLDIR sert à localiser l'installation d'Eficas +# Obligatoire +INSTALLDIR=os.path.join(REPINI,'..') + +# CODE_PATH sert à localiser Noyau et Validation éventuellement +# non contenus dans la distribution EFICAS +# Par défaut on utilise les modules de INSTALLDIR +# Peut valoir None (defaut) +CODE_PATH = None +#CODE_PATH = os.path.join(REPINI,'../../Superv') + +# ICONDIR sert à localiser le répertoire contenant les icones +# Par défaut on utilise le répertoire icons dans Editeur +ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons') + +# lang indique la langue utilisée pour les chaines d'aide : fr ou ang +lang='fr' + + diff --git a/convert/Parserv5/conv.py b/convert/Parserv5/conv.py index 4f4aba8b..646aef38 100644 --- a/convert/Parserv5/conv.py +++ b/convert/Parserv5/conv.py @@ -24,7 +24,7 @@ from tables import ERRORS # __version__="$Name: $" -__Id__="$Id: conv.py,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $" +__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', @@ -459,6 +459,8 @@ def format_errs(text,tags): def conver(text): from tables import aster_script import re + # On ajoute un '\n' en fin au cas ou il serait absent + text=text+'\n' text=string.upper(text) result, taglist, next = TextTools.tag(text,aster_script) # Pour vérifier les résultats intermédiaires décommenter la ligne suivante diff --git a/generator/generator_asterv5.py b/generator/generator_asterv5.py index d634158a..08c178af 100644 --- a/generator/generator_asterv5.py +++ b/generator/generator_asterv5.py @@ -366,7 +366,8 @@ class AsterGenerator: elif self.wait_geom(obj): s = s + val elif type(val) == types.FloatType : - s = s + self.repr_float(val) + #s = s + self.repr_float(val) + s = s + str(val) else : s = s + `val` s = s + ')' @@ -383,7 +384,8 @@ class AsterGenerator: elif self.wait_geom(obj): s = obj.valeur elif type(obj.valeur) == types.FloatType : - s = self.repr_float(obj.valeur) + #s = self.repr_float(obj.valeur) + s = str(obj.valeur) else : s = `obj.valeur` s=obj.nom+':'+s+' ' diff --git a/generator/generator_python.py b/generator/generator_python.py index 87c55ca5..fe631f22 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -412,7 +412,7 @@ class PythonGenerator: for arg in liste : l.append(arg) else: - # on a est en présence d'un MCSIMP : on récupère une string + # on est en présence d'un MCSIMP : on récupère une string text =self.generator(v) l.append(v.nom+'='+text) # il faut être plus subtil dans l'ajout de la virgule en différenciant @@ -482,6 +482,10 @@ class PythonGenerator: s = s + val.nom else: s = s + self.generator(val) + elif type(val) == types.FloatType : + # Pour un flottant on utilise str qui a une precision de + # "seulement" 12 chiffres : evite les flottants du genre 0.599999999999998 + s = s + str(val) else : s = s + `val` s = s + ',' @@ -504,9 +508,8 @@ class PythonGenerator: else: s = self.generator(val) elif type(val) == types.FloatType : - # Pour un réel on fait un formattage spécial - # XXX bizarrement ce n'est pas fait pour une liste - s = repr_float(val) + #s = repr_float(val) + s = str(val) else : s = `val` s= s + ',' -- 2.39.2