Télécharger lapvf2.eso

Retour à la liste

Numérotation des lignes :

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

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