Télécharger varihcsu.procedur

Retour à la liste

Numérotation des lignes :

  1. * VARIHCSU PROCEDUR BR232186 16/12/05 22:04:41 9238
  2. ****************************************************
  3. * Procedure de tracking par resolution d'un probleme
  4. * de convection-diffusion thermique stationnaire
  5. * Application au modele E-FEM
  6. * Version :
  7. * Variable online global tracking
  8. * Creation :
  9. * Francesco RICCARDI 22/08/2016
  10. * Benjamin RICHARD
  11. * Contact :
  12. * Francesco.Riccardi[at]cea.fr
  13. * Benjamin.Richard[at]cea.fr
  14. * Institution :
  15. * CEA\DEN\DANS\DM2S\SEMT\EMSI
  16. ****************************************************
  17. * Voir notice TRACKING pour plus d'informations
  18. ****************************************************
  19. *
  20. *******----DEBUT Procedure VARIHCSU----*******
  21. *
  22. DEBP VARIHCSU TAB2*'TABLE';
  23.  
  24.  
  25. * Indice d'evolution
  26. NPAS = dime tab2. deplacements;
  27. NPAS = NPAS - 1;
  28. *LIST NPAS;
  29.  
  30. * Modeles
  31. MODEL1 = TAB2. 'MODELE';
  32. MODELS = EXTR MODEL1 'ZONE';
  33.  
  34. * Modele et materiau EFEM
  35. MODEL11 = MODELS. 1;
  36. SURFACE1 = MODELS. 2;
  37. MATr1 = TAB2. 'WTABLE'. 'CARACTERISTIQUES';
  38. MATr11 = REDU MATr1 SURFACE1;
  39. E11 = EXCO MATr11 YOUN;
  40. NU11 = EXCO MATr11 NU;
  41. P11 = EXCO MATr11 FT;
  42. P12 = EXCO MATR11 XNX;
  43. P13 = EXCO MATR11 XNY;
  44. P14 = EXCO MATr11 IND1;
  45. P15 = EXCO MATR11 XIE;
  46. P16 = EXCO MATR11 YIE;
  47.  
  48. * Coordonnees de la geometrie
  49. X0 = COOR 1 SURFACE1;
  50. Y0 = COOR 2 SURFACE1;
  51. X0S = CHAN 'CHAM' X0 MODEL11 'STRESSES';
  52. X0S = CHAN 'TYPE' X0S 'CONTRAINTES PRINCIPALES';
  53. X0S = CHAN 'COMP' 'SI11' X0S;
  54. Y0S = CHAN 'CHAM' Y0 MODEL11 'STRESSES';
  55. Y0S = CHAN 'TYPE' Y0S 'CONTRAINTES PRINCIPALES';
  56. Y0S = CHAN 'COMP' 'SI11' Y0S;
  57.  
  58. * Nombre de root elements
  59. NROOTS = TAB2. 'NROOTS';
  60. *LIST NROOTS;
  61.  
  62. * Nombre maximum de fissures
  63. MAXR = TAB2. 'NRMAX';
  64.  
  65. * Variables internes : NFLA
  66. FLAG = EXCO (TAB2. 'VARIABLES_INTERNES'. NPAS) 'NFLA';
  67. *TRAC FLAG MODEL11;
  68. VFLAG = MAXI FLAG;
  69. ELACT1 = FLAG ELEM 'EGALE' 1.;
  70.  
  71. * Variables internes : diffusion artificielle DIFART
  72. DIFART = EXCO (TAB2. 'VARIABLES_INTERNES'. NPAS) 'DIFF';
  73.  
  74. * Maximum des contraintes principales
  75. SIG1 = TAB2. 'CONTINUATION'. 'CONTRAINTES';
  76. PRIN1 = PRIN SIG1 MODEL11;
  77. SIGMA11 = EXCO 'SI11' PRIN1;
  78. COS1X = NOMC 'SI11' (EXCO PRIN1 'COX1');
  79. COS1Y = NOMC 'SI11' (EXCO PRIN1 'COY1');
  80. SIGMAX = MAXI SIGMA11;
  81.  
  82. *
  83. *----- Debut algorithme de tracking ---------------------------
  84. *
  85. SI ((SIGMAX > 0.) ET (NPAS < (TAB2. 'NPAS_TRACKING')));
  86.  
  87.  
  88. * Elements qui violent le critere de resistance
  89. ***dans la phase elastique lineaire VFLAG=0***
  90. SI (VFLAG EGA 0.);
  91. ELSP11 = SIGMA11 ELEM 'MAXI';
  92. SINON;
  93. MESH0 = TAB2. 'MESH'. (NPAS - 1);
  94. SURFRED = SURFACE1 DIFF MESH0;
  95. SIGRED = REDU SIGMA11 SURFRED;
  96. ***pour assurer que les points test n'appartiennent pas a MESH0***
  97. ***cela peut se passer si on a des bloccages***
  98. ELSP11 = SIGRED ELEM 'EGSUPE' (MAXI P11);
  99. FINSI;
  100. NTEST = NBEL ELSP11;
  101. SI (NTEST > 0);
  102. SP11 = REDU SIGMA11 ELSP11;
  103. FINSI;
  104.  
  105. TABISO0 = TABLE;
  106. TABROOT = TABLE;
  107. TABEROOT = TABLE;
  108. SI (VFLAG EGA 0);
  109. TABEROOT. 1 = SIGMA11 ELEM 'MAXI';
  110. TABROOT. 1 = BARY (TABEROOT. 1);
  111. SI (NROOTS EGA 1);
  112. TABROOT. 1 = TAB2. 'PROOTS'. 1;
  113. TABEROOT. 1 = TAB2. 'EROOTS'. 1;
  114. FINSI;
  115. SINON;
  116. i = 0;
  117. ***NROOTS est surement >0***
  118. REPETER BOUCLE1 NROOTS;
  119. indice = i * 4;
  120. LXIN0 = TAB2. 'TABISO'. (indice + 1);
  121. LYIN0 = TAB2. 'TABISO'. (indice + 2);
  122. LXOUT0 = TAB2. 'TABISO'. (indice + 3);
  123. LYOUT0 = TAB2. 'TABISO'. (indice + 4);
  124. MESH0 = TAB2. 'MESH_ISO'. (i + 1);
  125. * Nombre de points qui composent la fissure
  126. DIMM0 = DIME LXIN0;
  127. ***si tous les elements sont actives on touche rien***
  128. FLAGISO = REDU FLAG MESH0;
  129. MESHACT = FLAGISO ELEM 'SUPERIEUR' 0.;
  130. NACT = NBEL MESHACT;
  131. SI ((NACT > 0) ET (NACT < DIMM0));
  132. SI ((NACT + 1) EGA DIMM0);
  133. LISTEN0 = DIMM0;
  134. SINON;
  135. LISTEN0 = ENTI (PROG (NACT + 1) PAS 1 DIMM0);
  136. FINSI;
  137. * Partie activee de la fissure
  138. LXIN0 = ENLE LXIN0 LISTEN0;
  139. LYIN0 = ENLE LYIN0 LISTEN0;
  140. LXOUT0 = ENLE LXOUT0 LISTEN0;
  141. LYOUT0 = ENLE LYOUT0 LISTEN0;
  142. FINSI;
  143. LXG0 = (LXIN0 + LXOUT0) / 2.;
  144. LYG0 = (LYIN0 + LYOUT0) / 2.;
  145. TABROOT. (i + 1) = TAB2. 'PROOTS'. (i + 1);
  146. TABEROOT. (i + 1) = TAB2. 'EROOTS'. (i + 1);
  147. ***le point root est le point output du dernier element active***
  148. ***si NACT=0 il coincide avec celui du pas precedent***
  149. SI (NACT > 0);
  150. TABROOT. (i + 1) = (EXTR LXOUT0 NACT) (EXTR LYOUT0 NACT);
  151. TABEROOT. (i + 1) = MESH0 ELEM 'CONTENANT'
  152. ((EXTR LXG0 NACT) (EXTR LYG0 NACT));
  153. FINSI;
  154. TABISO0. (indice + 1) = LXIN0;
  155. TABISO0. (indice + 2) = LYIN0;
  156. TABISO0. (indice + 3) = LXOUT0;
  157. TABISO0. (indice + 4) = LYOUT0;
  158. i = i + 1;
  159. FIN BOUCLE1;
  160. FINSI;
  161.  
  162. SI (NTEST > 0);
  163. * Points root potentiels ordonnes par contrainte decroissante
  164. TABTEST = TABLE;
  165. i = 0;
  166. REPETER BOUCLE2 NTEST;
  167. i = i + 1;
  168. STEST = EXTR SP11 'SI11' 1 i 1;
  169. SI (i EGA 1);
  170. LSP11 = PROG STEST;
  171. LPTEST = PROG i;
  172. SINON;
  173. LSP11 = LSP11 ET (PROG STEST);
  174. LPTEST = LPTEST ET (PROG i);
  175. FINSI;
  176. FIN BOUCLE2;
  177. TABTEST. 1 = LPTEST;
  178. TABTEST. 2 = LSP11;
  179. TABTEST = ORDO TABTEST 2 'DECR';
  180. FINSI;
  181.  
  182. *
  183. *\\\\ Resolution du probleme de convection-diffusion ////*
  184. *
  185. * Cosinus des tangentes
  186. COS2X = EXCO PRIN1 'COX2';
  187. COS2Y = EXCO PRIN1 'COY2';
  188. COS2Z = EXCO PRIN1 'COZ2';
  189.  
  190. * Champ vectoriel des tangentes
  191. *SIGMA22 = MANU 'CHML' MODEL11 'SI22' 1. 'TYPE'
  192. *'CONTRAINTES PRINCIPALES' 'STRESSES';
  193. *PRIN12 = (SIGMA22 ET COS2X ET COS2Y ET COS2Z);
  194. *VECTAN = VECT PRIN12 MODEL11 0.001 'SI22';
  195.  
  196. * Modele de Navier-Stokes
  197. MS1 = CHAN 'QUAF' SURFACE1;
  198. ELIM MS1 1.E-6;
  199. * Champ de vitesse
  200. UXX = COS2X;
  201. UYY = COS2Y;
  202. CHPO1 = CHAN 'CHPO' MODEL11 UXX;
  203. CHPO1 = NOMC 'SCAL' CHPO1;
  204. CHPO2 = CHAN 'CHPO' MODEL11 UYY;
  205. CHPO2 = NOMC 'SCAL' CHPO2;
  206. CHPON = ((CHPO1 ** 2) + (CHPO2 ** 2)) ** 0.5;
  207. CHPO1 = NOMC 'UX' (CHPO1 / CHPON);
  208. CHPO2 = NOMC 'UY' (CHPO2 / CHPON);
  209. CHO = KCHT $MS1 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY')
  210. (CHPO1 ET CHPO2);
  211. VVV = VECT CHO 0.001;
  212. * Conditions aux limites thermiques
  213. LCL1 = TAB1. 'LBC';
  214. MCL1 = CHAN 'QUAF' LCL1;
  215. LCL1 = DOMA $MCL1 'MAILLAGE';
  216. VALCL1 = TAB2. 'BCSTH';
  217. VALCL1 = KCHT $MCL1 'SCAL' 'SOMMET' VALCL1;
  218. * Diffusion artificielle
  219. *DIFART = 1.E-9;
  220. DIFART = KCHA $MS1 DIFART 'CHPO';
  221.  
  222. * Table de resolution
  223. RV = EQEX 'NITER' 1 'OMEGA' 1.
  224. 'OPTI' 'EF' 'IMPL' 'CENTRE'
  225. 'ZONE' $MS1 'OPER' 'KONV' 1. 'UN' 'ALF' 'INCO' 'TN'
  226. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  227. 'ZONE' $MS1 'OPER' 'LAPN' 'ALF' 'INCO' 'TN'
  228. 'CLIM' LCL1 'TN' 'TIMP' VALCL1;
  229.  
  230. RV . 'INCO' = TABLE 'INCO';
  231. RV . 'INCO' . 'UN' = CHO;
  232. *RV . 'INCO' . 'ALF' = KCHT $MS1 'SCAL' 'CENTRE' DIFART;
  233. RV . 'INCO' . 'ALF' = DIFART;
  234. RV . 'INCO' . 'TN' = KCHT $MS1 'SCAL' 'SOMMET' 0.;
  235. * Resolution
  236. EXEC RV;
  237.  
  238. RESF = RV. 'INCO'. 'TN';
  239. T0 = CHAN 'CHAM' RESF MODEL11 'NOEUD';
  240. T0 = NOMC 'T' T0;
  241. TAB2. 'RESTH'. NPAS = RESF;
  242.  
  243. *
  244. *\\\\ Extraction des isovaleurs ////*
  245. *
  246. SI (NROOTS EGA MAXR);
  247. NTEST = 0;
  248. FINSI;
  249. TISOPAS = TABLE;
  250. TABMESH1 = TABLE;
  251. MESH1 = VIDE 'MAILLAGE';
  252. ***on choisit un point du domaine en faisant l'hypothese***
  253. ***que aucune fissure passe par ceci***
  254. P0 = MANU 'POI1' ((X0 * Y0) POIN 'MINI');
  255. i = 0;
  256. REPETER BOUCLE3 (NROOTS + NTEST);
  257. i = i + 1;
  258. * Fissure activees aux pas precedents
  259. SI (i &lt;EG NROOTS);
  260. PPA = TABROOT. i;
  261. MPPA = MANU 'POI1' PPA;
  262. T0P = PROI T0 MPPA;
  263. TG = EXTR T0P 'T' PPA;
  264. ISOVG = ISOV T0 TG;
  265. * TRAC (ISOVG ET (CONT SURFACE1));
  266. ***cette phase est critique***
  267. ***si on perd l'unicite de la solution ORDO ne marche pas***
  268. ***arreter la procedure de tracking***
  269. ISOVG = ORDO ISOVG;
  270. T0G = MANU 'CHML' MODEL11 'T' TG 'NOEUD';
  271. T01 = T0 - T0G;
  272. T02 = T01 MASQ 'SUPERIEUR' 0.;
  273. MAILA = T02 ELEM 'EGALE' 1.;
  274. MAILB = T02 ELEM 'EGALE' 0.;
  275. MESHISO = SURFACE1 DIFF (MAILA ET MAILB);
  276. * Extraction du maillage
  277. MM1 = (CHAN 'POI1' MESHISO) ET P0;
  278. MMT = (CHAN 'POI1' MESH1) ET P0;
  279. CHECK = MMT INTE MM1;
  280. SI ((NBEL CHECK) > 1);
  281. ISOVG = TAB2. 'ISOTEST'. i;
  282. FINSI;
  283. MESH1 = MESH1 ET MESHISO;
  284. TISOPAS. i = ISOVG;
  285. TABMESH1. i = MESHISO;
  286. TAB2. 'ISOTEST'. i = ISOVG;
  287. * Nouvelles fissures
  288. ***on fait l'hypothese d'avoir une seule nouvelle fissure***
  289. ***par pas de temps***
  290. SINON;
  291. iTEST = ENTI (EXTR (TABTEST. 1) (i - NROOTS));
  292. ETEST = ELSP11 ELEM iTEST;
  293. PPP = BARY ETEST;
  294. MPPP = MANU 'POI1' PPP;
  295. T0P = PROI T0 MPPP;
  296. TG = EXTR T0P 'T' PPP;
  297. ISOVG = ISOV T0 TG;
  298. * Extraction du maillage
  299. T0G = MANU 'CHML' MODEL11 'T' TG 'NOEUD';
  300. T01 = T0 - T0G;
  301. T02 = T01 MASQ 'SUPERIEUR' 0.;
  302. MAILA = T02 ELEM 'EGALE' 1.;
  303. MAILB = T02 ELEM 'EGALE' 0.;
  304. MESHISO = SURFACE1 DIFF (MAILA ET MAILB);
  305. MM1 = (CHAN 'POI1' MESHISO) ET P0;
  306. MMT = (CHAN 'POI1' MESH1) ET P0;
  307. CHECK = MMT INTE MM1;
  308. * On verifie s'il y a des intersection entre maillages
  309. ***dans ce cas la on ecarte l'isovaleur***
  310. SI ((NBEL CHECK) EGA 1);
  311. ISOVG = ORDO ISOVG;
  312. * TRAC (ISOVG ET (CONT SURFACE1));
  313. T0RED = REDU T0 ETEST;
  314. ISOROOT = ISOV T0RED TG;
  315. PROOT = ISOROOT POIN 1;
  316. CHECK1 = SURFACE1 ELEM 'CONTENANT' PROOT 'TOUS';
  317. ***on fait l'hypothese que le root element appartient au contour***
  318. SI ((NBEL CHECK1) > 1);
  319. PROOT = ISOROOT POIN 2;
  320. FINSI;
  321. TABROOT. (NROOTS + 1) = PROOT;
  322. TABEROOT. (NROOTS + 1) = ETEST;
  323. TISOPAS. (NROOTS + 1) = ISOVG;
  324. TAB2. 'ISOTEST'. (NROOTS + 1) = ISOVG;
  325. TABMESH1. (NROOTS + 1) = MESHISO;
  326. TAB2. 'NROOTS' = (TAB2. 'NROOTS') + 1;
  327. QUIT BOUCLE3;
  328. FINSI;
  329. FINSI;
  330. FIN BOUCLE3;
  331. TAB2. 'PROOTS' = TABROOT;
  332. TAB2. 'EROOTS' = TABEROOT;
  333.  
  334. ***cette partie sert a creer un systeme d'abscisses curvilignes***
  335. ***avec sense positif selon celui de propagation des fissures***
  336. ***l'origine est en pointe de fissure***
  337. TABISO1 = TABLE;
  338. NN = DIME TABROOT;
  339. *LIST NN;
  340. i = 0;
  341. REPETER BOUCLE4 NN;
  342. i = i + 1;
  343. indice = (i - 1) * 4;
  344. PROOT = TABROOT. i;
  345. EROOT = TABEROOT. i;
  346. ISOVG = TISOPAS. i;
  347. MESHISO = TABMESH1. i;
  348. NUMEL = (NBNO ISOVG) - 1;
  349. NACT = 0;
  350. SI ((VFLAG > 0.) ET (i &lt;EG NROOTS));
  351. FLAGISO = REDU FLAG (TAB2. 'MESH_ISO'. i);
  352. MESHACT = FLAGISO ELEM 'SUPERIEUR' 0.;
  353. NACT = NBEL MESHACT;
  354. FINSI;
  355. XISOVG = COOR 1 ISOVG;
  356. YISOVG = COOR 2 ISOVG;
  357. EVOLX = EVOL 'CHPO' XISOVG ISOVG;
  358. EVOLY = EVOL 'CHPO' YISOVG ISOVG;
  359. LISX = EXTR EVOLX 'SCAL';
  360. LISY = EXTR EVOLY 'SCAL';
  361. LISABSC = EXTR EVOLX 'ABSC';
  362. NUMP = NBNO ISOVG;
  363. LISP = PROG 1 PAS 1 NUMP;
  364. j = 0;
  365. REPETER B_INT NUMP;
  366. j = j + 1;
  367. Pj = ISOVG POIN j;
  368. SI (Pj EGA PROOT 1.E-10);
  369. jroot = j;
  370. * LIST jroot;
  371. * LIST NUMP;
  372. QUIT B_INT;
  373. FINSI;
  374. FIN B_INT;
  375. SROOT = EXTR LISABSC jroot;
  376. LISABSC1 = LISABSC - ((LISP / LISP) * SROOT);
  377. MM = MAXI LISABSC1;
  378. TABABS = TABLE;
  379. TABABS. 1 = LISABSC1;
  380. TABABS. 2 = LISP;
  381. TABABS. 3 = LISX;
  382. TABABS. 4 = LISY;
  383. SI (NACT EGA 0);
  384. ***si MM=0 il faut changer le signe***
  385. SI ((MM EGA 0.));
  386. TABABS. 1 = -1. * LISABSC1;
  387. TABABS = ORDO TABABS 1 'CROI';
  388. FINSI;
  389. ***le dernier point est un point de sortie***
  390. LXIN = ENLE (TABABS. 3) (DIME LISX);
  391. LYIN = ENLE (TABABS. 4) (DIME LISY);
  392. ***le premier point est un point d'entree***
  393. LXOUT = ENLE (TABABS. 3) 1;
  394. LYOUT = ENLE (TABABS. 4) 1;
  395. TABISO1. (indice + 1) = LXIN;
  396. TABISO1. (indice + 2) = LYIN;
  397. TABISO1. (indice + 3) = LXOUT;
  398. TABISO1. (indice + 4) = LYOUT;
  399. SINON;
  400. TABISO1. (indice + 1) = TABISO0. (indice + 1);
  401. TABISO1. (indice + 2) = TABISO0. (indice + 2);
  402. TABISO1. (indice + 3) = TABISO0. (indice + 3);
  403. TABISO1. (indice + 4) = TABISO0. (indice + 4);
  404. SI (NACT < NUMEL);
  405. ***on cherche le point correspondant a la pointe de fissure***
  406. PTEST = ISOVG POIN (jroot + 1);
  407. TEST = NBEL (EROOT ELEM 'CONTENANT' PTEST 'NOVERIF');
  408. SI (TEST > 0);
  409. TABABS. 1 = -1. * LISABSC1;
  410. jroot = (NUMP - jroot) + 1;
  411. FINSI;
  412. TABABS = ORDO TABABS 1 'CROI';
  413. SI (jroot EGA 2);
  414. LISTEN = 1;
  415. SINON;
  416. LISTEN = ENTI (PROG 1 PAS 1 (jroot - 1));
  417. FINSI;
  418. LISX1 = ENLE (TABABS. 3) LISTEN;
  419. LISY1 = ENLE (TABABS. 4) LISTEN;
  420. * Partie potentielle de la fissure
  421. LXIN1 = ENLE LISX1 (DIME LISX1);
  422. LYIN1 = ENLE LISY1 (DIME LISY1);
  423. LXOUT1 = ENLE LISX1 1;
  424. LYOUT1 = ENLE LISY1 1;
  425. * On integre avec la partie activee
  426. TABISO1. (indice + 1) =
  427. TABISO0. (indice + 1) ET LXIN1;
  428. TABISO1. (indice + 2) =
  429. TABISO0. (indice + 2) ET LYIN1;
  430. TABISO1. (indice + 3) =
  431. TABISO0. (indice + 3) ET LXOUT1;
  432. TABISO1. (indice + 4) =
  433. TABISO0. (indice + 4) ET LYOUT1;
  434. FINSI;
  435. FINSI;
  436. FIN BOUCLE4;
  437. TAB2. 'TABISO' = TABISO1;
  438.  
  439. *
  440. *\\\\ Creation des chamelem ////*
  441. *
  442. ***CHM vaut sur les isovaleurs et 0 ailleurs***
  443. CHM = SIGMA11 * 0.;
  444. * Abscisses des points d'entree des fissures
  445. CHIX = CHM;
  446. * Ordonnees des points d'entree des fissures
  447. CHIY = CHM;
  448. * Composante x des normales
  449. CHNX = CHM;
  450. * Composante y des normales
  451. CHNY = CHM;
  452. TAB2. 'MESH'. NPAS = VIDE 'MAILLAGE';
  453. i = 0;
  454. REPETER BOUCLE5 NN;
  455. i = i + 1;
  456. indice = (i - 1) * 4;
  457. MESHISO = TABMESH1. i;
  458. NACT = 0;
  459. SI ((VFLAG > 0.) ET (i &lt;EG NROOTS));
  460. FLAGISO = REDU FLAG (TAB2. 'MESH_ISO'. i);
  461. MESHACT = FLAGISO ELEM 'SUPERIEUR' 0.;
  462. NACT = NBEL MESHACT;
  463. FINSI;
  464. LXIN = TABISO1. (indice + 1);
  465. LYIN = TABISO1. (indice + 2);
  466. LXOUT = TABISO1. (indice + 3);
  467. LYOUT = TABISO1. (indice + 4);
  468. LXG = (LXIN + LXOUT) / 2.;
  469. LYG = (LYIN + LYOUT) / 2.;
  470. SI (NACT EGA 0);
  471. MTEST = MESHISO;
  472. SINON;
  473. MDIFF = MESHISO DIFF MESHACT;
  474. MTEST = MDIFF ET MESHACT;
  475. FINSI;
  476. j = 0;
  477. REPETER B_INT (DIME LXIN);
  478. j = j + 1;
  479. * Coordonnees des points entree et sortie
  480. XIj = EXTR LXIN j;
  481. YIj = EXTR LYIN j;
  482. XOj = EXTR LXOUT j;
  483. YOj = EXTR LYOUT j;
  484. * Coordonnees des points moyens
  485. XGj = EXTR LXG j;
  486. YGj = EXTR LYG j;
  487. PGj = XGj YGj;
  488. * Calcul de la tangente et de la normale a la fissure
  489. LL = (((XIj - XOj) ** 2) + ((YIj - YOj) ** 2)) ** 0.5;
  490. SI (YIj > YOj);
  491. TY = (YIj - YOj) / LL;
  492. TX = (XIj - XOj) / LL;
  493. SINON;
  494. TY = (YOj - YIj) / LL;
  495. TX = (XOj - XIj) / LL;
  496. FINSI;
  497. SI (YIj EGA YOj);
  498. TY = 0.;
  499. TX = -1.;
  500. FINSI;
  501. NX = TY;
  502. NY = -1. * TX;
  503. * Element contenant le point moyen
  504. ELj = MTEST ELEM 'CONTENANT' PGj;
  505. VALXj = MAXI (REDU X0S ELj);
  506. VALYj = MAXI (REDU Y0S ELj);
  507. * Champ nul sauf dans ELi
  508. CHPX = X0S MASQ 'EGALE' VALXj;
  509. CHPY = Y0S MASQ 'EGALE' VALYj;
  510. CHP = CHPX * CHPY;
  511.  
  512. * Champs par elements pour le model EFEM
  513. CHM = CHM + CHP;
  514. CHIX = CHIX + (CHP * XIj);
  515. CHIY = CHIY + (CHP * YIj);
  516. CHNX = CHNX + (CHP * NX);
  517. CHNY = CHNY + (CHP * NY);
  518.  
  519. * Extraction de la mesh de la fissure potentielle
  520. SI(j EGA 1);
  521. LISO = DROI 1 (XIj YIj) (XOj YOj);
  522. MESHi = ELj;
  523. SINON;
  524. LISO = LISO ET (DROI 1 (XIj YIj) (XOj YOj));
  525. MESHi = MESHi ET ELj;
  526. FINSI;
  527. FIN B_INT;
  528. TAB2. 'ISOTOT'. i = LISO;
  529. TAB2. 'MESH_ISO'. i = MESHi;
  530. TAB2. 'MESH'. NPAS = (TAB2. 'MESH'. NPAS) ET MESHi;
  531.  
  532. FIN BOUCLE5;
  533. *TRAC CHM MODEL11;
  534.  
  535. *
  536. *\\\\ Mise a jour des parametres materiaux ////*
  537. *
  538. MATr2 = MATE MODEL11 YOUN E11 NU NU11 FT P11 XNX CHNX
  539. XNY CHNY IND1 CHM XIE CHIX YIE CHIY;
  540. MATr1 = MATr2;
  541. TAB2. 'WTABLE'. 'CARACTERISTIQUES' = MATR1;
  542.  
  543.  
  544. FINSI;
  545.  
  546.  
  547. FINP MATR1;
  548.  
  549.  
  550.  

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