Télécharger ylap13.eso

Retour à la liste

Numérotation des lignes :

ylap13
  1. C YLAP13 SOURCE CB215821 20/11/25 13:44:03 10792
  2. SUBROUTINE YLAP13(MU,KAPPA,CV,IROC,IVITC,IGRVC,
  3. & IGRTC,IVIMP,ITAUIM,IQIMP,
  4. & MELEMC,MELEMF,MELEFL,ISURF,INORM,IDIAM,
  5. & ICHFLU,DT)
  6. C
  7. C**** Traitement des conditions aux bords
  8. C
  9. C**** 'VIMP' : la vitesse imposé n'importe ou!
  10. C
  11. C 'QIMP' : flux de chaleur imposé n'importe ou
  12. C
  13. C 'TAUI' : tenseur de contraintes visqueux imposé n'importe ou
  14. C
  15.  
  16. IMPLICIT INTEGER(I-N)
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. -INC CCREEL
  21. -INC SMCHPOI
  22. -INC SMELEME
  23. -INC SMCOORD
  24. -INC SMLENTI
  25. -INC SMLMOTS
  26. C
  27. POINTEUR MPROC.MPOVAL, MPVITC.MPOVAL, MPGRVF.MPOVAL,
  28. & MPGRTF.MPOVAL,
  29. & MPVIMP.MPOVAL, MPTAUI.MPOVAL, MPQIMP.MPOVAL,
  30. & MPSURF.MPOVAL, MPNORM.MPOVAL, MPDIAM.MPOVAL,
  31. & MPFLUX.MPOVAL
  32. C
  33. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  34. POINTEUR MLCENT.MLENTI,MLEVIM.MLENTI,MLEQIM.MLENTI,MLETAI.MLENTI
  35. C
  36. C**** Variables de COOPTIO
  37. C
  38. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  39. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  40. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  41. C & ,IECHO, IIMPI, IOSPI
  42. C & ,IDIM
  43. CC & ,MCOORD
  44. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  45. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  46. C & ,NORINC,NORVAL,NORIND,NORVAD
  47. C & ,NUCROU, IPSAUV
  48. C
  49. INTEGER IROC,IVITC,IGRVC,IGRTC,IVIMP,ITAUIM,IQIMP
  50. & ,ISURF,INORM,IDIAM,ICHFLU
  51. & ,NFAC, NLCF, NGCF, NGCF1, NGCEG, NGCED
  52. & ,NLCEG,NLCED,NLFVI,NLFTI,NLFQI
  53. & , ICOORX, IGEOM
  54.  
  55. REAL*8 MU,KAPPA,CV,LAMBRO,DT, UNSDT
  56. & ,UXG,UYG
  57. & ,XG,YG,XFMXG,YFMYG,DRG
  58. & ,UXD,UYD
  59. & ,XD,YD,XFMXD,YFMYD,DRD,ALPHA,UMALPH
  60. & ,UXF,UYF,DUXXF,DUXYF,DUYXF,DUYYF,DTXF,DTYF
  61. & ,DSTDU,TAUXX,TAUXY,TAUYY,QX,QY,XF,YF
  62. & ,CNX, CNY, ORIENT, RO, DIAM, DIAM2, CELL, SURF
  63. & ,ZF,ZG,ZD,ZFMZD,UZF,UZG,UZD,TAUZZ,TAUXZ,TAUYZ
  64. & ,DUXZF,DUYZF,DUZXF,DUZYF,DUZZF,QZ,DTZF,CNZ,ZFMZG
  65. C
  66. CHARACTER*8 TYPE
  67. C
  68. C**** Initialisation de 1/DT
  69. C
  70. UNSDT = 0.0D0
  71. LAMBRO = KAPPA / CV
  72. C
  73. C**** KRIPAD pour la correspondance global/local de centre
  74. C
  75. CALL KRIPAD(MELEMC,MLCENT)
  76. C
  77. C EN KRIPAD
  78. C SEGACT MELEMC
  79. C SEGACT MLCENT
  80. C
  81. CALL LICHT(IROC,MPROC,TYPE,IGEOM)
  82. CALL LICHT(IVITC,MPVITC,TYPE,IGEOM)
  83. CALL LICHT(IGRVC,MPGRVF,TYPE,IGEOM)
  84. CALL LICHT(IGRTC,MPGRTF,TYPE,IGEOM)
  85. CALL LICHT(ISURF,MPSURF,TYPE,IGEOM)
  86. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  87. CALL LICHT(IDIAM,MPDIAM,TYPE,IGEOM)
  88. CALL LICHT(ICHFLU,MPFLUX,TYPE,IGEOM)
  89. C
  90. C EN LICHT
  91. C SEGACT*MOD MPROC
  92. C SEGACT*MOD MPVITC
  93. C SEGACT*MOD MPGRVF
  94. C SEGACT*MOD MPGRTF
  95. C SEGACT*MOD MPSURF
  96. C SEGACT*MOD MPNORM
  97. C SEGACT*MOD MPDIAM
  98. C SEGACT*MOD MPFLUX
  99. C
  100. IF(IVIMP .GT. 0)THEN
  101. CALL LICHT(IVIMP,MPVIMP,TYPE,IGEOM)
  102. C SEGACT*MOD MPVIMP
  103. CALL KRIPAD(IGEOM,MLEVIM)
  104. C SEGACT IGEOM
  105. C SEGACT MLEVIM
  106. MELEME = IGEOM
  107. SEGDES MELEME
  108. ENDIF
  109. IF(ITAUIM .GT. 0)THEN
  110. CALL LICHT(ITAUIM,MPTAUI,TYPE,IGEOM)
  111. C SEGACT*MOD MPTAUI
  112. CALL KRIPAD(IGEOM,MLETAI)
  113. C SEGACT IGEOM
  114. C SEGACT MLETAI
  115. MELEME = IGEOM
  116. SEGDES MELEME
  117. ENDIF
  118. IF(IQIMP .GT. 0)THEN
  119. CALL LICHT(IQIMP,MPQIMP,TYPE,IGEOM)
  120. C SEGACT*MOD MPQIMP
  121. CALL KRIPAD(IGEOM,MLEQIM)
  122. C SEGACT IGEOM
  123. C SEGACT MLEQIM
  124. MELEME = IGEOM
  125. SEGDES MELEME
  126. ENDIF
  127. C
  128. SEGACT MELEFL
  129. SEGACT MELEMF
  130. NFAC = MELEMF.NUM(/2)
  131. C
  132. C**** Boucle sur les faces
  133. C
  134. DO NLCF = 1, NFAC, 1
  135. C
  136. C******* NLCF = numero local du centre de facel
  137. C NGCF = numero global du centre de facel
  138. C NLCF1 = numero local du centre de face
  139. C NGCEG = numero global du centre ELT "gauche"
  140. C NLCEG = numero local du centre ELT "gauche"
  141. C NGCED = numero global du centre ELT "droite"
  142. C NLCED = numero local du centre ELT "droite"
  143. C
  144. NGCF = MELEMF.NUM(1,NLCF)
  145. NGCF1 = MELEFL.NUM(2,NLCF)
  146. IF(NGCF .NE. NGCF1)THEN
  147. MOTERR(1:40)= 'FACEL et FACE = ? '
  148. WRITE(IOIMP,*) MOTERR(1:40)
  149. MOTERR(1:40)=
  150. & 'LAPN , subroutine ylap13.eso. '
  151. WRITE(IOIMP,*) MOTERR(1:40)
  152. CALL ERREUR(5)
  153. GOTO 9999
  154. ENDIF
  155. C
  156. NGCEG = MELEFL.NUM(1,NLCF)
  157. NGCED = MELEFL.NUM(3,NLCF)
  158. NLCEG = MLCENT.LECT(NGCEG)
  159. NLCED = MLCENT.LECT(NGCED)
  160. C
  161. C******* On controlle si sur NGCF on impose de CL
  162. C
  163. C NLFVI = numero local du centre de face sul le maillage des
  164. C "vitesses" "imposées"
  165. C
  166. C NLFTI = numero local du centre de face sul le maillage des
  167. C "tau" "imposés"
  168. C
  169. C NLFQI = numero local du centre de face sul le maillage des
  170. C "q" "imposés"
  171. C
  172. IF(IVIMP .GT. 0)THEN
  173. NLFVI = MLEVIM.LECT(NGCF)
  174. ELSE
  175. NLFVI = 0
  176. ENDIF
  177. C
  178. IF(ITAUIM .GT. 0)THEN
  179. NLFTI = MLETAI.LECT(NGCF)
  180. ELSE
  181. NLFTI = 0
  182. ENDIF
  183. C
  184. IF(IQIMP .GT. 0)THEN
  185. NLFQI = MLEQIM.LECT(NGCF)
  186. ELSE
  187. NLFQI = 0
  188. ENDIF
  189. C
  190. IF(NGCEG .NE. NGCED)THEN
  191. C
  192. C********** Parametres geometriques
  193. C
  194. ICOORX = ((IDIM + 1) * (NGCF - 1))+1
  195. XF = MCOORD.XCOOR(ICOORX)
  196. YF = MCOORD.XCOOR(ICOORX+1)
  197. ZF = MCOORD.XCOOR(ICOORX+2)
  198. C
  199. ICOORX = ((IDIM + 1) * (NGCEG - 1))+1
  200. XG = MCOORD.XCOOR(ICOORX)
  201. YG = MCOORD.XCOOR(ICOORX+1)
  202. ZG = MCOORD.XCOOR(ICOORX+2)
  203. XFMXG = XF - XG
  204. YFMYG = YF - YG
  205. ZFMZG = ZF - ZG
  206. DRG=SQRT((XFMXG*XFMXG)+(YFMYG*YFMYG)+(ZFMZG*ZFMZG))
  207. C
  208. ICOORX = ((IDIM + 1) * (NGCED - 1))+1
  209. XD = MCOORD.XCOOR(ICOORX)
  210. YD = MCOORD.XCOOR(ICOORX+1)
  211. ZD = MCOORD.XCOOR(ICOORX+2)
  212. XFMXD = XF - XD
  213. YFMYD = YF - YD
  214. ZFMZD = ZF - ZD
  215. DRD=SQRT((XFMXD*XFMXD)+(YFMYD*YFMYD)+(ZFMZD*ZFMZD))
  216. C
  217. C********** F=G -> DRG = 0 -> ALPHA = 0
  218. C
  219. ALPHA=DRG/(DRG+DRD)
  220. UMALPH=1.0D0 - ALPHA
  221. C
  222. C********** Les valeurs à l'interface
  223. C
  224. C DRG=0 -> F=G
  225. C
  226. C
  227. C********** Tenseur de contraintes visqueux
  228. C
  229. DUXXF = MPGRVF.VPOCHA(NLCF,1)
  230. DUXYF = MPGRVF.VPOCHA(NLCF,2)
  231. DUXZF = MPGRVF.VPOCHA(NLCF,3)
  232. DUYXF = MPGRVF.VPOCHA(NLCF,4)
  233. DUYYF = MPGRVF.VPOCHA(NLCF,5)
  234. DUYZF = MPGRVF.VPOCHA(NLCF,6)
  235. DUZXF = MPGRVF.VPOCHA(NLCF,7)
  236. DUZYF = MPGRVF.VPOCHA(NLCF,8)
  237. DUZZF = MPGRVF.VPOCHA(NLCF,9)
  238. C
  239. IF (NLFTI .GT. 0) THEN
  240. TAUXX = MPTAUI.VPOCHA(NLFTI,1)
  241. TAUYY = MPTAUI.VPOCHA(NLFTI,2)
  242. TAUZZ = MPTAUI.VPOCHA(NLFTI,3)
  243. TAUXY = MPTAUI.VPOCHA(NLFTI,4)
  244. TAUXZ = MPTAUI.VPOCHA(NLFTI,5)
  245. TAUYZ = MPTAUI.VPOCHA(NLFTI,6)
  246. ELSE
  247. DSTDU = 2.0D0/3.0D0 * (DUXXF + DUYYF + DUZZF)
  248. TAUXX = MU * (2.0D0 * DUXXF - DSTDU)
  249. TAUYY = MU * (2.0D0 * DUYYF - DSTDU)
  250. TAUZZ = MU * (2.0D0 * DUZZF - DSTDU)
  251. TAUXY = MU * (DUXYF + DUYXF)
  252. TAUXZ = MU * (DUXZF + DUZXF)
  253. TAUYZ = MU * (DUZYF + DUYZF)
  254. ENDIF
  255. C
  256. C********** Vitesse
  257. C
  258. IF( NLFVI .GT. 0) THEN
  259. UXF = MPVIMP.VPOCHA(NLFVI,1)
  260. UYF = MPVIMP.VPOCHA(NLFVI,2)
  261. UZF = MPVIMP.VPOCHA(NLFVI,3)
  262. ELSE
  263. C************* Gauche
  264. UXG = MPVITC.VPOCHA(NLCEG,1)
  265. UYG = MPVITC.VPOCHA(NLCEG,2)
  266. UZG = MPVITC.VPOCHA(NLCEG,3)
  267. C************* Droite
  268. UXD = MPVITC.VPOCHA(NLCED,1)
  269. UYD = MPVITC.VPOCHA(NLCED,2)
  270. UZD = MPVITC.VPOCHA(NLCED,3)
  271. C************* Face
  272. UXF = UMALPH * UXG + ALPHA * UXD
  273. UYF = UMALPH * UYG + ALPHA * UYD
  274. UZF = UMALPH * UZG + ALPHA * UZD
  275. C************* Correction de la vitesse lineaire exacte
  276. UXF = UXF +
  277. & (DUXXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  278. & (DUXYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  279. & (DUXZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  280. UYF = UYF +
  281. & (DUYXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  282. & (DUYYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  283. & (DUYZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  284. UZF = UZF +
  285. & (DUZXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  286. & (DUZYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  287. & (DUZZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  288. ENDIF
  289. C
  290. C********** Flux de chaleur
  291. C
  292. IF(NLFQI .GT. 0)THEN
  293. QX = MPQIMP.VPOCHA(NLFQI,1)
  294. QY = MPQIMP.VPOCHA(NLFQI,2)
  295. QZ = MPQIMP.VPOCHA(NLFQI,3)
  296. ELSE
  297. C************* Gauche
  298. DTXF = MPGRTF.VPOCHA(NLCF,1)
  299. DTYF = MPGRTF.VPOCHA(NLCF,2)
  300. DTZF = MPGRTF.VPOCHA(NLCF,3)
  301. C
  302. QX = -1.0D0 * KAPPA * DTXF
  303. QY = -1.0D0 * KAPPA * DTYF
  304. QZ = -1.0D0 * KAPPA * DTZF
  305. C
  306. ENDIF
  307. ELSE
  308. C
  309. C********** MURS
  310. C
  311. C Etat a gauche = Etat droite
  312. C
  313. ALPHA=0.0D0
  314. UMALPH=1.0D0
  315. C
  316. C********** Parametres geometriques
  317. C
  318. ICOORX = ((IDIM + 1) * (NGCF - 1))+1
  319. XF = MCOORD.XCOOR(ICOORX)
  320. YF = MCOORD.XCOOR(ICOORX+1)
  321. ZF = MCOORD.XCOOR(ICOORX+2)
  322. C
  323. ICOORX = ((IDIM + 1) * (NGCEG - 1))+1
  324. XG = MCOORD.XCOOR(ICOORX)
  325. YG = MCOORD.XCOOR(ICOORX+1)
  326. ZG = MCOORD.XCOOR(ICOORX+2)
  327. XFMXG = XF - XG
  328. YFMYG = YF - YG
  329. ZFMZG = ZF - ZG
  330. C
  331. C********** Tenseur de contraintes visqueux
  332. C
  333. DUXXF = MPGRVF.VPOCHA(NLCF,1)
  334. DUXYF = MPGRVF.VPOCHA(NLCF,2)
  335. DUXZF = MPGRVF.VPOCHA(NLCF,3)
  336. DUYXF = MPGRVF.VPOCHA(NLCF,4)
  337. DUYYF = MPGRVF.VPOCHA(NLCF,5)
  338. DUYZF = MPGRVF.VPOCHA(NLCF,6)
  339. DUZXF = MPGRVF.VPOCHA(NLCF,7)
  340. DUZYF = MPGRVF.VPOCHA(NLCF,8)
  341. DUZZF = MPGRVF.VPOCHA(NLCF,9)
  342. C
  343. IF (NLFTI .GT. 0) THEN
  344. TAUXX = MPTAUI.VPOCHA(NLFTI,1)
  345. TAUYY = MPTAUI.VPOCHA(NLFTI,2)
  346. TAUZZ = MPTAUI.VPOCHA(NLFTI,3)
  347. TAUXY = MPTAUI.VPOCHA(NLFTI,4)
  348. TAUXZ = MPTAUI.VPOCHA(NLFTI,5)
  349. TAUYZ = MPTAUI.VPOCHA(NLFTI,6)
  350. ELSE
  351. DSTDU = 2.0D0/3.0D0 * (DUXXF + DUYYF + DUZZF)
  352. TAUXX = MU * (2.0D0 * DUXXF - DSTDU)
  353. TAUYY = MU * (2.0D0 * DUYYF - DSTDU)
  354. TAUZZ = MU * (2.0D0 * DUZZF - DSTDU)
  355. TAUXY = MU * (DUXYF + DUYXF)
  356. TAUXZ = MU * (DUXZF + DUZXF)
  357. TAUYZ = MU * (DUZYF + DUYZF)
  358. ENDIF
  359. C
  360. C********** Vitesse
  361. C
  362. IF( NLFVI .GT. 0) THEN
  363. UXF = MPVIMP.VPOCHA(NLFVI,1)
  364. UYF = MPVIMP.VPOCHA(NLFVI,2)
  365. UZF = MPVIMP.VPOCHA(NLFVI,3)
  366. ELSE
  367. UXF = MPVITC.VPOCHA(NLCEG,1)
  368. UYF = MPVITC.VPOCHA(NLCEG,2)
  369. UZF = MPVITC.VPOCHA(NLCEG,3)
  370. C************* Correction de la vitesse lineaire exacte
  371. UXF = UXF +
  372. & (DUXXF * XFMXG ) +
  373. & (DUXYF * YFMYG ) +
  374. & (DUXZF * ZFMZG )
  375. UYF = UYF +
  376. & (DUYXF * XFMXG ) +
  377. & (DUYYF * YFMYG ) +
  378. & (DUYZF * ZFMZG )
  379. UZF = UZF +
  380. & (DUZXF * XFMXG ) +
  381. & (DUZYF * YFMYG ) +
  382. & (DUZZF * ZFMZG )
  383. ENDIF
  384. C
  385. C********** Flux de chaleur
  386. C
  387. IF(NLFQI .GT. 0)THEN
  388. QX = MPQIMP.VPOCHA(NLFQI,1)
  389. QY = MPQIMP.VPOCHA(NLFQI,2)
  390. QZ = MPQIMP.VPOCHA(NLFQI,3)
  391. ELSE
  392. C************* Gauche
  393. DTXF = MPGRTF.VPOCHA(NLCF,1)
  394. DTYF = MPGRTF.VPOCHA(NLCF,2)
  395. DTZF = MPGRTF.VPOCHA(NLCF,3)
  396. C
  397. QX = -1.0D0 * KAPPA * DTXF
  398. QY = -1.0D0 * KAPPA * DTYF
  399. QZ = -1.0D0 * KAPPA * DTZF
  400. C
  401. ENDIF
  402. ENDIF
  403. C
  404. C******* On calcule le sign du pruduit scalare
  405. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  406. C
  407. CNX = MPNORM.VPOCHA(NLCF,1)
  408. CNY = MPNORM.VPOCHA(NLCF,2)
  409. CNZ = MPNORM.VPOCHA(NLCF,3)
  410. ORIENT = CNX * XFMXG + CNY * YFMYG + CNZ * ZFMZG
  411. ORIENT = SIGN(1.0D0,ORIENT)
  412. IF(ORIENT .NE. 1.0D0)THEN
  413. MOTERR(1:40)=
  414. & 'LAPN , subroutine ylap13.eso. '
  415. WRITE(IOIMP,*) MOTERR(1:40)
  416. MOTERR(1:40)=
  417. & 'Orientation normales. '
  418. WRITE(IOIMP,*) MOTERR(1:40)
  419. CALL ERREUR(5)
  420. GOTO 9999
  421. ENDIF
  422. C
  423. C******* Le flux aux interfaces
  424. C
  425. SURF = MPSURF.VPOCHA(NLCF,1)
  426. MPFLUX.VPOCHA(NLCF,1) = ((TAUXX * CNX) + (TAUXY * CNY) +
  427. & (TAUXZ * CNZ))
  428. & * SURF * (-1.0D0)
  429. MPFLUX.VPOCHA(NLCF,2) = ((TAUXY * CNX) + (TAUYY * CNY) +
  430. & (TAUYZ * CNZ))
  431. & * SURF * (-1.0D0)
  432. MPFLUX.VPOCHA(NLCF,3) = ((TAUXZ * CNX) + (TAUYZ * CNY) +
  433. & (TAUZZ * CNZ))
  434. & * SURF * (-1.0D0)
  435. MPFLUX.VPOCHA(NLCF,4) = (
  436. & ((TAUXX * UXF + TAUXY * UYF + TAUXZ * UZF - QX) * CNX) +
  437. & ((TAUXY * UXF + TAUYY * UYF + TAUYZ * UZF - QY) * CNY) +
  438. & ((TAUXZ * UXF + TAUYZ * UYF + TAUZZ * UZF - QZ) * CNZ))
  439. & * SURF * (-1.0D0)
  440. C
  441. C****** Le pas de temps
  442. C
  443. RO=UMALPH*MPROC.VPOCHA(NLCEG,1) +
  444. & ALPHA*MPROC.VPOCHA(NLCED,1)
  445. DIAM = UMALPH*MPDIAM.VPOCHA(NLCEG,1) +
  446. & ALPHA*MPDIAM.VPOCHA(NLCED,1)
  447. DIAM2=DIAM*DIAM
  448. CELL = 6.0D0*MU / (DIAM2*RO)
  449. CELL = MAX(CELL, (6.0D0*LAMBRO/(DIAM2*RO)))
  450. C
  451. IF(CELL .GT. UNSDT)THEN
  452. UNSDT = CELL
  453. ENDIF
  454. C
  455. ENDDO
  456. C
  457. C
  458. DT = 1.0D0 / (UNSDT + XPETIT)
  459. C
  460. SEGDES MELEFL
  461. SEGDES MELEMF
  462. SEGDES MELEMC
  463. SEGDES MPSURF
  464. SEGDES MPNORM
  465. SEGDES MPDIAM
  466. SEGSUP MLCENT
  467. C
  468. SEGDES MPROC
  469. SEGDES MPVITC
  470. SEGDES MPGRVF
  471. SEGDES MPGRTF
  472. SEGDES MPFLUX
  473. C
  474. IF(IVIMP .GT. 0) THEN
  475. SEGDES MPVIMP
  476. SEGSUP MLEVIM
  477. ENDIF
  478. IF(ITAUIM .GT. 0)THEN
  479. SEGDES MPTAUI
  480. SEGSUP MLETAI
  481. ENDIF
  482. IF(IQIMP .GT. 0)THEN
  483. SEGDES MPQIMP
  484. SEGDES MLEQIM
  485. ENDIF
  486. C
  487. 9999 CONTINUE
  488. RETURN
  489. END
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  

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