1 #@ MODIF sd_cham_mater SD DATE 28/01/2008 AUTEUR PELLET J.PELLET
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
23 from SD.sd_carte import sd_carte
24 from SD.sd_champ import sd_champ
25 from SD.sd_mater import sd_mater
26 from SD.sd_compor import sd_compor
27 from SD.sd_util import *
32 # la sd_cham_mater est produite par la seule commande AFFE_MATERIAU.
33 # C'est pourquoi, on fera appel parfois pour la décrire au vocabulaire de cette
38 class sd_cham_mater_varc(AsBase):
39 #----------------------------------
40 # la sd_cham_mater_varc est la partie de la sd_cham_mater correspondant aux variables de commande
51 return self.CVRCVARC.exists
53 # indirection via CVRCVARC:
54 def check_cham_mater_i_CVRCVARC(self, checker):
55 if not self.exists() : return
56 lnom=self.CVRCVARC.get()
58 nom2=self.nomj()[:8]+'.'+nom+'.1'
59 sd2=sd_carte(nom2) ; sd2.check(checker)
61 nom2=self.nomj()[:8]+'.'+nom+'.2'
62 sd2=sd_carte(nom2) ; sd2.check(checker)
64 # dans le cas de la temperature, on cree parfois des cartes sous-terraines
65 # (lorsque l'on indique VALE_REF sans donner de CHAMP_GD/EVOL) :
66 if nom.strip()=='TEMP':
70 vale=sd2.VALE.get_stripped()
72 assert len(vale)==ncmp*ngdmax, (ngdmax, ncmp, vale)
73 for kedit in range(ngdedi):
74 assert vale[ncmp*kedit+0]=='TEMP' , (vale, kedit,ncmp)
75 if vale[ncmp*kedit+1]=='CHAMP' :
76 sd3=sd_champ(vale[ncmp*kedit+2]) ; sd3.check(checker)
79 # vérification des objets .CVRC* :
80 def check_CVRC(self, checker):
81 if not self.exists() : return
82 cvrccmp=self.CVRCCMP.get()
83 cvrcnom =self.CVRCNOM.get_stripped()
84 cvrcgd =self.CVRCGD.get_stripped()
85 cvrcvarc=self.CVRCVARC.get_stripped()
86 cvrcdef =self.CVRCDEF.get()
88 # Les 6 objets ont la meme longueur > 0 :
90 assert nbcvrc > 0, (self)
91 assert len(cvrccmp) == nbcvrc , (cvrccmp,cvrcnom,self)
92 assert len(cvrcgd) == nbcvrc , (cvrcgd,cvrcnom,self)
93 assert len(cvrcvarc) == nbcvrc , (cvrcvarc,cvrcnom,self)
94 assert len(cvrcdef) == nbcvrc , (cvrcdef,cvrcnom,self)
96 # Les 4 objets sont "non blancs" :
97 sdu_tous_non_blancs(self.CVRCCMP,checker)
98 sdu_tous_non_blancs(self.CVRCNOM,checker)
99 sdu_tous_non_blancs(self.CVRCGD,checker)
100 sdu_tous_non_blancs(self.CVRCVARC,checker)
102 # les noms des CRVC doivent etre differents:
103 sdu_tous_differents(self.CVRCNOM,checker)
108 class sd_cham_mater(AsBase):
109 #=============================
112 # CHAMP_MAT est une carte contenant la liste des noms de matériaux
113 # affectées sur les mailles du maillage.
114 CHAMP_MAT = sd_carte()
117 varc = Facultatif(sd_cham_mater_varc(SDNom(nomj='')))
120 # COMPOR est une carte définissant les sd_compor affectés
121 # sur les mailles du maillage
122 COMPOR = Facultatif(sd_carte())
125 def check_CHAMP_MAT(self,checker) :
126 #----------------------------------
127 # on vérifie que la carte .CHAMP_MAT contient bien des noms de matériau.
128 vale=self.CHAMP_MAT.VALE.get_stripped()
129 desc=self.CHAMP_MAT.DESC.get()
132 assert sdu_nom_gd(numgd) == 'NEUT_F', (desc,sdu_nom_gd(numgd))
133 ncmp_max=len(sdu_licmp_gd(numgd))
134 assert ncmp_max==30 , ncmp_max
136 for kedit in range(n_gd_edit):
137 v1=vale[kedit*ncmp_max:(kedit+1)*ncmp_max]
139 for k1 in range(len(v1)) :
141 if x1 == '' : continue
143 # cas particulier : 'TREF=>', '25.0'
148 assert k1 == ktref+1 , (k1, ktref)
149 # on doit retrouver la valeur de TREF :
153 assert 0 , ' On doit trouver la valeur de TREF: '+x1
156 # cas général : x1 est un nom de sd_mater
157 sd2=sd_mater(x1) ; sd2.check(checker)
160 def check_COMPOR(self,checker) :
161 #----------------------------------
162 # on vérifie (un peu) la carte .COMPOR (si elle existe)
163 desc=self.COMPOR.DESC.get()
165 vale=self.COMPOR.VALE.get_stripped()
168 assert sdu_nom_gd(numgd) == 'COMPOR', (desc,sdu_nom_gd(numgd))
169 ncmp_max=len(sdu_licmp_gd(numgd))
171 for kedit in range(n_gd_edit):
172 v1=vale[kedit*ncmp_max:(kedit+1)*ncmp_max]
173 assert v1[3]=='COMP_INCR' , v1
174 sd2=sd_compor(v1[5].split('.')[0].strip()) ; sd2.check(checker)