1 #@ MODIF macr_aspic_mail_ops Macro DATE 14/04/2008 AUTEUR GALENNE E.GALENNE
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 ****************************************************************
55 ****************************************************************
56 """ % (EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, ITYPSO, DPENE, H,
57 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE, NIVMAG)
58 aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
59 texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
63 # Ecriture du fichier GIBI principal (dgib) - ASPID1
64 def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
65 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
66 A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
67 TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
70 # Ouverture du fichier d'entrée de commandes
71 fdgib=open(nomFichierDATG,'w')
73 texte='****************************************************************\n'
74 texte=texte+'opti echo 0 ; \n'
75 texte=texte+'epT1 = '+str(EPT1) +POIVIR
76 texte=texte+'DeT1 = '+str(DET1) +POIVIR
77 texte=texte+'d1 = '+str(D1) +POIVIR
78 texte=texte+'d2 = '+str(D2) +POIVIR
79 texte=texte+'epT2 = '+str(EPT2) +POIVIR
80 texte=texte+'DeT2 = '+str(DET2) +POIVIR
81 texte=texte+'Zmax = '+str(ZMAX) +POIVIR
82 texte=texte+'type_s = '+str(ITYPSO) +POIVIR
83 texte=texte+'d_pene = '+str(DPENE) +POIVIR
84 texte=texte+'h = '+str(H) +POIVIR
85 texte=texte+'angl_s = '+str(ALPHA) +POIVIR
86 texte=texte+'jeu = '+str(JEU) +POIVIR
87 texte=texte+'epC = '+str(EPC) +POIVIR
88 texte=texte+'DeC = '+str(DEC) +POIVIR
89 texte=texte+'Xmax = '+str(XMAX) +POIVIR
90 texte=texte+'typmai = MOT '+TYPMAI +POIVIR
91 texte=texte+'theta = '+str(THETA) +POIVIR
92 texte=texte+'a = '+str(A) +POIVIR
93 texte=texte+'c = '+str(C) +POIVIR
94 texte=texte+'zeta = '+str(ZETA) +POIVIR
95 texte=texte+'eps = '+str(EPS) +POIVIR
96 texte=texte+'rc0 = '+str(RC0) +POIVIR
97 texte=texte+'ns = '+str(NS) +POIVIR
98 texte=texte+'nc = '+str(NC) +POIVIR
99 texte=texte+'nt = '+str(NT) +POIVIR
100 texte=texte+'dir_fiss = MOT '+POSI +POIVIR
101 texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
102 texte=texte+'ndt = '+str(NDT) +POIVIR
103 texte=texte+'f_etir_f = '+str(FETIRF) +POIVIR
104 texte=texte+'f_etir_p = '+str(FETIRP) +POIVIR
105 texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
106 texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
108 aster.affiche('MESSAGE',texte + ' + aspic_v2.datg...\n')
109 texte = texte + open(os.path.join(loc_datg, 'aspic_v2.datg'), 'r').read()
113 # Ecriture du fichier GIBI principal (dgib) - ASPID2
114 def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
115 H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
116 THETA, A, C, EPS, RC0, RC1, RC2, RC3,
117 ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
118 ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
121 CALPHA = cos(ALPHA*pi/180.)
122 SALPHA = sin(ALPHA*pi/180.)
123 CTHETA = cos(THETA*pi/180.)
124 STHETA = sin(THETA*pi/180.)
130 if (POSI == 'DROIT') :
132 if (TFISS == 'DEB_INT') :
134 SGAMMA = STHETA * (DET1/2.0)/( (DEC/2.0) -EPC)
135 SGAMME = STHETA * (DET1/2.0)/( (DEC/2.0) )
136 RAPPA = sqrt(1.0 - pow(SGAMMA,2))
137 RAPPE = sqrt(1.0 - pow(SGAMME,2))
138 AP = A - (1.0 - RAPPA)*A
139 RAPP = (AP/EPC*RAPPE) + (1.0-(AP/EPC))*RAPPA
140 XA = (DET1/2.0) * CTHETA
141 YA = (DET1/2.0) * STHETA
142 ZA = ((DEC/2.0) -EPC) * sqrt(1.0 - pow(SGAMMA,2))
143 ZA0 = (DEC/2.0) - EPC
151 ZN = ZN0 * sqrt(1.0 - (SGAMN*SGAMN))
152 D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
153 DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
155 ECART = (1.0 - RAPP) * D0N0
157 elif (TFISS == 'DEB_EXT') :
159 SGAMME = STHETA * (DET1/2.0)/ (DEC/2.0)
160 RAPPE = sqrt(1.0 - pow(SGAMME,2))
161 A = A -(1.0 - RAPPE)*A
163 elif (POSI == 'INCLINE') :
165 SGAMMA = STHETA * (DET1/2.0)/ ( (DEC/2.0) -EPC)
166 XA = (DET1/2.0) * CTHETA
167 YA = (DET1/2.0) * STHETA
168 ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
169 ZA0 = (DEC/2.0) - EPC
172 XD0 = XA0 + (tan(ALPHA*pi/180.0) * EPC)
173 A0D0 = sqrt( pow((ZD0 - ZA0),2) + pow((XD0 - XA0),2) )
174 EPSIL = STHETA * tan(ALPHA*pi/180.0)
175 PHI = (EPSIL * ZA) - YA
176 DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
178 YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
180 YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
182 ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
184 if ( (abs(THETA - 0.0) < 1.e-3) or ((abs(THETA - 180.0)) < 1.e-3) ) :
187 XD = YD / tan(THETA*pi/180.0)
189 AD = sqrt( pow((XA - XD),2) + pow((YA - YD),2) + pow((ZA - ZD),2) )
192 if (TFISS == 'DEB_EXT') :
198 DNXY = sqrt(pow(XD,2) + pow(YD,2)) - sqrt(pow(XN,2) + pow(YN,2))
201 # Correction necessaire dans le cas theta et/ou alpha grand
203 DXY = sqrt(pow(XD,2) + pow(YD,2) )
207 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
208 D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
209 DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
211 ECART = (RAPP - 1.0) * D0N0
214 if (TFISS == 'DEB_INT') :
221 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
222 D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
223 DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
225 ECART = (RAPP - 1.0) * D0N0
226 # Correction necessaire dans le cas theta grand (cf. AL9679)
227 if ( abs(STHETA) > 0.8) :
228 DXY = sqrt(pow(XD,2) + pow(YD,2) )
232 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
233 D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
234 DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
236 ECART = (ECART + (RAPP - 1.0) * D0N0)/2
242 if (POSI == 'DROIT') :
244 SGAMMI = STHETA * ((DET1/2.0) - EPT1)/(DEC/2.0)
245 XI = ((DET1/2.0) - EPT1) * CTHETA
246 YI = ((DET1/2.0) - EPT1) * STHETA
247 ZI = (DEC/2.0) * sqrt(1.0 - pow(SGAMMI,2))
248 XI0 = (DET1/2.0) -EPT1
252 SGAMMA = STHETA * (DET1/2.0)/((DEC/2.0) -EPC)
253 YA = (DET1/2.0) * STHETA
254 ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
256 EPSIL = STHETA * TGALP
257 PHI = (EPSIL * ZA) - YA
258 DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
260 YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
262 YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
264 ZD = sqrt( pow((DEC/2.0),2) - pow(YD,2) )
265 if ( (abs(THETA - 0.0) < 1.0e-3) or
266 (abs(THETA - 180.0) < 1.0e-3) or
267 (abs(THETA + 180.0) < 1.0e-3) or
268 (abs(THETA + 90.0) < 1.0e-3) or
269 (abs(THETA - 90.0) < 1.0e-3) ) :
270 XD = CTHETA * ((DET1/2.0) + H)
272 XD = YD / (tan(THETA*pi/180.0))
278 if (TFISS == 'DEB_EXT') :
285 DXYID = sqrt( pow((XD - XI),2) + pow((YD - YI),2) )
286 DXYIN = sqrt( pow((XN - XI),2) + pow((YN - YI),2) )
287 DZIN = (DXYIN * DZID) / DXYID
289 D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
290 DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
295 if (TFISS == 'DEB_INT') :
302 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
303 I0N0 = sqrt( pow((XI0 - XN0),2) + pow((ZI0 - ZN0),2) )
304 IN = sqrt( pow((XI - XN),2) + pow((YI - YN),2) + pow((ZI - ZN),2) )
306 ECART = I0N0 * ( 1.0 - RAPP )
309 elif (POSI == 'INCLINE') :
311 TGALPHA = SALPHA/CALPHA
312 REPB = (DEC/2.0) + JEU + (EPT1*TGALPHA)
313 SGAMB = (STHETA * DET1/2.0 ) / REPB
314 CGAMB = sqrt(1.0 - pow(SGAMB,2))
315 XB = (DET1/2.0) * CTHETA
316 YB = (DET1/2.0) * STHETA
317 ZB = ( (DEC/2.0) + JEU + (EPT1*TGALPHA) ) * CGAMB
320 ZB0 = (DEC/2.0) + JEU + (EPT1*TGALPHA)
322 RIT1 = (DET1/2.0) - EPT1
323 REPG = (DEC/2.0) + JEU
324 SGAMG = ((STHETA ) * RIT1) / REPG
325 CGAMG = sqrt(1.0 - pow(SGAMG,2))
328 ZG = ((DEC/2.0) + JEU) * CGAMG
331 ZG0 = (DEC/2.0) + JEU
333 if (TFISS == 'DEB_INT') :
340 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
341 G0N0 = sqrt( pow((XG0 - XN0),2) + pow((ZG0 - ZN0),2) )
342 GN = sqrt( pow((XG - XN),2) + pow((YG - YN),2) + pow((ZG - ZN),2) )
344 ECART = (RAPP - 1.0) * G0N0
347 if (TFISS == 'DEB_EXT') :
354 ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
355 B0N0 = sqrt( pow((XB0 - XN0),2) + pow((ZB0 - ZN0),2) )
356 BN = sqrt( pow((XB - XN),2) + pow((YB - YN),2) + pow((ZB - ZN),2) )
358 ECART = (RAPP - 1.0) * B0N0
361 message= ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT \n'
362 message=message+ ' PROFONDEUR SUR PIQUAGE : %.2f \n'%AOLD
363 message=message+ ' PROFONDEUR SUR EQUERRE : %.2f \n'%A
364 aster.affiche('MESSAGE',message)
366 # Ouverture du fichier d'entrée de commandes
368 fdgib=open(nomFichierDATG,'w')
370 texte='****************************************************************\n'
371 texte=texte+'opti echo 0 ; \n'
372 texte=texte+'epT1 = '+str(EPT1) +POIVIR
373 texte=texte+'DeT1 = '+str(DET1) +POIVIR
374 texte=texte+'d1 = '+str(D1) +POIVIR
375 texte=texte+'d2 = '+str(D2) +POIVIR
376 texte=texte+'epT2 = '+str(EPT2) +POIVIR
377 texte=texte+'DeT2 = '+str(DET2) +POIVIR
378 texte=texte+'Zmax = '+str(ZMAX) +POIVIR
379 texte=texte+'type_s = '+str(ITYPSO) +POIVIR
380 texte=texte+'d_pene = '+str(DPENE) +POIVIR
381 texte=texte+'h = '+str(H) +POIVIR
382 texte=texte+'angl_s = '+str(ALPHA) +POIVIR
383 texte=texte+'jeu = '+str(JEU) +POIVIR
384 texte=texte+'epC = '+str(EPC) +POIVIR
385 texte=texte+'DeC = '+str(DEC) +POIVIR
386 texte=texte+'Xmax = '+str(XMAX) +POIVIR
387 texte=texte+'typmai = MOT '+TYPMAI +POIVIR
388 texte=texte+'theta = '+str(THETA) +POIVIR
389 texte=texte+'a = '+str(A) +POIVIR
390 texte=texte+'c = '+str(C) +POIVIR
391 texte=texte+'zeta = '+str(ZETA) +POIVIR
392 texte=texte+'eps = '+str(EPS) +POIVIR
393 texte=texte+'rc0 = '+str(RC0) +POIVIR
394 texte=texte+'rc1 = '+str(RC1) +POIVIR
395 texte=texte+'rc2 = '+str(RC2) +POIVIR
396 texte=texte+'rc3 = '+str(RC3) +POIVIR
397 texte=texte+'alpha = '+str(ALP) +POIVIR
398 texte=texte+'beta = '+str(BETA) +POIVIR
399 texte=texte+'ns = '+str(NS) +POIVIR
400 texte=texte+'nc = '+str(NC) +POIVIR
401 texte=texte+'nt = '+str(NT) +POIVIR
402 texte=texte+'dir_fiss = MOT '+POSI +POIVIR
403 texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
404 texte=texte+'ndt = '+str(NDT) +POIVIR
405 texte=texte+'nsdt = '+str(NSDT) +POIVIR
406 texte=texte+'typ_eque = MOT '+'FISS_COU' +POIVIR
407 texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
409 texte=texte+'list epc ;\n'
410 aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
411 texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
415 def macr_aspic_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,RAFF_MAIL,TUBULURE,
416 SOUDURE,CORPS,FISS_SOUDURE,IMPRESSION,INFO,
419 Ecriture de la macro MACR_ASPIC_MAIL
424 from Utilitai.Utmess import UTMESS
427 # On importe les definitions des commandes a utiliser dans la macro
428 EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
429 PRE_GIBI =self.get_cmd('PRE_GIBI')
430 LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
431 DEFI_GROUP =self.get_cmd('DEFI_GROUP')
432 MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
433 CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
434 IMPR_RESU =self.get_cmd('IMPR_RESU')
435 DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
437 # La macro compte pour 1 dans la numerotation des commandes
441 NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
443 # --- raffinement maillage ---
446 GROS = (TYPMAI=='GROS')
447 if GROS : NBAZIT = 40
450 # --- caracteristiques de la tubulure ---
452 EPT1 = TUBULURE['E_BASE' ]
453 DET1 = TUBULURE['DEXT_BASE']
454 D1 = TUBULURE['L_BASE' ]
455 D2 = TUBULURE['L_CHANF' ]
456 EPT2 = TUBULURE['E_TUBU' ]
457 DET2 = TUBULURE['DEXT_TUBU']
458 ZMAX = TUBULURE['Z_MAX' ]
459 TYPSOU= TUBULURE['TYPE' ]
460 DPENE = TUBULURE['L_PENETR' ]
461 if TYPSOU=='TYPE_2' and DPENE>0.0 :
462 UTMESS('F','ASPIC0_12')
463 if TYPSOU=='TYPE_2' :
468 # --- caracteristiques de la soudure ---
470 H = SOUDURE['H_SOUD' ]
471 ALPHA = SOUDURE['ANGL_SOUD']
472 JEU = SOUDURE['JEU_SOUD' ]
474 # --- caracteristiques du corps ---
476 EPC = CORPS ['E_CORP' ]
477 DEC = CORPS ['DEXT_CORP']
478 XMAX = CORPS ['X_MAX' ]
480 RMB = ( DET1 - EPT1 ) / 2.0
481 VAL1 = 1.5 * sqrt( RMB**3 / EPT1 )
482 VAL3 = 3.0 * sqrt( RMB * EPT1 )
483 RMT = ( DET2 - EPT2 ) / 2.0
484 VAL2 = 1.5 * sqrt( RMT**3 / EPT2 )
485 VAL4 = 3.0 * sqrt( RMT * EPT2 )
486 LZMAX = max ( VAL1 , VAL2, VAL3, VAL4 )
487 ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
488 LOK = ( (ZMAX-ZMAXC) >= -1.* EPSI * abs(ZMAXC) )
490 UTMESS('A','ASPIC0_13',valr=[ZMAX,ZMAXC])
491 RMC = ( DEC - EPC ) / 2.0
492 VAL1 = 1.5 * sqrt( RMC**3 / EPC )
493 VAL2 = 3.0 * sqrt( RMC * EPC )
494 LXMAX = max( VAL1 , VAL2 )
495 XMAXC = LXMAX + ( DET1 / 2.0 )
496 LOK = ( (XMAX-XMAXC) >= -1.* EPSI * abs(XMAXC) )
498 UTMESS('A','ASPIC0_23',valr=[XMAX,XMAXC])
499 message= ' MACR_ASPIC_MAIL : X_MAX CALCULEE : %.2f X_MAX FOURNI : %.2f\n'%(XMAXC,XMAX)
500 message=message+ ' MACR_ASPIC_MAIL : Z_MAX CALCULEE : %.2f Z_MAX FOURNI : %.2f\n'%(ZMAXC,ZMAX)
501 aster.affiche('MESSAGE',message)
503 # --- caracteristiques de la fissure ---
510 if FISS_SOUDURE==None :
513 if FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
514 elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
515 THETA = FISS_SOUDURE['AZIMUT' ]
516 EPS = FISS_SOUDURE['ANGL_OUVERTURE']
517 AXIS = FISS_SOUDURE['AXIS' ]
518 POSI = FISS_SOUDURE['POSITION' ]
519 TFISS = FISS_SOUDURE['FISSURE' ]
520 A = FISS_SOUDURE['PROFONDEUR' ]
521 if FISS_SOUDURE['LONGUEUR' ]!=None :
522 C = FISS_SOUDURE['LONGUEUR' ]
525 if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
526 UTMESS('F','ASPIC0_14')
528 if TFISS not in ('DEB_INT','DEB_EXT') :
529 if FISS_SOUDURE['LIGA_INT']==None :
530 UTMESS('F','ASPIC0_15')
531 LIGA = FISS_SOUDURE['LIGA_INT']
533 if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
534 else : ZETA = (A+LIGA)/(EPT1+H)
536 if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
537 else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
539 UTMESS('F','ASPIC0_16')
541 UTMESS('F','ASPIC0_17')
543 UTMESS('F','ASPIC0_16')
544 if (LIGA + 2.0*A) > 0.9*EPC :
545 UTMESS('F','ASPIC0_17')
548 UTMESS('F','ASPIC0_18')
550 UTMESS('F','ASPIC0_19')
553 if AXIS=='OUI' : UTMESS('A','ASPIC0_20')
555 LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
557 # LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
558 # ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
561 if AXIS=='OUI' : C=100.0*LPIQ
567 CAS2= not (CAS1 or CAS3)
572 if GROS and not CAS1 :
589 RC0 = FISS_SOUDURE['RAYON_TORE']
590 if (FISCOU and RC0==None) :
595 if (FISLON and RC0==None) : RC0=A/(NDT+1)
597 RC1 = FISS_SOUDURE['COEF_MULT_RC1']
598 if (FISCOU and RC1==None) :
602 RC2 = FISS_SOUDURE['COEF_MULT_RC2']
603 if (FISCOU and RC2==None) :
607 RC3 = FISS_SOUDURE['COEF_MULT_RC3']
608 if (FISCOU and RC3==None) :
611 else : RC3=1.0 # valeur non utilisee
616 NT = FISS_SOUDURE['NB_TRANCHE']
617 if (FISCOU and NT==None) :
621 if (FISLON and NT==None) : NT=0
623 NS = FISS_SOUDURE['NB_SECTEUR']
624 if (FISCOU and NS==None) :
627 if (FISLON and NS==None) :
631 NC = FISS_SOUDURE['NB_COURONNE']
632 if (FISCOU and NC==None) :
635 if (FISLON and NC==None) :
639 loc_gibi=aster.repout()
640 logiel = EXEC_MAILLAGE['LOGICIEL' ]
641 UNITD = EXEC_MAILLAGE['UNITE_DATG']
642 UNITS = EXEC_MAILLAGE['UNITE_MGIB']
643 if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
644 elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
646 UTMESS('F','ASPIC0_21')
648 # --- ecriture sur le fichier .datg de la procedure ---
650 # Nom du fichier de commandes pour GIBI
651 nomFichierDATG = 'fort.'+str(UNITD)
652 # Nom du fichier de maillage GIBI
653 nomFichierGIBI = 'fort.'+str(UNITS)
654 loc_datg = aster.repdex()
655 if SAIN : write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
656 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
657 ITYPSO, DPENE, NIVMAG,loc_datg)
658 if FISLON : write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
659 ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
660 A,C,EPS, RC0,NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
661 TFISS,ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
662 if FISCOU : write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
663 H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
664 THETA, A, C, EPS, RC0, RC1, RC2, RC3,
665 ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
666 ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
668 DEFI_FICHIER(ACTION='LIBERER',UNITE=19)
669 DEFI_FICHIER(ACTION='LIBERER',UNITE=20)
670 EXEC_LOGICIEL( LOGICIEL = logiel ,
671 ARGUMENT = (nomFichierDATG,
676 __MAPROV=LIRE_MAILLAGE(INFO=INFO)
679 motscles['CREA_GROUP_MA']=[]
682 l_CREA_GROUP_NO.append('S_LAT1')
683 l_CREA_GROUP_NO.append('S_LAT2')
685 l_CREA_GROUP_NO.append('S_LAT1_C')
686 l_CREA_GROUP_NO.append('S_LAT2_C')
687 l_CREA_GROUP_NO.append('S_LAT1_T')
688 l_CREA_GROUP_NO.append('S_LAT2_T')
689 l_CREA_GROUP_NO.append('LEVRTUBU')
690 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
691 l_CREA_GROUP_NO.append('PFONDINF')
692 l_CREA_GROUP_NO.append('PFONDSUP')
694 l_CREA_GROUP_NO.append('PFONDFIS')
695 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
696 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
699 if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
700 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
703 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
704 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
707 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
710 l_CREA_GROUP_NO.append('S_FOND1')
711 l_CREA_GROUP_NO.append('S_FOND2')
712 l_CREA_GROUP_NO.append('EQUERRE')
713 motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
715 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
721 motscles['CREA_GROUP_NO']=[]
722 if not (TFISS=='NON_DEB') :
723 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
724 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
725 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
726 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
727 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
728 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
732 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
734 EQUE_PIQUA=_F( GROUP_NO = 'EQUERRE' ,
753 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
755 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
756 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
762 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
764 CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
766 for i in range(1,NBAZIT+1):
768 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
770 CREA_GROUP_NO = ( _F( NOM = 'NID'+str(i) ,
774 _F( NOM = 'NED'+str(i) ,
778 _F( NOM = 'NII'+str(i) ,
782 _F( NOM = 'NEI'+str(i) ,
786 _F( NOM = 'LDN'+str(i) ,
787 GROUP_MA = 'LD' +str(i) ,),
788 _F( NOM = 'LD' +str(i) ,
789 GROUP_NO = 'LDN'+str(i) ,
790 OPTION = 'SEGM_DROI_ORDO',
793 GROUP_NO_ORIG = 'NID'+str(i),
794 GROUP_NO_EXTR = 'NED'+str(i),),
795 _F( NOM = 'LIN'+str(i) ,
796 GROUP_MA = 'LI' +str(i) ,),
797 _F( NOM = 'LI' +str(i) ,
798 GROUP_NO = 'LIN'+str(i) ,
799 OPTION = 'SEGM_DROI_ORDO',
802 GROUP_NO_ORIG = 'NII'+str(i),
803 GROUP_NO_EXTR = 'NEI'+str(i),),))
806 # --- commande CREA_MAILLAGE ---
808 self.DeclareOut('nomres',self.sd)
809 nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
810 CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
811 GROUP_NO = 'P1_CORP ' , ),
812 _F( NOM_GROUP_MA = 'P2_CORP ' ,
813 GROUP_NO = 'P2_CORP ' , ),
814 _F( NOM_GROUP_MA = 'P_TUBU ' ,
815 GROUP_NO = 'P_TUBU ' , ),)
819 for impr in IMPRESSION :
822 if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
823 if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
824 if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
825 impr_resu = _F( MAILLAGE = nomres,)
827 IMPR_RESU( RESU = impr_resu,
828 FORMAT = impr['FORMAT'],**motscles )
831 # --- Verification profondeur fissure (courte débouchante) ---
833 if FISCOU and not (TFISS=='NON_DEB') :
834 nomres=DEFI_GROUP( reuse=nomres,
836 CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
837 _F( NOM = 'FONDORDO',
838 GROUP_MA = 'FONDFISS',
839 OPTION = 'NOEUD_ORDO',),),);
842 coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
843 collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
845 grfo=collgrno['FONDORDO']
852 listx[k] = coord[3*(node-1)]
853 listy[k] = coord[3*(node-1)+1]
854 listz[k] = coord[3*(node-1)+2]
857 XAB = listx[Nbno-1] - listx[0]
858 YAB = listy[Nbno-1] - listy[0]
859 ZAB = listz[Nbno-1] - listz[0]
860 AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
862 for k in range(0,Nbno) :
863 XAM = listx[k] - listx[0]
864 YAM = listy[k] - listy[0]
865 ZAM = listz[k] - listz[0]
866 Xvect = YAB*ZAM-ZAB*YAM
867 Yvect = ZAB*XAM-XAB*ZAM
868 Zvect = XAB*YAM-YAB*XAM
869 AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
877 grlev=collgrno['LEVRTUBU']
879 listxl = [None]*Nbnol
880 listyl = [None]*Nbnol
881 listzl = [None]*Nbnol
884 listxl[k] = coord[3*(node-1)]
885 listyl[k] = coord[3*(node-1)+1]
886 listzl[k] = coord[3*(node-1)+2]
889 for k in range(0,Nbnol) :
890 XAM = listxl[k] - listx[0]
891 YAM = listyl[k] - listy[0]
892 ZAM = listzl[k] - listz[0]
893 Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
894 if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
898 dk = sqrt(Xk**2+ Yk**2 +Zk**2)
901 texte="<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : %.2f \n"%dist
902 aster.affiche('MESSAGE',texte)