1 #@ MODIF sd_compor SD DATE 19/11/2007 AUTEUR PROIX J-M.PROIX
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 # ======================================================================
22 from SD.sd_mater import sd_mater
26 # la sd_compor est produite par la seule commande DEFI_COMPOR.
27 # C'est pourquoi, on fera appel parfois pour la décrire au vocabulaire de cette
30 class sd_compor(AsBase):
34 CPRR = Facultatif(AsVR())
37 def check_tout(self,checker) :
38 #-------------------------------
41 assert type in (1,2,3) , CPRI
43 self.monocristal(cpri,checker)
45 self.polycristal(cpri,checker)
47 self.multifibres(cpri,checker)
51 def monocristal(self,cpri,checker) :
52 #------------------------------------
56 assert nvi==9+3*nbsys , (nvi, nbsys, cpri)
57 cprk=self.CPRK.get_stripped()
59 # vérif existence et longueur
60 assert len(cpri)==7, cpri
61 assert len(cprk)==5*nboccm+1, (cpri,cprk)
62 assert not self.CPRR.get()
66 assert cpri[1] == 1 ,cpri
67 assert cpri[2] == nvi ,cpri
68 assert cpri[3] == 1 ,cpri
69 assert cpri[4] > 0 ,cpri
70 assert cpri[5] == 1 ,cpri
71 assert cpri[6] == nvi ,cpri
76 assert elas in ('ELAS', 'ELAS_ORTH') ,cprk
77 for k in range(nboccm):
81 ecro_isot =cprk[5*k+3]
82 ecro_cine =cprk[5*k+4]
83 sd2=sd_mater(mater) ; sd2.check(checker)
84 assert famil in ('BASAL','BCC24','PRISMATIQUE','OCTAEDRIQUE','PYRAMIDAL1',
85 'PYRAMIDAL2','CUBIQUE1','CUBIQUE2','MACLAGE','JOINT_GRAIN',
87 assert ecoul in ('ECOU_VISC1','ECOU_VISC2','ECOU_VISC3')
88 assert ecro_isot in ('ECRO_ISOT1','ECRO_ISOT2')
89 assert ecro_cine in ('ECRO_CINE1','ECRO_CINE2')
93 def polycristal(self,cpri,checker) :
94 #------------------------------------
96 assert nbphases > 0 , cpri
97 lgcprk =cpri[6+3*nbphases-2]
98 assert lgcprk > 0 , cpri
99 cprk=self.CPRK.get_stripped()
102 # vérif existence et longueur
103 #------------------------------
104 assert len(cpri)==6+3*nbphases, (cpri,nbphases)
105 assert len(cprr)==2+4*nbphases, (cpri,cprr,nbphases)
106 assert len(cprk)==lgcprk, (cpri,cprk)
111 assert nvitot >= 0 ,cpri
113 assert nbmono > 0 ,cpri
114 nbpara =cpri[6+3*nbphases-1]
115 assert nbpara in (0,1,2) ,cpri
116 for k in range(nbphases):
117 nbfam1 = cpri[4+3*k+0]
118 numono = cpri[4+3*k+1]
120 assert nbfam1 > 0 ,cpri
121 assert numono > 0 and numono <= nbmono ,(cpri,nbmono)
122 assert nvi1 >=0 ,cpri
127 for k in range(nbphases):
129 assert frac >= 0. and frac <= 1. ,(cprr,k)
130 frac_tot=frac_tot+frac
131 for dir in range(1,4):
133 assert angl >=0. and angl <=360. , (angl,dir)
134 assert frac_tot > 0.99 and frac_tot < 1.01
139 assert locali in ('BZ','BETA') ,(locali,cprk)
141 for k in range(nbmono):
142 mono1 =cprk[0+decal+1]
143 sd2=sd_compor(mono1) ; sd2.check(checker)
144 nbfam1=int(cprk[0+decal+2])
145 assert nbfam1 > 0 , (nbfam1,k,decal,cprk)
146 decal=decal+2+5*nbfam1+1
147 # on pourrait encore vérifier que le .CPRK de mono1 a bien été recopié
148 # mais il faut bien s'arreter ...
152 def multifibres(self,cpri,checker) :
153 #------------------------------------
155 cprk=self.CPRK.get_stripped()
157 # vérif existence et longueur
158 assert len(cpri)==3, cpri
159 assert len(cprk)==6*nbgmax+1, (cpri,cprk)
160 assert not self.CPRR.get()
164 assert cpri[1] > 0, cpri
165 assert cpri[2] > 0, cpri
170 assert mater != '', cprk
171 sd2=sd_mater(mater) ; sd2.check(checker)
172 for k in range(nbgmax):
178 nbfib= int(cprk[6*k+5])
179 assert grfib1 != '' , cprk
180 assert mater1 != '' , cprk
181 sd2=sd_mater(mater1) ; sd2.check(checker)
182 assert loifib1 != '' , cprk
183 assert algo1d in ('ANALYTIQUE','DEBORST') , cprk
184 assert deform in ('PETIT','PETIT_REAC','REAC_GEOM') , cprk
185 assert nbfib > 0 , cprk