Télécharger chasup.eso

Retour à la liste

Numérotation des lignes :

  1. C CHASUP SOURCE CB215821 17/11/30 21:15:30 9640
  2. SUBROUTINE CHASUP(IPMODL,IPOI1,IPOI2,IRET,IPLAC)
  3. C---------------------------------------------------------------------
  4.  
  5. C ENTREES:
  6. C
  7. C IPMODL Pointeur sur un MMODEL
  8. C IPOI1 Pointeur sur un MCHAML
  9. C IPLAC Indique le type de support demandé :
  10. C 1 scalaire aux NOEUDS
  11. C 2 scalaire au CENTRE DE GRAVITE
  12. C 3 scalaire aux points d'integration de la RAIDEUR
  13. C 4 scalaire aux points d'integration de la MASSE
  14. C 5 scalaire aux points de CONTRAINTES
  15. C
  16. C AM 14/6/07 SI IPLAC EST NEGATIF, ON RECUPERE UN CHAMP QUI
  17. C NE CONTIENT PAS LES COMPOSANTES COMPLEXES (NON SCALAIRES)
  18. C QU'ON A N'A PAS PU CHANGER
  19. C SINON, ON SORT EN ERREUR
  20. C
  21. C SORTIE:
  22. C
  23. C IPOI2 Pointeur sur un MCHAML
  24. C IRET =0 Si tout est ok
  25. C Sinon contient le numero d'erreur
  26. C
  27. C I.MONNIER le 31.05.90
  28. C
  29. C---------------------------------------------------------------------
  30. IMPLICIT INTEGER(I-N)
  31. IMPLICIT REAL*8(A-H,O-Z)
  32. -INC CCOPTIO
  33. -INC SMMODEL
  34. -INC SMCHAML
  35. -INC SMELEME
  36. -INC SMINTE
  37. -INC SMCOORD
  38. CHARACTER*8 CHARIN,CHARTY
  39. C
  40. SEGMENT SWORK
  41. REAL*8 VAL1(NBPGA1),VAL2(NBPGAU),VALN(NBNN)
  42. REAL*8 SHP(6,NBNN) ,XE(3,NBNN)
  43. ENDSEGMENT
  44. C
  45. SEGMENT SWORK2
  46. INTEGER LETAB(N22)
  47. ENDSEGMENT
  48. *
  49. * NBPGA1,NBPGAU DESIGNENT LES TAILLES MAX DES CHAMPS CH1 ET CH2
  50. * N1PTE1,N1PTEL DESIGNENT LES TAILLES EFFECTIVES DE CES CHAMPS
  51. *
  52. SEGMENT INFO
  53. INTEGER INFELL(JG)
  54. ENDSEGMENT
  55. C
  56. IRET=0
  57. C
  58. C ACTIVATION DU MODELE
  59. C
  60. MMODEL=IPMODL
  61. SEGACT MMODEL
  62. NSOUS1=KMODEL(/1)
  63. C
  64. C ACTIVATION DES MCHELM
  65. C
  66. MCHEL1 =IPOI1
  67. SEGACT MCHEL1
  68. NSOUS=MCHEL1.ICHAML(/1)
  69. IF(NSOUS.GT.NSOUS1)THEN
  70. * on va essayer de reduir le champ
  71. call reduaf(mchel1,mmodel,mchel2,0,ire,kerre)
  72. ** if (ire.ne.1) then
  73. ** call erreur(kerre)
  74. ** IRET=553
  75. ** SEGDES MMODEL,MCHEL1
  76. ** RETURN
  77. ** endif
  78. if (ire.eq.1) mchel1=mchel2
  79. SEGACT MCHEL1,mmodel
  80. NSOUS=MCHEL1.ICHAML(/1)
  81. ENDIF
  82. N1=NSOUS
  83. L1=MCHEL1.TITCHE(/1)
  84. N3=MCHEL1.INFCHE(/2)
  85. NINF=N3
  86. IF (N3.LT.6) N3=6
  87. SEGINI MCHELM
  88. TITCHE=MCHEL1.TITCHE
  89. IFOCHE=IFOUR
  90. IPOI2=MCHELM
  91. iresu=0
  92. C
  93. C ON BOUCLE SUR LES SOUS-ZONES DU MCHAML
  94. C
  95. DO 100 ISOUS=1,NSOUS
  96. *
  97. IMACHE(ISOUS)=MCHEL1.IMACHE(ISOUS)
  98. CONCHE(ISOUS)=MCHEL1.CONCHE(ISOUS)
  99. DO 191 IP=1,NINF
  100. INFCHE(ISOUS,IP)=MCHEL1.INFCHE(ISOUS,IP)
  101. 191 CONTINUE
  102. C
  103. C MISE EN CONCORDANCE DES POINTEURS DE MAILLAGE
  104. C
  105. MELEME=IMACHE(ISOUS)
  106. INS=0
  107. DO 151 IO=1,NSOUS1
  108. IMODEL=KMODEL(IO)
  109. SEGACT IMODEL
  110. CALL PLACE(FORMOD,FORMOD(/2),IDARC,'DARCY')
  111. IPMAIL=IMAMOD
  112. C
  113. C CAS DE LA FORMULATION DARCY ON VA EXTRAIRE LE MAILLAGE SOMMET
  114. IF(IDARC.NE.0)THEN
  115. CALL LEKMOD(MMODEL,IPTABL,INEFMD)
  116. CHARIN = 'MAILLAGE'
  117. CALL LEKTAB(IPTABL,CHARIN, IOBRE)
  118. IF (IERR.NE.0) RETURN
  119. IPT1 = IOBRE
  120. IPMAIL= IOBRE
  121. segact ipt1
  122. IF(N1.GT.1.and.ipt1.lisous(/1).ge.n1)THEN
  123. SEGACT IPT1
  124. IPMAIL= IPT1.LISOUS(ISOUS)
  125. SEGDES IPT1
  126. ENDIF
  127. ENDIF
  128. IF (IPMAIL.EQ.MELEME) INS=INS+1
  129. 151 CONTINUE
  130. DO 150 IO=1,NSOUS1
  131. IMODEL=KMODEL(IO)
  132. SEGACT IMODEL
  133. CALL PLACE(FORMOD,FORMOD(/2),IDARC,'DARCY')
  134. IPMAIL=IMAMOD
  135. C
  136. C CAS DE LA FORMULATION DARCY ON VA EXTRAIRE LE MAILLAGE SOMMET
  137. IF(IDARC.NE.0)THEN
  138. CALL LEKMOD(MMODEL,IPTABL,INEFMD)
  139. CHARIN = 'MAILLAGE'
  140. CALL LEKTAB(IPTABL,CHARIN, IOBRE)
  141. IF (IERR.NE.0) RETURN
  142. IPT1 = IOBRE
  143. IPMAIL= IOBRE
  144. SEGACT IPT1
  145. IF(N1.GT.1.and.ipt1.lisous(/1).ge.n1)THEN
  146. IPMAIL= IPT1.LISOUS(ISOUS)
  147. SEGDES IPT1
  148. ENDIF
  149. ENDIF
  150. IF (IPMAIL.EQ.MELEME.AND.(INS.GE.1.OR.
  151. > CONCHE(ISOUS).EQ.CONMOD)) GOTO 160
  152. SEGDES IMODEL
  153. 150 CONTINUE
  154. *
  155. IRET=472
  156. SEGDES,MCHEL1,MMODEL
  157. SEGSUP MCHELM
  158. RETURN
  159. *
  160. 160 MELE=NEFMOD
  161.  
  162. * write(6,*) 'mele ',mele
  163. * on saute si element sans les supports
  164. if(mele.eq.22) go to 100
  165. if(mele.eq.259) go to 100
  166. if(mele.eq.107) go to 100
  167. if(mele.eq.165) go to 100
  168. if(mele.eq.261) go to 100
  169.  
  170. *
  171. * DANS LE CAS DES COQUES INTEGREES ON SORT EN ERREUR
  172. *
  173. IF (NINF.LT.4.OR.MCHEL1.INFCHE(ISOUS,4).EQ.0) THEN
  174. MINTE1=0
  175. IPLACA=0
  176. ELSE
  177. MINTE1=MCHEL1.INFCHE(ISOUS,4)
  178. IPLACA=MCHEL1.INFCHE(ISOUS,6)
  179. ENDIF
  180. * write(6,*) 'chasup minte1 ninf', ninf,minte1
  181. C
  182. if (formod(1).eq.'LIAISON') then
  183. IPLAC1 = 1
  184. else
  185. IPLAC1 = ABS(IPLAC)
  186. C le modele contient t il de la thermique ?
  187. C s'il y a de la thermique le segment d'integration est particulier
  188. IF ( FORMOD(1).EQ.'THERMIQUE' .OR.
  189. & FORMOD(1).EQ.'DIFFUSION' ) THEN
  190. nmat = matmod(/2)
  191. icov = 0
  192. C* CALL PLACE(matmod,nmat,icov,'CONVECTION')
  193. CALL PLACE(matmod,nmat,iray,'RAYONNEMENT')
  194. IF (icov+iray.EQ.0) THEN
  195. IF ( IPLAC1 .NE. 1 ) IPLAC1 = 6
  196. ENDIF
  197. ENDIF
  198. endif
  199. C
  200. IF(IPLAC1.EQ.6)THEN
  201. CALL TSHAPE(MELE,'GAUSS',IPMINT)
  202. IF ( IERR .NE. 0) GOTO 665
  203. MINTE=IPMINT
  204. MELGEO=NUMGEO(MELE)
  205. ELSE
  206. if(2+iplac1.gt.infmod(/1))then
  207. CALL ELQUOI(MELE,0,IPLAC1,IPTR2,IMODEL)
  208. IF ( IERR .NE. 0) GOTO 665
  209. INFO=IPTR2
  210. MINTE=INFELL(11)
  211. MELGEO=INFELL(14)
  212. SEGSUP,INFO
  213. else
  214. minte=infmod(2+iplac1)
  215. MELGEO=INFELE(14)
  216. endif
  217. * write(6,*) ' apres zelquoi minte' , minte
  218. ENDIF
  219. INFCHE(ISOUS,4)=MINTE
  220. IF(IPLAC1.EQ.1)INFCHE(ISOUS,4)=0
  221. INFCHE(ISOUS,6)=IPLAC1
  222. C
  223. C ON RECUPERE LE NOMBRE D ELEMENTS
  224. C
  225. SEGACT MELEME
  226. NBNN =NUM(/1)
  227. NBELEM=NUM(/2)
  228. C
  229. C ON RECUPERE LE NOMBRE DE POINTS SUPPORT
  230. C NBPGA1 POUR L'ANCIEN CHAMP ET NBPGAU POUR LE NOUVEAU
  231. C
  232. IF(MINTE1.NE.0)THEN
  233. SEGACT MINTE1
  234. NBPGA1 = MINTE1.SHPTOT(/3)
  235. ELSE
  236. NBPGA1=NBNN
  237. ENDIF
  238. if (minte.eq.0) then
  239. call erreur(5)
  240. return
  241. endif
  242. SEGACT MINTE
  243. NBPGAU = SHPTOT(/3)
  244. nbpga1=max(nbpga1,nbpgau)
  245. * write(6,*) ' nbpgau,nbpga1',nbpgau,nbpga1
  246. C
  247. NEL =NBELEM
  248. SEGINI SWORK
  249. C
  250. C PREPARATION POUR CREATION DU MCHAML
  251. C
  252. MCHAM1=MCHEL1.ICHAML(ISOUS)
  253. SEGACT MCHAM1
  254. C
  255. N22 = MCHAM1.NOMCHE(/2)
  256. *
  257. * SI IPLAC < 0, ON CHERCHE LE NOMBRE DE COMPOSANTES A CONSERVER
  258. *
  259. SEGINI SWORK2
  260. *
  261. IF(IPLAC.GE.0) THEN
  262. N2 = N22
  263. DO ICOMP=1,N22
  264. LETAB(ICOMP) = ICOMP
  265. ENDDO
  266. *
  267. ELSE
  268. *
  269. * BOUCLE SUR LES COMPOSANTES
  270. *
  271. JECO = 0
  272. DO 170 ICOMP=1,N22
  273. C
  274. CHARTY=MCHAM1.TYPCHE(ICOMP)
  275. MELVA1=MCHAM1.IELVAL(ICOMP)
  276. SEGACT MELVA1
  277. LETAB(ICOMP) = 0
  278. *
  279. IF(CHARTY(1:6).EQ.'REAL*8') THEN
  280. JECO = JECO + 1
  281. LETAB(ICOMP) = JECO
  282. ENDIF
  283. *
  284. * cas de variables complexes
  285. *
  286. IF(CHARTY(1:8).EQ.'POINTEUR') THEN
  287. N2PTE1=MELVA1.IELCHE(/1)
  288. *
  289. * ... Comme on ne sait pas extrapoler ou interpoler de variables
  290. * composées, on n'en accepte qu'une par élément ...
  291.  
  292. IF(N2PTE1.EQ.1) THEN
  293. JECO = JECO + 1
  294. LETAB(ICOMP) = JECO
  295. ENDIF
  296. ENDIF
  297. ** SEGDES MELVA1
  298. 170 CONTINUE
  299. N2 = JECO
  300. *
  301. ENDIF
  302. *
  303. * CREATION DU MCHAML
  304. *
  305. SEGINI MCHAML
  306. iresu=iresu+1
  307. ICHAML(iresu)=MCHAML
  308. C
  309. C BOUCLE SUR LES COMPOSANTES EN ENTREE
  310. C
  311. DO 180 ICOMP=1,N22
  312. C
  313. JCOMP = LETAB(ICOMP)
  314. IF(JCOMP.EQ.0) GO TO 180
  315.  
  316. NOMCHE(JCOMP)=MCHAM1.NOMCHE(ICOMP)
  317. TYPCHE(JCOMP)=MCHAM1.TYPCHE(ICOMP)
  318. C
  319. MELVA1=MCHAM1.IELVAL(ICOMP)
  320. * write (6,*) ' dans chasup melva1 ',melva1
  321. SEGACT MELVA1
  322. *
  323. * RECHERCHE DES TAILLES DU NOUVEAU CHAMELEM - dans le cas scalaire
  324. *
  325. IF(TYPCHE(JCOMP)(1:6).EQ.'REAL*8') THEN
  326. N1PTE1=MELVA1.VELCHE(/1)
  327. IF (N1PTE1.EQ.1) THEN
  328. N1PTEL=1
  329. ELSE
  330. N1PTEL=NBPGAU
  331. ENDIF
  332. N1EL =MELVA1.VELCHE(/2)
  333. *
  334. * PETIT TEST DE COMPATIBILITE DES NOMBRES D'ELEMENTS
  335. *
  336. IF(N1EL.NE.NEL.AND.N1EL.NE.1.AND.NEL.NE.1) THEN
  337. ** SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  338. SEGSUP SWORK,SWORK2,MCHAML
  339. IRET=146
  340. MOTERR(1:8)='CHASUP '
  341. GO TO 665
  342. ENDIF
  343. *
  344. N1PAUX=N1PTE1
  345. C
  346. C-----------------------------------------------------------------------
  347. C PETIT TEST POUR LE COQ4
  348. C SI LE NOMBRE DE POINTS DE GAUSS VAUT 5 , ON NE PREND QUE
  349. C LES 4 PREMIERS , LE 5-EME SERVANT UNIQUEMENT AU CISAILLEMENT
  350. C
  351. IF (MELE.EQ.49.AND.N1PAUX.EQ.5) N1PAUX=4
  352. C-----------------------------------------------------------------------
  353. C
  354. ELSE
  355. N1PTEL=0
  356. N1EL=0
  357. ENDIF
  358. *
  359. * ... Et dans le cas de variables complexes ...
  360. *
  361. IF(TYPCHE(JCOMP)(1:8).EQ.'POINTEUR') THEN
  362. N2PTE1=MELVA1.IELCHE(/1)
  363. IF (N2PTE1.EQ.1) THEN
  364. N2PTEL=1
  365. ELSE
  366. N2PTEL=NBPGAU
  367. ENDIF
  368. N2EL =MELVA1.IELCHE(/2)
  369. *
  370. * ... Comme on ne sait pas extrapoler ou interpoler de variables
  371. * composées, on n'en accepte qu'une par élément ...
  372.  
  373. * IF(N2PTEL.NE.1) THEN
  374. * SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  375. * SEGSUP SWORK,SWORK2,MCHAML
  376. * IRET=755
  377. * GO TO 665
  378. * ENDIF
  379. *
  380. * PETIT TEST DE COMPATIBILITE DES NOMBRES D'ELEMENTS
  381. *
  382. IF(N2EL.NE.NEL.AND.N2EL.NE.1.AND.NEL.NE.1) THEN
  383. ** SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  384. SEGSUP SWORK,SWORK2,MCHAML
  385. IRET=146
  386. MOTERR(1:8)='CHASUP '
  387. GO TO 665
  388. ENDIF
  389.  
  390. ELSE
  391. N2PTEL=0
  392. N2EL=0
  393. ENDIF
  394. SEGINI MELVAL
  395. IELVAL(JCOMP)=MELVAL
  396. *
  397. * TRAITEMENT IMMEDIAT SI CHAMP CONSTANT
  398. *
  399. * if(iplac1.eq.4) write(6,*)' n2ptel n1ptel',n2ptel,n1ptelq
  400. IF(n2ptel.ne.0) then
  401. IF(N2PTEL.EQ.1) THEN
  402. DO 4119 IEL=1,N2EL
  403. IELCHE(1,IEL)=MELVA1.IELCHE(1,IEL)
  404. 4119 CONTINUE
  405. C* ELSE IF (N2PTEL.NE.1) THEN
  406. ELSE
  407. IF (MINTE.NE.MINTE1. AND. IPLAC1.NE.IPLACA) THEN
  408. ** SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  409. SEGSUP SWORK,SWORK2,MCHAML
  410. IRET=755
  411. GO TO 665
  412. ENDIF
  413. DO 4109 IGAU=1,N2PTEL
  414. DO 4109 IEL=1,N2EL
  415. IELCHE(IGAU,IEL)=MELVA1.IELCHE(IGAU,IEL)
  416. 4109 CONTINUE
  417. ENDIF
  418. else
  419. IF(N1PTE1.EQ.1) THEN
  420. DO 4120 IEL=1,N1EL
  421. VELCHE(1,IEL)=MELVA1.VELCHE(1,IEL)
  422. 4120 CONTINUE
  423. *
  424. ELSE
  425. *
  426. * write (6,*) melva1.velche(/1),melva1.velche(/2)
  427.  
  428. DO 3120 IEL=1,NEL
  429. IF(IEL.GT.1.AND.N1EL.EQ.1) GO TO 3130
  430. DO 3121 IGAU=1,N1PTE1
  431. VAL1(IGAU)=MELVA1.VELCHE(IGAU,IEL)
  432. 3121 CONTINUE
  433.  
  434. * write(6,*) 'MINTE1 = ',minte1
  435.  
  436. C
  437. C 1-ER CAS : LE CHAMELEM N'EST PAS AUX NOEUDS
  438. C
  439. IF(MINTE1.NE.0)THEN
  440. C
  441. C MEME SUPPORT? ( attention test sur iplaca et iplac1 pour DKT)
  442. C
  443. * write(6,*) ' meme support?',minte,minte1,iplac1,iplaca
  444. IF(MINTE.EQ.MINTE1. OR. IPLAC1.eq.IPLACA) THEN
  445. DO 3124 IGAU=1,N1PTE1
  446. VELCHE(IGAU,IEL)=VAL1(IGAU)
  447. 3124 CONTINUE
  448. C
  449. C SUPPORTS DIFFERENTS
  450. C
  451. ELSE
  452. C
  453. C COQUE INTEGREE OU PAS ?
  454. C
  455. IF(INFMOD(/1).NE.0)THEN
  456. NPINT=INFMOD(1)
  457. ELSE
  458. NPINT=0
  459. ENDIF
  460. IF (NPINT.NE.0.AND.NPINT.NE.1)THEN
  461. IRET = 19
  462. ** SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  463. SEGSUP SWORK,SWORK2,MCHAML,MELVAL
  464. GO TO 665
  465. ENDIF
  466. C
  467. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IEL,XE)
  468. CALL QUEDIM(MELGEO,KERRE)
  469. CALL CH1CH2(MELE,MINTE,MINTE1,N1PTEL,N1PAUX,NBNN,
  470. & SWORK,KERRE)
  471. IF(KERRE.NE.0) THEN
  472. IRET=KERRE
  473. ** SEGDES MELVA1,MELEME,IMODEL,MCHAM1
  474. SEGSUP SWORK,SWORK2,MCHAML,MELVAL
  475. GO TO 665
  476. ENDIF
  477. *
  478. DO 3122 IGAU=1,N1PTEL
  479. VELCHE(IGAU,IEL)=VAL2(IGAU)
  480. 3122 CONTINUE
  481. ENDIF
  482. C
  483. C 2-EME CAS : LE CHAMELEM EST AUX NOEUDS
  484. C
  485. ELSE
  486. *
  487. * AM 1/4/16 CAS PARTICULIER DES JOINTS
  488. *
  489. IF( MELGEO.EQ.12.OR.MELGEO.EQ.13
  490. & .OR.MELGEO.EQ.29.OR.MELGEO.EQ.30
  491. & .OR.MELGEO.EQ.31) THEN
  492. *
  493. IF(((IPLACA.EQ.0.OR.IPLACA.EQ.1).AND.IPLAC1.EQ.1)
  494. & .AND.(N1PTEL.EQ.N1PTE1)) THEN
  495. DO 3115 IGAU=1,N1PTE1
  496. VELCHE(IGAU,IEL)=VAL1(IGAU)
  497. 3115 CONTINUE
  498. ELSE
  499. *
  500. IDECA=0
  501. IF(MELGEO.EQ.29) IDECA=2
  502. IF(MELGEO.EQ.30) IDECA=3
  503. IF(MELGEO.EQ.31) IDECA=4
  504. NBNOU=NBNN-IDECA
  505. NBNOV=SHPTOT(/2)-IDECA
  506. *
  507. IF(NOMCHE(JCOMP).EQ.'P'.OR.NOMCHE(JCOMP).EQ.'PQ'
  508. & .OR.NOMCHE(JCOMP).EQ.'TP') THEN
  509. DO 3117 IGAU=1,N1PTEL
  510. VALG=0.D0
  511. DO 3116 INO=1,IDECA
  512. INO1 = NBNOU + INO
  513. INO2 = NBNOV + INO
  514. VALG=VALG+SHPTOT(1,INO2,IGAU)*VAL1(INO1)
  515. 3116 CONTINUE
  516. VELCHE(IGAU,IEL)=VALG
  517. 3117 CONTINUE
  518. *
  519. ELSE
  520. DO 3119 IGAU=1,N1PTEL
  521. VALG=0.D0
  522. DO 3118 INO=1,NBNOU
  523. VALG=VALG+SHPTOT(1,INO,IGAU)*VAL1(INO)
  524. 3118 CONTINUE
  525. VELCHE(IGAU,IEL)=VALG/2.D0
  526. 3119 CONTINUE
  527. ENDIF
  528. ENDIF
  529. *
  530. ELSE
  531. *
  532. DO 3123 IGAU=1,N1PTEL
  533. VALG=0.D0
  534. DO 3125 INO=1,NBNN
  535. VALG=VALG+SHPTOT(1,INO,IGAU)*VAL1(INO)
  536. 3125 CONTINUE
  537. VELCHE(IGAU,IEL)=VALG
  538. 3123 CONTINUE
  539. ENDIF
  540.  
  541. ENDIF
  542. 3120 CONTINUE
  543. 3130 CONTINUE
  544. *
  545. ENDIF
  546. endif
  547. ** SEGDES MELVAL,MELVA1
  548. SEGACT MELVAL
  549. 180 CONTINUE
  550. SEGSUP SWORK,SWORK2
  551. SEGDES MCHAML,MCHAM1,IMODEL,MELEME
  552. *
  553. IF (MINTE.NE.0) SEGDES MINTE
  554. IF (MINTE1.NE.0) SEGDES MINTE1
  555. 100 CONTINUE
  556. if (iresu.ne.nsous) then
  557. n1=iresu
  558. segadj mchelm
  559. endif
  560. 665 CONTINUE
  561. SEGDES MCHELM,MCHEL1
  562. SEGDES MMODEL
  563. CONTINUE
  564. RETURN
  565. END
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  

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