Télécharger pre321.eso

Retour à la liste

Numérotation des lignes :

  1. C PRE321 SOURCE PV 09/03/12 21:30:57 6325
  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, CARCEL
  200. LOGICAL LOGAN,LOGNEG, LOGBOR, LOGTEM, LOGI1, LOGI2
  201. & ,LGAMC,LYC,LSCAC
  202. C
  203. C**** Les Includes
  204. C
  205. -INC SMCOORD
  206. -INC CCOPTIO
  207. -INC SMCHPOI
  208. POINTEUR MPROC.MPOVAL, MPGRR.MPOVAL,
  209. & MPVITC.MPOVAL, MPGRV.MPOVAL,
  210. & MPPC.MPOVAL, MPGRP.MPOVAL,
  211. & MPYC.MPOVAL, MPGRY.MPOVAL,
  212. & MPSCAC.MPOVAL, MPGRS.MPOVAL,
  213. & MPGAMC.MPOVAL, MPNORM.MPOVAL,
  214. & MPROP.MPOVAL, MPPP.MPOVAL, MPVITP.MPOVAL,
  215. & MPYP.MPOVAL, MPSCAP.MPOVAL
  216. -INC SMCHAML
  217. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  218. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,
  219. & MELT1X.MELVAL, MELT1Y.MELVAL
  220. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL
  221. POINTEUR MELRO.MELVAL, MELP.MELVAL
  222. POINTEUR MELALR.MPOVAL,
  223. & MELALV.MPOVAL,
  224. & MELALP.MPOVAL,
  225. & MELALY.MPOVAL,
  226. & MELALS.MPOVAL
  227. -INC SMLENTI
  228. -INC SMELEME
  229. C
  230. C**** Segments des fractions massiques gauche et droit
  231. C
  232. SEGMENT FRAMAS
  233. REAL*8 FRAMG(NMA), FRAMD(NMA)
  234. ENDSEGMENT
  235. POINTEUR SCALPA.FRAMAS
  236. C
  237. C
  238. C**** Initialisation des parametres d'erreur déjà faite, i.e.
  239. C
  240. C LOGNEG = .FALSE.
  241. C LOGBOR = .FALSE.
  242. C MESERR = ' '
  243. C MOTERR(1:40) = MESERR(1:40)
  244. C VALER = 0.0D0
  245. C VAL1 = 0.0D0
  246. C VAL2 = 0.0D0
  247. C
  248. C
  249. C**** KRIPAD pour la correspondance global/local de centre
  250. C
  251. CALL KRIPAD(ICEN,MLENT1)
  252. C
  253. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  254. C
  255. C Si i est le numero global d'un noeud de ICEN,
  256. C MLENT1.LECT(i) contient sa position, i.e.
  257. C
  258. C I = numero global du noeud centre
  259. C MLENT1.LECT(i) = numero local du noeud centre
  260. C
  261. C MLENT1 déjà activé, i.e.
  262. C
  263. C SEGACT MLENT1
  264. C
  265. C**** Activation de CHPOINTs
  266. C
  267. C densité + grad + limiteur
  268. C vitesse + grad + limiteur
  269. C pression + grad + limiteur
  270. C fract.mass + grad + limiteur
  271. C gamma
  272. C cosinus directeurs des normales aux surface
  273. C
  274. CALL LICHT(IROC , MPROC , TYPE, IGEOM)
  275. CALL LICHT(IGRROC, MPGRR , TYPE, IGEOM)
  276. CALL LICHT(IVITC, MPVITC , TYPE, IGEOM)
  277. CALL LICHT(IGRVC, MPGRV , TYPE, IGEOM)
  278. CALL LICHT(IPC , MPPC , TYPE, IGEOM)
  279. CALL LICHT(IGRPC, MPGRP , TYPE, IGEOM)
  280. IF(LGAMC) CALL LICHT(IGAMC, MPGAMC , TYPE, IGEOM)
  281. CALL LICHT(INORM, MPNORM , TYPE, IGEOM)
  282. C
  283. C**** Les MPOVALs 'Prediction'
  284. C
  285. IF(LOGTEM)THEN
  286. SEGINI, MPROP = MPROC
  287. SEGINI, MPPP = MPPC
  288. SEGINI, MPVITP = MPVITC
  289. ELSE
  290. MPROP = MPROC
  291. MPPP = MPPC
  292. MPVITP = MPVITC
  293. ENDIF
  294. C
  295. C**** Les Limiteurs
  296. C
  297. CALL LICHT(IALROC, MELALR , TYPE, IGEOM)
  298. CALL LICHT(IALVC, MELALV , TYPE, IGEOM)
  299. CALL LICHT(IALPC, MELALP , TYPE, IGEOM)
  300. C
  301. C
  302. C**** Les MPOVAL sont déjà activés i.e.:
  303. C
  304. C SEGACT MPROC
  305. C SEGACT MPGRR
  306. C SEGACT MPIALR
  307. C SEGACT MPVITC
  308. C SEGACT MPGRV
  309. C SEGACT MPIALV
  310. C SEGACT MPPC
  311. C SEGACT MPGRP
  312. C SEGACT MPIALP
  313. C SEGACT MPGAMC (si LGAMC)
  314. C SEGACT MPNORM
  315. C
  316. C**** Le MELEME FACEL
  317. C
  318. IPT1 = IFACEL
  319. IPT2 = IFACE
  320. SEGACT IPT1
  321. SEGACT IPT2
  322. NFAC = IPT1.NUM(/2)
  323. C
  324. C**** Creation de MCHAMLs contenant les etats gauche et droite,
  325. C
  326. C i.e.:
  327. C
  328. C vitesse + cosinus directors du repere local
  329. C densité
  330. C pression
  331. C
  332. C**** Cosinus directors du repere local et vitesse
  333. C
  334. C Les cosinus directeurs
  335. C
  336. N1 = 2
  337. N3 = 6
  338. L1 = 28
  339. SEGINI MCHEL1
  340. IVITF = MCHEL1
  341. MCHEL1.TITCHE = 'U '
  342. MCHEL1.IMACHE(1) = IFACE
  343. MCHEL1.IMACHE(2) = IFACEL
  344. MCHEL1.CONCHE(1) = ' (n,t) in (x,y) '
  345. MCHEL1.CONCHE(2) = ' U in (n,t) '
  346. C
  347. C**** Valeurs des cosinus definies par respect au repair global, i.e.
  348. C
  349. MCHEL1.INFCHE(1,1) = 2
  350. MCHEL1.INFCHE(1,3) = NIFOUR
  351. MCHEL1.INFCHE(1,4) = 0
  352. MCHEL1.INFCHE(1,5) = 0
  353. MCHEL1.INFCHE(1,6) = 0
  354. MCHEL1.IFOCHE = IFOUR
  355. C
  356. C**** Valeurs de vitesse definies par respect au repair local, i.e.
  357. C
  358. MCHEL1.INFCHE(2,1) = 1
  359. MCHEL1.INFCHE(2,3) = NIFOUR
  360. MCHEL1.INFCHE(2,4) = 0
  361. MCHEL1.INFCHE(2,5) = 0
  362. MCHEL1.INFCHE(2,6) = 0
  363. C
  364. C**** Le cosinus directeurs
  365. C
  366. N1PTEL = 1
  367. N1EL = NFAC
  368. N2PTEL = 0
  369. N2EL = 0
  370. C
  371. C**** MCHAML a N2 composantes:
  372. C
  373. C cosinus directeurs du repere local (n,t1)
  374. C
  375. C IDIM = 2 -> 4 composantes
  376. C
  377. N2 = 4
  378. SEGINI MCHAM1
  379. MCHEL1.ICHAML(1) = MCHAM1
  380. MCHAM1.NOMCHE(1) = 'NX '
  381. MCHAM1.NOMCHE(2) = 'NY '
  382. MCHAM1.NOMCHE(3) = 'TX '
  383. MCHAM1.NOMCHE(4) = 'TY '
  384. MCHAM1.TYPCHE(1) = 'REAL*8 '
  385. MCHAM1.TYPCHE(2) = 'REAL*8 '
  386. MCHAM1.TYPCHE(3) = 'REAL*8 '
  387. MCHAM1.TYPCHE(4) = 'REAL*8 '
  388. SEGINI MELVNX
  389. SEGINI MELVNY
  390. SEGINI MELT1X
  391. SEGINI MELT1Y
  392. MCHAM1.IELVAL(1) = MELVNX
  393. MCHAM1.IELVAL(2) = MELVNY
  394. MCHAM1.IELVAL(3) = MELT1X
  395. MCHAM1.IELVAL(4) = MELT1Y
  396. SEGDES MCHAM1
  397. C
  398. C**** Vitesse
  399. C
  400. N1EL = NFAC
  401. N1PTEL = 3
  402. N2EL = 0
  403. N2PTEL = 0
  404. C
  405. C**** MCHAML a N2 composantes:
  406. C
  407. C IDIM = 2 -> 2 composantes
  408. C
  409. N2 = 2
  410. SEGINI MCHAM1
  411. MCHEL1.ICHAML(2) = MCHAM1
  412. SEGDES MCHEL1
  413. MCHAM1.NOMCHE(1) = 'UN '
  414. MCHAM1.NOMCHE(2) = 'UT '
  415. MCHAM1.TYPCHE(1) = 'REAL*8 '
  416. MCHAM1.TYPCHE(2) = 'REAL*8 '
  417. SEGINI MELVUN
  418. SEGINI MELVUT
  419. MCHAM1.IELVAL(1) = MELVUN
  420. MCHAM1.IELVAL(2) = MELVUT
  421. SEGDES MCHAM1
  422. C
  423. C**** Densite
  424. C
  425. N1 = 1
  426. N3 = 6
  427. L1 = 15
  428. SEGINI MCHEL2
  429. IROF = MCHEL2
  430. MCHEL2.IMACHE(1) = IFACEL
  431. MCHEL2.TITCHE = 'RO '
  432. MCHEL2.CONCHE(1) = ' '
  433. C
  434. C**** Valeurs independente du repére, i.e.
  435. C
  436. MCHEL2.INFCHE(1,1) = 0
  437. MCHEL2.INFCHE(1,3) = NIFOUR
  438. MCHEL2.INFCHE(1,4) = 0
  439. MCHEL2.INFCHE(1,5) = 0
  440. MCHEL2.INFCHE(1,6) = 0
  441. MCHEL2.IFOCHE = IFOUR
  442. N2 = 1
  443. SEGINI MCHAM1
  444. MCHEL2.ICHAML(1) = MCHAM1
  445. SEGDES MCHEL2
  446. MCHAM1.NOMCHE(1) = 'SCAL '
  447. MCHAM1.TYPCHE(1) = 'REAL*8 '
  448. SEGINI MELRO
  449. MCHAM1.IELVAL(1) = MELRO
  450. SEGDES MCHAM1
  451. C
  452. C**** Pression
  453. C
  454. MCHEL1 = IROF
  455. SEGINI, MCHEL2 = MCHEL1
  456. IPF = MCHEL2
  457. MCHEL2.TITCHE = 'P '
  458. C
  459. C**** MCHAM1 = MCHAML de la densite
  460. C
  461. SEGINI, MCHAM2 = MCHAM1
  462. MCHEL2.ICHAML(1) = MCHAM2
  463. SEGDES MCHEL2
  464. SEGINI MELP
  465. MCHAM2.IELVAL(1) = MELP
  466. SEGDES MCHAM2
  467. C
  468. C**** Le CHAMELEM des fractions massiques
  469. C
  470. IF(LYC)THEN
  471. MCHPO1 = IYC
  472. SEGACT MCHPO1
  473. MSOUP1 = MCHPO1.IPCHP(1)
  474. SEGDES MCHPO1
  475. SEGACT MSOUP1
  476. MPYC = MSOUP1.IPOVAL
  477. SEGACT MPYC
  478. NESP = MPYC.VPOCHA(/2)
  479. MCHEL1 = IROF
  480. SEGINI, MCHEL2 = MCHEL1
  481. IYF = MCHEL2
  482. MCHEL2.TITCHE = 'Y '
  483. N2 = NESP
  484. SEGINI MCHAMY
  485. MCHEL2.ICHAML(1) = MCHAMY
  486. SEGDES MCHEL2
  487. N1EL = NFAC
  488. N1PTEL = 3
  489. N2EL = 0
  490. N2PTEL = 0
  491. DO I1 = 1, NESP
  492. SEGINI MELVA1
  493. MCHAMY.IELVAL(I1) = MELVA1
  494. CARCEL = ' '
  495. CARCEL(1:4) = MSOUP1.NOCOMP(I1)
  496. MCHAMY.NOMCHE(I1) = CARCEL
  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. CARCEL = ' '
  542. CARCEL(1:4) = MSOUP1.NOCOMP(I1)
  543. MCHAMS.NOMCHE(I1) = CARCEL
  544. MCHAMS.TYPCHE(I1) = 'REAL*8 '
  545. ENDDO
  546. SEGDES MSOUP1
  547. C
  548. CALL LICHT(IGRSC, MPGRS , TYPE, IGEOM)
  549. CALL LICHT(IALSC, MELALS , TYPE, IGEOM)
  550. NMA = NSCA
  551. SEGINI SCALPA
  552. IF(LOGTEM)THEN
  553. SEGINI, MPSCAP = MPSCAC
  554. ELSE
  555. MPSCAP = MPSCAC
  556. ENDIF
  557. ELSE
  558. NSCA = 0
  559. ISCAF = 0
  560. ENDIF
  561. C
  562. C**** Donc on a aussi actives le chpoints de fractions massiques
  563. C
  564. C SEGACT MPYC
  565. C SEGACT MPGRY
  566. C SEGACT MPIALY
  567. C
  568. C SEGACT MPSCAC
  569. C SEGACT MPGRS
  570. C SEGACT MPIALS
  571. C
  572. C
  573. C***********************************************************************
  574. C********* PREDICTION **************************************************
  575. C***********************************************************************
  576. C
  577. C**** Prediction avec gradients limités
  578. C
  579. C
  580. IF(LOGTEM)THEN
  581. C
  582. IPT3 = ICEN
  583. SEGACT IPT3
  584. NCEN = IPT3.NUM(/2)
  585. DO NLCE = 1, NCEN
  586. ROG = MPROP.VPOCHA(NLCE,1)
  587. UXG = MPVITP.VPOCHA(NLCE,1)
  588. UYG = MPVITP.VPOCHA(NLCE,2)
  589. PG = MPPP.VPOCHA(NLCE,1)
  590. DROX = MPGRR.VPOCHA(NLCE,1)*MELALR.VPOCHA(NLCE,1)
  591. DROY = MPGRR.VPOCHA(NLCE,2)*MELALR.VPOCHA(NLCE,1)
  592. DUXX = MPGRV.VPOCHA(NLCE,1)*MELALV.VPOCHA(NLCE,1)
  593. DUXY = MPGRV.VPOCHA(NLCE,2)*MELALV.VPOCHA(NLCE,1)
  594. DUYX = MPGRV.VPOCHA(NLCE,3)*MELALV.VPOCHA(NLCE,2)
  595. DUYY = MPGRV.VPOCHA(NLCE,4)* MELALV.VPOCHA(NLCE,2)
  596. DPX = MPGRP.VPOCHA(NLCE,1)* MELALP.VPOCHA(NLCE,1)
  597. DPY = MPGRP.VPOCHA(NLCE,2)* MELALP.VPOCHA(NLCE,1)
  598. GAMG = MPGAMC.VPOCHA(NLCE,1)
  599. DRO = UXG * DROX + ROG * ( DUXX + DUYY )
  600. & + UYG * DROY
  601. DUX = UXG * DUXX + DPX / ROG + UYG * DUXY
  602. DUY = UXG * DUYX + UYG * DUYY + DPY / ROG
  603. DP = GAMG * PG * (DUXX + DUYY)
  604. & + UXG * DPX + UYG * DPY
  605. C
  606. MPROP.VPOCHA(NLCE,1) = ROG - DELTAT * DRO
  607. MPVITP.VPOCHA(NLCE,1) = UXG - DELTAT * DUX
  608. MPVITP.VPOCHA(NLCE,2) = UYG - DELTAT * DUY
  609. MPPP.VPOCHA(NLCE,1) = PG - DELTAT * DP
  610. DO I1 = 1, NESP, 1
  611. INDCEL = 2 * I1 - 1
  612. ALPHA = MELALY.VPOCHA(NLCE,I1)
  613. DYMAS = UXG * MPGRY.VPOCHA(NLCE,INDCEL) * ALPHA +
  614. & UYG * MPGRY.VPOCHA(NLCE,INDCEL+1) * ALPHA
  615. MPYP.VPOCHA(NLCE,I1) = MPYC.VPOCHA(NLCE,I1) -
  616. & DELTAT * DYMAS
  617. ENDDO
  618. DO I1 = 1, NSCA, 1
  619. INDCEL = 2 * I1 - 1
  620. ALPHA = MELALS.VPOCHA(NLCE,I1)
  621. DYMAS = UXG * MPGRS.VPOCHA(NLCE,INDCEL) * ALPHA +
  622. & UYG * MPGRS.VPOCHA(NLCE,INDCEL+1) * ALPHA
  623. MPSCAP.VPOCHA(NLCE,I1) = MPSCAC.VPOCHA(NLCE,I1) -
  624. & DELTAT * DYMAS
  625. ENDDO
  626. ENDDO
  627. C
  628. ENDIF
  629. C
  630. C
  631. C***********************************************************************
  632. C********* CORRECTION **************************************************
  633. C***********************************************************************
  634. C
  635. C**** Boucle sur le faces
  636. C
  637. IDIMP1 = IDIM + 1
  638. DO NLCF = 1, NFAC
  639. C
  640. C******* NLCF = numero local du centre de face
  641. C NGCF = numero global du centre de face
  642. C NGCEG = numero global du centre ELT "gauche"
  643. C NLCEG = numero local du centre ELT "gauche"
  644. C NGCED = numero global du centre ELT "droite"
  645. C NLCED = numero local du centre ELT "droite"
  646. C
  647. NGCEG = IPT1.NUM(1,NLCF)
  648. NGCF = IPT1.NUM(2,NLCF)
  649. NGCED = IPT1.NUM(3,NLCF)
  650. NLCEG = MLENT1.LECT(NGCEG)
  651. NLCED = MLENT1.LECT(NGCED)
  652. C
  653. C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF)
  654. C
  655. NGCF1 = IPT2.NUM(1,NLCF)
  656. IF( NGCF1 .NE. NGCF) THEN
  657. LOGAN = .TRUE.
  658. MESERR(1:40) = 'PRET, subroutine pre321.eso '
  659. GOTO 9999
  660. ENDIF
  661. C
  662. C******* Cosinus directeurs des NORMALES aux faces
  663. C
  664. C On impose que les normales sont direct "Gauche" -> "Centre"
  665. C
  666. INDCEL = (NGCEG-1)*IDIMP1
  667. XG = XCOOR(INDCEL+1)
  668. YG = XCOOR(INDCEL+2)
  669. INDCEL = (NGCF-1)*IDIMP1
  670. XC = XCOOR(INDCEL + 1)
  671. YC = XCOOR(INDCEL + 2)
  672. INDCEL = (NGCED-1)*IDIMP1
  673. XD = XCOOR(INDCEL+1)
  674. YD = XCOOR(INDCEL+2)
  675. DXG = XC - XG
  676. DYG = YC - YG
  677. DXD = XC - XD
  678. DYD = YC - YD
  679. C
  680. C******* On calcule le sign du pruduit scalare
  681. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  682. C
  683. CNX = MPNORM.VPOCHA(NLCF,1)
  684. CNY = MPNORM.VPOCHA(NLCF,2)
  685. ORIENT = CNX * DXG + CNY * DYG
  686. ORIENT = SIGN(1.0D0,ORIENT)
  687. IF(ORIENT .NE. 1.0D0)THEN
  688. LOGAN = .TRUE.
  689. MESERR(1:30)=
  690. & 'PRET , subroutine pre321.eso. '
  691. GOTO 9999
  692. ENDIF
  693. CNX = CNX * ORIENT
  694. CNY = CNY * ORIENT
  695. C
  696. C********** Cosinus directeurs de tangent 2D
  697. C
  698. CTX = -1.0D0 * CNY
  699. CTY = CNX
  700. C
  701. C
  702. C******* Les autres MELVALs
  703. C
  704. C
  705. C******* N.B.: On suppose qu'on a déjà controlle RO, P > 0
  706. C y_i \in (0,1)
  707. C Si non il faut le faire, en utilisant LOGBOR,
  708. C LOGNEG, VALER, VAL1, VAL2
  709. C
  710. C
  711. C
  712. C******* NGCEG = NGCED -> Mur
  713. C
  714. IF( NGCEG .EQ. NGCED)THEN
  715. C
  716. C********** Sur le mur on fait de reconstruction sur l'etat gauche
  717. C
  718. C
  719. C********** Etat gauche
  720. C
  721. VALCEL = MPROP.VPOCHA(NLCEG, 1)
  722. ALCEL = MELALR.VPOCHA(NLCEG, 1)
  723. DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG +
  724. & MPGRR.VPOCHA(NLCEG, 2)*DYG
  725. ROG = VALCEL + ALCEL * DCEL
  726. C
  727. VALCEL = MPPP.VPOCHA(NLCEG, 1)
  728. ALCEL = MELALP.VPOCHA(NLCEG, 1)
  729. DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG +
  730. & MPGRP.VPOCHA(NLCEG, 2)*DYG
  731. PG = VALCEL + ALCEL * DCEL
  732. C
  733. LOGI2 = .FALSE.
  734. SUMY = 0.0D0
  735. DO I1 = 1, NESP, 1
  736. INDCEL = 2 * I1 - 1
  737. VALCEL = MPYP.VPOCHA(NLCEG,I1)
  738. ALCEL = MELALY.VPOCHA(NLCEG, I1)
  739. DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG +
  740. & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  741. ALCEL = VALCEL + ALCEL * DCEL
  742. SUMY = SUMY + ALCEL
  743. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  744. FRAMAS.FRAMG(I1) = ALCEL
  745. ENDDO
  746. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  747. C
  748. DO I1 = 1, NSCA, 1
  749. INDCEL = 2 * I1 - 1
  750. VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
  751. ALCEL = MELALS.VPOCHA(NLCEG, I1)
  752. DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG +
  753. & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  754. ALCEL = VALCEL + ALCEL * DCEL
  755. SCALPA.FRAMG(I1) = ALCEL
  756. ENDDO
  757. C
  758. VALCEL = MPVITP.VPOCHA(NLCEG, 1)
  759. ALCEL = MELALV.VPOCHA(NLCEG, 1)
  760. DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG +
  761. & MPGRV.VPOCHA(NLCEG, 2)*DYG
  762. UXG = VALCEL + ALCEL * DCEL
  763. C
  764. VALCEL = MPVITP.VPOCHA(NLCEG, 2)
  765. ALCEL = MELALV.VPOCHA(NLCEG, 2)
  766. DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG +
  767. & MPGRV.VPOCHA(NLCEG, 4)*DYG
  768. UYG = VALCEL + ALCEL * DCEL
  769. C
  770. UNG = UXG * CNX + UYG * CNY
  771. UTG = UXG * CTX + UYG * CTY
  772. C
  773. C********** Si l'on fait pas de prediction, ce n'est pas necessaire de
  774. C controller la positivite' de la pression et de la densité; elle
  775. C est déjà garantie par la proprieté LED de limiteur; mais, vu
  776. C que le limiteur n'est pas calculé ici, mais dans un autre
  777. C operateur, on le fait
  778. C
  779. LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
  780. C
  781. IF(LOGI1)THEN
  782. C
  783. C************* Premier ordre en espace local
  784. C
  785. ROG = MPROC.VPOCHA(NLCEG,1)
  786. ROD = ROG
  787. PG = MPPC.VPOCHA(NLCEG,1)
  788. PD = PG
  789. UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
  790. & MPVITC.VPOCHA(NLCEG,2)*CNY
  791. UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
  792. & MPVITC.VPOCHA(NLCEG,2)*CTY
  793. UND = -1.0D0 * UNG
  794. UTD = UTG
  795. DO I1 = 1, NESP, 1
  796. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  797. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  798. ENDDO
  799. DO I1 = 1, NSCA, 1
  800. SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
  801. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  802. ENDDO
  803. ELSE
  804. C
  805. C********** Son etat droite
  806. C
  807. ROD = ROG
  808. PD = PG
  809. UND = -1.0D0 * UNG
  810. UTD = UTG
  811. DO I1 = 1, NESP, 1
  812. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  813. ENDDO
  814. DO I1 = 1, NSCA, 1
  815. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  816. ENDDO
  817. ENDIF
  818. C
  819. C************* Fin cas mur
  820. C
  821. ELSE
  822. C
  823. C************* Etat gauche
  824. C
  825. VALCEL = MPROP.VPOCHA(NLCEG, 1)
  826. ALCEL = MELALR.VPOCHA(NLCEG, 1)
  827. DCEL = MPGRR.VPOCHA(NLCEG, 1)*DXG +
  828. & MPGRR.VPOCHA(NLCEG, 2)*DYG
  829. ROG = VALCEL + ALCEL * DCEL
  830. C
  831. VALCEL = MPPP.VPOCHA(NLCEG, 1)
  832. ALCEL = MELALP.VPOCHA(NLCEG, 1)
  833. DCEL = MPGRP.VPOCHA(NLCEG, 1)*DXG +
  834. & MPGRP.VPOCHA(NLCEG, 2)*DYG
  835. PG = VALCEL + ALCEL * DCEL
  836. C
  837. LOGI2 = .FALSE.
  838. SUMY = 0.0D0
  839. DO I1 = 1, NESP, 1
  840. INDCEL = 2 * I1 - 1
  841. VALCEL = MPYP.VPOCHA(NLCEG,I1)
  842. ALCEL = MELALY.VPOCHA(NLCEG, I1)
  843. DCEL = MPGRY.VPOCHA(NLCEG, INDCEL)*DXG +
  844. & MPGRY.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  845. ALCEL = VALCEL + ALCEL * DCEL
  846. SUMY = SUMY + ALCEL
  847. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  848. FRAMAS.FRAMG(I1) = ALCEL
  849. ENDDO
  850. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  851. C
  852. DO I1 = 1, NSCA, 1
  853. INDCEL = 2 * I1 - 1
  854. VALCEL = MPSCAP.VPOCHA(NLCEG,I1)
  855. ALCEL = MELALS.VPOCHA(NLCEG, I1)
  856. DCEL = MPGRS.VPOCHA(NLCEG, INDCEL)*DXG +
  857. & MPGRS.VPOCHA(NLCEG,INDCEL + 1 )*DYG
  858. ALCEL = VALCEL + ALCEL * DCEL
  859. SCALPA.FRAMG(I1) = ALCEL
  860. ENDDO
  861. C
  862. VALCEL = MPVITP.VPOCHA(NLCEG, 1)
  863. ALCEL = MELALV.VPOCHA(NLCEG, 1)
  864. DCEL = MPGRV.VPOCHA(NLCEG, 1)*DXG +
  865. & MPGRV.VPOCHA(NLCEG, 2)*DYG
  866. UXG = VALCEL + ALCEL * DCEL
  867. C
  868. VALCEL = MPVITP.VPOCHA(NLCEG, 2)
  869. ALCEL = MELALV.VPOCHA(NLCEG, 2)
  870. DCEL = MPGRV.VPOCHA(NLCEG, 3)*DXG +
  871. & MPGRV.VPOCHA(NLCEG, 4)*DYG
  872. UYG = VALCEL + ALCEL * DCEL
  873. C
  874. UNG = UXG * CNX + UYG * CNY
  875. UTG = UXG * CTX + UYG * CTY
  876. C
  877. C********** Positivite
  878. C
  879. LOGI1 = (PG .LT. 0.0D0) .OR. (ROG .LT. 0.0D0) .OR. LOGI2
  880. C
  881. IF(LOGI1)THEN
  882. C
  883. C************* Premier ordre en espace local
  884. C
  885. ROG = MPROC.VPOCHA(NLCEG,1)
  886. PG = MPPC.VPOCHA(NLCEG,1)
  887. UNG = MPVITC.VPOCHA(NLCEG,1)*CNX +
  888. & MPVITC.VPOCHA(NLCEG,2)*CNY
  889. UTG = MPVITC.VPOCHA(NLCEG,1)*CTX +
  890. & MPVITC.VPOCHA(NLCEG,2)*CTY
  891. DO I1 = 1, NESP, 1
  892. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  893. ENDDO
  894. DO I1 = 1, NSCA, 1
  895. SCALPA.FRAMG(I1) = MPSCAC.VPOCHA(NLCEG,I1)
  896. ENDDO
  897. ENDIF
  898. C
  899. C********** Etat droite
  900. C
  901. VALCEL = MPROP.VPOCHA(NLCED, 1)
  902. ALCEL = MELALR.VPOCHA(NLCED, 1)
  903. DCEL = MPGRR.VPOCHA(NLCED, 1)*DXD +
  904. & MPGRR.VPOCHA(NLCED, 2)*DYD
  905. ROD = VALCEL + ALCEL * DCEL
  906. C
  907. VALCEL = MPPP.VPOCHA(NLCED, 1)
  908. ALCEL = MELALP.VPOCHA(NLCED, 1)
  909. DCEL = MPGRP.VPOCHA(NLCED, 1)*DXD +
  910. & MPGRP.VPOCHA(NLCED, 2)*DYD
  911. PD = VALCEL + ALCEL * DCEL
  912. C
  913. LOGI2 = .FALSE.
  914. SUMY = 0.0D0
  915. DO I1 = 1, NESP, 1
  916. INDCEL = 2 * I1 - 1
  917. VALCEL = MPYP.VPOCHA(NLCED,I1)
  918. ALCEL = MELALY.VPOCHA(NLCED, I1)
  919. DCEL = MPGRY.VPOCHA(NLCED, INDCEL)*DXD +
  920. & MPGRY.VPOCHA(NLCED,INDCEL + 1 )*DYD
  921. ALCEL = VALCEL + ALCEL * DCEL
  922. SUMY = SUMY + ALCEL
  923. LOGI2 = LOGI2 .OR. (ALCEL .LT. 0.0D0)
  924. FRAMAS.FRAMD(I1) = ALCEL
  925. ENDDO
  926. LOGI2 = LOGI2 .OR. (SUMY .GT. 1.0D0)
  927. C
  928. DO I1 = 1, NSCA, 1
  929. INDCEL = 2 * I1 - 1
  930. VALCEL = MPSCAP.VPOCHA(NLCED,I1)
  931. ALCEL = MELALS.VPOCHA(NLCED, I1)
  932. DCEL = MPGRS.VPOCHA(NLCED, INDCEL)*DXD +
  933. & MPGRS.VPOCHA(NLCED,INDCEL + 1 )*DYD
  934. ALCEL = VALCEL + ALCEL * DCEL
  935. SCALPA.FRAMD(I1) = ALCEL
  936. ENDDO
  937. C
  938. VALCEL = MPVITP.VPOCHA(NLCED, 1)
  939. ALCEL = MELALV.VPOCHA(NLCED, 1)
  940. DCEL = MPGRV.VPOCHA(NLCED, 1)*DXD +
  941. & MPGRV.VPOCHA(NLCED, 2)*DYD
  942. UXD = VALCEL + ALCEL * DCEL
  943. C
  944. VALCEL = MPVITP.VPOCHA(NLCED, 2)
  945. ALCEL = MELALV.VPOCHA(NLCED, 2)
  946. DCEL = MPGRV.VPOCHA(NLCED, 3)*DXD +
  947. & MPGRV.VPOCHA(NLCED, 4)*DYD
  948. UYD = VALCEL + ALCEL * DCEL
  949. C
  950. UND = UXD * CNX + UYD * CNY
  951. UTD = UXD * CTX + UYD * CTY
  952. C
  953. C********** Positivite
  954. C
  955. LOGI1 = (PD .LT. 0.0D0) .OR. (ROD .LT. 0.0D0) .OR. LOGI2
  956. C
  957. IF(LOGI1)THEN
  958. C
  959. C************* Premier ordre en espace local
  960. C
  961. ROD = MPROC.VPOCHA(NLCED,1)
  962. PD = MPPC.VPOCHA(NLCED,1)
  963. UND = MPVITC.VPOCHA(NLCED,1)*CNX +
  964. & MPVITC.VPOCHA(NLCED,2)*CNY
  965. UTD = MPVITC.VPOCHA(NLCED,1)*CTX +
  966. & MPVITC.VPOCHA(NLCED,2)*CTY
  967. DO I1 = 1, NESP, 1
  968. FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1)
  969. ENDDO
  970. DO I1 = 1, NSCA, 1
  971. SCALPA.FRAMD(I1) = MPSCAC.VPOCHA(NLCED,I1)
  972. ENDDO
  973. ENDIF
  974. ENDIF
  975. C
  976. C******** Les MELVALs
  977. C
  978. MELRO.VELCHE(1,NLCF) = ROG
  979. MELRO.VELCHE(3,NLCF) = ROD
  980. MELP.VELCHE(1,NLCF) = PG
  981. MELP.VELCHE(3,NLCF) = PD
  982. MELVUN.VELCHE(1,NLCF) = UNG
  983. MELVUN.VELCHE(3,NLCF) = UND
  984. MELVUT.VELCHE(1,NLCF) = UTG
  985. MELVUT.VELCHE(3,NLCF) = UTD
  986. MELVNX.VELCHE(1,NLCF) = CNX
  987. MELVNY.VELCHE(1,NLCF) = CNY
  988. MELT1X.VELCHE(1,NLCF) = CTX
  989. MELT1Y.VELCHE(1,NLCF) = CTY
  990. DO I1 = 1, NESP, 1
  991. MELVA1 = MCHAMY.IELVAL(I1)
  992. MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1)
  993. MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1)
  994. ENDDO
  995. DO I1 = 1, NSCA, 1
  996. MELVA1 = MCHAMS.IELVAL(I1)
  997. MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1)
  998. MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1)
  999. ENDDO
  1000. ENDDO
  1001. C
  1002. C**** Desactivation des SEGMENTs
  1003. C
  1004. SEGDES IPT1
  1005. SEGDES IPT2
  1006. C
  1007. C**** Le MPOVALs 'Prediction' sont detruits (si existentes)
  1008. C
  1009. IF(LOGTEM)THEN
  1010. SEGSUP MPROP
  1011. SEGSUP MPVITP
  1012. SEGSUP MPPP
  1013. IF(LYC) SEGSUP MPYP
  1014. IF(LSCAC) SEGSUP MPSCAP
  1015. SEGDES MPGAMC
  1016. ENDIF
  1017. C
  1018. SEGDES MPROC
  1019. SEGDES MPGRR
  1020. SEGDES MELALR
  1021. SEGDES MPVITC
  1022. SEGDES MPGRV
  1023. SEGDES MELALV
  1024. SEGDES MPPC
  1025. SEGDES MPGRP
  1026. SEGDES MELALP
  1027. IF(LYC)THEN
  1028. SEGDES MPYC
  1029. SEGDES MPGRY
  1030. SEGDES MELALY
  1031. DO I1 = 1, NESP, 1
  1032. MELVA1 = MCHAMY.IELVAL(I1)
  1033. SEGDES MELVA1
  1034. ENDDO
  1035. SEGDES MCHAMY
  1036. SEGSUP FRAMAS
  1037. ENDIF
  1038. IF(LSCAC)THEN
  1039. SEGDES MPSCAC
  1040. SEGDES MPGRS
  1041. SEGDES MELALS
  1042. DO I1 = 1, NSCA, 1
  1043. MELVA1 = MCHAMS.IELVAL(I1)
  1044. SEGDES MELVA1
  1045. ENDDO
  1046. SEGDES MCHAMS
  1047. SEGSUP SCALPA
  1048. ENDIF
  1049. SEGDES MPNORM
  1050. C
  1051. SEGDES MELRO
  1052. SEGDES MELP
  1053. SEGDES MELVUN
  1054. SEGDES MELVUT
  1055. SEGDES MELVNX
  1056. SEGDES MELVNY
  1057. SEGDES MELT1X
  1058. SEGDES MELT1Y
  1059. C
  1060. C**** Destruction du MELNTI correspondance local/global
  1061. C
  1062. SEGSUP MLENT1
  1063. C
  1064. 9999 CONTINUE
  1065. C
  1066. RETURN
  1067. END
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  

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