Télécharger g_aux.procedur

Retour à la liste

Numérotation des lignes :

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

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