Télécharger pre222.eso

Retour à la liste

Numérotation des lignes :

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

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