Télécharger konjs1.eso

Retour à la liste

Numérotation des lignes :

konjs1
  1. C KONJS1 SOURCE CB215821 20/11/25 13:32:32 10792
  2. SUBROUTINE KONJS1(INDMET,ILINC,ISF,IUN,INORM,ICHPVO
  3. $ ,ICHPSU,MELEMC,MELEMF,MELEFE,IMAT)
  4. C
  5. C************************************************************************
  6. C
  7. C PROJET : CASTEM 2000
  8. C
  9. C NOM : KONJS1
  10. C
  11. C DESCRIPTION : Voir KONV15
  12. C Calcul du jacobien du résidu
  13. C Cas 2D/3D
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, SFME/LTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C APPELES (Outils
  23. C CASTEM) : KRIPAD, LICHT, ERREUR
  24. C
  25. C APPELES (Calcul) :
  26. C
  27. C************************************************************************
  28. C
  29. C ENTREES
  30. C
  31. C INDMET : type de Methode
  32. C 1 UPWIND
  33. C 2 CENTERED
  34. C
  35. C ILINC : liste des inconnues
  36. C
  37. C 1) Pointeurs des CHPOINT/CHAMELEM
  38. C
  39. C IUN : CHPOINT FACE contenant la vitesse ;
  40. C
  41. C ISF : CHAMELEM 'FACEL' contenant les scalaires à transporter
  42. C
  43. C INORM : CHPOINT FACE contenant les normales aux faces ;
  44. C
  45. C ICHPVO : CHPOINT VOLUME contenant le volume
  46. C
  47. C ICHPSU : CHPOINT FACE contenant la surface des faces
  48. C
  49. C
  50. C 2) Pointeurs de MELEME de la table DOMAINE
  51. C
  52. C MELEMC : MELEME 'CENTRE' du SPG des CENTRES
  53. C
  54. C MELEFE : MELEME 'FACEL' du connectivité Faces -> Elts
  55. C
  56. C SORTIES
  57. C
  58. C IMAT : pointeur de la MATRIK du jacobien du residu
  59. C
  60. C************************************************************************
  61. C
  62. C HISTORIQUE (Anomalies et modifications éventuelles)
  63. C
  64. C HISTORIQUE : Créée le 03.12.01
  65. C
  66. C************************************************************************
  67. C
  68. C
  69. C**** Variables de COOPTIO
  70. C
  71. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  72. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  73. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  74. C & ,IECHO, IIMPI, IOSPI
  75. C & ,IDIM
  76. C & ,MCOORD
  77. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  78. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  79. C & ,NORINC,NORVAL,NORIND,NORVAD
  80. C & ,NUCROU, IPSAUV
  81. C
  82. IMPLICIT INTEGER(I-N)
  83. INTEGER ILINC, ISF ,IUN, INORM,ICHPVO,ICHPSU
  84. & , IMAT, IGEOMC, IGEOMF
  85. & , NFAC, NBSOUS, NBREF, NBELEM, NBNN, NRIGE, NMATRI, NKID
  86. & , NKMT, NBME, NBEL, MP, NP
  87. & , IFAC, NGCF, NLCF, NGCG, NGCD, NLCG, NLCD, NINC, IINC
  88. & ,INDMET
  89. REAL*8 UNX, UNY, UNZ, UN, VOLG, VOLD
  90. & , SURF, CNX, CNY, CNZ, FUNCEL
  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 MPUN.MPOVAL,
  103. & MPNORM.MPOVAL, MPVOLU.MPOVAL, MPOVSU.MPOVAL
  104. POINTEUR MELEMC.MELEME, MELEMF.MELEME, MELEFE.MELEME,
  105. & MELEDU.MELEME
  106. POINTEUR MLENTC.MLENTI, MLENTF.MLENTI
  107. POINTEUR MATSS.IZAFM
  108. POINTEUR MLMINC.MLMOTS
  109. C
  110. C**** KRIPAD pour la correspondance global/local des centres
  111. C
  112. CALL KRIPAD(MELEMC,MLENTC)
  113. C
  114. C SEGACT MLENTC
  115. SEGACT MELEMC
  116. C
  117. SEGACT MELEFE
  118. C
  119. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  120. CALL LICHT(INORM,MPNORM,TYPE,IGEOMF)
  121. CALL LICHT(ICHPVO,MPVOLU,TYPE,IGEOMC)
  122. C
  123. C**** LICHT active les MPOVALs en *MOD
  124. C
  125. C i.e.
  126. C
  127. C SEGACT MPOVSU*MOD
  128. C SEGACT MPOVNO*MOD
  129. C SEGACT MPVOLU*MOD
  130. C
  131. MELEMF = IGEOMF
  132. CALL KRIPAD(MELEMF,MLENTF)
  133. C
  134. C SEGACT MLENTF
  135. SEGACT MELEMF
  136. C
  137. CALL LICHT(IUN,MPUN,TYPE,IGEOMC)
  138. C
  139. C SEGACT MPUN*MOD
  140. C
  141. NFAC = MELEFE.NUM(/2)
  142. C
  143. C**** Maillage des inconnues primales
  144. C
  145. NBSOUS = 0
  146. NBREF = 0
  147. NBELEM = NFAC
  148. NBNN = 2
  149. C
  150. SEGINI MELEDU
  151. C MELEPR = MELEDU
  152. C
  153. C**** MELEDU = 'SEG2'
  154. C
  155. MELEDU.ITYPEL = 2
  156. C
  157. NRIGE = 7
  158. NMATRI = 1
  159. NKID = 9
  160. NKMT = 7
  161. C
  162. SEGINI MATRIK
  163. IMAT = MATRIK
  164. MATRIK.IRIGEL(1,1) = MELEDU
  165. MATRIK.IRIGEL(2,1) = MELEDU
  166. C
  167. C**** Matrice non symetrique
  168. C
  169. MATRIK.IRIGEL(7,1) = 2
  170. C
  171. MLMINC = ILINC
  172. SEGACT MLMINC
  173. NINC=MLMINC.MOTS(/2)
  174. NBME = NINC
  175. NBSOUS = 1
  176. SEGINI IMATRI
  177. MATRIK.IRIGEL(4,1) = IMATRI
  178. C
  179. NBEL = NBELEM
  180. NBSOUS = 1
  181. NP = 2
  182. MP = 2
  183. DO IINC=1,NINC,1
  184. IMATRI.LISPRI(IINC) = MLMINC.MOTS(IINC)
  185. IMATRI.LISDUA(IINC) = MLMINC.MOTS(IINC)
  186. SEGINI MATSS
  187. IMATRI.LIZAFM(1,IINC) = MATSS
  188. ENDDO
  189. C
  190. DO IFAC = 1, NFAC, 1
  191. NGCF = MELEFE.NUM(2,IFAC)
  192. NLCF = MLENTF.LECT(NGCF)
  193. IF(NLCF .NE. IFAC)THEN
  194. WRITE(IOIMP,*) 'Il ne faut pas jouer avec la table domaine'
  195. CALL ERREUR(5)
  196. GOTO 9999
  197. ENDIF
  198. NGCG = MELEFE.NUM(1,IFAC)
  199. NGCD = MELEFE.NUM(3,IFAC)
  200. SURF = MPOVSU.VPOCHA(NLCF,1)
  201. CNX = MPNORM.VPOCHA(NLCF,1)
  202. CNY = MPNORM.VPOCHA(NLCF,2)
  203. UNX = MPUN.VPOCHA(NLCF,1)
  204. UNY = MPUN.VPOCHA(NLCF,2)
  205. UN= (UNX*CNX) + (UNY*CNY)
  206. IF(IDIM .EQ. 3)THEN
  207. CNZ = MPNORM.VPOCHA(NLCF,3)
  208. UNZ = MPUN.VPOCHA(NLCF,3)
  209. UN=UN+(UNZ*CNZ)
  210. ENDIF
  211. IF(NGCG .NE. NGCD)THEN
  212. C
  213. C********** Les MELEMEs
  214. C
  215. MELEDU.NUM(1,IFAC) = NGCG
  216. MELEDU.NUM(2,IFAC) = NGCD
  217. C
  218. C********** Les etats G et D
  219. C
  220. NLCG = MLENTC.LECT(NGCG)
  221. NLCD = MLENTC.LECT(NGCD)
  222. VOLG = MPVOLU.VPOCHA(NLCG,1)
  223. VOLD = MPVOLU.VPOCHA(NLCD,1)
  224. C
  225. C********** MATSS.AM(IFAC,IPRIM,IDUAL)
  226. C IPRIM = 1, 2 -> G, D
  227. C IDUAL = 1, 2 -> G, D
  228. C
  229. C********** Dual RN
  230. C
  231. IF(INDMET .EQ. 1)THEN
  232. FUNCEL = SURF * UN
  233. IF(UN .GT. 0)THEN
  234. DO IINC=1,NINC,1
  235. MATSS=IMATRI.LIZAFM(1,IINC)
  236. MATSS.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  237. MATSS.AM(IFAC,1,2) = FUNCEL / VOLD
  238. MATSS.AM(IFAC,2,1) = 0.0D0
  239. MATSS.AM(IFAC,2,2) = 0.0D0
  240. ENDDO
  241. ELSE
  242. DO IINC=1,NINC,1
  243. MATSS=IMATRI.LIZAFM(1,IINC)
  244. MATSS.AM(IFAC,2,2) = FUNCEL / VOLD
  245. MATSS.AM(IFAC,2,1) = -1.0D0 * FUNCEL / VOLG
  246. MATSS.AM(IFAC,1,1) = 0.0D0
  247. MATSS.AM(IFAC,1,2) = 0.0D0
  248. ENDDO
  249. ENDIF
  250. ELSEIF(INDMET .EQ.2)THEN
  251. FUNCEL = SURF * UN * 0.5D0
  252. DO IINC=1,NINC,1
  253. MATSS=IMATRI.LIZAFM(1,IINC)
  254. MATSS.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  255. MATSS.AM(IFAC,1,2) = FUNCEL / VOLD
  256. MATSS.AM(IFAC,2,1) = -1.0D0 * FUNCEL /VOLG
  257. MATSS.AM(IFAC,2,2) = FUNCEL / VOLD
  258. ENDDO
  259. ELSE
  260. CALL ERREUR(251)
  261. GOTO 9999
  262. ENDIF
  263. ELSE
  264. C
  265. C********** Murs (NGCG = NGCD)
  266. C
  267. C
  268. C********** Les MELEMEs
  269. C
  270. MELEDU.NUM(1,IFAC) = NGCG
  271. MELEDU.NUM(2,IFAC) = NGCD
  272. NLCG = MLENTC.LECT(NGCG)
  273. VOLG = MPVOLU.VPOCHA(NLCG,1)
  274. C
  275. IF((INDMET .EQ. 1).OR.(INDMET .EQ. 2))THEN
  276. FUNCEL = SURF * UN
  277. DO IINC=1,NINC,1
  278. MATSS=IMATRI.LIZAFM(1,IINC)
  279. MATSS.AM(IFAC,1,1) = -1.0D0 * FUNCEL / VOLG
  280. MATSS.AM(IFAC,1,2) = 0.0D0
  281. MATSS.AM(IFAC,2,1) = 0.0D0
  282. MATSS.AM(IFAC,2,2) = 0.0D0
  283. ENDDO
  284. ELSE
  285. CALL ERREUR(251)
  286. GOTO 9999
  287. ENDIF
  288. ENDIF
  289. ENDDO
  290. C
  291. SEGDES MELEMC
  292. SEGDES MELEFE
  293. SEGDES MELEMF
  294. C
  295. SEGDES MPOVSU
  296. SEGDES MPVOLU
  297. SEGDES MPNORM
  298. C
  299. SEGDES MPUN
  300. C
  301. SEGDES MELEDU
  302. SEGDES MATRIK
  303. DO IINC=1,NINC,1
  304. MATSS=IMATRI.LIZAFM(1,IINC)
  305. SEGDES MATSS
  306. ENDDO
  307. SEGDES IMATRI
  308. C
  309. SEGSUP MLENTC
  310. SEGSUP MLENTF
  311. SEGDES MLMINC
  312.  
  313. 9999 CONTINUE
  314. RETURN
  315. END
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  

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