Télécharger konja2.eso

Retour à la liste

Numérotation des lignes :

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

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