Télécharger lapvf2.eso

Retour à la liste

Numérotation des lignes :

  1. C LAPVF2 SOURCE PV 16/11/17 22:00:30 9180
  2. SUBROUTINE LAPVF2(MPOVA1,MPOVA2,MPOVA3,IK3,MELEMC,MELEMF,MELEFE,
  3. & MELEMA,MELVA1,IPADF,IPADC,L,NUTOEL,
  4. & PMATRI,PIMATR,MELEMP)
  5. C---------------------------------------------------------
  6. C Evaluation des matrices élémentaires du laplacien en VF
  7. C---------------------------------------------------------
  8. C
  9. C--------------------------
  10. C Paramètre Entrée/Sortie :
  11. C--------------------------
  12. C E/ MPOVA1 : MPOVAL du CHPO FACE contenant l'aire des faces (ACTIF)
  13. C E/ MPOVA2 : MPOVAL du CHPO FACE contenant une normale (ACTIF)
  14. C E/ MPOVA3 : MPOVAL du CHPO CENTRE contenant la viscosité (ACTIF)
  15. C E/ MELEMC : MELEME CENTRE de la table DOMAINE (ACTIF)
  16. C E/ MELEMF : MELEME FACE de la table DOMAINE (ACTIF)
  17. C E/ MELEFE : MELEME FACEL de la table DOMAINE (ACTIF)
  18. C E/ MELEMA : MELEME ELTFA de la table DOMAINE (ACTIF)
  19. C E/ MELVA1 : MELVAL donnant l'orientation de la normale
  20. C E/ IPADF : LISTENTI de correspondance numérotation pour FACE
  21. C E/ IPADC : LISTENTI de correspondance numérotation pour CENTRE
  22. C E/ L : Indice du sous-objet MAILLAGE à traiter (<=NBSOUS)
  23. C E/ NUTOEL : Nombre d'éléments déjà traité
  24. C /S PMATRI : MATRIK contenant l'ensemble des infos sur la matrice
  25. C /S PIMATR : IMATRI contenant les mat.elem. pour le bloc traité
  26. C E/S MELEMP : Connectivité des inconnues primales
  27. C----------------------------------------------------------
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30. C
  31. -INC CCOPTIO
  32. CCCCC-INC CCGEOME
  33. -INC SMCHPOI
  34. -INC SMCHAML
  35. -INC SMELEME
  36. -INC SMLENTI
  37. -INC SMCOORD
  38. C
  39. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFE.MELEME
  40. POINTEUR MELEMA.MELEME,MELEOP.MELEME,MELEMP.MELEME
  41. POINTEUR PMATRI.MATRIK
  42. POINTEUR PIMATR.IMATRI
  43. POINTEUR IPADC.MLENTI,IPADF.MLENTI
  44. REAL*8 NORM(3),XYZDIS(3)
  45. C
  46. C- Création des connéctivités associées à l'inconnue primale dans
  47. C- le cas du schéma VF standard (à 5 points : croix NSEO + CENTRE)
  48. C
  49. NBELEM = MELEMA.NUM(/2)
  50. NBFACE = MELEMA.NUM(/1)
  51. NBNN = NBFACE+1
  52. NBSOUS = 0
  53. NBREF = 0
  54. SEGINI MELEOP
  55. IF (NBFACE.EQ.3) MELEOP.ITYPEL = 5
  56. IF (NBFACE.EQ.4) MELEOP.ITYPEL = 9
  57. IF (NBFACE.EQ.5) MELEOP.ITYPEL = 6
  58. IF (NBFACE.EQ.6) MELEOP.ITYPEL = 7
  59. DO KE= 1,NBELEM
  60. NC = MELEMC.NUM(1,KE+NUTOEL)
  61. MELEOP.NUM(1,KE) = NC
  62. DO KF= 1, NBFACE
  63. NF = MELEMA.NUM(KF,KE)
  64. NFL = IPADF.LECT(NF)
  65. NC1 = MELEFE.NUM(1,NFL)
  66. NC2 = MELEFE.NUM(3,NFL)
  67. IF (NC1.EQ.NC) THEN
  68. MELEOP.NUM(KF+1,KE)= NC2
  69. ELSE
  70. MELEOP.NUM(KF+1,KE)= NC1
  71. ENDIF
  72. END DO
  73. END DO
  74. IF ((MELEMP.LISOUS(/1)).GT.1) THEN
  75. MELEMP.LISOUS(L) = MELEOP
  76. ELSE
  77. MELEMP = MELEOP
  78. ENDIF
  79. C
  80. C- Création du segment MATRIK associé à la zone considérée
  81. C
  82. PMATRI.IRIGEL(1,1) = MELEMP
  83. PMATRI.IRIGEL(2,1) = MELEMC
  84. NP = NBFACE + 1
  85. MP = 1
  86. NBEL = NBELEM
  87. SEGINI IPM1
  88. PIMATR.LIZAFM(L,1)= IPM1
  89. C
  90. C= Calcul des coefficient des matrices élémentaires
  91. C
  92. C NUMCG et NUMCL : Numero Global et Local du point CENTRE
  93. C NUMFG et NUMFL : Numero Global et Local de la FACE considérée
  94. C NUMVG et NUMVL : Numero Global et Local du point CENTRE
  95. C de l'élément voisin pour la face considérée
  96. C DIFF1 : Coeff de Diffusion associé à l'élément
  97. C SURF : Surface de la FACE
  98. C SIGNE : Orientation de la normale
  99. C NORM : Normale sortante
  100. C
  101. DO I=1,NBELEM
  102. NUMCG = MELEOP.NUM(1,I)
  103. NUMCL = IPADC.LECT(NUMCG)
  104. ICOCG = (NUMCG-1)*(IDIM+1)
  105. DIFF1 = MPOVA3.VPOCHA(NUMCL*(1-IK3)+IK3,1)
  106. DO J=2,NBFACE+1
  107. NUMVG = MELEOP.NUM(J,I)
  108. NUMVL = IPADC.LECT(NUMVG)
  109. ICOVG = (NUMVG-1)*(IDIM+1)
  110. IF (NUMCG.NE.NUMVG) THEN
  111. NUMFG = MELEMA.NUM(J-1,I)
  112. NUMFL = IPADF.LECT(NUMFG)
  113. ICOFG = (NUMFG-1)*(IDIM+1)
  114. SURF = MPOVA1.VPOCHA(NUMFL,1)
  115. SIGNE = MELVA1.VELCHE(J-1,I)
  116. C
  117. C- Calcul de projection et de distance
  118. C
  119. DIST = 0.D0
  120. SCAL = 0.D0
  121. DO K= 1,IDIM
  122. NORM(K) = MPOVA2.VPOCHA(NUMFL,K) * SIGNE
  123. XYZDIS(K) = XCOOR(ICOVG+K) - XCOOR(ICOCG+K)
  124. DIST = DIST + XYZDIS(K) * XYZDIS(K)
  125. SCAL = SCAL + XYZDIS(K) * NORM(K)
  126. END DO
  127. DIST = SQRT(DIST)
  128. C
  129. C- Evaluation de la diffusion DIFF assurant la continuité du flux
  130. C- avec FLUX = DIFF (Cgauche - Cdroit)
  131. C- DIFF contient donc une pseudo-longueur entre les points CENTRE
  132. C
  133. H1 = 0.D0
  134. H2 = 0.D0
  135. DO K= 1,IDIM
  136. H1 = H1 + (XCOOR(ICOFG+K) - XCOOR(ICOCG+K))*NORM(K)
  137. H2 = H2 + (XCOOR(ICOVG+K) - XCOOR(ICOFG+K))*NORM(K)
  138. END DO
  139. H1 = ABS(H1)
  140. H2 = ABS(H2)
  141. DIFF2 = MPOVA3.VPOCHA(NUMVL*(1-IK3)+IK3,1)
  142. DIFF = DIFF1*DIFF2 / (H2*DIFF1 + H1*DIFF2)
  143. C
  144. C- Calcul des coefficients de la matrice couplant
  145. C- l'inconnue primale NUMVG avec la duale NUMCG
  146. C
  147. IPM1.AM(I,J,1) = -DIFF*SCAL*SURF
  148. IPM1.AM(I,1,1) = IPM1.AM(I,1,1) - IPM1.AM(I,J,1)
  149. ELSE
  150. C
  151. C- Condition au limite naturelle à la frontière du domaine (flux nul)
  152. C
  153. IPM1.AM(I,J,1)= 0.D0
  154. ENDIF
  155. END DO
  156. END DO
  157. C
  158. C- Ménage
  159. C
  160. SEGDES IPM1
  161. C
  162. RETURN
  163. END
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  

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