Télécharger konjc1.eso

Retour à la liste

Numérotation des lignes :

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

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