Salome HOME
ajout pour accepter les accents sous python 2.3
[tools/eficas.git] / Descartes / cata_descartes.py
1 # -*- coding: utf-8 -*-
2 # debut entete
3
4 import Accas
5 from Accas import *
6
7 JdC = JDC_CATA(code="DESCARTES",
8                execmodul=None
9               )
10
11 import string
12
13 class TObjet(ASSD):
14   def __init__(self,**args):
15     apply(ASSD.__init__,(self,),args)
16     name=string.ljust(self.__class__.__name__[:12],12)
17
18   def __getitem__(self,attrname):
19     return self.etape[attrname]
20     
21   def db(self):
22     if hasattr(self,'_dbsun'):return self._dbsun
23     else:
24       self._dbsun={'t':1}
25       return self._dbsun
26
27   def putdb(self,o):
28     self._dbsun=o
29
30 #
31 # Definition des types d'objet qui seront produits par les commandes
32 # Il suffit de declarer une classe qui derive de la classe mere TObjet
33 # qui derive elle meme de la classe ASSD utilisee dans EFICAS
34 #
35 class Isotope (TObjet):pass
36 class BornesEnergie (TObjet):pass
37 class BibliothequeIsotopes (TObjet):pass
38 class ChaineFiliation(TObjet) :pass
39 class Materiau (TObjet):pass
40 class Point (TObjet):pass
41 class Vecteur (TObjet):pass
42 class Droite (TObjet):pass
43 class Segment (TObjet):pass
44 class ArcCercle (TObjet):pass
45 class Secteur (TObjet):pass
46 class Conique (TObjet):pass
47 class Triangle (TObjet):pass
48 class Rectangle (TObjet):pass
49 class Carre (TObjet):pass
50 class Hexagone (TObjet):pass
51 class Polygone (TObjet):pass
52 class Sphere (TObjet):pass
53 class BoiteRectangulaire (TObjet):pass
54 class BoiteGenerale (TObjet):pass
55 class CylindreX (TObjet):pass
56 class CylindreY (TObjet):pass
57 class CylindreZ (TObjet):pass
58 class Cylindre (TObjet):pass
59 class Cone (TObjet):pass
60 class PrismeHexagonal (TObjet):pass
61 class Tore (TObjet):pass
62 class Plan (TObjet):pass
63 class PlanX (TObjet):pass
64 class PlanY (TObjet):pass
65 class PlanZ (TObjet):pass
66 class Polyedre (TObjet):pass
67 class Quadrique (TObjet):pass
68 class Cellule(TObjet) :pass
69 class Cluster(TObjet):pass
70 class Orientation(TObjet):pass
71 class FormePositionnee (TObjet):pass
72 class GeometrieSurfacique(TObjet):pass
73 class GeometrieCombinatoire(TObjet):pass
74 class Reseau(TObjet):pass
75 class GrilleAssemblage (TObjet):pass
76 class PartieInferieureAssemblageCombustible (TObjet):pass
77 class PartieSuperieureAssemblageCombustible (TObjet):pass
78 class OptionsAutoprotection(TObjet):pass
79 class AssemblageType(TObjet):pass
80 class AssemblageCombustibleCharge (TObjet):pass
81 class ElementBarre (TObjet):pass
82 class ElementsGrappeCommande (TObjet):pass
83 class ElementsAbsorbantsFixes (TObjet):pass
84 class GrappeBouchonAssemblage (TObjet):pass
85 #class ElementsAssemblage (TObjet):pass
86 class SystemeUnitesMesure (TObjet):pass
87 class Vide (TObjet):pass
88 class ReflexionIsotrope (TObjet):pass
89 class ReflexionSpeculaire (TObjet):pass
90 class Albedo (TObjet):pass
91 class Translation (TObjet):pass
92 class Rotation (TObjet):pass
93 class ConditionLimiteSpeciale (TObjet):pass
94 class ConditionLimiteGenerale (TObjet):pass
95 class CorrespondanceReperePositionReseau (TObjet):pass
96 class PositionAssemblageCombustible (TObjet):pass
97 class PositionInstrumentationInterne (TObjet):pass
98 class PositionGrappesCommande (TObjet):pass
99 class StructuresInternesReacteur (TObjet):pass
100 class CaracteristiquesPalier (TObjet):pass
101 class SiteNucleaire (TObjet):pass
102 class EspaceVariations (TObjet):pass
103 class DonneesEvolutionIrradiation (TObjet):pass
104 class ConditionsFonctionnementMoyennes (TObjet):pass
105 #class PlanChargementCoeur (TObjet):pass
106 class DateClesCampagne (TObjet):pass
107 class OptionsCodes (TObjet):pass
108 class DonneesGeneralesEtude (TObjet):pass
109 # fin entete
110
111 # ----------------------------------------------------------------------------------------------------------------------------------
112 #  Classe ISOTOPE : Classe de definition d'un isotope
113 #                   Caracteristiques elementaires des isotopes ou molecules et liens avec les bibliotheques de donnees nucleaires
114 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
115 ISOTOPE=OPER(nom="ISOTOPE",sd_prod=Isotope,op=0,
116
117   fr                           = "Definition d'un isotope ou d'une molecule et de ses bibliotheques",
118   ang = "Isotope or Molecule definition and data libraries",
119   Symbole                      = SIMP (typ='TXM',statut='o'),
120   MasseAtomique                = SIMP (typ='R',statut='o',fr="Masse atomique en uma"),
121   NombreDeCharge               = SIMP (typ='I',statut='o',fr="Nombre de charge atomique Z"),
122   NombreDeMasse                = SIMP (typ='I',statut='o',fr="Nombre de masse atomique A"),
123   Type                         = SIMP (typ='TXM',statut='f',into=('Standard','Detecteur','Structure','Poison'),fr="Type de l'isotope"),
124   ConstituantsChimiques        = SIMP (typ='TXM',max='**',statut='f',fr="Symboles des constituants elementaires de la molecule"),
125   NomsBibliotheque             = NUPL ( max      = '**',
126                                           statut   = 'o',
127                                           elements = (  SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"),
128                                                         SIMP (typ='TXM',fr="Identifiant de l'isotope dans la bibliotheque"))),
129   NomsBibliothequeAutoprotegee = NUPL ( max      = '**',
130                                           statut   = 'f',
131                                           elements = (  SIMP (typ='TXM',fr="Identificateur Procedure Bibliotheque"),
132                                                         SIMP (typ='TXM',fr="Identifiant Bibliotheque autoprotegee de l'isotope")))
133  ); 
134 # ----------------------------------------------------------------------------------------------------------------------------------
135 #  Classe BORNES_ENERGIE : Classe de definition des limites en energie d'un maillage multigroupe
136 #                   
137 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
138 BORNES_ENERGIE=OPER(nom="BORNES_ENERGIE",sd_prod=BornesEnergie,op=0,
139     fr                  = "Definition d une discretisation de l espace energetique",
140     ang                 = "Definition of an energy discretisation",
141     NbMacrogroupes      = SIMP (typ='I',statut='o',fr="Nombre de macrogroupes du maillage energetique"),
142     BornesEnergetiques  = SIMP (typ='R',max='**',statut='o',fr="Bornes en energie du maillage energetique"),
143  ); 
144 # -----------------------------------------------------------------------------------------------------------------------------------
145 #  Classe BIBLIOTHEQUE_ISOTOPES : Classe de definition d'une bibliotheque des donnees nucleaires d'isotopes ou de molecules 
146 #                                 Caracteristiques elementaires des isotopes ou molecules
147 #                                 et liens avec les bibliotheques de donnees nucleaires
148 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
149 BIBLIOTHEQUE_ISOTOPES=OPER(nom="BIBLIOTHEQUE_ISOTOPES",sd_prod=BibliothequeIsotopes,op=0, 
150
151   fr                        = "Definition d une bibliotheque de donnees nucleaires des isotopes",
152   ang = "Definition of an isotopic nuclear data library",
153   Description               = SIMP (typ='TXM',statut='f'),
154   Fichiers                  = FACT (
155       max      = '**',
156       statut   = 'o',
157       SystemeExploitation       = SIMP (typ='TXM',fr="Systeme d'exploitation"),
158       NomFichier                = SIMP (typ='TXM',fr="Nom du fichier"),
159       FormatFichier             = SIMP (typ='TXM',fr="Format du fichier",statut='f'),
160       BornesEnergetiques        = SIMP (typ=BornesEnergie,statut='f',fr="Bornes en eV du maillage en energie"))
161   );
162 # -----------------------------------------------------------------------------------------------------------------------------------
163 #  Classe CHAINE_FILIATION : Classe de definition des filiations isotopiques dues aux transmutations
164 #                            sous irradiation neutronique. 
165 #                            Description textuelle sous format (APOLLO2, SUNSET ou DARWIN) ou description particuliere Descartes.
166 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
167 CHAINE_FILIATION = OPER (nom="CHAINE_FILIATION",op=0,sd_prod=ChaineFiliation,
168
169   fr                    = "Definition d'une chaine de filiation isotopique sous irradiation",
170   ang                   = "Definition of a depletion chain",
171   NombreIsotopes        = SIMP (typ='I',statut='o',fr="Nombre d'isotopes decrits dans la chaine"),
172   ChaineAPOLLO2         = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format APOLLO2"),
173   ChaineSUNSET          = SIMP (typ='TXM',statut='f',fr="Description de la chaine sous format SUNSET"),
174   ChaineDARWIN          = SIMP (typ='TXM',statut='f',fr="Nom du fichier contenant la description DARWIN de la chaine"),
175   Isotopes          = FACT ( max      = '**', statut   = 'f',
176                               Isotope = FACT ( max      = '**', statut   = 'f',
177                                                IsotopePere = SIMP (typ=Isotope,fr="Nom isotope pere",statut='o'),
178                                                TypeReaction = SIMP (typ='TXM',fr="Type de reaction",statut='o'),
179                                                RapportBranchement =  SIMP (typ='R',fr="Rapport de branchement",defaut=1.,statut='f')
180                                              )
181                            )
182  );
183 # -----------------------------------------------------------------------------------------------------------------------------------
184 #  Classe MATERIAU : Classe de définition d'un matériau à partir de mélange d'isotopes ou de matériaux.
185 #                    Définition alternative par donnée des enrichissements
186 #                    Caractéristiques fournies a 20 C.
187 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
188 MATERIAU=OPER(nom="MATERIAU",op=0,sd_prod=Materiau,
189
190   fr                   = "Definition d'un materiau",
191   ang = "Definition of a mixture",
192   TypeDefinition       = SIMP (typ='TXM',statut='f',defaut="Isotopique",into=("Isotopique","Enrichissement")),
193   BlocIsotopique       = BLOC (condition = "TypeDefinition=='Isotopique'",
194         Type           = SIMP ( statut = 'o',
195                                 typ    = 'TXM',
196                                 into   = ('Absorbant','Combustible','Melange','ModerateurInterne','ModerateurExterne','Detecteur',
197                                           'Grille','Gaine','Tube','Poison','PoisonConsommable','AbsorbantIntegre',
198                                           'Solide','Liquide','Gaz','MateriauVide'),
199                                 defaut = 'Combustible'),
200         MethodeMelange = SIMP (statut='o',typ='TXM',into=('Isotopique','Massique','Concentration'),defaut='Massique'),
201         Constituants   = NUPL ( statut   = 'o',
202                                 max      = '**',
203                                 elements = (SIMP (typ=(Isotope,Materiau)),SIMP (typ='R')),
204                                 fr       = "Couples (Isotope ou Materiau) et (Pourcentage ou Cencentration)")
205   ),
206   BlocEnrichissement   = BLOC (condition = "TypeDefinition=='Enrichissement'",
207         Type                 = SIMP (typ='TXM',into=('UO2','MOX','UO2Gadolinium','MOXGadolinium'),statut='o'),
208         EnrichissementU235   = SIMP (typ=('R','TXM'),defaut=3.7,statut='f',fr="Enrichissement % en U235 du combustible"),
209         EnrichissementPu     = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en plutonium du combustible"),
210         EnrichissementGado   = SIMP (typ=('R','TXM'),defaut=0.,statut='f',fr="Enrichissement % en Gd2O3 du combustible"),
211         VecteurPu            = NUPL (   max='**',statut='f',
212                                 elements=(      SIMP (typ=Isotope,fr="Nom isotope du plutonium"), 
213                                                 SIMP (typ='R',fr="Pourcentage isotopique"))),
214         DateReference        = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de reference du combustible"),
215         DateDivergence       = SIMP (typ='I',min=3,max=3,statut='f',fr="Date J M A de divergence du reacteur ou ce combustible est charge"),
216         VieillissementJours  = SIMP (   typ    = 'R',
217                                 defaut = 0.,
218                                 statut = 'f',
219                                 fr     = "Nbre de jours de vieillissement du combustible, calculable si on donne DateDivergence")),
220   MasseVolumique       = SIMP (statut='f',typ=('R','I','TXM'),fr="Masse volumique theorique du materiau g/cm3"),
221   TauxEvidement        = SIMP (statut='f',typ=('R','I'),fr="Taux % d'evidement du materiau"),
222   TauxPorosite         = SIMP (statut='f',typ=('R','I'),fr="Taux % de porosite du materiau"),
223   Temperature          = SIMP (statut='f',typ=('R','I','TXM'),fr="Temperature en Celsius du materiau"),
224   GazRemplissage       = SIMP (statut='f',typ=(Isotope,Materiau),defaut='HE4',fr="Gaz de remplissage des evidements du materiau solide"),
225   PressionInitialeGaz  = SIMP (statut='f',typ=('R','I'),defaut=32.,fr="Pression en bars du gaz de remplissage des evidements"),
226   DilatationLineaire   = SIMP (statut='f',typ=('R','I'),fr="Coefficient de dilatation thermique lineaire cm/C du materiau"),
227   Chaine               = SIMP (statut='f',typ=ChaineFiliation,defaut='ChaineSaturee',fr="Chaine de filiation isotopique associee au materiau"),
228   TauxImpuretes = SIMP (statut='f',typ=('R','I'),fr="Taux % d'impuretes")
229  );
230 # ==================================================================================================================================
231 #                                    Definition des Classes elementaires pour la geometrie
232 # ==================================================================================================================================
233 #  Classe POINT : Classe de definition d'un point de l'espace
234 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
235 POINT = OPER (nom="POINT",op=0,sd_prod=Point,
236
237   fr          = "Definition d'un point de l'espace",
238   ang = "Definition of a point in space",
239   Coordonnees = SIMP (typ='R',min=2,max=3,statut='o',fr="Coordonnees du point dans l'espace")
240  );
241 # -----------------------------------------------------------------------------------------------------------------------------------
242 #  Classe VECTEUR : Classe de definition d'un vecteur dans l'espace
243 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
244 VECTEUR = OPER (nom="VECTEUR",op=0,sd_prod=Vecteur,
245
246   fr          = "Definition d'un vecteur dans l'espace",
247   ang = "Definition of a vector in space",
248   regles = (UN_PARMI ('Composantes','Points')),
249   Composantes = SIMP (typ='R',min=2,max=3,statut='f',fr="Composantes du vecteur en 2D ou 3D"),
250   Points      = SIMP (typ=Point,min=2,max=2,statut='f',fr="Vecteur defini par deux points") ) ;
251 # -----------------------------------------------------------------------------------------------------------------------------------
252 #  Classe DROITE : Classe de definition d'une droite
253 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
254 DROITE = OPER (nom="DROITE",op=0,sd_prod=Droite,
255
256   fr       = "Definition d'une droite par 2 POINTs, 1 POINT et 1 VECTEUR, ou Equation ax + by + cz + d = 0",
257   ang = "Definition of a straight line with 2 POINTs or with Equation ax + by + cz + d = 0",
258   regles = (UN_PARMI ('Points','Equation','VecteurOrigine')),
259   Points   = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition de la droite"),
260   Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation d'une droite"),
261   VecteurOrigine = FACT (statut='f',
262   Vecteur  = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur de la droite"),
263   Origine  = SIMP (typ=Point,statut='f',fr="Donnee d'un point de passage de la droite"))) ;
264 # -----------------------------------------------------------------------------------------------------------------------------------
265 #  Classe SEGMENT : Classe de definition d'un segment (Idem DROITE + Longueur et Origine)
266 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
267 SEGMENT = OPER (nom="SEGMENT",op=0,sd_prod=Segment,
268
269   fr       = "Definition d'un segment 2 Points ou Origine + ((Longueur + Equation ax + by + d = 0) ou vecteur)",
270   ang = "Definition of a segment ax + by + cz + d = 0",
271   regles = (UN_PARMI ('Points','Equation','Vecteur')),
272   Points   = SIMP (typ=Point,min=2,max=2,statut='f',fr="Deux points de definition du segment"),
273   Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation de la droite "),
274   Vecteur  = SIMP (typ=Vecteur,statut='f',fr="Donnee du vecteur directeur du segment"),
275   Longueur = SIMP (typ='R',statut='f',fr="Longueur du segment"),
276   Origine  = SIMP (typ=Point,statut='f',fr="Donnee de l'origine du segment") ) ;
277 # -----------------------------------------------------------------------------------------------------------------------------------
278 #  Classe ARC_CERCLE : Classe de definition d'un arc de cercle
279 #                      Angles donnes en degres 
280 #                       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
281 #                       Dans le cas 3D on donne en plus la hauteur et l'axe directeur de l'arc
282 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
283 ARC_CERCLE = OPER (nom="ARC_CERCLE",op=0,sd_prod=ArcCercle,
284
285   fr         = "Definition d'un arc de cercle",
286   ang = "Definition of a circular arc",
287   Type       = SIMP (typ='TXM',statut='f',defaut='2D',into=('2D','3D'),fr="Type d'arc 2D ou 3D"),
288   Rayon      = SIMP (typ='R',statut='o',fr="Rayon de l'arc de cercle"),
289   Angles     = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres de l'arc : Total et Debut"),
290   VecteurAxe = SIMP (typ=Vecteur,statut='f',fr="Vecteur directeur de l'axe de l'arc") ) ;
291 # -----------------------------------------------------------------------------------------------------------------------------------
292 #  Classe SECTEUR :     Classe de definition d'un disque ou d'un secteur d'une couronne circulaire
293 #                       Angle du secteur donne en degres (360° par defaut)
294 #                       Dans le cas 2D on peut positionner le secteur en donnant l'angle du debut de secteur par rapport a l'axe Ox
295 #                       Dans le cas 3D on donne en plus la hauteur et l'axe directeur du secteur
296 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
297 SECTEUR = OPER (nom="SECTEUR",op=0,sd_prod=Secteur,
298
299   fr         = "Definition d'un disque ou d'un secteur d'une couronne",
300   ang = "Definition of a circular sector",
301   Type       = SIMP (typ='TXM',statut='o',into=('2D','3D'),fr="Type de secteur 2D ou 3D"),
302   Rayons     = SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons interne et externe de la couronne"),
303   Angles     = SIMP (typ='R',max=2,defaut=(360.,0.),statut='f',fr="Angles en degres du secteur"),
304   Hauteur    = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du secteur"),
305   VecteurAxe = SIMP (typ=Vecteur,defaut=0.,statut='f',fr="Vecteur directeur de l'axe du secteur") ) ;
306 # -----------------------------------------------------------------------------------------------------------------------------------
307 #  Classe CONIQUE : Classe de definition d'une conique 2D
308 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
309 CONIQUE = OPER (nom="CONIQUE",op=0,sd_prod=Conique,
310
311   fr             = "Definition d'une conique 2D ax2+by2+cxy+dx+ey+f=0",
312   ang = "Definition of a quadratic curve 2D",
313   Equation       = SIMP (typ='R',min=2,max=6,statut='o',fr="Coefficients successifs abcdef de l'equation d'une conique"),
314   OrigineVecteur = NUPL (
315       elements = (SIMP (typ=Point),SIMP (typ=Vecteur)),
316       statut   = 'f',
317       fr       = "Donnee de l'origine et du vecteur directeur") ) ;
318 # -----------------------------------------------------------------------------------------------------------------------------------
319 #  Classe TRIANGLE : Classe de definition d'un triangle
320 #                      Angles donnes en degres par rapport a l'axe Ox horizontal
321 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
322 TRIANGLE = OPER (nom="TRIANGLE",op=0,sd_prod=Triangle,
323
324   fr     = "Definition d'un triangle",
325   ang = "Definition of a triangle",
326   regles = (UN_PARMI ('Points','AngleCotes')),
327   Points = SIMP (typ=Point,min=3,max=3,statut='f'),
328   AngleCotes = SIMP (typ='R',min=3,max=3,statut='f',fr="Donnee d'un Angle en degres et Longueurs de deux cotes")
329  );
330 # -----------------------------------------------------------------------------------------------------------------------------------
331 #  Classe RECTANGLE : Classe de definition d'un rectangle
332 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
333 RECTANGLE = OPER (nom="RECTANGLE",op=0,sd_prod=Rectangle,
334
335   fr     = "Definition d'un rectangle",
336   ang = "Definition of a rectangle",
337   regles = (UN_PARMI ('Points','Cotes')),
338   Points = SIMP (typ=Point,min=3,max=3,statut='f',fr="Definition du rectangle par trois points"),
339   Cotes  = SIMP (typ='R',min=2,max=2,statut='f',fr="Donnee de la longueur de deux cotes") ) ;
340 # -----------------------------------------------------------------------------------------------------------------------------------
341 #  Classe CARRE : Classe de definition d'un carre
342 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
343 CARRE = OPER (nom="CARRE",op=0,sd_prod=Carre,
344
345   fr     = "Definition d'un carre",
346   ang = "Definition of a square",
347   regles = (UN_PARMI ('Points','Cote')),
348   Points = SIMP (typ=Point,min=2,max=2,statut='f',fr="Definition du carre par deux points"),
349   Cote   = SIMP (typ='R',statut='f',fr="Donnee de la longueur du cote du carre")
350  );
351 # -----------------------------------------------------------------------------------------------------------------------------------
352 #  Classe HEXAGONE : Classe de definition d'un hexagone
353 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
354 HEXAGONE = OPER (nom="HEXAGONE",op=0,sd_prod=Hexagone,
355
356   fr    = "Definition d'un hexagone",
357   ang = "Definition of an hexagon",
358   Rayon = SIMP (typ='R',statut='f',fr="Rayon du cercle inscrit dans l'hexagone")
359  );
360 # -----------------------------------------------------------------------------------------------------------------------------------
361 #  Classe POLYGONE : Classe de definition d'un polygone
362 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
363 POLYGONE = OPER (nom="POLYGONE",op=0,sd_prod=Polygone,
364
365   fr     = "Definition d'un polygone",
366   ang = "Definition of a polygon",
367   Points = SIMP (typ=Point,max='**',statut='f',fr="Definition d'un polygone par tous ses points")
368  );
369 # ==================================================================================================================================
370 #            Definition des Classes pour une geometrie 3D : Elements geometriques combinatoires ou surfaciques
371 # L'utilisation de certaines classes de combinatoire en surfacique consiste a simplement specifier la position de l'objet
372 # ou a eliminer certaines surfaces limites de la classe
373 # Pour une sphere : donnee du centre de la sphere
374 # Pour un cylindre : Pas de donnee de la hauteur, mais donnee d'un point de l'axe du cylindre
375 # ==================================================================================================================================
376 # -----------------------------------------------------------------------------------------------------------------------------------
377 #  Classe SPHERE : Classe de definition d'une sphere (ou d'une sphere sectorisee ou decoupee en rondelles)
378 #                  Des portions de la sphere peuvent etre selectionnees en donnant leurs cotes limites sur un axe de la sphere
379 #                  (origine de l'axe au centre de la sphere, donc cotes comprises entre -R, +R si R est le rayon de la sphere)
380 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
381 SPHERE = OPER (nom="SPHERE",op=0,sd_prod=Sphere,
382
383   fr              = "Definition d'une forme spherique",
384   ang = "Definition of a spherical form",
385   Rayon           = SIMP (typ='R',statut='o',fr="Rayon de la sphere"),
386   Secteur         = SIMP (typ='R',statut='f',fr="Angle du secteur de la sphere"),
387   TranchesAxiales = NUPL (
388       max      = '**',
389       statut   = 'f',
390       fr       = "Limites des tranches axiales de la sphere sectorisee",
391       elements = (SIMP (typ='R',fr="Cote depart de la tranche"),SIMP (typ='R',fr="Cote finale de la tranche"))) ) ;
392 # -----------------------------------------------------------------------------------------------------------------------------------
393 #  Classe BOITE_RECTANGULAIRE : Classe de definition d'une forme parallelepipedique de cotes paralleles aux axes de reference
394 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
395 BOITE_RECTANGULAIRE = OPER (nom="BOITE_RECTANGULAIRE",op=0,sd_prod=BoiteRectangulaire,
396
397   fr    = "Definition d'une d'une forme parallelepipedique rectangulaire",
398   ang = "Definition of a rectangular box form",
399   Cotes = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite rectangulaire") ) ;
400 # -----------------------------------------------------------------------------------------------------------------------------------
401 #  Classe BOITE_GENERALE : Classe de definition d'une forme parallelepipedique quelconque
402 #        Le plan de base de la boite doit etre le plan xOy. On donne donc uniquement les 2 vecteurs **normaux**
403 #        aux 2 autres plans, et les 3 longueurs des arretes principales.
404 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
405 BOITE_GENERALE = OPER (nom="BOITE_GENERALE",op=0,sd_prod=BoiteGenerale,
406
407   fr                 = "Definition d'une forme parallelepipedique quelconque",
408   ang = "Definition of a general box form",
409   VecteursDirecteurs = SIMP (typ=Vecteur,min=2,max=2,statut='o',fr="Vecteurs normaux aux faces non horizontales de la boite"),
410   Cotes              = SIMP (typ='R',min=3,max=3,statut='o',fr="Longueurs des Cotes de la boite") ) ;
411 # -----------------------------------------------------------------------------------------------------------------------------------
412 #  Classe CYLINDRE_X : Classe de definition d'une forme cylindrique d'axe parallele a Ox
413 #         Pour tous les cylindres, la donnee de deux rayons transforme le cylindre circulaire en cylindre elliptique
414 #         La donnee d'un angle limite le cylindre a ce secteur
415 #         Pour un secteur d'un cylindre elliptique, il est necessaire de donner en plus l'angle de depart du secteur
416 #         par rapport a l'axe majeur de l'ellipse
417 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
418 CYLINDRE_X = OPER (nom="CYLINDRE_X",op=0,sd_prod=CylindreX,
419
420   fr      = "Definition d'une forme cylindrique d'axe parallele a Ox",
421   ang = "Definition of a right cylinder form // Ox",
422   Rayons  = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre X"),
423   Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre X"),
424   Angles  = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre X") ) ;
425 # -----------------------------------------------------------------------------------------------------------------------------------
426 #  Classe CYLINDRE_Y : Classe de definition d'une forme cylindrique d'axe parallele a Oy
427 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
428 CYLINDRE_Y = OPER (nom="CYLINDRE_Y",op=0,sd_prod=CylindreY,
429
430   fr      = "Definition d'une forme cylindrique d'axe parallele a Oy",
431   ang = "Definition of a right cylinder form // Oy",
432   Rayons  = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Y"),
433   Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Y"),
434   Angles  = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Y") ) ;
435 # -----------------------------------------------------------------------------------------------------------------------------------
436 #  Classe CYLINDRE_Z : Classe de definition d'une forme cylindrique d'axe parallele a Oz
437 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
438 CYLINDRE_Z = OPER (nom="CYLINDRE_Z",op=0,sd_prod=CylindreZ,
439
440   fr      = "Definition d'une forme cylindrique d'axe parallele a Oz",
441   ang = "Definition of a right cylinder form // Oz",
442   Rayons  = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre Z"),
443   Hauteur = SIMP (typ='R',statut='f',fr="Hauteur du cylindre Z"),
444   Angles  = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre Z") ) ;
445 # -----------------------------------------------------------------------------------------------------------------------------------
446 #  Classe CYLINDRE : Classe de definition d'une forme cylindrique quelconque
447 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
448 CYLINDRE = OPER (nom="CYLINDRE",op=0,sd_prod=Cylindre,
449
450   fr         = "Definition d'une forme cylindrique quelconque",
451   ang = "Definition of a general cylinder form",
452   Rayons     = SIMP (typ='R',max=2,statut='o',fr="Rayons mineur et majeur du cylindre"),
453   VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cylindre"),
454   Hauteur    = SIMP (typ='R',statut='f',fr="Hauteur du cylindre"),
455   Angles     = SIMP (typ='R',max=2,statut='f',fr="Angles du secteur du cylindre") ) ;
456 # -----------------------------------------------------------------------------------------------------------------------------------
457 #  Classe CONE : Classe de definition d'un forme conique
458 #           Une portion de cone peut etre definie en donnant les cotes axiales (origine de l'axe du cone au sommet du cone) de
459 #           la zone retenue
460 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
461 CONE = OPER (nom="CONE",op=0,sd_prod=Cone,
462
463   fr              = "Definition d'une forme conique",
464   ang = "Definition of a conic form",
465   DemiAngleSommet = SIMP (typ='R',statut='o',fr="Demi-angle au sommet"),
466   LimitesAxiales  = SIMP (typ='R',min=2,max=2,statut='f',fr="Limites axiales du cone"),
467   VecteurAxe      = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe du cone") ) ;
468 # -----------------------------------------------------------------------------------------------------------------------------------
469 #  Classe PRISME_HEXAGONAL : Classe de definition d'une forme de prisme hexagonal 3D
470 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
471 PRISME_HEXAGONAL = OPER (nom="PRISME_HEXAGONAL",op=0,sd_prod=PrismeHexagonal,
472
473   fr         = "Definition d'une forme de prisme hexagonal 3D",
474   ang = "Definition of a 3D hexagonal form",
475   Rayon      = SIMP (typ='R',statut='o',fr="Rayon du cercle circonscrit (=cote de l'hexagone)"),
476   Hauteur    = SIMP (typ='R',statut='f',fr="Hauteur de l'hexagone"),
477   VecteurAxe = SIMP (typ=Vecteur,statut='o',fr="Vecteur directeur de l'axe de l'hexagone") ) ;
478 # -----------------------------------------------------------------------------------------------------------------------------------
479 #  Classe TORE : Classe de definition d'une forme toroidale
480 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
481 TORE = OPER (nom="TORE",op=0,sd_prod=Tore,
482
483   fr     = "Definition d'une forme toroidale",
484   ang = "Definition of a toroidal form",
485   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") ) ;
486 # ==================================================================================================================================
487 #               Definition des Classes pour une geometrie 3D : Elements geometriques surfaciques
488 # ==================================================================================================================================
489 # ----------------------------------------------------------------------------------------------------------------------------------
490 #  Classe PLAN : Classe de definition d'un plan
491 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
492 PLAN = OPER (nom="PLAN",op=0,sd_prod=Plan,
493
494   fr       = "Definition d'un plan ax + by + cz + d = 0",
495   ang = "Definition of a plane surface ax + by + cz + d = 0",
496   Points   = SIMP (typ=Point,min=3,max=3,statut='f',fr="Donnee de 3 points non alignes"),
497   Equation = SIMP (typ='R',min=2,max=4,statut='f',fr="Coefficients successifs abcd de l'equation du plan")
498  );
499 # ----------------------------------------------------------------------------------------------------------------------------------
500 #  Classe PLAN_X : Classe de definition d'un plan perpendiculaire a l'axe Ox
501 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
502 PLAN_X = OPER (nom="PLAN_X",op=0,sd_prod=PlanX,
503
504   fr   = "Definition d'un plan perpendiculaire a Ox",
505   ang = "Definition of a plane surface perpendicular to Ox",
506   Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OyOz") ) ;
507 # ----------------------------------------------------------------------------------------------------------------------------------
508 #  Classe PLAN_Y : Classe de definition d'un plan perpendiculaire a l'axe Oy
509 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
510 PLAN_Y = OPER (nom="PLAN_Y",op=0,sd_prod=PlanY,
511
512   fr   = "Definition d'un plan perpendiculaire a Oy",
513   ang = "Definition of a plane surface perpendicular to Oy",
514   Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOz") ) ;
515 # ----------------------------------------------------------------------------------------------------------------------------------
516 #  Classe PLAN_Z : Classe de definition d'un plan perpendiculaire a l'axe Oz
517 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
518 PLAN_Z = OPER (nom="PLAN_Z",op=0,sd_prod=PlanZ,
519
520   fr   = "Definition d'un plan perpendiculaire a Oz",
521   ang = "Definition of a plane surface perpendicular to Oz",
522   Cote = SIMP (typ='R',statut='o',fr="Cote du plan // OxOy") ) ;
523 # -----------------------------------------------------------------------------------------------------------------------------------
524 #  Classe POLYEDRE : Classe de definition d'une forme polyhedrique 3D quelconque (N faces, N > 4)
525 #                    Definition surfacique : Donnee des N plans et du choix du cote positif ou negatif
526 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
527 POLYEDRE = OPER (nom="POLYEDRE",op=0,sd_prod=Polyedre,
528
529   fr    = "Definition d'une forme polyhedrique 3D quelconque ",
530   ang = "Definition of a 3D polyhedron form with N > 4 plane faces",
531   Plans = NUPL (
532       min      = 5,
533       max      = '**',
534       statut   = 'o',
535       fr       = "Surfaces planes limites du polyedre",
536       elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"),
537                   SIMP (typ='TXM',into=('Plus','Moins'),fr="Choix du cote positif ou negatif de l'espace"))) 
538                 ) ;
539
540 #     elements = (SIMP (typ=(Plan,PlanX,PlanY,PlanZ),fr="Plans limites du polyedre"),
541 # ----------------------------------------------------------------------------------------------------------------------------------
542 #  Classe QUADRIQUE : Classe de definition d'une quadrique 3D
543 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
544 QUADRIQUE = OPER (nom="QUADRIQUE",op=0,sd_prod=Quadrique,
545
546   fr       = "Definition d'une quadrique 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0",
547   ang = "Definition of a quadratic curve 3D ax2+by2+cz2+dxy+eyz+fxz+gx+hy+iz+j=0",
548   Equation = SIMP (typ='R',min=2,max=10,statut='o',fr="Coefficients successifs abcdefghij de l'equation d'une quadrique") ) ;
549 # -----------------------------------------------------------------------------------------------------------------------------------
550 #  Classe CELLULE : Classe de definition d'une cellule (ensemble elementaire  de regions annulaires et sectorisees)
551 #                   Apres la hauteur de la cellule, entree des donnees par listes successives pour l'ensemble des couronnes de la
552 #                   cellule, la zone externe etant decrite a part dans l'attribut FormeTechnologique :
553 #                   - Liste des materiaux
554 #                   - Liste des rayons des couronnes correspondantes
555 #                   - Liste des sous-couronnes : - Numero de couronne a discretiser (Numero 1 a partir du centre),
556 #                                                 - Nombre de sous-couronnes,
557 #                                                 - Mot-cle Equivolumique si decoupage en sections transverses egales,
558 #                                                 - Rayons des couronnes intermediaires ou proportions volumiques si mot-cle
559 #                                                   Proportions indique anterieurement.
560 #                   - Liste des sectorisations :  - Nom de couronne a sectoriser ,
561 #                                                 - Nombre de secteurs,
562 #                                                 - Mot-cle Equivolumique si decoupage en secteurs egaux et positionnement du premier
563 #                                                   secteur par rapport a l'axe x, et pas de changement de composition du secteur,
564 #                                                 - Mot-cle alternatif Angle si on veut modifier ou positionner les secteurs dans la
565 #                                                   couronne : on donne alors des triplets de donnees pour chaque secteur :
566 #                                                               - nom du materiau composant le le secteur,
567 #                                                               - position trigonometrique en \260 du debut du secteur
568 #                                                               - et angle en \260 du secteur.
569 #                                                 Le trace des secteurs sont definis en partant du centre de la couronne.
570 #                                                 Pour la sectorisation de la forme externe, deux cas se presentent :
571 #                                                       - soit pas de couronnes internes : les secteurs se tracent alors en partant
572 #                                                         du centre de la forme externe,
573 #                                                       - dans le cas contraire, les secteurs partent du centre des couronnes.
574 #                                                 Les secteurs peuvent ne pas couvrir l'ensemble de la couronne.
575 #                   Pour la zone peripherique, on doit definir les cotes de la cellule (cas cartesien), son materiau, sa
576 #                   discretisation, et le decentrage du centre des couronnes par rapport au centre de ce contour peripherique
577 #                   (Coordonnees x,y du centre des couronnes / au centre du contour)
578 #                   Pour le moment, limitation a 2D
579 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
580 CELLULE = OPER (nom="CELLULE",op=0,sd_prod=Cellule,
581
582   fr             = "Definition d'une cellule elementaire d'un assemblage",
583   ang = "Definition of a basic pin cell",
584   Type           = SIMP (typ='TXM',defaut='Combustible',
585                          into=( 'Combustible','BarreGrise','BarreNoire','BarreAcier','BarreAic','BarreB4c',
586                                 'Detecteur','Trou','TubeGuide','Postiche','Pyrex','ExPyrex','Gadolinium',
587                                 'CellType1','CellType2','CellType3'),statut='o'),
588   HauteurMoyenne = SIMP (typ='R',defaut=1.,statut='o',fr="Hauteur moyenne de la cellule de base"),
589   Couronnes      = FACT (
590       NomsSymboliques = SIMP (typ='TXM',max='**',statut='o',fr="Liste des noms arbitraires des couronnes"),
591       Materiaux       = SIMP (typ=Materiau,max='**',statut='o',fr="Liste des materiaux des couronnes"),
592       Temperatures    = SIMP (typ=('R','I','TXM'),max='**',statut='o',fr="Liste des temperatures des couronnes"),
593       Rayons          = SIMP (typ='R',max='**',statut='o',fr="Liste des rayons des couronnes"),
594       RayonsMineurs   = SIMP (typ='R',max='**',statut='f',fr="Liste des rayons mineurs des couronnes elliptiques"),
595       Hauteurs        = SIMP (typ='R',max='**',statut='f',fr="Liste des hauteurs des couronnes")),
596   SousCouronnes   = FACT (
597       max      = '**',
598       statut   = 'f',
599       NomCouronne               = SIMP (typ='TXM',fr="Nom symbolique de la couronne"),
600       NbSousCouronnes           = SIMP (typ='I',fr="Nombre de sous-couronnes de discretisation"),
601       TypeDiscretisation        = SIMP (typ='TXM',defaut='Equivolumique',into=('Equivolumique','Proportions','Equidistant'),statut='f'),
602       ProportionsVolumiques     = SIMP (typ='R',statut='f',max='**',fr="Proportions volumiques optionnelles des sous-couronnes"),
603       ProfilTemperature         = SIMP (typ='R',max='**',statut='f',fr="Profil de temperature")), 
604   Homogeneisation = FACT (
605       max      = '**',
606       statut   = 'f',
607       NomCouronne       = SIMP (typ='TXM',fr="Nom arbitraire de la couronne homogeneisee"),
608       ListeCouronnes    = SIMP (typ='TXM',max='**',fr="Liste des noms des couronnes jointives a homogeneiser")),
609   Secteurs     = FACT (
610       max      = '**',
611       statut   = 'f',
612       NomCouronne = SIMP (typ='TXM',statut='o',fr="Nom de la couronne ou de la forme externe a sectoriser"),
613       NbSecteurs  = SIMP (typ='I',fr="Nombre de secteurs de la couronne",statut='o'),
614       TypeSectorisation = SIMP (typ='TXM',defaut='Coins',into=('Equivolumique','Angle','Coins','MilieuxCotes'),statut='f'),
615       Sectorisation = FACT (
616               max       = '**',
617               statut    = 'f',
618               Materiaux = SIMP (typ=Materiau,max='**',fr="Materiau des secteurs"),
619               Temperatures = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature des secteurs"),
620               AnglesDepart = SIMP (typ='R',max='**',fr="Angle de depart du secteur"),
621               Angles       = SIMP (typ='R',max='**',fr="Angle du secteur"))),
622   FormeExterne = FACT (
623       NomSymbolique = SIMP (typ='TXM',statut='f'),
624       Type          = SIMP (
625           typ=(ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone),
626           statut = 'f',  # la donnee est facultative si la cellule est inserree dans un reseau
627           fr     = "Forme geometrique exterieure"),
628       Materiau      = SIMP (typ=Materiau,fr="Materiau de la forme externe"),
629       Temperature   = SIMP (typ=('R','I','TXM'),fr="Temperature du materiau de la forme externe"),
630       Decentrement  = SIMP (
631           typ    = 'R',
632           min    = 2,
633           max    = 3,
634           defaut = (0.,0.,0.),
635           statut = 'f',
636           fr     = "Coordonnees xyz du centre des couronnes / centre du contour")) ) ;
637 # -----------------------------------------------------------------------------------------------------------------------------------
638 #  Classe CLUSTER : Classe de definition d'un cluster de cellules cylindriques de forme exterieure quelconque
639 #                   Un cluster est defini comme une superposition centree de cadrans telephoniques (a l'ancienne mode), chaque
640 #                   cadran ayant des trous de tailles differentes, l'ensemble etant dispose dans un contour de forme quelconque.
641 #                   Possibilites donnees ci-dessous : 
642 #                       - Positionnement des couronnes de canaux, chaque canal etant une CELLULE predefinie,
643 #                       - Definition du fond du cluster : 
644 #                               - Serie de couronnes de materiaux distincts
645 #                               - Forme exterieure quelconque
646 #                       - Sectorisation eventuelle de la zone peripherique
647 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
648 CLUSTER = OPER (nom="CLUSTER",op=0,sd_prod=Cluster,
649   fr               = "Definition d'un cluster de cellules cylindriques",
650   ang = "Definition of a cylindrical cell cluster",
651   Hauteur          = SIMP (typ='R',defaut=1.,statut='f',fr="Hauteur du cluster"),
652   Couronnes        = FACT (
653       Cellules = SIMP (typ=Cellule,max='**',fr="Liste des cellules sur chaque cercle"),
654       Rayons   = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes de cellules"),
655       Angles   = SIMP (typ='R',max='**',fr="Liste des pas angulaires de positionnement des cellules cylindriques")),
656   FormeGlobale     = FACT (
657       NomSymbolique        = SIMP (typ='TXM'),
658       RayonsInternes       = SIMP (typ='R',max='**',fr="Liste des rayons des couronnes internes",statut='f'),
659       MateriauxInternes    = SIMP (typ=Materiau,max='**',fr="Materiaux Couronnes internes",statut='f'),
660       TemperaturesInternes = SIMP (typ=('R','I','TXM'),max='**',fr="Temperatures des materiaux internes",statut='f'),
661       FormeExterne         = SIMP (
662           typ    = (ArcCercle,Carre,Rectangle,Hexagone,Triangle,Polygone),
663           statut = 'o',
664           fr     = "Forme geometrique exterieure"),
665       MateriauExterne      = SIMP (typ=Materiau,fr="Materiau de la forme externe",statut='o'),
666       TemperatureExterne   = SIMP (typ=('R','I','TXM'),max='**',fr="Temperature du materiau externe",statut='f'),
667       Decentrement         = SIMP (
668           typ    = 'R',
669           min    = 2,
670           max    = 3,
671           defaut = (0.,0.,0.),
672           statut = 'f',
673           fr     = "Coordonnees xyz du centre des couronnes / centre du contour")),
674   SecteursExternes = FACT (
675       NbSecteurs   = SIMP (typ='I',fr="Nombre de secteurs de la couronne externe",statut='o'),
676       TypeSecteur  = SIMP (
677           typ    = 'TXM',
678           defaut = 'Coins',
679           into   = ('Equivolumique','Angle','Coins','MilieuxCotes'),
680           statut = 'f'),
681       Materiaux    = SIMP (max='**',typ=Materiau,fr="Materiau des secteurs",statut='f'),
682       AngleDepart  = SIMP (max='**',typ='R',fr="Angle de depart des secteurs",statut='f'),
683       AngleSecteur = SIMP (max='**',typ='R',fr="Angle des secteurs",statut='f')) ) ;
684 # -----------------------------------------------------------------------------------------------------------------------------------
685 #  Classe ORIENTATION :         Classe de definition d'une orientation angulaire dans un plan 2D apres symetrie eventuelle / Ox
686 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
687 ORIENTATION = OPER (nom="ORIENTATION",op=0,sd_prod=Orientation,
688
689   fr              = "Definition d'une orientation d'un reseau ou d'une cellule",
690   ang = "Definition of a cell or lattice orientation",
691   Symetrie      = SIMP (typ=(Plan,PlanX,PlanY,PlanZ),statut='f',fr="Indication d'une operation de symetrie / Plan"),
692   AngleRotation = SIMP (typ='R',defaut=0.,statut='f',fr="Angle de rotation en degres"),
693   CentreRotation = SIMP (typ=Point,statut='f',fr='Centre de rotation'),
694   AxeRotation    = SIMP (typ=Vecteur,statut='f',fr="Vecteur de l'axe de rotation") ) ;
695 # -----------------------------------------------------------------------------------------------------------------------------------
696 #  Classe FORME_POSITIONNEE :   Classe de definition d'une forme geometrique positionnee
697 #                               La position est definie a l'aide du centre de la forme geometrique, 
698 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
699 FORME_POSITIONNEE = OPER (nom="FORME_POSITIONNEE",op=0,sd_prod=FormePositionnee,
700
701   fr             = "Definition d'une forme positionnee",
702   ang = "Definition of a shape and its position",
703   Forme          = SIMP (
704       typ    = (Sphere,BoiteRectangulaire,BoiteGenerale,CylindreX,CylindreY,CylindreZ,Cylindre,Cone,
705                 PrismeHexagonal,Tore,Polyedre,Cellule,Cluster),
706       statut = 'o',
707       fr     = "Forme geometrique de base a positionner"),
708   PositionCentre   = SIMP (typ=Point,statut='o',fr="Coordonnees du centre de la forme geometrique"),
709   OrientationForme = SIMP (typ=Orientation,statut='f',fr="Orientation de la forme")
710  ) ;
711 # -----------------------------------------------------------------------------------------------------------------------------------
712 #  Classe GEOMETRIE_SURFACIQUE : Classe de definition d'une geometrie surfacique
713 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
714 GEOMETRIE_SURFACIQUE = OPER (nom="GEOMETRIE_SURFACIQUE",op=0,sd_prod=GeometrieSurfacique,
715
716   fr            = "Definition d'une geometrie surfacique",
717   ang = "Definition of a surfacic geometry",
718   MateriauRemplissage = SIMP (typ=Materiau,statut='o',fr="Materiau de remplissage de la geometrie surfacique"),
719   Surfaces      = NUPL (
720       max      = '**',
721       statut   = 'o',
722       fr       = "Serie de couples (Surface,Plus ou Moins) definissant les surfaces limites de la geometrie",
723       elements = (
724           SIMP (typ='TXM'),
725           SIMP (typ='TXM',into=('Plus','Moins'))))
726  );
727
728 #         simp (typ=(PlanX,PlanY,PlanZ,Plan,CylindreX,CylindreY,CylindreZ,Cylindre,Sphere,Cone,Quadrique)),
729
730 # -----------------------------------------------------------------------------------------------------------------------------------
731 #  Classe GEOMETRIE_COMBINATOIRE : Classe de definition d'une geometrie combinatoire
732 #                                  Ecrasement : Constitution par ecrasements successifs (dans l'ordre des donnees) de la
733 #                                               Geometrie Initiale, la frontiere externe etant celle de la geometrie initiale
734 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
735 GEOMETRIE_COMBINATOIRE = OPER (nom="GEOMETRIE_COMBINATOIRE",op=0,sd_prod=GeometrieCombinatoire,
736
737   fr                    = "Definition d'une geometrie combinatoire",
738   ang = "Definition of a combinatorial geometry",
739   GeometriePremierPlan  = SIMP (typ=FormePositionnee,statut='o',fr="Geometrie se trouvant au premier plan"),
740   GeometrieEcrasee      = SIMP (typ=FormePositionnee,max='**',statut='f',
741                                 fr="Geometries ecrasées et surchargées par la GeometriePremierPlan"),
742   GeometrieUnion        = SIMP (typ=FormePositionnee,max='**',statut='f',
743                                 fr="Geometries a reunir a la GeometriePremierPlan en gardant les interfaces, les intersections etant des volumes particuliers"),
744   GeometrieReunion      = SIMP (typ=FormePositionnee,max='**',statut='f',
745                                 fr="Geometries a reunir a la GeometriePremierPlan pour former un volume unique"),
746   GeometrieIntersection = SIMP (typ=FormePositionnee,max='**',statut='f',
747                                 fr="Geometries a intersecter avec la GeometriePremierPlan")
748  ) ; 
749
750 # -----------------------------------------------------------------------------------------------------------------------------------
751 #  Classe CORRESPONDANCE_REPERE_POSITION_RESEAU : Classe de definition de la position des assemblages combustibles dans un REP
752 #                                           Reperes (bataille navale ou autre) et
753 #                                           Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier
754 #                                           Origine des coordonnees en bas a gauche d'un systeme en xy
755 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
756 CORRESPONDANCE_REPERE_POSITION_RESEAU = OPER (nom="CORRESPONDANCE_REPERE_POSITION_RESEAU",op=0,sd_prod=CorrespondanceReperePositionReseau,
757
758   fr                        = "Correspondance entre reperes alphanumeriques et cases d'un reseau",
759   ang = "Alphanumeric identificators and lattice coordinates",
760   Positions                 = NUPL (    max='**',statut='o',
761                                         elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"),
762                                                   SIMP (typ='I',fr="Premiere Coordonnee entiere de l'assemblage"),
763                                                   SIMP (typ='I',fr="Seconde Coordonnee entiere de l'assemblage")))
764  );
765
766 # -----------------------------------------------------------------------------------------------------------------------------------
767 # Classe RESEAU :
768 #   Classe de definition d'un reseau de juxtapositions de cellules ou de reseaux
769 #   Assemblage de cellules ou de reseaux dans une grille rectangulaire ou hexagonale
770 #   Les positions des cellules et des reseaux dans le nouveau reseau sont a fournir sur les mailles 
771 #   du reseau sans tenir compte des symetries, 
772 #   Le reseau peut etre charge :
773 #     - de maniere uniforme : un seul type de CELLULE ou de RESEAU 
774 #     - de maniere complete : a chaque maille doit etre affecte un reseau ou une cellule et optionnellement son 
775 #       orientation, l'ordre des donnees dans le plan radial etant celui obtenu en partant de l'element le plus
776 #       bas a gauche, et dans le sens axial ensuite (eventuellement si 3D) 
777 #     - de maniere partielle : liste des cellules et reseaux charges et leur position xyz dans le nouveau reseau
778 #       et orientations correspondantes de ces cellules et reseaux
779 #   Des reperes alphanumeriques arbitraires peuvent etre associes a chaque maille du reseau, ce qui permet
780 #   si necessaire de manipuler ces elements du reseau par l'intermediaire de ces symboles (exemple des 
781 #   reperes bataille navale des assemblages dans le reseau d'un coeur REP).
782 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
783 RESEAU = OPER (nom="RESEAU",op=0,sd_prod=Reseau,
784
785   fr                    = "Definition d'un reseau compose de juxtapositions de cellules, de reseaux ou d'assemblages",
786   en                    = "Definition of a lattice",
787   Identificateur        = SIMP (typ='TXM',statut='f',fr="Identificateur arbitraire du reseau"),
788   TypeGeometrie         = SIMP (typ='TXM',into=('cartesienne','hexagonale'),defaut='cartesienne',statut='f'),
789   NbMaillesX            = SIMP (typ='I',defaut=17,statut='o',fr="Nbre de mailles sur le premier axe du reseau"),
790   NbMaillesY            = SIMP (typ='I',defaut=17,statut='f',fr="Nbre de mailles sur le second axe du reseau"),
791   NbMaillesZ            = SIMP (typ='I',defaut=1 ,statut='f',fr="Nbre de mailles sur l'axe vertical du reseau"),
792   PasReseau             = SIMP (typ='R',defaut=1.26 ,statut='f',max=2,fr="Pas du reseau en X et Y"),
793   MateriauRemplissage   = SIMP (typ=Materiau,defaut='ModExt',statut='f',fr="Materiau de remplissage du reseau"),
794   TypeDefinition        = SIMP (typ='TXM',statut='f',defaut="Complet",into=("Uniforme","Complet","Partiel")),
795   BlocUniforme          = BLOC (condition = "TypeDefinition=='Uniforme'",
796                                 ElementsBase  = SIMP (typ=(Cellule,Reseau,Cluster,GeometrieCombinatoire,AssemblageCombustibleCharge),statut='o',
797                                                            fr = "Remplissage uniforme du nouveau reseau par un element particulier"),
798                                 OrientationElement = SIMP (typ=Orientation,fr="Orientation de l'element geometrique de base",statut='f')),
799   BlocComplet           = BLOC (condition = "TypeDefinition=='Complet'",      
800                                 ElementsBase    = NUPL (max='**', statut='f',
801                                                         elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)),
802                                                                   SIMP (typ='TXM',fr="Sigle ou repere associe a l'element geometrique de base"))),
803                                 Chargement      = SIMP (typ='TXM',statut='f',max='**',
804                                                         fr="Liste ordonnee des sigles associes aux elements geometriques charges"),                                                                                                
805                                 Regroupement    = SIMP (typ='I',statut='f',max='**',
806                                                         fr="Indices de regroupement des elements en approximation multicellule"),                                                                                                
807                                 Reperes         = SIMP (typ='TXM',max='**',statut='f',fr="Reperes arbitraires des elements charges"),
808                                 ),
809   BlocPartiel           = BLOC (condition = "TypeDefinition=='Partiel'",
810                                 Chargement  = FACT (max='**',
811                                         ElementsPositionnes = NUPL (max='**', statut='f',
812                                                         elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)),
813                                                                   SIMP (typ='I',min=2,max=2,fr="Coordonnees i j de l'element geometrique de base"))),                                 
814                                         ElementsReperes    = NUPL (max='**', statut='f',
815                                                         elements=(SIMP (typ=(Cellule, Reseau, GeometrieCombinatoire,AssemblageCombustibleCharge)),
816                                                                   SIMP (typ='TXM',fr="Repere associe a l'element geometrique de base"))),                                
817                                         CorrespondanceReperePositions = SIMP (typ=CorrespondanceReperePositionReseau,
818                                                                               statut='f',
819                                                                               fr="Correspondance entre Repere alphanumerique et coordonnees dans le reseau"),
820                                         OrientationElement = SIMP (typ=Orientation,max='**',statut='f',fr="Orientation des elements a positionner"),
821                                         )),
822  ZonePeripherique      = FACT (
823                           Epaisseurs      = SIMP (typ='R',max='**',statut='f',fr="Liste des epaisseurs des couches peripheriques"),
824                           Materiaux       = SIMP (typ=Materiau,max='**',statut='f',fr="Liste des materiaux des couches peripheriques"),
825                           MateriauExterne = SIMP (typ=Materiau,statut='f',fr="Materiau de remplissage de la zone externe du reseau hexagonal"))
826  );
827
828 # -----------------------------------------------------------------------------------------------------------------------------------
829 #  Classe GRILLE_ASSEMBLAGE : Classe de definition des grilles composant le squelette des assemblages combustibles
830 #                             Caracteristiques  technologiques (dimension, materiaux de composition) et positionnement simplifie   
831 #                             des materiaux dans les canaux de l'assemblage pour dilution homogene a 2D dans le milieu peripherique.
832 #                               - Materiaux fournis sous forme de couples (nom de materiau et masse en g)
833 #                               - Repartition decrite en donnant pour une liste de materiaux (faisant partie des materiaux
834 #                                 precedemment indiques) la liste des types de cellules (precedee du mot-cle TypeCellule) et des 
835 #                                 types de materiaux (precedes du mot-cle TypeMateriau) devant etre modifies par la presence des
836 #                                 grilles 
837 #                                                    < liste de MATERIAU >, 
838 #                                       TypeCellule  < liste de types de cellule >,
839 #                                       TypeMateriau < liste de types de materiau >
840 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
841 GRILLE_ASSEMBLAGE = OPER (nom="GRILLE_ASSEMBLAGE",op=0,sd_prod=GrilleAssemblage,
842
843   fr             = "Definition d'une grille d'assemblage",
844   ang = "Definition of an elementary assembly grid",
845   TypeGrille     = SIMP (typ='TXM',defaut='GrilleMelange',statut='f',fr="Type de grille de structure assemblage"),
846   Hauteur        = SIMP (typ='R',defaut=3.3,statut='f',fr="Hauteur de la grille de structure assemblage"),
847   Largeur        = SIMP (typ='R',defaut=21.338,statut='f',fr="Largeur de la grille de structure assemblage"),
848   MateriauxMasse = NUPL (
849       elements = (SIMP (typ=Materiau),SIMP (typ='R')),
850       max      = '**',
851       statut   = 'f',
852       fr       = "Serie de couples (Materiau,masse en g) de composition de la grille"),
853   Repartition    = FACT (
854       max      = '**',
855       statut   = 'o',
856       MateriauGrille = SIMP (typ=Materiau,fr="Nom du materiau a repartir",statut='o'),          
857       TypeCellule    = SIMP (typ='TXM',max='**',statut='o',fr="Liste des types de cellule ou est reparti le materiau"),
858       TypeMateriau   = SIMP (typ='TXM',max='**',statut='o') )
859                         ) ;
860 # -----------------------------------------------------------------------------------------------------------------------------------
861 #  Classe PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE  :   Classe de definition de l'embout inferieur d'un assemblage combustible
862 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
863 PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_INFERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieInferieureAssemblageCombustible,
864
865   fr                                       = "Definition de la partie inferieure d'un assemblage combustible",
866   ang = "Definition of the bottom part of a fuel assembly",
867   MateriauEmbout                           = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau de l'embout inferieur"),
868   MasseBouchonInferieurCrayonCombustible   = SIMP (typ='R',statut='o',fr="Masse du bouchon inferieur du crayon combustible"),
869   HauteurBouchonInferieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon inferieur du crayon combustible"),
870   MateriauBouchonInferieurCrayonCombustible     = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon inferieur du crayon combustible"),
871   MasseEmbout                              = SIMP (typ='R',statut='o',fr="Masse de l'embout inferieur"),
872   EpaisseurPlaqueAdaptatrice               = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice de l'embout inferieur"),
873   LargeurPlaqueAdaptatrice                 = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice de l'embout inferieur"),
874   TrousPlaqueAdaptatrice                   = NUPL (
875       max      = '**',
876       statut   = 'o',
877       elements = ( SIMP (typ='I',statut='o',fr="Nombre de trous de taille definie ci-apres"),
878                    SIMP (typ='TXM',into=('Rayon','Cotes'),statut='o',fr="Choix de la forme des trous, elliptique ou rectangulaire"),
879                    SIMP (typ='R',min=2,max=2,statut='o',fr="Rayons ou cotes des trous"),
880                    SIMP (typ='TXM',defaut='Hauteur',into=('Hauteur','Epaisseur'),statut='o',fr="Mot-cle au choix"),
881                    SIMP (typ='R',statut='o',fr="Hauteur des trous dans la plaque adaptatrice"))),
882   JeuBouchonCombustiblePlaque   = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre bouchon combustible et plaque adaptatrice"),
883   HauteurPied                   = SIMP (typ='R',statut='o',fr="Hauteur du pied de l'embout inferieur"),
884   CapuchonRint                  = SIMP (typ='R',statut='f',fr="Rayon interne du capuchon"),
885   CapuchonRext                  = SIMP (typ='R',statut='f',fr="Rayon externe du capuchon"),
886   HauteurVisEpaulee             = SIMP (typ='R',statut='f',fr="Hauteur des vis epaulees des tubes guides"),
887   MasseVisEpaulee               = SIMP (typ='R',statut='f',fr="Masse totale des vis epaulees des tubes guides"),
888   VisEpauleeRint                = SIMP (typ='R',statut='f',fr="Rayon interne d'une vis epaulee"),
889   VisEpauleeRext                = SIMP (typ='R',statut='f',fr="Rayon externe d'une vis epaulee"),
890   MasseFiltre                   = SIMP (typ='R',statut='f',fr="Masse du filtre anti-debris"),
891   MateriauFiltre                = SIMP (typ=Materiau, statut='f', defaut='INCONEL',fr="Materiau du filtre anti-debris"),
892   HauteurCale                   = SIMP (typ='R',statut='f',fr="Hauteur de la cale dans le crayon combustible"),
893   MateriauCale                  = SIMP (typ=Materiau, statut='f', defaut='ACIER',fr="Materiau de la cale dans le crayon combustible"),
894   RayonPionCentrage             = SIMP (typ='R',statut='f',fr="Rayon externe des pions de centrage de la plaque inferieure coeur"),
895   HauteurPionCentrage           = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage de la plaque inferieure coeur"),
896   HauteurOgivePionCentrage      = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage de la plaque inferieure coeur"),
897   MateriauPionCentrage          = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage de la plaque inferieure coeur"),
898   HauteurBouchonTubeGuide       = SIMP (typ='R',statut='f',fr="Hauteur des bouchons des tubes guides"),
899   MateriauBouchonTubeGuide      = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des bouchons des tubes guides") 
900                                           ) ;
901
902 # -----------------------------------------------------------------------------------------------------------------------------------
903 #  Classe PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE :    Classe de definition de l'embout superieur d'un assemblage combustible
904 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
905 PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="PARTIE_SUPERIEURE_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PartieSuperieureAssemblageCombustible,
906
907   fr                                       = "Definition de la partie superieure d'un assemblage combustible",
908   ang = "Definition of the top part of a fuel assembly",
909   MateriauEmbout                           = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="materiau  de l'embout superieur"),
910   MasseBouchonSuperieurCrayonCombustible   = SIMP (typ='R',statut='o',fr="Masse du bouchon superieur du crayon combustible"),
911   HauteurBouchonSuperieurCrayonCombustible = SIMP (typ='R',statut='o',fr="Hauteur du bouchon superieur du crayon combustible"),
912   MateriauBouchonSuperieurCrayonCombustible     = SIMP (typ=Materiau, statut='f',defaut='ZIRCALOY',fr="Materiau du bouchon superieur du crayon combustible"),
913   RessortCrayonCombustible                 = SIMP (typ='R',statut='o',fr="Masse du ressort du crayon combustible"),
914   HauteurChambreExpansion                  = SIMP (typ='R',statut='o',fr="Hauteur de la chambre d'expansion"),
915   MasseEmbout                              = SIMP (typ='R',statut='o',fr="Masse de l'embout superieur"),
916   HauteurEmbout                            = SIMP (typ='R',statut='o',fr="Hauteur de l'embout superieur"),
917   MasseRessortsEmbout                      = SIMP (typ='R',statut='o',fr="Masse des ressorts de l'embout superieur"),
918   MateriauRessortsEmbout                   = SIMP (typ=Materiau,  statut='f', defaut='INCONEL',fr="Materiau des ressorts de l'embout superieur"),
919   EpaisseurPlaqueAdaptatrice               = SIMP (typ='R',statut='o',fr="Epaisseur de la plaque adaptatrice"),
920   LargeurPlaqueAdaptatrice                 = SIMP (typ='R',statut='o',fr="Largeur de la plaque adaptatrice"),
921   TrousPlaqueAdaptatrice                   = NUPL (
922       max      = '**',
923       statut   = 'o',
924       elements = (      SIMP (typ='I',),
925                         SIMP (typ='TXM',into=('Rayon','Cotes')),
926                         SIMP (typ='R',min=2,max=2,fr="Rayons mineur et majeur ou Cotes du trou"),
927                         SIMP (typ='TXM',into=('Hauteur','Epaisseur')),
928                         SIMP (typ='R',fr="Hauteur du trou"))), 
929   JeuBouchonCombustiblePlaque              = SIMP (typ='R',statut='o',fr="Hauteur du jeu entre Bouchon combustible et Plaque adaptatrice"),
930   EpaisseurJupe                            = SIMP (typ='R',statut='o',fr="Epaisseur de la jupe de l'embout superieur"),
931   HauteurJupe                              = SIMP (typ='R',statut='f',fr="Hauteur de la jupe de l'embout superieur"),
932   RayonPionCentrage                        = SIMP (typ='R',statut='f',fr="Rayon des pions de centrage superieurs"),
933   HauteurPionCentrage                      = SIMP (typ='R',statut='f',fr="Hauteur des pions de centrage superieurs"),
934   HauteurOgivePionCentrage                 = SIMP (typ='R',statut='f',fr="Hauteur de l'ogive des pions de centrage superieurs"),
935   MateriauPionCentrage                     = SIMP (typ=Materiau, statut='f',defaut='ACIER',fr="Materiau des pions de centrage superieurs"),
936   RayonInterneManchon                      = SIMP (typ='R',statut='f',fr="Rayon interne des manchons des tubes guides"),
937   RayonExterneManchon                      = SIMP (typ='R',statut='f',fr="Rayon externe des manchons des tubes guides"),
938   HauteurManchon                           = SIMP (typ='R',statut='f',fr="Hauteur des manchons des tubes guides"),
939   MasseManchon                             = SIMP (typ='R',statut='f',fr="Masse d'un manchon des tubes guides") ) ;
940 # -----------------------------------------------------------------------------------------------------------------------------------
941 #  Classe OPTIONS_AUTOPROTECTION : Classe de definition des donnees d'autoprotection du code de reseau
942 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
943 OPTIONS_AUTOPROTECTION = OPER (nom="OPTIONS_AUTOPROTECTION",op=0,sd_prod=OptionsAutoprotection,
944
945   fr                    = "Definition des donnees d'autoprotection des resonances",
946   ang = "Definition of resonance self shielding data",
947   TypeCombustible       = SIMP (typ='TXM',max='**',statut='o',fr="Type de combustible auquel s'appliquent ces options d'autoprotection"),
948   MethodeAutoprotection = SIMP (typ='TXM',into=('SanchezCoste','SousGroupes'),defaut='SanchezCoste',statut='f'),
949   IsotopesAutoproteges  = NUPL (
950       max       = '**',
951       elements  = (SIMP (typ=Isotope,statut='o',fr="Nom de l'isotope a autoproteger"),
952                    SIMP (typ='TXM',into=('Moyenne','Detaillee','Couronne'),statut='o'),
953                    SIMP (typ='TXM',into=('Materiaux','Cellules'),statut='f',fr="Choix d'autoprotection sur les materiaux ou les cellules"),
954                    SIMP (typ='TXM',max='**',statut='f',fr="Liste des types de materiaux ou de cellules concernes"))),
955   Irradiations  = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection"),
956   IrradiationsPoison  = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs d'autoprotection des poisons integres au combustible")
957   ) ;
958 # -----------------------------------------------------------------------------------------------------------------------------------
959 #  Classe ASSEMBLAGE_TYPE : Classe de definition d'un type d'assemblage (ensemble de crayons ou de reseaux quelconques)
960 #                           Rajout des structures grilles et embouts (dans le cas des REP)
961 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
962 ASSEMBLAGE_TYPE = OPER (nom="ASSEMBLAGE_TYPE",op=0,sd_prod=AssemblageType,
963
964   fr                    = "Definition d'un assemblage type et des elements associes eventuels",
965   ang = "Definition of an assembly type and its associated elements",
966 # TypeGeometrie         = SIMP (typ='TXM',into=('Cartesienne','Hexagonale','Generale'),defaut='Cartesienne',statut='f'),
967 # TypeAbsorbant         = SIMP (typ='TXM',defaut='0P',statut='f'),
968 # Identificateur        = SIMP (typ='TXM',defaut='AFA  17 0P 0P',statut='f'),
969   Geometrie             = SIMP (typ=(Cellule,Reseau,GeometrieCombinatoire),statut='o',max='**',
970                                 fr="Liste des geometries associees a l'assemblage"),
971 #    Symetrie           = SIMP (typ='TXM',into=('1/4','1/8','1/2','PI','PI/2','PI/6','PI/3','2PI/3','SansSymetrie'),
972 #                               defaut='SansSymetrie',statut='f'),
973 #    ZoneCalculee       = SIMP (typ='TXM',defaut='Entiere',
974 #                               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',
975 #                                               '1/4 S-O','1/8 E-NE','1/8 N-NE','1/8 N-NO',
976 #                                               '1/8 O-SO','1/8 S-SO','1/8 S-SE','1/8 E-SE',
977 #                                               '1/6 E','1/6 NE','1/6 NO','1/6 O''1/6 SO','1/6 SE'),statut='f'),
978   GrillesStructure      = NUPL (
979                           max      = '**',
980                           statut   = 'f',
981                           elements = (  SIMP (typ=GrilleAssemblage,fr="Type de grille"),
982                                         SIMP (typ='R',max='**',fr="Positions axiales du type de grille"))),
983   PartieInferieure      = SIMP (typ=PartieInferieureAssemblageCombustible,statut='f',fr="Type d'embout inferieur"),
984   PartieSuperieure      = SIMP (typ=PartieSuperieureAssemblageCombustible,statut='f',fr="Type d'embout superieur"),
985   ElementsAssocies      = SIMP (typ=(ElementsGrappeCommande,ElementsAbsorbantsFixes,GrappeBouchonAssemblage),max='**',statut='f')
986 #  ZoneCalculee          = SIMP (typ='DROITE',min=2,max=2,statut='f',fr="Droites delimitant la zone de calcul"),
987 #  DonneesAutoprotection = SIMP (typ=Autoprotection,statut='f')
988  ) ;
989 # -----------------------------------------------------------------------------------------------------------------------------------
990 #  Classe ASSEMBLAGE_COMBUSTIBLE_CHARGE : Classe de definition d'un assemblage combustible charge dans un coeur REP
991 #                               
992 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
993 ASSEMBLAGE_COMBUSTIBLE_CHARGE = OPER (nom="ASSEMBLAGE_COMBUSTIBLE_CHARGE",op=0,sd_prod=AssemblageCombustibleCharge,
994
995   fr                          = "Definition d'un assemblage combustible charge en reacteur",
996   ang = "Definition of a core loaded fuel assembly ",
997   Identificateur              = SIMP (typ='TXM',statut='o',fr="Code d'identification de l'assemblage combustible"),
998   Constructeur                = SIMP (typ='TXM',statut='o',into=('FRAMATOME','SIEMENS','ABB','ENUSA','WESTINGHOUSE')),
999   TypeAssemblage              = SIMP (typ=AssemblageType,statut='o'),
1000   CleControle                 = SIMP (typ='TXM',statut='o'),
1001   Engagement                  = SIMP (typ='TXM',statut='o'),
1002   NumeroLot                   = SIMP (typ='I',statut='o'),
1003   EnrichissementTheoriqueU235 = SIMP (typ='R',statut='o'),
1004   EnrichissementTheoriquePu   = SIMP (typ='R',statut='f'),
1005   MasseTheoriqueNL            = SIMP (typ='R',statut='o'),
1006   MasseInitialeUPu            = SIMP (typ='R',statut='o'),
1007   MasseInitialeU232           = SIMP (typ='R',statut='f'),
1008   MasseInitialeU234           = SIMP (typ='R',statut='f'),
1009   MasseInitialeU235           = SIMP (typ='R',statut='f'),
1010   MasseInitialeU236           = SIMP (typ='R',statut='f'),
1011   MasseInitialePu239          = SIMP (typ='R',statut='f'),
1012   MasseInitialePu240          = SIMP (typ='R',statut='f'),
1013   MasseInitialePu241          = SIMP (typ='R',statut='f'),
1014   MasseInitialePu242          = SIMP (typ='R',statut='f'),
1015   MasseInitialeAm241          = SIMP (typ='R',statut='f'),
1016   AbsorbantFixe               = SIMP (typ='TXM',statut='f'),
1017   Campagnes                   = NUPL (
1018       max      = '**',
1019       statut   = 'f',
1020       elements = ( SIMP (typ='TXM',fr="Identificateur de la campagne"),SIMP (typ='TXM',fr="Etat de l'assemblage"))),
1021   BibliothequeNeutronique = SIMP (typ='TXM',statut='f',fr="Repertoire des Bibliothèques neutroniques associees") ) ;
1022 # ----------------------------------------------------------------------------------------------------------------------------------
1023 #  Classe ELEMENT_BARRE :        Classe de définition d'une barre element d'un assemblage
1024 #                                Definition des barres des grappes de commande (barre et gaine, et composants axiaux)
1025 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1026 ELEMENT_BARRE = OPER (nom="ELEMENT_BARRE",op=0,sd_prod=ElementBarre,
1027
1028   fr                            = "Définition d'une barre element d'un assemblage",
1029   en                            = "Definition of an assembly rod element",
1030   MateriauPartieInferieure      = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie inferieure de la barre"),
1031   MateriauPartieSuperieure      = SIMP (typ=Materiau,statut='o',defaut='ACIER',fr="Materiau composant la partie superieure de la barre"),
1032   HauteurBarre                  = SIMP (typ='R',statut='o',fr="Hauteur de la barre"),
1033   HauteurPartieInferieure       = SIMP (typ='R',statut='f',fr="Hauteur de la partie inferieure de la barre"),
1034   HauteurPartieSuperieure       = SIMP (typ='R',statut='f',fr="Hauteur de la partie superieure de la barre"),
1035   RayonInternePartieInferieure  = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie inferieure de la barre"),
1036   RayonInternePartieSuperieure  = SIMP (typ='R',statut='f',defaut=0.,fr="Rayon Interne de la partie superieure de la barre"),
1037   RayonExternePartieInferieure  = SIMP (typ='R',statut='o',fr="Rayon Externe de la partie inferieure de la barre"),
1038   RayonExternePartieSuperieure  = SIMP (typ='R',statut='f',fr="Rayon Externe de la partie superieure de la barre"),
1039   MasseRessort                  = SIMP (typ='R',statut='o',fr="Masse du ressort de la barre"),
1040   MateriauRessort               = SIMP (typ=Materiau,statut='o',fr="Materiau du ressort de la barre"),
1041   HauteurRessort                = SIMP (typ='R',statut='o',fr="Hauteur du ressort de la barre"),
1042   HauteurBouchonInferieur       = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon inferieur de la barre"),
1043   HauteurBouchonSuperieur       = SIMP (typ='R',defaut=0.,statut='f',fr="Hauteur du bouchon superieur de la barre"),
1044   RayonBouchonInferieur         = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon inferieur de la barre"),
1045   RayonBouchonSuperieur         = SIMP (typ='R',defaut=0.,statut='f',fr="Rayon externe du bouchon superieur de la barre"),
1046   MateriauGaine                 = SIMP (typ=Materiau,defaut='ACIER',statut='o',fr="Materiau de la gaine externe de la barre"),
1047   RayonInterneGaine             = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Interne de la gaine externe de la barre"),
1048   RayonExterneGaine             = SIMP (typ='R',defaut=0.,statut='f', fr="Rayon Externe de la gaine externe de la barre")
1049  ) ;
1050 #----------------------------------------------------------------------------------------------------------------------------------
1051 #  Classe ELEMENTS_GRAPPE_COMMANDE :    Classe de définition des éléments des grappes de commande
1052 #                               Association avec les différents types de barres absorbantes
1053 #                               Description simplifiée de l'araignée et du bouchon des barres
1054 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1055 ELEMENTS_GRAPPE_COMMANDE = OPER (nom="ELEMENTS_GRAPPE_COMMANDE",op=0,sd_prod=ElementsGrappeCommande,
1056
1057   fr                    = "Définition des éléments des grappes de commande",
1058   en                    = "Definition of control rod cluster components",
1059   ElementsBarre         = SIMP (typ= ElementBarre,      max='**',statut='f',fr="Liste des barres absorbantes associees"),
1060   HauteurPasInsertion   = SIMP (typ='R',defaut=1.5875,  statut='f'),
1061   HauteurInsertionMax   = SIMP (typ='R',defaut=300.,    statut='f'),
1062   NbPasInsertion        = SIMP (typ='I',defaut=0,       statut='f'),
1063   HauteurAraignee16P    = SIMP (typ='R',defaut=0.,      statut='f'),
1064   HauteurAraignee4M     = SIMP (typ='R',defaut=0.,      statut='f'),
1065   HauteurAraignee4G     = SIMP (typ='R',defaut=0.,      statut='f'),
1066   HauteurPommeau        = SIMP (typ='R',defaut=0.,      statut='f'),
1067   RayonPommeau          = SIMP (typ='R',defaut=0.,      statut='f') ) ;
1068 # -----------------------------------------------------------------------------------------------------------------------------------
1069 #  Classe ELEMENTS_ABSORBANTS_REP : Classe de definition des elements des grappes d'absorbants fixes
1070 #                                 
1071 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1072 ELEMENTS_ABSORBANTS_FIXES = OPER (nom="ELEMENTS_ABSORBANTS_FIXES",op=0,sd_prod=ElementsAbsorbantsFixes,
1073
1074   fr                                 = "Definition des elements des grappes d'absorbants fixes",
1075   ang = "Definition of non movable absorber control rod cluster elements",
1076 # Limitation a 12 caracteres
1077 # HBouchInfPyrex        = SIMP (typ='R',statut='f'),
1078 # RBouchInfPyrex        = SIMP (typ='R',statut='f'),
1079 # HZoneVidePyrex        = SIMP (typ='R',statut='f'),
1080 # HBouchSupPyrex        = SIMP (typ='R',statut='f'),
1081 # RBouchSupPyrex        = SIMP (typ='R',statut='f'),
1082 # MatBouchonPyrex       = SIMP (typ=Materiau,statut='f')
1083   CrayonPyrexHauteurBouchonInferieur = SIMP (typ='R',statut='f'),
1084   CrayonPyrexRayonBouchonInferieur   = SIMP (typ='R',statut='f'),
1085   CrayonPyrexHauteurZoneVide         = SIMP (typ='R',statut='f'),
1086   CrayonPyrexHauteurBouchonSuperieur = SIMP (typ='R',statut='f'),
1087   CrayonPyrexRayonBouchonSuperieur   = SIMP (typ='R',statut='f'),
1088   CrayonPyrexMateriauBouchon         = SIMP (typ=Materiau,statut='f') ) ;
1089 # -----------------------------------------------------------------------------------------------------------------------------------
1090 #  Classe GRAPPE_BOUCHON_ASSEMBLAGE_REP : Classe de definition d'une grappe bouchon
1091 #                                 
1092 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1093 GRAPPE_BOUCHON_ASSEMBLAGE = OPER (nom="GRAPPE_BOUCHON_ASSEMBLAGE",op=0,sd_prod=GrappeBouchonAssemblage,
1094
1095   fr                                 = "Definition d'une grappe bouchon d'assemblage combustible",
1096   ang = "Definition of ",
1097   HauteurBouchonPartieBasse          = SIMP (typ='R',statut='f'),
1098   RayonBouchonPartieBasse            = SIMP (typ='R',statut='f'),
1099   HauteurBouchonPartieIntermediaire1 = SIMP (typ='R',statut='f'),
1100   RayonBouchonPartieIntermediaire1   = SIMP (typ='R',statut='f'),
1101   HauteurBouchonPartieIntermediaire2 = SIMP (typ='R',statut='f'),
1102   RayonBouchonPartieIntermediaire2   = SIMP (typ='R',statut='f'),
1103   HauteurBouchonRegionSousPlaque     = SIMP (typ='R',statut='f'),
1104   HauteurBouchonRegionSurPlaque      = SIMP (typ='R',statut='f'),
1105   RayonBouchonRegionPlaque           = SIMP (typ='R',statut='f'),
1106   HauteurSupport                     = SIMP (typ='R',statut='f'),
1107   MasseGrappe                        = SIMP (typ='R',statut='f'),
1108   Materiau                           = SIMP (typ=Materiau,statut='f') ) ;
1109 # -----------------------------------------------------------------------------------------------------------------------------------
1110 #  Classe ELEMENTS_ASSEMBLAGE : Classe de définition des éléments associes a l'assemblage combustibe REP
1111 #                                 
1112 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class ReflexionIsotrope (TObjet):pass
1113 #ELEMENTS_ASSEMBLAGE = OPER (nom="ELEMENTS_ASSEMBLAGE",op=0,sd_prod=ElementsAssemblage,
1114 #
1115 #  fr  = "Definition des elements associes a l'assemblage",
1116 #  ang = "Definition of the fuel assembly associated elements",
1117 #  GrappeBouchon         = SIMP (typ=GrappeBouchonAssemblage,statut='o'),
1118 #  CrayonsAbsorbants     = SIMP (typ=ElementsAbsorbants,statut='o'),
1119 #  GrappesCommande       = SIMP (typ=ElementsGrappeCommande,statut='o')
1120 # ) ;
1121 # ----------------------------------------------------------------------------------------------------------------------------------
1122 #  Classe SYSTEME_UNITES_MESURE :       Classe de definition du systeme d'unites pour l'expression des donnees 
1123 #                               Sauf indication contraire dans les attributs des classes, les unites utilisees sont definies
1124 #                               dans la classe ci-dessous
1125 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1126 SYSTEME_UNITES_MESURE = OPER (nom="SYSTEME_UNITES_MESURE",op=0,sd_prod=SystemeUnitesMesure,
1127
1128   fr                           = "Definition du systeme d'unites pour l'expression des donnees",
1129   ang = "Definition of data unit system",
1130   Longueur                     = SIMP (typ='TXM',statut='o',defaut='cm'),
1131   Masse                        = SIMP (typ='TXM',statut='o',defaut='g'),
1132   Temps                        = SIMP (typ='TXM',statut='o',defaut='s'),
1133   Irradiation                  = SIMP (typ='TXM',statut='o',defaut='MWj/t'),
1134   Fluence                      = SIMP (typ='TXM',statut='o',defaut='n/kb'),
1135   SectionEfficaceMicroscopique = SIMP (typ='TXM',statut='o',defaut='barn'),
1136   SectionEfficaceMacroscopique = SIMP (typ='TXM',statut='o',defaut='cm-1'),
1137   MasseVolumique               = SIMP (typ='TXM',statut='o',defaut='g/cm3'),
1138   Concentration                = SIMP (typ='TXM',statut='o',defaut='E24*atome/cm3'),
1139   Temperature                  = SIMP (typ='TXM',statut='o',defaut='C'),
1140   ProportionMateriau           = SIMP (typ='R',statut='o',defaut=0.01),
1141   Taux                         = SIMP (typ='R',statut='o',defaut=0.01),
1142   Enrichissement               = SIMP (typ='R',statut='o',defaut=0.01),
1143   Pression                     = SIMP (typ='TXM',statut='o',defaut='bar') ) ;
1144 # ----------------------------------------------------------------------------------------------------------------------------------
1145 #  Classes CONDITION_LIMITE elementaires :      Classes de definition de Conditions limites elementaires
1146 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1147 VIDE = OPER (nom="VIDE",op=0,sd_prod=Vide,
1148                                 fr  = "Condition aux limites de vide",
1149                                 ang= "Void boundary condition" ) ;
1150
1151 REFLEXION_ISOTROPE = OPER (nom="REFLEXION_ISOTROPE",op=0,sd_prod=ReflexionIsotrope,
1152                                 fr  = "Condition aux limites de reflexion isotrope",
1153                                 ang= "Isotropic Reflexion boundary condition" ) ;
1154
1155 REFLEXION_SPECULAIRE = OPER (nom="REFLEXION_SPECULAIRE",op=0,sd_prod=ReflexionSpeculaire,
1156                                 fr  = "Condition aux limites de reflexion speculaire",
1157                                 ang= "Specular Reflexion boundary condition" ) ;
1158 ALBEDO = OPER (nom="ALBEDO",op=0,sd_prod=Albedo,
1159                                 fr   = "Condition aux limites d'albedo",
1160                                 ang= "Albedo boundary condition",
1161                                 albedo = SIMP (typ='R',statut='o',max='**') ) ;
1162 TRANSLATION = OPER (nom="TRANSLATION",op=0,sd_prod=Translation,
1163                                 fr      = "Condition aux limites de translation",
1164                                 ang = "Translation boundary condition",
1165                                 Vecteur = SIMP (typ=Vecteur,statut='o') ) ;
1166 ROTATION = OPER (nom="ROTATION",op=0,sd_prod=Rotation,
1167                                 fr     = "Condition aux limites de rotation",
1168                                 ang = "Rotational boundary condition",
1169                                 Centre = SIMP (typ=Point,statut='o'),
1170                                 Angle  = SIMP (typ='R',statut='o',defaut=90.) ) ;
1171 # ----------------------------------------------------------------------------------------------------------------------------------
1172 #  Classe CONDITION_LIMITE_SPECIALE :   Classe de definition de Conditions limites sur les surfaces elementaires de la geometrie
1173 #                                       modifiant la CL generale
1174 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1175 CONDITION_LIMITE_SPECIALE = OPER (nom="CONDITION_LIMITE_SPECIALE",op=0,sd_prod=ConditionLimiteSpeciale,
1176
1177   fr     = "Condition limite particuliere qui sera plaquee sur la geometrie",
1178   ang = "Special boundary condition added to the geometry",
1179   Type = SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation),statut='o'),
1180   ZonesApplication = SIMP (     typ=(Segment,ArcCercle,Conique),max='**',statut='o',
1181                                 fr="Liste des segments ou surfaces sur lesquels porte la condition limite")
1182  ) ;
1183 # ----------------------------------------------------------------------------------------------------------------------------------
1184 #  Classe CONDITION_LIMITE_GENERALE : Classe de definition des conditions limites de l'objet geometrique complet
1185 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1186 CONDITION_LIMITE_GENERALE = OPER (nom="CONDITION_LIMITE_GENERALE",op=0,sd_prod=ConditionLimiteGenerale,
1187
1188   fr  = "Condition limite a la surface externe de la geometrie complete",
1189   ang = "Boundary condition for the complete geometry",
1190   ZoneCalculee          = NUPL (statut='f',min=2,max=2,fr="Droites ou plans delimitant la zone de calcul",
1191                                 elements = (SIMP (typ=(Droite,Plan)), SIMP (typ='TXM',into=('Plus','Moins')))),
1192   ConditionParDefaut    = SIMP (typ=(Vide, ReflexionIsotrope, ReflexionSpeculaire, Albedo),
1193                                 defaut=ReflexionIsotrope,
1194                                 statut='f',
1195                                 fr="Condition limite par defaut"),
1196   ConditionsParticulieres  = NUPL (
1197                                 fr       = "Conditions particulieres modifiant localement la condition limite par defaut",
1198                                 max      = '**',
1199                                 statut   = 'f',
1200                                 elements = (SIMP (typ='TXM',into=('X-','X+','Y-','Y+','Z-','Z+','R+','X','Y','Z')),
1201                                             SIMP (typ=(Vide,ReflexionIsotrope,ReflexionSpeculaire, Albedo, Translation, Rotation)))),
1202   ConditionsSupplementaires = SIMP (
1203                                 typ    = ConditionLimiteSpeciale,
1204                                 statut = 'f',
1205                                 max    = '**',
1206                                 fr     = "Conditions limites non exprimables avec les donnees precedentes") 
1207  ) ;
1208 # -----------------------------------------------------------------------------------------------------------------------------------
1209 #  Classe POSITION_ASSEMBLAGE_COMBUSTIBLE : Classe de definition de la position des assemblages combustibles dans un REP
1210 #                                           Reperes (bataille navale ou autre) et
1211 #                                           Coordonnees cartesiennes entieres des assemblages combustibles pour un type de palier
1212 #                                           Origine des coordonnees en bas a gauche d'un systeme en xy
1213 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1214 POSITION_ASSEMBLAGE_COMBUSTIBLE = OPER (nom="POSITION_ASSEMBLAGE_COMBUSTIBLE",op=0,sd_prod=PositionAssemblageCombustible,
1215
1216   fr                        = "Position des assemblages combustibles",
1217   ang = "Position of fuel assemblies",
1218   NbAssemblagesCombustibles = SIMP (typ='I',statut='o',defaut=157),
1219   regles=(UN_PARMI('PositionReseau', 'Positions'),),
1220   PositionReseau            = SIMP (typ=CorrespondanceReperePositionReseau,statut="f"),
1221   Positions                 = NUPL (    max='**',statut='f',
1222                                         elements=(SIMP (typ='TXM',fr="Repere alphanumerique arbitraire de l'assemblage"),
1223                                                   SIMP (typ='I'  ,fr="Premiere Coordonnee entiere de l'assemblage"),
1224                                                   SIMP (typ='I'  ,fr="Seconde Coordonnee entiere de l'assemblage")))
1225  ) ;
1226 # -----------------------------------------------------------------------------------------------------------------------------------
1227 #  Classe POSITION_INSTRUMENTATION : Classe de definition de la position des assemblages instrumentes dans un REP 
1228 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1229 POSITION_INSTRUMENTATION_INTERNE = OPER (nom="POSITION_INSTRUMENTATION_INTERNE",op=0,sd_prod=PositionInstrumentationInterne,
1230
1231   fr                        = "Definition de la position des assemblages instrumentes",
1232   ang = "Definition of neutron flux detector position",
1233 # TypePalier                = SIMP (typ='TXM',max='**',statut='o'),
1234   NbAssemblagesInstrumentes = SIMP (typ='I',statut='o'),
1235   Positions                 = NUPL (
1236       max      = '**',
1237       statut   = 'o',
1238       elements = (SIMP (typ='TXM',fr= "Type d'instrumentation"),
1239                   SIMP (typ='I',min=2,max=2,fr= "Coordonnees entieres de l'assemblage instrumente dans le reseau"))) ) ;
1240 # -----------------------------------------------------------------------------------------------------------------------------------
1241 #  Classe POSITION_GRAPPES_COMMANDE : Classe de definition des grappes de commande pour un type de schema de grappe
1242 #                                     Donnees de la position (coordonnees entieres en xy), du type de grappe et du groupe d'appartenance 
1243 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1244 POSITION_GRAPPES_COMMANDE = OPER (nom="POSITION_GRAPPES_COMMANDE",op=0,sd_prod=PositionGrappesCommande,
1245
1246   fr              = "Definition des grappes de commande pour un schema d'implantation particulier",
1247   ang = "Definition of control rod cluster position ant type",
1248   TypeSchema      = SIMP (typ='TXM',statut='o'),
1249   NbTotalGrappes  = SIMP (typ='I',statut='o'),
1250   PositionsEtType = NUPL (max='**',statut='o',
1251                           elements=(SIMP (typ='TXM',fr="Nom du groupe de grappes"),
1252                                     SIMP (typ='I',fr="Nombre de grappes du groupe"),
1253                                     SIMP (typ='TXM',fr="Type de grappes"),
1254                                     SIMP (typ='I',max='**',fr="Coordonnees des grappes"))) ) ;
1255 # -----------------------------------------------------------------------------------------------------------------------------------
1256 #  Classe STRUCTURES_INTERNES_REACTEUR :        Classe de definition des structures internes du coeur du reacteur
1257 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1258 STRUCTURES_INTERNES_REACTEUR = OPER (nom="STRUCTURES_INTERNES_REACTEUR",op=0,sd_prod=StructuresInternesReacteur,
1259
1260   fr                      = "Definition des structures internes du coeur",
1261   ang = "Definition of core internal structures",
1262   PlaqueInferieureCoeur   = FACT (
1263       Epaisseur = SIMP (typ='R',statut='o',                     fr="Epaisseur de la plaque inferieure du coeur"),
1264       Materiau  = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau  de la plaque inferieure du coeur"),
1265       Trous     = NUPL (
1266           max      = '**',
1267           elements = (
1268               SIMP (typ='I',                            fr="Nombre de trous dont on donne les dimensions"),
1269               SIMP (typ='TXM',into=('Rayon','Cotes'),   fr="Mot-cle indiquant si on donne le rayon ou les cotes"),
1270               SIMP (typ='R',min=2,max=2,                fr="Rayon ou cotes des trous"),
1271               SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"),
1272               SIMP (typ='R',                            fr="Hauteur du trou")))),
1273   PlaqueSuperieureCoeur   = FACT (
1274       Epaisseur = SIMP (typ='R',                                 fr="Epaisseur de la plaque superieure du coeur"),
1275       Materiau  = SIMP (typ=Materiau,statut='f',defaut='ACIER',fr="Materiau  de la plaque superieure du coeur"),
1276       Trous     = NUPL (
1277           max      = '**',
1278           elements = (
1279               SIMP (typ='I',                            fr="Nombre de trous dont on donne les dimensions"),
1280               SIMP (typ='TXM',into=('Rayon','Cotes'),   fr="Mot-cle indiquant si on donne le rayon ou les cotes"),
1281               SIMP (typ='R',min=2,max=2,                fr="Rayon ou cotes des trous"),
1282               SIMP (typ='TXM',into=('Hauteur','Epaisseur'),fr="Mot-cle indiquant l'entree de la hauteur du trou"),
1283               SIMP (typ='R',                            fr="Hauteur du trou")))),
1284   CloisonnementCoeur      = FACT (
1285       Epaisseur             = SIMP (typ='R',                                    fr="Epaisseur du cloisonnement du coeur"),
1286       Materiau              = SIMP (typ=Materiau,statut='f',defaut='ACIER',     fr="Materiau  du cloisonnement du coeur"),
1287       DimensionsInterieures = NUPL (
1288           max      = '**',
1289           elements = (
1290               SIMP (typ='I',                                    fr="Nombre d'assemblages dans la rangee"),
1291               SIMP (typ='TXM',into=('Assemblages','Assemblies'),fr="Mot-cle suivant le nombre d'assemblages"),
1292               SIMP (typ='TXM',into=('Largeur','Cote'),          fr="Mot-cle precedant la largeur interieure du cloisonnement"),
1293               SIMP (typ='R',                                    fr="Largeur interieure du cloisonnement"),
1294               SIMP (typ='TXM',into=('NbJeuCloisonGrille','NbJeu'),fr="Mot-cle precedant le nombre de jeux CloisonGrille"),
1295               SIMP (typ='I',                                    fr="Nombre de jeux CloisonGrille"))),
1296       TrousDepressurisation = NUPL (elements=(SIMP (typ='I',fr="Nombre de trous de depressurisation"),
1297                                                 SIMP (typ='TXM',into=('Rayon','Radius'),fr="Mot-cle precedant la valeur du rayon des trous"),
1298                                                 SIMP (typ='R',fr="Rayon des trous de depressurisation"))),
1299       TemperatureMoyenne    = SIMP (typ='R',fr="Temperature Moyenne du cloisonnement")),
1300   RenfortsInternes        = FACT (
1301       Nombre                      = SIMP (typ='I',max='**'),
1302       Epaisseur                   = SIMP (typ='R',max='**'),
1303       Materiau                    = SIMP (typ=Materiau,max='**',statut='f',defaut='ACIER'),
1304       NbTrousDepressurisation     = SIMP (typ='I',max='**'),
1305       RayonsTrousDepressurisation = SIMP (typ='R',max='**'),
1306       TemperatureMoyenne          = SIMP (typ='R'),statut='f'),
1307   EnveloppeVirole        = FACT (
1308       RayonInterne       = SIMP (typ='R'),
1309       RayonExterne       = SIMP (typ='R'),
1310       Materiau           = SIMP (typ=Materiau,statut='f',defaut='ACIER'),
1311       TemperatureMoyenne = SIMP (typ='R')),
1312   Boucliers              = FACT (
1313       RayonInterne       = SIMP (typ='R'),
1314       RayonExterne       = SIMP (typ='R'),
1315       Materiau           = SIMP (typ=Materiau,statut='f',defaut='ACIER'),
1316       Secteurs           = NUPL (max='**',elements=(SIMP (typ='R'),SIMP (typ='R'))),
1317       TemperatureMoyenne = SIMP (typ='R')),
1318   Cuve                    = FACT (
1319       RayonInterne       = SIMP (typ='R'),
1320       RayonExterne       = SIMP (typ='R'),
1321       Materiau           = SIMP (typ=Materiau,statut='f',defaut='ACIER'),
1322       TemperatureMoyenne = SIMP (typ='R')) ) ; # Fin STRUCTURES_INTERNES_REACTEUR
1323 # -----------------------------------------------------------------------------------------------------------------------------------
1324 #  Classe CARACTERISTIQUES_PALIER : Classe de definition des donnees generales d'un type de palier de reacteur 
1325 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1326 CARACTERISTIQUES_PALIER = OPER (nom="CARACTERISTIQUES_PALIER",op=0,sd_prod=CaracteristiquesPalier,
1327
1328   fr                  = "Definition des donnees generales d'un type de palier de reacteur",
1329   ang = "Definition of general data for a type of nuclear reactor",
1330   TypePalier          = SIMP (typ='TXM',statut='o',fr="Identificateur du type de palier"),
1331   PositionCombustible = SIMP (typ=PositionAssemblageCombustible,statut='o'),
1332   PositionDetecteur   = SIMP (typ=PositionInstrumentationInterne,statut='o'),
1333   StructuresInternes  = SIMP (typ=StructuresInternesReacteur,statut='o'),
1334   NbBouclesPrimaires  = SIMP (typ='I',statut='o',defaut=3,fr="Nombre de boucles primaires"),
1335   NbTubesParGV        = SIMP (typ='I',statut='f',fr="Nombre de tubes par GV") ) ;
1336 # -----------------------------------------------------------------------------------------------------------------------------------
1337 #  Classe SITE_NUCLEAIRE_EDF : Classe de definition d'un site nucleaire EDF (Tranches, paliers et numero comptable) 
1338 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1339 SITE_NUCLEAIRE = OPER (nom="SITE_NUCLEAIRE",op=0,sd_prod=SiteNucleaire,
1340
1341   fr       = "Definition d'un site nucleaire EDF",
1342   ang = "Definition of a nuclear power plant site",
1343   NomSite  = SIMP (typ='TXM',statut='o',fr="Nom du site nucleaire",defaut='TRICASTIN'),
1344   Tranches = NUPL (max='**',elements=(  SIMP (typ='I'  ,statut='o',fr="Numero de la tranche nucleaire"),
1345                                         SIMP (typ='TXM',statut='o',fr="Trigramme de la tranche nucleaire"),
1346                                         SIMP (typ=CaracteristiquesPalier,statut='o',fr="Type de palier"),
1347                                         SIMP (typ='I'  ,statut='o',fr="Numero comptable de la tranche"))) ) ;
1348 # -----------------------------------------------------------------------------------------------------------------------------------
1349 #  Classe ESPACE_VARIATIONS :     Classe de definition des parametres de contre-reactions neutroniques et de leurs variations
1350 #                                       Donnees definissant l'espace des parametres dont dependent les bibliotheques
1351 #                                       neutroniques et la discretisation de leur espace de variation.
1352 #                                       Definition de la methode de balayage de cet espace (Suite d'options complementaires) :
1353 #                                       1) ParametresIndependants :     Calculs independants en donnant successivement a chacun
1354 #                                                                       des parametres leurs valeurs individuelles
1355 #                                       2) CoinsDomaine :               Rajout des calculs aux limites extremes du domaine
1356 #                                       3) BordsDomaine :               Rajout des calculs aux bords du domaine
1357 #                                       4) Grilles2D :                  Rajout des calculs sur les grilles 2D 
1358 #                                                                       passant par un point de reference
1359 #                                       5) CasParticuliers :            Rajout de points specifiques de calcul
1360 #                                       6) EspaceComplet :              Balayage complet du domaine des parametres
1361 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1362 ESPACE_VARIATIONS = OPER (nom="ESPACE_VARIATIONS",op=0,sd_prod=EspaceVariations,
1363
1364   fr              = "Definition de l'espace de variation des parametres neutroniques",
1365   ang = "Definition of feedback or variable parameters",
1366   Variations      = NUPL (max='**',statut='f',
1367                           elements=(    SIMP (typ='TXM',fr="Nom du parametre a faire varier"),
1368                                         SIMP (typ='R',max='**',fr="Valeurs discretes de variation du parametre"))),
1369   MethodeBalayage = SIMP (
1370       typ    = 'TXM',
1371       max    = '**',
1372       defaut = 'ParametresIndependants',
1373       into   = ('ParametresIndependants','CoinsDomaine','BordsDomaine','Grilles2D','CasParticuliers','EspaceComplet'),
1374       statut = 'f'),
1375   TypeVariation   = SIMP (typ='TXM',defaut='absolu',into=('relatif','absolu'),statut='f'),
1376   CasParticuliers = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour les cas particuliers",
1377                           elements=(SIMP (typ='TXM'),SIMP (typ='R'))),
1378   CasReference    = NUPL (max='**',statut='f',fr="Liste des couples (Parametre, Valeur du parametre) pour le cas de reference",
1379                           elements=(SIMP (typ='TXM'),SIMP (typ='R'))) ) ;
1380 # -----------------------------------------------------------------------------------------------------------------------------------
1381 #  Classe DONNEES_EVOLUTION_IRRADIATION : Classe de definition des valeurs d'irradiation intervenant dans les phases de calcul et d'edition
1382 #                       Pour le moment, on ne considere que l'Evolution, les Editions, l'Autoprotection et les ContreReactions
1383 #                       ou les irradiations de reprise (Normale, Gs et Beta pour EDF).
1384 #                       Donnees consistant pour chaque phase d'une liste d'irradiations en MWj/t
1385 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1386 DONNEES_EVOLUTION_IRRADIATION = OPER (nom="DONNEES_EVOLUTION_IRRADIATION",op=0,sd_prod=DonneesEvolutionIrradiation,
1387
1388   fr                   = "Definition des donnees du calcul d'evolution et des irradiations de reprise",
1389   ang = "Definition of depletion calculation data and burnup restart calculations",
1390   Unite                = SIMP (typ='TXM',defaut='MWj/t',into=('MWj/t','Jours'),statut='f',fr="Unite pour les irradiations"),
1391   Minimum              = SIMP (typ='R',defaut=0.,statut='f',fr="Irradiation du debut de calcul"),
1392   Maximum              = SIMP (typ='R',defaut=100000.,statut='f',fr="Irradiation maximum des calculs"),
1393   Evolution            = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations du calcul d'evolution"),
1394   Editions             = SIMP (typ='R',max='**',defaut=0.,statut='f',fr="Irradiations ou se font les editions"),
1395   ContreReactions      = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise de contre-reactions"),
1396   ReprisesGs           = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise GS EDF"),
1397   ReprisesBeta         = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise BETA EDF"),
1398   Reprises             = SIMP (typ='R',max='**',statut='f',fr="Irradiations ou se font les calculs de reprise"),
1399   Refroidissement      = FACT (
1400                          Instants = SIMP (typ='R',max='**',fr="Irradiations de debut de refroidissement du combustible"),
1401                          Jours    = SIMP (typ=('R','I'),max='**',fr="Nombre de jours de refroidissement correspondant aux instants de refroidissement")),
1402   InsertionGrappe      = NUPL (max='**',statut='f',elements=(
1403                                 SIMP (typ='TXM',fr="Type de grappe inseree"),
1404                                 SIMP (typ=('R','I'), min=2,max=2,fr="Irradiations de Debut et Fin d'insertion de la grappe"),
1405                                 SIMP (typ='R',fr="Cote axiale de la limite inferieure de la grappe inseree"))) ) ;
1406 # -----------------------------------------------------------------------------------------------------------------------------------
1407 #  Classe CONDITIONS_FONCTIONNEMENT : Classe de definition des conditions de fonctionnement Reacteur pour une campagne donnee
1408 #                               
1409 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1410 CONDITIONS_FONCTIONNEMENT_MOYENNES = OPER (nom="CONDITIONS_FONCTIONNEMENT_MOYENNES",op=0,sd_prod=ConditionsFonctionnementMoyennes,
1411
1412   fr                          = "Definition des conditions de fonctionnement pour une campagne donnee",
1413   ang = "Definition of a campaign operating conditions ",
1414   IdentificateurCampagne      = SIMP (typ='TXM',statut='f',fr="Identificateur de la campagne"),
1415   PuissanceElectriqueMW       = SIMP (typ='R',statut='o',defaut=900.,fr="Puissance electrique du reacteur en MW"),
1416   PuissanceThermiqueMWth      = SIMP (typ='R',statut='o',defaut=2775.,fr="Puissance thermique du reacteur en MWth"),
1417   PressionPrimaireEntreeBar   = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars a l'entree du coeur actif"),
1418   PressionPrimaireSortieBar   = SIMP (typ='R',statut='o',defaut=155.1,fr="Pression du moderateur en bars en sortie du coeur actif"),
1419   TitreMoyenBorePpm           = SIMP (typ='R',statut='o',defaut=500.,fr="Titre moyen en ppm en bore dans le moderateur"),
1420   TmodEntreePnulleC           = SIMP (typ='R',statut='o',defaut=286.0,fr="Temperature en C du moderateur a puissance nulle a l'entree du coeur"),
1421   TmodEntreePnomC             = SIMP (typ='R',statut='o',defaut=286.4,fr="Temperature en C du moderateur a puissance nominale a l'entree du coeur"),
1422   DeltaTmodEntreeSortiePnomC  = SIMP (typ='R',statut='o',defaut=39.0,fr="Ecart en C de temperature entre entree et sortie du coeur a puissance nominale"),
1423   TmodMoyenneCoeurPnomC       = SIMP (typ='R',statut='o',defaut=305.3,fr="Temperature moyenne en C du moderateur dans le coeur actif"),
1424   TmodMoyenneCuvePnomC        = SIMP (typ='R',statut='f',defaut=305.0,fr="Temperature moyenne en C du moderateur dans la cuve"),
1425   TcomMoyennePnomC            = SIMP (typ='R',statut='f',defaut=600.0,fr="Temperature moyenne en C du combustible dans le coeur"),
1426   TmodMoyenneReflecteurPnomC  = SIMP (typ='R',statut='f',defaut=296.0,fr="Temperature moyenne en C du reflecteur radial"),
1427   PositionGrappeHaute         = SIMP (typ='I',statut='f',defaut=225,fr="Position haute des grappes, en nombre de pas extraits"),
1428   DebitPrimaireConceptionM3_h = SIMP (typ='R',statut='f',defaut=70500.,fr="Debit primaire de conception dans le coeur en m3/h"),
1429   ProportionDebitCoeurCuve    = SIMP (typ='R',statut='f',defaut=0.97,fr="Rapport du debit coeur / debit cuve"),
1430   NbTubesGVBouches            = SIMP (typ='I',statut='f',defaut=0,fr="Nombre de tubes GV bouches"),
1431   SectionEcoulementCoeur      = SIMP (typ='R',statut='f',defaut=3.87,fr="Section d'ecoulement du moderateur dans le coeur en m2")
1432  ) ; # Fin CONDITIONS_FONCTIONNEMENT
1433 # -----------------------------------------------------------------------------------------------------------------------------------
1434 #  Classe PLAN_CHARGEMENT_COEUR : Classe de definition du plan de chargement combustible d'un coeur pour une campagne donnee                               
1435 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1436 #PLAN_CHARGEMENT_COEUR = OPER (nom="PLAN_CHARGEMENT_COEUR",op=0,sd_prod=PlanChargementCoeur,
1437 #
1438 #  fr                     = "Definition du plan de chargement combustible d'un coeur",
1439 #  ang = "Definition of a fuel loading core map ",
1440 #  IdentificateurCampagne = SIMP (typ='TXM',statut='o'),
1441 #  TypePlan               = SIMP (typ='TXM',into=('STD','FR','FF','FFG'), statut='f'),
1442 #  AssemblagePosition     = NUPL (
1443 #      max      = '**',
1444 #      elements = (      SIMP (typ=AssemblageCombustibleCharge,fr="Identificateur de l'assemblage"),
1445 #                        SIMP (typ='TXM',statut='f',fr="Repere alphanumerique de la Position dans le coeur"),
1446 #                        SIMP (typ='I',min=2,max=2,statut='f',fr="Coordonnees ij dans le plan radial du reseau du coeur")))
1447 # );
1448 # -----------------------------------------------------------------------------------------------------------------------------------
1449 #  Classe DATES_CLES_CAMPAGNE : Classe de definition des dates cles d'une campagne et de sa longueur
1450 #                               
1451 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1452 DATES_CLES_CAMPAGNE = OPER (nom="DATES_CLES_CAMPAGNE",op=0,sd_prod=DateClesCampagne,
1453
1454   fr                                  = "Definition des dates cles d'une campagne et de sa longueur",
1455   ang = "Definition of the campaign dates and length",
1456   IdentificateurCampagne              = SIMP (typ='TXM',statut='o',defaut='CZ101'),
1457   DateDDC                             = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de debut de campagne"),
1458   DatePnom                            = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A d'atteinte de la puissance nominale"),
1459   DateFDC                             = SIMP (typ='I',min=3,max=3,statut='o',fr="Date J M A de fin de campagne"),
1460   LongueurNaturelleTheoriqueMWj_t     = SIMP (typ='R',statut='f',fr="Longueur naturelle theorique calculee de la campagne en MWj/t"),
1461   LongueurNaturelleRecaleeMWj_t       = SIMP (typ='R',statut='f',fr="Longueur naturelle recalee calculee de la campagne en MWj/t"),
1462   LongueurNaturelleExperimentaleMWj_t = SIMP (typ='R',statut='f',fr="Longueur naturelle mesuree de la campagne en MWj/t"),
1463   LongueurAnticipationJepp            = SIMP (typ='R',statut='f',fr="Nombre de JEPP d'anticipation"),
1464   LongueurProlongationJepp            = SIMP (typ='R',statut='f',fr="Nombre de JEPP de prolongation"),
1465   LongueurTotaleExperimentaleMWj_t    = SIMP (typ='R',statut='f',fr="Longueur totale de la campagne en MWj/t") ) ;
1466 # -----------------------------------------------------------------------------------------------------------------------------------
1467 #  Classe OPTIONS_CODES :      Classe de definition des options generales et du type de calcul demande
1468 #                               
1469 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1470 OPTIONS_CODES = OPER (nom="OPTIONS_CODES",op=0,sd_prod=OptionsCodes,
1471   fr                 = "Definition des options des codes de calcul",
1472   ang = "Definition of calculation code options",
1473 # TypeCalcul         = SIMP (typ='TXM',defaut='Evolution',statut='f'),
1474 # CodeCalcul         = SIMP (typ='TXM',defaut='SUNSET',statut='f'),
1475 # ConditionLimite    = SIMP (typ=ConditionLimiteGenerale,statut='o'),
1476   OptionsCodeReseau  = FACT (
1477       OptionMulticellule        = SIMP (typ='TXM',defaut='ROTH',statut='f',into=('ROTH','MULTICELLULE'),fr="Option du calcul multicellule"),
1478       OptionPij                 = SIMP (typ='TXM',defaut='&UP0 &ROTH',statut='f',into=('&UP0 &ROTH','&UP0 &HETE','&UP1 &HETE'),fr="Option du calcul des Pij"),
1479       ParametresIntegration     = SIMP (typ='TXM',defaut='MAIL_INT 7 7 7 7',statut='f',fr="Donnees du maillage d'integration en heterogene"),
1480       ProportionNoyauxParDefaut = SIMP (typ='R',defaut=1.E-12,statut='f',fr="Valeur initiale des concentrations des noyaux lourds non definis"),
1481       OptionLaplacienB2         = SIMP (typ='TXM',defaut='CRITIQUE',statut='f',into=('CRITIQUE','NUL','IMPOSE'),fr="Option du calcul des fuites homogenes"),
1482       LaplacienB2               = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur initiale du laplacien du calcul des fuites"),
1483       OrdreAnisotropie          = SIMP (typ='I',defaut=1,statut='f',fr="Ordre d'anisotropie des sections de transfert"),
1484       Autoprotection            = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Calcul d'autoprotection ou non"),
1485       DonneesAutoprotection     = SIMP (typ=OptionsAutoprotection,statut='f',max='**',fr="Nom des objets decrivant les isotopes a autoproteger et les options associees"),
1486       RecalculAutoprotection    = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande ou non de recalcul de l'autoprotection"),
1487       Equivalence               = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande ou non de calcul d'equivalence"),
1488       NbGroupesEquivalence      = SIMP (typ='I',max='**',defaut=(2,6,16),statut='f',fr="Liste des nombres de groupes des calculs d'quivalence"),
1489       EditionAssemblage         = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees sur l'ensemble du domaine"),
1490       EditionCellule            = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces homogeneisees par cellule"),
1491       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"),
1492       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"),
1493       EditionTrimaran           = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition des sections efficaces pour TRIPOLI multigroupe"),
1494       SpectreNeutrons           = SIMP (typ='TXM',defaut='Prompt',statut='f',into=('Prompt','Retarde'),fr="Type de spectre de neutrons pour le calcul de transport"),
1495       ListeIsotopesEdites       = SIMP (typ='TXM',statut='f',max='**',fr="Liste des initiales des symboles des isotopes a editer"),
1496       FichierBickley            = SIMP (typ='TXM',statut='f',fr="Nom du fichier des fonctions Bickley"),
1497       EditionIsotopeHomogene    = SIMP (typ='TXM',defaut='Non',statut='f',into=('Oui','Non'),fr="Demande d'edition de constitution d'isotopes homogeneises sous forme APOLLIB"),
1498       RepertoireHomoge          = SIMP (typ='TXM',statut='f',fr="Nom du repertoire du fichier des isotopes homogenes sous forme APOLLIB"),
1499       FichierHomoge             = SIMP (typ='TXM',statut='f',fr="Nom du fichier des isotopes homogenes sous forme APOLLIB"),
1500       ExecutableAPOLLO          = NUPL (
1501           elements = ( SIMP (typ='TXM',fr="Systeme d'exploitation"),SIMP (typ='TXM',fr="Nom du fichier executable")),
1502           statut   = 'f'),
1503       ProceduresApollo2         = FACT (
1504                 OptionsListing  = SIMP (typ='TXM',statut='f'),
1505                 Evolution       = SIMP (typ='TXM',statut='f'),
1506                 Reprise         = SIMP (typ='TXM',statut='f'),
1507                 Equivalence     = SIMP (typ='TXM',statut='f'),
1508                 EditionCellule  = SIMP (typ='TXM',statut='f'),
1509                 EditionHomoge   = SIMP (typ='TXM',statut='f')),
1510       ProceduresSunset          = FACT (
1511                 Evolution       = SIMP (typ='TXM',statut='f'),
1512                 Reprise         = SIMP (typ='TXM',statut='f'),
1513                 Equivalence     = SIMP (typ='TXM',statut='f'),
1514                 EditionCellule  = SIMP (typ='TXM',statut='f'),
1515                 EditionHomoge   = SIMP (typ='TXM',statut='f'))),
1516 # --------------------------------------------------------------
1517   OptionsCodeCoeur  = FACT (
1518       ReactiviteVisee = SIMP (typ='R',defaut=0.,statut='f',fr="Valeur en pcm de la reactivite visee en calcul critique"),
1519       EfficaciteBoreEstimee = SIMP (typ='R',defaut=-6.,statut='f',fr="Valeur estimee en pcm/ppm de l'efficacite du bore"),
1520       TitreBoreInitiale = SIMP (typ='R',defaut=600.,statut='f',fr="Valeur estimee en ppm du titre en bore du moderateur"),
1521       ApproximationTransport = SIMP (typ='TXM',defaut='SPn',statut='f',into=('SPn','Sn')),
1522       BlocSPn   = BLOC (condition = "ApproximationTransport=='SPn'",
1523                         OrdreApproximation = SIMP (typ='I',defaut=1,statut='f',fr="Ordre n impair de la methode SPn"),
1524                         ElementFini        = SIMP (typ='TXM',defaut='RTN0',statut='f',into=('RTN0','RTN1'),fr="Type d'element fini"),
1525                         MaxIterationsDiffusion = SIMP (typ='I',defaut=1,into=(1,2,3,4,5),statut='f',fr="Nombre maximal d'iterations de diffusion")),
1526       BlocSn    = BLOC (condition = "ApproximationTransport=='Sn'",
1527                         OrdreApproximation = SIMP (typ='I',defaut=4,statut='f',fr="Ordre n pair de la methode Sn"),
1528                         ElementFini        = SIMP (typ='TXM',defaut='RTN',statut='f',into=('RTN','BDM'),fr="Type d'element fini"),
1529                         Acceleration       = SIMP (typ='TXM',defaut='Oui',statut='f',into=('Oui','Non'),fr="Acceleration par la diffusion"),
1530                         MaxIterationsDiffusion = SIMP (typ='I',defaut=20,statut='f',fr="Nombre maximal d'iterations de calcul de diffusion") ),
1531       PrecisionValeurPropre = SIMP (typ='R',defaut=1.E-5,statut='f',fr="Precision sur la valeur propre"),
1532       PrecisionFlux = SIMP (typ='R',defaut=1.E-3,statut='f',fr="Precision sur le flux"),
1533       PrecisionResolutionMultigroupe = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision de la resolution multigroupe"),
1534       PrecisionIterationTermeDiffusion = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision des iterations sur le terme de diffusion"),
1535       MaxIterationsEnEnergie = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations pour la resolution Gauss Seidel en energie"),
1536       MaxIterationsTermeDiffusion = SIMP (typ='I',defaut=1,statut='f',fr="Nombre maximal d'iterations sur le terme de diffusion"),
1537       MaxIterationsDecompositionDomaine = SIMP (typ='I',defaut=1,statut='f',fr="Nombre d'iterations de decomposition de domaine"),
1538       MaxIterationsKeffAvantCR = SIMP (typ='I',defaut=1,statut='f',fr="Nombre de calculs de keff avant appel aux contre-reactions"),
1539       GestionAutomatiquePasCinetique = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),statut='f',fr="Gestion automatique du pas de temps du calcul cinetique"),
1540       PrecisionIterationsFluxPrecurseurs = SIMP (typ='R',defaut=1.E-6,statut='f',fr="Precision sur les iterations Flux Precurseurs"),
1541       PrecisionParametreGestionAutomatique = SIMP (typ='R',defaut=0.0008,statut='f',fr="Precision sur les iterations Flux Precurseurs"),
1542       MaxIterationsFluxPrecurseurs = SIMP (typ='I',defaut=50,statut='f',fr="Nombre maximal d'iterations Flux Precurseurs"),
1543       ThetaSchemaCinetique = SIMP (typ='R',defaut=0.5,statut='f',fr="Valeur du parametre theta du schema cinetique") ),
1544 #  ------------------------------------------------------------------------------------------------------------------------------------
1545    OptionsThermiqueThermohydraulique = FACT (
1546        CoefficientEchangeGaineFluide = SIMP (typ='TXM',defaut='DITTUS_BOELTER',into=('FLICA','DITTUS_BOELTER'),statut='f',
1547                                              fr="Option du Coefficient d'échange gaine-fluide (flux < au flux critique)"),
1548        CoefficientEchangeGaineFluideEbullition = SIMP (typ='TXM',defaut='BST',into=('BST','TONG'),statut='f',
1549                                                        fr="Option du Coefficient d'échange gaine-fluide (Ebullition en film)"),
1550        CoefficientEchangeJeuPastilleGaineConstantTransitoire = SIMP (typ='TXM',defaut='Non',into=('Non','Oui'),statut='f',
1551                                                                      fr="Option de constance des coefficients d'échange gap"),
1552        CoefficientEchangeJeuPastilleGaine = SIMP (typ='TXM',defaut='HGAP_88',into=('EJECTION','TUO2','PLIN_BU','FIXE','HGAP_88'),statut='f',
1553                                                        fr="Option du Coefficient d'échange du jeu pastille-gaine"),
1554        BlocHgapTuo2     = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='TUO2'",
1555                                  Tuo2Initiale = SIMP (typ='R',statut='o',
1556                                                       fr="Température initiale combustible pour le calcul du coefficient d'échange") ),
1557        BlocHgapFixe     = BLOC (condition = "CoefficientEchangeJeuPastilleGaine=='FIXE'",
1558                                  Hgap = SIMP (typ='R',statut='o',defaut=5850.,fr="Valeur imposée du coefficient d'échange") ),
1559        ConductiviteCombustible = SIMP (typ='TXM',defaut='HGAP_88',into=('STORA','WESTINGHOUSE','HGAP_88','COMETHE'),statut='f',
1560                                                        fr="Option du Coefficient de conductivité du combustible"),
1561        CapaciteCalorifiqueCombustible = SIMP (typ='TXM',defaut='UO2_FRAMATOME',into=('UO2_BATES','UO2_FRAMATOME','UO2_THYC'),statut='f',
1562                                                        fr="Option du Coefficient de conductivité du combustible"),
1563        MateriauGaine = SIMP (typ='TXM',defaut='ZIRCALOY_CYRANO',into=('ZIRCALOY_CYRANO', 'ZIRCALOY_THYC', 'INCOLOY_800',
1564                                                                      'CHROMESCO_3', 'INOX_16', 'INOX_321', 'INOX_347', 'INOX_347_OXYDE',
1565                                                                      'INCONEL_600', 'NICKEL_75', 'PLATINE'),statut='f',
1566                             fr="Materiau de la gaine pour le calcul du roCp de la gaine et de sa conductivite"),
1567        FluxCritique = SIMP (typ='R',defaut=180.E4,fr="Valeur du flux critique en W/m2"),
1568        FractionPuissanceCombustible = SIMP (typ='R',defaut=0.974,fr="Fraction de la puissance degagee dans le combustible"),
1569        Creusement = SIMP (typ='TXM',defaut='Uniforme',statut='f',into=('Uniforme','Runnals','Framatome','Twinkle','Mox','EDF','Specifique')),
1570        BlocCreusement   = BLOC (condition = "Creusement=='Specifique'", 
1571                            RayonsCreusement = SIMP (typ='R',statut='o',fr="Rayons de definition du creusement de puissance (nz)"),
1572                            IrradiationsCreusement = SIMP (typ='R',statut='o',fr="Irradiations de definition du creusement de puissance (nbu)"),
1573                            EnrichissementsCreusement = SIMP (typ='R',statut='o',fr="Enrichissements de definition du creusement de puissance (nen)"),
1574                            PuissancesUO2 = SIMP (typ='R',max='**',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille UO2"),
1575                            PuissancesMOX = SIMP (typ='R',statut='f',fr="Valeurs des creusements de puissance P(nz,nbu,nen) dans une pastille MOX") ),
1576        DiscretisationPastilleCombustible = SIMP (typ='I',defaut=4,statut='f',fr="Nombre de points de discretisation radiale de la pastille combustible"),
1577        DiscretisationGaine = SIMP (typ='I',defaut=2,statut='f',fr="Nombre de points de discretisation radiale de la gaine de la pastille combustible"),
1578        PrecisionCalculThermique = SIMP (typ='R',defaut=0.1,fr="Precision en Celsius du calcul thermique radiale du crayon"),
1579        PrecisionCalculThermohydraulique = SIMP (typ='R',defaut=0.01,fr="Precision en Celsius du calcul thermohydraulique de la temperature du moderateur"),
1580        MaxIterationsThermique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermique"),
1581        MaxIterationsThermohydraulique = SIMP (typ='I',defaut=100,statut='f',fr="Nombre maximum d'iterations du calcul de thermohydraulique"),
1582        MethodeIntegrationThermohydraulique = SIMP (typ='TXM',defaut='Gauss',statut='f',into=('Gauss','NonGauss'),fr="Methode d'integration thermohydraulique"),
1583        PerteDeCharge = SIMP (typ='TXM',defaut='Non',statut='f',into=('Non','Oui'),fr="Prise en compte ou non de la perte de charge axiale"),
1584        TableEau = SIMP (typ='TXM',defaut='Thetis',statut='f',into=('Thetis','Interne'),
1585                         fr="Calcul des caracteristiques du moderateur par THETIS ou par des tables internes") ),
1586 #  ----------------------------------------------------------------------------------------------------------------------------------
1587    OptionsContreReactions = FACT (
1588        ContreReactions = SIMP (typ='TXM',defaut='Oui',into=('Oui','Non'),fr="Prise en compte des contre-reactions ou non"),
1589        PrecisionPuissance = SIMP (typ='R',defaut=1.E-4,fr="Precision sur la puissance a la fin des iterations de contre-reactions"),
1590        PrecisionKeff = SIMP (typ='R',defaut=1.E-5,fr="Precision sur keff a la fin des iterations de contre-reactions"),
1591        MethodeCalculSection = SIMP (typ='TXM',defaut='Spline1D',into=('Spline1D','SplinenD','Tabulation'),
1592                                     fr="Methode de calcul des sections efficaces avec Contre-reactions") )
1593  ) ; # Fin OPTIONS_CODES
1594 # -----------------------------------------------------------------------------------------------------------------------------------
1595 #  Classe DONNEES_GENERALES_ETUDE :     Classe de definition des caracteristiques globales de l'etude
1596 #                                       Definition de la centrale (site, numero de tranche) et numero de campagne d'irradiation
1597 #                                       Ces caracteristiques  d'environnement de l'etude doivent permettre de recuperer l'ensemble 
1598 #                                       des parametres de fonctionnement nominales du reacteur sujet de l'etude (creation de
1599 #                                       bibliotheques ou calcul de coeur)
1600 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1601 DONNEES_GENERALES_ETUDE = OPER (nom="DONNEES_GENERALES_ETUDE",op=0,sd_prod=DonneesGeneralesEtude,
1602
1603   fr                     = "Definition de la centrale sujet de l'etude et des options globales de l'etude",
1604   ang = "Definition of the power plant and of the global options",
1605   TypeCode               = SIMP (typ='TXM',defaut='Reseau',into=('Reseau','Coeur'),statut='o'),
1606   SiteNucleaire          = SIMP (typ=SiteNucleaire,defaut='TRICASTIN',statut='o'),
1607   BlocCoeur              = BLOC (condition = "TypeCode=='Coeur'",
1608                            NumeroTranche          = SIMP (typ='I',defaut=1,statut='f'),
1609                            NumeroCampagne         = SIMP (typ='I',defaut=1,statut='f'),
1610                            IdentificateurCampagne = SIMP (typ='TXM',defaut='TN101',statut='f'),
1611                            DatesCampagne          = SIMP (typ=DateClesCampagne,statut='f'),
1612                            TypeGestion            = SIMP (typ    = 'TXM',
1613                                                           defaut = '370Q',
1614                                                           statut = 'f',
1615                                                           into   = ('310Q','310T','325T','325Q','340Q','345AL',
1616                                                                     '370Q','370T','400T','HMOX','MOXNT','TMOX')),
1617                            TypeSchemaGrappe       = SIMP (typ    = 'TXM',
1618                                                           defaut = '900CPYUO2',
1619                                                           statut = 'f',
1620                                                           into   = ('900CP0','900CPYUO2INITIAL','900CPYUO2',
1621                                                                     '900CPYUO2AL','900CPYMOX','1300','N4')),
1622                            PositionGrappe        = SIMP (typ=PositionGrappesCommande,statut='f'),
1623                            TypeEvaluationSurete  = SIMP (typ='TXM',defaut='900STD',statut='f',
1624                                                          into=('900STD','900GARANCE','1300STD','1300GEMMES','N4STD')),
1625                            ModePilotage          = SIMP (typ='TXM',defaut='G',statut='f',into=('A','G','X')),
1626                            PlanChargement        = SIMP (typ=Reseau,statut='f'),
1627                            CodeCalcul            = SIMP (typ='TXM',defaut='SNCODE',statut='f')),
1628   BlocReseau            = BLOC (condition = "TypeCode=='Reseau'",
1629                            Assemblage            = SIMP (typ=AssemblageType,statut='f'),
1630                            ContreReactions       = SIMP (typ=EspaceVariations,statut='f'),
1631                            CodeCalcul            = SIMP (typ='TXM',defaut='SUNSET',statut='f')),
1632   ConditionsMoyennes    = SIMP (typ=ConditionsFonctionnementMoyennes,statut='f'),
1633   Options               = SIMP (typ=OptionsCodes,statut='f'),
1634   PasIrradiation        = SIMP (typ=DonneesEvolutionIrradiation,statut='f'),
1635 # ConditionLimite       = SIMP (typ=ConditionLimiteGenerale,statut='o'),
1636   TypeCalcul            = SIMP (typ='TXM',max='**',defaut='Evolution',
1637                                 into=('Evolution','EvolutionMicroscopique','Reprise','Statique','Cinetique',
1638                                       'BoreImpose','BoreCritique'),statut='f')
1639  ) ;
1640  
1641 class resultat(TObjet): pass
1642 class resultat2(resultat): pass
1643
1644 CALCUL=OPER(nom="CALCUL",op=10,sd_prod=resultat,
1645              materiau=SIMP(typ=Materiau),
1646             PRESSION=SIMP(defaut=10000.,typ="R")
1647             );
1648
1649 CALCUL2=OPER(nom="CALCUL2",op=11,sd_prod=resultat2,
1650              donnee=SIMP(typ=resultat),
1651              materiau=SIMP(typ=Materiau),
1652             );
1653
1654  
1655  
1656