Télécharger fixhc.procedur

Retour à la liste

Numérotation des lignes :

  1. * FIXHC PROCEDUR MB234859 26/08/27 21:15:06 12630
  2. ****************************************************
  3. * Procedure de tracking par resolution d'un probleme
  4. * de conduction thermique stationnaire
  5. * Application au modele E-FEM
  6. * Version :
  7. * Fixed 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 FIXHC----*******
  21. *
  22. DEBP FIXHC TAB2*'TABLE';
  23.  
  24.  
  25. * Indice d'evolution
  26. nn = dime tab2.deplacements;
  27. nn = nn-1;
  28.  
  29. * Modeles
  30. MODEL1 = TAB2. 'MODELE';
  31. MODELS = EXTR MODEL1 'ZONE';
  32.  
  33. * Modele et materiau EFEM
  34. MODEL11 = MODELS. 1;
  35. SURFACE1 = MODELS. 2;
  36. MATr1 = TAB2. 'WTABLE'. 'CARACTERISTIQUES';
  37. MATr11 = REDU MATr1 SURFACE1;
  38. E11 = EXCO MATr11 YOUN;
  39. NU11 = EXCO MATr11 NU;
  40. P11 = EXCO MATr11 FT;
  41. P12 = EXCO MATR11 XNX;
  42. P13 = EXCO MATR11 XNY;
  43. P14 = EXCO MATr11 IND1;
  44. P15 = EXCO MATR11 XIE;
  45. P16 = EXCO MATR11 YIE;
  46.  
  47. * Resistance en traction
  48. STMAX = MAXI P11;
  49.  
  50. * Coordonnees de la geometrie
  51. X0 = COOR 1 SURFACE1;
  52. Y0 = COOR 2 SURFACE1;
  53.  
  54. * Maximum des contraintes principales
  55. SIG1 = TAB2. 'CONTINUATION'. 'CONTRAINTES';
  56. PRIN1 = PRIN SIG1 MODEL11;
  57. SIGMA11 = EXCO 'SI11' PRIN1;
  58. SIGMAX = MAXI SIGMA11;
  59.  
  60. * Variables internes : NFLA
  61. FLAG = EXCO (TAB2. 'VARIABLES_INTERNES'.NN) 'NFLA';
  62. VFLAG = MAXI FLAG;
  63. *TRAC FLAG MODEL11;
  64.  
  65. * Nombre de root elements
  66. NROOTS = TAB2. 'NROOTS';
  67. *LIST NROOTS;
  68.  
  69. * Nombre maximum de fissures
  70. MAXR = TAB2. 'NRMAX';
  71.  
  72. *
  73. *----- Debut algorithme de tracking ---------------------------
  74. *
  75. * Cas1 : on fixe le nombre de fissures
  76. SI ((SIGMAX > 0) ET (NROOTS < MAXR));
  77. * Cas2 : on fixe le pas de temps
  78. *SI ((SIGMAX > 0) ET (NN < (TAB2. 'NPAS_TRACKING')));
  79. * Cas3 : pas de limitations
  80. *SI (SIGMAX > 0);
  81.  
  82.  
  83. * Points ou la contrainte depasse la resistance en traction
  84. SI (VFLAG EGA 0);
  85. PSLIM = SIGMA11 POIN 'MAXI';
  86. NLIM = 1;
  87. SIGMAX0 = (SIGMA11 MASQ 'EGSUPE' SIGMAX) * SIGMA11;
  88. SINON;
  89. MTEST = SURFACE1 DIFF (TAB2. 'MESH');
  90. SIGTEST = REDU SIGMA11 MTEST;
  91. EL_LIM = SIGTEST ELEM 'EGSUPE' STMAX;
  92. PSLIM = SIGMA11 POIN 'EGSUPE' STMAX;
  93. SIGMAX0 = (SIGTEST MASQ 'EGSUPE' STMAX) * SIGTEST;
  94. SI (VFLAG EGA 0);
  95. NLIM = 0;
  96. SINON;
  97. NLIM = NBEL EL_LIM;
  98. FINSI;
  99. FINSI;
  100.  
  101. * On ordonne les possibles root elements par contrainte decr
  102. Prr = TABLE;
  103. Prr. 'coor_x' = TABLE;
  104. Prr. 'coor_y' = TABLE;
  105. Srr = TABLE;
  106. Trr = TABLE;
  107. ff = 0;
  108. REPETER ORDINE (NROOTS + NLIM);
  109. ff = (ff + 1);
  110. SI ((NROOTS > 0) ET (ff &lt;EG NROOTS));
  111. Prr. 'coor_x'. ff =
  112. COOR 1 (TAB2. 'PROOTS'. ff);
  113. Prr. 'coor_y'. ff =
  114. COOR 2 (TAB2. 'PROOTS'. ff);
  115. Trr. ff = CHAN 'POI1' (TAB2. 'EROOTS'. ff);
  116. Srr. ff = 0;
  117. SINON;
  118. SIGMAX1 = MAXI SIGMAX0;
  119. Prr. 'coor_x'. ff = MAXI (COOR 1 (SIGMAX0 POIN 'MAXI'));
  120. Prr. 'coor_y'. ff = MAXI (COOR 2 (SIGMAX0 POIN 'MAXI'));
  121. Trr. ff = CHAN 'POI1' (SIGMAX0 ELEM 'MAXI');
  122. Srr. ff = SIGMAX1;
  123. XAX = SIGMAX0 MASQ 'EGALE' SIGMAX1;
  124. DIFF1 = XAX * SIGMAX1;
  125. SIGMAX0 = (SIGMAX0 - DIFF1);
  126. FINSI;
  127. FIN ORDINE;
  128.  
  129. *
  130. *\\\\ Resolution du probleme de conduction ////*
  131. *
  132. * Cosinus des tangentes
  133. COS2X = EXCO PRIN1 'COX2';
  134. COS2Y = EXCO PRIN1 'COY2';
  135. COS2Z = EXCO PRIN1 'COZ2';
  136.  
  137. * Champ vectoriel des tangentes
  138. *SIGMA22 = MANU 'CHML' MODEL11 'SI22' 1. 'TYPE'
  139. *'CONTRAINTES PRINCIPALES' 'STRESSES';
  140. *PRIN12 = (SIGMA22 ET COS2X ET COS2Y ET COS2Z);
  141. *VECTAN = VECT PRIN12 MODEL11 0.001 'SI22';
  142.  
  143. * Modele thermique
  144. MOTH = MODE SURFACE1 THERMIQUE ANISOTROPE;
  145.  
  146. * Perturbation conductivite numerique
  147. TTPETIT = 1.E-6;
  148.  
  149. * Tenseur conductivite anisotrope
  150. KXX=(COS2X**2)+((COS2X**0)*TTPETIT);
  151. KYY=(COS2Y**2)+((COS2Y**0)*TTPETIT);
  152. TTX=NOMC 'UX' COS2X;
  153. TTY=NOMC 'UX' COS2Y;
  154. KXY=TTX*TTY;
  155. PX = 1.0 0.;
  156. MATH= MATE MOTH 'DIRECTION' PX K11 KXX K21 KXY K22 KYY;
  157. * Matrice de rigidite
  158. KTH = COND MOTH MATH;
  159. * Conditions aux limites
  160. PCL1 = CHAN 'POI1' (TAB2. 'LBC');
  161. CLT1 = BLOQ PCL1 'T';
  162. CLTH = CLT1;
  163. * Temperature imposee
  164. VBC = TAB2. 'BCSTH';
  165. DE1 = DEPI CLT1 VBC;
  166. DETH = DE1;
  167. * Assemblage
  168. KTHTOT = KTH ET CLTH;
  169. *Resolution
  170. RESTH = RESO KTHTOT DETH;
  171. TAB2. 'RESTH' = RESTH;
  172. *TRAC RESTH SURFACE1;
  173.  
  174. *
  175. *\\\\ Extraction des isovaleurs ////*
  176. *
  177. T0 = CHAN 'CHAM' RESTH MOTH 'NOEUD';
  178. T0 = EXCO T0 'T';
  179. i = 0;
  180. NEW_MESH = VIDE 'MAILLAGE';
  181. P0 = SURFACE1 POIN 'PROC' (0. 0.);
  182. P0 = MANU 'POI1' P0;
  183. REPETER BOUCLEEL (NROOTS + NLIM);
  184. i = i + 1;
  185. PPP = (Prr. 'coor_x'. i) (Prr. 'coor_y'. i);
  186. ELACTIF = 0;
  187. TRACCIA = FAUX;
  188. * Verification des elements
  189. ***On a trois cas :
  190. ***ELACTIF = 0 : possibles elements root***
  191. ***ELACTIF = 1 : elements appartenant a une isovaleur***
  192. ***ELACTIF = 2 : elements a negliger***
  193. SI (i &lt;EG NROOTS);
  194. ELACTIF = 1;
  195. TRACCIA = VRAI;
  196. SINON;
  197. CHECK1 = NEW_MESH ELEM 'CONTENANT' PPP 'NOVERIF';
  198. * CHECK1 : on verifie si PPP appartient a une isovaleur active
  199. SI ((NBEL CHECK1) > 0);
  200. ELACTIF = 1;
  201. FINSI;
  202. FINSI;
  203. * CHECK2 : les elements root doivent etre bien separes
  204. SI (ELACTIF EGA 0);
  205. SI (NROOTS EGA 0);
  206. TRACCIA = VRAI;
  207. SINON;
  208. CHECK2 = NEW_MESH ELEM 'APPUYE' 'LARGEMENT'
  209. (Trr. i) 'NOVERIF';
  210. SI ((NBEL CHECK2) EGA 0);
  211. TRACCIA = VRAI;
  212. SINON;
  213. ELACTIF = 2;
  214. FINSI;
  215. FINSI;
  216. FINSI;
  217. * Isovaleurs
  218. SI (TRACCIA EGA VRAI);
  219. TREDUC = REDU RESTH (Trr. i);
  220. NA = (Trr. i) POIN 1;
  221. NB = (Trr. i) POIN 2;
  222. NC = (Trr. i) POIN 3;
  223. TA = EXTR TREDUC 'T' NA;
  224. TB = EXTR TREDUC 'T' NB;
  225. TC = EXTR TREDUC 'T' NC;
  226. TG = ((TA + TB + TC) / 3.);
  227. ISOVG = ISOV T0 TG;
  228. P_ISOVG = CHAN 'POI1' ISOVG;
  229. * Extraction des elements traverses par l'isovaleur
  230. T0G = MANU 'CHML' MOTH 'T' TG 'NOEUD';
  231. T01 = T0 - T0G;
  232. T02 = T01 MASQ 'SUPERIEUR' 0.;
  233. MAILA = T02 ELEM 'EGALE' 1.;
  234. MAILB = T02 ELEM 'EGALE' 0.;
  235. MESH_EL = SURFACE1 DIFF (MAILA ET MAILB);
  236. * CHECK3 : les isovaleurs doivent etre bien separees
  237. * Si le seul element en commun est EL0 alors on continue
  238. SI (i > NROOTS);
  239. MM1 = (CHAN 'POI1' MESH_EL) ET P0;
  240. MMT = (CHAN 'POI1' NEW_MESH) ET P0;
  241. CHECK3 = MMT INTE MM1;
  242. SI ((NBEL CHECK3) > 1);
  243. ELACTIF = 2;
  244. FINSI;
  245. FINSI;
  246. SI (ELACTIF EGA 1);
  247. NEW_MESH = NEW_MESH ET (TAB2. 'MESH_ISO'. i);
  248. FINSI;
  249. SI (ELACTIF EGA 0);
  250. NEW_MESH = NEW_MESH ET MESH_EL;
  251. TAB2. 'NROOTS' = (TAB2. 'NROOTS') + 1;
  252. TAB2. 'ISOTOT'. (TAB2. 'NROOTS') = ISOVG;
  253. TAB2. 'MESH_ISO'. (TAB2. 'NROOTS') = MESH_EL;
  254. TAB2. 'PROOTS'. (TAB2. 'NROOTS') = PPP;
  255. TAB2. 'EROOTS'. (TAB2. 'NROOTS') = SURFACE1 ELEM
  256. 'CONTENANT' PPP;
  257. FINSI;
  258. FINSI;
  259. DROOTS = (TAB2. 'NROOTS') - NROOTS;
  260. SI (DROOTS EGA 1);
  261. QUIT BOUCLEEL;
  262. FINSI;
  263. SI (i EGA (NROOTS + NLIM));
  264. QUIT BOUCLEEL;
  265. FINSI;
  266. FIN BOUCLEEL;
  267. TAB2. 'MESH' = NEW_MESH;
  268.  
  269. *
  270. *\\\\ Creation des chamelem ////*
  271. *
  272. CHM = MANU 'CHML' model11 'SI11' 0.
  273. 'TYPE' 'CONTRAINTES PRINCIPALES' 'STRESSES';
  274. X0S = CHAN 'CHAM' X0 MODEL11 'STRESSES';
  275. X0S = CHAN 'TYPE' X0S 'CONTRAINTES PRINCIPALES';
  276. X0S = CHAN 'COMP' 'SI11' X0S;
  277. Y0S = CHAN 'CHAM' Y0 MODEL11 'STRESSES';
  278. Y0S = CHAN 'TYPE' Y0S 'CONTRAINTES PRINCIPALES';
  279. Y0S = CHAN 'COMP' 'SI11' Y0S;
  280. nlm1 = nbel NEW_MESH;
  281. i=0;
  282. repeter BOUCLEB nlm1;
  283. i = i + 1;
  284. ELEMi = NEW_MESH ELEM i;
  285. VALXi = MAXI (REDU X0S ELEMi);
  286. VALYi = MAXI (REDU Y0S ELEMi);
  287. CHPX = X0S MASQ 'EGALE' VALXi;
  288. CHPY = Y0S MASQ 'EGALE' VALYi;
  289. CHP = CHPX * CHPY;
  290. CHM = CHM + CHP;
  291. fin BOUCLEB;
  292.  
  293. * Abscisses des points d'entree des fissures
  294. CHIX = MANU 'CHML' MODEL11 'SI11' 0. 'TYPE'
  295. 'CONTRAINTES PRINCIPALES' 'STRESSES';
  296. * Ordonnees des points d'entree des fissures
  297. CHIY = CHIX;
  298. * Composante x des normales
  299. CHNX = CHIX;
  300. * Composante y des normales
  301. CHNY = CHIX;
  302. j = 0;
  303. * Debut de la boucle sur les root elements
  304. REPETER BOUCLE1 (TAB2. 'NROOTS');
  305. j = j + 1;
  306. ISOVGj = ORDO (TAB2. 'ISOTOT'. j);
  307. ROOTj = TAB2. 'EROOTS'. j;
  308. MESHj = TAB2. 'MESH_ISO'. j;
  309. NUMEL = NBEL MESHj;
  310. CHIXj = CHIX * 0.;
  311. CHIYj = CHIY * 0.;
  312. CHNXj = CHNX * 0.;
  313. CHNYj = CHNY * 0.;
  314. PINI = ISOVGj POIN 'INITIAL';
  315. PFIN = ISOVGj POIN 'FINAL';
  316. TEST1 = ROOTj ELEM 'CONTENANT' PINI 'NOVERIF';
  317. SI ((NBEL TEST1) EGA 1);
  318. SEG1 = ISOVGj ELEM 'CONTENANT' PINI;
  319. SINON;
  320. SEG1 = ISOVGj ELEM 'CONTENANT' PFIN;
  321. PINI = PFIN;
  322. FINSI;
  323. * Debut de la boucle sur les elements de l'isovaleur j
  324. i = 0;
  325. REPETER BOUCLE2 NUMEL;
  326. i = i + 1;
  327. SI (i EGA 1);
  328. ELi = ROOTj;
  329. MTEST = ROOTj;
  330. SEGi = SEG1;
  331. STEST = SEG1;
  332. PTEST = PINI;
  333. SINON;
  334. MTEST = MTEST ET ELi;
  335. SI (i > 2);
  336. STEST = STEST ET SEGi;
  337. FINSI;
  338. PTEST1 = STEST POIN 'INITIAL';
  339. PTEST2 = STEST POIN 'FINAL';
  340. SI (PTEST1 EGA PINI);
  341. PTEST = PTEST2;
  342. SINON;
  343. PTEST = PTEST1;
  344. FINSI;
  345. SDIFF = ISOVGj DIFF STEST;
  346. SEGi = SDIFF ELEM 'CONTENANT' PTEST;
  347. FINSI;
  348. PP = MANU 'POI1' PTEST;
  349. XTEST YTEST = COOR PTEST;
  350. COORXi = REDU X0S ELi;
  351. COORYi = REDU Y0S ELi;
  352. VALXi = MAXI COORXi;
  353. VALYi = MAXI COORYi;
  354. PP1 = SEGi POIN 1;
  355. XP1 YP1 = COOR PP1;
  356. PP2 = SEGi POIN 2;
  357. XP2 YP2 = COOR PP2;
  358. * Calcul de la tangente et de la normale a la fissure
  359. LL = (((XP1 - XP2) ** 2) + ((YP1 - YP2) ** 2)) ** 0.5;
  360. SI (YP1 > YP2);
  361. TY = (YP1 - YP2) / LL;
  362. TX = (XP1 - XP2) / LL;
  363. SINON;
  364. TY = (YP2 - YP1) / LL;
  365. TX = (XP2 - XP1) / LL;
  366. FINSI;
  367. SI (YP1 EGA YP2);
  368. TY = 0.;
  369. TX = -1.;
  370. FINSI;
  371. NX = TY;
  372. NY = -1.*TX;
  373. CHPX = X0S MASQ 'EGALE' VALXi;
  374. CHPY = Y0S MASQ 'EGALE' VALYi;
  375. CH = CHPX * CHPY;
  376. CHIXj = CHIXj + (CH * XTEST);
  377. CHIYj = CHIYj + (CH * YTEST);
  378. CHNXj = CHNXj + (CH * NX);
  379. CHNYj = CHNYj + (CH * NY);
  380. MREDj = REDU MODEL11 MESHj;
  381. * Pour le pas suivant
  382. SI (i < NUMEL);
  383. CTEST = CONT MTEST;
  384. MDIFF = MESHj DIFF MTEST;
  385. CDIFF = CONT MDIFF;
  386. CINTE = CDIFF INTE CTEST;
  387. GINTE = BARY CINTE;
  388. ELi = MDIFF ELEM 'CONTENANT' GINTE;
  389. FINSI;
  390. FIN BOUCLE2;
  391. CHIX = CHIX + CHIXj;
  392. CHIY = CHIY + CHIYj;
  393. CHNX = CHNX + CHNXj;
  394. CHNY = CHNY + CHNYj;
  395. FIN BOUCLE1;
  396. MATr2 = MATE MODEL11 YOUN E11 NU NU11 FT P11 XNX CHNX
  397. XNY CHNY IND1 CHM XIE CHIX YIE CHIY;
  398. MATr1 = MATr2;
  399. TAB2. 'WTABLE'. 'CARACTERISTIQUES' = MATR1;
  400.  
  401.  
  402. FINSI;
  403.  
  404.  
  405. FINP MATR1;
  406.  
  407.  
  408.  

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