1 : C DIVU1 SOURCE PV 09/03/12 21:19:20 6325 2 : SUBROUTINE DIVU1(IRE1,IRE2,IRE3,IRE4,IRE5,IRET) 3 : C----------------------------------------------------------------------- 4 : C Calcul la divergence à partir des FLUX. 5 : C Le CHAMPOINT résultat est de support CENTRE. 6 : C----------------------------------------------------------------------- 7 : C 8 : C--------------------------- 9 : C Parametres Entree/Sortie : 10 : C--------------------------- 11 : C 12 : C E/ IRE1 : Champoint de type FLUX 13 : C E/ IRE2 : Mchaml des orientation de normale (1=out,-1=in) 14 : C E/ IRE3 : MELEME des points FACE 15 : C E/ IRE4 : MELEME des points CENTRE 16 : C E/ IRE5 : CHPOIN des points CENTRE 17 : C /S IRET : Champoint resultat de composante SCAL 18 : C 19 : C---------------------- 20 : C Tableaux de travail : 21 : C---------------------- 22 : C 23 : C ICPR(I)=J : Le noeud I a le numero J dans le MELEME des faces 24 : C Correspondance numerotation globale/locale 25 : C INUI(I)=J : Le Ieme noeud local est le Jeme global 26 : C Correspondance numerotation locale/globale 27 : C NNGOT : Nombre de noeuds total du domaine 28 : C 29 : C---------------------- 30 : C Variables en COMMON : 31 : C---------------------- 32 : C 33 : C IFOMOD : cf CCOPTIO.INC 34 : C 35 : C----------------------------------------------------------------------- 36 : C 37 : C Langage : ESOPE + FORTRAN77 38 : C 39 : C Auteurs : F.DABBENE 01/94 40 : C Complements : C. LE POTIER ET F. AURIOL 20/00 41 : C 42 : C----------------------------------------------------------------------- 43 : IMPLICIT INTEGER(I-N) 44 : IMPLICIT REAL*8 (A-H,O-Z) 45 : * 46 : -INC CCOPTIO 47 : -INC SMELEME 48 : -INC SMCHPOI 49 : -INC SMCHAML 50 : -INC SMCOORD 51 : * 52 : SEGMENT ICCPR 53 : INTEGER ICPR(NNGOT) , INUI(NNGOT) 54 : ENDSEGMENT 55 : C 56 : C= INITIALISATIONS 57 : C 58 : MCHPOI = IRE1 59 : MCHELM = IRE2 60 : IPT1 = IRE3 61 : IPT2 = IRE4 62 : C 63 : C= Initialisations à partir de la rigidité 64 : C 65 : NNGOT = XCOOR(/1)/(IDIM+1) 66 : SEGINI ICCPR 67 : IRET = 0 68 : * 69 : *= Creation des tableaux ICPR et INUI pour le maillage IPT1 des FACES 70 : * 71 : SEGACT IPT1 72 : N2 = IPT1.NUM(/2) 73 : IK = 0 74 : NBFACE = N2 75 : DO 10 I2=1,N2 76 : K = IPT1.NUM(1,I2) 77 : IF (ICPR(K).EQ.0) THEN 78 : IK = IK + 1 79 : ICPR(K) = IK 80 : INUI(IK)= K 81 : ENDIF 82 : 10 CONTINUE 83 : SEGDES IPT1 84 : C 85 : C- Récupération du pointeur MPOVAL des flux 86 : C 87 : SEGACT MCHPOI 88 : MSOUPO = IPCHP(1) 89 : SEGACT MSOUPO 90 : MPOVA1 = IPOVAL 91 : SEGDES MSOUPO 92 : SEGDES MCHPOI 93 : C 94 : C------------------------------------------ 95 : C Création du CHAMPOINT SCAL contenant DIVu 96 : C------------------------------------------ 97 : C 98 : NSOUPO = 1 99 : NAT = 1 100 : SEGINI MCHPOI 101 : IRET = MCHPOI 102 : IFOPOI = IFOMOD 103 : JATTRI(1) = 1 104 : NC = 1 105 : SEGINI MSOUPO 106 : IPCHP(1) = MSOUPO 107 : SEGDES MCHPOI 108 : NOCOMP(1) = 'SCAL' 109 : IGEOC = IRE4 110 : SEGACT IPT2 111 : N = IPT2.NUM(/2) 112 : SEGDES IPT2 113 : SEGINI MPOVAL 114 : IPOVAL = MPOVAL 115 : NOHARM(1) = NIFOUR 116 : SEGDES MSOUPO 117 : C 118 : C------------------------------------------------ 119 : C= Boucle sur les ZONES ELEMENTAIRES du MCHAML 120 : C------------------------------------------------ 121 : C 122 : ITELEM = 0 123 : SEGACT MCHELM 124 : SEGACT MPOVA1 125 : NRIGEL = IMACHE(/1) 126 : IF(IRE5.EQ.0)THEN 127 : DO 40 IRI=1,NRIGEL 128 : C 129 : C Recuperation du MELEME et activation 130 : C 131 : MELEME = IMACHE(IRI) 132 : SEGACT MELEME 133 : N1 = NUM(/1) 134 : N2 = NUM(/2) 135 : C 136 : C Récupération du pointeur MELVAL du MCHAML d'orientation 137 : C 138 : MCHAML = ICHAML(IRI) 139 : SEGACT MCHAML 140 : MELVAL = IELVAL(1) 141 : SEGDES MCHAML 142 : SEGACT MELVAL 143 : C 144 : C------------------------------ 145 : C= Boucle 30 sur les ELEMENTs. 146 : C------------------------------ 147 : C 148 : DO 30 I2=1,N2 149 : ITELEM = ITELEM + 1 150 : DO 20 IN=1,N1 151 : VALIN1 = MPOVA1.VPOCHA(ICPR(NUM(IN,I2)),1)*VELCHE(IN,I2) 152 : VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1 153 : 20 CONTINUE 154 : 30 CONTINUE 155 : SEGDES MELVAL, MELEME 156 : 40 CONTINUE 157 : ELSE 158 : C 159 : C Cas ou l'on a une fonction 160 : C 161 : MCHPO2=IRE5 162 : SEGACT MCHPO2 163 : MSOUP2=MCHPO2.IPCHP(1) 164 : SEGACT MSOUP2 165 : MPOVA2= MSOUP2.IPOVAL 166 : SEGACT MPOVA2 167 : DO 70 IRI=1,NRIGEL 168 : C 169 : C Recuperation du MELEME et activation 170 : C 171 : MELEME = IMACHE(IRI) 172 : SEGACT MELEME 173 : N1 = NUM(/1) 174 : N2 = NUM(/2) 175 : C 176 : C Récupération du pointeur MELVAL du MCHAML d'orientation 177 : C 178 : MCHAML = ICHAML(IRI) 179 : SEGACT MCHAML 180 : MELVAL = IELVAL(1) 181 : SEGDES MCHAML 182 : SEGACT MELVAL 183 : C 184 : C------------------------------ 185 : C= Boucle sur les ELEMENTs. 186 : C------------------------------ 187 : C 188 : DO 60 I2=1,N2 189 : ITELEM = ITELEM + 1 190 : DO 50 IN=1,N1 191 : VALIN1 = MPOVA1.VPOCHA(ICPR(NUM(IN,I2)),1)*VELCHE(IN,I2) 192 : * * MPOVA2.VPOCHA(ICPR(NUM(IN,I2)),1) 193 : VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1 194 : 50 CONTINUE 195 : 60 CONTINUE 196 : SEGDES MELVAL, MELEME 197 : 70 CONTINUE 198 : SEGDES MPOVA2,MSOUP2,MCHPO2 199 : ENDIF 200 : SEGDES MCHELM 201 : SEGDES MPOVA1 202 : SEGDES MPOVAL 203 : SEGSUP ICCPR 204 : C 205 : RETURN 206 : END 207 : 208 : 209 : 210 :
© Cast3M 2003 - All rights reserved.
Disclaimer