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