Télécharger pout2mas.procedur

Retour à la liste

Numérotation des lignes :

  1. * POUT2MAS PROCEDUR PASCAL 14/01/23 21:15:03 7910
  2. *************************************************************************
  3. *
  4. *
  5. * Génère un maillage volumique à partir d'un modèle de poutre
  6. * (section, tuyau, poutre)
  7. *
  8. **************************************************************************
  9. DEBPROC POUT2MAS MOD1*MMODEL MAT1*MCHAML MOTCLE/MOT TAB1/TABLE;
  10. *
  11. OPTI ELEM CUB8;
  12. *
  13. MESH3D = MOT 'MESH3D';
  14. DEP3DJ = MOT 'DEP3DJ';
  15. DEF3DJ = MOT 'DEF3DJ';
  16. DEFANI = MOT 'DEFANI';
  17. BLPOUT3D = MOT 'BLPOUT3D';
  18. *
  19. ZONMOD = extr MOD1 ZONE;
  20. *
  21. SI (NON (EXISTE MOTCLE));
  22. MOTCLE = MOT 'MASSIF';
  23. FINSI;
  24. *
  25. * Option par défaut
  26. *
  27. NCIRCP = 8;
  28. NCIRCT = 8;
  29. NEPAIT = 1;
  30. NY = 1;
  31. NZ = 1;
  32. FLAGPOUT = 'CIRCULAIRE';
  33. AMPDEF = 1.;
  34. FLAGDEFO = FAUX;
  35. FLAGVAIS = FAUX;
  36. FLAGVONS = FAUX;
  37. FLAGRELA = FAUX;
  38. FLAGMATS = FAUX;
  39. *
  40. SI (EXISTE TAB1);
  41. *
  42. SI (EXISTE TAB1 'AMPLITUDE_DEFORMEES');
  43. AMPDEF = TAB1.'AMPLITUDE_DEFORMEES';
  44. FINSI;
  45. *
  46. SI (EXISTE TAB1 'TUYAU');
  47. SI (EXISTE (TAB1.'TUYAU') 'NCIRC');
  48. NCIRCT = (TAB1.'TUYAU').'NCIRC';
  49. SINON;
  50. NCIRCT = 8;
  51. FINSI;
  52. *
  53. SI (EXISTE (TAB1.'TUYAU') 'EPAI');
  54. NEPAIT = (TAB1.'TUYAU').'EPAI';
  55. SINON;
  56. NEPAIT = 1;
  57. FINSI;
  58. *
  59. FINSI;
  60. *
  61. SI (EXISTE TAB1 'POUTRE');
  62. SI (EXISTE (TAB1.'POUTRE') 'NCIRC');
  63. NCIRCP = (TAB1.'POUTRE').'NCIRC';
  64. SINON;
  65. NCIRCP = 8;
  66. FINSI;
  67. SI (EXISTE (TAB1.'POUTRE') 'NY');
  68. NY = (TAB1.'POUTRE').'NY';
  69. SINON;
  70. NY = 1;
  71. FINSI;
  72. SI (EXISTE (TAB1.'POUTRE') 'NZ');
  73. NZ = (TAB1.'POUTRE').'NZ';
  74. SINON;
  75. NZ = 1;
  76. FINSI;
  77. SI (EXISTE (TAB1.'POUTRE') 'RECTANGULAIRE');
  78. FLAGPOUT = 'RECTANGULAIRE';
  79. SINON;
  80. FLAGPOUT = 'CIRCULAIRE';
  81. FINSI;
  82. FINSI;
  83. *
  84. SI (EXISTE TAB1 'DEPLACEMENTS');
  85. FLAGDEFO = VRAI;
  86. TAB1. 'DEFORMEES'= TABLE;
  87. TAB1. 'DEPLACEMENTS_3D'= TABLE;
  88. NDEFO = DIME (TAB1.'DEPLACEMENTS');
  89. DEP3D= TABLE;
  90. SINON;
  91. FLAGDEFO = FAUX;
  92. NDEFO = 0;
  93. FINSI;
  94. *
  95. * Si on veut creer les relations pour les sections au droit des noeuds
  96. *
  97. SI (EXISTE TAB1 'RELATION_3D');
  98. SI (EGA (TAB1.'RELATION_3D') VRAI);
  99. FLAGRELA = VRAI;
  100. BLPOUTJ = MOT 'BLPOUTJ';
  101. BLPOUT3D = MOT 'BLPOUT3D';
  102. SINON;
  103. FLAGRELA = FAUX;
  104. FINSI;
  105. SINON;
  106. FLAGRELA = FAUX;
  107. FINSI;
  108. *
  109. * si on fournit MATS
  110. *
  111. SI (EXISTE TAB1 'MATS');
  112. FLAGMATS = VRAI;
  113. MAT3D= MOT 'MAT3D';
  114. SINON;
  115. FLAGMATS = FAUX;
  116. NMATS = 0;
  117. FINSI;
  118. *
  119. * si on fournit VAIS
  120. *
  121. SI (EXISTE TAB1 'VAIS');
  122. FLAGVAIS = VRAI;
  123. TAB1. 'VAIS_3D'= TABLE;
  124. NVAIS = DIME (TAB1.'VAIS');
  125. VAI3D= TABLE;
  126. SINON;
  127. FLAGVAIS = FAUX;
  128. NVAIS = 0;
  129. FINSI;
  130. *
  131. * si on fournit VONS
  132. *
  133. SI (EXISTE TAB1 'VONS');
  134. FLAGVONS = VRAI;
  135. TAB1. 'VONS_3D'= TABLE;
  136. NVONS = DIME (TAB1.'VONS');
  137. VON3D= TABLE;
  138. SINON;
  139. FLAGVONS = FAUX;
  140. NVONS = 0;
  141. FINSI;
  142. *
  143. FINSI;
  144.  
  145. *
  146. * Fin de la lecture de la table d'entrée
  147. *
  148. * Génération du maillage
  149. *
  150. NBZONE = ENTIER ((DIME ZONMOD)/2.);
  151. *
  152. * On boucle sur les zones
  153. *
  154. REPETER LAB1 NBZONE;
  155. *
  156. I1= &LAB1;
  157. MESHPOUI = ZONMOD.(2*I1);
  158. MODPOUI = ZONMOD.((2*I1) - 1);
  159. MATPOUI = REDU MAT1 MODPOUI;
  160. *
  161. NB2= NBEL (ELEM MESHPOUI 'SEG2');
  162. *
  163. SI (NB2 > 0);
  164. *
  165. * On boucle sur les éléments
  166. *
  167. REPETER LAB2 NB2;
  168. I2 = &LAB2;
  169. MESHPOUJ = MESHPOUI ELEM SEG2 I2;
  170. PODEPOJ = (MESHPOUJ POIN 'INITIAL');
  171. POFIPOJ = (MESHPOUJ POIN 'FINAL');
  172. VEC0POJ = 0.5*(PODEPOJ PLUS POFIPOJ);
  173. VECXPOJ = POFIPOJ MOINS PODEPOJ;
  174. VECXPOJ = VECXPOJ/(NORME VECXPOJ);
  175. VECYPOJ = EXTR MATPOUI VECT 1 I2 1;
  176. VECYPOJ = VECYPOJ/(NORME VECYPOJ);
  177. VECYPOJ = VECYPOJ MOINS ((VECYPOJ PSCAL VECXPOJ)*VECXPOJ);
  178. SI ((NORM VECYPOJ) < 1.D-10);
  179. SI (VECXPOJ SCAL (1. 0. 0.) > 1.D-10);
  180. VECYPOJ = VECXPOJ PVEC (1. 0. 0.);
  181. SINON;
  182. VECYPOJ = VECXPOJ PVEC (0. 1. 0.);
  183. FINSI;
  184. FINSI;
  185. VECZPOJ = VECXPOJ PVEC VECYPOJ ;
  186. *
  187. *
  188. * Cas du modèle à fibre
  189. *
  190. SI (EXISTE MATPOUI 'MODS');
  191. *
  192. MODSEC = (EXTR MATPOUI MODS 1 I2 1);
  193. ZONSEC = EXTR MODSEC ZONE;
  194. *
  195. SINON;
  196. *
  197. * Cas des tuyaux
  198. *
  199. SI ((EXISTE MATPOUI 'EPAI') ET (EXISTE MATPOUI 'RAYO') );
  200. *
  201. EPATUY = (MAXI (EXCO MATPOUI 'EPAI'));
  202. RAYTUY = (MAXI (EXCO MATPOUI 'RAYO'));
  203. *
  204. P1S = (RAYTUY - (0.5 * EPATUY)) 0. 0.;
  205. P2S = (RAYTUY + (0.5 * EPATUY)) 0. 0.;
  206. *
  207. P12S = DROI NEPAIT P1S P2S;
  208. MESHSEC = P12S ROTA NCIRCT 360. (0. 0. 0.) (0. 0. 1.);
  209. *
  210. ZONSEC = TABLE;
  211. ZONSEC.1 = MESHSEC;
  212. ZONSEC.2 = MESHSEC;
  213. *
  214. *
  215. * Fin cas des tuyaux
  216. *
  217. SINON;
  218. *
  219. * Cas des poutres
  220. *
  221. SI ((EXISTE MATPOUI 'INRY') ET (EXISTE MATPOUI 'INRZ') );
  222. *
  223. INRY = (MAXI (EXCO MATPOUI 'INRY'));
  224. INRZ = (MAXI (EXCO MATPOUI 'INRZ'));
  225. *
  226. *
  227. SI (EGA FLAGPOUT 'CIRCULAIRE');
  228. *
  229. RAYO = ((2.D0*(INRY + INRZ))/PI)**0.25;
  230. P1S = RAYO 0. 0.;
  231. P2S = 0. RAYO 0.;
  232. P3S = ((-1.)*RAYO) 0. 0.;
  233. P4S = 0. ((-1.)*RAYO) 0.;
  234. *
  235. NDISCR = ENTIER (NCIRCP/4);
  236. *
  237. CERB = (CERC NDISCR P1S (0. 0. 0.) P2S) ET
  238. (CERC NDISCR P2S (0. 0. 0.) P3S) ET
  239. (CERC NDISCR P3S (0. 0. 0.) P4S) ET
  240. (CERC NDISCR P4S (0. 0. 0.) P1S);
  241. MESHSEC = SURF CERB 'PLANE';
  242. ZONSEC = TABLE;
  243. ZONSEC.1 = MESHSEC;
  244. ZONSEC.2 = MESHSEC;
  245. *
  246. SINON;
  247. LX = (144.*(INRZ**3)/INRY)**(1./8.);
  248. LY = (144.*(INRY**3)/INRZ)**(1./8.);
  249. P1S = (0.5*LX) ((-0.5)*LY) 0.;
  250. P2S = ((-0.5)*LX) ((-0.5)*LY) 0.;
  251. MESHSEC = (DROI NY P1S P2S) TRAN NZ (0. LY 0.);
  252. ZONSEC = TABLE;
  253. ZONSEC.1 = MESHSEC;
  254. ZONSEC.2 = MESHSEC;
  255. *
  256. FINSI;
  257. *
  258. FINSI;
  259. * Fin test poutre
  260. FINSI;
  261. * Fin test tuyau
  262. FINSI;
  263. * Fin test fibre
  264. *
  265. *
  266. REPETER LAB20 (ENTIER (0.5*(DIME ZONSEC)));
  267. I20 = &lab20;
  268. *
  269. MESHSECJ = ZONSEC.(2*I20);
  270. MODSECJ = ZONSEC.(2*I20 - 1);
  271. *
  272. MESHSECF = DEDU MESHSECJ
  273. ((0. 0. 0.) et (0. 0. 1.)
  274. et (1. 0. 0.) et (0. 1. 0.))
  275. (VEC0POJ et (VEC0POJ plus VECXPOJ)
  276. et (VEC0POJ plus VECYPOJ) et (VEC0POJ plus VECZPOJ));
  277. *
  278. * Génération du volume
  279. *
  280. SI (EGA MOTCLE 'GAUSS');
  281. VOL3DJ = MESHSECF;
  282. SINON;
  283. MeshSECF=MESHSECF PLUS ((-0.5)*(POFIPOJ MOINS PODEPOJ));
  284. MeshSECG=MESHSECF PLUS (POFIPOJ MOINS PODEPOJ);
  285. ELTYPE = ELEM MESHSECF TYPE;
  286. Ntype = DIME ELTYPE;
  287. REPETER LAB3 Ntype;
  288. EleType = (EXTR ELTYPE &LAB3);
  289. MESHB = ELEM MeshSECF EleType;
  290. MESHC = ELEM MeshSECG EleType;
  291. SI (EGA EleType SEG2);
  292. * Cas des SEGS
  293. MESHVol = MESHB TRAN 1 (POFIPOJ MOINS PODEPOJ);
  294. SINON;
  295. * Cas des TRIS et QUAS
  296. SI ((EGA EleType TRI3) OU (EGA EleType QUA4));
  297. MESHVol = MESHB VOLU MESHC 1;
  298. SINON;
  299. * Cas des POJS
  300. NBMESH = NBEL MESHB;
  301. REPETER LAB4 NBMESH;
  302. SI (&LAB4 EGA 1);
  303. MESHVol = DROI 1 (POIN MESHB &LAB4)
  304. (POIN MESHC &LAB4);
  305. SINON;
  306. MESHVola = DROI 1 (POIN MESHB &LAB4)
  307. (POIN MESHC &LAB4);
  308. MESHVol = MESHVol ET MESHVola;
  309. FINSI;
  310. FIN LAB4;
  311. *
  312. FINSI;
  313. FINSI;
  314. *
  315. ELIM 0.00001 (MESHVol et MESHC);
  316. *
  317. SI (EGA (TYPE VOL3DJ) MOT);
  318. VOL3DJ = MESHVol;
  319. SINON;
  320. VOL3DJ = VOL3DJ et MESHVol;
  321. FINSI;
  322. *
  323. FIN LAB3;
  324. FINSI;
  325. *
  326. SI ( EGA (TYPE VOL3DJJ) MOT);
  327. VOL3DJJ = VOL3DJ;
  328. VOL3DJ = MOT 'VOL3DJ';
  329. SINON;
  330. VOL3DJJ = VOL3DJJ ET VOL3DJ;
  331. VOL3DJ = MOT 'VOL3DJ';
  332. FINSI;
  333. *
  334. * Transfert des MATS sur le 3D
  335. *
  336. SI FLAGMATS;
  337. *
  338. MATJ = EXTR (REDU ((TAB1.'MATS')) MESHPOUJ)
  339. 1 1 1 'MATS';
  340. MATJ0 = (CHAN CHPO (REDU MATJ MODSECJ) MODSECJ);
  341. MATJ0 = 'CHAN' 'ATTRIBUT' MATJ0 'NATURE' 'DISCRET';
  342. *
  343. SI (EGA MOTCLE 'GAUSS');
  344. MATJ = DEDU MATJ0 TRAN MESHSECJ MESHSECF;
  345. SINON;
  346. mess 'Option disponible seulement pour GAUSS';
  347. FINSI;
  348. *
  349. *
  350. SI ((EGA (TYPE MAT3D) MOT));
  351. MAT3D = MATJ ;
  352. MATJ = MOT 'VAIJ';
  353. SINON;
  354. MAT3D = MAT3D ET MATJ;
  355. MATJ = MOT 'MATJ';
  356. FINSI;
  357. FINSI;
  358. *
  359. * Fin pour MATS
  360. * Transfert des VAIS sur le 3D
  361. *
  362. SI FLAGVAIS;
  363. *
  364. REPETER LAB6 NDEFO;
  365. i6 = (INDEX (TAB1.'VAIS')).&LAB6;
  366. *
  367. VAIJ = EXTR (REDU ((TAB1.'VAIS'). i6) MESHPOUJ)
  368. 1 1 1 'VAIS';
  369. VAIJ0 =
  370. (CHAN CHPO (REDU VAIJ MODSECJ) MODSECJ);
  371. VAIJ0 = 'CHAN' 'ATTRIBUT' VAIJ0 'NATURE' 'DISCRET';
  372. *
  373. SI (EGA MOTCLE 'GAUSS');
  374. VAIJ = DEDU VAIJ0 TRAN MESHSECJ MESHSECF;
  375. SINON;
  376. mess 'Option disponible seulement pour GAUSS';
  377. FINSI;
  378. *
  379. *
  380. SI (NON (EXISTE VAI3D i6));
  381. VAI3D . i6= VAIJ ;
  382. VAIJ = MOT 'VAIJ';
  383. SINON;
  384. VAI3D. i6 =(VAI3D. i6) ET VAIJ;
  385. VAIJ = MOT 'VAIJ';
  386. FINSI;
  387. *
  388. FIN LAB6;
  389. *
  390. FINSI;
  391. *
  392. * Fin pour VAIS
  393. *
  394. *
  395. * Transfert des VONS sur le 3D
  396. *
  397. SI FLAGVONS;
  398. *
  399. REPETER LAB6 NVONS;
  400. i6 = (INDEX (TAB1.'VONS')).&LAB6;
  401. *
  402. VONJ = EXTR (REDU ((TAB1.'VONS'). i6) MESHPOUJ)
  403. 1 1 1 VONS;
  404. VONJ0 = 'CHAN' 'CHPO' (REDU VONJ MODSECJ) MODSECJ;
  405. VONJ0 = EXCO VONJ0 (mots SMXX SMXY SMXZ)
  406. (mots SMXX SMXY SMXZ);
  407. VONJ0 = 'CHAN' 'ATTRIBUT' VONJ0 'NATURE' 'DISCRET';
  408. *
  409. SI (EGA MOTCLE 'GAUSS');
  410. VONJ = DEDU VONJ0 TRAN MESHSECJ MESHSECF;
  411. SINON;
  412. mess 'Option disponible seulement pour GAUSS';
  413. FINSI;
  414. *
  415. *
  416. SI (NON (EXISTE VON3D i6));
  417. VON3D . i6= VONJ ;
  418. VONJ = MOT 'VONJ';
  419. SINON;
  420. VON3D. i6 =(VON3D. i6) ET VONJ;
  421. VONJ = MOT 'VONJ';
  422. FINSI;
  423. *
  424. FIN LAB6;
  425. *
  426. FINSI;
  427. *
  428. * Fin du VONS
  429. *
  430. *
  431. * Ecriture des RELA pour les poutres
  432. *
  433. SI FLAGRELA;
  434. BLPOUTJ = (RELA CORI DEPL ROTA PODEPOJ MeshSECF) ET
  435. (RELA CORI DEPL ROTA POFIPOJ MeshSECG);
  436. SI ((EGA (TYPE BLPOUT3D) MOT));
  437. BLPOUT3D = BLPOUTJ ;
  438. BLPOUTJ = MOT 'BLPOUTJ';
  439. SINON;
  440. BLPOUT3D = BLPOUT3D ET BLPOUTJ ;
  441. BLPOUTJ = MOT 'BLPOUTJ';
  442. FINSI;
  443. FINSI;
  444. *
  445. *
  446. * Fin RELA pour les poutres
  447. *
  448. FIN LAB20;
  449. *
  450. * Calcul des deformees sur le 3D
  451. *
  452. SI FLAGDEFO;
  453. *
  454. REPETER LAB5 NDEFO;
  455. i5 = (INDEX (TAB1.'DEPLACEMENTS')). &LAB5;
  456. *
  457. DEPJ = REDU ((TAB1.'DEPLACEMENTS'). i5) MESHPOUJ;
  458. DEPXINI = (EXTR DEPJ PODEPOJ UX);
  459. DEPYINI = (EXTR DEPJ PODEPOJ UY);
  460. DEPZINI = (EXTR DEPJ PODEPOJ UZ);
  461. DEPXFIN = (EXTR DEPJ POFIPOJ UX);
  462. DEPYFIN = (EXTR DEPJ POFIPOJ UY);
  463. DEPZFIN = (EXTR DEPJ POFIPOJ UZ);
  464. ROTXINI = (EXTR DEPJ PODEPOJ RX);
  465. ROTYINI = (EXTR DEPJ PODEPOJ RY);
  466. ROTZINI = (EXTR DEPJ PODEPOJ RZ);
  467. ROTXFIN = (EXTR DEPJ POFIPOJ RX);
  468. ROTYFIN = (EXTR DEPJ POFIPOJ RY);
  469. ROTZFIN = (EXTR DEPJ POFIPOJ RZ);
  470. *
  471. COOUX = EXCO (COOR VOL3DJJ 1) SCAL ;
  472. COOUX0 = MANU CHPO VOL3DJJ 1 SCAL
  473. ( (0.5*((COOR PODEPOJ 1) + (COOR POFIPOJ 1))))
  474. NATURE DISCRET;
  475. COOUY = EXCO (COOR VOL3DJJ 2) SCAL ;
  476. COOUY0 = MANU CHPO VOL3DJJ 1 SCAL
  477. ( (0.5*((COOR PODEPOJ 2) + (COOR POFIPOJ 2))))
  478. NATURE DISCRET;
  479. COOUZ = EXCO (COOR VOL3DJJ 3) SCAL ;
  480. COOUZ0 = MANU CHPO VOL3DJJ 1 SCAL
  481. ( (0.5*((COOR PODEPOJ 3) + (COOR POFIPOJ 3))))
  482. NATURE DISCRET;
  483. *
  484. DEPJ0 = MANU CHPO VOL3DJJ 3
  485. UX (0.5*(DEPXINI + DEPXFIN))
  486. UY (0.5*(DEPYINI + DEPYFIN))
  487. UZ (0.5*(DEPZINI + DEPZFIN))
  488. NATURE DISCRET;
  489. *
  490. DEPJ = DEPJ0 ET
  491. (EXCO ( ((0.5*(ROTYINI + ROTYFIN))*(COOUZ - COOUZ0))
  492. - ((0.5*(ROTZINI + ROTZFIN))*(COOUY - COOUY0)) ) SCAL UX
  493. NATURE DISCRET);
  494. DEPJ = (DEPJ) ET
  495. (EXCO ( ((0.5*(ROTZINI + ROTZFIN))*(COOUX-COOUX0))
  496. - ((0.5*(ROTXINI + ROTXFIN))*(COOUZ - COOUZ0)) ) SCAL UY
  497. NATURE DISCRET) ;
  498. DEPJ = (DEPJ) ET
  499. (EXCO ( ((0.5*(ROTXINI + ROTXFIN))*(COOUY-COOUY0))
  500. - ((0.5*(ROTYINI + ROTYFIN))*(COOUX - COOUX0)) ) SCAL UZ
  501. NATURE DISCRET) ;
  502. *
  503. *
  504. SI (NON (EXISTE DEP3D i5));
  505. DEP3D . i5= DEPJ ;
  506. DEPJ = MOT 'DEPJ';
  507. SINON;
  508. DEP3D. i5 =(DEP3D. i5) ET DEPJ;
  509. DEPJ = MOT 'DEPJ';
  510. FINSI;
  511. *
  512. FIN LAB5;
  513. *
  514. FINSI;
  515. *
  516. * Fin calcul des deformees sur le modele 3D
  517. *
  518. SI ( EGA (TYPE MESH3D) MOT);
  519. MESH3D = VOL3DJJ;
  520. VOL3DJJ = MOT 'VOL3DJJ';
  521. SINON;
  522. MESH3D = MESH3D ET VOL3DJJ;
  523. VOL3DJJ = MOT 'VOL3DJJ';
  524. FINSI;
  525. *
  526. * Fin boucle sur les éléments
  527. *
  528. FIN LAB2;
  529. *
  530. FINSI;
  531. *
  532. *
  533. * Fin boucle sur les sous zones
  534. *
  535. FIN LAB1;
  536. *
  537. * On stocke les résultats sur le maillage 3D
  538. *
  539. SI FLAGDEFO;
  540. REPETER LAB6 NDEFO;
  541. i6 = &lab6;
  542. (TAB1.'DEPLACEMENTS_3D'). i6 = DEP3D.i6;
  543. (TAB1.'DEFORMEES'). i6 = DEFO MESH3D (DEP3D.i6) AMPDEF;
  544. FIN LAB6;
  545. FINSI;
  546. SI FLAGVAIS;
  547. REPETER LAB6 NVAIS;
  548. i6 = &lab6;
  549. (TAB1.'VAIS_3D'). i6 = VAI3D.i6;
  550. FIN LAB6;
  551. FINSI;
  552. SI FLAGVONS;
  553. REPETER LAB6 NVONS;
  554. i6 = &lab6;
  555. (TAB1.'VONS_3D'). i6 = VON3D.i6;
  556. FIN LAB6;
  557. FINSI;
  558. SI FLAGMATS;
  559. TAB1.'MATS_3D' = MAT3D;
  560. FINSI;
  561. SI FLAGRELA;
  562. TAB1.'RELATION_3D' = BLPOUT3D;
  563. FINSI;
  564. *
  565. 'FINPROC' MESH3D;
  566. *
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  

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