Télécharger pre312.eso

Retour à la liste

Numérotation des lignes :

pre312
  1. C PRE312 SOURCE OF166741 24/12/13 21:17:03 12097
  2. SUBROUTINE PRE312(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,
  3. & IYC,ISCAC,
  4. & IROF,IVITF,IPF,IYF,ISCAF,
  5. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  6. C************************************************************************
  7. C
  8. C PROJET : CASTEM 2000
  9. C
  10. C NOM : PRE312
  11. C
  12. C DESCRIPTION : Voir PRE31
  13. C
  14. C Cas Trois Dimensions
  15. C
  16. C Mono/MultiEspeces
  17. C
  18. C 1er ordre en espace, 1re ordre en temps
  19. C
  20. C Creations des objets MCHAML IROF, IVITF, IPF,IYF
  21. C
  22. C
  23. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  24. C
  25. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  26. C
  27. C************************************************************************
  28. C
  29. C
  30. C APPELES (Outils) : KRIPAD, LICHT
  31. C
  32. C APPELES (Calcul) : AUCUN
  33. C
  34. C
  35. C************************************************************************
  36. C
  37. C ENTREES
  38. C
  39. C 1) Pointeurs de MELEMEs et de CHPOINTs de la table DOMAINE
  40. C
  41. C ICEN : MELEME de 'POI1' SPG des CENTRES
  42. C
  43. C IFACE : MELEME de 'POI1' SPG des FACES
  44. C
  45. C IFACEL : MELEME de 'SEG3' avec
  46. C CENTRE d'Elt "gauche"
  47. C CENTRE de Face
  48. C CENTRE d'Elt "droite"
  49. C
  50. C N.B. = IFACE.NUM(i,1) = IFACEL.NUM(i,2)
  51. C
  52. C INORM : CHPOINT des cosinus directeurs de normales aux faces
  53. C
  54. C 2) Pointeurs des CHPOINTs
  55. C
  56. C IROC : CHPOINT "CENTRE" contenant la masse volumique RHO
  57. C
  58. C IVITC : CHPOINT "CENTRE" contenant la vitesse UX, UY, UZ ;
  59. C
  60. C IPC : CHPOINT "CENTRE" contenat la pression P;
  61. C
  62. C IYC : CHPOINT "CENTRE" contenat les fractions massiques
  63. C (ou 0 dans le cas monoespece);
  64. C
  65. C ISCAC : CHPOINT "CENTRE" contenat les scalaires passifs
  66. C (ou 0);
  67. C
  68. C
  69. C SORTIES
  70. C
  71. C
  72. C IROF : MCHAML defini sur le MELEME de pointeur IFACEL,
  73. C contenant la masse volumique RHO
  74. C
  75. C IVITF : MCHAML defini sur le MELEME de pointeur IFACEL,
  76. C contenant la vitesse UN, UT1, UT2 dans le repaire
  77. C local (n,t1,t2) et defini sur le MELEME de pointeur
  78. C IFACE, contenant les cosinus directeurs du repere local
  79. C
  80. C IPF : MCHAML defini sur le MELEME de pointeur IFACEL,
  81. C contenant la pression P
  82. C
  83. C IYF : MCHAML defini sur le MELEME de pointeur IFACEL,
  84. C contenant les fractions massiques (ou 0 dans le cas
  85. C monoespece);
  86. C
  87. C ISCAF : MCHAML defini sur le MELEME de pointeur IFACEL,
  88. C contenant les scalaire passifs (ou 0)
  89. C
  90. C LOGAN : anomalie detectee (changement de la convention dans
  91. C la table domaine)
  92. C
  93. C LOGNEG : (LOGICAL): si .TRUE. une pression ou une densité
  94. C negative a été detectée -> en interactif le
  95. C programme s'arrete en GIBIANE
  96. C (erreur stocké en MESERR et VALER)
  97. C
  98. C LOGBOR : (LOGICAL): si .TRUE. un Y a ete detecte
  99. C dehor 1 et 3 (sa valeur stockée en MESERR et VALER;
  100. C en VAL1 et en VAL2 on stocke 1.0 et 3.0)
  101. C
  102. C MESERR
  103. C VALER
  104. C VAL1,
  105. C VAL2 : pour les messages d'erreur
  106. C
  107. C************************************************************************
  108. C
  109. C HISTORIQUE (Anomalies et modifications éventuelles)
  110. C
  111. C HISTORIQUE : Créée le 18.12.98.
  112. C
  113. C 17.02.2000: transport des scalaires passifs
  114. C
  115. C************************************************************************
  116. C
  117. C
  118. C ATTENTION: Cet programme marche si le MAILLAGE est convex;
  119. C si non il faut changer l'argoritme de calcul de
  120. C l'orientation des normales aux faces.
  121. C
  122. C
  123. C************************************************************************
  124. C
  125. C**** Les variables
  126. C
  127. IMPLICIT INTEGER(I-N)
  128. INTEGER ICEN, IFACE, IFACEL, IROC, IVITC, IPC ,IYC, INORM
  129. & , IROF, IVITF, IPF, IYF, NESP, ISCAC, ISCAF, NSCA
  130. & , IGEOM, NFAC
  131. & , N1PTEL, N1EL, N2PTEL, N2EL, N2, N1, N3, L1
  132. & , NLCF, NGCF, NGCEG, NLCEG, NGCED, NLCED, NGCF1, I1, NMA
  133. & , INDCEL
  134. REAL*8 VALER, VAL1, VAL2,XG,YG,ZG,XC,YC,ZC
  135. & ,DXG, DYG, DZG,ORIENT
  136. & , CNX, CNY, CNZ, CTX, CTY, CTZ, CVX, CVY, CVZ
  137. & , ROG, PG, UXG, UYG, UZG, UNG, UTG, UVG
  138. & , ROD, PD, UXD, UYD, UZD, UND, UTD, UVD
  139. CHARACTER*(40) MESERR
  140. CHARACTER*(8) TYPE
  141. LOGICAL LOGAN,LOGNEG, LOGBOR
  142. C
  143. C**** Les Includes
  144. C
  145. -INC SMCOORD
  146.  
  147. -INC PPARAM
  148. -INC CCOPTIO
  149. -INC SMCHPOI
  150. POINTEUR MPROC.MPOVAL, MPVITC.MPOVAL, MPPC.MPOVAL,
  151. & MPNORM.MPOVAL, MPYC.MPOVAL, MPSC.MPOVAL
  152. -INC SMCHAML
  153. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL, MELVNZ.MELVAL,
  154. & MELT1X.MELVAL, MELT1Y.MELVAL, MELT1Z.MELVAL,
  155. & MELT2X.MELVAL, MELT2Y.MELVAL, MELT2Z.MELVAL
  156. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL, MELVUV.MELVAL
  157. POINTEUR MELRO.MELVAL, MELP.MELVAL
  158. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  159. -INC SMLENTI
  160. -INC SMELEME
  161. C
  162. C**** Segments des fractions massiques gauche et droit
  163. C
  164. SEGMENT FRAMAS
  165. REAL*8 FRAMG(NMA), FRAMD(NMA)
  166. ENDSEGMENT
  167. POINTEUR SCALPA.FRAMAS
  168. C
  169. C**** Initialisation des parametres d'erreur déjà faite, i.e.
  170. C
  171. C LOGNEG = .FALSE.
  172. C LOGBOR = .FALSE.
  173. C MESERR = ' '
  174. C MOTERR(1:40) = MESERR(1:40)
  175. C VALER = 0.0D0
  176. C VAL1 = 0.0D0
  177. C VAL2 = 0.0D0
  178. C
  179. C
  180. C**** KRIPAD pour la correspondance global/local de centre
  181. C
  182. CALL KRIPAD(ICEN,MLENT1)
  183. C
  184. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  185. C
  186. C Si i est le numero global d'un noeud de ICEN,
  187. C MLENT1.LECT(i) contient sa position, i.e.
  188. C
  189. C I = numero global du noeud centre
  190. C MLENT1.LECT(i) = numero local du noeud centre
  191. C
  192. C MLENT1 déjà activé, i.e.
  193. C
  194. C SEGACT MLENT1
  195. C
  196. C**** Activation de CHPOINTs
  197. C
  198. C densité
  199. C vitesse
  200. C pression
  201. C cosinus directeurs des normales aux surface
  202. C
  203. CALL LICHT(IROC ,MPROC ,TYPE,IGEOM)
  204. CALL LICHT(IVITC,MPVITC,TYPE,IGEOM)
  205. CALL LICHT(IPC ,MPPC ,TYPE,IGEOM)
  206. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  207. C
  208. C**** MPOVA1 - MPOVA5 sont déjà activés i.e.:
  209. C
  210. C SEGACT MPROC
  211. C SEGACT MPVITC
  212. C SEGACT MPPC
  213. C SEGACT MPNORM
  214. C
  215. C
  216. C**** Le MELEME FACEL
  217. C
  218. IPT1 = IFACEL
  219. IPT2 = IFACE
  220. SEGACT IPT1
  221. SEGACT IPT2
  222. NFAC = IPT1.NUM(/2)
  223. C
  224. C**** Creation de MCHAMLs contenant les etats gauche et droite,
  225. C
  226. C i.e.:
  227. C
  228. C vitesse + cosinus directors du repere local
  229. C densité
  230. C pression
  231. C fractions massiques
  232. C
  233. C**** Cosinus directors du repere local et vitesse
  234. C
  235. C Les cosinus directeurs
  236. C
  237. N1 = 2
  238. N3 = 6
  239. L1 = 28
  240. SEGINI MCHEL1
  241. IVITF = MCHEL1
  242. MCHEL1.TITCHE = 'U '
  243. MCHEL1.IMACHE(1) = IFACE
  244. MCHEL1.IMACHE(2) = IFACEL
  245. MCHEL1.CONCHE(1) = '(n,t,v)in(x,y,z)'
  246. MCHEL1.CONCHE(2) = ' U in (n,t,v) '
  247. C
  248. C**** Valeurs des cosinus definies par respect au repair global, i.e.
  249. C
  250. MCHEL1.INFCHE(1,1) = 2
  251. MCHEL1.INFCHE(1,3) = NIFOUR
  252. MCHEL1.INFCHE(1,4) = 0
  253. MCHEL1.INFCHE(1,5) = 0
  254. MCHEL1.INFCHE(1,6) = 0
  255. MCHEL1.IFOCHE = IFOUR
  256. C
  257. C**** Valeurs de vitesse definies par respect au repair local, i.e.
  258. C
  259. MCHEL1.INFCHE(2,1) = 1
  260. MCHEL1.INFCHE(2,3) = NIFOUR
  261. MCHEL1.INFCHE(2,4) = 0
  262. MCHEL1.INFCHE(2,5) = 0
  263. MCHEL1.INFCHE(2,6) = 0
  264. C
  265. C**** Le cosinus directeurs
  266. C
  267. N1PTEL = 1
  268. N1EL = NFAC
  269. N2PTEL = 0
  270. N2EL = 0
  271. C
  272. C**** MCHAML a N2 composantes:
  273. C
  274. C cosinus directeurs du repere local (n,t1,t2)
  275. C
  276. C IDIM = 3 -> 9 composantes
  277. C
  278. N2 = 9
  279. SEGINI MCHAM1
  280. MCHEL1.ICHAML(1) = MCHAM1
  281. MCHAM1.NOMCHE(1) = 'NX '
  282. MCHAM1.NOMCHE(2) = 'NY '
  283. MCHAM1.NOMCHE(3) = 'NZ '
  284. MCHAM1.NOMCHE(4) = 'TX '
  285. MCHAM1.NOMCHE(5) = 'TY '
  286. MCHAM1.NOMCHE(6) = 'TZ '
  287. MCHAM1.NOMCHE(7) = 'VX '
  288. MCHAM1.NOMCHE(8) = 'VY '
  289. MCHAM1.NOMCHE(9) = 'VZ '
  290. MCHAM1.TYPCHE(1) = 'REAL*8 '
  291. MCHAM1.TYPCHE(2) = 'REAL*8 '
  292. MCHAM1.TYPCHE(3) = 'REAL*8 '
  293. MCHAM1.TYPCHE(4) = 'REAL*8 '
  294. MCHAM1.TYPCHE(5) = 'REAL*8 '
  295. MCHAM1.TYPCHE(6) = 'REAL*8 '
  296. MCHAM1.TYPCHE(7) = 'REAL*8 '
  297. MCHAM1.TYPCHE(8) = 'REAL*8 '
  298. MCHAM1.TYPCHE(9) = 'REAL*8 '
  299. SEGINI MELVNX
  300. SEGINI MELVNY
  301. SEGINI MELVNZ
  302. SEGINI MELT1X
  303. SEGINI MELT1Y
  304. SEGINI MELT1Z
  305. SEGINI MELT2X
  306. SEGINI MELT2Y
  307. SEGINI MELT2Z
  308. MCHAM1.IELVAL(1) = MELVNX
  309. MCHAM1.IELVAL(2) = MELVNY
  310. MCHAM1.IELVAL(3) = MELVNZ
  311. MCHAM1.IELVAL(4) = MELT1X
  312. MCHAM1.IELVAL(5) = MELT1Y
  313. MCHAM1.IELVAL(6) = MELT1Z
  314. MCHAM1.IELVAL(7) = MELT2X
  315. MCHAM1.IELVAL(8) = MELT2Y
  316. MCHAM1.IELVAL(9) = MELT2Z
  317. SEGDES MCHAM1
  318. C
  319. C**** Vitesse
  320. C
  321. N1EL = NFAC
  322. N1PTEL = 3
  323. N2EL = 0
  324. N2PTEL = 0
  325. C
  326. C**** MCHAML a N2 composantes:
  327. C
  328. C IDIM = 3 -> 3 composantes
  329. C
  330. N2 = 3
  331. SEGINI MCHAM1
  332. MCHEL1.ICHAML(2) = MCHAM1
  333. SEGDES MCHEL1
  334. MCHAM1.NOMCHE(1) = 'UN '
  335. MCHAM1.NOMCHE(2) = 'UT '
  336. MCHAM1.NOMCHE(3) = 'UV '
  337. MCHAM1.TYPCHE(1) = 'REAL*8 '
  338. MCHAM1.TYPCHE(2) = 'REAL*8 '
  339. MCHAM1.TYPCHE(3) = 'REAL*8 '
  340. SEGINI MELVUN
  341. SEGINI MELVUT
  342. SEGINI MELVUV
  343. MCHAM1.IELVAL(1) = MELVUN
  344. MCHAM1.IELVAL(2) = MELVUT
  345. MCHAM1.IELVAL(3) = MELVUV
  346. SEGDES MCHAM1
  347. C
  348. C**** Densite
  349. C
  350. N1 = 1
  351. N3 = 6
  352. L1 = 15
  353. SEGINI MCHEL2
  354. IROF = MCHEL2
  355. MCHEL2.IMACHE(1) = IFACEL
  356. MCHEL2.TITCHE = 'RO '
  357. MCHEL2.CONCHE(1) = ' '
  358. C
  359. C**** Valeurs independente du repére, i.e.
  360. C
  361. MCHEL2.INFCHE(1,1) = 0
  362. MCHEL2.INFCHE(1,3) = NIFOUR
  363. MCHEL2.INFCHE(1,4) = 0
  364. MCHEL2.INFCHE(1,5) = 0
  365. MCHEL2.INFCHE(1,6) = 0
  366. MCHEL2.IFOCHE = IFOUR
  367. N2 = 1
  368. SEGINI MCHAM1
  369. MCHEL2.ICHAML(1) = MCHAM1
  370. SEGDES MCHEL2
  371. MCHAM1.NOMCHE(1) = 'SCAL '
  372. MCHAM1.TYPCHE(1) = 'REAL*8 '
  373. SEGINI MELRO
  374. MCHAM1.IELVAL(1) = MELRO
  375. SEGDES MCHAM1
  376. C
  377. C**** Pression
  378. C
  379. MCHEL1 = IROF
  380. SEGINI, MCHEL2 = MCHEL1
  381. IPF = MCHEL2
  382. MCHEL2.TITCHE = 'P '
  383. C
  384. C**** MCHAM1 = MCHAML de la densite
  385. C
  386. SEGINI, MCHAM2 = MCHAM1
  387. MCHEL2.ICHAML(1) = MCHAM2
  388. SEGDES MCHEL2
  389. SEGINI MELP
  390. MCHAM2.IELVAL(1) = MELP
  391. SEGDES MCHAM2
  392. C
  393. C**** Les fractions massiques: le CHPOINT et le relative CHAMELEM
  394. C
  395. IF(IYC .NE. 0)THEN
  396. MCHPO1 = IYC
  397. SEGACT MCHPO1
  398. MSOUP1 = MCHPO1.IPCHP(1)
  399. SEGDES MCHPO1
  400. SEGACT MSOUP1
  401. NESP = MSOUP1.NOCOMP(/2)
  402. MPYC = MSOUP1.IPOVAL
  403. SEGACT MPYC
  404. C
  405. MCHEL1 = IROF
  406. SEGINI, MCHEL2 = MCHEL1
  407. IYF = MCHEL2
  408. MCHEL2.TITCHE = 'Y '
  409. N2 = NESP
  410. SEGINI MCHAMY
  411. MCHEL2.ICHAML(1) = MCHAMY
  412. SEGDES MCHEL2
  413. N1EL = NFAC
  414. N1PTEL = 3
  415. N2EL = 0
  416. N2PTEL = 0
  417. DO I1 = 1, NESP
  418. SEGINI MELVA1
  419. MCHAMY.IELVAL(I1) = MELVA1
  420. MCHAMY.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  421. MCHAMY.TYPCHE(I1) = 'REAL*8 '
  422. ENDDO
  423. C
  424. SEGDES MSOUP1
  425. NMA = NESP
  426. SEGINI FRAMAS
  427. C
  428. C**** On laisse actives les segments pointes par
  429. C MPYC, MCHAMY,FRAMAS, et le MELVALs relatifs aux
  430. C fractions massiques
  431. C
  432. C
  433. ELSE
  434. IYF = 0
  435. NESP = 0
  436. ENDIF
  437. C
  438. C**** Les scalaires passifs: le CHPOINT et le relative CHAMELEM
  439. C
  440. IF(ISCAC .NE. 0)THEN
  441. MCHPO1 = ISCAC
  442. SEGACT MCHPO1
  443. MSOUP1 = MCHPO1.IPCHP(1)
  444. SEGDES MCHPO1
  445. SEGACT MSOUP1
  446. NSCA = MSOUP1.NOCOMP(/2)
  447. MPSC = MSOUP1.IPOVAL
  448. SEGACT MPSC
  449. C
  450. MCHEL1 = IROF
  451. SEGINI, MCHEL2 = MCHEL1
  452. ISCAF = MCHEL2
  453. MCHEL2.TITCHE = 'SCALPASS '
  454. N2 = NSCA
  455. SEGINI MCHAMS
  456. MCHEL2.ICHAML(1) = MCHAMS
  457. SEGDES MCHEL2
  458. N1EL = NFAC
  459. N1PTEL = 3
  460. N2EL = 0
  461. N2PTEL = 0
  462. DO I1 = 1, NSCA
  463. SEGINI MELVA1
  464. MCHAMS.IELVAL(I1) = MELVA1
  465. MCHAMS.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  466. MCHAMS.TYPCHE(I1) = 'REAL*8 '
  467. ENDDO
  468. C
  469. SEGDES MSOUP1
  470. NMA = NSCA
  471. SEGINI SCALPA
  472. C
  473. C**** On laisse actives les segments pointes par
  474. C MPYC, MCHAMY,FRAMAS, et le MELVALs relatifs aux
  475. C fractions massiques
  476. C
  477. C
  478. ELSE
  479. ISCAF = 0
  480. NSCA = 0
  481. ENDIF
  482. C
  483. C**** Recapitulatif
  484. C
  485. C MELVNX, MELVNY, MELVNZ
  486. C MELT1X, MELT1Y, MELT1Z
  487. C MELT2X, MELT2Y, MELT2Z
  488. C
  489. C MELVUN, MELVUT, MELVUV -> vitesse
  490. C
  491. C MELRO -> densite
  492. C
  493. C MELP -> pression
  494. C
  495. C MPROC -> densite
  496. C
  497. C MPVITC -> vitesse
  498. C
  499. C MPPC -> pression
  500. C
  501. C MPNORM -> normales aux faces
  502. C
  503. C**** Boucle sur le faces
  504. C
  505. DO NLCF = 1, NFAC
  506. C
  507. C******* NLCF = numero local du centre de face
  508. C NGCF = numero global du centre de face
  509. C NGCEG = numero global du centre ELT "gauche"
  510. C NLCEG = numero local du centre ELT "gauche"
  511. C NGCED = numero global du centre ELT "droite"
  512. C NLCED = numero local du centre ELT "droite"
  513. C
  514. NGCEG = IPT1.NUM(1,NLCF)
  515. NGCF = IPT1.NUM(2,NLCF)
  516. NGCED = IPT1.NUM(3,NLCF)
  517. NLCEG = MLENT1.LECT(NGCEG)
  518. NLCED = MLENT1.LECT(NGCED)
  519. C
  520. C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF)
  521. C
  522. NGCF1 = IPT2.NUM(1,NLCF)
  523. IF( NGCF1 .NE. NGCF) THEN
  524. LOGAN = .TRUE.
  525. MESERR(1:40) = 'PRET, subroutine pre312.eso '
  526. GOTO 9999
  527. ENDIF
  528. C
  529. C******* Cosinus directeurs des NORMALES aux faces
  530. C
  531. C On impose que les normales sont direct "Gauche" -> "Centre"
  532. C
  533. INDCEL = (NGCEG-1)*(IDIM+1)
  534. XG = XCOOR(INDCEL+1)
  535. YG = XCOOR(INDCEL+2)
  536. ZG = XCOOR(INDCEL+3)
  537. INDCEL = (NGCF-1)*(IDIM+1)
  538. XC = XCOOR(INDCEL + 1)
  539. YC = XCOOR(INDCEL + 2)
  540. ZC = XCOOR(INDCEL+3)
  541. DXG = XC - XG
  542. DYG = YC - YG
  543. DZG = ZC - ZG
  544.  
  545. C
  546. C******* On calcule le sign du pruduit scalare
  547. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  548. C
  549. CNX = MPNORM.VPOCHA(NLCF,7)
  550. CNY = MPNORM.VPOCHA(NLCF,8)
  551. CNZ = MPNORM.VPOCHA(NLCF,9)
  552. ORIENT = CNX * DXG + CNY * DYG + CNZ * DZG
  553. ORIENT = SIGN(1.0D0,ORIENT)
  554. IF(ORIENT .NE. 1.0D0)THEN
  555. LOGAN = .TRUE.
  556. MESERR(1:30)=
  557. & 'PRET , subroutine pre312.eso. '
  558. GOTO 9999
  559. ENDIF
  560. CNX = CNX * ORIENT
  561. CNY = CNY * ORIENT
  562. CNZ = CNZ * ORIENT
  563. C
  564. C********** Cosinus directeurs de tangente 1
  565. C
  566. CTX = MPNORM.VPOCHA(NLCF,1) * ORIENT
  567. CTY = MPNORM.VPOCHA(NLCF,2) * ORIENT
  568. CTZ = MPNORM.VPOCHA(NLCF,3) * ORIENT
  569. C
  570. C********** Cosinus directeurs de tangente 2
  571. C
  572. CVX = MPNORM.VPOCHA(NLCF,4) * ORIENT
  573. CVY = MPNORM.VPOCHA(NLCF,5) * ORIENT
  574. CVZ = MPNORM.VPOCHA(NLCF,6) * ORIENT
  575. C
  576. C
  577. C******* Les autres MELVALs
  578. C
  579. C
  580. C******* N.B.: On suppose qu'on a déjà controlle RO, P, > 0
  581. C Y \in (1,3)
  582. C
  583. C******* NGCEG = NGCED -> Mur
  584. C
  585. IF( NGCEG .EQ. NGCED)THEN
  586. ROG = MPROC.VPOCHA(NLCEG , 1)
  587. PG = MPPC.VPOCHA(NLCEG, 1)
  588. UXG = MPVITC.VPOCHA(NLCEG , 1)
  589. UYG = MPVITC.VPOCHA(NLCEG , 2)
  590. UZG = MPVITC.VPOCHA(NLCEG , 3)
  591. UNG = UXG * CNX + UYG * CNY + UZG * CNZ
  592. UTG = UXG * CTX + UYG * CTY + UZG * CTZ
  593. UVG = UXG * CVX + UYG * CVY + UZG * CVZ
  594. C
  595. C********** Son etat droite
  596. C
  597. ROD = ROG
  598. PD = PG
  599. UND = -1.0D0 * UNG
  600. UTD = UTG
  601. UVD = UVG
  602. C
  603. C********** Les fractiones massiques
  604. C
  605. DO I1 = 1, NESP, 1
  606. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  607. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  608. ENDDO
  609. C
  610. C********** Les scalaires passifs
  611. C
  612. DO I1 = 1, NSCA, 1
  613. SCALPA.FRAMG(I1) = MPSC.VPOCHA(NLCEG,I1)
  614. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  615. ENDDO
  616. C
  617. C************* Fin cas mur
  618. C
  619. ELSE
  620. C
  621. C************* Etat gauche
  622. C
  623. ROG = MPROC.VPOCHA(NLCEG, 1)
  624. PG = MPPC.VPOCHA(NLCEG, 1)
  625. UXG = MPVITC.VPOCHA(NLCEG , 1)
  626. UYG = MPVITC.VPOCHA(NLCEG , 2)
  627. UZG = MPVITC.VPOCHA(NLCEG , 3)
  628. UNG = UXG * CNX + UYG * CNY + UZG * CNZ
  629. UTG = UXG * CTX + UYG * CTY + UZG * CTZ
  630. UVG = UXG * CVX + UYG * CVY + UZG * CVZ
  631. C
  632. C********** Etat droit
  633. C
  634. ROD = MPROC.VPOCHA(NLCED,1)
  635. PD = MPPC.VPOCHA(NLCED,1)
  636. C
  637. C************* On suppose qu'on a déjà controlle ROG, PG > 0
  638. C Si non il faut le faire!!!
  639. C
  640. UXD = MPVITC.VPOCHA(NLCED,1)
  641. UYD = MPVITC.VPOCHA(NLCED,2)
  642. UZD = MPVITC.VPOCHA(NLCED,3)
  643. UND = UXD * CNX + UYD * CNY + UZD * CNZ
  644. UTD = UXD * CTX + UYD * CTY + UZD * CTZ
  645. UVD = UXD * CVX + UYD * CVY + UZD * CVZ
  646. C
  647. C********** Les fractions massiques
  648. C
  649. DO I1 = 1, NESP, 1
  650. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  651. FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1)
  652. ENDDO
  653. C
  654. C********** Les scalaires passifs
  655. C
  656. DO I1 = 1, NSCA, 1
  657. SCALPA.FRAMG(I1) = MPSC.VPOCHA(NLCEG,I1)
  658. SCALPA.FRAMD(I1) = MPSC.VPOCHA(NLCED,I1)
  659. ENDDO
  660. ENDIF
  661. C
  662. C************* Les MELVALs
  663. C
  664. MELRO.VELCHE(1,NLCF) = ROG
  665. MELRO.VELCHE(3,NLCF) = ROD
  666. MELP.VELCHE(1,NLCF) = PG
  667. MELP.VELCHE(3,NLCF) = PD
  668. MELVUN.VELCHE(1,NLCF) = UNG
  669. MELVUN.VELCHE(3,NLCF) = UND
  670. MELVUT.VELCHE(1,NLCF) = UTG
  671. MELVUT.VELCHE(3,NLCF) = UTD
  672. MELVUV.VELCHE(1,NLCF) = UVG
  673. MELVUV.VELCHE(3,NLCF) = UVD
  674. MELVNX.VELCHE(1,NLCF) = CNX
  675. MELVNY.VELCHE(1,NLCF) = CNY
  676. MELVNZ.VELCHE(1,NLCF) = CNZ
  677. MELT1X.VELCHE(1,NLCF) = CTX
  678. MELT1Y.VELCHE(1,NLCF) = CTY
  679. MELT1Z.VELCHE(1,NLCF) = CTZ
  680. MELT2X.VELCHE(1,NLCF) = CVX
  681. MELT2Y.VELCHE(1,NLCF) = CVY
  682. MELT2Z.VELCHE(1,NLCF) = CVZ
  683. DO I1 = 1, NESP, 1
  684. MELVA1 = MCHAMY.IELVAL(I1)
  685. MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1)
  686. MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1)
  687. ENDDO
  688. DO I1 = 1, NSCA, 1
  689. MELVA1 = MCHAMS.IELVAL(I1)
  690. MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1)
  691. MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1)
  692. ENDDO
  693. ENDDO
  694. C
  695. C**** Desactivation des SEGMENTs
  696. C
  697. SEGDES IPT1
  698. SEGDES IPT2
  699. C
  700. SEGDES MPROC
  701. SEGDES MPVITC
  702. SEGDES MPPC
  703. SEGDES MPNORM
  704. C
  705. SEGDES MELRO
  706. SEGDES MELP
  707. SEGDES MELVUN
  708. SEGDES MELVUT
  709. SEGDES MELVUV
  710. SEGDES MELVNX
  711. SEGDES MELVNY
  712. SEGDES MELVNZ
  713. SEGDES MELT1X
  714. SEGDES MELT1Y
  715. SEGDES MELT1Z
  716. SEGDES MELT2X
  717. SEGDES MELT2Y
  718. SEGDES MELT2Z
  719. C
  720. IF(NESP .GT. 0)THEN
  721. SEGDES MPYC
  722. DO I1 = 1, NESP
  723. MELVA1 = MCHAMY.IELVAL(I1)
  724. SEGDES MELVA1
  725. ENDDO
  726. SEGDES MCHAMY
  727. SEGSUP FRAMAS
  728. ENDIF
  729. IF(NSCA .GT. 0)THEN
  730. SEGDES MPSC
  731. DO I1 = 1, NSCA
  732. MELVA1 = MCHAMS.IELVAL(I1)
  733. SEGDES MELVA1
  734. ENDDO
  735. SEGDES MCHAMS
  736. SEGSUP SCALPA
  737. ENDIF
  738. C
  739. C**** Destruction du MELNTI correspondance local/global
  740. C
  741. SEGSUP MLENT1
  742. C
  743. 9999 CONTINUE
  744. C
  745. RETURN
  746. END
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  

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