Télécharger fimtr1.eso

Retour à la liste

Numérotation des lignes :

fimtr1
  1. C FIMTR1 SOURCE CB215821 20/11/25 13:28:52 10792
  2. SUBROUTINE FIMTR1
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : FIMTR1
  8. C
  9. C DESCRIPTION : Subroutine appellée par FIMPVF
  10. C
  11. C Modelisation 2D/3D de term source
  12. C pour les equations multiespeces NS:
  13. C Gravité + k-\eps turbulence model
  14. C
  15. C Calcul du flux/residu
  16. C
  17. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  18. C
  19. C AUTEUR : S. Kudriakov, DEN/DM2S/SFME/LTMF
  20. C
  21. C************************************************************************
  22. C
  23. C*** SYNTAXE
  24. C
  25. C Discrétisation en VF "cell-centered" des équations de NS pour
  26. C un gaz parfait polytropique (term source)
  27. C Inconnues: densités, quantité de mouvement, énergie totale par
  28. C unité de volumes, énergie cinetic turbulente (\rho k),
  29. C rate of dissipated turb. energy (\rho \eps) (var. conservatives)
  30. C Gravité
  31. C
  32. C RESU = 'FIMP' 'VF' 'GRAVKEPS' MOT1 TABGAS
  33. C LMOTC CHPRN CHPGN CHGRA CHRKA CHREPS GRADR GRADV ;
  34. C--------------------------------------------------------------------
  35. C
  36. C MOT1 : MOT: 'RESI'
  37. C
  38. C TABGAS : table with the gas properties;
  39. C here we need:
  40. C a) turbulent constant \sigma_t (see gravity
  41. C term in k-\eps equations)
  42. C name: TABGAS . 'SIGT'
  43. C b) turbulent constant C_{\eps 1} (see
  44. C \eps-equation)
  45. C name: TABGAS . 'CEPS1'
  46. C c) turbulent constant C_{\eps 2} (see
  47. C \eps-equation)
  48. C name: TABGAS . 'CEPS2'
  49. C d) rate of productions for the species
  50. C (source term); type 'CHPOINT'
  51. C (SPG = 'CENTRE', the number of components
  52. C is equal to the number of species in
  53. C TABGAS . 'ESPEULE')
  54. C e) TABGAS . 'ESPEULE' - the names of the
  55. C species which are explicitely in the equations
  56. C f) TABGAS . 'MUTURB' - turbulent viscosity
  57. C (SPG = 'CENTRE'; number of compon. = 1)
  58. C g) the formation enthalpies of the species
  59. C at T_0 = 0 K
  60. C
  61. C LMOTC : LISTMOTS, noms des variables conservatives
  62. C
  63. C CHPRN : densité (SPG = 'CENTRE', une seule
  64. C composante, 'SCAL')
  65. C
  66. C CHPGN : qdm (SPG = meme que CHPRN,
  67. C composantes: 'UX', 'UY', ('UZ'))
  68. C
  69. C CHPGRA : gravité (SPG = meme que CHPRN,
  70. C composantes: 'UX', 'UY', ('UZ'))
  71. C
  72. C CHRKA : turbulent kinetic energy per unit volume
  73. C (SPG = 'CENTRE', une seule composante, name is the
  74. C name of the corresponding conservative variable)
  75. C
  76. C CHREPS : rate of dissipated turb. energy per unit volume
  77. C (SPG = 'CENTRE', une seule composante, name is the
  78. C name of the corresponding conservative variable)
  79. C
  80. C GRADR : gradient of the density
  81. C (SPG = 'CENTRE', composantes: 'P1DX','P1DY', ('P1DZ'))
  82. C
  83. C GRADV : gradient of the velocity vector
  84. C (SPG = 'CENTRE', composantes: 'P1DX','P1DY', ('P1DZ')
  85. C 'P2DX','P2DY', ('P2DZ')
  86. C ('P3DX','P3DY', ('P3DZ')))
  87. C
  88. C SORTIES
  89. C
  90. C RESU : residu
  91. C
  92. C
  93. C************************************************************************
  94. C
  95. C HISTORIQUE (Anomalies et modifications éventuelles)
  96. C
  97. C HISTORIQUE :
  98. C
  99. C************************************************************************
  100. IMPLICIT INTEGER(I-N)
  101. IMPLICIT REAL*8(A-H,O-Z)
  102.  
  103.  
  104. -INC PPARAM
  105. -INC CCOPTIO
  106. -INC SMLMOTS
  107. -INC SMCHPOI
  108. -INC SMTABLE
  109. C
  110. C**** Variables pour ACCTAB
  111. C
  112. INTEGER IVALI, IRETI,IVALR, IRETR, IESP
  113. REAL*8 XVALI, XVALR
  114. LOGICAL LOGII, LOGIR
  115. CHARACTER*(8) MTYPI, MTYPR, CHARR, MOTNEU
  116. C
  117. C**** Segment des caractéristiques du gaz
  118. C
  119. SEGMENT SORGAS
  120. REAL*8 H0K(NESP+1)
  121. POINTEUR SOUR(NESP+1).MCHPOI
  122. ENDSEGMENT
  123. C-----------------------------------------------------
  124. C
  125. INTEGER NBOPT, IMET, IRET, IRKA, ICEN, INDIC, NBCOMP
  126. & , IRO,IROVIT,JGN, JGM, IGRAV, ILIINC, IRES
  127. & ,NESP,IPGAS, IRETOU, ICOND, IREPS, IGRADR, IGRADV
  128. & , IMUT, ISOUR, I1
  129. C------Constants of the k-eps model
  130. REAL*8 TSIGT, TCEPS1, TCEPS2
  131. C
  132. PARAMETER (NBOPT=1)
  133. CHARACTER*8 LOPT(NBOPT)
  134. CHARACTER*4 MOT(1), MOTKA, MOTEPS, MOT1(10)
  135. C
  136. DATA LOPT/'RESI '/
  137. C
  138. C**** IMET = 1 -> residuu
  139. C
  140. CALL LIRMOT(LOPT,NBOPT,IMET,1)
  141. IF(IERR.NE.0)GOTO 9999
  142. C-------------------------------------------------
  143. C*** Reading the table PGAS *********************
  144. C-------------------------------------------------
  145. ICOND = 1
  146. CALL QUETYP(MTYPR,ICOND,IRETOU)
  147. IF(IERR .NE. 0)GOTO 9999
  148. IF(MTYPR .NE. 'TABLE ')THEN
  149. C---------------------------------------
  150. C Message d'erreur standard
  151. C 37 2
  152. C On ne trouve pas d'objet de type %m1:8
  153. C---------------------------------------
  154. MOTERR(1:8) = 'TABLE '
  155. CALL ERREUR(37)
  156. GOTO 9999
  157. ELSE
  158. ICOND = 1
  159. CALL LIROBJ(MTYPR,IPGAS,ICOND,IRETOU)
  160. IF(IERR .NE. 0)GOTO 9999
  161. ENDIF
  162. C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  163. C-------------------------------------------
  164. C Reading the constants of the Source term
  165. C-------------------------------------------
  166. C--------- \sigma_t
  167. CALL ACMF(IPGAS,'SIGT',XVALR)
  168. TSIGT = XVALR
  169. C-------- C_\eps 1
  170. CALL ACMF(IPGAS,'CEPS1',XVALR)
  171. TCEPS1 = XVALR
  172. C-------- C_\eps 2
  173. CALL ACMF(IPGAS,'CEPS2',XVALR)
  174. TCEPS2 = XVALR
  175. C-------------------------------------------
  176. C******** Reading the Source Terms ********
  177. C-------------------------------------------
  178. MTYPR = ' '
  179. CALL ACMO(IPGAS,'SOUR',MTYPR,ISOUR)
  180. IF(MTYPR .NE. 'TABLE ')THEN
  181. C--------------------------------
  182. C Message d'erreur standard
  183. C -301 0 %m1:40
  184. C--------------------------------
  185. MOTERR(1:40) = 'TAB1 . SOUR = ??? '
  186. WRITE(IOIMP,*) MOTERR(1:40)
  187. C---------------------------------
  188. C Message d'erreur standard
  189. C 21 2
  190. C Données incompatibles
  191. C--------------------------------
  192. CALL ERREUR(21)
  193. GOTO 9999
  194. ENDIF
  195. C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  196. C---------------------------------------------------------
  197. C Reading Les especes qui sont dans les Equations d'Euler
  198. C---------------------------------------------------------
  199. MTYPR = ' '
  200. CALL ACMO(IPGAS,'ESPEULE',MTYPR,MLMOT1)
  201. IF(MTYPR .NE. 'LISTMOTS')THEN
  202. C---------------------------
  203. C Message d'erreur standard
  204. C -301 0 %m1:40
  205. C---------------------------
  206. MOTERR(1:40) = 'TAB1 . ESPEULE = ??? '
  207. WRITE(IOIMP,*) MOTERR(1:40)
  208. C---------------------------
  209. C Message d'erreur standard
  210. C 21 2
  211. C Données incompatibles
  212. C--------------------------
  213. CALL ERREUR(21)
  214. GOTO 9999
  215. ENDIF
  216. C---------------------------------------------------------
  217. C Reading L'espece qui n'est pas dans les Equations d'Euler
  218. C---------------------------------------------------------
  219. MTYPR = ' '
  220. CALL ACMM(IPGAS,'ESPNEULE',MOTNEU)
  221. c*c*c*c*c*c***********************************
  222. SEGACT MLMOT1
  223. NESP = MLMOT1.MOTS(/2)
  224. C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  225. SEGINI SORGAS
  226. DO I1 = 1, NESP
  227. C-------------------------------
  228. C N.B. MOT1 est un CHARACTER*(4)
  229. C-------------------------------
  230. MOT1(1) = MLMOT1.MOTS(I1)
  231. MTYPI = 'MOT '
  232. MTYPR = ' '
  233. CALL ACCTAB(ISOUR,MTYPI,IVALI,XVALI,MOT1(1), LOGII,IRETI,
  234. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IRETR)
  235. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'CHPOINT ')) THEN
  236. C------------------------------
  237. C Message d'erreur standard
  238. C -301 0 %m1:40
  239. C------------------------------
  240. MOTERR = 'TAB1 . SOUR, TAB1 . ESPEULE = ??? '
  241. WRITE(IOIMP,*) MOTERR(1:40)
  242. C------------------------------
  243. C Message d'erreur standard
  244. C 21 2
  245. C Données incompatibles
  246. C------------------------------
  247. CALL ERREUR(21)
  248. GOTO 9999
  249. ENDIF
  250. SORGAS.SOUR(I1) = IRETR
  251. ENDDO
  252. C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  253. C-------------------------------------------------
  254. c Reading the enthalpies of formation at 0 K
  255. c-------------------------------------------------
  256. DO I1 = 1, NESP
  257. MOT1(1) = MLMOT1.MOTS(I1)
  258. C
  259. C******* CALL ACMF(...) ne marche pas parce que on a
  260. C des espaces dans nos noms de composantes
  261. C
  262. MTYPI = 'MOT '
  263. MTYPR = ' '
  264. CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,MOT1(1), LOGII,IRETI,
  265. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  266. C
  267. C******* En IESP il y a la table IPGAZ.MOT1
  268. C
  269. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  270.  
  271. C
  272. C********** Message d'erreur standard
  273. C -301 0 %m1:40
  274. C
  275. MOTERR = ' '
  276. MOTERR(1:7) = 'ARG1 . '
  277. MOTERR(8:11) = MOT1(1)
  278. MOTERR(13:17) = '= ???'
  279. WRITE(IOIMP,*) MOTERR
  280. C
  281. C********** Message d'erreur standard
  282. C 21 2
  283. C Données incompatibles
  284. C
  285. CALL ERREUR(21)
  286. GOTO 9999
  287. ENDIF
  288. C
  289. C******* H0K
  290. C
  291. MTYPI = 'MOT '
  292. MTYPR = ' '
  293. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  294. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  295. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  296.  
  297. C
  298. C********** Message d'erreur standard
  299. C -301 0 %m1:40
  300. C
  301. MOTERR = ' '
  302. MOTERR(1:7) = 'ARG1 . '
  303. MOTERR(8:11) = MOT1(1)
  304. MOTERR(13:25) = ' . H0K = ??? '
  305. WRITE(IOIMP,*) MOTERR
  306. C
  307. C********** Message d'erreur standard
  308. C 21 2
  309. C Données incompatibles
  310. C
  311. CALL ERREUR(21)
  312. GOTO 9999
  313. ENDIF
  314. SORGAS.H0K(I1)=XVALR
  315. ENDDO
  316. CCCCC--------------------------------------------------------
  317. C
  318. C******* CALL ACMF(...) ne marche pas parce que on a
  319. C des espaces dans nos noms de composantes
  320. C
  321. MTYPI = 'MOT '
  322. MTYPR = ' '
  323. CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,MOTNEU, LOGII,IRETI,
  324. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  325. C
  326. C******* En IESP il y a la table IPGAZ.MOT1
  327. C
  328. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  329.  
  330. C
  331. C********** Message d'erreur standard
  332. C -301 0 %m1:40
  333. C
  334. MOTERR = ' '
  335. MOTERR(1:7) = 'ARG1 . '
  336. MOTERR(8:11) = MOT1(1)
  337. MOTERR(13:17) = '= ???'
  338. WRITE(IOIMP,*) MOTERR
  339. C
  340. C********** Message d'erreur standard
  341. C 21 2
  342. C Données incompatibles
  343. C
  344. CALL ERREUR(21)
  345. GOTO 9999
  346. ENDIF
  347. C
  348. C******* H0K of the species which are not in the N-S equations
  349. C
  350. MTYPI = 'MOT '
  351. MTYPR = ' '
  352. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  353. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  354. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  355.  
  356. C
  357. C********** Message d'erreur standard
  358. C -301 0 %m1:40
  359. C
  360. MOTERR = ' '
  361. MOTERR(1:7) = 'ARG1 . '
  362. MOTERR(8:11) = MOT1(1)
  363. MOTERR(13:25) = ' . H0K = ??? '
  364. WRITE(IOIMP,*) MOTERR
  365. C
  366. C********** Message d'erreur standard
  367. C 21 2
  368. C Données incompatibles
  369. C
  370. CALL ERREUR(21)
  371. GOTO 9999
  372. ENDIF
  373. SORGAS.H0K(NESP+1)=XVALR
  374. CC------------------------------------------------
  375. SEGDES SORGAS
  376. SEGDES MLMOT1
  377. C-------------------------------------------------
  378. C Reading the turbulent viscosity
  379. C-------------------------------------------------
  380. MTYPI = 'MOT '
  381. MTYPR = ' '
  382. CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,'MUTURB',LOGII,IRETI,
  383. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IRETR)
  384. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'CHPOINT ')) THEN
  385. C------------------------------
  386. C Message d'erreur standard
  387. C -301 0 %m1:40
  388. C------------------------------
  389. MOTERR = 'TAB1 . MUTURB = ??? '
  390. WRITE(IOIMP,*) MOTERR(1:40)
  391. C------------------------------
  392. C Message d'erreur standard
  393. C 21 2
  394. C Données incompatibles
  395. C------------------------------
  396. CALL ERREUR(21)
  397. GOTO 9999
  398. ENDIF
  399. IMUT = IRETR
  400. C-------------------------------------------------
  401. C**** Noms de variables conservatives
  402. C-------------------------------------------------
  403. CALL LIROBJ('LISTMOTS',ILIINC,1,IRET)
  404. IF(IERR .NE. 0) GOTO 9999
  405. MLMOTS = ILIINC
  406. SEGACT MLMOTS
  407. NBCOMP = MLMOTS.MOTS(/2)
  408. MOTKA = MLMOTS.MOTS(IDIM+NESP+3)
  409. MOTEPS = MLMOTS.MOTS(IDIM+NESP+4)
  410. SEGDES MLMOTS
  411. IF(NBCOMP .NE. (IDIM+NESP+4))THEN
  412. MOTERR(1:40) = 'LISTINCO = ???'
  413. WRITE(IOIMP,*) MOTERR
  414. C
  415. C******* Message d'erreur standard
  416. C 21 2
  417. C Données incompatibles
  418. C
  419. CALL ERREUR(21)
  420. GOTO 9999
  421. ENDIF
  422. C---------------------------------------------------
  423. C**** Densité
  424. C---------------------------------------------------
  425. CALL LIROBJ('CHPOINT',IRO,1,IRET)
  426. IF (IERR.NE.0) GOTO 9999
  427. C
  428. C**** On cherche le pointeur de son maillage et on l'impose sur les
  429. C autres CHPOINT
  430. C
  431. MCHPOI = IRO
  432. SEGACT MCHPOI
  433. MSOUPO = MCHPOI.IPCHP(1)
  434. SEGACT MSOUPO
  435. ICEN = MSOUPO.IGEOC
  436. SEGDES MSOUPO
  437. SEGDES MCHPOI
  438. C
  439. C**** Control du CHPOINT: QUEPOI
  440. C
  441. INDIC = 1
  442. NBCOMP = 1
  443. MOT(1) = 'SCAL'
  444. CALL QUEPOI(IRO, ICEN, INDIC, NBCOMP, MOT)
  445. IF(IERR .NE. 0) GOTO 9999
  446. C-------------------------------------------------
  447. C**** Lecture du CHPOINT DEBIT.
  448. C-------------------------------------------------
  449. CALL LIROBJ('CHPOINT',IROVIT,1,IRET)
  450. IF (IERR.NE.0) GOTO 9999
  451. C
  452. C**** Control du CHPOINT
  453. C
  454. JGN = 4
  455. JGM = IDIM
  456. SEGINI MLMOTS
  457. MLMOTS.MOTS(1) = 'UX '
  458. MLMOTS.MOTS(2) = 'UY '
  459. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'UZ '
  460. CALL QUEPO1(IROVIT, ICEN, MLMOTS)
  461. IF(IERR .NE. 0) GOTO 9999
  462. C
  463. C-------------------------------------------------
  464. C**** Lecture du CHPOINT GRAVITE.
  465. C-------------------------------------------------
  466. CALL LIROBJ('CHPOINT',IGRAV,1,IRET)
  467. IF (IERR.NE.0) GOTO 9999
  468. C
  469. C**** Control du CHPOINT
  470. C
  471. CALL QUEPO1(IGRAV, ICEN, MLMOTS)
  472. IF(IERR .NE. 0) GOTO 9999
  473. SEGSUP MLMOTS
  474. C---------------------------------------------------------
  475. C**** Turbulent kinetic energy
  476. C---------------------------------------------------------
  477. CALL LIROBJ('CHPOINT',IRKA,1,IRET)
  478. IF (IERR.NE.0) GOTO 9999
  479. C
  480. C**** Control du CHPOINT: QUEPOI
  481. C
  482. INDIC = 1
  483. NBCOMP = 1
  484. MOT(1) = MOTKA
  485. CALL QUEPOI(IRKA, ICEN, INDIC, NBCOMP, MOT)
  486. IF(IERR .NE. 0) GOTO 9999
  487. C
  488. C**** Turbulent energy dissipation
  489. C
  490. CALL LIROBJ('CHPOINT',IREPS,1,IRET)
  491. IF (IERR.NE.0) GOTO 9999
  492. C
  493. C**** Control du CHPOINT
  494. C
  495. INDIC = 1
  496. NBCOMP = 1
  497. MOT(1) = MOTEPS
  498. CALL QUEPOI(IREPS, ICEN, INDIC, NBCOMP, MOT)
  499. IF(IERR .NE. 0) GOTO 9999
  500. *------------------------------------------------------
  501. * Gradient of density given at the centre
  502. *------------------------------------------------------
  503. CALL LIROBJ('CHPOINT',IGRADR,1,IRET)
  504. IF(IERR .NE. 0) GOTO 9999
  505. *------------------------------
  506. JGN = 4
  507. JGM = IDIM
  508. SEGINI MLMOTS
  509. IF(IDIM .EQ. 2) THEN
  510. MLMOTS.MOTS(1) = 'P1DX'
  511. MLMOTS.MOTS(2) = 'P1DY'
  512. ELSE
  513. MLMOTS.MOTS(1) = 'P1DX'
  514. MLMOTS.MOTS(2) = 'P1DY'
  515. MLMOTS.MOTS(3) = 'P1DZ'
  516. ENDIF
  517. CALL QUEPO1(IGRADR, ICEN, MLMOTS)
  518. IF(IERR .NE. 0) GOTO 9999
  519. SEGDES MLMOTS
  520. *------------------------------------------------------
  521. * Gradient of velocity given at the centre
  522. *------------------------------------------------------
  523. CALL LIROBJ('CHPOINT',IGRADV,1,IRET)
  524. IF(IERR .NE. 0) GOTO 9999
  525. *------------------------------
  526. JGN = 4
  527. JGM = IDIM*IDIM
  528. SEGINI MLMOTS
  529. IF(IDIM .EQ. 2) THEN
  530. MLMOTS.MOTS(1) = 'P1DX'
  531. MLMOTS.MOTS(2) = 'P1DY'
  532. MLMOTS.MOTS(3) = 'P2DX'
  533. MLMOTS.MOTS(4) = 'P2DY'
  534. ELSE
  535. MLMOTS.MOTS(1) = 'P1DX'
  536. MLMOTS.MOTS(2) = 'P1DY'
  537. MLMOTS.MOTS(3) = 'P1DZ'
  538. MLMOTS.MOTS(4) = 'P2DX'
  539. MLMOTS.MOTS(5) = 'P2DY'
  540. MLMOTS.MOTS(6) = 'P2DZ'
  541. MLMOTS.MOTS(7) = 'P3DX'
  542. MLMOTS.MOTS(8) = 'P3DY'
  543. MLMOTS.MOTS(9) = 'P3DZ'
  544. ENDIF
  545. CALL QUEPO1(IGRADV, ICEN, MLMOTS)
  546. IF(IERR .NE. 0) GOTO 9999
  547. SEGDES MLMOTS
  548. C------------------------------------------------------
  549. C**** Results
  550. C------------------------------------------------------
  551. IF(IMET.EQ.1)THEN
  552. C
  553. C******* On calcule le residu
  554. C
  555. CALL FIMTR2(SORGAS,ILIINC,ICEN,IRO,IROVIT,IGRAV,IRKA,IREPS
  556. & ,IGRADR,IGRADV,IMUT,TSIGT,TCEPS1,TCEPS2,IRES)
  557. ENDIF
  558. C
  559. IF(IRES .NE. 0) CALL ECROBJ('CHPOINT ',IRES)
  560. C
  561. 9999 CONTINUE
  562. RETURN
  563. END
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  

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