Télécharger g_aux.procedur

Retour à la liste

Numérotation des lignes :

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

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