Télécharger echi1.eso

Retour à la liste

Numérotation des lignes :

echi1
  1. C ECHI1 SOURCE CB215821 20/11/25 13:26:52 10792
  2. SUBROUTINE ECHI1(IKAS,IVOL1,MTAB1,MTAB2,MPOVA1,MPOVA2,IKH,IKT,
  3. & MELEMD,MELEVF,MLENTI,MLENT1,NOMD)
  4. C-----------------------------------------------------------------------
  5. C Discrétisation de l'opérateur ECHIMP en explicite EFM1 et VF, le
  6. C coeff d'échange étant un SCAL ou CHPO CENTRE, le champ exterieur
  7. C un SCAL, un CHPO CENTRE ou un CHPO SOMMET.
  8. C-----------------------------------------------------------------------
  9. C
  10. C--------------------
  11. C Paramètres Entrée :
  12. C--------------------
  13. C
  14. C E/ IKAS : Type de situation à traiter (1=EF, 2 ou 3=VF)
  15. C E/ IVOL1 : Type d'échange (0=surfacique, 1=volumique)
  16. C E/ MTAB1 : Pointeur de la table EQEX
  17. C E/ MTAB2 : Pointeur de la table DOMAINE locale
  18. C E/ MPOVA1 : MPOVAL des valeurs du coefficient d'échange
  19. C E/ MPOVA2 : MPOVAL des valeurs du champ exterieur
  20. C E/ IKH : Forme originel du coefficient d'échange
  21. C (0=CHPO CENTRE, 1=FLOTTANT)
  22. C E/ IKT : Forme originel du champ exterieur
  23. C (0=CHPO CENTRE, 1=FLOTTANT, 4=CHPO SOMMET)
  24. C E/ MELEMD : Pointeur du spg de l'inconnue
  25. C E/ MELEVF : Pointeur vers les points CENTRE du maillage volumique
  26. C en correspondance avec les points CENTRE surfacique
  27. C (Utilisé en Formulation VF et échange surfacique)
  28. C E/ MLENTI : Correspondance numéotation globale/numérotation locale
  29. C LECT(I)=J : le point numéro I est le Jième de MELEMD
  30. C E/ MLENT1 : Idem MLENTI pour le spg du champ exterieur
  31. C (Utilisé lorsque le champ exterieur est au SOMMET)
  32. C E/ NOMD : Nom de l'inconnue
  33. C
  34. C------------------
  35. C Champs calculés :
  36. C------------------
  37. C
  38. C MPOVA3 : MPOVAL des valeurs de la matrice diagonale
  39. C Stocké à l'indice NOMD de la table KIZG1
  40. C MPOVA4 : MPOVAL des valeurs du second membre
  41. C Stocké à l'indice NOMD de la table KIZG
  42. C
  43. C-----------------------------------------------------------------------
  44. IMPLICIT INTEGER(I-N)
  45. IMPLICIT REAL*8 (A-H,O-Z)
  46. C
  47.  
  48. -INC PPARAM
  49. -INC CCOPTIO
  50. -INC SMCHPOI
  51. -INC SMCHAML
  52. -INC SMELEME
  53. POINTEUR MELEMD.MELEME
  54. -INC SMLENTI
  55. C
  56. CHARACTER*8 NOMD,TYPE,TYPC,TYPS
  57. C
  58. C- Initialisations
  59. C
  60. NBCOMP = 1
  61. IF (IKAS.EQ.1) THEN
  62. TYPS = 'SOMMET '
  63. ELSE
  64. TYPS = 'CENTRE '
  65. ENDIF
  66. C
  67. NRIGE=7
  68. NKID =9
  69. NKMT =7
  70. NMATRI=1
  71. SEGINI MATRIK
  72. IRIGEL(1,1)=MELEMD
  73. IRIGEL(2,1)=MELEMD
  74. IRIGEL(7,1)=5
  75. NBME=1
  76. NBSOUS=1
  77. SEGINI IMATRI
  78. IRIGEL(4,1)=IMATRI
  79. SEGACT MELEMD
  80. KSPGP=MELEMD
  81. KSPGD=MELEMD
  82. LISPRI(1)=NOMD
  83. LISDUA(1)=NOMD
  84. NP=1
  85. MP=1
  86. NBEL=MELEMD.NUM(/2)
  87. SEGINI IZAFM
  88. LIZAFM(1,1)=IZAFM
  89. LIZAFM(1,1)=IZAFM
  90. SEGDES MATRIK,IMATRI
  91. CALL KRCHPT(TYPS,MELEMD,NBCOMP,IZG,NOMD(1:4))
  92. CALL LICHTM(IZG,MPOVA4,TYPC,IGEOM)
  93. C
  94. C- Activation
  95. C
  96. SEGACT MPOVA1
  97. SEGACT MPOVA2
  98. SEGACT MLENTI
  99. SEGACT MLENT1
  100. C
  101. C----------------------------------------------------------------------
  102. C- Traitement d'une formulation EF ou EMM1 explicite, le champ
  103. C- exterieur étant 1) un SCAL ou un CHPO CENTRE, 2) un CHPO SOMMET.
  104. C- Dans les deux cas, l'indice XXPSOML de la table domaine local suffit
  105. C- (contient l'intégrale sur chaque élément des fonctions de forme).
  106. C- En effet, en explicite les matrices masses sont condensées (EF=EFM1)
  107. C----------------------------------------------------------------------
  108. C
  109. IF (IKAS.EQ.1) THEN
  110. CALL LEKTAB(MTAB2,'MAILLAGE',MELEME)
  111. CALL LEKTAB(MTAB2,'XXPSOML ',MCHELM)
  112. IF (IERR.NE.0) RETURN
  113. SEGACT MCHELM
  114. SEGACT MELEME
  115. NBSOUS = LISOUS(/1)
  116. IF (NBSOUS.EQ.0) NBSOUS=1
  117. NUTOEL = 0
  118. DO 30 L=1,NBSOUS
  119. IPT1 = MELEME
  120. IF (NBSOUS.NE.1) IPT1=LISOUS(L)
  121. SEGACT IPT1
  122. NP = IPT1.NUM(/1)
  123. NBEL = IPT1.NUM(/2)
  124. MCHAML = ICHAML(L)
  125. SEGACT MCHAML
  126. MELVAL = IELVAL(1)
  127. SEGACT MELVAL
  128. DO 20 K=1,NBEL
  129. NK = NUTOEL + K
  130. KPOS = 1 + (1-IKH)*(NK-1)
  131. DO 10 I=1,NP
  132. II = IPT1.NUM(I,K)
  133. IPOS = LECT(II)
  134. VAL1 = MPOVA1.VPOCHA(KPOS,1)*VELCHE(I,K)
  135. AM(IPOS,1,1) = AM(IPOS,1,1) + VAL1
  136. IF (IKT.EQ.4) THEN
  137. JPOS = MLENT1.LECT(II)
  138. ELSE
  139. JPOS = 1 + (1-IKT)*(NK-1)
  140. ENDIF
  141. VAL2 = VAL1 * MPOVA2.VPOCHA(JPOS,1)
  142. MPOVA4.VPOCHA(IPOS,1) = MPOVA4.VPOCHA(IPOS,1) + VAL2
  143. 10 CONTINUE
  144. 20 CONTINUE
  145. SEGDES IPT1
  146. SEGDES MCHAML,MELVAL
  147. NUTOEL = NUTOEL + NBEL
  148. 30 CONTINUE
  149. IF (NBSOUS.NE.1) SEGDES MELEME
  150. SEGDES MCHELM
  151. C
  152. C----------------------------------------------------------------------
  153. C- Traitement d'une formulation VF Explicite, le champ exterieur étant
  154. C- 1) un SCAL ou un CHPO CENTRE, 2) un CHPO SOMMET.
  155. C-
  156. C- Le traitement différe pour le second membre :
  157. C- Dans le premier cas, l'indice XXVOLUM de la table domaine local,
  158. C- utilisé pour calculer la matrice suffit (contient le volume de
  159. C- chaque élément). Dans le deuxième cas, on a également besoin de
  160. C- l'indice XXPSOML que l'on sature par le champ exterieur au sommet.
  161. C-
  162. C- Le spg des champoints résultats dépend du type d'échange :
  163. C- Lorsque l'échange est volumique, les points CENTRE de la table
  164. C- domaine local sont à considerer. En surfacique, on a construit
  165. C- la correspondance entre centre(volume)-centre(surface); les CENTRE
  166. C- des volumes concernés sont rangés dans MELEVF.
  167. C----------------------------------------------------------------------
  168. C
  169. ELSE
  170. CALL LEKTAB(MTAB2,'XXVOLUM ',MCHPOI)
  171. CALL LICHTL(MCHPOI,MPOVA5,TYPC,MELEMC)
  172. IF (IVOL1.EQ.0) THEN
  173. IPT2 = MELEVF
  174. ELSE
  175. IPT2 = MELEMC
  176. ENDIF
  177. SEGACT IPT2
  178. IF (IKT.EQ.0 .OR. IKT.EQ.1) THEN
  179. NBEL = IPT2.NUM(/2)
  180. DO 40 K=1,NBEL
  181. IPOS = LECT(IPT2.NUM(1,K))
  182. KPOS = 1 + (1-IKH)*(K-1)
  183. KTEX = 1 + (1-IKT)*(K-1)
  184. VAL1 = MPOVA1.VPOCHA(KPOS,1) * MPOVA5.VPOCHA(K,1)
  185. AM(IPOS,1,1) = AM(IPOS,1,1) + VAL1
  186. VAL2 = MPOVA2.VPOCHA(KTEX,1) * VAL1
  187. MPOVA4.VPOCHA(IPOS,1) = MPOVA4.VPOCHA(IPOS,1) + VAL2
  188. 40 CONTINUE
  189. ELSE
  190. CALL LEKTAB(MTAB2,'MAILLAGE',MELEME)
  191. CALL LEKTAB(MTAB2,'XXPSOML ',MCHELM)
  192. IF (IERR.NE.0) RETURN
  193. SEGACT MCHELM
  194. SEGACT MELEME
  195. NBSOUS = LISOUS(/1)
  196. IF (NBSOUS.EQ.0) NBSOUS=1
  197. NUTOEL = 0
  198. DO 70 L=1,NBSOUS
  199. IPT1 = MELEME
  200. IF (NBSOUS.NE.1) IPT1=LISOUS(L)
  201. SEGACT IPT1
  202. NP = IPT1.NUM(/1)
  203. NBEL = IPT1.NUM(/2)
  204. MCHAML = ICHAML(L)
  205. SEGACT MCHAML
  206. MELVAL = IELVAL(1)
  207. SEGACT MELVAL
  208. DO 60 K=1,NBEL
  209. NK = NUTOEL + K
  210. IPOS = LECT(IPT2.NUM(1,NK))
  211. KPOS = 1 + (1-IKH)*(NK-1)
  212. VAL1 = MPOVA1.VPOCHA(KPOS,1) * MPOVA5.VPOCHA(NK,1)
  213. AM(IPOS,1,1) = AM(IPOS,1,1) + VAL1
  214. VAL2 = 0.D0
  215. DO 50 I=1,NP
  216. II = IPT1.NUM(I,K)
  217. JPOS = MLENT1.LECT(II)
  218. VAL2 = VAL2 + MPOVA1.VPOCHA(KPOS,1)
  219. & * MPOVA2.VPOCHA(JPOS,1) * VELCHE(I,K)
  220. 50 CONTINUE
  221. MPOVA4.VPOCHA(IPOS,1) = MPOVA4.VPOCHA(IPOS,1) + VAL2
  222. 60 CONTINUE
  223. NUTOEL = NUTOEL + NBEL
  224. SEGDES IPT1
  225. SEGDES MELVAL,MCHAML
  226. 70 CONTINUE
  227. IF (NBSOUS.NE.1) SEGDES MELEME
  228. SEGDES MCHELM
  229. ENDIF
  230. SEGDES IPT2
  231. SEGDES MPOVA5
  232. ENDIF
  233. C
  234. C- Désactivation
  235. C
  236. SEGDES IZAFM
  237. SEGDES MPOVA1
  238. SEGDES MPOVA2
  239. SEGDES MPOVA4
  240. SEGSUP MLENTI
  241. SEGSUP MLENT1
  242. C
  243. CALL ECROBJ('MATRIK',MATRIK)
  244. CALL ECROBJ('CHPOINT',IZG)
  245.  
  246. RETURN
  247. END
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  

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