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