1 #@ MODIF macr_aspic_mail_ops Macro DATE 25/09/2006 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', "MACR_ASPIC_MAIL", "les piquages penetrants sont autorises uniquement avec les soudures de type 1")
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 = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
490 message= ' erreur donnees \n'
491 message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
492 message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
493 UTMESS('F', "MACR_ASPIC_MAIL", message)
494 RMC = ( DEC - EPC ) / 2.0
495 VAL1 = 1.5 * sqrt( RMC**3 / EPC )
496 VAL2 = 3.0 * sqrt( RMC * EPC )
497 LXMAX = max( VAL1 , VAL2 )
498 XMAXC = LXMAX + ( DET1 / 2.0 )
499 LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
501 message= ' erreur donnees \n'
502 message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
503 message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
504 UTMESS('F', "MACR_ASPIC_MAIL", message)
505 message= ' MACR_ASPIC_MAIL / X_MAX CALCULEE : %.2f \n'%XMAX
506 message=message+ ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : %.2f \n'%XMAXC
507 aster.affiche('MESSAGE',message)
509 # --- caracteristiques de la fissure ---
516 if FISS_SOUDURE==None :
519 if FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
520 elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
521 THETA = FISS_SOUDURE['AZIMUT' ]
522 EPS = FISS_SOUDURE['ANGL_OUVERTURE']
523 AXIS = FISS_SOUDURE['AXIS' ]
524 POSI = FISS_SOUDURE['POSITION' ]
525 TFISS = FISS_SOUDURE['FISSURE' ]
526 A = FISS_SOUDURE['PROFONDEUR' ]
527 if FISS_SOUDURE['LONGUEUR' ]!=None :
528 C = FISS_SOUDURE['LONGUEUR' ]
531 if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
532 message= ' erreur donnees \n'
533 message=message+ ' dans le cas de fissures \n'
534 message=message+ ' inclinees debouchant en peau interne avec \n'
535 message=message+ ' piquage penetrant le jeu doit etre nul \n'
536 UTMESS('F', "MACR_ASPIC_MAIL", message)
538 if TFISS not in ('DEB_INT','DEB_EXT') :
539 if FISS_SOUDURE['LIGA_INT']==None :
540 message= ' erreur donnees \n'
541 message=message+ ' dans le cas de fissures internes\n'
542 message=message+ ' (NON_DEB) le ligament inferieur est obligatoire \n'
543 UTMESS('F', "MACR_ASPIC_MAIL", message)
544 LIGA = FISS_SOUDURE['LIGA_INT']
546 if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
547 else : ZETA = (A+LIGA)/(EPT1+H)
549 if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
550 else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
552 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
554 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
556 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
557 if (LIGA + 2.0*A) > 0.9*EPC :
558 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
561 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures courte il faut preciser la longueur")
563 UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
566 if AXIS=='OUI' : UTMESS('A', "MACR_ASPIC_MAIL", "fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne")
568 LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
570 # LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
571 # ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
574 if AXIS=='OUI' : C=100.0*LPIQ
580 CAS2= not (CAS1 or CAS3)
585 if GROS and not CAS1 :
602 RC0 = FISS_SOUDURE['RAYON_TORE']
603 if (FISCOU and RC0==None) :
608 if (FISLON and RC0==None) : RC0=A/(NDT+1)
610 RC1 = FISS_SOUDURE['COEF_MULT_RC1']
611 if (FISCOU and RC1==None) :
615 RC2 = FISS_SOUDURE['COEF_MULT_RC2']
616 if (FISCOU and RC2==None) :
620 RC3 = FISS_SOUDURE['COEF_MULT_RC3']
621 if (FISCOU and RC3==None) :
624 else : RC3=1.0 # valeur non utilisee
629 NT = FISS_SOUDURE['NB_TRANCHE']
630 if (FISCOU and NT==None) :
634 if (FISLON and NT==None) : NT=0
636 NS = FISS_SOUDURE['NB_SECTEUR']
637 if (FISCOU and NS==None) :
640 if (FISLON and NS==None) :
644 NC = FISS_SOUDURE['NB_COURONNE']
645 if (FISCOU and NC==None) :
648 if (FISLON and NC==None) :
652 loc_gibi=aster.repout()
653 logiel = EXEC_MAILLAGE['LOGICIEL' ]
654 UNITD = EXEC_MAILLAGE['UNITE_DATG']
655 UNITS = EXEC_MAILLAGE['UNITE_MGIB']
656 if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
657 elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
659 UTMESS('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 DEFI_FICHIER(ACTION='LIBERER',UNITE=19)
682 DEFI_FICHIER(ACTION='LIBERER',UNITE=20)
683 EXEC_LOGICIEL( LOGICIEL = logiel ,
684 ARGUMENT = (nomFichierDATG,
689 __MAPROV=LIRE_MAILLAGE(INFO=INFO)
692 motscles['CREA_GROUP_MA']=[]
695 l_CREA_GROUP_NO.append('S_LAT1')
696 l_CREA_GROUP_NO.append('S_LAT2')
698 l_CREA_GROUP_NO.append('S_LAT1_C')
699 l_CREA_GROUP_NO.append('S_LAT2_C')
700 l_CREA_GROUP_NO.append('S_LAT1_T')
701 l_CREA_GROUP_NO.append('S_LAT2_T')
702 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
703 l_CREA_GROUP_NO.append('PFONDINF')
704 l_CREA_GROUP_NO.append('PFONDSUP')
706 l_CREA_GROUP_NO.append('PFONDFIS')
707 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
708 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
711 if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
712 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
715 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
716 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
719 motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
722 l_CREA_GROUP_NO.append('S_FOND1')
723 l_CREA_GROUP_NO.append('S_FOND2')
724 l_CREA_GROUP_NO.append('EQUERRE')
725 motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
727 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
733 motscles['CREA_GROUP_NO']=[]
734 if not (TFISS=='NON_DEB') :
735 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
736 if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
737 motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
738 __MAPROV=DEFI_GROUP(reuse =__MAPROV,
742 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
744 EQUE_PIQUA=_F( GROUP_NO = 'EQUERRE' ,
762 if TFISS=='DEB_INT' :
763 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
765 motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
766 __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
772 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
774 CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
776 for i in range(1,NBAZIT+1):
778 __MAPROV=DEFI_GROUP(reuse = __MAPROV,
780 CREA_GROUP_NO = ( _F( NOM = 'NID'+str(i) ,
784 _F( NOM = 'NED'+str(i) ,
788 _F( NOM = 'NII'+str(i) ,
792 _F( NOM = 'NEI'+str(i) ,
796 _F( NOM = 'LDN'+str(i) ,
797 GROUP_MA = 'LD' +str(i) ,),
798 _F( NOM = 'LD' +str(i) ,
799 GROUP_NO = 'LDN'+str(i) ,
800 OPTION = 'SEGM_DROI_ORDO',
803 GROUP_NO_ORIG = 'NID'+str(i),
804 GROUP_NO_EXTR = 'NED'+str(i),),
805 _F( NOM = 'LIN'+str(i) ,
806 GROUP_MA = 'LI' +str(i) ,),
807 _F( NOM = 'LI' +str(i) ,
808 GROUP_NO = 'LIN'+str(i) ,
809 OPTION = 'SEGM_DROI_ORDO',
812 GROUP_NO_ORIG = 'NII'+str(i),
813 GROUP_NO_EXTR = 'NEI'+str(i),),))
816 # --- commande CREA_MAILLAGE ---
818 self.DeclareOut('nomres',self.sd)
819 nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
820 CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
821 GROUP_NO = 'P1_CORP ' , ),
822 _F( NOM_GROUP_MA = 'P2_CORP ' ,
823 GROUP_NO = 'P2_CORP ' , ),
824 _F( NOM_GROUP_MA = 'P_TUBU ' ,
825 GROUP_NO = 'P_TUBU ' , ),)
829 for impr in IMPRESSION :
832 if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
833 if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
834 if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
835 impr_resu = _F( MAILLAGE = nomres,)
837 IMPR_RESU( RESU = impr_resu,
838 FORMAT = impr['FORMAT'],**motscles )
841 # --- Verification profondeur fissure (courte débouchante) ---
843 if FISCOU and not (TFISS=='NON_DEB') :
844 nomres=DEFI_GROUP( reuse=nomres,
846 CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
847 _F( NOM = 'FONDORDO',
848 GROUP_MA = 'FONDFISS',
849 OPTION = 'NOEUD_ORDO',),),);
852 coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
853 collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
855 grfo=collgrno['FONDORDO']
862 listx[k] = coord[3*(node-1)]
863 listy[k] = coord[3*(node-1)+1]
864 listz[k] = coord[3*(node-1)+2]
867 XAB = listx[Nbno-1] - listx[0]
868 YAB = listy[Nbno-1] - listy[0]
869 ZAB = listz[Nbno-1] - listz[0]
870 AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
872 for k in range(0,Nbno) :
873 XAM = listx[k] - listx[0]
874 YAM = listy[k] - listy[0]
875 ZAM = listz[k] - listz[0]
876 Xvect = YAB*ZAM-ZAB*YAM
877 Yvect = ZAB*XAM-XAB*ZAM
878 Zvect = XAB*YAM-YAB*XAM
879 AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
887 grlev=collgrno['LEVRTUBU']
889 listxl = [None]*Nbnol
890 listyl = [None]*Nbnol
891 listzl = [None]*Nbnol
894 listxl[k] = coord[3*(node-1)]
895 listyl[k] = coord[3*(node-1)+1]
896 listzl[k] = coord[3*(node-1)+2]
899 for k in range(0,Nbnol) :
900 XAM = listxl[k] - listx[0]
901 YAM = listyl[k] - listy[0]
902 ZAM = listzl[k] - listz[0]
903 Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
904 if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
908 dk = sqrt(Xk**2+ Yk**2 +Zk**2)
911 texte="<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : %.2f \n"%dist
912 aster.affiche('MESSAGE',texte)