Télécharger g_aux.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_AUX PROCEDUR JB251061 21/05/25 21:15:00 11019
  2. * =============================================================================
  3. * PROCEDURE DE CONSTRUCTION DES CHAMPS AUXILIAIRES
  4. * POUR CALCULER LES FIC VIA LA PROCEDURE G_THETA
  5. * ------------------------------------------------
  6. *
  7. * DESCRIPTION : CALCULE LES CHAMPS AUXILIAIRES NECESSAIRES A G_THETA POUR
  8. * DETERMINER LES FACTEURS D'INTENSITE DES CONTRAINTES VIA
  9. * L'OPTION 'DECOUPLAGE';
  10. * =============================================================================
  11. DEBP G_AUX SUPTAB*'TABLE' OBJUTI*'TABLE' BOOL*'TABLE' ;
  12.  
  13. MESS 'CALCUL DES CHAMPS AUXILIAIRES...' ;
  14.  
  15. * I - PRELIMINAIRES
  16. * -----------------
  17.  
  18. * TABLES QUI CONTIENDRONT LES CHAMPS AUXILIAIRES
  19. CH_AUX = TABL ;
  20.  
  21. * OBJETS UTILES
  22. GDIME = OBJUTI.'DIMENSION' ;
  23. ZER1 = MANU 'CHML' MOD_MEC_R 'SCAL' 0. 'TYPE' 'SCALAIRE' 'STRESSES' ;
  24. DIR1 = OBJUTI.'DIRECTION1' ;
  25. SI (EXIS OBJUTI 'DIRECTION2') ;
  26. DIR2 = OBJUTI.'DIRECTION2' ;
  27. FINSI ;
  28. SI (EXIS OBJUTI 'DIRECTION3') ;
  29. DIR3 = OBJUTI.'DIRECTION3' ;
  30. FINSI ;
  31. SI (BOOL.'XFEM' ET (EGA GDIME 3)) ;
  32. V1 V2 V3 = OBJUTI.'V1' OBJUTI.'V2' OBJUTI.'V3' ;
  33. FINSI ;
  34. RIGTOT = OBJUTI.'RIGTOT' ;
  35. MAT_INST = OBJUTI.'MAT_INST' ;
  36. MODSUP = OBJUTI.'MODSUP' ;
  37. MODINF = OBJUTI.'MODINF' ;
  38. ELTETA = OBJUTI.'ELTETA' ;
  39. MAILLAGE = OBJUTI.'MAILLAGE' ;
  40. M_FRONT = OBJUTI.'FRONT' ;
  41. DEP000 = OBJUTI.'DEP000' ;
  42. FOR000 = OBJUTI.'FOR000' ;
  43. * AJOUT BP BT POUR LE CONTACT FROTTANT
  44. SI BOOL.'FROT' ;
  45. OBJCON = OBJUTI.'OBJCON' ;
  46. MAILCON = OBJUTI.'MAILCON' ;
  47. FINSI ;
  48. * LISTMOT SCAL :
  49. MTS1 = MOTS 'SCAL' ;
  50. * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE :
  51. * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS
  52. * DANS LE CAS DES COQUES
  53. MOD_MEC_R = OBJUTI.'MOD_MEC_R' ;
  54. MOD_MEC = OBJUTI.'MOD_MEC' ;
  55. MUI = EXTR (EXTR MOD_MEC_R 'DEPL') (LECT 1 PAS 1 GDIME) ;
  56. MFI = EXTR (EXTR MOD_MEC_R 'FORC') (LECT 1 PAS 1 GDIME) ;
  57. MU1 = EXTR MUI 1 ; MU2 = EXTR MUI 2 ;
  58. MF1 = EXTR MFI 1 ; MF2 = EXTR MFI 2 ;
  59. SI (EGA GDIME 3) ;
  60. MF3 = EXTR MFI 3 ;
  61. FINSI ;
  62. * FRONT DE FISSURE
  63. PM = SUPTAB.'FRONT_FISSURE' ;
  64. SI ((EGA GDIME 3) ET (NON BOOL.'DANS')) ;
  65. SI (NON BOOL.'COQ') ;
  66. PM = POIN PM 'INIT' ;
  67. FINSI ;
  68. FINSI ;
  69.  
  70. * ON COMMENCE A REMPLIR LA TABLE CH_AUX
  71. REPE IMOD GDIME ;
  72. CH_AUX.&IMOD = TABL ;
  73. CH_AUX.&IMOD.'MOTMIX' = EXTR 'III' 1 &IMOD ;
  74. CH_AUX.&IMOD.'MOTMIA' = CHAI (CH_AUX.&IMOD.'MOTMIX')*3 ;
  75. FIN IMOD ;
  76.  
  77. * COEFFICIENTS MATERIAUX
  78. CHAM1 = (EXCO 'YOUN' MAT_INST) ET (EXCO 'NU ' MAT_INST) ;
  79. SI (NON BOOL.'DANS') ;
  80. * CAS D UN MONO-MATERIAU
  81. * on construit les champ auxilaires d'une solution d'un materiau
  82. * homogene => on prend les valeurs de E et nu en pointe de fissure
  83. CHPO1 = CHAN 'CHPO' MOD_MEC_R CHAM1 ;
  84. SI BOOL.'XFEM' ;
  85. CHPO1 = INT_COMP ELTETA CHPO1 (MANU 'POI1' PM) ;
  86. FINSI ;
  87. SI (EGA (TYPE PM) 'MAILLAGE') ;
  88. VYO_1 = (MAXI (RESU (EXCO CHPO1 'YOUN'))) / (NBNO PM) ;
  89. VNU_1 = (MAXI (RESU (EXCO CHPO1 'NU '))) / (NBNO PM) ;
  90. SINON ;
  91. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  92. VNU_1 = EXTR CHPO1 'NU ' PM ;
  93. FINSI ;
  94. * Constante de Kolosov
  95. SI (EGA GMODE 'PLANCONT') ;
  96. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  97. SINON ;
  98. KAP_1 = (3. - (4. * VNU_1)) ;
  99. FINSI ;
  100. * Module de cisaillement
  101. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  102. * Constante C_MATE (= 1 / E^etoile)
  103. SI (EGA GMODE 'PLANCONT') ;
  104. C_MATE = 1. / VYO_1 ;
  105. SINON ;
  106. C_MATE = (1. - (VNU_1*VNU_1)) / VYO_1 ;
  107. FINSI ;
  108. SINON ;
  109. * CAS D UN BI-MATERIAU
  110. CHPO1 = CHAN 'CHPO' MODSUP (REDU CHAM1 MODSUP) ;
  111. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  112. VNU_1 = EXTR CHPO1 'NU ' PM ;
  113. CHPO1 = CHAN 'CHPO' MODINF (REDU CHAM1 MODINF) ;
  114. VYO_2 = EXTR CHPO1 'YOUN' PM ;
  115. VNU_2 = EXTR CHPO1 'NU ' PM ;
  116. SI BOOL.'MESS' ;
  117. MESS ' MAT_INST MAT2' ;
  118. MESS VYO_1 VYO_2 ;
  119. MESS VNU_1 VNU_2 ;
  120. FINSI ;
  121. * Constante de Kolosov
  122. SI (EGA GMODE 'PLANCONT') ;
  123. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  124. KAP_2 = (3. - VNU_2) / (1. + VNU_2) ;
  125. SINON ;
  126. KAP_1 = (3. - (4. * VNU_1)) ;
  127. KAP_2 = (3. - (4. * VNU_2)) ;
  128. FINSI ;
  129. * Module de cisaillement
  130. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  131. MU_2 = VYO_2 / (2.*(1. + VNU_2)) ;
  132. * Constante bi-metallique EPS1
  133. VA1 = (KAP_1/MU_1) + (1./MU_2) ;
  134. VA2 = (KAP_2/MU_2) + (1./MU_1) ;
  135. EPS1 = (1./(2.*PI)) * (LOG (VA1/VA2)) ;
  136. * Constante C_MATE (= 1 / E^etoile)
  137. COSH1 = PI * EPS1 ;
  138. COSH1 = ((EXP COSH1) + (EXP (COSH1*(-1.)))) / 2. ;
  139. VA1 = (MU_1 + (KAP_1*MU_2)) * (MU_2 + (KAP_2*MU_1)) ;
  140. VA2 = MU_1 * MU_2 * ((MU_1*(1. + KAP_2)) + (MU_2*(1. + KAP_1))) ;
  141. C_MATE = (COSH1*COSH1*VA1) / (4.*VA2) ;
  142. MESS 'EPS1=' EPS1 ' C_MATE=' C_MATE ;
  143. FINSI ;
  144. OBJUTI.'MU_1' = MU_1 ;
  145. OBJUTI.'C_MATE' = C_MATE ;
  146.  
  147. * METHODE DE CALCUL DES CHAMPS AUXILIAIRES :
  148. * G-ANALYTIQUE = ON UTILISE L EXPRESSION ANALYTIQUE DE GRAD(U) ET SIGMA
  149. * U-ANALYTIQUE = ON UTILISE L EXPRESSION ANALYTIQUE DE U ET ON CALCULE
  150. * SIGMA, FINT=BSIGMA, GRAD(U) ...
  151. * MECANIQUE = ON APPLIQUE UNE PRESSION/UN CISAILLEMENT SUR LES FACES DE LA FISSURE
  152. * ET ON RESOUT LE PROBLEME ASSOCIE
  153. METH_AUX = MOT SUPTAB.'METH_AUX' ;
  154. SI (EGA METH_AUX 'MECA') ;
  155. MESS_METH = CHAI 'METHODE : MECANIQUE' ;
  156. FINSI ;
  157. SI (EGA METH_AUX 'UANA') ;
  158. MESS_METH = CHAI 'METHODE : U-ANALYTIQUE' ;
  159. FINSI ;
  160. SI (EGA METH_AUX 'GANA') ;
  161. MESS_METH = CHAI 'METHODE : G-ANALYTIQUE' ;
  162. FINSI ;
  163. MESS MESS_METH ;
  164.  
  165.  
  166. * II - METHODE MECANIQUE
  167. * ----------------------
  168.  
  169. SI (EGA METH_AUX 'MECA') ;
  170.  
  171. * II.1 - CONDITIONS AUX LIMITES
  172. * *****************************
  173.  
  174. SI (NON BOOL.'COQ') ;
  175. CL1 = BLOQ 'DEPL' M_FRONT ;
  176. SINON ;
  177. CL1 = (BLOQ 'DEPL' M_FRONT) ET (BLOQ 'ROTA' M_FRONT) ;
  178. FINSI ;
  179.  
  180.  
  181. * II.2 - CHARGEMENT
  182. * *****************
  183.  
  184. * LEVRES DE FISSURE
  185. LSUP = SUPTAB.'LEVRE_SUPERIEURE' ;
  186. LINF = SUPTAB.'LEVRE_INFERIEURE' ;
  187. * CALCUL DU CHARGEMENT EN MODE I
  188. FI = PRES 'MASS' MOD_MEC 1. (LSUP ET LINF) ;
  189. * CALCUL DE LA NORMALE AUX LEVRES (DE LINF VERS LSUP)
  190. NFIS = RESU (REDU FI LSUP) ;
  191. NVAL = EXTR NFIS 'VALE' MFI ;
  192. P0 = M_FRONT POIN 1 ;
  193. NP = P0 MOIN P0 ;
  194. CHPO1 = MANU 'CHPO' NP MUI NVAL ;
  195. DEPL NP 'PLUS' CHPO1 ;
  196. * CALCUL DU CHARGEMENT EN MODE II
  197. LVS = TABL ;
  198. LVS.(1) LVS.(2) = (ORIE LSUP NP) (ORIE LINF NP) ;
  199. TFII = TABL ;
  200. MOD_TH = MODE MAILLAGE 'THERMIQUE' ;
  201. REPE ILEVR 2 ;
  202. LEVR = LVS.&ILEVR ;
  203. LEVRLIN = CHAN 'LINEAIRE' LEVR ;
  204. PSI0 PHI0 = PSIP MAILLAGE LEVRLIN 'DEUX' M_FRONT ;
  205. GPSI0 = CHAN 'NOEUD' MOD_TH (GRAD (NOMC 'T' PSI0) MOD_TH) ;
  206. GPSI0 = NOMC (EXTR GPSI0 'COMP') MFI GPSI0 ;
  207. FII = PROI LEVR GPSI0 ;
  208. PSCA1 = PSCA FI FII MFI MFI ;
  209. FII = FII - (PSCA1 * FI) ;
  210. NFII = (PSCA FII FII MFI MFI)**0.5 ;
  211. TFII.&ILEVR = FII / NFII ;
  212. FIN ILEVR ;
  213. FII = TFII.(1) - TFII.(2) ;
  214. * CALCUL DU CHARGEMENT EN MODE III
  215. FIII = PVEC (TFII.(1) + TFII.(2)) FI MFI MFI MFI ;
  216. * ON ENLEVE DE LSUP ET LINF LA PARTIE QUI EST DANS ELTETA
  217. LSUP = LSUP DIFF (LSUP ELEM 'APPUYE' ELTETA) ;
  218. LINF = LINF DIFF (LINF ELEM 'APPUYE' ELTETA) ;
  219. * ON APPLIQUE LA PRESSION SUR LES LEVRES REDUITES
  220. FI = PRES 'MASS' MOD_MEC 1. (LSUP ET LINF) ;
  221. * ON DONNE LA BONNE AMPLITUDE A FII ET FIII EN UTILISANT CELLE DE FI QUI EST
  222. * BIEN CALCULEE (JUSQU'ICI FII ET FIII SONT DE NORME UNITE) ET ON REDUIT
  223. NFI = (PSCA FI FI MFI MFI)**0.5 ;
  224. FII = NFI * (REDU FII (LSUP ET LINF)) ;
  225. FIII = NFI * (REDU FIII (LSUP ET LINF)) ;
  226. T_PREI = TABL ;
  227. T_PREI.(1) T_PREI.(2) T_PREI.(3) = FI FII FIII ;
  228.  
  229.  
  230. * II.3 - CALCUL DU DEPLACEMENT ET DES CONTRAINTES
  231. * ***********************************************
  232.  
  233. REPE IMOD GDIME ;
  234. TAB1 = CH_AUX.&IMOD ;
  235. TAB1.'A_PREI' = T_PREI.&IMOD ;
  236. TAB1.'A_DEPI' = RESO (RIGTOT ET CL1) TAB1.'A_PREI' ;
  237. TAB1.'A_SIGF' = SIGM 'LINE' MAT_INST MOD_MEC_R TAB1.'A_DEPI' ;
  238. TAB1.'A_DEPGR' = GRAD MOD_MEC_R MAT_INST TAB1.'A_DEPI' ;
  239. FIN IMOD ;
  240.  
  241. FINSI ;
  242.  
  243.  
  244. * III - METHODES ANALYTIQUES
  245. * --------------------------
  246.  
  247. * III.1 PREPARATION DU PASSAGE LOCAL -> GLOBAL
  248. * ********************************************
  249.  
  250. SI BOOL.'XFEM' ;
  251. * CAS XFEM
  252. PSI0 PHI0 = SUPTAB.'PSI' SUPTAB.'PHI' ;
  253. SINON ;
  254. * CAS ELEMENTS STANDARDS
  255. SI (EGA METH_AUX 'UANA') ;
  256. * METHODE U-ANALYTIQUE (FORCEMENT EN 2D POUR L'INSTANT)
  257. * INCLINAISON DE LA FISSURE PAR RAPPORT A L'AXE GLOBAL
  258. XG0 YG0 = COOR PM ;
  259. SEG1 = ORDO (SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' 'LARG' PM) ;
  260. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  261. P_SUP = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  262. SEG1 = ORDO (SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' 'LARG' PM) ;
  263. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  264. P_INF = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  265. XP1 YP1 = COOR P_SUP ;
  266. XP2 YP2 = COOR P_INF ;
  267. ALPHA1 = ATG (YG0 - ((YP1 + YP2)/2.)) (XG0 - ((XP1 + XP2)/2.)) ;
  268. * COORDONNEES DANS LE REPERE GLOBAL ET LOCAL
  269. XG1 YG1 = COOR ELTETA ;
  270. XL1 = ((XG1 - XG0)*(COS ALPHA1)) + ((YG1 - YG0)*(SIN ALPHA1)) ;
  271. YL1 = ((YG1 - YG0)*(COS ALPHA1)) - ((XG1 - XG0)*(SIN ALPHA1)) ;
  272. SI ((MESU ('DROI' 1 P_SUP P_INF)) < 1.E-10) ;
  273. L1 = SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' ELTETA ;
  274. C1 = MANU 'CHPO' L1 1 'SCAL' 1.E-10 ;
  275. L2 = SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' ELTETA ;
  276. C2 = MANU 'CHPO' L2 1 'SCAL' -1.E-10 ;
  277. YL1 = YL1 + C1 + C2 ;
  278. FINSI ;
  279. * COORDONNEES CYLINDRIQUES RAY1 TETA1 (1.E-30 POUR EVITER ERREUR ATG 0 0)
  280. TETA1 = ATG YL1 (XL1 + 1.E-30) ;
  281. RAY1 = (((XL1*XL1) + (YL1*YL1))**0.5) + 1.E-10 ;
  282. M1 = ELTETA ELEM 'APPU' 'LARG' P_SUP ;
  283. M2 = ELTETA ELEM 'APPU' 'LARG' P_INF ;
  284. VA1 = XTY (MANU 'CHPO' M1 1 'SCAL' 1.)
  285. (REDU YL1 M1) MTS1 MTS1 ;
  286. VA2 = XTY (MANU 'CHPO' M2 1 'SCAL' 1.)
  287. (REDU YL1 M2) MTS1 MTS1 ;
  288. * ON INVERSE AFIN D'AVOIR YL1 > 0 POUR MODSUP ET < 0 POUR MODINF
  289. SI ((VA1 < 0.) ET (VA2 > 0.)) ;
  290. PPPP = P_SUP ; P_SUP = P_INF ; P_INF = PPPP ;
  291. MMDD = MODSUP ; MODSUP = MODINF ; MODINF = MMDD ;
  292. FINSI ;
  293. SI ((EGA XP1 XP2 1.E-10) ET (EGA YP1 YP2 1.E-10)) ;
  294. TETA_S = REDU TETA1 SUPTAB.'LEVRE_SUPERIEURE' ;
  295. TETA_F = REDU TETA1 SUPTAB.'LEVRE_INFERIEURE' ;
  296. TETA1 = TETA1 - TETA_S - TETA_F ;
  297. * ON SE DEBROUILLE POUR AVOIR EXACTEMENT +/-180 SUR LEVRE SUP/INF
  298. SI ((VA1 > 0.) ET (VA2 < 0.)) ;
  299. TETA1 = TETA1 + ((TETA_S*0.) + 180.) + ((TETA_F*0.) - 180.) ;
  300. SINON ;
  301. TETA1 = TETA1 + ((TETA_F*0.) + 180.) + ((TETA_S*0.) - 180.) ;
  302. FINSI ;
  303. FINSI ;
  304. * VALEUR EN RADIAN
  305. TETA1RAD = TETA1*PI/180. ;
  306. SI BOOL.'DANS' ;
  307. M1 = EXTR MODSUP 'MAIL' ;
  308. M2 = EXTR MODINF 'MAIL' ;
  309. L1 = (CONT M1) ELEM 'APPU' (CONT M2) ;
  310. M1 = M1 ELEM 'APPU' 'STRI' ELTETA ;
  311. M2 = M2 ELEM 'APPU' 'STRI' ELTETA ;
  312. PM1 = (CHAN M1 'POI1') DIFF (CHAN L1 'POI1') ;
  313. PM2 = (CHAN M2 'POI1') DIFF (CHAN L1 'POI1') ;
  314. FINSI ;
  315. SI BOOL.'TRAC' ;
  316. TRAC RAY1 ELTETA 'TITR' 'RAY1' ;
  317. TRAC TETA1 ELTETA 'TITR' 'TETA1' (PROG -180. PAS 20. 180.) ;
  318. FINSI ;
  319. SINON ;
  320. * METHODE G-ANALYTIQUE
  321. LSUP = SUPTAB.'LEVRE_SUPERIEURE' ;
  322. * ON EST OBLIGE DE PASSER PAR DES ELEMENTS LINEAIRES A CAUSE DE PSIP
  323. SI (EGA GDIME 2) ;
  324. M_FRONT = M_FRONT POIN 1 ;
  325. FINSI ;
  326. LEVRLIN = CHAN 'LINEAIRE' LSUP ;
  327. PSI0 PHI0 = PSIP MAILLAGE LEVRLIN 'DEUX' M_FRONT ;
  328. FINSI ;
  329. FINSI ;
  330. SI (BOOL.'XFEM' OU (EGA METH_AUX 'GANA')) ;
  331. * CAS XFEM OU STD EN METHODE G-ANALYTIQUE
  332. * ON RECUPERE LES LEVEL SET
  333. * LV7 = (PSI PHI 0)^T
  334. PSI1 = REDU PSI0 ELTETA ;
  335. PHI1 = REDU PHI0 ELTETA ;
  336. LV0 = MANU 'CHPO' ELTETA MUI (PROG GDIME * 0.) 'NATURE' 'DIFFUS' ;
  337. LV7 = LV0 + (NOMC MU1 PSI1) + (NOMC MU2 PHI1) ;
  338. * ET ON CALCULE LES GRADIENTS DANS LE REPERE GLOBAL
  339. * GLV7 = (PSI,X PSI,Y PSI,Z)
  340. * (PHI,X PHI,Y PHI,Z)
  341. * (0 0 0 )
  342. GLV7 = CHAN (GRAD LV7 MOD_MEC_R) 'TYPE' 'SCALAIRE' ;
  343. MGUI = EXTR MOD_MEC_R 'GRAD' ;
  344. GPSI1 = EXCO (EXTR MGUI (LECT 1 PAS 1 NPAS (GDIME - 1))) GLV7 MUI ;
  345. GPHI1 = EXCO (EXTR MGUI (LECT 4 PAS 1 NPAS (GDIME - 1))) GLV7 MUI ;
  346. SI (EGA GDIME 2) ;
  347. * CAS 2D
  348. * ON S'ASSURE QUE LE REPERE EST DIRECT VIA SIGN1
  349. GPSI1PO = CHAN 'CHPO' MOD_MEC_R GPSI1 'MOYE' ;
  350. GPHI1PO = CHAN 'CHPO' MOD_MEC_R GPHI1 'MOYE' ;
  351. ZVPSI1 = PVEC GPSI1PO MUI MUI ;
  352. PSCA1 = PSCA ZVPSI1 GPHI1PO MUI MUI ;
  353. SIGN1 = SIGN (MAXI (RESU PSCA1)) ;
  354. PHI1 = SIGN1 * PHI1 ;
  355. GPHI1 = SIGN1 * GPHI1 ;
  356. LV7 = LV0 + (NOMC MU1 PSI1) + (NOMC MU2 PHI1) ;
  357. GLV7 = CHAN (GRAD LV7 MOD_MEC_R) 'TYPE' 'SCALAIRE' ;
  358. * ANGLE ALPHA1 DE PASSAGE LOCAL -> GLOBAL
  359. NGPSI1 = (PSCA GPSI1 GPSI1 MUI MUI)**0.5 ;
  360. NGPHI1 = (PSCA GPHI1 GPHI1 MUI MUI)**0.5 ;
  361. GPHI1VZ = -1.*(PVEC GPHI1 MUI MUI) ;
  362. PPMOY = 0.5 * ((GPSI1 / NGPSI1) + (GPHI1VZ / NGPHI1)) ;
  363. COS1A = EXCO PPMOY MU1 'SCAL' ;
  364. SIN1A = EXCO PPMOY MU2 'SCAL' ;
  365. ROT0 = ZERO MOD_MEC_R 'GRADIENT' ;
  366. ROT0 = CHAN 'TYPE' ROT0 'SCALAIRE' ;
  367. ROT1 = (NOMC (EXTR MGUI 1) COS1A) - (NOMC (EXTR MGUI 2) SIN1A) +
  368. (NOMC (EXTR MGUI 4) SIN1A) + (NOMC (EXTR MGUI 5) COS1A) ;
  369. ROT1 = ROT1 + (MANU 'CHML' MOD_MEC_R (EXTR MGUI 9) 1. 'STRESSES') ;
  370. ROT1 = ROT0 + ROT1 ;
  371. ALPHA1 = (MASQ SIN1A 'EGSUPE' 0.) * (ACOS COS1A) ;
  372. COSA2 = COS1A ** 2 ;
  373. SINA2 = SIN1A ** 2 ;
  374. SINCOSA = SIN1A * COS1A ;
  375. SINON ;
  376. * CAS 3D
  377. * CREATION DE LA MATRICE DE ROTATION
  378. TAW1 = PVEC GPSI1 GPHI1 MUI MUI MUI ;
  379. THETA = PVEC GPHI1 TAW1 MUI MUI MUI ;
  380. THETA = CHAN 'CHPO' MOD_MEC_R THETA 'MOYE' ;
  381. NTHETA = (PSCA THETA THETA MUI MUI)**0.5 ;
  382. MTHETA = MASQ NTHETA 'SUPERIEUR' 1.E-2 ;
  383. BTHETA = BORN NTHETA 'SCAL' 'MINIMUM' 1.E-2 ;
  384. THETA = CHAN (THETA / BTHETA * MTHETA) 'ATTRIBUT' 'NATURE' 'DIFFUS' ;
  385. GPHI1 = CHAN 'CHPO' MOD_MEC_R GPHI1 'MOYE' ;
  386. NGPHI1 = (PSCA GPHI1 GPHI1 MUI MUI)**0.5 ;
  387. GPHI1 = CHAN (GPHI1 / NGPHI1) 'ATTRIBUT' 'NATURE' 'DIFFUS' ;
  388. TAW1 = CHAN 'CHPO' MOD_MEC_R TAW1 'MOYE' ;
  389. NTAW1 = (PSCA TAW1 TAW1 MUI MUI)**0.5 ;
  390. MTAW1 = MASQ NTAW1 'SUPERIEUR' 1.E-2 ;
  391. BTAW1 = BORN NTAW1 'SCAL' 'MINIMUM' 1.E-2 ;
  392. TAW1 = CHAN (TAW1 / BTAW1 * MTAW1) 'ATTRIBUT' 'NATURE' 'DIFFUS' ;
  393. ROT1 = (EXCO THETA MUI (EXTR MGUI (LECT 1 4 7)))
  394. ET (EXCO GPHI1 MUI (EXTR MGUI (LECT 2 5 8)))
  395. ET (EXCO TAW1 MUI (EXTR MGUI (LECT 3 6 9))) ;
  396. ROT1 = EXCO ROT1 MGUI ;
  397. ROT1 = CHAN 'CHAM' ROT1 MOD_MEC_R 'STRESSES' 'SCALAIRE' ;
  398. FINSI ;
  399. * REPERE LOCAL DE LA FISSURE
  400. XL1 = (NOMC PSI1 'SCAL') CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  401. YL1 = (NOMC PHI1 'SCAL') CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  402. * Coordonnees cylindriques RAY1 TETA1
  403. TETA1 = CHAN (ATG YL1 (XL1 + 1.D-30)) 'TYPE' 'SCALAIRE' ;
  404. RAY1 = ((XL1**2) + (YL1**2))**0.5 ;
  405. RAY1 = CHAN RAY1 'TYPE' 'SCALAIRE' ;
  406.  
  407.  
  408. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  409. * ajout des solutions analytiques du saut sur les levres de la fissure
  410. * projection de psi1 sur la fissure et calcul de psi,x
  411. SI (NON BOOL.'DANS') ;
  412. SI BOOL.'FROT' ;
  413. * PSI en CHAML aux PG sur la fissure utilise pour calcul du gradient
  414. * on selectionne la partie de psi2 non nulle (= dans le champ theta)
  415. SI (EGA GDIME 2) ;
  416. * contour du domaine theta
  417. CON1 = CONT ELTETA ;
  418. * maillage support pour l'integration
  419. MAI1 = INCL MAICON CON1 'STRI' ;
  420. * OBJCON2 = MODE mai1 'MECANIQUE' 'ZCO2' ;
  421. OBJCON2 = REDU OBJCON mai1 ;
  422. SINON ;
  423. * maillage support pour l'integration
  424. MAI1 = INCL (EXTR OBJCON 'MAIL') ELTETA 'VOLU' 'STRI' ;
  425. * OBJCON2 = 'MODELISER' mai1 'MECANIQUE' 'ZCO3' ;
  426. OBJCON2 = REDU OBJCON mai1 ;
  427. FINSI ;
  428. * ON GARDE OBJCON2 POUR PLUS TARD
  429. OBJUTI.'OBJCON2' = OBJCON2 ;
  430. PSI1E = CHAN 'CHAM' PSI1 MOD_MEC_R 'NOEUDS' ;
  431. PSI2 = PROI OBJCON2 PSI1E 'STRESSES' ;
  432. * PSI en CHPOINT sur la fissure utilise pour calcul du repere local
  433. PSI3 = PROI MAICON PSI1E ;
  434. TESPSI = PSI2 'MASQUE' 'INFERIEUR'(-1E-15) ;
  435. PSI2B = TESPSI * (-1.*PSI2) ('MOTS' 'PSI') ('MOTS' 'PSI') ('MOTS' 'PSI') ;
  436. * terme sqrt(r/2pI) et sa derivee,r
  437. RM05B = ((PSI2B/(2.*PI)) **0.5) ;
  438. RM05BR = 0.5*((2.*PI*PSI2B)**-0.5) ;
  439. * Change le nom pour pouvoir calculer grad avec ZCO
  440. LV72 = (PSI3 NOMC 'AX')
  441. ET (MANU 'CHPO' ('EXTRAIRE' OBJCON2 'MAIL')
  442. 1 'AY ' 0. 'NATURE' 'DIFFUS')
  443. ET (MANU 'CHPO' ('EXTRAIRE' OBJCON2 'MAIL')
  444. 1 'AZ ' 0. 'NATURE' 'DIFFUS') ;
  445. GLV72 = 'CHANGER' (GRAD LV72 OBJCON2) 'TYPE' 'SCALAIRE' ;
  446. MAXJ = MOTS 'AX,X' 'AX,Y' 'AX,Z' ;
  447. MAXJ = EXTR MAXJ (LECT 1 PAS 1 GDIME) ;
  448. GPSI2 = EXCO MAXJ GLV72 MUI ;
  449. SI (GDIME 'EGA' 2) ;
  450. * Angle ALPHA1 de passage local -> global
  451. NGPSI2 = (PSCA GPSI2 GPSI2 MUI MUI)**0.5 ;
  452. COS1AB = EXCO (GPSI2 / NGPSI2) 'UX' 'SCAL' ;
  453. SIN1AB = EXCO (GPSI2 / NGPSI2) 'UY' 'SCAL' ;
  454. ROT2 = (NOMC 'AX,X' COS1AB) - (NOMC 'AX,Y' SIN1AB) +
  455. (NOMC 'AY,X' SIN1AB) + (NOMC 'AY,Y' COS1AB) ;
  456. ROT20 = MANU 'CHML' OBJCON2 'AX,Z' 0. 'AY,Z' 0. 'AZ,X' 0.
  457. 'AZ,Y' 0. 'AZ,Z' 1. 'STRESSES' ;
  458. ROT2 = ROT20 + ROT2 ;
  459. SINON ;
  460. * CHAM DES NORMALES
  461. V22 = VSUR OBJCON2 'NORM' ;
  462. MVI = EXTR V22 'COMP' ;
  463. V22 = NOMC MVI MUI V22 ;
  464. * CHAM PREMIERE TANGENTE = GRAD DE PSI
  465. * MAIS ON ORTHONORMALISE LE REPERE
  466. PSCA1 = PSCA V22 GPSI2 MUI MUI ;
  467. V12 = GPSI2 - (PSCA1 * V22) ;
  468. NV12 = (PSCA V12 V12 MUI MUI)**0.5 ;
  469. V12 = V12 / NV12 ;
  470. * CHAM DE LA DERNIERE TANGENTE PRODUIT VECT DES 2 AUTRES
  471. V32 = PVEC V12 V22 MUI MUI MUI ;
  472. MAIX = MOTS 'AX,X' 'AY,X' 'AZ,X' ;
  473. MAIY = MOTS 'AX,Y' 'AY,Y' 'AZ,Y' ;
  474. MAIZ = MOTS 'AX,Z' 'AY,Z' 'AZ,Z' ;
  475. ROT2 = (NOMC MUI MAIX V12) ET (NOMC MUI MAIY V22) ET
  476. (NOMC MUI MAIZ V32) ;
  477. FINSI ;
  478.  
  479. * r,x (r = -PSI sur la fissure)
  480. DRDX2 = (EXCO GLV72 'AX,X' 'SCAL') ;
  481. DRDY2 = (EXCO GLV72 'AX,Y' 'SCAL') ;
  482. SI (EGA GDIME 3) ;
  483. DRDZ2 = (EXCO GLV72 'AX,Z' 'SCAL') ;
  484. FINSI ;
  485. FINSI ;
  486. FINSI ;
  487. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  488. FINSI ;
  489. SI (NEG (TYPE TETA1) 'MOT') ;
  490. * COS ET SIN UTILES
  491. COS1T = COS TETA1 ;
  492. COS05T = COS (0.5*TETA1) ;
  493. COS15T = COS (1.5*TETA1) ;
  494. SIN1T = SIN TETA1 ;
  495. SIN05T = SIN (0.5*TETA1) ;
  496. SIN15T = SIN (1.5*TETA1) ;
  497. FINSI ;
  498.  
  499.  
  500. * III.2 - METHODE U-ANALYTIQUE
  501. * ----------------------------
  502.  
  503. SI (EGA METH_AUX 'UANA') ;
  504.  
  505. ULOC = TABL ;
  506. SI (NON BOOL.'DANS') ;
  507. * CAS D UN MONO-MATERIAU
  508. * CHAMP AUX. MODE 1
  509. UX_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) * COS05T * (KAP_1 - COS1T) ;
  510. UY_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) * SIN05T * (KAP_1 - COS1T) ;
  511. ULOC.(1) = (CHAN 'COMP' MU1 UX_1 'NATU' 'DIFFUS') ET
  512. (CHAN 'COMP' MU2 UY_1 'NATU' 'DIFFUS') ;
  513. * CHAMP AUX. MODE 2
  514. UX_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) * SIN05T * (2. + KAP_1 + COS1T) ;
  515. UY_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) * COS05T * (2. - KAP_1 - COS1T) ;
  516. ULOC.(2) = (CHAN 'COMP' MU1 UX_1 'NATU' 'DIFFUS') ET
  517. (CHAN 'COMP' MU2 UY_1 'NATU' 'DIFFUS') ;
  518. SINON ;
  519. * CAS D UN BI-MATERIAU
  520. EPSLGR = EPS1 * (LOG RAY1) ;
  521. VA1 = COS (EPSLGR*180./PI) ;
  522. VA2 = SIN (EPSLGR*180./PI) ;
  523. BTA1 = ((0.5*VA1) + (EPS1*VA2)) / (0.25 + (EPS1*EPS1)) ;
  524. BTAPM1 = ((0.5*VA2) - (EPS1*VA1)) / (0.25 + (EPS1*EPS1)) ;
  525. DTA_1 = EXP (0. - ((PI - TETA1RAD)*EPS1)) ;
  526. DTA_2 = EXP ((PI + TETA1RAD)*EPS1) ;
  527. GAM_1 = (KAP_1*DTA_1) - (DTA_1**(-1.)) ;
  528. GAM_2 = (KAP_2*DTA_2) - (DTA_2**(-1.)) ;
  529. GAMPM_1 = (KAP_1*DTA_1) + (DTA_1**(-1.)) ;
  530. GAMPM_2 = (KAP_2*DTA_2) + (DTA_2**(-1.)) ;
  531. COS05T = COS (TETA1/2.) ; SIN05T = SIN (TETA1/2.) ;
  532. D_1 = (BTA1*GAM_1*COS05T) + (BTAPM1*GAMPM_1*SIN05T) ;
  533. D_2 = (BTA1*GAM_2*COS05T) + (BTAPM1*GAMPM_2*SIN05T) ;
  534. DPM_1 = (BTAPM1*GAM_1*COS05T) - (BTA1*GAMPM_1*SIN05T) ;
  535. DPM_2 = (BTAPM1*GAM_2*COS05T) - (BTA1*GAMPM_2*SIN05T) ;
  536. GTAR1 = EPSLGR + (0.5*TETA1RAD) ;
  537. CVA_1 = (SIN TETA1) * (SIN (GTAR1*180./PI)) ;
  538. CVA_2 = (SIN TETA1) * (COS (GTAR1*180./PI)) ;
  539. * CHAMP AUX. MODE 1
  540. UX_1 = ((RAY1/(2.*PI))**0.5)/(4.*MU_1)*(D_1 + (2.*DTA_1*CVA_1)) ;
  541. UX_2 = ((RAY1/(2.*PI))**0.5)/(4.*MU_2)*(D_2 + (2.*DTA_2*CVA_1)) ;
  542. UXMOY = (CHAN 'ATTRIBUT' UX_1 'NATURE' 'DIFFUS') ET
  543. (CHAN 'ATTRIBUT' UX_2 'NATURE' 'DIFFUS') ;
  544. UY_1 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_1)*(DPM_1 + (2.*DTA_1*CVA_2))) ;
  545. UY_2 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_2)*(DPM_2 + (2.*DTA_2*CVA_2))) ;
  546. UYMOY = (CHAN 'ATTRIBUT' UY_1 'NATURE' 'DIFFUS') ET
  547. (CHAN 'ATTRIBUT' UY_2 'NATURE' 'DIFFUS') ;
  548. ULOC.(1) = (NOMC MU1 UXMOY) + (NOMC MU2 UYMOY) ;
  549. * CHAMP AUX. MODE 2
  550. UX_1 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_1)*(DPM_1 - (2.*DTA_1*CVA_2))) ;
  551. UX_2 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_2)*(DPM_2 - (2.*DTA_2*CVA_2))) ;
  552. UXMOY = (CHAN 'ATTRIBUT' UX_1 'NATURE' 'DIFFUS') ET
  553. (CHAN 'ATTRIBUT' UX_2 'NATURE' 'DIFFUS') ;
  554. UY_1 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_1)*(D_1 - (2.*DTA_1*CVA_1))) ;
  555. UY_2 = 0-(((RAY1/(2.*PI))**0.5)/(4.*MU_2)*(D_2 - (2.*DTA_2*CVA_1))) ;
  556. UYMOY = (CHAN 'ATTRIBUT' UY_1 'NATURE' 'DIFFUS') ET
  557. (CHAN 'ATTRIBUT' UY_2 'NATURE' 'DIFFUS') ;
  558. ULOC.(2) = (NOMC MU1 UXMOY) + (NOMC MU2 UYMOY) ;
  559. FINSI ;
  560. REPE IMOD GDIME ;
  561. * RETOUR DU REPERE LOCAL VERS LE GLOBAL
  562. UL1 = EXCO MU1 ULOC.&IMOD ;
  563. UL2 = EXCO MU2 ULOC.&IMOD ;
  564. UG1 = (UL1*(COS ALPHA1)) - (UL2*(SIN ALPHA1)) ;
  565. UG2 = (UL1*(SIN ALPHA1)) + (UL2*(COS ALPHA1)) ;
  566. * CHAMPS AUXILIAIRES
  567. TAB1 = CH_AUX.&IMOD ;
  568. TAB1.'A_DEPI' = (NOMC MU1 UG1) + (NOMC MU2 UG2) ;
  569. TAB1.'A_SIGF' = SIGM 'LINE' MAT_INST MOD_MEC_R TAB1.'A_DEPI' ;
  570. TAB1.'A_PREI' = BSIG TAB1.'A_SIGF' MOD_MEC_R ;
  571. TAB1.'A_DEPGR' = GRAD MOD_MEC_R MAT_INST TAB1.'A_DEPI' ;
  572. FIN IMOD ;
  573.  
  574. FINSI ;
  575.  
  576.  
  577. * III.3 - METHODE G-ANALYTIQUE
  578. * ****************************
  579.  
  580. SI (EGA METH_AUX 'GANA') ;
  581.  
  582. * ON COMMENCE PAR CREER UN CHAMP DE TYPE GRADIENT NUL QUE L'ON TRANSFORME EN
  583. * CHAMP DE TYPE SCALAIRE POUR POUVOIR FAIRE LES OPERATIONS ALGEBRIQUES AVEC LES
  584. * CHAMPS DE TYPE SCALAIRE DEFINIS PLUS HAUT A PARTIR DE TETA1
  585. GRU0 = ZERO MOD_MEC_R 'GRADIENT' ;
  586. GRU0 = CHAN 'TYPE' GRU0 'SCALAIRE' ;
  587.  
  588. * PREMIERE ETAPE : ECRITURE DES CHAMPS
  589. * ------------------------------------
  590.  
  591. * PREFACTEURS
  592. PREF1 = (1/(2*PI*RAY1))**0.5 ;
  593. * TABLES (ELLES CONTIENDRONT LES CHAMPS POUR LES 2/3 MODES)
  594. GRULOC = TABL ;
  595. SIGLOC = TABL ;
  596.  
  597. * REMARQUE : DANS CE QUI SUIT ON EXPRIME LES COMPOSANTES DU GRADIENT DU CHAMP
  598. * DE DEPLACEMENT DANS LA BASE MIXTE ENTRE LA BASE CARTESIENNE LOCALE
  599. * ET LA BASE CYLINDRIQUE LOCALE.
  600. * U1T N'EST DONC PAS U1,T MAIS BIEN (U1,T)/R.
  601.  
  602. * REMARQUE : LE TENSEUR DES CONTRAINTES EST BIEN SUR SYMETRIQUE MAIS ON LE
  603. * TRAITE QUAND MEME COMME S'IL NE L'ETAIT PAS POUR POUVOIR EFFECTUER
  604. * LA ROTATION DE LA MEME MANIERE QUE POUR LE GRADIENT DU DEPLACEMENT
  605.  
  606. * MODE I :
  607. * ********
  608. * GRADIENT DU DEPLACEMENT DANS LA BASE LOCALE
  609. U1R = NOMC (EXTR MGUI 1) (((KAP_1 - 0.5)*COS05T) - (0.5*COS15T)) ;
  610. U1T = NOMC (EXTR MGUI 2) (((0.5 - KAP_1)*SIN05T) + (1.5*SIN15T)) ;
  611. U2R = NOMC (EXTR MGUI 4) (((KAP_1 + 0.5)*SIN05T) - (0.5*SIN15T)) ;
  612. U2T = NOMC (EXTR MGUI 5) (((KAP_1 + 0.5)*COS05T) - (1.5*COS15T)) ;
  613. MSCAL = MOTS (DIME MGUI)*'SCAL' ;
  614. GRU1 = GRU0 + U1R + U1T + U2R + U2T ;
  615. GRULOC.(1) = (PREF1 / (4.*MU_1)) * GRU1 MSCAL MGUI MGUI ;
  616. * CONTRAINTES DANS LA BASE LOCALE
  617. SIG11 = NOMC (EXTR MGUI 1) COS05T*(1. - (SIN05T*SIN15T)) ;
  618. SIG12 = NOMC (EXTR MGUI 2) COS05T*SIN05T*COS15T ;
  619. SIG21 = NOMC (EXTR MGUI 4) SIG12 ;
  620. SIG22 = NOMC (EXTR MGUI 5) COS05T*(1. + (SIN05T*SIN15T)) ;
  621. SIG33 = VNU_1*((NOMC (EXTR MGUI 9) SIG11) + (NOMC (EXTR MGUI 9) SIG22)) ;
  622. SIG1 = GRU0 + SIG11 + SIG12 + SIG21 + SIG22 + SIG33 ;
  623. SIGLOC.(1) = PREF1 * SIG1 MSCAL MGUI MGUI ;
  624.  
  625. * MODE II :
  626. * *********
  627. * GRADIENT DU DEPLACEMENT DANS LA BASE LOCALE
  628. U1R = NOMC (EXTR MGUI 1) (((KAP_1 + 1.5)*SIN05T) + (0.5*SIN15T)) ;
  629. U1T = NOMC (EXTR MGUI 2) (((KAP_1 + 1.5)*COS05T) + (1.5*COS15T)) ;
  630. U2R = NOMC (EXTR MGUI 4) (((1.5 - KAP_1)*COS05T) - (0.5*COS15T)) ;
  631. U2T = NOMC (EXTR MGUI 5) (((KAP_1 - 1.5)*SIN05T) + (1.5*SIN15T)) ;
  632. GRU1 = GRU0 + U1R + U1T + U2R + U2T ;
  633. GRULOC.(2) = (PREF1 / (4.*MU_1)) * GRU1 MSCAL MGUI MGUI ;
  634. * CONTRAINTES DANS LA BASE LOCALE
  635. SIG11 = NOMC (EXTR MGUI 1) (0 - (SIN05T*(2. + (COS05T*COS15T)))) ;
  636. SIG12 = NOMC (EXTR MGUI 2) COS05T*(1. - (SIN05T*SIN15T)) ;
  637. SIG21 = NOMC (EXTR MGUI 4) SIG12 ;
  638. SIG22 = NOMC (EXTR MGUI 5) SIN05T*COS05T*COS15T ;
  639. SIG33 = VNU_1*((NOMC (EXTR MGUI 9) SIG11) + (NOMC (EXTR MGUI 9) SIG22)) ;
  640. SIG1 = GRU0 + SIG11 + SIG12 + SIG21 + SIG22 + SIG33 ;
  641. SIGLOC.(2) = PREF1 * SIG1 MSCAL MGUI MGUI ;
  642.  
  643. * MODE III :
  644. * **********
  645. * GRADIENT DU DEPLACEMENT DANS LA BASE LOCALE
  646. U3R = NOMC (EXTR MGUI 7) SIN05T ;
  647. U3T = NOMC (EXTR MGUI 8) COS05T ;
  648. GRU1 = GRU0 + U3R + U3T ;
  649. GRULOC.(3) = (PREF1 / MU_1) * GRU1 MSCAL MGUI MGUI ;
  650. * CONTRAINTES DANS LA BASE LOCALE
  651. SIG13 = NOMC (EXTR MGUI 3) (0. - SIN05T) ;
  652. SIG31 = NOMC (EXTR MGUI 7) SIG13 ;
  653. SIG23 = NOMC (EXTR MGUI 6) COS05T ;
  654. SIG32 = NOMC (EXTR MGUI 8) SIG23 ;
  655. SIG1 = GRU0 + SIG13 + SIG31 + SIG23 + SIG32 ;
  656. SIGLOC.(3) = PREF1 * SIG1 MSCAL MGUI MGUI ;
  657.  
  658.  
  659. * DEUXIEME ETAPE : PASSAGE DANS LA BASE GLOBALES
  660. * ----------------------------------------------
  661.  
  662. * MATRICE DE PASSAGE DE LA BASE CYLINDRIQUE A LA BASE CART. GLOBALE
  663. * (SA TRANSPOSEE EN FAIT)
  664. * PCG = (R,X R*T,X 0)
  665. * (R,Y R*T,Y 0)
  666. * (R,Z R*T,Z 0)
  667. * AVEC :
  668. * R,I = COST * PSI,I + SINT * PHI,I
  669. * R*T,I = COST * PHI,I - SINT * PSI,I
  670. PCG = GRU0 ;
  671. REPE I 3 ;
  672. MGU1I = EXTR MGUI &I ;
  673. MGU2I = EXTR MGUI (&I + 3) ;
  674. PSIJ = EXCO MGU1I GLV7 'SCAL' ;
  675. PHIJ = EXCO MGU2I GLV7 'SCAL' ;
  676. MGUI1 = EXTR MGU1I (LECT 1 4 3 2) ;
  677. MGUI2 = EXTR MGU2I (LECT 1 4 3 2) ;
  678. PCG = PCG + (NOMC MGUI1 ((COS1T * PSIJ) + (SIN1T * PHIJ))) ;
  679. PCG = PCG + (NOMC MGUI2 ((COS1T * PHIJ) - (SIN1T * PSIJ))) ;
  680. FIN I ;
  681. * MATRICE DE PASSAGE DE LA BASE CART. LOCALE A LA BASE CART. GLOBALE
  682. * (SA TRANSPOSEE EN FAIT)
  683. * C'EST ROT1 CALCULE PLUS HAUT
  684.  
  685. * BOUCLE SUR LES MODES
  686. MSIG = EXTR MOD_MEC_R 'CONT' ;
  687. REPE IMOD GDIME ;
  688. GRU1 = GRULOC.&IMOD ;
  689. SIG1 = SIGLOC.&IMOD ;
  690. GRUAUX = GRU0 ;
  691. SIGAUX = GRU0 ;
  692. * BOUCLES SUR LES INDICES (DOUBLE PRODUIT MATRICIEL)
  693. REPE I 3 ;
  694. REPE J 3 ;
  695. MUIJ = EXTR MGUI ((3*(&I - 1)) + &J) ;
  696. MSIJ = CHAI 'SM' (EXTR MUIJ (LECT 2 4)) ;
  697. REPE K 3 ;
  698. MUIK = EXTR MGUI ((3*(&I - 1)) + &K) ;
  699. ROTIK = EXCO MUIK ROT1 'SCAL' ;
  700. REPE L 3 ;
  701. MUJL = EXTR MGUI ((3*(&J - 1)) + &L) ;
  702. PCGJL = EXCO MUJL PCG 'SCAL' ;
  703. ROTJL = EXCO MUJL ROT1 'SCAL' ;
  704. * POUR LE GRADIENT DU DEPLACEMENT : LE CHANGEMENT DE BASE EST MIXTE
  705. MUKL = EXTR MGUI ((3*(&K - 1)) + &L) ;
  706. GRUKL = EXCO MUKL GRU1 'SCAL' ;
  707. GRUAUX = GRUAUX + (NOMC MUIJ (ROTIK * PCGJL * GRUKL)) ;
  708. * POUR LE TENSEUR DES CONTRAINTES : LE CHANGEMENT DE BASE EST NORMAL
  709. SIGKL = EXCO MUKL SIG1 'SCAL' ;
  710. SIGAUX = SIGAUX + (NOMC MSIJ (ROTIK * ROTJL * SIGKL)) ;
  711. FIN L ;
  712. FIN K ;
  713. FIN J ;
  714. FIN I ;
  715. * IL FAUT REPASSER LE CHAMP DE CONTRAINTE EN TYPE 'CONTRAINTES' ET NE GARDER
  716. * QUE LES COMPOSANTES PERTINENTES
  717. SIGAUX = CHAN 'TYPE' (EXCO MSIG SIGAUX) 'CONTRAINTES' ;
  718. * IL FAUT REPASSER LE GRADIENT DU DEPLACEMENT EN TYPE 'GRADIENT'
  719. GRUAUX = CHAN 'TYPE' GRUAUX 'GRADIENT' ;
  720.  
  721. * STOCKAGE
  722. TAB1 = CH_AUX.&IMOD ;
  723. TAB1.'A_PREI' = FOR000 ;
  724. TAB1.'A_DEPI' = DEP000 ;
  725. TAB1.'A_SIGF' = SIGAUX ;
  726. TAB1.'A_DEPGR' = GRUAUX ;
  727. FIN IMOD ;
  728.  
  729. *******************************************************************************
  730. * SAUT DE DEPLACEMENT DANS LE CAS DU FROTTEMENT ENTRE LES LEVRES
  731.  
  732. SI BOOL.'FROT' ;
  733.  
  734. GRW0 = ZERO OBJCON2 'GRADIENT' ;
  735. GRW0 = CHAN 'TYPE' GRW0 'SCALAIRE' ;
  736. GRW0 = MANU 'CHML' OBJCON2 'AX,X' 0. 'AX,Y' 0. 'AX,Z' 0.
  737. 'AY,X' 0. 'AY,Y' 0. 'AY,Z' 0. 'AZ,X' 0. 'AZ,Y' 0. 'AZ,Z' 0.
  738. 'TYPE' 'SCALAIRE' 'STRESSES' ;
  739. * LIST GRW0 ;FIN ;
  740. GRWLOC = TABL ;
  741.  
  742. * MODE I :
  743. * ********
  744. * GRADIENT DU SAUT DE DEPLACEMENT DANS LA BASE LOCALE (MIS A 0 EN MODE I
  745. * CAR NE DOIT PAS INTERVENIR)
  746. GRWLOC.(1) = GRW0 ;
  747.  
  748. * MODE II :
  749. * *********
  750. * GRADIENT DU SAUT DE DEPLACEMENT DANS LA BASE LOCALE
  751. W1R = (8.*C_MATE * RM05BR) / 2. ;
  752. W1R = NOMC W1R 'SCAL' ;
  753. W1X = W1R*DRDX2 ;
  754. W1Y = W1R*DRDY2 ;
  755. GRWLOC.(2) = GRW0 + (NOMC 'AX,X' W1X) + (NOMC 'AX,Y' W1Y) ;
  756. SI (EGA GDIME 3) ;
  757. W1Z = W1R*DRDZ2 ;
  758. GRWLOC.(2) = GRWLOC.(2) + (NOMC 'AX,Z' W1Z) ;
  759. FINSI ;
  760.  
  761. * MODE III :
  762. * **********
  763. * GRADIENT DU SAUT DE DEPLACEMENT DANS LA BASE LOCALE
  764. GRWLOC.(3) = GRW0 ;
  765. SI (EGA GDIME 3) ;
  766. W3R = (8*C_MATE * RM05BR/(1. - VNU_1)) / 2. ;
  767. W3R = NOMC W3R 'SCAL' ;
  768. W3X = W3R*DRDX2 ;
  769. W3Y = W3R*DRDY2 ;
  770. W3Z = W3R*DRDZ2 ;
  771. GRWLOC.(3) = GRWLOC.(3) + (NOMC 'AZ,X' W3X) + (NOMC 'AZ,Y' W3Y) +
  772. (NOMC 'AZ,Z' W3Z) ;
  773. FINSI ;
  774.  
  775. * MATRICE DE PASSAGE DE LA BASE CART. LOCALE A LA BASE CART. GLOBALE
  776. * (SA TRANSPOSEE EN FAIT)
  777. * C'EST ROT2 CALCULE PLUS HAUT
  778.  
  779. * BOUCLE SUR LES MODES
  780. REPE IMOD GDIME ;
  781. GRW1 = GRWLOC.&IMOD ;
  782. GRWAUX = GRW0 ;
  783. * BOUCLES SUR LES INDICES (DOUBLE PRODUIT MATRICIEL)
  784. REPE I 3 ;
  785. REPE J 3 ;
  786. MAIJ = CHAI 'A' (EXTR 'XYZ' &I &I) ',' (EXTR 'XYZ' &J &J) ;
  787. MI = EXTR 'XYZ' &I &I ;
  788. MJ = EXTR 'XYZ' &J &J ;
  789. MAIK = MOTS (CHAI 'A' MI ',X') (CHAI 'A' MI ',Y')
  790. (CHAI 'A' MI ',Z') ;
  791. MAKJ = MOTS (CHAI 'AX,' MJ) (CHAI 'AY,' MJ) (CHAI 'AZ,' MJ) ;
  792. GRWAUX = GRWAUX + (NOMC MAIJ (PSCA ROT2 GRW1 MAIK MAKJ)) ;
  793. FIN J ;
  794. FIN I ;
  795. GRWAUX = CHAN 'TYPE' GRWAUX 'GRADIENT' ;
  796. CH_AUX.&IMOD.'B_DEPGR' = GRWAUX ;
  797. FIN IMOD ;
  798. FINSI ;
  799.  
  800. FINSI ;
  801.  
  802. MESS 'CALCUL DES CHAMPS AUXILIAIRES TERMINE' ;
  803.  
  804. REPE IMOD 0 ;
  805. * MSUP = MAILLAGE ELEM 'BLEU' ;
  806. * TRAC 'CACH' (VECT (REDU T_PREI.&IMOD MSUP) 'FORC') MSUP ;
  807. UAUX = CH_AUX.&IMOD.'A_DEPI' ;
  808. DEF1 = DEFO MAILLAGE UAUX ;
  809. TRAC 'CACH' DEF1 ;
  810. FIN IMOD ;
  811.  
  812. FINP CH_AUX ;
  813.  
  814.  
  815.  
  816.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales