Télécharger g_aux.procedur

Retour à la liste

Numérotation des lignes :

  1. * G_AUX PROCEDUR JB251061 20/11/04 21:17:45 10763
  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. * TABLE QUI CONTIENDRA LES CHAMPS AUXILIAIRES
  14. CH_AUX = TABL ;
  15.  
  16. * OBJETS UTILES
  17. ZER1 = MANU 'CHML' MOD_MEC_R 'SCAL' 0. 'TYPE' 'SCALAIRE' 'STRESSES' ;
  18. DIR1 = OBJUTI.'DIRECTION1' ;
  19. DIR2 = OBJUTI.'DIRECTION2' ;
  20. DIR3 = OBJUTI.'DIRECTION3' ;
  21. RIGTOT = OBJUTI.'RIGTOT' ;
  22. MAT_INST = OBJUTI.'MAT_INST' ;
  23. MODSUP = OBJUTI.'MODSUP' ;
  24. MODINF = OBJUTI.'MODINF' ;
  25. ELTETA = OBJUTI.'ELTETA' ;
  26. M_FRONT = OBJUTI.'FRONT' ;
  27. * AJOUT BP BT POUR LE CONTACT FROTTANT
  28. SI BOOL.'FROT' ;
  29. OBJCON = OBJUTI.'OBJCON' ;
  30. MAILCON = OBJUTI.'MAILCON' ;
  31. FINSI ;
  32. * LISTMOT SCAL :
  33. MTS1 = MOTS 'SCAL' ;
  34. * LISTMOTS POUR LE DEPLACEMENT ET POUR LA FORCE :
  35. * ON EXTRAIT LES GDIME PREMIERS MOTS CAR ON NE VEUT PAS DES ROTATIONS
  36. * DANS LE CAS DES COQUES
  37. MOD_MEC_R = OBJUTI.'MOD_MEC_R' ;
  38. GDIME = OBJUTI.'DIMENSION' ;
  39. UCOMP = EXTR (EXTR MOD_MEC_R 'DEPL') (LECT 1 PAS 1 GDIME) ;
  40. FCOMP = EXTR (EXTR MOD_MEC_R 'FORC') (LECT 1 PAS 1 GDIME) ;
  41. MU1 = EXTR UCOMP 1 ; MU2 = EXTR UCOMP 2 ;
  42. MF1 = EXTR FCOMP 1 ; MF2 = EXTR FCOMP 2 ;
  43. SI (EGA GDIME 3) ;
  44. MF3 = EXTR FCOMP 3 ;
  45. FINSI ;
  46.  
  47. *******************************************************************************
  48. ****************************** ETAPE 1 ****************************************
  49. *******************************************************************************
  50.  
  51. PM = SUPTAB.'FRONT_FISSURE' ;
  52. SI ((EGA GDIME 3) ET (NON BOOL.'DANS')) ;
  53. SI (NON BOOL.'COQ') ;
  54. PM = POIN PM 'INIT' ;
  55. FINSI ;
  56. SI (NON BOOL.'COQ') ;
  57. CL1 = BLOQ 'DEPL' M_FRONT ;
  58. SINON ;
  59. CL1 = (BLOQ 'DEPL' M_FRONT) ET (BLOQ 'ROTA' M_FRONT) ;
  60. FINSI ;
  61. FINSI ;
  62.  
  63. SI (NON BOOL.'XFEM') ;
  64. * CAS ELEMENTS STANDARDS
  65. * CAS 2D
  66. SI (EGA GDIME 2) ;
  67. * INCLINAISON DE LA FISSURE PAR RAPPORT A L'AXE GLOBAL
  68. XG0 YG0 = COOR PM ;
  69. SEG1 = ORDO (SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' 'LARG' PM) ;
  70. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  71. P_SUP = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  72. SEG1 = ORDO (SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' 'LARG' PM) ;
  73. PINIFIN = (POIN SEG1 'INIT') ET (POIN SEG1 'FINA') ;
  74. P_INF = POIN (DIFF PINIFIN ((VIDE 'MAILLAGE') ET PM)) 1 ;
  75. XP1 YP1 = COOR P_SUP ;
  76. XP2 YP2 = COOR P_INF ;
  77. ALPHA1 = ATG (YG0 - ((YP1 + YP2)/2.)) (XG0 - ((XP1 + XP2)/2.)) ;
  78. * COORDONNEES DANS LE REPERE GLOBAL ET LOCAL
  79. XG1 YG1 = COOR ELTETA ;
  80. XL1 = ((XG1 - XG0)*(COS ALPHA1)) + ((YG1 - YG0)*(SIN ALPHA1)) ;
  81. YL1 = ((YG1 - YG0)*(COS ALPHA1)) - ((XG1 - XG0)*(SIN ALPHA1)) ;
  82. SI ((MESU ('DROI' 1 P_SUP P_INF)) < 1.E-10) ;
  83. L1 = SUPTAB.'LEVRE_SUPERIEURE' ELEM 'APPU' ELTETA ;
  84. C1 = MANU 'CHPO' L1 1 'SCAL' 1.E-10 ;
  85. L2 = SUPTAB.'LEVRE_INFERIEURE' ELEM 'APPU' ELTETA ;
  86. C2 = MANU 'CHPO' L2 1 'SCAL' -1.E-10 ;
  87. YL1 = YL1 + C1 + C2 ;
  88. FINSI ;
  89. * COORDONNEES CYLINDRIQUES RAY1 TETA1 (1.E-30 POUR EVITER ERREUR ATG 0 0)
  90. TETA1 = ATG YL1 (XL1 + 1.E-30) ;
  91. RAY1 = (((XL1*XL1) + (YL1*YL1))**0.5) + 1.E-10 ;
  92. M1 = ELTETA ELEM 'APPU' 'LARG' P_SUP ;
  93. M2 = ELTETA ELEM 'APPU' 'LARG' P_INF ;
  94. VA1 = XTY (MANU 'CHPO' M1 1 'SCAL' 1.)
  95. (REDU YL1 M1) MTS1 MTS1 ;
  96. VA2 = XTY (MANU 'CHPO' M2 1 'SCAL' 1.)
  97. (REDU YL1 M2) MTS1 MTS1 ;
  98. * ON INVERSE AFIN D'AVOIR YL1 > 0 POUR MODSUP ET < 0 POUR MODINF
  99. SI ((VA1 < 0.) ET (VA2 > 0.)) ;
  100. PPPP = P_SUP ; P_SUP = P_INF ; P_INF = PPPP ;
  101. MMDD = MODSUP ; MODSUP = MODINF ; MODINF = MMDD ;
  102. FINSI ;
  103. SI ((EGA XP1 XP2 1.E-10) ET (EGA YP1 YP2 1.E-10)) ;
  104. TETA_S = REDU TETA1 SUPTAB.'LEVRE_SUPERIEURE' ;
  105. TETA_F = REDU TETA1 SUPTAB.'LEVRE_INFERIEURE' ;
  106. TETA1 = TETA1 - TETA_S - TETA_F ;
  107. * ON SE DEBROUILLE POUR AVOIR EXACTEMENT +/-180 SUR LEVRE SUP/INF
  108. SI ((VA1 > 0.) ET (VA2 < 0.)) ;
  109. TETA1 = TETA1 + ((TETA_S*0.) + 180.) + ((TETA_F*0.) - 180.) ;
  110. SINON ;
  111. TETA1 = TETA1 + ((TETA_F*0.) + 180.) + ((TETA_S*0.) - 180.) ;
  112. FINSI ;
  113. FINSI ;
  114. * VALEUR EN RADIAN
  115. TETA1RAD = TETA1*PI/180. ;
  116. SI BOOL.'DANS' ;
  117. M1 = EXTR MODSUP 'MAIL' ;
  118. M2 = EXTR MODINF 'MAIL' ;
  119. L1 = (CONT M1) ELEM 'APPU' (CONT M2) ;
  120. M1 = M1 ELEM 'APPU' 'STRI' ELTETA ;
  121. M2 = M2 ELEM 'APPU' 'STRI' ELTETA ;
  122. PM1 = (CHAN M1 'POI1') DIFF (CHAN L1 'POI1') ;
  123. PM2 = (CHAN M2 'POI1') DIFF (CHAN L1 'POI1') ;
  124. FINSI ;
  125. SI BOOL.'TRAC' ;
  126. TRAC RAY1 ELTETA 'TITR' 'RAY1' ;
  127. TRAC TETA1 ELTETA 'TITR' 'TETA1' (PROG -180. PAS 20. 180.) ;
  128. FINSI ;
  129. * CAS 3D
  130. SINON ;
  131. MESS 'ON NE FAIT PAS ICI LE PASSAGE LOCAL GLOBAL EN 3D ...?' ;
  132. MESS 'ET ON NE CALULE PAS RAY1 TETA1 NON PLUS?' ;
  133. FINSI ;
  134. SINON ;
  135. * CAS XFEM
  136. SI (EGA GDIME 2) ;
  137. * CAS 2D
  138. * ON RECUPERE LES LEVEL SET
  139. PSI1 = REDU SUPTAB.'PSI' ELTETA ;
  140. PHI1 = REDU SUPTAB.'PHI' ELTETA ;
  141. LV7 = (PSI1 NOMC 'UX') ET (PHI1 NOMC 'UY') ;
  142. GLV7 = CHAN (GRAD LV7 MOD_MEC_R) 'TYPE' 'SCALAIRE' ;
  143. * CE REPERE EST IL DIRECT? (SI OUI/NON, SDIR1=+/-1)
  144. GLV7PO = CHAN 'CHPO' MOD_MEC_R GLV7 'MOYE' ;
  145. XDIR1 = ((EXCO GLV7PO 'UX,X' 'SCAL') * (EXCO GLV7PO 'UY,Y'))
  146. - ((EXCO GLV7PO 'UX,Y' 'SCAL') * (EXCO GLV7PO 'UY,X')) ;
  147. XDIR1 = MAXI (RESU XDIR1) ;
  148. SDIR1 = SIGN XDIR1 ;
  149. * ANGLE ALPHA1 DE PASSAGE LOCAL -> GLOBAL
  150. NGPSI1 = ( ((EXCO GLV7 'UX,X' 'SCAL')**2)
  151. + ((EXCO GLV7 'UX,Y' 'SCAL')**2) )**(-0.5) ;
  152. NGPHI1 = ( ((EXCO GLV7 'UY,X' 'SCAL')**2)
  153. + ((EXCO GLV7 'UY,Y' 'SCAL')**2) )**(-0.5) ;
  154. COS1A = 0.5 * ( ( (EXCO GLV7 'UX,X' 'SCAL') * NGPSI1)
  155. + (SDIR1 * ( (EXCO GLV7 'UY,Y' 'SCAL') * NGPHI1)) ) ;
  156. SIN1A = 0.5 * ( ( (EXCO GLV7 'UX,Y' 'SCAL') * NGPSI1)
  157. - (SDIR1 * ( (EXCO GLV7 'UY,X' 'SCAL') * NGPHI1)) ) ;
  158. ALPHA1 = (MASQ SIN1A 'EGSUPE' 0.) * (ACOS COS1A) ;
  159. COSA2 = COS1A ** 2 ;
  160. SINA2 = SIN1A ** 2 ;
  161. SINCOSA = SIN1A * COS1A ;
  162. * REPERE LOCAL DE LA FISSURE
  163. XL1 = (NOMC PSI1 'SCAL') CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  164. YL1 = (SDIR1 * (NOMC PHI1 'SCAL')) CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  165. * COORDONNEES CYLINDRIQUES RAY1 TETA1
  166. TETA1 = CHAN (ATG YL1 (XL1 + 1.E-30)) 'TYPE' 'SCALAIRE' ;
  167. RAY1 = ((XL1**2) + (YL1**2))**0.5 ;
  168. RAY1 = CHAN RAY1 'TYPE' 'SCALAIRE' ;
  169. SINON ;
  170. * CAS 3D
  171. MESS 'DECOUPLAGE 3D XFEM EN COURS DE DVPT...' ;
  172. * ON RECUPERE LES LEVEL SET
  173. PSI1 = REDU SUPTAB.'PSI' ELTETA ;
  174. PHI1 = REDU SUPTAB.'PHI' ELTETA ;
  175. LV7 = (PSI1 NOMC 'UX') ET (PHI1 NOMC 'UY')
  176. ET (MANU 'CHPO' ELTETA 1 'UZ ' 0. 'NATURE' 'DIFFUS') ;
  177. GLV7 = CHAN (GRAD LV7 MOD_MEC_R) 'TYPE' 'SCALAIRE' ;
  178. SDIR1 = 1. ;
  179. * CREATION DE LA MATRICE DE ROTATION
  180. ROT1= (EXCO V1 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,X' 'UY,X' 'UZ,X'))
  181. ET (EXCO V2 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,Y' 'UY,Y' 'UZ,Y'))
  182. ET (EXCO V3 (MOTS 'UX' 'UY' 'UZ') (MOTS 'UX,Z' 'UY,Z' 'UZ,Z')) ;
  183. ROT1 = EXCO ROT1
  184. (MOTS UX,X UX,Y UX,Z UY,X UY,Y UY,Z UZ,X UZ,Y UZ,Z) ;
  185. ROT1 = CHAN 'CHAM' ROT1 MOD_MEC_R 'STRESSES' 'GRADIENT' ;
  186. * REPERE LOCAL DE LA FISSURE
  187. XL1 = (NOMC PSI1 'SCAL') CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  188. YL1 = (NOMC PHI1 'SCAL') CHAN 'CHAM' MOD_MEC_R 'STRESSES' ;
  189. * Coordonnees cylindriques RAY1 TETA1
  190. TETA1 = CHAN (ATG YL1 (XL1 + 1.D-30)) 'TYPE' 'SCALAIRE' ;
  191. RAY1 = ((XL1**2) + (YL1**2))**0.5 ;
  192. RAY1 = CHAN RAY1 'TYPE' 'SCALAIRE' ;
  193. FINSI ;
  194. FINSI ;
  195.  
  196.  
  197.  
  198. *******************************************************************************
  199. ****************************** ETAPE 2 ****************************************
  200. *******************************************************************************
  201.  
  202. NBMIXT = 2 ;
  203. SI (EGA GDIME 3) ;
  204. NBMIXT = 3 ;
  205. FINSI ;
  206.  
  207. **** CONSTANTES MATERIAUX **************************
  208. CHAM1 = (EXCO 'YOUN' MAT_INST) ET (EXCO 'NU ' MAT_INST) ;
  209. SI (NON BOOL.'DANS') ;
  210. * CAS D UN MATERIAU HOMOGENE
  211. * on construit les champ auxilaires d'une solution d'un materiau
  212. * homogene => on prend les valeurs de E et nu en pointe de fissure
  213. CHPO1 = CHAN 'CHPO' MOD_MEC_R CHAM1 ;
  214. SI BOOL.'XFEM' ;
  215. CHPO1 = INT_COMP ELTETA CHPO1 (MANU 'POI1' PM) ;
  216. FINSI ;
  217. SI (EGA (TYPE PM) 'MAILLAGE') ;
  218. VYO_1 = (MAXI (RESU (EXCO CHPO1 'YOUN'))) / (NBNO PM) ;
  219. VNU_1 = (MAXI (RESU (EXCO CHPO1 'NU '))) / (NBNO PM) ;
  220. SINON ;
  221. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  222. VNU_1 = EXTR CHPO1 'NU ' PM ;
  223. FINSI ;
  224. * Constante de Kolosov
  225. SI (EGA GMODE 'PLANCONT') ;
  226. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  227. SINON ;
  228. KAP_1 = (3. - (4. * VNU_1)) ;
  229. FINSI ;
  230. * Module de cisaillement
  231. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  232. * Constante C_MATE (= 1 / E^etoile)
  233. SI (EGA GMODE 'PLANCONT') ;
  234. C_MATE = 1. / VYO_1 ;
  235. SINON ;
  236. C_MATE = (1. - (VNU_1*VNU_1)) / VYO_1 ;
  237. FINSI ;
  238. SINON ;
  239. * CAS D UN BI-MATERIAU
  240. CHPO1 = CHAN 'CHPO' MODSUP (REDU CHAM1 MODSUP) ;
  241. VYO_1 = EXTR CHPO1 'YOUN' PM ;
  242. VNU_1 = EXTR CHPO1 'NU ' PM ;
  243. CHPO1 = CHAN 'CHPO' MODINF (REDU CHAM1 MODINF) ;
  244. VYO_2 = EXTR CHPO1 'YOUN' PM ;
  245. VNU_2 = EXTR CHPO1 'NU ' PM ;
  246. SI BOOL.'MESS' ;
  247. MESS ' MAT_INST MAT2' ;
  248. MESS VYO_1 VYO_2 ;
  249. MESS VNU_1 VNU_2 ;
  250. FINSI ;
  251. * Constante de Kolosov
  252. SI (EGA GMODE 'PLANCONT') ;
  253. KAP_1 = (3. - VNU_1) / (1. + VNU_1) ;
  254. KAP_2 = (3. - VNU_2) / (1. + VNU_2) ;
  255. SINON ;
  256. KAP_1 = (3. - (4. * VNU_1)) ;
  257. KAP_2 = (3. - (4. * VNU_2)) ;
  258. FINSI ;
  259. * Module de cisaillement
  260. MU_1 = VYO_1 / (2.*(1. + VNU_1)) ;
  261. MU_2 = VYO_2 / (2.*(1. + VNU_2)) ;
  262. * Constante bi-metallique EPS1
  263. VA1 = (KAP_1/MU_1) + (1./MU_2) ;
  264. VA2 = (KAP_2/MU_2) + (1./MU_1) ;
  265. EPS1 = (1./(2.*PI)) * (LOG (VA1/VA2)) ;
  266. * Constante C_MATE (= 1 / E^etoile)
  267. COSH1 = PI * EPS1 ;
  268. COSH1 = ((EXP COSH1) + (EXP (COSH1*(-1.)))) / 2. ;
  269. VA1 = (MU_1 + (KAP_1*MU_2)) * (MU_2 + (KAP_2*MU_1)) ;
  270. VA2 = MU_1 * MU_2 * ((MU_1*(1. + KAP_2)) + (MU_2*(1. + KAP_1))) ;
  271. C_MATE = (COSH1*COSH1*VA1) / (4.*VA2) ;
  272. MESS 'EPS1=' EPS1 ' C_MATE=' C_MATE ;
  273. FINSI ;
  274. * rappel: G = C_MATE * (K1^2 + K2^2) + 1/MU * K3^2
  275. * M = 2*C_MATE * (K1*K1^aux + K2*K2^aux) + 2/MU * K3*K3^aux
  276.  
  277. * on evite le cas 3d + EF standard
  278. SI (NON ((EGA GDIME 3) ET (NON BOOL.'XFEM'))) ;
  279.  
  280. **** CHAMPS POUR SIMPLIFIER L ECRITURE ************
  281. * (CHPOINT pour EF std // CHAMELEM si XFEM)
  282. SI (NON BOOL.'DANS') ;
  283. * CAS D UN MATERIAU HOMOGENE
  284. SIN1T = SIN TETA1 ; COS1T = COS TETA1 ;
  285. SIN05T = SIN (0.5*TETA1) ; COS05T = COS (0.5*TETA1) ;
  286. SI BOOL.'XFEM' ;
  287. RM05 = (2.*PI*RAY1) ** -0.5 ;
  288. COE_GU = RM05 / (4. * MU_1) ;
  289. SIN15T = SIN (1.5*TETA1) ; COS15T = COS (1.5*TETA1) ;
  290. * KAP_1 = KAP_1 * UN1 ;
  291. SINON ;
  292. COE_1 = ((RAY1/(2.*PI))**0.5) / (2.*MU_1) ;
  293. FINSI ;
  294. SINON ;
  295. * CAS D UN BI-MATERIAU
  296. EPSLGR = EPS1 * (LOG RAY1) ;
  297. VA1 = COS (EPSLGR*180./PI) ;
  298. VA2 = SIN (EPSLGR*180./PI) ;
  299. BTA1 = ((0.5*VA1) + (EPS1*VA2)) / (0.25 + (EPS1*EPS1)) ;
  300. BTAPM1 = ((0.5*VA2) - (EPS1*VA1)) / (0.25 + (EPS1*EPS1)) ;
  301. DTA_1 = EXP (0. - ((PI - TETA1RAD)*EPS1)) ;
  302. DTA_2 = EXP ((PI + TETA1RAD)*EPS1) ;
  303. GAM_1 = (KAP_1*DTA_1) - (DTA_1**(-1.)) ;
  304. GAM_2 = (KAP_2*DTA_2) - (DTA_2**(-1.)) ;
  305. GAMPM_1 = (KAP_1*DTA_1) + (DTA_1**(-1.)) ;
  306. GAMPM_2 = (KAP_2*DTA_2) + (DTA_2**(-1.)) ;
  307. COS05T = COS (TETA1/2.) ; SIN05T = SIN (TETA1/2.) ;
  308. D_1 = (BTA1*GAM_1*COS05T) + (BTAPM1*GAMPM_1*SIN05T) ;
  309. D_2 = (BTA1*GAM_2*COS05T) + (BTAPM1*GAMPM_2*SIN05T) ;
  310. DPM_1 = (BTAPM1*GAM_1*COS05T) - (BTA1*GAMPM_1*SIN05T) ;
  311. DPM_2 = (BTAPM1*GAM_2*COS05T) - (BTA1*GAMPM_2*SIN05T) ;
  312. GTAR1 = EPSLGR + (0.5*TETA1RAD) ;
  313. CVA_1 = (SIN TETA1) * (SIN (GTAR1*180./PI)) ;
  314. CVA_2 = (SIN TETA1) * (COS (GTAR1*180./PI)) ;
  315. COE_1 = ((RAY1/(2.*PI))**0.5) / (4.*MU_1) ;
  316. COE_2 = ((RAY1/(2.*PI))**0.5) / (4.*MU_2) ;
  317. FINSI ;
  318. FINSI ;
  319.  
  320.  
  321. *******************************************************************************
  322. ****************************** ETAPE 3 ****************************************
  323. *******************************************************************************
  324.  
  325. REPE IMOD GDIME ;
  326.  
  327. ****************************************************
  328. **** CHAMPS AUXILIAIRES SI DECOUPLAGE **************
  329. * Il existe plusieurs manieres de creer les champs aux :
  330. * 1. en utilisant l expression analytique de grad(U) et sigma
  331. * 2. en utilisant l expression analytique de U et en calculant
  332. * sigma, Fint=Bsigma, grad(U) ...
  333. * 3. en appliquant une pression/cisaillement sur les faces de la fissure
  334. * et en resolvant le pb associe
  335. * On utilise la 1ere lorsqu'on peut, la 2eme SINON
  336.  
  337. **** MOTMIX et MOTMIA **************************
  338. SI (&IMOD EGA 1) ; MOTMIX = MOT 'I' ; MOTMIA = MOT ' I' ; FINSI ;
  339. SI (&IMOD EGA 2) ; MOTMIX = MOT 'II' ; MOTMIA = MOT ' II' ; FINSI ;
  340. SI (&IMOD EGA 3) ; MOTMIX = MOT 'III' ;MOTMIA = MOT 'III' ; FINSI ;
  341. MESS 'CHAMPS AUXILIAIRES mode' ' ' MOTMIA ;
  342.  
  343.  
  344. **** METHODE ANALYTIQUE PURE *******************
  345.  
  346. *CAS D UN MATERIAU HOMOGENE 2D et 3D --------------------
  347. SI (BOOL.'XFEM' ET (NON BOOL.'DANS')) ;
  348. SI BOOL.'MESS' ;
  349. MESS 'MATERIAU HOMOGENE XFEM: METHODE ANALYTIQUE' ;
  350. FINSI ;
  351.  
  352. * DERIVEES REPERE CYLINDRIQUE / COORDONNEES GLOBALES
  353. * R,X = DRDX R,Y = DRDY
  354. * T,X = (1/R)*DTDX T,Y = (1/R)*DTDY
  355. DRDX = (COS1T*(EXCO GLV7 'UX,X' 'SCAL'))
  356. + (SDIR1*SIN1T*(EXCO GLV7 'UY,X' 'SCAL')) ;
  357. DRDY = (COS1T*(EXCO GLV7 'UX,Y' 'SCAL'))
  358. + (SDIR1*SIN1T*(EXCO GLV7 'UY,Y' 'SCAL')) ;
  359. DTDX = (-1.*SIN1T*(EXCO GLV7 'UX,X' 'SCAL'))
  360. + (SDIR1*COS1T*(EXCO GLV7 'UY,X' 'SCAL')) ;
  361. DTDY = (-1.*SIN1T*(EXCO GLV7 'UX,Y' 'SCAL'))
  362. + (SDIR1*COS1T*(EXCO GLV7 'UY,Y' 'SCAL')) ;
  363. SI (EGA GDIME 3) ;
  364. DRDZ = (COS1T*(EXCO GLV7 'UX,Z' 'SCAL'))
  365. + (SDIR1*SIN1T*(EXCO GLV7 'UY,Z' 'SCAL')) ;
  366. DTDZ = (-1.*SIN1T*(EXCO GLV7 'UX,Z' 'SCAL'))
  367. + (SDIR1*COS1T*(EXCO GLV7 'UY,Z' 'SCAL')) ;
  368. FINSI ;
  369.  
  370. *debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  371. *ajout des solutions analytiques du saut sur les levres de la fissure
  372. *projection de psi1 sur la fissure et calcul de psi,x
  373. SI BOOL.'FROT' ;
  374.  
  375. * PSI en CHAML aux PG sur la fissure utilise pour calcul du gradient
  376. * on selectionne la partie de psi2 non nulle (= dans le champ theta)
  377. SI (EGA GDIME 2) ;
  378. * contour du domaine theta
  379. CON1 = 'CONTOUR' ELTETA ;
  380. * maillage support pour l'integration
  381. MAI1 = 'INCLUSION' MAICON CON1 'STRI' ;
  382. * OBJCON2 = MODE mai1 'MECANIQUE' 'ZCO2' ;
  383. OBJCON2 = REDU OBJCON mai1 ;
  384. SINON ;
  385. * maillage support pour l'integration
  386. MAI1 = 'INCLUSION' ('EXTRAIRE' OBJCON 'MAIL') ELTETA 'VOLU' 'STRI' ;
  387. * OBJCON2 = 'MODELISER' mai1 'MECANIQUE' 'ZCO3' ;
  388. OBJCON2 = REDU OBJCON mai1 ;
  389. FINSI ;
  390. PSI1E = CHAN 'CHAM' PSI1 MOD_MEC_R 'NOEUDS' ;
  391. PSI2 = PROI OBJCON2 PSI1E 'STRESSES' ;
  392. * PSI en CHPOINT sur la fissure utilise pour calcul du repere local
  393. PSI3 = PROI MAICON PSI1E ;
  394. TESPSI = PSI2 'MASQUE' 'INFERIEUR'(-1E-15) ;
  395. * PSI2B = 'CHANGER' 'CHAM' (TESPSI * (-1.*PSI2) ('MOTS' 'PSI') ('MOTS'
  396. * ('MOTS' 'PSI')) OBJCON 'STRESSES' ;
  397. PSI2B = TESPSI * (-1.*PSI2) ('MOTS' 'PSI') ('MOTS' 'PSI') ('MOTS' 'PSI') ;
  398. * 'MESSAGE' ' PSI2B = ' ; 'LISTE' PSI2B ;
  399. * terme sqrt(r/2pI) et sa derivee,r
  400. RM05B = ((PSI2B/(2.*PI)) **0.5) ;
  401. RM05BR = 0.5*((2.*PI*PSI2B)**-0.5) ;
  402. * Change le nom pour pouvoir calculer grad avec ZCO
  403. LV72 = (PSI3 NOMC 'AX')
  404. ET (MANU 'CHPO' ('EXTRAIRE' OBJCON2 'MAIL')
  405. 1 'AY ' 0. 'NATURE' 'DIFFUS')
  406. ET (MANU 'CHPO' ('EXTRAIRE' OBJCON2 'MAIL')
  407. 1 'AZ ' 0. 'NATURE' 'DIFFUS') ;
  408. GLV72 = 'CHANGER' (GRAD LV72 OBJCON2) 'TYPE' 'SCALAIRE' ;
  409. * 'MESSAGE' ' GLV72 =' ;'LISTE' GLV72 ;
  410. SI (GDIME 'EGA' 2) ;
  411. * Angle ALPHA1 de passage local -> global
  412. NGPSI2 = ( ((EXCO GLV72 'AX,X' 'SCAL')**2)
  413. + ((EXCO GLV72 'AX,Y' 'SCAL')**2) )**(0.5) ;
  414. COS1AB = ( (EXCO GLV72 'AX,Y' 'SCAL') / NGPSI2) ;
  415. SIN1AB = ( (EXCO GLV72 'AX,X' 'SCAL') / NGPSI2) ;
  416. SINON ;
  417. * Angle ALPHA1 de passage local -> global
  418. NGPSI2 = ( ((EXCO GLV72 'AX,X' 'SCAL')**2)
  419. + ((EXCO GLV72 'AX,Y' 'SCAL')**2)
  420. + ((EXCO GLV72 'AX,Z' 'SCAL')**2) )**(0.5) ;
  421. * CHAM premiere tangente = grad de psi
  422. V12X = (NOMC 'UX' ((EXCO GLV72 'AX,X' 'SCAL') / NGPSI2)) ;
  423. V12Y = (NOMC 'UY' ((EXCO GLV72 'AX,Y' 'SCAL') / NGPSI2)) ;
  424. V12Z = (NOMC 'UZ' ((EXCO GLV72 'AX,Z' 'SCAL') / NGPSI2)) ;
  425. V12 = V12X 'ET' V12Y 'ET' V12Z ;
  426. * CHAM des normales
  427. V22 = VSUR OBJCON2 'NORM' ;
  428. V22X = EXCO 'VX' V22 ;
  429. V22Y = EXCO 'VY' V22 ;
  430. V22Z = EXCO 'VZ' V22 ;
  431. * CHAM de la derniere tangente produit vect des 2 autres
  432. V32X1 = NOMC 'UX' (V12Y * V22Z ('MOTS' 'UY') ('MOTS' 'VZ')
  433. ('MOTS' 'UX')) ;
  434. V32X2 = NOMC 'UX'(V12Z * V22Y ('MOTS' 'UZ') ('MOTS' 'VY')
  435. ('MOTS' 'UX')) ;
  436. V32X = V32X1 '-' V32X2 ;
  437. V32Y1 = NOMC 'UY' (V12Z * V22X ('MOTS' 'UZ') ('MOTS' 'VX')
  438. ('MOTS' 'UY')) ;
  439. V32Y2 = NOMC 'UY'(V12X * V22Z ('MOTS' 'UX') ('MOTS' 'VZ')
  440. ('MOTS' 'UY')) ;
  441. V32Y = V32Y1 '-' V32Y2 ;
  442. V32Z1 = NOMC 'UZ' (V12X * V22Y ('MOTS' 'UX') ('MOTS' 'VY')
  443. ('MOTS' 'UZ')) ;
  444. V32Z2 = NOMC 'UZ'(V12Y * V22X ('MOTS' 'UY') ('MOTS' 'VX')
  445. ('MOTS' 'UZ')) ;
  446. V32Z = V32Z1 '-' V32Z2 ;
  447. V32 = V32X 'ET' V32Y 'ET' V32Z ;
  448. ROT2 = (EXCO V12 (MOTS 'UX' 'UY' 'UZ') (MOTS 'AX,X' 'AY,X' 'AZ,X'))
  449. ET (EXCO V22 (MOTS 'VX' 'VY' 'VZ') (MOTS 'AX,Y' 'AY,Y' 'AZ,Y'))
  450. ET (EXCO V32 (MOTS 'UX' 'UY' 'UZ')
  451. (MOTS 'AX,Z' 'AY,Z' 'AZ,Z')) ;
  452. FINSI ;
  453.  
  454. * r,x (r = -PSI sur la fissure)
  455. DRDX2 = (EXCO GLV72 'AX,X' 'SCAL') ;
  456. DRDY2 = (EXCO GLV72 'AX,Y' 'SCAL') ;
  457. SI (EGA GDIME 3) ;
  458. DRDZ2 = (EXCO GLV72 'AX,Z' 'SCAL') ;
  459. FINSI ;
  460.  
  461. FINSI ;
  462. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  463.  
  464. * CHAMP AUX. MODE 1
  465. SI (&IMOD EGA 1) ;
  466. * derivees elementaires / repere local
  467. * Ui,R = (1/4µ)*RM05*UiR i=1,2
  468. * Ui,T = (1/4µ)*RM05*UiT i=1,2
  469. U1R = ((KAP_1 - 0.5) * COS05T) - (0.5 * COS15T) ;
  470. U1T = ((0.5 - KAP_1) * SIN05T) + (1.5 * SIN15T) ;
  471. U2R = ((KAP_1 + 0.5) * SIN05T) - (0.5 * SIN15T) ;
  472. U2T = ((KAP_1 + 0.5) * COS05T) - (1.5 * COS15T) ;
  473. * contraintes dans le repere local
  474. * SIGij ij={11,22,33,12}
  475. SIG11 = RM05 * ( COS05T * (1.D0 - (SIN05T*SIN15T)) ) ;
  476. SIG22 = RM05 * ( COS05T * (1.D0 + (SIN05T*SIN15T)) ) ;
  477. SIG33 = ZER1 ;
  478. SIG12 = RM05 * ( COS05T * (SIN05T * COS15T) ) ;
  479. * gradient de deplacement dans le repere local
  480. * COE_GU = (1/4µ)*RM05
  481. * U1,X U1,Y U2,X U2,Y
  482. GU1X = COE_GU * ( ( U1R * DRDX ) + ( U1T * DTDX ) ) ;
  483. GU1Y = COE_GU * ( ( U1R * DRDY ) + ( U1T * DTDY ) ) ;
  484. GU2X = COE_GU * ( ( U2R * DRDX ) + ( U2T * DTDX ) ) ;
  485. GU2Y = COE_GU * ( ( U2R * DRDY ) + ( U2T * DTDY ) ) ;
  486. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  487. * saut en ouverture
  488. SI BOOL.'FROT' ;
  489. W2 = 8.*RM05B *C_MATE ;
  490. W2R = (8*C_MATE * RM05BR) ;
  491. W2R = NOMC W2R 'SCAL' ;
  492. * GRADIENT SAUT OUVERTURE MIS A 0 CAR ON NE VEUT PAS MODIFIER KI EN PRESE
  493. W2X = 0.*W2R*DRDX2 ;
  494. W2Y = 0.*W2R*DRDY2 ;
  495. W1X = 0.*W2X ; W1Y = W1X ;
  496. W3X = 0.*W2X ; W3Y = W3X ;
  497. FINSI ;
  498. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  499. SI (EGA GDIME 3) ;
  500. GU1Z = COE_GU * ( ( U1R * DRDZ ) + ( U1T * DTDZ ) ) ;
  501. GU2Z = COE_GU * ( ( U2R * DRDZ ) + ( U2T * DTDZ ) ) ;
  502. SIG13 = ZER1 ; SIG23 = ZER1 ;
  503. GU3X = ZER1 ; GU3Y = ZER1 ; GU3Z = ZER1 ;
  504. SI BOOL.'FROT' ;
  505. W2Z = 0.*W2R*DRDZ2 ;
  506. W1Z = W1X ;W3Z = W3X ;
  507. FINSI ;
  508. FINSI ;
  509. FINSI ;
  510.  
  511. * CHAMP AUX. MODE 2
  512. SI (&IMOD EGA 2) ;
  513. * derivees elementaires / repere local
  514. * Ui,R = (1/4µ)*RM05*UiR i=1,2
  515. * Ui,T = (1/4µ)*RM05*UiT i=1,2
  516. U1R = ((KAP_1 + 1.5) * SIN05T) + (0.5 * SIN15T) ;
  517. U1T = ((KAP_1 + 1.5) * COS05T) + (1.5 * COS15T) ;
  518. U2R = ((1.5 - KAP_1) * COS05T) - (0.5 * COS15T) ;
  519. U2T = ((KAP_1 - 1.5) * SIN05T) + (1.5 * SIN15T) ;
  520. * contraintes dans le repere local
  521. * SIGij ij={11,22,33,12}
  522. SIG11 = -1.*RM05 * ( SIN05T * (2.D0 + (COS05T*COS15T)) ) ;
  523. SIG22 = RM05 * ( SIN05T * (COS05T*COS15T) ) ;
  524. SIG33 = ZER1 ;
  525. SIG12 = RM05 * ( COS05T * (1.D0 - (SIN05T * SIN15T)) ) ;
  526. * gradient de deplacement dans le repere local
  527. * COE_GU = (1/4µ)*RM05
  528. * U1,X U1,Y U2,X U2,Y
  529. GU1X = COE_GU * ( ( U1R * DRDX ) + ( U1T * DTDX ) ) ;
  530. GU1Y = COE_GU * ( ( U1R * DRDY ) + ( U1T * DTDY ) ) ;
  531. GU2X = COE_GU * ( ( U2R * DRDX ) + ( U2T * DTDX ) ) ;
  532. GU2Y = COE_GU * ( ( U2R * DRDY ) + ( U2T * DTDY ) ) ;
  533.  
  534.  
  535. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  536. * saut cisaillement
  537. SI BOOL.'FROT' ;
  538. W1 = 8.*RM05B *C_MATE ;
  539. * W1,R
  540. * W1R = ('CHANGER' 'CHAM' (8*C_MATE * RM05BR) OBJCON'STRESSES') ;
  541. * ON DIVISE PAR 2 CAR ON SAUT DEFINI COMME PLUS - MOYENNE ET PAS (LEVRE +
  542. W1R = (8.*C_MATE * RM05BR) / 2. ;
  543. W1R = NOMC W1R 'SCAL' ;
  544. * GRADIENT SAUT CISAILLEMENT = W1,R R,X
  545. W1X = W1R*DRDX2 ;
  546. W1Y = W1R*DRDY2 ;
  547. W2X = 0.*W1X ; W2Y = 0.*W2X ;
  548. W3X = 0.*W1X ; W3Y = 0.*W3X ;
  549. FINSI ;
  550. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  551.  
  552. SI (EGA GDIME 3) ;
  553. GU1Z = COE_GU * ( ( U1R * DRDZ ) + ( U1T * DTDZ ) ) ;
  554. GU2Z = COE_GU * ( ( U2R * DRDZ ) + ( U2T * DTDZ ) ) ;
  555. SIG13 = ZER1 ; SIG23 = ZER1 ;
  556. GU3X = ZER1 ; GU3Y = ZER1 ; GU3Z = ZER1 ;
  557. SI BOOL.'FROT' ;
  558. W1Z = W1R*DRDZ2 ;
  559. W2Z = 0.*W2X ;W3Z = 0.*W3X ;
  560. FINSI ;
  561. FINSI ;
  562. FINSI ;
  563.  
  564. * CHAMP AUX. MODE 3 (automatiquement on a : EGA GDIME 3)
  565. SI (&IMOD EGA 3) ;
  566. * derivees elementaires / repere local
  567. * Ui,R = (1/4µ)*RM05*UiR i=3
  568. * Ui,T = (1/4µ)*RM05*UiT i=3
  569. U3R = SIN05T ;
  570. U3T = COS05T ;
  571. * contraintes dans le repere local
  572. * SIGij ij={11,22,33,12}
  573. SIG11 = ZER1 ;
  574. SIG22 = ZER1 ;
  575. SIG33 = ZER1 ;
  576. SIG12 = ZER1 ;
  577. SIG13 = -1.*RM05 * SIN05T ;
  578. SIG23 = RM05 * COS05T ;
  579. * gradient de deplacement dans le repere local
  580. * COE_GU = (1/4µ)*RM05
  581. * U1,X U1,Y U2,X U2,Y
  582. GU1X = ZER1 ; GU1Y = ZER1 ; GU1Z = ZER1 ;
  583. GU2X = ZER1 ; GU2Y = ZER1 ; GU2Z = ZER1 ;
  584. GU3X = COE_GU * ( ( U3R * DRDX ) + ( U3T * DTDX ) ) ;
  585. GU3Y = COE_GU * ( ( U3R * DRDY ) + ( U3T * DTDY ) ) ;
  586. GU3Z = COE_GU * ( ( U3R * DRDZ ) + ( U3T * DTDZ ) ) ;
  587.  
  588. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  589. * saut cisaillement antiplan
  590. SI BOOL.'FROT' ;
  591. W3 = 8.*RM05B *C_MATE/ (1. - VNU_1) ;
  592. * w3,r
  593. * W3R = ('CHANGER' 'CHAM' (8*C_MATE * RM05BR/(1. - VNU_1))
  594. * OBJCON 'STRESSES') ;
  595. * On divise par 2 car on saut defini comme plus - moyenne et pas (levre +
  596. W3R = (8*C_MATE * RM05BR/(1. - VNU_1)) / 2. ;
  597. W3R = NOMC W3R 'SCAL' ;
  598. * gradient saut cisaillement antiplan = W3,r r,X
  599. W3X = W3R*DRDX2 ;
  600. W3Y = W3R*DRDY2 ;
  601. W3Z = W3R*DRDZ2 ;
  602. W1X = 0.*W3X ; W1Y = 0.*W1X ; W1Z = 0.*W1X ;
  603. W2X = 0.*W3X ; W2Y = 0.*W2X ; W2Z = 0.*W2X ;
  604. FINSI ;
  605. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  606.  
  607. FINSI ;
  608.  
  609. * PASSAGE DANS LE REPERE GLOBAL
  610. SI (EGA GDIME 2) ;
  611. * ... des contraintes
  612. * SIGIJ = [P] * SIGij * [P]**-1 local: ij={1,2..} global: IJ={X,Y..}
  613. SIGXX= (COSA2*SIG11) - (2.*SINCOSA*SIG12) + (SINA2*SIG22) ;
  614. SIGYY= (SINA2*SIG11) + (2.*SINCOSA*SIG12) + (COSA2*SIG22) ;
  615. SIGZZ= SIG33 ;
  616. SIGXY= (SINCOSA*SIG11) + ((COSA2-SINA2)*SIG12) - (SINCOSA*SIG22) ;
  617. SIGAUX = (NOMC 'SMXX' SIGXX) ET (NOMC 'SMYY' SIGYY)
  618. ET (NOMC 'SMZZ' SIGZZ) ET (NOMC 'SMXY' SIGXY) ;
  619. SIGAUX = CHAN SIGAUX 'TYPE' 'CONTRAINTES' ;
  620. * TRAC SIGAUX MOD_MEC_R 'TITR' ' SIGAUX' ;
  621. * ... des gradient de deplacement
  622. * UI,J = [P] * Ui,j local: ij={1,2..} global: IJ={X,Y..}
  623. GRUXX = (GU1X*COS1A) - (GU2X*SIN1A) ;
  624. GRUXY = (GU1Y*COS1A) - (GU2Y*SIN1A) ;
  625. GRUYX = (GU1X*SIN1A) + (GU2X*COS1A) ;
  626. GRUYY = (GU1Y*SIN1A) + (GU2Y*COS1A) ;
  627. GRUAUX = (NOMC 'UX,X' GRUXX) ET (NOMC 'UX,Y' GRUXY)
  628. ET (NOMC 'UX,Z' ZER1)
  629. ET (NOMC 'UY,X' GRUYX) ET (NOMC 'UY,Y' GRUYY)
  630. ET (NOMC 'UY,Z' ZER1)
  631. ET (NOMC 'UZ,X' ZER1) ET (NOMC 'UZ,Y' ZER1)
  632. ET (NOMC 'UZ,Z' ZER1) ;
  633. GRUAUX = CHAN GRUAUX 'TYPE' 'GRADIENT' ;
  634. * TRAC GRUAUX MOD_MEC_R 'TITR' ' GRUAUX' ;
  635. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  636. SI BOOL.'FROT' ;
  637. * ... des gradient de deplacement sur la fissure
  638. * UI,J = [P] * Ui,j local: ij={1,2..} global: IJ={X,Y..}
  639. GRWXX = (W1X*COS1AB) - (W2X*SIN1AB) ;
  640. GRWXY = (W1Y*COS1AB) - (W2Y*SIN1AB) ;
  641. GRWYX = (W1X*SIN1AB) + (W2X*COS1AB) ;
  642. GRWYY = (W1Y*SIN1AB) + (W2Y*COS1AB) ;
  643. GRWAUX = (NOMC 'AX,X' GRWXX) ET (NOMC 'AX,Y' GRWXY)
  644. ET (NOMC 'AX,Z' ZER1)
  645. ET (NOMC 'AY,X' GRWYX) ET (NOMC 'AY,Y' GRWYY)
  646. ET (NOMC 'AY,Z' ZER1)
  647. ET (NOMC 'AZ,X' ZER1) ET (NOMC 'AZ,Y' ZER1)
  648. ET (NOMC 'AZ,Z' ZER1) ;
  649. GRWAUX = CHAN GRWAUX 'TYPE' 'GRADIENT' ;
  650. FINSI ;
  651. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  652.  
  653. SINON ;
  654. SIGAUX = (NOMC 'SMXX' SIG11) ET (NOMC 'SMYY' SIG22)
  655. ET (NOMC 'SMZZ' SIG33) ET (NOMC 'SMXY' SIG12)
  656. ET (NOMC 'SMXZ' SIG13) ET (NOMC 'SMYZ' SIG23) ;
  657. SIGAUX = CHAN SIGAUX 'TYPE' 'CONTRAINTES' ;
  658. * SUPTAB . (chai 'SIGAUX_LOCAL' IM) = SIGAUX ;
  659. SIGAUX = RTEN SIGAUX MOD_MEC_R ROT1 'RART' ;
  660. * SUPTAB . (chai 'SIGAUX_GLOBAL' IM) = SIGAUX ;
  661. GUIJ = (NOMC GU1X 'U1,X') ET (NOMC GU1Y 'U1,Y') ET (NOMC GU1Z 'U1,Z')
  662. ET (NOMC GU2X 'U2,X') ET (NOMC GU2Y 'U2,Y') ET (NOMC GU2Z 'U2,Z')
  663. ET (NOMC GU3X 'U3,X') ET (NOMC GU3Y 'U3,Y') ET (NOMC GU3Z 'U3,Z') ;
  664.  
  665. GRUXX = PSCA ROT1 GUIJ
  666. (MOTS 'UX,X' 'UX,Y' 'UX,Z') (MOTS 'U1,X' 'U2,X' 'U3,X') ;
  667. GRUYX = PSCA ROT1 GUIJ
  668. (MOTS 'UY,X' 'UY,Y' 'UY,Z') (MOTS 'U1,X' 'U2,X' 'U3,X') ;
  669. GRUZX = PSCA ROT1 GUIJ
  670. (MOTS 'UZ,X' 'UZ,Y' 'UZ,Z') (MOTS 'U1,X' 'U2,X' 'U3,X') ;
  671. GRUXY = PSCA ROT1 GUIJ
  672. (MOTS 'UX,X' 'UX,Y' 'UX,Z') (MOTS 'U1,Y' 'U2,Y' 'U3,Y') ;
  673. GRUYY = PSCA ROT1 GUIJ
  674. (MOTS 'UY,X' 'UY,Y' 'UY,Z') (MOTS 'U1,Y' 'U2,Y' 'U3,Y') ;
  675. GRUZY = PSCA ROT1 GUIJ
  676. (MOTS 'UZ,X' 'UZ,Y' 'UZ,Z') (MOTS 'U1,Y' 'U2,Y' 'U3,Y') ;
  677. GRUXZ = PSCA ROT1 GUIJ
  678. (MOTS 'UX,X' 'UX,Y' 'UX,Z') (MOTS 'U1,Z' 'U2,Z' 'U3,Z') ;
  679. GRUYZ = PSCA ROT1 GUIJ
  680. (MOTS 'UY,X' 'UY,Y' 'UY,Z') (MOTS 'U1,Z' 'U2,Z' 'U3,Z') ;
  681. GRUZZ = PSCA ROT1 GUIJ
  682. (MOTS 'UZ,X' 'UZ,Y' 'UZ,Z') (MOTS 'U1,Z' 'U2,Z' 'U3,Z') ;
  683.  
  684. GRUAUX = (NOMC 'UX,X' GRUXX) ET (NOMC 'UX,Y' GRUXY)
  685. ET (NOMC 'UX,Z' GRUXZ)
  686. ET (NOMC 'UY,X' GRUYX) ET (NOMC 'UY,Y' GRUYY)
  687. ET (NOMC 'UY,Z' GRUYZ)
  688. ET (NOMC 'UZ,X' GRUZX) ET (NOMC 'UZ,Y' GRUZY)
  689. ET (NOMC 'UZ,Z' GRUZZ) ;
  690. GRUAUX = CHAN GRUAUX 'TYPE' 'GRADIENT' ;
  691. * debut du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  692. SI BOOL.'FROT' ;
  693. GWIJ = (NOMC W1X 'A1,X') ET (NOMC W1Y 'A1,Y') ET (NOMC W1Z 'A1,Z')
  694. ET (NOMC W2X 'A2,X') ET (NOMC W2Y 'A2,Y') ET (NOMC W2Z 'A2,Z')
  695. ET (NOMC W3X 'A3,X') ET (NOMC W3Y 'A3,Y') ET (NOMC W3Z 'A3,Z') ;
  696. GRWXX = PSCA ROT2 GWIJ
  697. (MOTS 'AX,X' 'AX,Y' 'AX,Z') (MOTS 'A1,X' 'A2,X' 'A3,X') ;
  698. GRWYX = PSCA ROT2 GWIJ
  699. (MOTS 'AY,X' 'AY,Y' 'AY,Z') (MOTS 'A1,X' 'A2,X' 'A3,X') ;
  700. GRWZX = PSCA ROT2 GWIJ
  701. (MOTS 'AZ,X' 'AZ,Y' 'AZ,Z') (MOTS 'A1,X' 'A2,X' 'A3,X') ;
  702. GRWXY = PSCA ROT2 GWIJ
  703. (MOTS 'AX,X' 'AX,Y' 'AX,Z') (MOTS 'A1,Y' 'A2,Y' 'A3,Y') ;
  704. GRWYY = PSCA ROT2 GWIJ
  705. (MOTS 'AY,X' 'AY,Y' 'AY,Z') (MOTS 'A1,Y' 'A2,Y' 'A3,Y') ;
  706. GRWZY = PSCA ROT2 GWIJ
  707. (MOTS 'AZ,X' 'AZ,Y' 'AZ,Z') (MOTS 'A1,Y' 'A2,Y' 'A3,Y') ;
  708. GRWXZ = PSCA ROT2 GWIJ
  709. (MOTS 'AX,X' 'AX,Y' 'AX,Z') (MOTS 'A1,Z' 'A2,Z' 'A3,Z') ;
  710. GRWYZ = PSCA ROT2 GWIJ
  711. (MOTS 'AY,X' 'AY,Y' 'AY,Z') (MOTS 'A1,Z' 'A2,Z' 'A3,Z') ;
  712. GRWZZ = PSCA ROT2 GWIJ
  713. (MOTS 'AZ,X' 'AZ,Y' 'AZ,Z') (MOTS 'A1,Z' 'A2,Z' 'A3,Z') ;
  714. GRWAUX = (NOMC 'AX,X' GRWXX) ET (NOMC 'AX,Y' GRWXY)
  715. ET (NOMC 'AX,Z' GRWXZ)
  716. ET (NOMC 'AY,X' GRWYX) ET (NOMC 'AY,Y' GRWYY)
  717. ET (NOMC 'AY,Z' GRWYZ)
  718. ET (NOMC 'AZ,X' GRWZX) ET (NOMC 'AZ,Y' GRWZY)
  719. ET (NOMC 'AZ,Z' GRWZZ) ;
  720. GRWAUX = CHAN GRWAUX 'TYPE' 'GRADIENT' ;
  721. FINSI ;
  722. * fin du cas contact frottant BOOL.'FROT' (btrolle 19/02/2013)
  723. FINSI ;
  724. * champs auxiliaires
  725. A_DEPI = DEP000 ;
  726. A_DEPGR= GRUAUX ;
  727. A_SIGF = SIGAUX ;
  728. A_PREI = FOR000 ;
  729. SI BOOL.'FROT' ; B_DEPGR = GRWAUX ; FINSI ;
  730. FINSI ;
  731.  
  732.  
  733. **** METHODE U-ANALYTIQUE **************************
  734.  
  735. SI ((NON BOOL.'XFEM') ET (EGA GDIME 2) ET (NON BOOL.'DANS')) ;
  736. * CAS D UN MATERIAU HOMOGENE 2D --------------------
  737. SI(BOOL.'MESS') ;
  738. MESS 'MATERIAU HOMOGENE 2D: METHODE U-ANALYTIQUE' ;
  739. FINSI ;
  740. * champ aux. mode 1
  741. SI (&IMOD EGA 1) ;
  742. UX_1 = COE_1 * COS05T * (KAP_1 - COS1T) ;
  743. UY_1 = COE_1 * SIN05T * (KAP_1 - COS1T) ;
  744. FINSI ;
  745. * champ aux. mode 2
  746. SI (&IMOD EGA 2) ;
  747. UX_1 = COE_1 * SIN05T * (KAP_1 + 2. + COS1T) ;
  748. UY_1 = (-1.)*COE_1 * COS05T * (KAP_1 - 2. + COS1T) ;
  749. FINSI ;
  750. * deplacement dans le repere local
  751. UL1 = CHAN 'ATTRIBUT' UX_1 'NATURE' 'DIFFUS' ;
  752. UL2 = CHAN 'ATTRIBUT' UY_1 'NATURE' 'DIFFUS' ;
  753. * retour du repere local vers le global
  754. UG1 = (UL1*(COS ALPHA1)) - (UL2*(SIN ALPHA1)) ;
  755. UG2 = (UL1*(SIN ALPHA1)) + (UL2*(COS ALPHA1)) ;
  756. UG1 = CHAN 'ATTRIBUT' UG1 'NATURE' 'DIFFUS' ;
  757. UG2 = CHAN 'ATTRIBUT' UG2 'NATURE' 'DIFFUS' ;
  758. * champs auxiliaires
  759. A_DEPI = ((NOMC UG1 MU1) ET (NOMC UG2 MU2)) + DEP000 ;
  760. A_SIGF = SIGM 'LINE' MAT_INST MOD_MEC_R A_DEPI ;
  761. A_PREI = BSIG A_SIGF MOD_MEC_R ;
  762. FINSI ;
  763.  
  764. SI ((EGA GDIME 2) ET (BOOL.'DANS')) ;
  765. * CAS D UN BI-MATERIAU 2D --------------------
  766. SI(BOOL.'MESS') ;
  767. MESS 'BI-MATERIAU 2D: METHODE ANALYTIQUE' ;
  768. FINSI ;
  769. * champ aux. mode 1
  770. SI (&IMOD EGA 1) ;
  771. UX_1 = COE_1*(D_1 + (2.*DTA_1*CVA_1)) ;
  772. UX_2 = COE_2*(D_2 + (2.*DTA_2*CVA_1)) ;
  773. UY_1 = (-1.)*COE_1*(DPM_1 + (2.*DTA_1*CVA_2)) ;
  774. UY_2 = (-1.)*COE_2*(DPM_2 + (2.*DTA_2*CVA_2)) ;
  775. FINSI ;
  776. * champ aux. mode 2
  777. SI (&IMOD EGA 2) ;
  778. UX_1 = (-1.)*COE_1*(DPM_1 - (2.*DTA_1*CVA_2)) ;
  779. UX_2 = (-1.)*COE_2*(DPM_2 - (2.*DTA_2*CVA_2)) ;
  780. UY_1 = (-1.)*COE_1*(D_1 - (2.*DTA_1*CVA_1)) ;
  781. UY_2 = (-1.)*COE_2*(D_2 - (2.*DTA_2*CVA_1)) ;
  782. FINSI ;
  783. * deplacement dans le repere local : on moyenne sur l interface
  784. UX_1 = CHAN 'ATTRIBUT' UX_1 'NATURE' 'DIFFUS' ;
  785. UX_2 = CHAN 'ATTRIBUT' UX_2 'NATURE' 'DIFFUS' ;
  786. UY_1 = CHAN 'ATTRIBUT' UY_1 'NATURE' 'DIFFUS' ;
  787. UY_2 = CHAN 'ATTRIBUT' UY_2 'NATURE' 'DIFFUS' ;
  788. UL1 = UX_1 ET UX_2 ;
  789. UL2 = UY_1 ET UY_2 ;
  790. * retour du repere local vers le global
  791. UG1 = (UL1*(COS ALPHA1)) - (UL2*(SIN ALPHA1)) ;
  792. UG2 = (UL1*(SIN ALPHA1)) + (UL2*(COS ALPHA1)) ;
  793. UG1 = CHAN 'ATTRIBUT' UG1 'NATURE' 'DIFFUS' ;
  794. UG2 = CHAN 'ATTRIBUT' UG2 'NATURE' 'DIFFUS' ;
  795. * champs auxiliaires
  796. A_DEPI = ((NOMC UG1 MU1) ET (NOMC UG2 MU2)) + DEP000 ;
  797. A_SIGF = SIGM 'LINE' MAT_INST MOD_MEC_R A_DEPI ;
  798. A_PREI = BSIG A_SIGF MOD_MEC_R ;
  799. FINSI ;
  800.  
  801.  
  802. **** METHODE MECANIQUE **************************
  803. *** (EFFORTS APPLIQUES AUX LEVRES DE LA FISSURE)
  804. * BP : cette methode est tres couteuse car appel a resou pour chaque
  805. * noeud du front de fissure -> passer a une methode analytique + tard
  806.  
  807. SI ((NON BOOL.'XFEM') ET (EGA GDIME 3) ET (NON BOOL.'DANS')) ;
  808. *CAS D UN MATERIAU HOMOGENE 3D --------------------
  809. MESS 'MATERIAU HOMOGENE 3D: METHODE MECANIQUE' ;
  810. LSUP = SUPTAB.'LEVRE_SUPERIEURE' ;
  811. LINF = SUPTAB.'LEVRE_INFERIEURE' ;
  812. VCISA = RESU DIR3 ;
  813. VCISA = (MAXI (EXCO VCISA 'UX')) (MAXI (EXCO VCISA 'UY'))
  814. (MAXI (EXCO VCISA 'UZ')) ;
  815. VTETA = RESU DIR1 ;
  816. VTETA = (MAXI (EXCO VTETA 'UX')) (MAXI (EXCO VTETA 'UY'))
  817. (MAXI (EXCO VTETA 'UZ')) ;
  818. VNORM = RESU DIR2 ;
  819. VNORM = (MAXI (EXCO VNORM 'UX')) (MAXI (EXCO VNORM 'UY'))
  820. (MAXI (EXCO VNORM 'UZ')) ;
  821. SI (EGA GDIME 3) ;
  822. LSUP = LSUP DIFF (LSUP ELEM 'APPU' 'STRI' ELTETA) ;
  823. LINF = LINF DIFF (LINF ELEM 'APPU' 'STRI' ELTETA) ;
  824. FINSI ;
  825. * bp: pas bien compris sur quelle partie de LSUP on applique les efforts ?
  826. SI BOOL.'PASAPAS' ;
  827. F11=PRES 'MASS' (SUPTAB.'SOLUTION_PASAPAS'.'MODELE') LSUP 1 ;
  828. F21=PRES 'MASS' (SUPTAB.'SOLUTION_PASAPAS'.'MODELE') LINF 1 ;
  829. SINON ;
  830. F11 = PRES 'MASS' (SUPTAB.'MODELE') LSUP 1 ;
  831. F21 = PRES 'MASS' (SUPTAB.'MODELE') LINF 1 ;
  832. FINSI ;
  833. * champ de pression aux. mode 1
  834. SI (&IMOD EGA 1) ;
  835. A_PREI = F11 + F21 ;
  836. FINSI ;
  837. * champ de pression aux. mode 2
  838. SI (&IMOD EGA 2) ;
  839. V1 = EXCO (F11 + F21) MF1 'SCAL' ;
  840. V2 = EXCO (F11 + F21) MF2 'SCAL' ;
  841. V3 = EXCO (F11 + F21) MF3 'SCAL' ;
  842. N1 = ((V1 * V1) + (V2 * V2) + (V3 * V3)) ** 0.5 ;
  843. * adaptation car DIR1 est desormais un CHPOINT
  844. V1 = COOR 1 VTETA ;
  845. V2 = COOR 2 VTETA ;
  846. V3 = COOR 3 VTETA ;
  847. A_PREI = (MANU 'CHPO' LSUP 3 MF1 V1 MF2 V2 MF3 V3) -
  848. (MANU 'CHPO' LINF 3 MF1 V1 MF2 V2 MF3 V3) ;
  849. * adaptation car DIR1 est desormais un CHPOINT
  850. * A_PREI = EXCO DIR1 UCOMP FCOMP ;
  851. * A_PREI = (REDU A_PREI LSUP) - (REDU A_PREI LINF) ;
  852. A_PREI = A_PREI * N1 ;
  853. FINSI ;
  854. * champ de pression aux. mode 3
  855. SI (&IMOD EGA 3) ;
  856. V1 = EXCO (F11 + F21) MF1 'SCAL' ;
  857. V2 = EXCO (F11 + F21) MF2 'SCAL' ;
  858. V3 = EXCO (F11 + F21) MF3 'SCAL' ;
  859. N1 = ((V1 * V1) + (V2 * V2) + (V3 * V3)) ** 0.5 ;
  860. * adaptation car DIR3 est desormais un CHPOINT
  861. V1 = COOR 1 VCISA ;
  862. V2 = COOR 2 VCISA ;
  863. V3 = COOR 3 VCISA ;
  864. A_PREI = (MANU 'CHPO' LSUP 3 MF1 V1 MF2 V2 MF3 V3) -
  865. (MANU 'CHPO' LINF 3 MF1 V1 MF2 V2 MF3 V3) ;
  866. * adaptation car DIR3 est desormais un CHPOINT
  867. A_PREI = A_PREI * N1 ;
  868. FINSI ;
  869. * le deplacement et les contraintes sont deduites de la pression
  870. * trac (vect A_PREI 'FORC' 'ROUG') elteta ;
  871. A_DEPI = RESO (RIGTOT ET CL1) A_PREI ;
  872. A_SIGF = SIGM 'LINE' MAT_INST MOD_MEC_R A_DEPI ;
  873. FINSI ;
  874.  
  875. SI ((EGA GDIME 3) ET (BOOL.'DANS')) ;
  876. * CAS D UN BI-MATERIAU 3D --------------------
  877. MESS 'ERREUR : ON NE PEUT ENCORE DECOUPLER LES MODES' ;
  878. MESS ' DANS LE CAS DES MATERIAUX COMPOSITES' ;
  879. MESS ' EN 3D' ;
  880. ERRE 21 ; QUIT G_AUX ;
  881. FINSI ;
  882.  
  883. * STOCKAGE DES CHAMPS AUX
  884. TAB1 = TABL ;
  885. TAB1.'MOTMIX' = MOTMIX ;
  886. TAB1.'MOTMIA' = MOTMIA ;
  887. TAB1.'A_PREI' = A_PREI ;
  888. TAB1.'A_DEPI' = A_DEPI ;
  889. TAB1.'A_SIGF' = A_SIGF ;
  890. TAB1.'A_DEPGR' = A_DEPGR ;
  891. CH_AUX.&IMOD = TAB1 ;
  892.  
  893. * OBJETS UTILES A GARDER
  894. OBJUTI.'C_MATE' = C_MATE ;
  895. SI BOOL.'FROT' ;
  896. OBJUTI.'OBJCON2' = OBJCON2 ;
  897. OBJUTI .'B_DEPGR' = B_DEPGR ;
  898. FINSI ;
  899.  
  900. FIN IMOD ;
  901.  
  902. FINP CH_AUX ;
  903.  
  904.  

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