]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
partage Eric
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Fri, 8 Jul 2022 10:09:20 +0000 (12:09 +0200)
committerPASCALE NOYRET <pascale.noyret@edf.fr>
Fri, 8 Jul 2022 10:09:20 +0000 (12:09 +0200)
Noyau/N_VALIDATOR.py
ReacteurNumerique/cata_UQ.py
ReacteurNumerique/creationAsEficas.py [new file with mode: 0755]
ReacteurNumerique/petitCata.xsd [new file with mode: 0644]
ReacteurNumerique/toto.comm [new file with mode: 0644]

index 6eb770ea79d721a6d149d19c76f97cec8e8f14b9..f6f812bbadb55fd1f6eea1f6482406a592930c4d 100644 (file)
@@ -293,6 +293,9 @@ class IntoProtocol(PProtocol):
         self.val_max = val_max
 
     def default(self, obj, into, val_min, val_max):
+        #if into == [] : 
+        #    raise ValError(
+        #         tr("La valeur : %s  ne fait pas partie des choix possibles %s") % (repr(obj), into))
         if type(into)  ==types.FunctionType :
             maListeDeValeur=into()
             into=maListeDeValeur
@@ -1012,6 +1015,11 @@ class OrVal(Valid):
                 return 1
         return 0
 
+    def set_MCSimp (self, MCSimp):
+        for validator in self.validators:
+             if hasattr(validator, 'set_MCSimp'):
+                validator.set_MCSimp(MCSimp)
+
 
 class AndVal(Valid):
 
@@ -1036,6 +1044,11 @@ class AndVal(Valid):
                     setattr(self, fonction, f)
         self.cata_info = ""
 
+    def set_MCSimp (self, MCSimp):
+        for validator in self.validators:
+             if hasattr(validator, 'set_MCSimp'):
+                validator.set_MCSimp(MCSimp)
+
     def info(self):
         return "\n et ".join([v.info() for v in self.validators])
 
index 70f8604d70ea4c073dd5d6b832559750bf13231e..7c56139d6c359424657a9c81b7ad3ecb18704843 100644 (file)
@@ -12,10 +12,120 @@ from Noyau.N_VALIDATOR import Valid
 
 #TODO --> si UserDefined et Uranie alors UserDefined
 
