1 : C FLUMA2 SOURCE PV 09/03/12 21:22:50 6325 2 : SUBROUTINE FLUMA2(IPFLOD,IPGEOM,IPINTE,NUMPOI,IPFLEQ) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8(A-H,O-Z) 5 : ************************************************************************ 6 : * 7 : * F L U M A 2 8 : * ----------- 9 : * 10 : * FONCTION: 11 : * --------- 12 : * CALCUL DES FLUX NODAUX EQUIVALENTS 13 : * MODE BIDIMENSIONNEL OU MODE AXISYMETRIQUE 14 : * 15 : * MODULES UTILISES: 16 : * ----------------- 17 : * 18 : -INC CCOPTIO 19 : -INC CCREEL 20 : -INC SMCHAML 21 : -INC SMELEME 22 : -INC SMINTE 23 : -INC SMCOORD 24 : * 25 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 26 : * ----------- 27 : * 28 : * IPFLOD (E) POINTEUR SUR UN SEGMENT MELVAL CONTENANT LES 29 : * FLUX NODAUX 30 : * IPGEOM (E) POINTEUR SUR UN OBJET MAILLAGE ELEMENTAIRE 31 : * DE L'ENVELOPPE 32 : * IPINTE (E) POINTEUR SUR UN SEGMENT MINTE CONTENANT LES 33 : * CARACTERISTIQUES D'INTEGRATION DES FACES 34 : * +IDIM (E) VOIR CCOPTIO 35 : * +XZERO (E) VOIR CCREEL 36 : * +XPETIT (E) VOIR CCREEL 37 : * +XPI (E) VOIR CCREEL 38 : * NUMPOI (E) REFERENCE LA DIRECTION DU FLUX DANS LE REPERE GLOBAL 39 : * = -1 LORSQUE LE FLUX EST NORMAL A LA FACE 40 : * MIS A 1 POUR LA SYNTAXE 3 (FLUX D UN VECTEUR) 41 : * IPFLEQ (S) POINTEUR SUR UN SEGMENT MELVAL CONTENANT LES 42 : * FLUX NODAUX EQUIVALENTS 43 : * 44 : INTEGER NUMPOI 45 : * 46 : * VARIABLES: 47 : * ---------- 48 : * 49 : * XE(3,NBPTEL) = CORDONNEES DES ELEMENTS DANS LE REPERE GLOBAL 50 : * FACE = FACE DE L'ELEMENT 51 : * COSDIR = COSINUS DIRECTEUR DE L'INCLINAISON DU FLUX 52 : * 53 : SEGMENT,MMAT1 54 : REAL*8 XE(3,NBPTEL),SHP(6,NBPTEL) 55 : ENDSEGMENT 56 : * 57 : * CONSTANTES: 58 : * ----------- 59 : * 60 : PARAMETER ( O1=1.D0 ) 61 : PARAMETER ( O2=2.D0 ) 62 : * 63 : * AUTEUR, DATE DE CREATION: 64 : * ------------------------- 65 : * 66 : * DENIS ROBERT,LE 2 FEVRIER 1988. 67 : * 68 : * LANGAGE: 69 : * -------- 70 : * 71 : * ESOPE + FORTRAN77 72 : * 73 : ************************************************************************ 74 : * 75 : * ON RECUPERE LES VALEURS NODALES DU FLUX 76 : * 77 : IF(NUMPOI.NE.1) THEN 78 : MELVA1=IPFLOD 79 : SEGACT,MELVA1 80 : NBPTE1=MELVA1.VELCHE(/1) 81 : NEL1=MELVA1.VELCHE(/2) 82 : ELSE 83 : MCHAM1=IPFLOD 84 : SEGACT,MCHAM1 85 : MELVA1=MCHAM1.IELVAL(1) 86 : MELVA2=MCHAM1.IELVAL(2) 87 : MELVA3=MCHAM1.IELVAL(3) 88 : MELVA4=MCHAM1.IELVAL(4) 89 : SEGACT MELVA1,MELVA2,MELVA3,MELVA4 90 : NBPTE1 = MELVA1.VELCHE(/1) 91 : NEL1 = MELVA1.VELCHE(/2) 92 : SEGDES MCHAM1 93 : ENDIF 94 : * 95 : * ON RECUPERE LES CARACTERISTIQUES D'INTEGRATION DES FACES 96 : * 97 : MINTE=IPINTE 98 : SEGACT,MINTE 99 : NBPGAU=POIGAU(/1) 100 : * 101 : * ON RECUPERE UN DES MAILLAGES ELEMENTAIRES DE L'ENVELOPPE 102 : * 103 : MELEME=IPGEOM 104 : SEGACT,MELEME 105 : NBPTEL=NUM(/1) 106 : NEL=NUM(/2) 107 : * 108 : * MELVAL QUI CONTIENDRA LES FLUX NODAUX EQUIVALENTS 109 : * 110 : N1PTEL=NBPTEL 111 : N1EL=NEL 112 : N2PTEL=0 113 : N2EL=0 114 : SEGINI,MELVAL 115 : IPFLEQ=MELVAL 116 : SEGINI,MMAT1 117 : * 118 : * CAS D'UN FLUX INCLINE PAR RAPPORT A LA NORMALE A LA FACE 119 : * 120 : COSDIR=O1 121 : IF ((NUMPOI.NE.-1).AND.(NUMPOI.NE.1)) THEN 122 : * 123 : * ON RECUPERE LES COORDONNEES DU VECTEUR DIRECTION 124 : * 124 : CALL EXCOO1(NUMPOI,XDIR,YDIR,ZDIR,DENS) 125 : * 126 : * ON PROJETTE LA DIRECTION DANS LE PLAN (OX|OY) 127 : * 128 : DNORME=SQRT(XDIR**2+YDIR**2) 129 : IF (DNORME.LT.XPETIT) THEN 130 : * 131 : * ERREUR DANS LA DONNEE DE LA DIRECTION DU FLUX 132 : * 132 : CALL ERREUR(417) 133 : RETURN 134 : ENDIF 135 : XDIRNO=XDIR/DNORME 136 : YDIRNO=YDIR/DNORME 137 : COSDIR=O2 138 : ENDIF 139 : * 140 : * BOUCLE SUR LES ELEMENTS 141 : * 142 : DO 10 IEL=1,NEL 143 : * 144 : * ON CHERCHE LES COORDONNEES DES ELEMENTS DANS LE REPERE GLOBAL 145 : * 145 : CALL DOXE(XCOOR,IDIM,NBPTEL,NUM,IEL,XE) 146 : 147 : * 148 : * BOUCLES SUR LES POINTS DE GAUSS 149 : * 150 : DO 40 IGAU=1,NBPGAU 151 : AXIS=O1 152 : * 153 : * CONTRIBUTION DE LA FACE AU POINT DE GAUSS 154 : * 155 : DLX=XZERO 156 : DLY=XZERO 157 : DO 30 INOE=1,NBPTEL 158 : DLX=DLX+SHPTOT(2,INOE,IGAU)*XE(1,INOE) 159 : DLY=DLY+SHPTOT(2,INOE,IGAU)*XE(2,INOE) 160 : 30 CONTINUE 161 : * END DO 162 : FACE=SQRT(DLX**2+DLY**2) 163 : * 164 : * SI ON A UN FLUX INCLINE,CALCUL DU COSINUS DIRECTEUR 165 : DIRNOR=COSDIR 166 : IF ((COSDIR.NE.O1).AND.(NUMPOI.NE.1)) THEN 167 : DIRNOR=ABS(YDIRNO*(DLX/FACE)-XDIRNO*(DLY/FACE)) 168 : ENDIF 169 : IF (IFOMOD.EQ.0) THEN 170 : * 171 : * CAS DES ELEMENTS AXISYMETRIQUES 172 : * 173 : DO 41 NP=1,NBPTEL 174 : SHP(1,NP)=SHPTOT(1,NP,IGAU) 175 : SHP(2,NP)=SHPTOT(2,NP,IGAU) 176 : SHP(3,NP)=SHPTOT(3,NP,IGAU) 177 : 41 CONTINUE 178 : * END DO 178 : CALL DISTRR(XE,SHP,NBPTEL,RR) 179 : AXIS=O2*XPI*RR 180 : ENDIF 181 : IEMIN = MIN(IEL,NEL1) 182 : IGMN = MIN(IGAU,NBPTE1) 183 : 184 : IF (NUMPOI.EQ.1) THEN 185 : C on oriente la vraie normale suivant la pseudo 186 : S1 = MELVA3.VELCHE(IGMN,IEMIN) 187 : S2 = MELVA4.VELCHE(IGMN,IEMIN) 188 : amul = 1.D0 189 : ps = -S1*dly+S2*dlx 190 : if(ps.lt.0) amul = -1.D0 191 : dlx= dlx*amul 192 : dly= dly*amul 193 : T1 = POIGAU(IGAU)*(MELVA2.VELCHE(IGMN,IEMIN)*DLX 194 : 1 -MELVA1.VELCHE(IGMN,IEMIN)*DLY)*AXIS 195 : 196 : ELSE 197 : T1 =POIGAU(IGAU)*AXIS*DIRNOR*FACE* 198 : 1 MELVA1.VELCHE(IGMN,IEMIN) 199 : ENDIF 200 : DO 50 J=1,NBPTEL 201 : VELCHE(J,IEL) = VELCHE(J,IEL) + SHPTOT(1,J,IGAU)*T1 202 : 50 CONTINUE 203 : 204 : * END DO 205 : 40 CONTINUE 206 : * END DO 207 : 208 : * END DO 209 : 10 CONTINUE 210 : * END DO 211 : SEGSUP,MMAT1 212 : SEGDES,MELEME,MELVA1,MINTE 213 : SEGDES,MELVAL 214 : IF(NUMPOI.EQ.1) THEN 215 : SEGDES MELVA2,MELVA3,MELVA4 216 : ENDIF 217 : * 218 : END 219 : 220 : 221 : 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 :
© Cast3M 2003 - All rights reserved.
Disclaimer