Télécharger four2tri.procedur

Retour à la liste

Numérotation des lignes :

  1. * FOUR2TRI PROCEDUR BP208322 17/04/19 21:15:01 9398
  2.  
  3. *======================================================================
  4. *
  5. * FOUR2TRI (ou 4 2 3 pour les numericiens purs....) :
  6. * Genere un maillage 3D à partir d'un modele Fourier
  7. * Recombine les CHPO 2D Fourier sur ce maillage 3D
  8. * Creation : D. Combescure, SEMT/DYN, CEA Saclay, Decembre 2006
  9. * Modifs : B. Prabel, 2013/02, 2017/04
  10. *
  11. *======================================================================
  12.  
  13. DEBPROC FOUR2TRI MOD1*'MMODEL' TAB1*'TABLE'
  14. NUMFOUR/'ENTIER' PRANGL/'LISTREEL';
  15. *
  16. * Harmonique de Fourier
  17. *
  18. SI (NEG (TYPE NUMFOUR) 'ENTIER');
  19. * NUMFOUR = 0;
  20. NUMFOUR = VALE 'MODE' 'FOUR';
  21. MESS 'Harmonique de Fourier non fournie :'
  22. ' on prend l harmonique courante 'NUMFOUR;
  23. FINSI;
  24. *
  25. * On ne cree le maillage 3D que s'il n'existe pas dejà
  26. *
  27. SI (NON (EXIS TAB1 'MAILLAGE_3D'));
  28. FLAGMAIL = VRAI;
  29. SINON;
  30. FLAGMAIL = FAUX;
  31. *le maillage existe deja -> on recupere les angles
  32. PRANGL = TAB1 . 'MAILLAGE_3D' . 'ANGLES' ;
  33. FINSI;
  34. *
  35. MAI3D = TABLE;
  36. *
  37. * On ne cree le champs de deplacements 3D uniquement
  38. * si celui en 2D Fourier est donne
  39. *
  40. SI (EXIS TAB1 'DEPLACEMENTS');
  41. FLAGDEPL = VRAI;
  42. SINON;
  43. FLAGDEPL = FAUX;
  44. FINSI;
  45. MODEPL1 = MOTS 'UR' 'UZ' 'UT' 'IUR' 'IUZ' 'IUT';
  46. MODEPL2 = MOTS 'VR' 'VZ' 'VT' 'IVR' 'IVZ' 'IVT';
  47. *
  48. DEP3D = TABLE;
  49. *
  50. * On ne cree le champs de forces 3D uniquement
  51. * si celui en 2D Fourier est donne
  52. *
  53. SI (EXIS TAB1 'EFFORTS');
  54. FLAGFOR = VRAI;
  55. SINON;
  56. FLAGFOR = FAUX;
  57. FINSI;
  58. MOFORC1 = MOTS 'FR' 'FZ' 'FT' 'IFR' 'IFZ' 'IFT';
  59. MOFORC2 = MOTS 'VR' 'VZ' 'VT' 'IVR' 'IVZ' 'IVT';
  60. *
  61. FOR3D = TABLE;
  62. *
  63. * On ne cree le CHPO 3D uniquement
  64. * si celui en 2D Fourier est donne
  65. *
  66. SI (EXIS TAB1 'CHAMPS_POINTS_SYMETRIQUES');
  67. FLAGCHPS = VRAI;
  68. SINON;
  69. FLAGCHPS = FAUX;
  70. FINSI;
  71. *
  72. CHS3D = TABLE;
  73. *
  74. SI (EXIS TAB1 'CHAMPS_POINTS_ANTISYMETRIQUES');
  75. FLAGCHPA = VRAI;
  76. SINON;
  77. FLAGCHPA = FAUX;
  78. FINSI;
  79. *
  80. CHA3D = TABLE;
  81. *
  82. * Angles
  83. *
  84. SI (NEG (TYPE PRANGL) 'LISTREEL');
  85. MESS 'LISTREEL des tranches non fourni :'
  86. ' on prend tous les 10° par defaut';
  87. PRANGL = PROG 0. PAS 10. 360.;
  88. FINSI;
  89.  
  90.  
  91. ************************************************************************
  92. *
  93. * CREATION DU MAILLAGE 3D
  94. *
  95. ************************************************************************
  96.  
  97. SI FLAGMAIL;
  98.  
  99. TAMOD = EXTR MOD1 'ZONE';
  100. nzone = (DIME TAMOD) / 2;
  101.  
  102. *bp : petite elimination pour le multicouche
  103. * (ok car FOUR2TRI traite uniquement des CHPO)
  104. * rem : en theorie, il faudrait aussi tester les mots de la formulation
  105. * ou les noms des deplacements...
  106. iz = 1; izok = 1;
  107. MOD2DJ0 = TAMOD . 1;
  108. MESH2DJ0 = TAMOD . 2;
  109. REPETER LAB0 (nzone - 1); iz = iz + 1;
  110. MOD2DJ = TAMOD . (2*iz - 1);
  111. MESH2DJ = TAMOD . (2*iz);
  112. * si deja vu --> on l'enleve
  113. SI (EGA MESH2DJ MESH2DJ0); ITER LAB0; FINSI;
  114. * si pas vu --> on le laisse
  115. izok = izok + 1;
  116. TAMOD . (2*izok - 1) = MOD2DJ;
  117. TAMOD . (2*izok) = MESH2DJ;
  118. * on suppose les zones identiques a la suite les unes des autres
  119. MOD2DJ0 = MOD2DJ;
  120. MESH2DJ0 = MESH2DJ;
  121. FIN LAB0;
  122. *on enleve les indices inutiles
  123. * mess nzone '--->' izok ;
  124. SI (NEG izok nzone);
  125. iz = izok;
  126. repe biz (nzone - izok); iz = iz + 1;
  127. OTER TAMOD (2*iz - 1);
  128. OTER TAMOD (2*iz);
  129. fin biz;
  130. nzone = izok;
  131. FINSI;
  132. * list TAMOD;
  133. *
  134. *------------ Boucle sur les sous-zones ------------
  135. *
  136. REPETER LAB0 nzone;
  137.  
  138. MESH2DJ = TAMOD. (2*&LAB0);
  139. NTYPE = EXTR (MESH2DJ 'ELEM' TYPE) 1;
  140. SI ((EGA NTYPE 'SEG2') OU (EGA NTYPE 'POI1'));
  141. CONT2DJ = MESH2DJ;
  142. SINON;
  143. SI (EGA NTYPE 'RAC2');
  144. CONT2DJ = CHAN LIGNE MESH2DJ;
  145. SINON;
  146. CONT2DJ = CONTOUR MESH2DJ;
  147. FINSI;
  148. FINSI;
  149. SI (&LAB0 EGA 1);
  150. CONT2D = TABLE;
  151. MESH2D = TABLE;
  152. FINSI;
  153. CONT2D.&LAB0 = CONT2DJ;
  154. MESH2D.&LAB0 = MESH2DJ;
  155. TAMOD.((2*&LAB0) - 1) = CONT2DJ;
  156. FIN LAB0;
  157. *------------ fin de Boucle sur les sous-zones ------------
  158. *
  159. * ELIM 0.000001 (MESH2D et CONT2D);
  160. *
  161. OPTI DIME 3 ELEM QUA4;
  162. *
  163. p00000 = 0. 0. 0.;
  164. p00001 = 0. 1. 0.;
  165. *
  166. *
  167. NTRANCHE = DIME PRANGL;
  168. *
  169. * MAI3D. 0 = MESH2D ;
  170. *--------------------- Boucle sur les sous-zones ---------------------
  171.  
  172. REPETER LAB12 (ENTIER (0.5*(DIME TAMOD)));
  173.  
  174. CONT2DJ = TAMOD.((2*&LAB12) - 1);
  175. MESH2D = TAMOD. (2*&LAB12);
  176. SI (EGA &LAB12 1);
  177. MAI3D. 0 = TABLE ;
  178. FINSI;
  179. MAI3D. 0 . &LAB12= MESH2D ;
  180. *
  181. *------------ Boucle sur les secteurs angulaires ------------
  182. *
  183. REPETER LAB1 NTRANCHE;
  184. *
  185. * mess 'Sous domaine et Secteur N°:';
  186. * list &LAB12;
  187. * list &LAB1;
  188. MAI3D. 'ANGLES' = PRANGL;
  189. ANGLAB1 = EXTR PRANGL &LAB1;
  190. *
  191. MESHJ = MESH2D TOUR ANGLAB1 p00000 P00001;
  192. NTYPE = EXTR (MESHJ 'ELEM' TYPE) 1;
  193. SI ((EGA NTYPE 'SEG2') OU (EGA NTYPE 'POI1'));
  194. CON3DJ = MESHJ;
  195. SINON;
  196. SI (EGA NTYPE 'RAC2');
  197. CON3DJ = CHAN LIGNE MESHJ;
  198. SINON;
  199. CON3DJ = CONTOUR MESHJ;
  200. FINSI;
  201. FINSI;
  202. SI (EGA &LAB12 1);
  203. MAI3D. &LAB1 = TABLE;
  204. FINSI;
  205. MAI3D. &LAB1 . &LAB12 = MESHJ;
  206. *
  207. * ELIM 0.000001 (CON3DJ et (MAI3D. &LAB1));
  208. *
  209. SI (EGA &LAB1 1);
  210. SI (EGA &LAB12 1);
  211. MESH3D = MAI3D. 1 . &LAB12;
  212. SINON;
  213. MESH3D = MESH3D ET (MAI3D. 1 . &LAB12);
  214. FINSI;
  215. SINON;
  216. SI ((EGA &LAB1 2) ET (EGA &LAB12 1));
  217. SI (NEG (EXTR (CON3DJ0 ELEM TYPE) 1) POI1);
  218. MAI3D. 'ENVELOPPE' = CON3DJ0 REGLER 1 CON3DJ;
  219. SINON;
  220. MAI3D. 'ENVELOPPE' = CON3DJ0;
  221. FINSI;
  222. SINON;
  223. SI (NEG (EXTR (CON3DJ0 ELEM TYPE) 1) POI1);
  224. MAI3D. 'ENVELOPPE' = (MAI3D. 'ENVELOPPE') ET
  225. (CON3DJ0 REGLER 1 CON3DJ);
  226. SINON;
  227. MAI3D. 'ENVELOPPE' = (MAI3D. 'ENVELOPPE') ET
  228. CON3DJ0;
  229. FINSI;
  230. FINSI;
  231. SI (EGA &LAB1 NTRANCHE);
  232. MESH3D = MESH3D ET (MAI3D. NTRANCHE . &LAB12);
  233. FINSI;
  234. FINSI;
  235. CON3DJ0 = CON3DJ;
  236.  
  237. FIN LAB1;
  238. *------------ fin de Boucle sur les secteurs angulaires ------------
  239.  
  240. FIN LAB12;
  241. *------------------ fin de Boucle sur les sous-zones ------------------
  242.  
  243. MESH3D = MESH3D ET (MAI3D. 'ENVELOPPE');
  244. *
  245. * On range le nouveau maillage 3D
  246. *
  247. MAI3D . 'TOTAL' = MESH3D;
  248. TAB1.'MAILLAGE_3D' = MAI3D;
  249. *
  250. SINON;
  251. MESH3D = TAB1 . 'MAILLAGE_3D' . 'TOTAL';
  252. FINSI;
  253.  
  254.  
  255. ************************************************************************
  256. *
  257. * CHAMPS DE DEPLACEMENT 3D
  258. *
  259. ************************************************************************
  260.  
  261. SI FLAGDEPL;
  262. *
  263. * OPTI DIME 3 MODE FOUR NUMFOUR;
  264. OPTI DIME 3 MODE TRID;
  265. *
  266. p00000 = 0. 0. 0.;
  267. p00001 = 0. 1. 0.;
  268. NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4;
  269. NDEP = DIME (TAB1.'DEPLACEMENTS');
  270. PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ;
  271. *
  272. NZONE = (DIME (TAB1. 'MAILLAGE_3D' . 0));
  273. *
  274. *-----------------------------> BOUCLE SUR LES DEPLACEMENTS
  275. REPETER LAB2 NDEP; i2 = &lab2;
  276.  
  277. *-----------------------------> BOUCLE SUR LES ZONES
  278. REPETER LAB20 NZONE;
  279. MESH2DI = (TAB1. 'MAILLAGE_3D' . 0 . &LAB20 );
  280. *
  281. * LCOMPU = EXTR (TAB1.'DEPLACEMENTS'.i2) 'COMP';
  282. DEP2DJ = REDU TAB1.'DEPLACEMENTS' . i2 MESH2DI;
  283. *bp : afin de truander DEDU ROTA (et toch1.eso),
  284. * il faut des noms de composantes bidon : VR VZ et VT
  285. DEP2DJ = EXCO DEP2DJ MODEPL1 NUMFOUR MODEPL2 'NOID';
  286. *
  287. *.............................> boucle sur les tranches
  288. REPETER LAB21 NTRANCHE;
  289. *
  290. ANGLAB1 = EXTR PRANGL &LAB21;
  291. ANGLABN = NUMFOUR*ANGLAB1;
  292. MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB21 . &LAB20;
  293.  
  294. DEP3DJJ = DEP2DJ DEDU ANGLAB1 p00000 P00001 'ROTA' MESH2DI MESH2DN;
  295.  
  296. *bp : serie de Fourier
  297. DEP3DJ0 = ((EXCO DEP3DJJ 'VR' 'NOID' 'UR' )*(COS ANGLABN))
  298. + ((EXCO DEP3DJJ 'VT' 'NOID' 'UT' )*(SIN ANGLABN))
  299. + ((EXCO DEP3DJJ 'VZ' 'NOID' 'UZ' )*(COS ANGLABN))
  300. + ((EXCO DEP3DJJ 'IVR' 'NOID' 'IUR')*(SIN ANGLABN))
  301. + ((EXCO DEP3DJJ 'IVT' 'NOID' 'IUT')*(COS ANGLABN))
  302. + ((EXCO DEP3DJJ 'IVZ' 'NOID' 'IUZ')*(SIN ANGLABN));
  303.  
  304. *bp : changement de repere
  305. DEP3DJ1 = ((EXCO DEP3DJ0 'UR' 'NOID' 'UX')*(COS ANGLAB1))
  306. - ((EXCO DEP3DJ0 'UR' 'NOID' 'UZ')*(SIN ANGLAB1))
  307. - ((EXCO DEP3DJ0 'UT' 'NOID' 'UX')*(SIN ANGLAB1))
  308. - ((EXCO DEP3DJ0 'UT' 'NOID' 'UZ')*(COS ANGLAB1))
  309. + (EXCO DEP3DJ0 'UZ' 'NOID' 'UY');
  310. DEP3DJ1 = DEP3DJ1
  311. + ((EXCO DEP3DJ0 'IUR' 'NOID' 'UX')*(COS ANGLAB1))
  312. - ((EXCO DEP3DJ0 'IUR' 'NOID' 'UZ')*(SIN ANGLAB1))
  313. - ((EXCO DEP3DJ0 'IUT' 'NOID' 'UX')*(SIN ANGLAB1))
  314. - ((EXCO DEP3DJ0 'IUT' 'NOID' 'UZ')*(COS ANGLAB1))
  315. + (EXCO DEP3DJ0 'IUZ' 'NOID' 'UY');
  316.  
  317. DEP3DJ1 = CHAN 'ATTRIBUT' DEP3DJ1 'NATURE' 'DIFFUS';
  318. SI ((EGA &LAB21 1) et (EGA &LAB20 1));
  319. DEP3DJ = DEP3DJ1;
  320. SINON;
  321. DEP3DJ = DEP3DJ ET DEP3DJ1;
  322. FINSI;
  323. *
  324. FIN LAB21;
  325. *.............................> fin de boucle sur les tranches
  326. *
  327. FIN LAB20;
  328. *-----------------------------> FIN DE BOUCLE SUR LES ZONES
  329. DEP3D.i2 = DEP3DJ;
  330.  
  331. FIN LAB2;
  332. *-----------------------------> FIN DE BOUCLE SUR LES DEPLACEMENTS
  333. *
  334. FINSI;
  335.  
  336.  
  337. ************************************************************************
  338. *
  339. * CHAMPS D'EFFORTS 3D
  340. *
  341. ************************************************************************
  342.  
  343. SI FLAGFOR;
  344. *
  345. * OPTI DIME 3 MODE FOUR NUMFOUR;
  346. OPTI DIME 3 MODE TRID;
  347. *
  348. p00000 = 0 0 0;
  349. p00001 = 0 1 0;
  350. NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4;
  351. NFOR = DIME (TAB1.'EFFORTS');
  352. PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ;
  353. *
  354. NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0);
  355. *
  356. *-----------------------------> BOUCLE SUR LES FORCES
  357. REPETER LAB3 NFOR; i3 = &lab3;
  358.  
  359. *-----------------------------> BOUCLE SUR LES ZONES
  360. REPETER LAB30 NZONE;
  361. MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30;
  362. * LCOMPU = EXTR (TAB1.'EFFORTS'.i3) 'COMP';
  363. FOR2DJ = REDU (TAB1.'EFFORTS'.i3) MESH2DI;
  364. *bp : afin de truander DEDU ROTA (et toch1.eso),
  365. * il faut des noms de composantes bidon : VR VZ et VT
  366. FOR2DJ = EXCO FOR2DJ MOFORC1 NUMFOUR MOFORC2 'NOID';
  367. *
  368. *.............................> boucle sur les tranches
  369. REPETER LAB31 NTRANCHE;
  370. *
  371. ANGLAB1 = EXTR PRANGL &LAB31;
  372. ANGLABN = NUMFOUR*ANGLAB1;
  373. MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30;
  374.  
  375. FOR3DJJ = FOR2DJ DEDU ANGLAB1 p00000 P00001 'ROTA' MESH2DI MESH2DN;
  376.  
  377. *bp : serie de Fourier
  378. FOR3DJ0 = ((EXCO FOR3DJJ 'VR' 'NOID' 'FR' )*(COS ANGLABN))
  379. + ((EXCO FOR3DJJ 'VT' 'NOID' 'FT' )*(SIN ANGLABN))
  380. + ((EXCO FOR3DJJ 'VZ' 'NOID' 'FZ' )*(COS ANGLABN))
  381. + ((EXCO FOR3DJJ 'IVR' 'NOID' 'IFR')*(SIN ANGLABN))
  382. + ((EXCO FOR3DJJ 'IVT' 'NOID' 'IFT')*(COS ANGLABN))
  383. + ((EXCO FOR3DJJ 'IVZ' 'NOID' 'IFZ')*(SIN ANGLABN));
  384.  
  385. *bp : changement de repere
  386. FOR3DJ1 = ((EXCO FOR3DJ0 'FR' 'NOID' 'FX')*(COS ANGLAB1))
  387. - ((EXCO FOR3DJ0 'FR' 'NOID' 'FZ')*(SIN ANGLAB1))
  388. - ((EXCO FOR3DJ0 'FT' 'NOID' 'FX')*(SIN ANGLAB1))
  389. - ((EXCO FOR3DJ0 'FT' 'NOID' 'FZ')*(COS ANGLAB1))
  390. + (EXCO FOR3DJ0 'FZ' 'NOID' 'FY');
  391. FOR3DJ1 = FOR3DJ1
  392. + ((EXCO FOR3DJ0 'IFR' 'NOID' 'FX')*(COS ANGLAB1))
  393. - ((EXCO FOR3DJ0 'IFR' 'NOID' 'FZ')*(SIN ANGLAB1))
  394. - ((EXCO FOR3DJ0 'IFT' 'NOID' 'FX')*(SIN ANGLAB1))
  395. - ((EXCO FOR3DJ0 'IFT' 'NOID' 'FZ')*(COS ANGLAB1))
  396. + (EXCO FOR3DJ0 'IFZ' 'NOID' 'FY');
  397.  
  398. FOR3DJ1 = CHAN 'ATTRIBUT' FOR3DJ1 'NATURE' 'DISCRET';
  399. SI ((EGA &LAB31 1) et (EGA &LAB30 1));
  400. FOR3DJ = FOR3DJ1;
  401. SINON;
  402. FOR3DJ = FOR3DJ ET FOR3DJ1;
  403. FINSI;
  404. *
  405. FIN LAB31;
  406. *.............................> fin de boucle sur les tranches
  407.  
  408. FIN LAB30;
  409. *-----------------------------> FIN DE BOUCLE SUR LES ZONES
  410. FOR3D.i3 = FOR3DJ;
  411. *
  412. FIN LAB3;
  413. *-----------------------------> FIN DE BOUCLE SUR LES FORCES
  414. *
  415. FINSI;
  416.  
  417.  
  418. ************************************************************************
  419. *
  420. * CHPO 3D QUELCONQUES - PRESSION, EPAISSEUR... - CAS SYMETRIQUE
  421. *
  422. ************************************************************************
  423.  
  424. SI (FLAGCHPS);
  425. *
  426. * OPTI DIME 3 MODE FOUR NUMFOUR;
  427. OPTI DIME 3 MODE TRID;
  428. *
  429. p00000 = 0 0 0;
  430. p00001 = 0 1 0;
  431. NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4;
  432. NCHPS = DIME (TAB1.'CHAMPS_POINTS_SYMETRIQUES');
  433. PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ;
  434. *
  435. NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0);
  436. *
  437. *-----------------------------> BOUCLE SUR LES CHPO
  438. REPETER LAB3 NCHPS; i3 = &lab3;
  439.  
  440. LCOMPU = EXTR (TAB1.'CHAMPS_POINTS_SYMETRIQUES'.i3) 'COMP';
  441. CHP2DJ0 = EXCO TAB1.'CHAMPS_POINTS_SYMETRIQUES'.i3 LCOMPU NUMFOUR;
  442.  
  443. *-----------------------------> BOUCLE SUR LES ZONES
  444. REPETER LAB30 NZONE;
  445. *
  446. MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30;
  447.  
  448. * OPTI MODE FOUR NUMFOUR;
  449. CHP2DJ = REDU CHP2DJ0 MESH2DI;
  450. * OPTI MODE TRID;
  451. *
  452. *.............................> boucle sur les tranches
  453. REPETER LAB31 NTRANCHE;
  454. *
  455. ANGLAB1 = EXTR PRANGL &LAB31;
  456. ANGLABN = NUMFOUR*ANGLAB1;
  457. MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30;
  458.  
  459. CHP3DJJ = CHP2DJ DEDU ANGLAB1 p00000 P00001 'ROTA' MESH2DI MESH2DN;
  460.  
  461. *bp : serie de Fourier
  462. CHP3DJ1 = CHP3DJJ * (COS ANGLABN);
  463. CHP3DJ1 = CHAN 'ATTRIBUT' CHP3DJ1 'NATURE' 'DIFFUS';
  464. *
  465. SI ((EGA &LAB31 1) et (EGA &LAB30 1));
  466. CHP3DJ = CHP3DJ1;
  467. SINON;
  468. CHP3DJ = CHP3DJ ET CHP3DJ1;
  469. FINSI;
  470. *
  471. FIN LAB31;
  472. *.............................> fin de boucle sur les tranches
  473. *
  474. FIN LAB30;
  475. *-----------------------------> FIN DE BOUCLE SUR LES ZONES
  476. *
  477. CHS3D.i3 = CHP3DJ;
  478. FIN LAB3;
  479. *-----------------------------> FIN DE BOUCLE SUR LES CHPO
  480. *
  481. FINSI;
  482.  
  483.  
  484. ************************************************************************
  485. *
  486. * CHPO 3D QUELCONQUES - PRESSION, EPAISSEUR... - CAS ANTISYMETRIQUE
  487. *
  488. ************************************************************************
  489.  
  490. SI FLAGCHPA;
  491. *
  492. * OPTI DIME 3 MODE FOUR NUMFOUR;
  493. OPTI DIME 3 MODE TRID;
  494. *
  495. p00000 = 0 0 0;
  496. p00001 = 0 1 0;
  497. NTRANCHE = (DIME (TAB1. 'MAILLAGE_3D')) - 4;
  498. NCHPA = DIME (TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES');
  499. PRANGL = TAB1. 'MAILLAGE_3D'. 'ANGLES' ;
  500. *
  501. NZONE = DIME (TAB1. 'MAILLAGE_3D' . 0);
  502. *
  503. *-----------------------------> BOUCLE SUR LES CHPO
  504. REPETER LAB3 NCHPA; i3 = &lab3;
  505.  
  506. LCOMPU = EXTR (TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES'.i3) 'COMP';
  507. CHP2DJ0 = EXCO TAB1.'CHAMPS_POINTS_ANTISYMETRIQUES'.i3 LCOMPU NUMFOUR;
  508. *
  509. *-----------------------------> BOUCLE SUR LES ZONES
  510. REPETER LAB30 NZONE;
  511. *
  512. MESH2DI = TAB1. 'MAILLAGE_3D' . 0 . &LAB30;
  513. * OPTI MODE FOUR NUMFOUR;
  514. CHP2DJ = REDU CHP2DJ0 MESH2DI;
  515. * OPTI MODE TRID;
  516. *
  517. *.............................> boucle sur les tranches
  518. REPETER LAB31 NTRANCHE;
  519. *
  520. ANGLAB1 = EXTR PRANGL &LAB31;
  521. ANGLABN = NUMFOUR*ANGLAB1;
  522. MESH2DN = TAB1. 'MAILLAGE_3D' . &LAB31 . &LAB30;
  523.  
  524. CHP3DJJ = CHP2DJ DEDU ANGLAB1 p00000 P00001 'ROTA' MESH2DI MESH2DN;
  525.  
  526. *bp : serie de Fourier
  527. CHP3DJ1 = CHP3DJJ * (COS ANGLABN);
  528. CHP3DJ1 = CHAN 'ATTRIBUT' CHP3DJ1 'NATURE' 'DIFFUS';
  529. *
  530. SI ((EGA &LAB31 1) et (EGA &LAB30 1));
  531. CHP3DJ = CHP3DJ1;
  532. SINON;
  533. CHP3DJ = CHP3DJ ET CHP3DJ1;
  534. FINSI;
  535. *
  536. FIN LAB31;
  537. *.............................> fin de boucle sur les tranches
  538. *
  539. FIN LAB30;
  540. *-----------------------------> FIN DE BOUCLE SUR LES ZONES
  541. *
  542. CHA3D.i3 = CHP3DJ;
  543. FIN LAB3;
  544. *-----------------------------> FIN DE BOUCLE SUR LES CHPO
  545. *
  546. FINSI;
  547.  
  548.  
  549. ************************************************************************
  550. * TODO : IL MANQUE LES CHAMPS DE CONTRAINTES ET DE DEFORMATIONS.....
  551. ************************************************************************
  552.  
  553.  
  554. ************************************************************************
  555. *
  556. * RANGEMENT SI NECESSAIRE
  557. *
  558. ************************************************************************
  559.  
  560. * On stocke les resultats sur le maillage 3D
  561. *
  562. SI FLAGDEPL;
  563. TAB1.'DEPLACEMENTS_3D' = DEP3D;
  564. FINSI;
  565. *
  566. SI FLAGFOR;
  567. TAB1.'EFFORTS_3D' = FOR3D;
  568. FINSI;
  569. *
  570. SI FLAGCHPS;
  571. TAB1.'CHAMPS_POINTS_SYME_3D' = CHS3D;
  572. FINSI;
  573. *
  574. SI FLAGCHPS;
  575. TAB1.'CHAMPS_POINTS_ANTI_3D' = CHA3D;
  576. FINSI;
  577. *
  578. 'FINPROC' MESH3D;
  579. *
  580.  
  581.  
  582.  
  583.  
  584.  

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