-# a faire
-class infFrereMC(Valid):
-    def __init__(self,nomMCFrere):
-        self.nomMCFrere = nomMCFrere
+
+class CataError(Exception):
+    pass
+
+
+class compareAutreMC(Valid) :
+#----------------------------
+    def __init__(self,frere=None):
+        Valid.__init__(self, frere=frere)
+        self.nomFrere=frere
+        
+    def set_MCSimp (self, MCSimp):
+        print ('je passe la pour ', self, MCSimp.nom)
+        self.MCSimp=MCSimp
+
+class supValeurProbabiliste(compareAutreMC):
+#-------------------------------------------
+    def convert(self, valeur):
+        try : VP=self.MCSimp.parent.parent.parent.variableDeterministe.valeur
+        except : return valeur
+        if VP == None : return valeur
+        if VP > valeur : 
+           raise CataError('la valeur de la variable Probabiliste  est superieure a la valeur entree ')
+        return valeur
+
+    def verifItem(self, valeur):
+        try : VP=self.MCSimp.parent.parent.parent.variableDeterministe.valeur
+        except : return valeur
+        if VP== None : return 1
+        if VP > valeur :
+           raise CataError(' la valeur de la variable Probabiliste est superieure a la valeur entree et doit etre inferieure')
+           return 0
+        return 1
+
+    def infoErreurItem(self, valeur):
+        return 'la valeur de la variable Probabiliste est superieure a la valeur entree et doit etre inferieure'
+
+
+class infValeurProbabiliste(compareAutreMC):
+#-------------------------------------------
+    def convert(self, valeur):
+        valeur=valeur
+        try : VP=self.MCSimp.parent.parent.parent.variableDeterministe.valeur
+        except : return valeur
+        VP=self.MCSimp.parent.parent.parent.variableDeterministe.valeur
+        if VP < valeur : 
+           raise CataError('la valeur de la variable Probabiliste  est inferieure a la valeur entree ')
+        return valeur
+
+    def verifItem(self, valeur):
+        try : VP=self.MCSimp.parent.parent.parent.variableDeterministe.valeur
+        except : return valeur
+        if VP== None : return 1
+        if VP  < valeur :
+           raise CataError(' la valeur de la variable Probabiliste est inferieure a la valeur entree et doit etre superieure')
+           return 0
+        return 1
+
+    def infoErreurItem(self, valeur):
+        return 'la valeur de la variable Probabiliste est inferieure a la valeur entree et doit etre superieure'
+
+class infFrereMC(compareAutreMC):
+#-------------------------------
+    def convert(self, valeur):
+        # on sort de cardProto on a une liste
+        valeur=valeur[0]
+        MCFrere=self.MCSimp.parent.getChildOrChildInBloc(self.nomFrere)
+        if not MCFrere    : return valeur
+        if MCFrere== None : return valeur
+        if MCFrere.valeur  < valeur : 
+           raise CataError('la valeur de '+self.nomFrere + ' est inferieure a la valeur entree ')
+        return valeur
+
+    def verifItem(self, valeur):
+        MCFrere=self.MCSimp.parent.getChildOrChildInBloc(self.nomFrere)
+        if not MCFrere    : return 1
+        if MCFrere== None : return 1
+        if MCFrere.valeur  < valeur :
+           raise CataError('la valeur de '+self.nomFrere + ' est inferieure a la valeur entree et doit etre superieure')
+           return 0
+        return 1
+
+    def infoErreurItem(self, valeur):
+        return 'la valeur de '+self.nomFrere + ' est inferieure a la valeur entree et doit etre superieure'
+
+    def info(self):
+        return 'la valeur de '+self.nomFrere + ' est inferieure a la valeur entree et doit etre superieure'
+
+class supFrereMC(compareAutreMC):
+#--------------------------------
+    def convert(self, valeur):
+        # on sort de cardProto on a une liste
+        valeur=valeur[0]
+        MCFrere=self.MCSimp.parent.getChildOrChildInBloc(self.nomFrere)
+        if not MCFrere    : return valeur
+        if MCFrere== None : return valeur
+        if MCFrere.valeur  > valeur : 
+           raise CataError('la valeur de '+self.nomFrere + ' est superieure a la valeur entree et doit etre inferieure')
+        return valeur
+
+    def verifItem(self, valeur):
+        MCFrere=self.MCSimp.parent.getChildOrChildInBloc(self.nomFrere)
+        if not MCFrere    : return 1
+        if MCFrere== None : return 1
+        if MCFrere.valeur  > valeur :
+           raise CataError('la valeur de '+self.nomFrere + ' est superieure a la valeur entree et doit etre inferieure')
+           return 0
+        return 1
+
+    def infoErreurItem(self, valeur):
+        return 'la valeur de '+self.nomFrere + ' est superieure a la valeur entree et doit etre inferieure'
+
+    def info(self):
+        return 'la valeur de '+self.nomFrere + ' est superieure a la valeur entree '
 # 
 #listeLoiDistribution= (  #"Beta", #"Exponential", #"Gamma", #"Geometric", #"Gumbel", #"Histogram", #"Laplace", #"Logistic", #"LogNormal", #"MultiNomial",
                          #"NonCentralStudent", #"Normal", #"Poisson", #"Rayleigh", #"Student", #"Triangular", "TruncatedNormal", "Uniform", "UserDefined",
@@ -556,6 +666,8 @@ def creeUniform():
                                 defaut=0,
                                 #fr = "Borne inferieure du support de la loi | A < B",
                                 #ang = "Support lower bound | A < B",
+                                validators=[infFrereMC(frere='B'),infValeurProbabiliste()],
+                                #validators=infFrereMC(frere='B')
                                 ),
 
                      B = SIMP( statut = "o",
@@ -564,8 +676,7 @@ def creeUniform():
                                 defaut=200,
                                 #fr = "Borne superieure du support de la loi | A < B",
                                 #ang = "Support upper bound | A < B",
-                                #siValide=verifieBorneInUniforme,
-                                #validators=[infFrereMC('A'),]
+                                validators=[infFrereMC(frere='A'),supValeurProbabiliste()],
                                 ),
    ) # Fin BLOC UNIFORM
    return UNIFORM
