From cd721fc5c99aa53970c8e9ef11b329efe390a507 Mon Sep 17 00:00:00 2001 From: PASCALE NOYRET Date: Fri, 8 Jul 2022 12:09:20 +0200 Subject: [PATCH] partage Eric --- Noyau/N_VALIDATOR.py | 13 +++ ReacteurNumerique/cata_UQ.py | 123 ++++++++++++++++++++++++-- ReacteurNumerique/creationAsEficas.py | 31 +++++++ ReacteurNumerique/petitCata.xsd | 42 +++++++++ ReacteurNumerique/toto.comm | 5 ++ 5 files changed, 208 insertions(+), 6 deletions(-) create mode 100755 ReacteurNumerique/creationAsEficas.py create mode 100644 ReacteurNumerique/petitCata.xsd create mode 100644 ReacteurNumerique/toto.comm diff --git a/Noyau/N_VALIDATOR.py b/Noyau/N_VALIDATOR.py index 6eb770ea..f6f812bb 100644 --- a/Noyau/N_VALIDATOR.py +++ b/Noyau/N_VALIDATOR.py @@ -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]) diff --git a/ReacteurNumerique/cata_UQ.py b/ReacteurNumerique/cata_UQ.py index 70f8604d..7c56139d 100644 --- a/ReacteurNumerique/cata_UQ.py +++ b/ReacteurNumerique/cata_UQ.py @@ -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 index 00000000..761cfbb6 --- /dev/null +++ b/ReacteurNumerique/creationAsEficas.py @@ -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 index 00000000..90ddbff9 --- /dev/null +++ b/ReacteurNumerique/petitCata.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Description of a fuel assembly DKLib file + + + + + diff --git a/ReacteurNumerique/toto.comm b/ReacteurNumerique/toto.comm new file mode 100644 index 00000000..561b2c9e --- /dev/null +++ b/ReacteurNumerique/toto.comm @@ -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'),)); + -- 2.39.2