1 #@ MODIF macr_aspic_mail_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2004 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 math import sqrt,cos,sin,pi,pow,tan
25 # Ecriture du fichier GIBI principal (dgib) - ASPID0
26 def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
27 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
28 ITYPSO, DPENE, NIVMAG, loc_datg) :
30 # Ouverture du fichier d'entrée de commandes
31 fdgib=open(nomFichierDATG,'w')
33 texte='****************************************************************\n'
34 texte=texte+'opti echo 0 ; \n'
35 texte=texte+'epT1 = '+str(EPT1) +POIVIR
36 texte=texte+'DeT1 = '+str(DET1) +POIVIR
37 texte=texte+'d1 = '+str(D1) +POIVIR
38 texte=texte+'d2 = '+str(D2) +POIVIR
39 texte=texte+'epT2 = '+str(EPT2) +POIVIR
40 texte=texte+'DeT2 = '+str(DET2) +POIVIR
41 texte=texte+'Zmax = '+str(ZMAX) +POIVIR
42 texte=texte+'type_s = '+str(ITYPSO) +POIVIR
43 texte=texte+'d_pene = '+str(DPENE) +POIVIR
44 texte=texte+'h = '+str(H) +POIVIR
45 texte=texte+'angl_s = '+str(ALPHA) +POIVIR
46 texte=texte+'jeu = '+str(JEU) +POIVIR
47 texte=texte+'epC = '+str(EPC) +POIVIR
48 texte=texte+'DeC = '+str(DEC) +POIVIR
49 texte=texte+'Xmax = '+str(XMAX) +POIVIR
50 texte=texte+'typmai = MOT '+TYPMAI +POIVIR
51 texte=texte+'theta = '+str(THETA) +POIVIR
52 texte=texte+'typele = MOT '+TYPELE +POIVIR
53 texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
54 texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
56 texte=texte+'opti donn '
57 texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
62 # Ecriture du fichier GIBI principal (dgib) - ASPID1
63 def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
64 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
65 A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
66 TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
68 # Ouverture du fichier d'entrée de commandes
69 fdgib=open(nomFichierDATG,'w')
71 texte='****************************************************************\n'
72 texte=texte+'opti echo 0 ; \n'
73 texte=texte+'epT1 = '+str(EPT1) +POIVIR
74 texte=texte+'DeT1 = '+str(DET1) +POIVIR
75 texte=texte+'d1 = '+str(D1) +POIVIR
76 texte=texte+'d2 = '+str(D2) +POIVIR
77 texte=texte+'epT2 = '+str(EPT2) +POIVIR
78 texte=texte+'DeT2 = '+str(DET2) +POIVIR
79 texte=texte+'Zmax = '+str(ZMAX) +POIVIR
80 texte=texte+'type_s = '+str(ITYPSO) +POIVIR
81 texte=texte+'d_pene = '+str(DPENE) +POIVIR
82 texte=texte+'h = '+str(H) +POIVIR
83 texte=texte+'angl_s = '+str(ALPHA) +POIVIR
84 texte=texte+'jeu = '+str(JEU) +POIVIR
85 texte=texte+'epC = '+str(EPC) +POIVIR
86 texte=texte+'DeC = '+str(DEC) +POIVIR
87 texte=texte+'Xmax = '+str(XMAX) +POIVIR
88 texte=texte+'typmai = MOT '+TYPMAI +POIVIR
89 texte=texte+'theta = '+str(THETA) +POIVIR
90 texte=texte+'a = '+str(A) +POIVIR
91 texte=texte+'c = '+str(C) +POIVIR
92 texte=texte+'zeta = '+str(ZETA) +POIVIR
93 texte=texte+'eps = '+str(EPS) +POIVIR
94 texte=texte+'rc0 = '+str(RC0) +POIVIR
95 texte=texte+'ns = '+str(NS) +POIVIR
96 texte=texte+'nc = '+str(NC) +POIVIR
97 texte=texte+'nt = '+str(NT) +POIVIR
98 texte=texte+'dir_fiss = MOT '+POSI +POIVIR
99 texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
100 texte=texte+'ndt = '+str(NDT) +POIVIR
101 texte=texte+'f_etir_f = '+str(FETIRF) +POIVIR
102 texte=texte+'f_etir_p = '+str(FETIRP) +POIVIR
103 texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
104 texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
106 texte=texte+'opti donn '
107 texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
112 # Ecriture du fichier GIBI principal (dgib) - ASPID2
113 def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
114 H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
115 THETA, A, C, EPS, RC0, RC1, RC2, RC3,
116 ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
117 ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
119 CALPHA = cos(ALPHA*pi/180.)
120 SALPHA = sin(ALPHA*pi/180.)
121 CTHETA = cos(THETA*pi/180.)
122 STHETA = sin(THETA*pi/180.)
128 if (POSI == 'DROIT') :
130 if (TFISS == 'DEB_INT') :
132 SGAMMA = STHETA * (DET1/2.0)/( (DEC/2.0) -EPC)
133 SGAMME = STHETA * (DET1/2.0)/( (DEC/2.0) )
134 RAPPA = sqrt(1.0 - pow(SGAMMA,2))
135 RAPPE = sqrt(1.0 - pow(SGAMME,2))
136 AP = A - (1.0 - RAPPA)*A
137 RAPP = (AP/EPC*RAPPE) + (1.0-(AP/EPC))*RAPPA
138 XA = (DET1/2.0) * CTHETA
139 YA = (DET1/2.0) * STHETA
140 ZA = ((DEC/2.0) -EPC) * sqrt(1.0 - pow(SGAMMA,2))
141 ZA0 = (DEC/2.0) - EPC
149 ZN = ZN0 * sqrt(1.0 - (SGAMN*SGAMN))
150 D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
151 DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
153 ECART = (1.0 - RAPP) * D0N0
155 elif (TFISS == 'DEB_EXT') :
157 SGAMME = STHETA * (DET1/2.0)/ (DEC/2.0)
158 RAPPE = sqrt(1.0 - pow(SGAMME,2))
159 A = A -(1.0 - RAPPE)*A
161 elif (POSI == 'INCLINE') :
163 SGAMMA = STHETA * (DET1/2.0)/ ( (DEC/2.0) -EPC)
164 XA = (DET1/2.0) * CTHETA
165 YA = (DET1/2.0) * STHETA
166 ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
167 ZA0 = (DEC/2.0) - EPC
170 XD0 = XA0 + (tan(ALPHA*pi/180.0) * EPC)
171 A0D0 = sqrt( pow((ZD0 - ZA0),2) + pow((XD0 - XA0),2) )
172 EPSIL = STHETA * tan(ALPHA*pi/180.0)
173 PHI = (EPSIL * ZA) - YA
174 DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
176 YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
178 YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
180 ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
182 if ( (abs(THETA - 0.0) < 1.e-3) or ((abs(THETA - 180.0)) < 1.e-3) ) :
185 XD = YD / tan(THETA*pi/180.0)
187 AD = sqrt( pow((XA - XD),2) + pow((YA - YD),2) + pow((ZA - ZD),2) )
190 if (TFISS == 'DEB_EXT') :
197 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
198 D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
199 DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
201 ECART = (RAPP - 1.0) * D0N0
204 if (TFISS == 'DEB_INT') :
211 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
212 D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
213 DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
215 ECART = (RAPP - 1.0) * D0N0
220 if (POSI == 'DROIT') :
222 SGAMMI = STHETA * ((DET1/2.0) - EPT1)/(DEC/2.0)
223 XI = ((DET1/2.0) - EPT1) * CTHETA
224 YI = ((DET1/2.0) - EPT1) * STHETA
225 ZI = (DEC/2.0) * sqrt(1.0 - pow(SGAMMI,2))
226 XI0 = (DET1/2.0) -EPT1
230 SGAMMA = STHETA * (DET1/2.0)/((DEC/2.0) -EPC)
231 YA = (DET1/2.0) * STHETA
232 ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
234 EPSIL = STHETA * TGALP
235 PHI = (EPSIL * ZA) - YA
236 DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
238 YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
240 YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
242 ZD = sqrt( pow((DEC/2.0),2) - pow(YD,2) )
243 if ( (abs(THETA - 0.0) < 1.0e-3) or
244 (abs(THETA - 180.0) < 1.0e-3) or
245 (abs(THETA + 180.0) < 1.0e-3) or
246 (abs(THETA + 90.0) < 1.0e-3) or
247 (abs(THETA - 90.0) < 1.0e-3) ) :
248 XD = CTHETA * ((DET1/2.0) + H)
250 XD = YD / (tan(THETA*pi/180.0))
256 if (TFISS == 'DEB_EXT') :
263 DXYID = sqrt( pow((XD - XI),2) + pow((YD - YI),2) )
264 DXYIN = sqrt( pow((XN - XI),2) + pow((YN - YI),2) )
265 DZIN = (DXYIN * DZID) / DXYID
267 D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
268 DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
273 if (TFISS == 'DEB_INT') :
280 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
281 I0N0 = sqrt( pow((XI0 - XN0),2) + pow((ZI0 - ZN0),2) )
282 IN = sqrt( pow((XI - XN),2) + pow((YI - YN),2) + pow((ZI - ZN),2) )
284 ECART = I0N0 * ( 1.0 - RAPP )
287 elif (POSI == 'INCLINE') :
289 TGALPHA = SALPHA/CALPHA
290 REPB = (DEC/2.0) + JEU + (EPT1*TGALPHA)
291 SGAMB = (STHETA * DET1/2.0 ) / REPB
292 CGAMB = sqrt(1.0 - pow(SGAMB,2))
293 XB = (DET1/2.0) * CTHETA
294 YB = (DET1/2.0) * STHETA
295 ZB = ( (DEC/2.0) + JEU + (EPT1*TGALPHA) ) * CGAMB
298 ZB0 = (DEC/2.0) + JEU + (EPT1*TGALPHA)
300 RIT1 = (DET1/2.0) - EPT1
301 REPG = (DEC/2.0) + JEU
302 SGAMG = ((STHETA ) * RIT1) / REPG
303 CGAMG = sqrt(1.0 - pow(SGAMG,2))
306 ZG = ((DEC/2.0) + JEU) * CGAMG
309 ZG0 = (DEC/2.0) + JEU
311 if (TFISS == 'DEB_INT') :
318 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
319 G0N0 = sqrt( pow((XG0 - XN0),2) + pow((ZG0 - ZN0),2) )
320 GN = sqrt( pow((XG - XN),2) + pow((YG - YN),2) + pow((ZG - ZN),2) )
322 ECART = (RAPP - 1.0) * G0N0
325 if (TFISS == 'DEB_EXT') :
332 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
333 B0N0 = sqrt( pow((XB0 - XN0),2) + pow((ZB0 - ZN0),2) )
334 BN = sqrt( pow((XB - XN),2) + pow((YB - YN),2) + pow((ZB - ZN),2) )
336 ECART = (RAPP - 1.0) * B0N0
339 print ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT'
340 print ' PROFONDEUR SUR PIQUAGE : ', AOLD
341 print ' PROFONDEUR SUR EQUERRE : ', A
343 # Ouverture du fichier d'entrée de commandes
345 fdgib=open(nomFichierDATG,'w')
347 texte='****************************************************************\n'
348 texte=texte+'opti echo 0 ; \n'
349 texte=texte+'epT1 = '+str(EPT1) +POIVIR
350 texte=texte+'DeT1 = '+str(DET1) +POIVIR
351 texte=texte+'d1 = '+str(D1) +POIVIR
352 texte=texte+'d2 = '+str(D2) +POIVIR
353 texte=texte+'epT2 = '+str(EPT2) +POIVIR
354 texte=texte+'DeT2 = '+str(DET2) +POIVIR
355 texte=texte+'Zmax = '+str(ZMAX) +POIVIR
356 texte=texte+'type_s = '+str(ITYPSO) +POIVIR
357 texte=texte+'d_pene = '+str(DPENE) +POIVIR
358 texte=texte+'h = '+str(H) +POIVIR
359 texte=texte+'angl_s = '+str(ALPHA) +POIVIR
360 texte=texte+'jeu = '+str(JEU) +POIVIR
361 texte=texte+'epC = '+str(EPC) +POIVIR
362 texte=texte+'DeC = '+str(DEC) +POIVIR
363 texte=texte+'Xmax = '+str(XMAX) +POIVIR
364 texte=texte+'typmai = MOT '+TYPMAI +POIVIR
365 texte=texte+'theta = '+str(THETA) +POIVIR
366 texte=texte+'a = '+str(A) +POIVIR
367 texte=texte+'c = '+str(C) +POIVIR
368 texte=texte+'zeta = '+str(ZETA) +POIVIR
369 texte=texte+'eps = '+str(EPS) +POIVIR
370 texte=texte+'rc0 = '+str(RC0) +POIVIR
371 texte=texte+'rc1 = '+str(RC1) +POIVIR
372 texte=texte+'rc2 = '+str(RC2) +POIVIR
373 texte=texte+'rc3 = '+str(RC3) +POIVIR
374 texte=texte+'alpha = '+str(ALP) +POIVIR
375 texte=texte+'beta = '+str(BETA) +POIVIR
376 texte=texte+'ns = '+str(NS) +POIVIR
377 texte=texte+'nc = '+str(NC) +POIVIR
378 texte=texte+'nt = '+str(NT) +POIVIR
379 texte=texte+'dir_fiss = MOT '+POSI +POIVIR
380 texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
381 texte=texte+'ndt = '+str(NDT) +POIVIR
382 texte=texte+'nsdt = '+str(NSDT) +POIVIR
383 texte=texte+'typ_eque = MOT '+'FISS_COU' +POIVIR
384 texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
386 texte=texte+'list epc ;\n'
387 texte=texte+'opti donn '
388 texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
393 def macr_aspic_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,RAFF_MAIL,TUBULURE,
394 SOUDURE,CORPS,FISS_SOUDURE,IMPRESSION,INFO,
397 Ecriture de la macro MACR_ASPIC_MAIL
404 # On importe les definitions des commandes a utiliser dans la macro
405 EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
406 PRE_GIBI =self.get_cmd('PRE_GIBI')
407 LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
408 DEFI_GROUP =self.get_cmd('DEFI_GROUP')
409 MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
410 AFFE_MODELE =self.get_cmd('AFFE_MODELE')
411 CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
412 IMPR_RESU =self.get_cmd('IMPR_RESU')
414 # La macro compte pour 1 dans la numerotation des commandes
418 NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
420 # --- raffinement maillage ---
423 GROS = (TYPMAI=='GROS')
424 if GROS : NBAZIT = 40
427 # --- caracteristiques de la tubulure ---
429 EPT1 = TUBULURE['E_BASE' ]
430 DET1 = TUBULURE['DEXT_BASE']
431 D1 = TUBULURE['L_BASE' ]
432 D2 = TUBULURE['L_CHANF' ]
433 EPT2 = TUBULURE['E_TUBU' ]
434 DET2 = TUBULURE['DEXT_TUBU']
435 ZMAX = TUBULURE['Z_MAX' ]
436 TYPSOU= TUBULURE['TYPE' ]
437 DPENE = TUBULURE['L_PENETR' ]
438 if TYPSOU=='TYPE_2' and DPENE>0.0 :
439 self.cr.fatal("<F> <MACR_ASPIC_MAIL> les piquages penetrants sont autorises uniquement avec les soudures de type 1")
442 if TYPSOU=='TYPE_2' :
447 # --- caracteristiques de la soudure ---
449 H = SOUDURE['H_SOUD' ]
450 ALPHA = SOUDURE['ANGL_SOUD']
451 JEU = SOUDURE['JEU_SOUD' ]
453 # --- caracteristiques du corps ---
455 EPC = CORPS ['E_CORP' ]
456 DEC = CORPS ['DEXT_CORP']
457 XMAX = CORPS ['X_MAX' ]
459 RMB = ( DET1 - EPT1 ) / 2.0
460 VAL1 = 1.5 * sqrt( RMB**3 / EPT1 )
461 VAL3 = 3.0 * sqrt( RMB * EPT1 )
462 RMT = ( DET2 - EPT2 ) / 2.0
463 VAL2 = 1.5 * sqrt( RMT**3 / EPT2 )
464 VAL4 = 3.0 * sqrt( RMT * EPT2 )
465 LZMAX = max ( VAL1 , VAL2, VAL3, VAL4 )
466 ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
467 LOK = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
469 print ' <MACR_ASPIC_MAIL> erreur donnees'
470 print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
471 print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
472 self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
475 RMC = ( DEC - EPC ) / 2.0
476 VAL1 = 1.5 * sqrt( RMC**3 / EPC )
477 VAL2 = 3.0 * sqrt( RMC * EPC )
478 LXMAX = max( VAL1 , VAL2 )
479 XMAXC = LXMAX + ( DET1 / 2.0 )
480 LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
482 print ' <MACR_ASPIC_MAIL> erreur donnees'
483 print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
484 print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
485 self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
488 print ' MACR_ASPIC_MAIL / X_MAX CALCULEE : ',XMAX
489 print ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : ',XMAXC
491 # --- caracteristiques de la fissure ---
498 if FISS_SOUDURE==None :
501 if FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
502 elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
503 THETA = FISS_SOUDURE['AZIMUT' ]
504 EPS = FISS_SOUDURE['ANGL_OUVERTURE']
505 AXIS = FISS_SOUDURE['AXIS' ]
506 POSI = FISS_SOUDURE['POSITION' ]
507 TFISS = FISS_SOUDURE['FISSURE' ]
508 A = FISS_SOUDURE['PROFONDEUR' ]
509 if FISS_SOUDURE['LONGUEUR' ]!=None :
510 C = FISS_SOUDURE['LONGUEUR' ]
513 if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
514 print ' <MACR_ASPIC_MAIL> erreur donnees'
515 print ' <MACR_ASPIC_MAIL> dans le cas de fissures'
516 print ' <MACR_ASPIC_MAIL> inclinees debouchant en peau interne avec'
517 print ' <MACR_ASPIC_MAIL> piquage penetrant le jeu doit etre nul'
518 self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
522 if TFISS not in ('DEB_INT','DEB_EXT') :
523 if FISS_SOUDURE['LIGA_INT']==None :
524 print ' <MACR_ASPIC_MAIL> erreur donnees'
525 print ' <MACR_ASPIC_MAIL> dans le cas de fissures internes'
526 print ' <MACR_ASPIC_MAIL> (NON_DEB) le ligament inferieur est obligatoire'
527 self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
530 LIGA = FISS_SOUDURE['LIGA_INT']
532 if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
533 else : ZETA = (A+LIGA)/(EPT1+H)
535 if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
536 else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
538 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
542 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
546 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
549 if (LIGA + 2.0*A) > 0.9*EPC :
550 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
555 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures courte il faut preciser la longueur ")
559 self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
564 if AXIS=='OUI' : print '<A> <MACR_ASPIC_MAIL> fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne'
566 LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
568 # LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
569 # ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
572 if AXIS=='OUI' : C=100.0*LPIQ
578 CAS2= not (CAS1 or CAS3)
583 if GROS and not CAS1 :
600 RC0 = FISS_SOUDURE['RAYON_TORE']
601 if (FISCOU and RC0==None) :
606 if (FISLON and RC0==None) : RC0=A/(NDT+1)
608 RC1 = FISS_SOUDURE['COEF_MULT_RC1']
609 if (FISCOU and RC1==None) :
613 RC2 = FISS_SOUDURE['COEF_MULT_RC2']
614 if (FISCOU and RC2==None) :
618 RC3 = FISS_SOUDURE['COEF_MULT_RC3']
619 if (FISCOU and RC3==None) :
622 else : RC3=1.0 # valeur non utilisee
627 NT = FISS_SOUDURE['NB_TRANCHE']
628 if (FISCOU and NT==None) :
632 if (FISLON and NT==None) : NT=0
634 NS = FISS_SOUDURE['NB_SECTEUR']
635 if (FISCOU and NS==None) :
638 if (FISLON and NS==None) :
642 NC = FISS_SOUDURE['NB_COURONNE']
643 if (FISCOU and NC==None) :
646 if (FISLON and NC==None) :
650 loc_gibi=aster.repout()
651 logiel = EXEC_MAILLAGE['LOGICIEL' ]
652 UNITD = EXEC_MAILLAGE['UNITE_DATG']
653 UNITS = EXEC_MAILLAGE['UNITE_MGIB']
654 if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
655 elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
657 self.cr.fatal("<F> <MACR_ASPIC_MAIL> seuls gibi98 et gibi2000 sont appelableS")
661 # --- ecriture sur le fichier .datg de la procedure ---
663 # Nom du fichier de commandes pour GIBI
664 nomFichierDATG = 'fort.'+str(UNITD)
665 # Nom du fichier de maillage GIBI
666 nomFichierGIBI = 'fort.'+str(UNITS)
667 loc_datg = aster.repdex()
668 if SAIN : write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
669 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
670 ITYPSO, DPENE, NIVMAG,loc_datg)
671 if FISLON : write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
672 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
673 A,C,EPS, RC0,NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
674 TFISS,ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
675 if FISCOU : write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
676 H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
677 THETA, A, C, EPS, RC0, RC1, RC2, RC3,
678 ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
679 ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
681 EXEC_LOGICIEL( LOGICIEL = logiel ,
682 ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
683 _F(NOM_PARA=nomFichierGIBI), ), )
687 __MAPROV=LIRE_MAILLAGE(INFO=INFO)
690 motscles['CREA_GROUP_MA']=[]
693 l_CREA_GROUP_NO.append('S_LAT1')
694 l_CREA_GROUP_NO.append('S_LAT2')
696 l_CREA_GROUP_NO.append('S_LAT1_C')
697 l_CREA_GROUP_NO.append('S_LAT2_C')
698 l_CREA_GROUP_NO.append('S_LAT1_T')
699 l_CREA_GROUP_NO.append('S_LAT2_T')
700 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
701 l_CREA_GROUP_NO.append('PFONDINF')
702 l_CREA_GROUP_NO.append('PFONDSUP')
704 l_CREA_GROUP_NO.append('PFONDFIS')
705 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
706 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
709 if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
710 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
713 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
714 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
717 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
720 l_CREA_GROUP_NO.append('S_FOND1')
721 l_CREA_GROUP_NO.append('S_FOND2')
722 l_CREA_GROUP_NO.append('EQUERRE')
723 motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
725 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
731 motscles['CREA_GROUP_NO']=[]
732 if not (TFISS=='NON_DEB') :
733 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
734 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
735 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
736 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
740 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
742 EQUE_PIQUA=_F( GROUP_NO = 'EQUERRE' ,
758 __MODELE=AFFE_MODELE( MAILLAGE=__MAPROV,
759 AFFE=_F( GROUP_MA = ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU'),
760 PHENOMENE = 'MECANIQUE' ,
761 MODELISATION = '3D' , )
765 if TFISS=='DEB_INT' :
766 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
768 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
769 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
776 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
778 CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
780 for i in range(1,NBAZIT+1):
782 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
784 CREA_GROUP_NO = ( _F( NOM = 'NID'+str(i) ,
788 _F( NOM = 'NED'+str(i) ,
792 _F( NOM = 'NII'+str(i) ,
796 _F( NOM = 'NEI'+str(i) ,
800 _F( NOM = 'LDN'+str(i) ,
801 GROUP_MA = 'LD' +str(i) ,),
802 _F( NOM = 'LD' +str(i) ,
803 GROUP_NO = 'LDN'+str(i) ,
804 OPTION = 'SEGM_DROI_ORDO',
807 GROUP_NO_ORIG = 'NID'+str(i),
808 GROUP_NO_EXTR = 'NED'+str(i),),
809 _F( NOM = 'LIN'+str(i) ,
810 GROUP_MA = 'LI' +str(i) ,),
811 _F( NOM = 'LI' +str(i) ,
812 GROUP_NO = 'LIN'+str(i) ,
813 OPTION = 'SEGM_DROI_ORDO',
816 GROUP_NO_ORIG = 'NII'+str(i),
817 GROUP_NO_EXTR = 'NEI'+str(i),),))
820 # --- commande CREA_MAILLAGE ---
822 self.DeclareOut('nomres',self.sd)
823 nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
824 CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
825 GROUP_NO = 'P1_CORP ' , ),
826 _F( NOM_GROUP_MA = 'P2_CORP ' ,
827 GROUP_NO = 'P2_CORP ' , ),
828 _F( NOM_GROUP_MA = 'P_TUBU ' ,
829 GROUP_NO = 'P_TUBU ' , ),)
833 for impr in IMPRESSION :
836 if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
837 if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
838 if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
839 impr_resu = _F( MAILLAGE = nomres,)
841 IMPR_RESU( RESU = impr_resu,
842 FORMAT = impr['FORMAT'],**motscles )