diff --git a/ReacteurNumerique/creationAsEficas.py b/ReacteurNumerique/creationAsEficas.py
new file mode 100755 (executable)
index 0000000..761cfbb
--- /dev/null
@@ -0,0 +1,31 @@
+#! /usr/bin/env python3
+# -*- coding:utf-8 -*-
+import sys
+
+#print(sys.argv[:])
+
+import petitCata_driver as mdm
+import pyxb
+
+#THESE CONFIGURATION LINES ARE FOR ADVANCED INTERNAL TEST ONLY, YOU DON'T NEED TO CONFIGURE PYXB LIKE THIS
+#mdm.pyxb.GlobalValidationConfig._setContentInfluencesGeneration(mdm.pyxb.GlobalValidationConfig.NEVER)
+mdm.pyxb.GlobalValidationConfig._setContentInfluencesGeneration(mdm.pyxb.GlobalValidationConfig.ALWAYS)
+mdm.pyxb.GlobalValidationConfig._setInvalidElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+mdm.pyxb.GlobalValidationConfig._setOrphanElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+
+
+objPyxbRB=[]
+listeArg=[]
+listeArg.append(mdm.T_rod_bank_names_n1_tuple('A'))
+listeArg.append(mdm.T_rod_bank_names_n2_tuple('B'))
+objPyxbRB.append(mdm.T_rod_bank_names(*listeArg))
+print (objPyxbRB[0].toDOM(element_name='rb').toprettyxml())
+
+listeArgGlob=[]
+dicoArgGlob={}
+listeArgGlob.append(objPyxbRB)
+dicoArgGlob['rod_bank_names']=objPyxbRB
+
+AssemblyFile=mdm.T_AssemblyDKLibFile(**dicoArgGlob)
+print (AssemblyFile.toDOM(element_name='AssemblyFile').toprettyxml())
+
diff --git a/ReacteurNumerique/petitCata.xsd b/ReacteurNumerique/petitCata.xsd
new file mode 100644 (file)
index 0000000..90ddbff
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://chercheurs.edf.com/logiciels/RN_EDG"
+xmlns:RN_EDG="http://chercheurs.edf.com/logiciels/RN_EDG"
+targetNamespace="http://chercheurs.edf.com/logiciels/RN_EDG"
+elementFormDefault="qualified" attributeFormDefault="unqualified" version="0">
+       <xs:simpleType name="AccasAssd">
+               <xs:restriction base="xs:string">
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:simpleType name="T_rod_bank_names_n1_tuple">
+               <xs:restriction base="xs:string"/>
+               </xs:simpleType>
+       <xs:simpleType name="T_rod_bank_names_n2_tuple">
+               <xs:restriction base="xs:string"/>
+               </xs:simpleType>
+       <xs:complexType name="T_rod_bank_names">
+               <xs:sequence>
+                       <xs:element name="n1" type="T_rod_bank_names_n1_tuple" minOccurs="1" maxOccurs="1"/>
+                       <xs:element name="n2" type="T_rod_bank_names_n2_tuple" minOccurs="1" maxOccurs="1"/>
+               </xs:sequence>
+               <xs:attribute name="sdType" type="xs:string" fixed="Tuple"/>
+       </xs:complexType>
+       <xs:complexType name="T_AssemblyDKLibFile" >
+               <xs:sequence>
+                       <xs:element name="rod_bank_names" type="RN_EDG:T_rod_bank_names" minOccurs="1" maxOccurs="unbounded"/>
+               </xs:sequence>
+               <xs:attribute name="sdName" type="xs:string"/>
+               <xs:attribute name="sdType" type="xs:string" fixed="ASSD"/>
+               <xs:attribute name="typeUtilisateur" type="xs:string" fixed="_AssemblyDKLibFile"/>
+       </xs:complexType>
+       <xs:element name="RN_EDG" type="RN_EDG:T_RN_EDG"/>
+               <xs:complexType name="T_RN_EDG">
+                 <xs:choice minOccurs="0" maxOccurs="unbounded">
+                       <xs:element name="AssemblyDKLibFile" type="RN_EDG:T_AssemblyDKLibFile" minOccurs="0" maxOccurs="1">
+                               <xs:annotation>
+                                       <xs:documentation>Description of a fuel assembly DKLib file</xs:documentation>
+                               </xs:annotation>
+                       </xs:element>
+                 </xs:choice>
+               </xs:complexType>
+</xs:schema>
diff --git a/ReacteurNumerique/toto.comm b/ReacteurNumerique/toto.comm
new file mode 100644 (file)
index 0000000..561b2c9
--- /dev/null
@@ -0,0 +1,5 @@
+AF3R_400=AssemblyDKLibFile(#filename='cocagne_data/dklib/AF3R_400.dklib',
+                           #pattern='PALU_AF3R_17_4.00_0P_0P_100_100__535_306.5_0.7127__500____________________________P13',
+                           #rod_bank_names=(('Black','black_rods'),('Grey','grey_rods'),('B4C','b4c_rods')),);
+                           rod_bank_names=(('Black','black_rods'),));
+