Télécharger pre312.eso

Retour à la liste

Numérotation des lignes :

pre312
  1. C PRE312 SOURCE CB215821 20/11/25 13:36:21 10792
  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**** Variables de COOPTIO
  126. C
  127. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  128. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  129. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  130. C & ,IECHO, IIMPI, IOSPI
  131. C & ,IDIM
  132. CC & ,MCOORD
  133. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  134. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  135. C & ,NORINC,NORVAL,NORIND,NORVAD
  136. C & ,NUCROU, IPSAUV
  137. C
  138. C**** Les variables
  139. C
  140. IMPLICIT INTEGER(I-N)
  141. INTEGER ICEN, IFACE, IFACEL, IROC, IVITC, IPC ,IYC, INORM
  142. & , IROF, IVITF, IPF, IYF, NESP, ISCAC, ISCAF, NSCA
  143. & , IGEOM, NFAC
  144. & , N1PTEL, N1EL, N2PTEL, N2EL, N2, N1, N3, L1
  145. & , NLCF, NGCF, NGCEG, NLCEG, NGCED, NLCED, NGCF1, I1, NMA
  146. & , INDCEL
  147. REAL*8 VALER, VAL1, VAL2,XG,YG,ZG,XC,YC,ZC
  148. & ,DXG, DYG, DZG,ORIENT
  149. & , CNX, CNY, CNZ, CTX, CTY, CTZ, CVX, CVY, CVZ
  150. & , ROG, PG, UXG, UYG, UZG, UNG, UTG, UVG
  151. & , ROD, PD, UXD, UYD, UZD, UND, UTD, UVD
  152. CHARACTER*(40) MESERR
  153. CHARACTER*(8) TYPE
  154. LOGICAL LOGAN,LOGNEG, LOGBOR
  155. C
  156. C**** Les Includes
  157. C
  158. -INC SMCOORD
  159.  
  160. -INC PPARAM
  161. -INC CCOPTIO
  162. -INC SMCHPOI
  163. POINTEUR MPROC.MPOVAL, MPVITC.MPOVAL, MPPC.MPOVAL,
  164. & MPNORM.MPOVAL, MPYC.MPOVAL, MPSC.MPOVAL
  165. -INC SMCHAML
  166. POINTEUR MELVNX.MELVAL, MELVNY.MELVAL, MELVNZ.MELVAL,
  167. & MELT1X.MELVAL, MELT1Y.MELVAL, MELT1Z.MELVAL,
  168. & MELT2X.MELVAL, MELT2Y.MELVAL, MELT2Z.MELVAL
  169. POINTEUR MELVUN.MELVAL, MELVUT.MELVAL, MELVUV.MELVAL
  170. POINTEUR MELRO.MELVAL, MELP.MELVAL
  171. POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
  172. -INC SMLENTI
  173. -INC SMELEME
  174. C
  175. C**** Segments des fractions massiques gauche et droit
  176. C
  177. SEGMENT FRAMAS
  178. REAL*8 FRAMG(NMA), FRAMD(NMA)
  179. ENDSEGMENT
  180. POINTEUR SCALPA.FRAMAS
  181. C
  182. C**** Initialisation des parametres d'erreur déjà faite, i.e.
  183. C
  184. C LOGNEG = .FALSE.
  185. C LOGBOR = .FALSE.
  186. C MESERR = ' '
  187. C MOTERR(1:40) = MESERR(1:40)
  188. C VALER = 0.0D0
  189. C VAL1 = 0.0D0
  190. C VAL2 = 0.0D0
  191. C
  192. C
  193. C**** KRIPAD pour la correspondance global/local de centre
  194. C
  195. CALL KRIPAD(ICEN,MLENT1)
  196. C
  197. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  198. C
  199. C Si i est le numero global d'un noeud de ICEN,
  200. C MLENT1.LECT(i) contient sa position, i.e.
  201. C
  202. C I = numero global du noeud centre
  203. C MLENT1.LECT(i) = numero local du noeud centre
  204. C
  205. C MLENT1 déjà activé, i.e.
  206. C
  207. C SEGACT MLENT1
  208. C
  209. C**** Activation de CHPOINTs
  210. C
  211. C densité
  212. C vitesse
  213. C pression
  214. C cosinus directeurs des normales aux surface
  215. C
  216. CALL LICHT(IROC ,MPROC ,TYPE,IGEOM)
  217. CALL LICHT(IVITC,MPVITC,TYPE,IGEOM)
  218. CALL LICHT(IPC ,MPPC ,TYPE,IGEOM)
  219. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  220. C
  221. C**** MPOVA1 - MPOVA5 sont déjà activés i.e.:
  222. C
  223. C SEGACT MPROC
  224. C SEGACT MPVITC
  225. C SEGACT MPPC
  226. C SEGACT MPNORM
  227. C
  228. C
  229. C**** Le MELEME FACEL
  230. C
  231. IPT1 = IFACEL
  232. IPT2 = IFACE
  233. SEGACT IPT1
  234. SEGACT IPT2
  235. NFAC = IPT1.NUM(/2)
  236. C
  237. C**** Creation de MCHAMLs contenant les etats gauche et droite,
  238. C
  239. C i.e.:
  240. C
  241. C vitesse + cosinus directors du repere local
  242. C densité
  243. C pression
  244. C fractions massiques
  245. C
  246. C**** Cosinus directors du repere local et vitesse
  247. C
  248. C Les cosinus directeurs
  249. C
  250. N1 = 2
  251. N3 = 6
  252. L1 = 28
  253. SEGINI MCHEL1
  254. IVITF = MCHEL1
  255. MCHEL1.TITCHE = 'U '
  256. MCHEL1.IMACHE(1) = IFACE
  257. MCHEL1.IMACHE(2) = IFACEL
  258. MCHEL1.CONCHE(1) = '(n,t,v)in(x,y,z)'
  259. MCHEL1.CONCHE(2) = ' U in (n,t,v) '
  260. C
  261. C**** Valeurs des cosinus definies par respect au repair global, i.e.
  262. C
  263. MCHEL1.INFCHE(1,1) = 2
  264. MCHEL1.INFCHE(1,3) = NIFOUR
  265. MCHEL1.INFCHE(1,4) = 0
  266. MCHEL1.INFCHE(1,5) = 0
  267. MCHEL1.INFCHE(1,6) = 0
  268. MCHEL1.IFOCHE = IFOUR
  269. C
  270. C**** Valeurs de vitesse definies par respect au repair local, i.e.
  271. C
  272. MCHEL1.INFCHE(2,1) = 1
  273. MCHEL1.INFCHE(2,3) = NIFOUR
  274. MCHEL1.INFCHE(2,4) = 0
  275. MCHEL1.INFCHE(2,5) = 0
  276. MCHEL1.INFCHE(2,6) = 0
  277. C
  278. C**** Le cosinus directeurs
  279. C
  280. N1PTEL = 1
  281. N1EL = NFAC
  282. N2PTEL = 0
  283. N2EL = 0
  284. C
  285. C**** MCHAML a N2 composantes:
  286. C
  287. C cosinus directeurs du repere local (n,t1,t2)
  288. C
  289. C IDIM = 3 -> 9 composantes
  290. C
  291. N2 = 9
  292. SEGINI MCHAM1
  293. MCHEL1.ICHAML(1) = MCHAM1
  294. MCHAM1.NOMCHE(1) = 'NX '
  295. MCHAM1.NOMCHE(2) = 'NY '
  296. MCHAM1.NOMCHE(3) = 'NZ '
  297. MCHAM1.NOMCHE(4) = 'TX '
  298. MCHAM1.NOMCHE(5) = 'TY '
  299. MCHAM1.NOMCHE(6) = 'TZ '
  300. MCHAM1.NOMCHE(7) = 'VX '
  301. MCHAM1.NOMCHE(8) = 'VY '
  302. MCHAM1.NOMCHE(9) = 'VZ '
  303. MCHAM1.TYPCHE(1) = 'REAL*8 '
  304. MCHAM1.TYPCHE(2) = 'REAL*8 '
  305. MCHAM1.TYPCHE(3) = 'REAL*8 '
  306. MCHAM1.TYPCHE(4) = 'REAL*8 '
  307. MCHAM1.TYPCHE(5) = 'REAL*8 '
  308. MCHAM1.TYPCHE(6) = 'REAL*8 '
  309. MCHAM1.TYPCHE(7) = 'REAL*8 '
  310. MCHAM1.TYPCHE(8) = 'REAL*8 '
  311. MCHAM1.TYPCHE(9) = 'REAL*8 '
  312. SEGINI MELVNX
  313. SEGINI MELVNY
  314. SEGINI MELVNZ
  315. SEGINI MELT1X
  316. SEGINI MELT1Y
  317. SEGINI MELT1Z
  318. SEGINI MELT2X
  319. SEGINI MELT2Y
  320. SEGINI MELT2Z
  321. MCHAM1.IELVAL(1) = MELVNX
  322. MCHAM1.IELVAL(2) = MELVNY
  323. MCHAM1.IELVAL(3) = MELVNZ
  324. MCHAM1.IELVAL(4) = MELT1X
  325. MCHAM1.IELVAL(5) = MELT1Y
  326. MCHAM1.IELVAL(6) = MELT1Z
  327. MCHAM1.IELVAL(7) = MELT2X
  328. MCHAM1.IELVAL(8) = MELT2Y
  329. MCHAM1.IELVAL(9) = MELT2Z
  330. SEGDES MCHAM1
  331. C
  332. C**** Vitesse
  333. C
  334. N1EL = NFAC
  335. N1PTEL = 3
  336. N2EL = 0
  337. N2PTEL = 0
  338. C
  339. C**** MCHAML a N2 composantes:
  340. C
  341. C IDIM = 3 -> 3 composantes
  342. C
  343. N2 = 3
  344. SEGINI MCHAM1
  345. MCHEL1.ICHAML(2) = MCHAM1
  346. SEGDES MCHEL1
  347. MCHAM1.NOMCHE(1) = 'UN '
  348. MCHAM1.NOMCHE(2) = 'UT '
  349. MCHAM1.NOMCHE(3) = 'UV '
  350. MCHAM1.TYPCHE(1) = 'REAL*8 '
  351. MCHAM1.TYPCHE(2) = 'REAL*8 '
  352. MCHAM1.TYPCHE(3) = 'REAL*8 '
  353. SEGINI MELVUN
  354. SEGINI MELVUT
  355. SEGINI MELVUV
  356. MCHAM1.IELVAL(1) = MELVUN
  357. MCHAM1.IELVAL(2) = MELVUT
  358. MCHAM1.IELVAL(3) = MELVUV
  359. SEGDES MCHAM1
  360. C
  361. C**** Densite
  362. C
  363. N1 = 1
  364. N3 = 6
  365. L1 = 15
  366. SEGINI MCHEL2
  367. IROF = MCHEL2
  368. MCHEL2.IMACHE(1) = IFACEL
  369. MCHEL2.TITCHE = 'RO '
  370. MCHEL2.CONCHE(1) = ' '
  371. C
  372. C**** Valeurs independente du repére, i.e.
  373. C
  374. MCHEL2.INFCHE(1,1) = 0
  375. MCHEL2.INFCHE(1,3) = NIFOUR
  376. MCHEL2.INFCHE(1,4) = 0
  377. MCHEL2.INFCHE(1,5) = 0
  378. MCHEL2.INFCHE(1,6) = 0
  379. MCHEL2.IFOCHE = IFOUR
  380. N2 = 1
  381. SEGINI MCHAM1
  382. MCHEL2.ICHAML(1) = MCHAM1
  383. SEGDES MCHEL2
  384. MCHAM1.NOMCHE(1) = 'SCAL '
  385. MCHAM1.TYPCHE(1) = 'REAL*8 '
  386. SEGINI MELRO
  387. MCHAM1.IELVAL(1) = MELRO
  388. SEGDES MCHAM1
  389. C
  390. C**** Pression
  391. C
  392. MCHEL1 = IROF
  393. SEGINI, MCHEL2 = MCHEL1
  394. IPF = MCHEL2
  395. MCHEL2.TITCHE = 'P '
  396. C
  397. C**** MCHAM1 = MCHAML de la densite
  398. C
  399. SEGINI, MCHAM2 = MCHAM1
  400. MCHEL2.ICHAML(1) = MCHAM2
  401. SEGDES MCHEL2
  402. SEGINI MELP
  403. MCHAM2.IELVAL(1) = MELP
  404. SEGDES MCHAM2
  405. C
  406. C**** Les fractions massiques: le CHPOINT et le relative CHAMELEM
  407. C
  408. IF(IYC .NE. 0)THEN
  409. MCHPO1 = IYC
  410. SEGACT MCHPO1
  411. MSOUP1 = MCHPO1.IPCHP(1)
  412. SEGDES MCHPO1
  413. SEGACT MSOUP1
  414. NESP = MSOUP1.NOCOMP(/2)
  415. MPYC = MSOUP1.IPOVAL
  416. SEGACT MPYC
  417. C
  418. MCHEL1 = IROF
  419. SEGINI, MCHEL2 = MCHEL1
  420. IYF = MCHEL2
  421. MCHEL2.TITCHE = 'Y '
  422. N2 = NESP
  423. SEGINI MCHAMY
  424. MCHEL2.ICHAML(1) = MCHAMY
  425. SEGDES MCHEL2
  426. N1EL = NFAC
  427. N1PTEL = 3
  428. N2EL = 0
  429. N2PTEL = 0
  430. DO I1 = 1, NESP
  431. SEGINI MELVA1
  432. MCHAMY.IELVAL(I1) = MELVA1
  433. MCHAMY.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  434. MCHAMY.TYPCHE(I1) = 'REAL*8 '
  435. ENDDO
  436. C
  437. SEGDES MSOUP1
  438. NMA = NESP
  439. SEGINI FRAMAS
  440. C
  441. C**** On laisse actives les segments pointes par
  442. C MPYC, MCHAMY,FRAMAS, et le MELVALs relatifs aux
  443. C fractions massiques
  444. C
  445. C
  446. ELSE
  447. IYF = 0
  448. NESP = 0
  449. ENDIF
  450. C
  451. C**** Les scalaires passifs: le CHPOINT et le relative CHAMELEM
  452. C
  453. IF(ISCAC .NE. 0)THEN
  454. MCHPO1 = ISCAC
  455. SEGACT MCHPO1
  456. MSOUP1 = MCHPO1.IPCHP(1)
  457. SEGDES MCHPO1
  458. SEGACT MSOUP1
  459. NSCA = MSOUP1.NOCOMP(/2)
  460. MPSC = MSOUP1.IPOVAL
  461. SEGACT MPSC
  462. C
  463. MCHEL1 = IROF
  464. SEGINI, MCHEL2 = MCHEL1
  465. ISCAF = MCHEL2
  466. MCHEL2.TITCHE = 'SCALPASS '
  467. N2 = NSCA
  468. SEGINI MCHAMS
  469. MCHEL2.ICHAML(1) = MCHAMS
  470. SEGDES MCHEL2
  471. N1EL = NFAC
  472. N1PTEL = 3
  473. N2EL = 0
  474. N2PTEL = 0
  475. DO I1 = 1, NSCA
  476. SEGINI MELVA1
  477. MCHAMS.IELVAL(I1) = MELVA1
  478. MCHAMS.NOMCHE(I1) = MSOUP1.NOCOMP(I1)
  479. MCHAMS.TYPCHE(I1) = 'REAL*8 '
  480. ENDDO
  481. C
  482. SEGDES MSOUP1
  483. NMA = NSCA
  484. SEGINI SCALPA
  485. C
  486. C**** On laisse actives les segments pointes par
  487. C MPYC, MCHAMY,FRAMAS, et le MELVALs relatifs aux
  488. C fractions massiques
  489. C
  490. C
  491. ELSE
  492. ISCAF = 0
  493. NSCA = 0
  494. ENDIF
  495. C
  496. C**** Recapitulatif
  497. C
  498. C MELVNX, MELVNY, MELVNZ
  499. C MELT1X, MELT1Y, MELT1Z
  500. C MELT2X, MELT2Y, MELT2Z
  501. C
  502. C MELVUN, MELVUT, MELVUV -> vitesse
  503. C
  504. C MELRO -> densite
  505. C
  506. C MELP -> pression
  507. C
  508. C MPROC -> densite
  509. C
  510. C MPVITC -> vitesse
  511. C
  512. C MPPC -> pression
  513. C
  514. C MPNORM -> normales aux faces
  515. C
  516. C**** Boucle sur le faces
  517. C
  518. DO NLCF = 1, NFAC
  519. C
  520. C******* NLCF = numero local du centre de face
  521. C NGCF = numero global du centre de face
  522. C NGCEG = numero global du centre ELT "gauche"
  523. C NLCEG = numero local du centre ELT "gauche"
  524. C NGCED = numero global du centre ELT "droite"
  525. C NLCED = numero local du centre ELT "droite"
  526. C
  527. NGCEG = IPT1.NUM(1,NLCF)
  528. NGCF = IPT1.NUM(2,NLCF)
  529. NGCED = IPT1.NUM(3,NLCF)
  530. NLCEG = MLENT1.LECT(NGCEG)
  531. NLCED = MLENT1.LECT(NGCED)
  532. C
  533. C******* TEST: IPT2.NUM(1,NLCF) = IPT1.NUM(2,NLCF)
  534. C
  535. NGCF1 = IPT2.NUM(1,NLCF)
  536. IF( NGCF1 .NE. NGCF) THEN
  537. LOGAN = .TRUE.
  538. MESERR(1:40) = 'PRET, subroutine pre312.eso '
  539. GOTO 9999
  540. ENDIF
  541. C
  542. C******* Cosinus directeurs des NORMALES aux faces
  543. C
  544. C On impose que les normales sont direct "Gauche" -> "Centre"
  545. C
  546. INDCEL = (NGCEG-1)*(IDIM+1)
  547. XG = XCOOR(INDCEL+1)
  548. YG = XCOOR(INDCEL+2)
  549. ZG = XCOOR(INDCEL+3)
  550. INDCEL = (NGCF-1)*(IDIM+1)
  551. XC = XCOOR(INDCEL + 1)
  552. YC = XCOOR(INDCEL + 2)
  553. ZC = XCOOR(INDCEL+3)
  554. DXG = XC - XG
  555. DYG = YC - YG
  556. DZG = ZC - ZG
  557.  
  558. C
  559. C******* On calcule le sign du pruduit scalare
  560. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  561. C
  562. CNX = MPNORM.VPOCHA(NLCF,7)
  563. CNY = MPNORM.VPOCHA(NLCF,8)
  564. CNZ = MPNORM.VPOCHA(NLCF,9)
  565. ORIENT = CNX * DXG + CNY * DYG + CNZ * DZG
  566. ORIENT = SIGN(1.0D0,ORIENT)
  567. IF(ORIENT .NE. 1.0D0)THEN
  568. LOGAN = .TRUE.
  569. MESERR(1:30)=
  570. & 'PRET , subroutine pre312.eso. '
  571. GOTO 9999
  572. ENDIF
  573. CNX = CNX * ORIENT
  574. CNY = CNY * ORIENT
  575. CNZ = CNZ * ORIENT
  576. C
  577. C********** Cosinus directeurs de tangente 1
  578. C
  579. CTX = MPNORM.VPOCHA(NLCF,1) * ORIENT
  580. CTY = MPNORM.VPOCHA(NLCF,2) * ORIENT
  581. CTZ = MPNORM.VPOCHA(NLCF,3) * ORIENT
  582. C
  583. C********** Cosinus directeurs de tangente 2
  584. C
  585. CVX = MPNORM.VPOCHA(NLCF,4) * ORIENT
  586. CVY = MPNORM.VPOCHA(NLCF,5) * ORIENT
  587. CVZ = MPNORM.VPOCHA(NLCF,6) * ORIENT
  588. C
  589. C
  590. C******* Les autres MELVALs
  591. C
  592. C
  593. C******* N.B.: On suppose qu'on a déjà controlle RO, P, > 0
  594. C Y \in (1,3)
  595. C
  596. C******* NGCEG = NGCED -> Mur
  597. C
  598. IF( NGCEG .EQ. NGCED)THEN
  599. ROG = MPROC.VPOCHA(NLCEG , 1)
  600. PG = MPPC.VPOCHA(NLCEG, 1)
  601. UXG = MPVITC.VPOCHA(NLCEG , 1)
  602. UYG = MPVITC.VPOCHA(NLCEG , 2)
  603. UZG = MPVITC.VPOCHA(NLCEG , 3)
  604. UNG = UXG * CNX + UYG * CNY + UZG * CNZ
  605. UTG = UXG * CTX + UYG * CTY + UZG * CTZ
  606. UVG = UXG * CVX + UYG * CVY + UZG * CVZ
  607. C
  608. C********** Son etat droite
  609. C
  610. ROD = ROG
  611. PD = PG
  612. UND = -1.0D0 * UNG
  613. UTD = UTG
  614. UVD = UVG
  615. C
  616. C********** Les fractiones massiques
  617. C
  618. DO I1 = 1, NESP, 1
  619. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  620. FRAMAS.FRAMD(I1) = FRAMAS.FRAMG(I1)
  621. ENDDO
  622. C
  623. C********** Les scalaires passifs
  624. C
  625. DO I1 = 1, NSCA, 1
  626. SCALPA.FRAMG(I1) = MPSC.VPOCHA(NLCEG,I1)
  627. SCALPA.FRAMD(I1) = SCALPA.FRAMG(I1)
  628. ENDDO
  629. C
  630. C************* Fin cas mur
  631. C
  632. ELSE
  633. C
  634. C************* Etat gauche
  635. C
  636. ROG = MPROC.VPOCHA(NLCEG, 1)
  637. PG = MPPC.VPOCHA(NLCEG, 1)
  638. UXG = MPVITC.VPOCHA(NLCEG , 1)
  639. UYG = MPVITC.VPOCHA(NLCEG , 2)
  640. UZG = MPVITC.VPOCHA(NLCEG , 3)
  641. UNG = UXG * CNX + UYG * CNY + UZG * CNZ
  642. UTG = UXG * CTX + UYG * CTY + UZG * CTZ
  643. UVG = UXG * CVX + UYG * CVY + UZG * CVZ
  644. C
  645. C********** Etat droit
  646. C
  647. ROD = MPROC.VPOCHA(NLCED,1)
  648. PD = MPPC.VPOCHA(NLCED,1)
  649. C
  650. C************* On suppose qu'on a déjà controlle ROG, PG > 0
  651. C Si non il faut le faire!!!
  652. C
  653. UXD = MPVITC.VPOCHA(NLCED,1)
  654. UYD = MPVITC.VPOCHA(NLCED,2)
  655. UZD = MPVITC.VPOCHA(NLCED,3)
  656. UND = UXD * CNX + UYD * CNY + UZD * CNZ
  657. UTD = UXD * CTX + UYD * CTY + UZD * CTZ
  658. UVD = UXD * CVX + UYD * CVY + UZD * CVZ
  659. C
  660. C********** Les fractions massiques
  661. C
  662. DO I1 = 1, NESP, 1
  663. FRAMAS.FRAMG(I1) = MPYC.VPOCHA(NLCEG,I1)
  664. FRAMAS.FRAMD(I1) = MPYC.VPOCHA(NLCED,I1)
  665. ENDDO
  666. C
  667. C********** Les scalaires passifs
  668. C
  669. DO I1 = 1, NSCA, 1
  670. SCALPA.FRAMG(I1) = MPSC.VPOCHA(NLCEG,I1)
  671. SCALPA.FRAMD(I1) = MPSC.VPOCHA(NLCED,I1)
  672. ENDDO
  673. ENDIF
  674. C
  675. C************* Les MELVALs
  676. C
  677. MELRO.VELCHE(1,NLCF) = ROG
  678. MELRO.VELCHE(3,NLCF) = ROD
  679. MELP.VELCHE(1,NLCF) = PG
  680. MELP.VELCHE(3,NLCF) = PD
  681. MELVUN.VELCHE(1,NLCF) = UNG
  682. MELVUN.VELCHE(3,NLCF) = UND
  683. MELVUT.VELCHE(1,NLCF) = UTG
  684. MELVUT.VELCHE(3,NLCF) = UTD
  685. MELVUV.VELCHE(1,NLCF) = UVG
  686. MELVUV.VELCHE(3,NLCF) = UVD
  687. MELVNX.VELCHE(1,NLCF) = CNX
  688. MELVNY.VELCHE(1,NLCF) = CNY
  689. MELVNZ.VELCHE(1,NLCF) = CNZ
  690. MELT1X.VELCHE(1,NLCF) = CTX
  691. MELT1Y.VELCHE(1,NLCF) = CTY
  692. MELT1Z.VELCHE(1,NLCF) = CTZ
  693. MELT2X.VELCHE(1,NLCF) = CVX
  694. MELT2Y.VELCHE(1,NLCF) = CVY
  695. MELT2Z.VELCHE(1,NLCF) = CVZ
  696. DO I1 = 1, NESP, 1
  697. MELVA1 = MCHAMY.IELVAL(I1)
  698. MELVA1.VELCHE(1,NLCF) = FRAMAS.FRAMG(I1)
  699. MELVA1.VELCHE(3,NLCF) = FRAMAS.FRAMD(I1)
  700. ENDDO
  701. DO I1 = 1, NSCA, 1
  702. MELVA1 = MCHAMS.IELVAL(I1)
  703. MELVA1.VELCHE(1,NLCF) = SCALPA.FRAMG(I1)
  704. MELVA1.VELCHE(3,NLCF) = SCALPA.FRAMD(I1)
  705. ENDDO
  706. ENDDO
  707. C
  708. C**** Desactivation des SEGMENTs
  709. C
  710. SEGDES IPT1
  711. SEGDES IPT2
  712. C
  713. SEGDES MPROC
  714. SEGDES MPVITC
  715. SEGDES MPPC
  716. SEGDES MPNORM
  717. C
  718. SEGDES MELRO
  719. SEGDES MELP
  720. SEGDES MELVUN
  721. SEGDES MELVUT
  722. SEGDES MELVUV
  723. SEGDES MELVNX
  724. SEGDES MELVNY
  725. SEGDES MELVNZ
  726. SEGDES MELT1X
  727. SEGDES MELT1Y
  728. SEGDES MELT1Z
  729. SEGDES MELT2X
  730. SEGDES MELT2Y
  731. SEGDES MELT2Z
  732. C
  733. IF(NESP .GT. 0)THEN
  734. SEGDES MPYC
  735. DO I1 = 1, NESP
  736. MELVA1 = MCHAMY.IELVAL(I1)
  737. SEGDES MELVA1
  738. ENDDO
  739. SEGDES MCHAMY
  740. SEGSUP FRAMAS
  741. ENDIF
  742. IF(NSCA .GT. 0)THEN
  743. SEGDES MPSC
  744. DO I1 = 1, NSCA
  745. MELVA1 = MCHAMS.IELVAL(I1)
  746. SEGDES MELVA1
  747. ENDDO
  748. SEGDES MCHAMS
  749. SEGSUP SCALPA
  750. ENDIF
  751. C
  752. C**** Destruction du MELNTI correspondance local/global
  753. C
  754. SEGSUP MLENT1
  755. C
  756. 9999 CONTINUE
  757. C
  758. RETURN
  759. END
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  

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