1 : C HVIT SOURCE CHAT 11/03/16 21:25:02 6902 2 : SUBROUTINE HVIT 3 : C----------------------------------------------------------------------- 4 : C Calcul de la vitesse aux centres des elements dans le cas d'une 5 : C formulation DARCY en elements finis mixtes hybrides. 6 : C 7 : C On obtient la vitesse au centre des elements en exprimant 8 : C l'interpolation mixte hybride aux points centres. 9 : C 10 : C On prend en compte l'orientation de la normale par l'intermediaire 11 : C du MCHAML des orientations. 12 : C 13 : C--------------------------- 14 : C Phrase d'appel (GIBIANE) : 15 : C--------------------------- 16 : C 17 : C CHP1 = HVIT MODL1 CHP2 18 : C 19 : C------------------------ 20 : C Operandes et resultat : 21 : C------------------------ 22 : C 23 : C CHP1 : CHAMPOINT resultat contenant la vitesse au centre. 24 : C MODL1 : Objet modele specifiant la formulation 25 : C CHP2 : CHAMPOINT contenant le debit porte par la normale a la face 26 : C 27 : C----------------------------------------------------------------------- 28 : C 29 : C Langage : ESOPE + FORTRAN77 30 : C 31 : C Auteurs : F.DABBENE 09/93 32 : C Modif 04/99 (F.Auriol) les informations de la table DOMAINE sont 33 : C dans le MODELE 34 : C 35 : C----------------------------------------------------------------------- 36 : IMPLICIT INTEGER(I-N) 37 : IMPLICIT REAL*8 (A-H,O-Z) 38 : * 39 : -INC CCOPTIO 40 : -INC SMCHAML 41 : -INC SMCHPOI 42 : -INC SMELEME 43 : -INC SMMODEL 44 : -INC SMTABLE 45 : * 46 : SEGMENT IPMAHY 47 : INTEGER MAHYBR(NSOUS) 48 : ENDSEGMENT 49 : * 50 : REAL*8 XVALIN,XVALRE 51 : LOGICAL LOGRE,LOGIN 52 : CHARACTER*4 NOCOM1,NOMTOT(1) 53 : CHARACTER*8 TAPIND,TYPOBJ,CHARIN,CHARRE,LETYPE 54 : * 55 : * Initialisations 56 : * 57 : IVALIN = 0 58 : XVALIN = 0.D0 59 : LOGIN = .TRUE. 60 : IOBIN = 0 61 : TAPIND = 'MOT ' 62 : * 63 : * Lecture du MMODEL 64 : * 64 : CALL LIROBJ('MMODEL',IPMODE,1,IRET1) 65 : IF (IERR.NE.0) RETURN 66 : MMODEL = IPMODE 67 : * 68 : * Lecture de la TABLE domaine 69 : * 70 : IPTABL = 0 70 : C CALL LIRTAB('DOMAINE',IPTABL,1,IRET) 70 : CALL LEKMOD(MMODEL,IPTABL,IRET) 71 : IF (IERR.NE.0) RETURN 72 : CHARIN = 'MAILLAGE' 73 : TYPOBJ = 'MAILLAGE' 73 : CALL LEKTAB(IPTABL,CHARIN,IOBRE) 74 : IF (IERR.NE.0) RETURN 75 : IPGEOM = IOBRE 75 : CALL LEKTAB(IPTABL,'ELTFA',IOBRE) 76 : IF (IERR.NE.0) RETURN 77 : IELTFA = IOBRE 77 : CALL LEKTAB(IPTABL,'CENTRE',IOBRE) 78 : IF (IERR.NE.0) RETURN 79 : IPGEOC = IOBRE 79 : CALL LEKTAB(IPTABL,'FACE',IOBRE) 80 : IF (IERR.NE.0) RETURN 81 : IPFACE = IOBRE 82 : * 83 : * Lecture du CHPO FLUX 84 : * 84 : CALL LIROBJ('CHPOINT',ICHP1,1,IRET1) 85 : IF (IERR.NE.0) GOTO 100 86 : * 87 : * Lecture du CHAMELEM des orientations 88 : * 88 : * CALL LIROBJ('MCHAML',IPCHEL,1,IRET1) 88 : CALL LEKTAB(IPTABL,'XXNORMAE',IPCHEL) 89 : IF (IERR.NE.0) RETURN 90 : MCHELM = IPCHEL 91 : * 92 : * Test du CHPO FLUX 93 : * 94 : INDIC = 1 95 : NBCOMP = 1 96 : NOMTOT(1) = 'FLUX' 96 : CALL QUEPOI(ICHP1,IPFACE,INDIC,NBCOMP,NOMTOT) 97 : IF (IERR.NE.0) RETURN 98 : * 99 : * Test de la formulation 100 : * 101 : SEGACT MMODEL 102 : NSOUS = KMODEL(/1) 103 : SEGINI IPMAHY 104 : IDARCY = 0 105 : IPT1=IPGEOM 106 : IPT2=IPGEOM 107 : DO 10 ISOUS=1,NSOUS 108 : IF(NSOUS.GT.1) THEN 109 : SEGACT IPT2 110 : IPT1= IPT2.LISOUS(ISOUS) 111 : SEGDES IPT2 112 : ENDIF 113 : IMODEL = KMODEL(ISOUS) 114 : SEGACT IMODEL 115 : LETYPE = FORMOD(1) 116 : IF (LETYPE.EQ.'DARCY') THEN 117 : IDARCY = IDARCY + 1 118 : MAHYBR(ISOUS) = IPT1 119 : ENDIF 120 : SEGDES IMODEL 121 : 10 CONTINUE 122 : SEGDES MMODEL 123 : IF (IDARCY.EQ.0) THEN 124 : MOTERR = LETYPE 124 : CALL ERREUR(193) 125 : GOTO 100 126 : ENDIF 127 : * 128 : * Recuperation des pointeurs ELTFA pour les zones ou DARCY est defini 129 : * 130 : MELEME = IELTFA 131 : SEGACT MELEME 132 : LZONES = LISOUS(/1) 133 : IF (LZONES.EQ.0) LZONES = 1 134 : IPT1 = IPGEOM 135 : SEGACT IPT1 136 : DO 30 ISOUS=1,NSOUS 137 : IMAMEL = MAHYBR(ISOUS) 138 : IF (IMAMEL.NE.0) THEN 139 : DO 20 ISZ=1,LZONES 140 : IF (LZONES.EQ.1) THEN 141 : IPT2 = IPT1 142 : IPT3 = MELEME 143 : ELSE 144 : IPT2 = IPT1.LISOUS(ISZ) 145 : IPT3 = LISOUS(ISZ) 146 : ENDIF 147 : IF (IPT2.EQ.IMAMEL) THEN 148 : MAHYBR(ISOUS) = IPT3 149 : GOTO 30 150 : ENDIF 151 : 20 CONTINUE 152 : IF (IMAMEL.EQ.MAHYBR(ISOUS)) THEN 153 : MOTERR(1:8) = ' MODELE ' 154 : MOTERR(9:16)= ' ELTFA ' 155 : INTERR(1) = ISOUS 155 : CALL ERREUR(698) 156 : SEGDES IPT1 157 : SEGDES MELEME 158 : GOTO 100 159 : ENDIF 160 : ENDIF 161 : 30 CONTINUE 162 : SEGDES IPT1 163 : SEGDES MELEME 164 : * 165 : * Test du CHAMELEM des orientations 166 : * 167 : SEGACT MCHELM 168 : DO 40 ISOUS=1,NSOUS 169 : IF (MAHYBR(ISOUS).NE.0) THEN 170 : IF (MAHYBR(ISOUS).NE.IMACHE(ISOUS)) THEN 171 : MOTERR(1:8) = ' ORIENT ' 172 : MOTERR(9:16)= ' ELTFA ' 173 : INTERR(1) = ISOUS 173 : CALL ERREUR(698) 174 : SEGDES MCHELM 175 : GOTO 100 176 : ENDIF 177 : ENDIF 178 : 40 CONTINUE 179 : SEGDES MCHELM 180 : * 181 : * Construction du CHAMPOINT de vitesse au centre des elements 182 : * 183 : SEGDES IPMAHY 183 : CALL HVIT1(IPMODE,IPMAHY,IPGEOC,ICHP1,IPCHEL,IPGEOM,IRET) 183 : CALL ECROBJ('CHPOINT',IRET) 184 : * 185 : * Ménage 186 : * 187 : 100 CONTINUE 188 : SEGSUP IPMAHY 189 : C 190 : RETURN 191 : END 192 : 193 : 194 : 195 : 196 : 197 : 198 : 199 :
© Cast3M 2003 - All rights reserved.
Disclaimer