Télécharger konja1.eso

Retour à la liste

Numérotation des lignes :

konja1
  1. C KONJA1 SOURCE OF166741 24/12/13 21:16:27 12097
  2. SUBROUTINE KONJA1(ILINC,IRN,IUN,IPN,IGAMN,INORM,ICHPVO
  3. $ ,ICHPSU,MELEMC,MELEFE,MELLIM,IMAT)
  4. C
  5. C************************************************************************
  6. C
  7. C PROJET : CASTEM 2000
  8. C
  9. C NOM : KONJA1
  10. C
  11. C DESCRIPTION : Voir KONV11
  12. C Calcul du jacobien du résidu pour la méthode de
  13. C VLH
  14. C
  15. C Cas deux dimensions, gaz "calorically perfect"
  16. C
  17. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  18. C
  19. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  20. C
  21. C************************************************************************
  22. C
  23. C
  24. C APPELES (Outils
  25. C CASTEM) : KRIPAD, LICHT, ERREUR
  26. C
  27. C APPELES (Calcul) : VLHJ0, VLHJ2
  28. C
  29. C************************************************************************
  30. C
  31. C ENTREES
  32. C
  33. C ILINC : liste des inconnues (pointeur d'un objet de type LISTMOTS)
  34. C
  35. C 1) Pointeurs des CHPOINT
  36. C
  37. C IRN : CHPOINT CENTRE contenant la masse volumique ;
  38. C
  39. C IUN : CHPOINT CENTRE contenant la vitesse ;
  40. C
  41. C IPN : CHPOINT CENTRE contenant la pression ;
  42. C
  43. C IGAMN : CHPOINT CENTRE contenant le gamma ;
  44. C
  45. C INORM : CHPOINT FACE contenant les normales aux faces ;
  46. C
  47. C ICHPVO : CHPOINT VOLUME contenant le volume
  48. C
  49. C ICHPSU : CHPOINT FACE contenant la surface des faces
  50. C
  51. C
  52. C 2) Pointeurs de MELEME de la table DOMAINE
  53. C
  54. C MELEMC : MELEME 'CENTRE' du SPG des CENTRES
  55. C
  56. C MELEFE : MELEME 'FACEL' du connectivité Faces -> Elts
  57. C
  58. C MELLIM : MELEME SPG des conditions aux bords
  59. C
  60. C SORTIES
  61. C
  62. C IMAT : pointeur de la MATRIK du jacobien du residu
  63. C
  64. C************************************************************************
  65. C
  66. C HISTORIQUE (Anomalies et modifications éventuelles)
  67. C
  68. C HISTORIQUE :
  69. C
  70. C************************************************************************
  71. C
  72. C
  73. C N.B.: On suppose qu'on a déjà controllé RO, P > 0
  74. C GAMMA \in (1,3)
  75. C Si non il faut le faire!!!
  76. C
  77. C************************************************************************
  78. C
  79. IMPLICIT INTEGER(I-N)
  80. INTEGER ILINC, IRN,IUN,IPN,IGAMN,INORM,ICHPVO,ICHPSU
  81. & , IMAT, IGEOMC, IGEOMF
  82. & , NFAC, NBSOUS, NBREF, NBELEM, NBNN, NRIGE, NMATRI, NKID
  83. & , NKMT, NBME, NBEL, MP, NP
  84. & , IFAC, NGCF, NLCF, NGCG, NGCD, NLCG, NLCD, NLFL
  85. REAL*8 ROG, PG, UXG, UYG, RETG, GAMG, VOLG
  86. & , ROD, PD, UXD, UYD, RETD, GAMD, VOLD
  87. & , SURF, CNX, CNY, CTX, CTY, FUNCEL
  88. & , DFRO(4), DFRET(4), DFRUN(4), DFRUT(4)
  89. CHARACTER*8 TYPE
  90. C
  91. C**** LES INCLUDES
  92. C
  93.  
  94. -INC PPARAM
  95. -INC CCOPTIO
  96. -INC SMCHPOI
  97. -INC SMELEME
  98. -INC SMLMOTS
  99. -INC SMLENTI
  100. POINTEUR MPRN.MPOVAL, MPUN.MPOVAL, MPPN.MPOVAL, MPGAMN.MPOVAL,
  101. & MPNORM.MPOVAL, MPVOLU.MPOVAL, MPOVSU.MPOVAL
  102. POINTEUR MELEMC.MELEME, MELEMF.MELEME, MELEFE.MELEME,
  103. & MELEDU.MELEME,MELLIM.MELEME
  104. POINTEUR MLENTC.MLENTI, MLENTF.MLENTI, MLELIM.MLENTI
  105. POINTEUR RR.IZAFM, RUX.IZAFM, RUY.IZAFM, RRET.IZAFM,
  106. & UXR.IZAFM, UXUX.IZAFM, UXUY.IZAFM, UXRET.IZAFM,
  107. & UYR.IZAFM, UYUX.IZAFM, UYUY.IZAFM, UYRET.IZAFM,
  108. & RETR.IZAFM, RETUX.IZAFM, RETUY.IZAFM, RETRET.IZAFM
  109. POINTEUR MLMINC.MLMOTS
  110. C
  111. C**** KRIPAD pour la correspondance global/local des conditions limits
  112. C
  113. CALL KRIPAD(MELLIM,MLELIM)
  114. C SEGACT MELLIM
  115. C
  116. C**** KRIPAD pour la correspondance global/local des centres
  117. C
  118. CALL KRIPAD(MELEMC,MLENTC)
  119. C
  120. C SEGACT MLENTC
  121. SEGACT MELEMC
  122. C
  123. SEGACT MELEFE
  124. C
  125. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  126. CALL LICHT(INORM,MPNORM,TYPE,IGEOMF)
  127. CALL LICHT(ICHPVO,MPVOLU,TYPE,IGEOMC)
  128. C
  129. C**** LICHT active les MPOVALs en *MOD
  130. C
  131. C i.e.
  132. C
  133. C SEGACT MPOVSU*MOD
  134. C SEGACT MPOVNO*MOD
  135. C SEGACT MPVOLU*MOD
  136. C
  137. MELEMF = IGEOMF
  138. CALL KRIPAD(MELEMF,MLENTF)
  139. C
  140. C SEGACT MLENTF
  141. SEGACT MELEMF
  142. C
  143. CALL LICHT(IRN,MPRN,TYPE,IGEOMC)
  144. CALL LICHT(IPN,MPPN,TYPE,IGEOMC)
  145. CALL LICHT(IUN,MPUN,TYPE,IGEOMC)
  146. CALL LICHT(IGAMN,MPGAMN,TYPE,IGEOMC)
  147. C
  148. C SEGACT MPRN*MOD
  149. C SEGACT MPPN*MOD
  150. C SEGACT MPUN*MOD
  151. C SEGACT MPGAMN*MOD
  152. C
  153. NFAC = MELEFE.NUM(/2)
  154. C
  155. C**** Maillage des inconnues primales
  156. C
  157. NBSOUS = 0
  158. NBREF = 0
  159. NBELEM = NFAC
  160. NBNN = 2
  161. C
  162. SEGINI MELEDU
  163. C MELEPR = MELEDU
  164. C
  165. C**** MELEDU = 'SEG2'
  166. C
  167. MELEDU.ITYPEL = 2
  168. C
  169. NRIGE = 7
  170. NMATRI = 1
  171. NKID = 9
  172. NKMT = 7
  173. C
  174. SEGINI MATRIK
  175. IMAT = MATRIK
  176. MATRIK.IRIGEL(1,1) = MELEDU
  177. MATRIK.IRIGEL(2,1) = MELEDU
  178. C
  179. C**** Matrice non symetrique
  180. C
  181. MATRIK.IRIGEL(7,1) = 2
  182. C
  183. NBME = 16
  184. NBSOUS = 1
  185. SEGINI IMATRI
  186. MLMINC = ILINC
  187. SEGACT MLMINC
  188. MATRIK.IRIGEL(4,1) = IMATRI
  189. C
  190. IMATRI.LISPRI(1) = MLMINC.MOTS(1)
  191. IMATRI.LISPRI(2) = MLMINC.MOTS(2)
  192. IMATRI.LISPRI(3) = MLMINC.MOTS(3)
  193. IMATRI.LISPRI(4) = MLMINC.MOTS(4)
  194. IMATRI.LISPRI(5) = MLMINC.MOTS(1)
  195. IMATRI.LISPRI(6) = MLMINC.MOTS(2)
  196. IMATRI.LISPRI(7) = MLMINC.MOTS(3)
  197. IMATRI.LISPRI(8) = MLMINC.MOTS(4)
  198. IMATRI.LISPRI(9) = MLMINC.MOTS(1)
  199. IMATRI.LISPRI(10) = MLMINC.MOTS(2)
  200. IMATRI.LISPRI(11) = MLMINC.MOTS(3)
  201. IMATRI.LISPRI(12) = MLMINC.MOTS(4)
  202. IMATRI.LISPRI(13) = MLMINC.MOTS(1)
  203. IMATRI.LISPRI(14) = MLMINC.MOTS(2)
  204. IMATRI.LISPRI(15) = MLMINC.MOTS(3)
  205. IMATRI.LISPRI(16) = MLMINC.MOTS(4)
  206. C
  207. IMATRI.LISDUA(1) = MLMINC.MOTS(1)
  208. IMATRI.LISDUA(2) = MLMINC.MOTS(1)
  209. IMATRI.LISDUA(3) = MLMINC.MOTS(1)
  210. IMATRI.LISDUA(4) = MLMINC.MOTS(1)
  211. IMATRI.LISDUA(5) = MLMINC.MOTS(2)
  212. IMATRI.LISDUA(6) = MLMINC.MOTS(2)
  213. IMATRI.LISDUA(7) = MLMINC.MOTS(2)
  214. IMATRI.LISDUA(8) = MLMINC.MOTS(2)
  215. IMATRI.LISDUA(9) = MLMINC.MOTS(3)
  216. IMATRI.LISDUA(10) = MLMINC.MOTS(3)
  217. IMATRI.LISDUA(11) = MLMINC.MOTS(3)
  218. IMATRI.LISDUA(12) = MLMINC.MOTS(3)
  219. IMATRI.LISDUA(13) = MLMINC.MOTS(4)
  220. IMATRI.LISDUA(14) = MLMINC.MOTS(4)
  221. IMATRI.LISDUA(15) = MLMINC.MOTS(4)
  222. IMATRI.LISDUA(16) = MLMINC.MOTS(4)
  223. C
  224. NBEL = NBELEM
  225. NBSOUS = 1
  226. NP = 2
  227. MP = 2
  228. SEGINI RR , RUX , RUY , RRET ,
  229. & UXR , UXUX , UXUY , UXRET ,
  230. & UYR , UYUX , UYUY , UYRET ,
  231. & RETR , RETUX , RETUY , RETRET
  232. C
  233. C**** Duale = IMATRI.LISDUA(1) = 'RN'
  234. C Primale = IMATRI.LISPRI(1) = 'RN'
  235. C -> IMATRI.LIZAFM(1,1) = RR
  236. C
  237. C Duale = IMATRI.LISDUA(2) = 'RN'
  238. C Primale = IMATRI.LISPRI(1) = 'RUXN'
  239. C -> IMATRI.LIZAFM(1,2) = RUX
  240. C ...
  241. C
  242. IMATRI.LIZAFM(1,1) = RR
  243. IMATRI.LIZAFM(1,2) = RUX
  244. IMATRI.LIZAFM(1,3) = RUY
  245. IMATRI.LIZAFM(1,4) = RRET
  246. IMATRI.LIZAFM(1,5) = UXR
  247. IMATRI.LIZAFM(1,6) = UXUX
  248. IMATRI.LIZAFM(1,7) = UXUY
  249. IMATRI.LIZAFM(1,8) = UXRET
  250. IMATRI.LIZAFM(1,9) = UYR
  251. IMATRI.LIZAFM(1,10) = UYUX
  252. IMATRI.LIZAFM(1,11) = UYUY
  253. IMATRI.LIZAFM(1,12) = UYRET
  254. IMATRI.LIZAFM(1,13) = RETR
  255. IMATRI.LIZAFM(1,14) = RETUX
  256. IMATRI.LIZAFM(1,15) = RETUY
  257. IMATRI.LIZAFM(1,16) = RETRET
  258. C
  259. DO IFAC = 1, NFAC, 1
  260. NGCF = MELEFE.NUM(2,IFAC)
  261. NLCF = MLENTF.LECT(NGCF)
  262. IF(NLCF .NE. IFAC)THEN
  263. WRITE(IOIMP,*) 'Il ne faut pas jouer avec la table domaine'
  264. CALL ERREUR(5)
  265. GOTO 9999
  266. ENDIF
  267. NLFL = MLELIM.LECT(NGCF)
  268. NGCG = MELEFE.NUM(1,IFAC)
  269. NGCD = MELEFE.NUM(3,IFAC)
  270. IF(NLFL .NE. 0)THEN
  271. C
  272. C********** The point belongs on BC -> No contribution to jacobian!
  273. C
  274. MELEDU.NUM(1,IFAC) = NGCG
  275. MELEDU.NUM(2,IFAC) = NGCD
  276. ELSEIF(NGCG .NE. NGCD)THEN
  277. C
  278. C********** Les MELEMEs
  279. C
  280. MELEDU.NUM(1,IFAC) = NGCG
  281. MELEDU.NUM(2,IFAC) = NGCD
  282. C
  283. C********** Les etats G et D
  284. C
  285. NLCG = MLENTC.LECT(NGCG)
  286. NLCD = MLENTC.LECT(NGCD)
  287. C
  288. ROG = MPRN.VPOCHA(NLCG,1)
  289. PG = MPPN.VPOCHA(NLCG,1)
  290. UXG = MPUN.VPOCHA(NLCG,1)
  291. UYG = MPUN.VPOCHA(NLCG,2)
  292. GAMG = MPGAMN.VPOCHA(NLCG,1)
  293. RETG= (PG / (GAMG - 1.0D0)) + 0.5D0 * ROG * (UXG * UXG +
  294. & UYG * UYG)
  295. VOLG = MPVOLU.VPOCHA(NLCG,1)
  296. C
  297. ROD = MPRN.VPOCHA(NLCD,1)
  298. PD = MPPN.VPOCHA(NLCD,1)
  299. UXD = MPUN.VPOCHA(NLCD,1)
  300. UYD = MPUN.VPOCHA(NLCD,2)
  301. GAMD = MPGAMN.VPOCHA(NLCD,1)
  302. RETD= (PD / (GAMD - 1.0D0)) + 0.5D0 * ROD * (UXD * UXD +
  303. & UYD * UYD)
  304. VOLD = MPVOLU.VPOCHA(NLCD,1)
  305. C
  306. C********** La normale G->D
  307. C La tangente
  308. C
  309. SURF = MPOVSU.VPOCHA(NLCF,1)
  310. CNX = MPNORM.VPOCHA(NLCF,1)
  311. CNY = MPNORM.VPOCHA(NLCF,2)
  312. CTX = -1.0D0 * CNY
  313. CTY = CNX
  314. C
  315. C********** La contribution de Gauche
  316. C
  317. CALL VLHJ0(ROG,UXG,UYG,PG,RETG,GAMG,CNX,CNY,CTX,CTY,
  318. & DFRO,DFRUN,DFRUT,DFRET)
  319. C
  320. C
  321. C********** AB.AM(IFAC,IPRIM,IDUAL)
  322. C A = nom de l'inconnu duale (Ro,rUX,rUY,RET)
  323. C B = nom de l'inconnu primale (Ro,rUX,rUY,RET)
  324. C IPRIM = 1, 2 -> G, D
  325. C IDUAL = 1, 2 -> G, D
  326. C i.e.
  327. C A_IDUAL = AB.AM(IFAC,IPRIM,IDUAL) * B_IPRIM + ...
  328. C
  329. C
  330. C********** Dual RN
  331. C
  332. FUNCEL = SURF * DFRO(1)
  333. RR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  334. RR.AM(IFAC,1,2) = FUNCEL / VOLD
  335. C
  336. FUNCEL = SURF * DFRO(2)
  337. RUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  338. RUX.AM(IFAC,1,2) = FUNCEL / VOLD
  339. C
  340. FUNCEL = SURF * DFRO(3)
  341. RUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  342. RUY.AM(IFAC,1,2) = FUNCEL / VOLD
  343. C
  344. FUNCEL = SURF * DFRO(4)
  345. RRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  346. RRET.AM(IFAC,1,2) = FUNCEL / VOLD
  347. C
  348. C********** Dual RUXN
  349. C
  350. FUNCEL = SURF * (DFRUN(1) * CNX + DFRUT(1) * CTX)
  351. UXR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  352. UXR.AM(IFAC,1,2) = FUNCEL / VOLD
  353. C
  354. FUNCEL = SURF * (DFRUN(2) * CNX + DFRUT(2) * CTX)
  355. UXUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  356. UXUX.AM(IFAC,1,2) = FUNCEL / VOLD
  357. C
  358. FUNCEL = SURF * (DFRUN(3) * CNX + DFRUT(3) * CTX)
  359. UXUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  360. UXUY.AM(IFAC,1,2) = FUNCEL / VOLD
  361. C
  362. FUNCEL = SURF * (DFRUN(4) * CNX + DFRUT(4) * CTX)
  363. UXRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  364. UXRET.AM(IFAC,1,2) = FUNCEL / VOLD
  365. C
  366. C********** Dual RUYN
  367. C
  368. FUNCEL = SURF * (DFRUN(1) * CNY + DFRUT(1) * CTY)
  369. UYR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  370. UYR.AM(IFAC,1,2) = FUNCEL / VOLD
  371. C
  372. FUNCEL = SURF * (DFRUN(2) * CNY + DFRUT(2) * CTY)
  373. UYUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  374. UYUX.AM(IFAC,1,2) = FUNCEL / VOLD
  375. C
  376. FUNCEL = SURF * (DFRUN(3) * CNY + DFRUT(3) * CTY)
  377. UYUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  378. UYUY.AM(IFAC,1,2) = FUNCEL / VOLD
  379. C
  380. FUNCEL = SURF * (DFRUN(4) * CNY + DFRUT(4) * CTY)
  381. UYRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  382. UYRET.AM(IFAC,1,2) = FUNCEL / VOLD
  383. C
  384. C********** Dual RETN
  385. C
  386. FUNCEL = SURF * DFRET(1)
  387. RETR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  388. RETR.AM(IFAC,1,2) = FUNCEL / VOLD
  389. C
  390. FUNCEL = SURF * DFRET(2)
  391. RETUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  392. RETUX.AM(IFAC,1,2) = FUNCEL / VOLD
  393. C
  394. FUNCEL = SURF * DFRET(3)
  395. RETUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  396. RETUY.AM(IFAC,1,2) = FUNCEL / VOLD
  397. C
  398. FUNCEL = SURF * DFRET(4)
  399. RETRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  400. RETRET.AM(IFAC,1,2) = FUNCEL / VOLD
  401. C
  402. C
  403. C********** La contribution de D
  404. C
  405. CNX = -1.0D0 * CNX
  406. CNY = -1.0D0 * CNY
  407. CTX = -1.0D0 * CTX
  408. CTY = -1.0D0 * CTY
  409.  
  410. CALL VLHJ0(ROD,UXD,UYD,PD,RETD,GAMD,CNX,CNY,CTX,CTY,
  411. & DFRO,DFRUN,DFRUT,DFRET)
  412. C
  413. C
  414. C********** Dual RN
  415. C
  416. FUNCEL = SURF * DFRO(1)
  417. RR.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  418. RR.AM(IFAC,2,1) = FUNCEL / VOLG
  419. C
  420. FUNCEL = SURF * DFRO(2)
  421. RUX.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  422. RUX.AM(IFAC,2,1) = FUNCEL / VOLG
  423. C
  424. FUNCEL = SURF * DFRO(3)
  425. RUY.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  426. RUY.AM(IFAC,2,1) = FUNCEL / VOLG
  427. C
  428. FUNCEL = SURF * DFRO(4)
  429. RRET.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  430. RRET.AM(IFAC,2,1) = FUNCEL / VOLG
  431. C
  432. C********** Dual RUXN
  433. C
  434. FUNCEL = SURF * (DFRUN(1) * CNX + DFRUT(1) * CTX)
  435. UXR.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  436. UXR.AM(IFAC,2,1) = FUNCEL / VOLG
  437. C
  438. FUNCEL = SURF * (DFRUN(2) * CNX + DFRUT(2) * CTX)
  439. UXUX.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  440. UXUX.AM(IFAC,2,1) = FUNCEL / VOLG
  441. C
  442. FUNCEL = SURF * (DFRUN(3) * CNX + DFRUT(3) * CTX)
  443. UXUY.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  444. UXUY.AM(IFAC,2,1) = FUNCEL / VOLG
  445. C
  446. FUNCEL = SURF * (DFRUN(4) * CNX + DFRUT(4) * CTX)
  447. UXRET.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  448. UXRET.AM(IFAC,2,1) = FUNCEL / VOLG
  449. C
  450. C********** Dual RUYN
  451. C
  452. FUNCEL = SURF * (DFRUN(1) * CNY + DFRUT(1) * CTY)
  453. UYR.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  454. UYR.AM(IFAC,2,1) = FUNCEL / VOLG
  455. C
  456. FUNCEL = SURF * (DFRUN(2) * CNY + DFRUT(2) * CTY)
  457. UYUX.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  458. UYUX.AM(IFAC,2,1) = FUNCEL / VOLG
  459. C
  460. FUNCEL = SURF * (DFRUN(3) * CNY + DFRUT(3) * CTY)
  461. UYUY.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  462. UYUY.AM(IFAC,2,1) = FUNCEL / VOLG
  463. C
  464. FUNCEL = SURF * (DFRUN(4) * CNY + DFRUT(4) * CTY)
  465. UYRET.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  466. UYRET.AM(IFAC,2,1) = FUNCEL / VOLG
  467. C
  468. C********** Dual RETN
  469. C
  470. FUNCEL = SURF * DFRET(1)
  471. RETR.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  472. RETR.AM(IFAC,2,1) = FUNCEL / VOLG
  473. C
  474. FUNCEL = SURF * DFRET(2)
  475. RETUX.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  476. RETUX.AM(IFAC,2,1) = FUNCEL / VOLG
  477. C
  478. FUNCEL = SURF * DFRET(3)
  479. RETUY.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  480. RETUY.AM(IFAC,2,1) = FUNCEL / VOLG
  481. C
  482. FUNCEL = SURF * DFRET(4)
  483. RETRET.AM(IFAC,2,2) = -1.0D0 * FUNCEL / VOLD
  484. RETRET.AM(IFAC,2,1) = FUNCEL / VOLG
  485. C
  486. ELSE
  487. C
  488. C********** Murs (NGCG = NGCD)
  489. C
  490. C
  491. C********** Les MELEMEs
  492. C
  493. MELEDU.NUM(1,IFAC) = NGCG
  494. MELEDU.NUM(2,IFAC) = NGCD
  495. NLCG = MLENTC.LECT(NGCG)
  496. C
  497. ROG = MPRN.VPOCHA(NLCG,1)
  498. PG = MPPN.VPOCHA(NLCG,1)
  499. UXG = MPUN.VPOCHA(NLCG,1)
  500. UYG = MPUN.VPOCHA(NLCG,2)
  501. GAMG = MPGAMN.VPOCHA(NLCG,1)
  502. VOLG = MPVOLU.VPOCHA(NLCG,1)
  503. C
  504. C********** La normale sortante
  505. C
  506. SURF = MPOVSU.VPOCHA(NLCF,1)
  507. CNX = MPNORM.VPOCHA(NLCF,1)
  508. CNY = MPNORM.VPOCHA(NLCF,2)
  509. C
  510. CALL VLHJ2(ROG,UXG,UYG,PG,GAMG,CNX,CNY,
  511. & DFRUN)
  512. C
  513. C********** Dual RN
  514. C
  515. RR.AM(IFAC,1,1) = 0.0D0
  516. RR.AM(IFAC,1,2) = 0.0D0
  517. C
  518. RUX.AM(IFAC,1,1) = 0.0D0
  519. RUX.AM(IFAC,1,2) = 0.0D0
  520. C
  521. RUY.AM(IFAC,1,1) = 0.0D0
  522. RUY.AM(IFAC,1,2) = 0.0D0
  523. C
  524. RRET.AM(IFAC,1,1) = 0.0D0
  525. RRET.AM(IFAC,1,2) = 0.0D0
  526. C
  527. C********** Dual RUXN
  528. C
  529. FUNCEL = SURF * DFRUN(1) * CNX
  530. UXR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  531. UXR.AM(IFAC,1,2) = 0.0D0
  532. C
  533. FUNCEL = SURF * DFRUN(2) * CNX
  534. UXUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  535. UXUX.AM(IFAC,1,2) = 0.0D0
  536. C
  537. FUNCEL = SURF * DFRUN(3) * CNX
  538. UXUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  539. UXUY.AM(IFAC,1,2) = 0.0D0
  540. C
  541. FUNCEL = SURF * DFRUN(4) * CNX
  542. UXRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  543. UXRET.AM(IFAC,1,2) = 0.0D0
  544. C
  545. C********** Dual RUYN
  546. C
  547. FUNCEL = SURF * DFRUN(1) * CNY
  548. UYR.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  549. UYR.AM(IFAC,1,2) = 0.0D0
  550. C
  551. FUNCEL = SURF * DFRUN(2) * CNY
  552. UYUX.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  553. UYUX.AM(IFAC,1,2) = 0.0D0
  554. C
  555. FUNCEL = SURF * DFRUN(3) * CNY
  556. UYUY.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  557. UYUY.AM(IFAC,1,2) = 0.0D0
  558. C
  559. FUNCEL = SURF * DFRUN(4) * CNY
  560. UYRET.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  561. UYRET.AM(IFAC,1,2) = 0.0D0
  562. C
  563. C********** Dual RETN
  564. C
  565. RETR.AM(IFAC,1,1) = 0.0D0
  566. RETR.AM(IFAC,1,2) = 0.0D0
  567. C
  568. RETUX.AM(IFAC,1,1) = 0.0D0
  569. RETUX.AM(IFAC,1,2) = 0.0D0
  570. C
  571. RETUY.AM(IFAC,1,1) = 0.0D0
  572. RETUY.AM(IFAC,1,2) = 0.0D0
  573. C
  574. RETRET.AM(IFAC,1,1) = 0.0D0
  575. RETRET.AM(IFAC,1,2) = 0.0D0
  576. C
  577. C********** Dual RN
  578. C
  579. RR.AM(IFAC,2,2) = 0.0D0
  580. RR.AM(IFAC,2,1) = 0.0D0
  581. C
  582. RUX.AM(IFAC,2,2) = 0.0D0
  583. RUX.AM(IFAC,2,1) = 0.0D0
  584. C
  585. RUY.AM(IFAC,2,2) = 0.0D0
  586. RUY.AM(IFAC,2,1) = 0.0D0
  587. C
  588. RRET.AM(IFAC,2,2) = 0.0D0
  589. RRET.AM(IFAC,2,1) = 0.0D0
  590. C
  591. C********** Dual RUXN
  592. C
  593. UXR.AM(IFAC,2,2) = 0.0D0
  594. UXR.AM(IFAC,2,1) = 0.0D0
  595. C
  596. UXUX.AM(IFAC,2,2) = 0.0D0
  597. UXUX.AM(IFAC,2,1) = 0.0D0
  598. C
  599. UXUY.AM(IFAC,2,2) = 0.0D0
  600. UXUY.AM(IFAC,2,1) = 0.0D0
  601. C
  602. UXRET.AM(IFAC,2,2) = 0.0D0
  603. UXRET.AM(IFAC,2,1) = 0.0D0
  604. C
  605. C********** Dual RUYN
  606. C
  607. UYR.AM(IFAC,2,2) = 0.0D0
  608. UYR.AM(IFAC,2,1) = 0.0D0
  609. C
  610. UYUX.AM(IFAC,2,2) = 0.0D0
  611. UYUX.AM(IFAC,2,1) = 0.0D0
  612. C
  613. UYUY.AM(IFAC,2,2) = 0.0D0
  614. UYUY.AM(IFAC,2,1) = 0.0D0
  615. C
  616. UYRET.AM(IFAC,2,2) = 0.0D0
  617. UYRET.AM(IFAC,2,1) = 0.0D0
  618. C
  619. C********** Dual RETN
  620. C
  621. RETR.AM(IFAC,2,2) = 0.0D0
  622. RETR.AM(IFAC,2,1) = 0.0D0
  623. C
  624. RETUX.AM(IFAC,2,2) = 0.0D0
  625. RETUX.AM(IFAC,2,1) = 0.0D0
  626. C
  627. RETUY.AM(IFAC,2,2) = 0.0D0
  628. RETUY.AM(IFAC,2,1) = 0.0D0
  629. C
  630. RETRET.AM(IFAC,2,2) = 0.0D0
  631. RETRET.AM(IFAC,2,1) = 0.0D0
  632. C
  633. ENDIF
  634. ENDDO
  635. C
  636. SEGDES MELEMC
  637. SEGDES MELEFE
  638. SEGDES MELEMF
  639. C
  640. SEGDES MPOVSU
  641. SEGDES MPVOLU
  642. SEGDES MPNORM
  643. C
  644. SEGDES MPRN
  645. SEGDES MPPN
  646. SEGDES MPUN
  647. SEGDES MPGAMN
  648. C
  649. SEGDES MELEDU
  650. SEGDES MATRIK
  651. SEGDES IMATRI
  652. C
  653. SEGDES RR , RUX , RUY , RRET ,
  654. & UXR , UXUX , UXUY , UXRET ,
  655. & UYR , UYUX , UYUY , UYRET ,
  656. & RETR , RETUX , RETUY , RETRET
  657.  
  658. SEGSUP MLENTC
  659. SEGSUP MLENTF
  660. SEGDES MLMINC
  661. SEGSUP MLELIM
  662. C
  663. 9999 CONTINUE
  664. RETURN
  665. END
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  

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