Télécharger pre321.eso

Retour à la liste

Numérotation des lignes :

pre321
  1. C PRE321 SOURCE CB215821 20/11/25 13:36:23 10792
  2. SUBROUTINE PRE321(LOGTEM,LGAMC,LYC,LSCAC,
  3. & ICEN,IFACE,IFACEL,INORM,
  4. & IROC, IGRROC, IALROC,
  5. & IVITC, IGRVC, IALVC,
  6. & IPC ,IGRPC, IALPC,
  7. & IYC ,IGRYC, IALYC,
  8. & ISCAC ,IGRSC, IALSC,
  9. & IGAMC,
  10. & DELTAT,
  11. & IROF,IVITF,IPF,IYF,ISCAF,
  12. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  13. C************************************************************************
  14. C
  15. C PROJET : CASTEM 2000
  16. C
  17. C NOM : PRE321
  18. C
  19. C DESCRIPTION : Voir PRE32
  20. C
  21. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  22. C
  23. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  24. C
  25. C************************************************************************
  26. C
  27. C
  28. C APPELES (Outils) : KRIPAD, LICHT
  29. C
  30. C APPELES (Calcul) : AUCUN
  31. C
  32. C
  33. C************************************************************************
  34. C
  35. C ENTREES
  36. C
  37. C LOGTEM : LOGICAL; si .TRUE. 2em ordre en temps
  38. C sinon 1er ordre en temps
  39. C LGAMC,LYC,LSCAC : LOGICAL : si .TRUE. IGAMC, IYC, ISCAC sont
  40. C pointeurs de CHPOINTS
  41. C
  42. C 1) Pointeurs de MELEMEs et de CHPOINTs de la table DOMAINE
  43. C
  44. C ICEN : MELEME de 'POI1' SPG des CENTRES
  45. C
  46. C IFACE : MELEME de 'POI1' SPG des FACES
  47. C
  48. C IFACEL : MELEME de 'SEG3' avec
  49. C CENTRE d'Elt "gauche"
  50. C CENTRE de Face
  51. C CENTRE d'Elt "droite"
  52. C
  53. C N.B. = IFACE.NUM(i,1) = IFACEL.NUM(i,2)
  54. C
  55. C INORM : CHPOINT des cosinus directeurs de normales aux faces
  56. C
  57. C 2) Autres pointeurs
  58. C
  59. C IROC : CHPOINT "CENTRE" contenant la masse volumique RHO
  60. C
  61. C IGRROC : CHPOINT "CENTRE" contenant le gradient de la
  62. C masse volumique RHO (2 composantes)
  63. C
  64. C IALROC : CHPOINT "CENTRE" contenant le limiteur du gradient
  65. C de la masse volumique
  66. C
  67. C IVITC : CHPOINT "CENTRE" contenant la vitesse UX, UY ;
  68. C
  69. C IGRVC : CHPOINT "CENTRE" contenant le gradient de la
  70. C vitesse (4 composantes)
  71. C
  72. C IALVC : CHPOINT "CENTRE" contenant le limiteur du gradient
  73. C de la vitesse (2 composantes)
  74. C
  75. C IPC : CHPOINT "CENTRE" contenat la pression P;
  76. C
  77. C IGRPC : CHPOINT "CENTRE" contenant le gradient de la
  78. C pression (2 composantes)
  79. C
  80. C IALPC : CHPOINT "CENTRE" contenant le limiteur du gradient
  81. C de la pression
  82. C
  83. C IYC : CHPOINT "CENTRE" contenat les fractions massiques ;
  84. C
  85. C IGRYC : CHPOINT "CENTRE" contenant les gradient des fr.mass ;
  86. C
  87. C IALPC : CHPOINT "CENTRE" contenant les limiteurs des gradients
  88. C des fr.mass. ;
  89. C
  90. C ISCAC : CHPOINT "CENTRE" contenat les scalaires passifs ;
  91. C
  92. C IGRSC : CHPOINT "CENTRE" contenant les gradient des scalaires passifs;
  93. C
  94. C IALPC : CHPOINT "CENTRE" contenant les limiteurs des gradients
  95. C des scalaires passifs ;
  96. C
  97. C
  98. C IGAMC : CHPOINT "CENTRE" contenat le "Gamma" du gaz
  99. C
  100. C 3)
  101. C
  102. C DELTAT : REAL*8, encrement en temps pour calculer la prediction
  103. C
  104. C
  105. C SORTIES
  106. C
  107. C
  108. C IROF : MCHAML defini sur le MELEME de pointeur IFACEL,
  109. C contenant la masse volumique RHO
  110. C
  111. C IVITF : MCHAML defini sur le MELEME de pointeur IFACEL,
  112. C contenant la vitesse UN, UT dans le repaire local
  113. C (n,t) et defini sur le MELEME de pointeur IFACE,
  114. C contenant les cosinus directeurs du repere local
  115. C
  116. C IPF : MCHAML defini sur le MELEME de pointeur IFACEL,
  117. C contenant la pression P
  118. C
  119. C IYF : MCHAML defini sur le MELEME de pointeur IFACEL,
  120. C contenant les fractions massiques;
  121. C
  122. C ISCAF : MCHAML defini sur le MELEME de pointeur IFACEL,
  123. C contenant les scalaires passifs;
  124. C
  125. C LOGAN : anomalie detectee
  126. C
  127. C LOGNEG : (LOGICAL): si .TRUE. une pression ou une densité
  128. C negative a été detectée -> en interactif le
  129. C programme s'arrete en GIBIANE
  130. C (erreur stocké en MESERR et VALER)
  131. C
  132. C LOGBOR : (LOGICAL): si .TRUE. un y a ete detecte
  133. C dehor 1 et 3 (sa valeur stockée en MESERR et VALER;
  134. C en VAL1 et en VAL2 on stocke 1.0 et 3.0)
  135. C
  136. C MESERR
  137. C VALER
  138. C VAL1,
  139. C VAL2 : pour les messages d'erreur
  140. C
  141. C************************************************************************
  142. C
  143. C HISTORIQUE (Anomalies et modifications éventuelles)
  144. C
  145. C HISTORIQUE : Créée le 21.12.98.
  146. C
  147. C 17.02.2000: transport des scalaires passifs
  148. C
  149. C************************************************************************
  150. C
  151. C
  152. C ATTENTION: Cet programme marche si le MAILLAGE est convex;
  153. C si non il faut changer l'algoritme de calcul de
  154. C l'orientation des normales aux faces.
  155. C
  156. C La positivité n'est pas controlle parce que c'est déjà fait
  157. C dans l'operateur PRIM
  158. C
  159. C
  160. C************************************************************************
  161. C
  162. C**** Variables de COOPTIO
  163. C
  164. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  165. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  166. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  167. C & ,IECHO, IIMPI, IOSPI
  168. C & ,IDIM
  169. CC & ,MCOORD
  170. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  171. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  172. C & ,NORINC,NORVAL,NORIND,NORVAD
  173. C & ,NUCROU, IPSAUV
  174. C
  175. C**** Les variables
  176. C
  177. IMPLICIT INTEGER(I-N)
  178. INTEGER ICEN, IFACE, IFACEL, INORM,IROC, IGRROC, IALROC
  179. & , IVITC, IGRVC, IALVC
  180. & , IPC ,IGRPC, IALPC
  181. & , IYC, IGRYC, IALYC
  182. & , ISCAC, IGRSC, IALSC
  183. & , IGAMC
  184. & , IROF, IVITF, IPF, IYF, ISCAF
  185. & , IGEOM, NFAC, NCEN
  186. & , N1PTEL, N1EL, N2PTEL, N2EL, N2, N1, N3, L1, NLCE
  187. & , NLCF, NGCF, NGCEG, NLCEG, NGCED, NLCED, NGCF1
  188. & , IDIMP1, INDCEL, I1, NESP, NSCA, NMA
  189. REAL*8 VALER, VAL1, VAL2, XG, YG, XC, YC, XD, YD, DELTAT
  190. & ,DXG, DYG, DXD, DYD
  191. & , CNX, CNY, CTX, CTY, ORIENT
  192. & , ROG, PG, GAMG, UXG, UYG, UNG, UTG
  193. & , ROD, PD, UXD, UYD, UND, UTD
  194. & , VALCEL, DCEL, ALCEL
  195. & , DROX, DROY, DUXX, DUXY, DUYX, DUYY, DPX, DPY
  196. & , DRO, DUX, DUY, DP
  197. & , ALPHA, DYMAS, SUMY
  198. CHARACTER*(40) MESERR
  199. CHARACTER*(8) TYPE
  200. LOGICAL LOGAN,LOGNEG, LOGBOR, LOGTEM, LOGI1, LOGI2
  201. & ,LGAMC,LYC,LSCAC
  202. C
  203. C**** Les Includes
  204. C
  205. -INC SMCOORD
  206.  
  207. -INC PPARAM
  208. -INC CCOPTIO
  209. -INC SMCHPOI
  210. POINTEUR MPROC.MPOVAL, MPGRR.MPOVAL,
  211. & MPVITC.MPOVAL, MPGRV.MPOVAL,
  212. & MPPC.MPOVAL, MPGRP.MPOVAL,
  213. & MPYC.MPOVAL, MPGRY.MPOVAL,
  214. & MPSCAC.MPOVAL, MPGRS.MPOVAL,
  215. & MPGAMC.MPOVAL, MPNORM.MPOVAL,
  216. & MPROP.MPOVAL, MPPP.MPOVAL, MPVITP.MPOVAL,
  217. & MPYP.MPOVAL, MPSCAP.MPOVAL
  218. -INC SMCHAML
  219. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  220. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,
  221. & MELT1X.MELVAL, MELT1Y.MELVAL
  222. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL
  223. POINTEUR MELRO.MELVAL, MELP.MELVAL
  224. POINTEUR MELALR.MPOVAL,
  225. & MELALV.MPOVAL,
  226. & MELALP.MPOVAL,
  227. & MELALY.MPOVAL,
  228. & MELALS.MPOVAL
  229. -INC SMLENTI
  230. -INC SMELEME
  231. C
  232. C**** Segments des fractions massiques gauche et droit
  233. C
  234. SEGMENT FRAMAS
  235. REAL*8 FRAMG(NMA), FRAMD(NMA)
  236. ENDSEGMENT
  237. POINTEUR SCALPA.FRAMAS
  238. C
  239. C
  240. C**** Initialisation des parametres d'erreur déjà faite, i.e.
  241. C
  242. C LOGNEG = .FALSE.
  243. C LOGBOR = .FALSE.
  244. C MESERR = ' '
  245. C MOTERR(1:40) = MESERR(1:40)
  246. C VALER = 0.0D0
  247. C VAL1 = 0.0D0
  248. C VAL2 = 0.0D0
  249. C
  250. C
  251. C**** KRIPAD pour la correspondance global/local de centre
  252. C
  253. CALL KRIPAD(ICEN,MLENT1)
  254. C
  255. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  256. C
  257. C Si i est le numero global d'un noeud de ICEN,
  258. C MLENT1.LECT(i) contient sa position, i.e.
  259. C
  260. C I = numero global du noeud centre
  261. C MLENT1.LECT(i) = numero local du noeud centre
  262. C
  263. C MLENT1 déjà activé, i.e.
  264. C
  265. C SEGACT MLENT1
  266. C
  267. C**** Activation de CHPOINTs
  268. C
  269. C densité + grad + limiteur
  270. C vitesse + grad + limiteur
  271. C pression + grad + limiteur
  272. C fract.mass + grad + limiteur
  273. C gamma
  274. C cosinus directeurs des normales aux surface
  275. C
  276. CALL LICHT(IROC , MPROC , TYPE, IGEOM)
  277. CALL LICHT(IGRROC, MPGRR , TYPE, IGEOM)
  278. CALL LICHT(IVITC, MPVITC , TYPE, IGEOM)
  279. CALL LICHT(IGRVC, MPGRV , TYPE, IGEOM)
  280. CALL LICHT(IPC , MPPC , TYPE, IGEOM)
  281. CALL LICHT(IGRPC, MPGRP , TYPE, IGEOM)
  282. IF(LGAMC) CALL LICHT(IGAMC, MPGAMC , TYPE, IGEOM)
  283. CALL LICHT(INORM, MPNORM , TYPE, IGEOM)
  284. C
  285. C**** Les MPOVALs 'Prediction'
  286. C
  287. IF(LOGTEM)THEN
  288. SEGINI, MPROP = MPROC
  289. SEGINI, MPPP = MPPC
  290. SEGINI, MPVITP = MPVITC
  291. ELSE
  292. MPROP = MPROC
  293. MPPP = MPPC
  294. MPVITP = MPVITC
  295. ENDIF
  296. C
  297. C**** Les Limiteurs
  298. C
  299. CALL LICHT(IALROC, MELALR , TYPE, IGEOM)
  300. CALL LICHT(IALVC, MELALV , TYPE, IGEOM)
  301. CALL LICHT(IALPC, MELALP , TYPE, IGEOM)
  302. C
  303. C
  304. C**** Les MPOVAL sont déjà activés i.e.:
  305. C
  306. C SEGACT MPROC
  307. C SEGACT MPGRR
  308. C SEGACT MPIALR
  309. C SEGACT MPVITC
  310. C SEGACT MPGRV
  311. C SEGACT MPIALV
  312. C SEGACT MPPC
  313. C SEGACT MPGRP
  314. C SEGACT MPIALP
  315. C SEGACT MPGAMC (si LGAMC)
  316. C SEGACT MPNORM
  317. C
  318. C**** Le MELEME FACEL
  319. C
  320. IPT1 = IFACEL
  321. IPT2 = IFACE
  322. SEGACT IPT1
  323. SEGACT IPT2
  324. NFAC = IPT1.NUM(/2)
  325. C
  326. C**** Creation de MCHAMLs contenant les etats gauche et droite,
  327. C
  328. C i.e.:
  329. C
  330. C vitesse + cosinus directors du repere local
  331. C densité
  332. C pression
  333. C
  334. C**** Cosinus directors du repere local et vitesse
  335. C
  336. C Les cosinus directeurs
  337. C
  338. N1 = 2
  339. N3 = 6
  340. L1 = 28
  341. SEGINI MCHEL1
  342. IVITF = MCHEL1
  343. MCHEL1.TITCHE = 'U '
  344. MCHEL1.IMACHE(1) = IFACE
  345. MCHEL1.IMACHE(2) = IFACEL
  346. MCHEL1.CONCHE(1) = ' (n,t) in (x,y) '
  347. MCHEL1.CONCHE(2) = ' U in (n,t) '
  348. C
  349. C**** Valeurs des cosinus definies par respect au repair global, i.e.
  350. C
  351. MCHEL1.INFCHE(1,1) = 2
  352. MCHEL1.INFCHE(1,3) = NIFOUR
  353. MCHEL1.INFCHE(1,4) = 0
  354. MCHEL1.INFCHE(1,5) = 0
  355. MCHEL1.INFCHE(1,6) = 0
  356. MCHEL1.IFOCHE = IFOUR
  357. C
  358. C**** Valeurs de vitesse definies par respect au repair local, i.e.
  359. C
  360. MCHEL1.INFCHE(2,1) = 1
  361. MCHEL1.INFCHE(2,3) = NIFOUR
  362. MCHEL1.INFCHE(2,4) = 0
  363. MCHEL1.INFCHE(2,5) = 0
  364. MCHEL1.INFCHE(2,6) = 0
  365. C
  366. C**** Le cosinus directeurs
  367. C
  368. N1PTEL = 1
  369. N1EL = NFAC
  370. N2PTEL = 0
  371. N2EL = 0
  372. C
  373. C**** MCHAML a N2 composantes:
  374. C
  375. C cosinus directeurs du repere local (n,t1)
  376. C
  377. C IDIM = 2 -> 4 composantes
  378. C
  379. N2 = 4
  380. SEGINI MCHAM1
  381. MCHEL1.ICHAML(1) = MCHAM1
  382. MCHAM1.NOMCHE(1) = 'NX '
  383. MCHAM1.NOMCHE(2) = 'NY '
  384. MCHAM1.NOMCHE(3) = 'TX '
  385. MCHAM1.NOMCHE(4) = 'TY '
  386. MCHAM1.TYPCHE(1) = 'REAL*8 '
  387. MCHAM1.TYPCHE(2) = 'REAL*8 '
  388. MCHAM1.TYPCHE(3) = 'REAL*8 '
  389. MCHAM1.TYPCHE(4) = 'REAL*8 '
  390. SEGINI MELVNX
  391. SEGINI MELVNY
  392. SEGINI MELT1X
  393. SEGINI MELT1Y
  394. MCHAM1.IELVAL(1) = MELVNX
  395. MCHAM1.IELVAL(2) = MELVNY
  396. MCHAM1.IELVAL(3) = MELT1X
  397. MCHAM1.IELVAL(4) = MELT1Y
  398. SEGDES MCHAM1
  399. C
  400. C**** Vitesse
  401. C
  402. N1EL = NFAC
  403. N1PTEL = 3
  404. N2EL = 0
  405. N2PTEL = 0
  406. C
  407. C**** MCHAML a N2 composantes:
  408. C
  409. C IDIM = 2 -> 2 composantes
  410. C
  411. N2 = 2
  412. SEGINI MCHAM1
  413. MCHEL1.ICHAML(2) = MCHAM1
  414. SEGDES MCHEL1
  415. MCHAM1.NOMCHE(1) = 'UN '
  416. MCHAM1.NOMCHE(2) = 'UT '
  417. MCHAM1.TYPCHE(1) = 'REAL*8 '
  418. MCHAM1.TYPCHE(2) = 'REAL*8 '
  419. SEGINI MELVUN
  420. SEGINI MELVUT
  421. MCHAM1.IELVAL(1) = MELVUN
  422. MCHAM1.IELVAL(2) = MELVUT
  423. SEGDES MCHAM1
  424. C
  425. C**** Densite
  426. C
  427. N1 = 1
  428. N3 = 6
  429. L1 = 15
  430. SEGINI MCHEL2
  431. IROF = MCHEL2
  432. MCHEL2.IMACHE(1) = IFACEL
  433. MCHEL2.TITCHE = 'RO '
  434. MCHEL2.CONCHE(1) = ' '
  435. C
  436. C**** Valeurs independente du repére, i.e.
  437. C
  438. MCHEL2.INFCHE(1,1) = 0
  439. MCHEL2.INFCHE(1,3) = NIFOUR
  440. MCHEL2.INFCHE(1,4) = 0
  441. MCHEL2.INFCHE(1,5) = 0
  442. MCHEL2.INFCHE(1,6) = 0
  443. MCHEL2.IFOCHE = IFOUR
  444. N2 = 1
  445. SEGINI MCHAM1
  446. MCHEL2.ICHAML(1) = MCHAM1
  447. SEGDES MCHEL2
  448. MCHAM1.NOMCHE(1) = 'SCAL '
  449. MCHAM1.TYPCHE(1) = 'REAL*8 '
  450. SEGINI MELRO
  451. MCHAM1.IELVAL(1) = MELRO
  452. SEGDES MCHAM1
  453. C
  454. C**** Pression
  455. C
  456. MCHEL1 = IROF
  457. SEGINI, MCHEL2 = MCHEL1
  458. IPF = MCHEL2
  459. MCHEL2.TITCHE = 'P '
  460. C
  461. C**** MCHAM1 = MCHAML de la densite
  462. C
  463. SEGINI, MCHAM2 = MCHAM1
  464. MCHEL2.ICHAML(1) = MCHAM2
  465. SEGDES MCHEL2
  466. SEGINI MELP
  467. MCHAM2.IELVAL(1) = MELP
  468. SEGDES MCHAM2
  469. C
  470. C**** Le CHAMELEM des fractions massiques
  471. C
  472. IF(LYC)THEN
  473. MCHPO1 = IYC
  474. SEGACT MCHPO1
  475. MSOUP1 = MCHPO1.IPCHP(1)
  476. SEGDES MCHPO1
  477. SEGACT MSOUP1
  478. MPYC = MSOUP1.IPOVAL
  479. SEGACT MPYC
  480. NESP = MPYC.VPOCHA(/2)
  481. MCHEL1 = IROF
  482. SEGINI, MCHEL2 = MCHEL1
  483. IYF = MCHEL2
  484. MCHEL2.TITCHE = 'Y '
  485. N2 = NESP
  486. SEGINI MCHAMY
  487. MCHEL2.ICHAML(1) = MCHAMY
  488. SEGDES MCHEL2
  489. N1EL = NFAC
  490. N1PTEL = 3
  491. N2EL = 0
  492. N2PTEL = 0
  493. DO I1 = 1, NESP
  494. SEGINI MELVA1
  495. MCHAMY.IELVAL(I1) = MELVA1
  496. MCHAMY.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  497. MCHAMY.TYPCHE(I1) = 'REAL*8 '
  498. ENDDO
  499. SEGDES MSOUP1
  500. C
  501. CALL LICHT(IGRYC, MPGRY , TYPE, IGEOM)
  502. CALL LICHT(IALYC, MELALY , TYPE, IGEOM)
  503. NMA = NESP
  504. SEGINI FRAMAS
  505. IF(LOGTEM)THEN
  506. SEGINI, MPYP = MPYC
  507. ELSE
  508. MPYP = MPYC
  509. ENDIF
  510. ELSE
  511. NESP = 0
  512. IYF = 0
  513. ENDIF
  514. C
  515. C**** Le CHAMELEM des scalaires passifs
  516. C
  517. IF(LSCAC)THEN
  518. MCHPO1 = ISCAC
  519. SEGACT MCHPO1
  520. MSOUP1 = MCHPO1.IPCHP(1)
  521. SEGDES MCHPO1
  522. SEGACT MSOUP1
  523. MPSCAC = MSOUP1.IPOVAL
  524. SEGACT MPSCAC
  525. NSCA = MPSCAC.VPOCHA(/2)
  526. MCHEL1 = IROF
  527. SEGINI, MCHEL2 = MCHEL1
  528. ISCAF = MCHEL2
  529. MCHEL2.TITCHE = 'SCALPASS '
  530. N2 = NSCA
  531. SEGINI MCHAMS
  532. MCHEL2.ICHAML(1) = MCHAMS
  533. SEGDES MCHEL2
  534. N1EL = NFAC
  535. N1PTEL = 3
  536. N2EL = 0
  537. N2PTEL = 0
  538. DO I1 = 1, NSCA
  539. SEGINI MELVA1
  540. MCHAMS.IELVAL(I1) = MELVA1
  541. MCHAMS.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  542. MCHAMS.TYPCHE(I1) = 'REAL*8 '
  543. ENDDO
  544. SEGDES MSOUP1
  545. C
  546. CALL LICHT(IGRSC, MPGRS , TYPE, IGEOM)
  547. CALL LICHT(IALSC, MELALS , TYPE, IGEOM)
  548. NMA = NSCA
  549. SEGINI SCALPA
  550. IF(LOGTEM)THEN
  551. SEGINI, MPSCAP = MPSCAC
  552. ELSE
  553. MPSCAP = MPSCAC
  554. ENDIF
  555. ELSE
  556. NSCA = 0
  557. ISCAF = 0
  558. ENDIF
  559. C
  560. C**** Donc on a aussi actives le chpoints de fractions massiques
  561. C
  562. C SEGACT MPYC
  563. C SEGACT MPGRY
  564. C SEGACT MPIALY
  565. C
  566. C SEGACT MPSCAC
  567. C SEGACT MPGRS
  568. C SEGACT MPIALS
  569. C
  570. C
  571. C***********************************************************************
  572. C********* PREDICTION **************************************************
  573. C***********************************************************************
  574. C
  575. C**** Prediction avec gradients limités
  576. C
  577. C
  578. IF(LOGTEM)THEN
  579. C
  580. IPT3 = ICEN
  581. SEGACT IPT3
  582. NCEN = IPT3.NUM(/2)
  583. DO NLCE = 1, NCEN
  584. ROG = MPROP.VPOCHA(NLCE,1)
  585. UXG = MPVITP.VPOCHA(NLCE,1)
  586. UYG = MPVITP.VPOCHA(NLCE,2)
  587. PG = MPPP.VPOCHA(NLCE,1)
  588. DROX = MPGRR.VPOCHA(NLCE,1)*MELALR.VPOCHA(NLCE,1)
  589. DROY = MPGRR.VPOCHA(NLCE,2)*MELALR.VPOCHA(NLCE,1)
  590. DUXX = MPGRV.VPOCHA(NLCE,1)*MELALV.VPOCHA(NLCE,1)
  591. DUXY = MPGRV.VPOCHA(NLCE,2)*MELALV.VPOCHA(NLCE,1)
  592. DUYX = MPGRV.VPOCHA(NLCE,3)*MELALV.VPOCHA(NLCE,2)
  593. DUYY = MPGRV.VPOCHA(NLCE,4)* MELALV.VPOCHA(NLCE,2)
  594. DPX = MPGRP.VPOCHA(NLCE,1)* MELALP.VPOCHA(NLCE,1)
  595. DPY = MPGRP.VPOCHA(NLCE,2)* MELALP.VPOCHA(NLCE,1)
  596. GAMG = MPGAMC.VPOCHA(NLCE,1)
  597. DRO = UXG * DROX + ROG * ( DUXX + DUYY )
  598. & + UYG * DROY
  599. DUX = UXG * DUXX + DPX / ROG + UYG * DUXY
  600. DUY = UXG * DUYX + UYG * DUYY + DPY / ROG
  601. DP = GAMG * PG * (DUXX + DUYY)
  602. & + UXG * DPX + UYG * DPY
  603. C
  604. MPROP.VPOCHA(NLCE,1) = ROG - DELTAT * DRO
  605. MPVITP.VPOCHA(NLCE,1) = UXG - DELTAT * DUX
  606. MPVITP.VPOCHA(NLCE,2) = UYG - DELTAT * DUY
  607. MPPP.VPOCHA(NLCE,1) = PG - DELTAT * DP
  608. DO I1 = 1, NESP, 1
  609. INDCEL = 2 * I1 - 1
  610. ALPHA = MELALY.VPOCHA(NLCE,I1)
  611. DYMAS = UXG * MPGRY.VPOCHA(NLCE,INDCEL) * ALPHA +
  612. & UYG * MPGRY.VPOCHA(NLCE,INDCEL+1) * ALPHA
  613. MPYP.VPOCHA(NLCE,I1) = MPYC.VPOCHA(NLCE,I1) -
  614. & DELTAT * DYMAS
  615. ENDDO
  616. DO I1 = 1, NSCA, 1
  617. INDCEL = 2 * I1 - 1
  618. ALPHA = MELALS.VPOCHA(NLCE,I1)
  619. DYMAS = UXG * MPGRS.VPOCHA(NLCE,INDCEL) * ALPHA +
  620. & UYG * MPGRS.VPOCHA(NLCE,INDCEL+1) * ALPHA
  621. MPSCAP.VPOCHA(NLCE,I1) = MPSCAC.VPOCHA(NLCE,I1) -
  622. & DELTAT * DYMAS
  623. ENDDO
  624. ENDDO
  625. C
  626. ENDIF
  627. C
  628. C
  629. C***********************************************************************
  630. C********* CORRECTION **************************************************
  631. C***********************************************************************
  632. C
  633. C**** Boucle sur le faces
  634. C
  635. IDIMP1 = IDIM + 1
  636. DO NLCF = 1, NFAC
  637. C
  638. C******* NLCF = numero local du centre de face
  639. C NGCF = numero global du centre de face
  640. C NGCEG = numero global du centre ELT "gauche"
  641. C NLCEG = numero local du centre ELT "gauche"
  642. C NGCED = numero global du centre ELT "droite"
  643. C NLCED = numero local du centre ELT "droite"
  644. C
  645. NGCEG = IPT1.NUM(1,NLCF)
  646. NGCF = IPT1.NUM(2,NLCF)
  647. NGCED = IPT1.NUM(3,NLCF)
  648. NLCEG = MLENT1.LECT(NGCEG)
  649. NLCED = MLENT1.LECT(NGCED)
  650. C
  651. C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF)
  652. C
  653. NGCF1 = IPT2.NUM(1,NLCF)
  654. IF( NGCF1 .NE. NGCF) THEN
  655. LOGAN = .TRUE.
  656. MESERR(1:40) = 'PRET, subroutine pre321.eso '
  657. GOTO 9999
  658. ENDIF
  659. C
  660. C******* Cosinus directeurs des NORMALES aux faces
  661. C
  662. C On impose que les normales sont direct "Gauche" -> "Centre"
  663. C
  664. INDCEL = (NGCEG-1)*IDIMP1
  665. XG = XCOOR(INDCEL+1)
  666. YG = XCOOR(INDCEL+2)
  667. INDCEL = (NGCF-1)*IDIMP1
  668. XC = XCOOR(INDCEL + 1)
  669. YC = XCOOR(INDCEL + 2)
  670. INDCEL = (NGCED-1)*IDIMP1
  671. XD = XCOOR(INDCEL+1)
  672. YD = XCOOR(INDCEL+2)
  673. DXG = XC - XG
  674. DYG = YC - YG
  675. DXD = XC - XD
  676. DYD = YC - YD
  677. C
  678. C******* On calcule le sign du pruduit scalare
  679. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  680. C
  681. CNX = MPNORM.VPOCHA(NLCF,1)
  682. CNY = MPNORM.VPOCHA(NLCF,2)
  683. ORIENT = CNX * DXG + CNY * DYG
  684. ORIENT = SIGN(1.0D0,ORIENT)
  685. IF(ORIENT .NE. 1.0D0)THEN
  686. LOGAN = .TRUE.
  687. MESERR(1:30)=
  688. & 'PRET , subroutine pre321.eso. '
  689. GOTO 9999
  690. ENDIF
  691. CNX = CNX * ORIENT
  692. CNY = CNY * ORIENT
  693. C
  694. C********** Cosinus directeurs de tangent 2D
  695. C
  696. CTX = -1.0D0 * CNY
  697. CTY = CNX
  698. C
  699. C
  700. C******* Les autres MELVALs
  701. C
  702. C
  703. C******* N.B.: On suppose qu'on a déjà controlle RO, P > 0
  704. C y_i \in (0,1)
  705. C Si non il faut le faire, en utilisant LOGBOR,
  706. C LOGNEG, VALER, VAL1, VAL2
  707. C
  708. C
  709. C
  710. C******* NGCEG = NGCED -> Mur
  711. C
  712. IF( NGCEG .EQ. NGCED)THEN
  713. C
  714. C********** Sur le mur on fait de reconstruction sur l'etat gauche
  715. C
  716. C
  717. C********** Etat gauche
  718. C
  719. VALCEL = MPROP.VPOCHA(NLCEG, 1)
  720. ALCEL = MELALR.VPOCHA(NLCEG, 1)
  721. DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG +
  722. & MPGRR.VPOCHA(NLCEG, 2)*DYG
  723. ROG = VALCEL + ALCEL * DCEL
  724. C
  725. VALCEL = MPPP.VPOCHA(NLCEG, 1)
  726. ALCEL = MELALP.VPOCHA(NLCEG, 1)
  727. DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG +
  728. & MPGRP.VPOCHA(NLCEG, 2)*DYG
  729. PG = VALCEL + ALCEL * DCEL
  730. C
  731. LOGI2 = .FALSE.
  732. SUMY = 0.0D0
  733. DO I1 = 1, NESP, 1
  734. INDCEL = 2 * I1 - 1
  735. VALCEL = MPYP.VPOCHA(NLCEG,I1)
  736. ALCEL = MELALY.VPOCHA(NLCEG, I1)
  737. DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG +
  738. & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  739. ALCEL = VALCEL + ALCEL * DCEL
  740. SUMY = SUMY + ALCEL
  741. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  742. FRAMAS.FRAMG(I1) = ALCEL
  743. ENDDO
  744. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  745. C
  746. DO I1 = 1, NSCA, 1
  747. INDCEL = 2 * I1 - 1
  748. VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
  749. ALCEL = MELALS.VPOCHA(NLCEG, I1)
  750. DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG +
  751. & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  752. ALCEL = VALCEL + ALCEL * DCEL
  753. SCALPA.FRAMG(I1) = ALCEL
  754. ENDDO
  755. C
  756. VALCEL = MPVITP.VPOCHA(NLCEG, 1)
  757. ALCEL = MELALV.VPOCHA(NLCEG, 1)
  758. DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG +
  759. & MPGRV.VPOCHA(NLCEG, 2)*DYG
  760. UXG = VALCEL + ALCEL * DCEL
  761. C
  762. VALCEL = MPVITP.VPOCHA(NLCEG, 2)
  763. ALCEL = MELALV.VPOCHA(NLCEG, 2)
  764. DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG +
  765. & MPGRV.VPOCHA(NLCEG, 4)*DYG
  766. UYG = VALCEL + ALCEL * DCEL
  767. C
  768. UNG = UXG * CNX + UYG * CNY
  769. UTG = UXG * CTX + UYG * CTY
  770. C
  771. C********** Si l'on fait pas de prediction, ce n'est pas necessaire de
  772. C controller la positivite' de la pression et de la densité; elle
  773. C est déjà garantie par la proprieté LED de limiteur; mais, vu
  774. C que le limiteur n'est pas calculé ici, mais dans un autre
  775. C operateur, on le fait
  776. C
  777. LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
  778. C
  779. IF(LOGI1)THEN
  780. C
  781. C************* Premier ordre en espace local
  782. C
  783. ROG = MPROC.VPOCHA(NLCEG,1)
  784. ROD = ROG
  785. PG = MPPC.VPOCHA(NLCEG,1)
  786. PD = PG
  787. UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
  788. & MPVITC.VPOCHA(NLCEG,2)*CNY
  789. UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
  790. & MPVITC.VPOCHA(NLCEG,2)*CTY
  791. UND = -1.0D0 * UNG
  792. UTD = UTG
  793. DO I1 = 1, NESP, 1
  794. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  795. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  796. ENDDO
  797. DO I1 = 1, NSCA, 1
  798. SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
  799. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  800. ENDDO
  801. ELSE
  802. C
  803. C********** Son etat droite
  804. C
  805. ROD = ROG
  806. PD = PG
  807. UND = -1.0D0 * UNG
  808. UTD = UTG
  809. DO I1 = 1, NESP, 1
  810. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  811. ENDDO
  812. DO I1 = 1, NSCA, 1
  813. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  814. ENDDO
  815. ENDIF
  816. C
  817. C************* Fin cas mur
  818. C
  819. ELSE
  820. C
  821. C************* Etat gauche
  822. C
  823. VALCEL = MPROP.VPOCHA(NLCEG, 1)
  824. ALCEL = MELALR.VPOCHA(NLCEG, 1)
  825. DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG +
  826. & MPGRR.VPOCHA(NLCEG, 2)*DYG
  827. ROG = VALCEL + ALCEL * DCEL
  828. C
  829. VALCEL = MPPP.VPOCHA(NLCEG, 1)
  830. ALCEL = MELALP.VPOCHA(NLCEG, 1)
  831. DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG +
  832. & MPGRP.VPOCHA(NLCEG, 2)*DYG
  833. PG = VALCEL + ALCEL * DCEL
  834. C
  835. LOGI2 = .FALSE.
  836. SUMY = 0.0D0
  837. DO I1 = 1, NESP, 1
  838. INDCEL = 2 * I1 - 1
  839. VALCEL = MPYP.VPOCHA(NLCEG,I1)
  840. ALCEL = MELALY.VPOCHA(NLCEG, I1)
  841. DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG +
  842. & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  843. ALCEL = VALCEL + ALCEL * DCEL
  844. SUMY = SUMY + ALCEL
  845. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  846. FRAMAS.FRAMG(I1) = ALCEL
  847. ENDDO
  848. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  849. C
  850. DO I1 = 1, NSCA, 1
  851. INDCEL = 2 * I1 - 1
  852. VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
  853. ALCEL = MELALS.VPOCHA(NLCEG, I1)
  854. DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG +
  855. & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  856. ALCEL = VALCEL + ALCEL * DCEL
  857. SCALPA.FRAMG(I1) = ALCEL
  858. ENDDO
  859. C
  860. VALCEL = MPVITP.VPOCHA(NLCEG, 1)
  861. ALCEL = MELALV.VPOCHA(NLCEG, 1)
  862. DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG +
  863. & MPGRV.VPOCHA(NLCEG, 2)*DYG
  864. UXG = VALCEL + ALCEL * DCEL
  865. C
  866. VALCEL = MPVITP.VPOCHA(NLCEG, 2)
  867. ALCEL = MELALV.VPOCHA(NLCEG, 2)
  868. DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG +
  869. & MPGRV.VPOCHA(NLCEG, 4)*DYG
  870. UYG = VALCEL + ALCEL * DCEL
  871. C
  872. UNG = UXG * CNX + UYG * CNY
  873. UTG = UXG * CTX + UYG * CTY
  874. C
  875. C********** Positivite
  876. C
  877. LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
  878. C
  879. IF(LOGI1)THEN
  880. C
  881. C************* Premier ordre en espace local
  882. C
  883. ROG = MPROC.VPOCHA(NLCEG,1)
  884. PG = MPPC.VPOCHA(NLCEG,1)
  885. UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
  886. & MPVITC.VPOCHA(NLCEG,2)*CNY
  887. UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
  888. & MPVITC.VPOCHA(NLCEG,2)*CTY
  889. DO I1 = 1, NESP, 1
  890. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  891. ENDDO
  892. DO I1 = 1, NSCA, 1
  893. SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
  894. ENDDO
  895. ENDIF
  896. C
  897. C********** Etat droite
  898. C
  899. VALCEL = MPROP.VPOCHA(NLCED, 1)
  900. ALCEL = MELALR.VPOCHA(NLCED, 1)
  901. DCEL = MPGRR.VPOCHA(NLCED, 1)*DXD +
  902. & MPGRR.VPOCHA(NLCED, 2)*DYD
  903. ROD = VALCEL + ALCEL * DCEL
  904. C
  905. VALCEL = MPPP.VPOCHA(NLCED, 1)
  906. ALCEL = MELALP.VPOCHA(NLCED, 1)
  907. DCEL = MPGRP.VPOCHA(NLCED, 1)*DXD +
  908. & MPGRP.VPOCHA(NLCED, 2)*DYD
  909. PD = VALCEL + ALCEL * DCEL
  910. C
  911. LOGI2 = .FALSE.
  912. SUMY = 0.0D0
  913. DO I1 = 1, NESP, 1
  914. INDCEL = 2 * I1 - 1
  915. VALCEL = MPYP.VPOCHA(NLCED,I1)
  916. ALCEL = MELALY.VPOCHA(NLCED, I1)
  917. DCEL = MPGRY.VPOCHA(NLCED, INDCEL)*DXD +
  918. & MPGRY.VPOCHA(NLCED,INDCEL + 1 )*DYD
  919. ALCEL = VALCEL + ALCEL * DCEL
  920. SUMY = SUMY + ALCEL
  921. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  922. FRAMAS.FRAMD(I1) = ALCEL
  923. ENDDO
  924. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  925. C
  926. DO I1 = 1, NSCA, 1
  927. INDCEL = 2 * I1 - 1
  928. VALCEL = MPSCAP.VPOCHA(NLCED,I1)
  929. ALCEL = MELALS.VPOCHA(NLCED, I1)
  930. DCEL = MPGRS.VPOCHA(NLCED, INDCEL)*DXD +
  931. & MPGRS.VPOCHA(NLCED,INDCEL + 1 )*DYD
  932. ALCEL = VALCEL + ALCEL * DCEL
  933. SCALPA.FRAMD(I1) = ALCEL
  934. ENDDO
  935. C
  936. VALCEL = MPVITP.VPOCHA(NLCED, 1)
  937. ALCEL = MELALV.VPOCHA(NLCED, 1)
  938. DCEL = MPGRV.VPOCHA(NLCED, 1)*DXD +
  939. & MPGRV.VPOCHA(NLCED, 2)*DYD
  940. UXD = VALCEL + ALCEL * DCEL
  941. C
  942. VALCEL = MPVITP.VPOCHA(NLCED, 2)
  943. ALCEL = MELALV.VPOCHA(NLCED, 2)
  944. DCEL = MPGRV.VPOCHA(NLCED, 3)*DXD +
  945. & MPGRV.VPOCHA(NLCED, 4)*DYD
  946. UYD = VALCEL + ALCEL * DCEL
  947. C
  948. UND = UXD * CNX + UYD * CNY
  949. UTD = UXD * CTX + UYD * CTY
  950. C
  951. C********** Positivite
  952. C
  953. LOGI1 = (PD .LT. 0.0D0) .OR. (ROD .LT. 0.0D0) .OR. LOGI2
  954. C
  955. IF(LOGI1)THEN
  956. C
  957. C************* Premier ordre en espace local
  958. C
  959. ROD = MPROC.VPOCHA(NLCED,1)
  960. PD = MPPC.VPOCHA(NLCED,1)
  961. UND = MPVITC.VPOCHA(NLCED,1)*CNX +
  962. & MPVITC.VPOCHA(NLCED,2)*CNY
  963. UTD = MPVITC.VPOCHA(NLCED,1)*CTX +
  964. & MPVITC.VPOCHA(NLCED,2)*CTY
  965. DO I1 = 1, NESP, 1
  966. FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1)
  967. ENDDO
  968. DO I1 = 1, NSCA, 1
  969. SCALPA.FRAMD(I1) = MPSCAC.VPOCHA(NLCED,I1)
  970. ENDDO
  971. ENDIF
  972. ENDIF
  973. C
  974. C******** Les MELVALs
  975. C
  976. MELRO.VELCHE(1,NLCF) = ROG
  977. MELRO.VELCHE(3,NLCF) = ROD
  978. MELP.VELCHE(1,NLCF) = PG
  979. MELP.VELCHE(3,NLCF) = PD
  980. MELVUN.VELCHE(1,NLCF) = UNG
  981. MELVUN.VELCHE(3,NLCF) = UND
  982. MELVUT.VELCHE(1,NLCF) = UTG
  983. MELVUT.VELCHE(3,NLCF) = UTD
  984. MELVNX.VELCHE(1,NLCF) = CNX
  985. MELVNY.VELCHE(1,NLCF) = CNY
  986. MELT1X.VELCHE(1,NLCF) = CTX
  987. MELT1Y.VELCHE(1,NLCF) = CTY
  988. DO I1 = 1, NESP, 1
  989. MELVA1 = MCHAMY.IELVAL(I1)
  990. MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1)
  991. MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1)
  992. ENDDO
  993. DO I1 = 1, NSCA, 1
  994. MELVA1 = MCHAMS.IELVAL(I1)
  995. MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1)
  996. MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1)
  997. ENDDO
  998. ENDDO
  999. C
  1000. C**** Desactivation des SEGMENTs
  1001. C
  1002. SEGDES IPT1
  1003. SEGDES IPT2
  1004. C
  1005. C**** Le MPOVALs 'Prediction' sont detruits (si existentes)
  1006. C
  1007. IF(LOGTEM)THEN
  1008. SEGSUP MPROP
  1009. SEGSUP MPVITP
  1010. SEGSUP MPPP
  1011. IF(LYC) SEGSUP MPYP
  1012. IF(LSCAC) SEGSUP MPSCAP
  1013. SEGDES MPGAMC
  1014. ENDIF
  1015. C
  1016. SEGDES MPROC
  1017. SEGDES MPGRR
  1018. SEGDES MELALR
  1019. SEGDES MPVITC
  1020. SEGDES MPGRV
  1021. SEGDES MELALV
  1022. SEGDES MPPC
  1023. SEGDES MPGRP
  1024. SEGDES MELALP
  1025. IF(LYC)THEN
  1026. SEGDES MPYC
  1027. SEGDES MPGRY
  1028. SEGDES MELALY
  1029. DO I1 = 1, NESP, 1
  1030. MELVA1 = MCHAMY.IELVAL(I1)
  1031. SEGDES MELVA1
  1032. ENDDO
  1033. SEGDES MCHAMY
  1034. SEGSUP FRAMAS
  1035. ENDIF
  1036. IF(LSCAC)THEN
  1037. SEGDES MPSCAC
  1038. SEGDES MPGRS
  1039. SEGDES MELALS
  1040. DO I1 = 1, NSCA, 1
  1041. MELVA1 = MCHAMS.IELVAL(I1)
  1042. SEGDES MELVA1
  1043. ENDDO
  1044. SEGDES MCHAMS
  1045. SEGSUP SCALPA
  1046. ENDIF
  1047. SEGDES MPNORM
  1048. C
  1049. SEGDES MELRO
  1050. SEGDES MELP
  1051. SEGDES MELVUN
  1052. SEGDES MELVUT
  1053. SEGDES MELVNX
  1054. SEGDES MELVNY
  1055. SEGDES MELT1X
  1056. SEGDES MELT1Y
  1057. C
  1058. C**** Destruction du MELNTI correspondance local/global
  1059. C
  1060. SEGSUP MLENT1
  1061. C
  1062. 9999 CONTINUE
  1063. C
  1064. RETURN
  1065. END
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  

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