Download hvit.eso

Back to the list

   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