Download lapvf2.eso

Back to the list

   1 : C LAPVF2    SOURCE    MAGN      09/07/30    21:19:02     6458           
   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 SMMATRIK
  37 : -INC SMLENTI
  38 : -INC SMCOORD
  39 : C
  40 :       POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFE.MELEME
  41 :       POINTEUR MELEMA.MELEME,MELEOP.MELEME,MELEMP.MELEME
  42 :       POINTEUR PMATRI.MATRIK
  43 :       POINTEUR PIMATR.IMATRI
  44 :       POINTEUR IPADC.MLENTI,IPADF.MLENTI
  45 :       REAL*8 NORM(3),XYZDIS(3)
  46 : C
  47 : C- Création des connéctivités associées à l'inconnue primale dans
  48 : C- le cas du schéma VF standard (à 5 points : croix NSEO + CENTRE)
  49 : C
  50 :       NBELEM = MELEMA.NUM(/2)
  51 :       NBFACE = MELEMA.NUM(/1)
  52 :       NBNN   = NBFACE+1
  53 :       NBSOUS = 0
  54 :       NBREF  = 0
  55 :       SEGINI MELEOP
  56 :       IF (NBFACE.EQ.3) MELEOP.ITYPEL = 5
  57 :       IF (NBFACE.EQ.4) MELEOP.ITYPEL = 9
  58 :       IF (NBFACE.EQ.5) MELEOP.ITYPEL = 6
  59 :       IF (NBFACE.EQ.6) MELEOP.ITYPEL = 7
  60 :       DO KE= 1,NBELEM
  61 :          NC               = MELEMC.NUM(1,KE+NUTOEL)
  62 :          MELEOP.NUM(1,KE) = NC
  63 :          DO KF= 1, NBFACE
  64 :             NF  = MELEMA.NUM(KF,KE)
  65 :             NFL = IPADF.LECT(NF)
  66 :             NC1 = MELEFE.NUM(1,NFL)
  67 :             NC2 = MELEFE.NUM(3,NFL)
  68 :             IF (NC1.EQ.NC) THEN 
  69 :                MELEOP.NUM(KF+1,KE)= NC2
  70 :             ELSE 
  71 :                MELEOP.NUM(KF+1,KE)= NC1
  72 :             ENDIF
  73 :          END DO
  74 :       END DO
  75 :       IF ((MELEMP.LISOUS(/1)).GT.1) THEN
  76 :          MELEMP.LISOUS(L) = MELEOP
  77 :       ELSE
  78 :          MELEMP = MELEOP
  79 :       ENDIF
  80 : C
  81 : C- Création du segment MATRIK associé à la zone considérée
  82 : C
  83 :       PMATRI.IRIGEL(1,1) = MELEMP
  84 :       PMATRI.IRIGEL(2,1) = MELEMC
  85 :       NP   = NBFACE + 1
  86 :       MP   = 1
  87 :       NBEL = NBELEM
  88 :       SEGINI IPM1
  89 :       PIMATR.LIZAFM(L,1)= IPM1
  90 : C
  91 : C= Calcul des coefficient des matrices élémentaires
  92 : C
  93 : C   NUMCG et NUMCL : Numero Global et Local du point CENTRE
  94 : C   NUMFG et NUMFL : Numero Global et Local de la FACE considérée
  95 : C   NUMVG et NUMVL : Numero Global et Local du point CENTRE
  96 : C                    de l'élément voisin pour la face considérée
  97 : C   DIFF1          : Coeff de Diffusion associé à l'élément
  98 : C   SURF           : Surface de la FACE
  99 : C   SIGNE          : Orientation de la normale
 100 : C   NORM           : Normale sortante
 101 : C
 102 :       DO I=1,NBELEM
 103 :          NUMCG = MELEOP.NUM(1,I)
 104 :          NUMCL = IPADC.LECT(NUMCG)
 105 :          ICOCG = (NUMCG-1)*(IDIM+1)
 106 :          DIFF1 = MPOVA3.VPOCHA(NUMCL*(1-IK3)+IK3,1)
 107 :          DO J=2,NBFACE+1
 108 :             NUMVG = MELEOP.NUM(J,I)
 109 :             NUMVL = IPADC.LECT(NUMVG)
 110 :             ICOVG = (NUMVG-1)*(IDIM+1)
 111 :             IF (NUMCG.NE.NUMVG) THEN 
 112 :                NUMFG = MELEMA.NUM(J-1,I)
 113 :                NUMFL = IPADF.LECT(NUMFG)
 114 :                ICOFG = (NUMFG-1)*(IDIM+1)
 115 :                SURF  = MPOVA1.VPOCHA(NUMFL,1)
 116 :                SIGNE  = MELVA1.VELCHE(J-1,I)
 117 : C
 118 : C- Calcul de projection et de distance
 119 : C
 120 :                DIST = 0.D0
 121 :                SCAL = 0.D0
 122 :                DO K= 1,IDIM
 123 :                   NORM(K)   = MPOVA2.VPOCHA(NUMFL,K) * SIGNE
 124 :                   XYZDIS(K) = XCOOR(ICOVG+K) - XCOOR(ICOCG+K)
 125 :                   DIST      = DIST + XYZDIS(K) * XYZDIS(K)
 126 :                   SCAL      = SCAL + XYZDIS(K) * NORM(K)
 127 :                END DO
 128 :                DIST = SQRT(DIST)
 129 :                SCAL = SCAL / 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 :  

© Cast3M 2003 - All rights reserved.
Disclaimer