Download pf500.eso

Back to the list

   1 : C PF500     SOURCE    PV        09/03/12    21:30:05     6325           
   2 :       SUBROUTINE PF500(IZDD,IPHI,IZSS,IZGG,IPHR,DT,MTABD,NUMCOM)
   3 : C************************************************************************
   4 : C
   5 : C Pointeurs :
   6 : C ---------
   7 : C    IZDD  : Diagonale
   8 : C    IPHI  : Resultat a l'instant precedent
   9 : C    IZSS  : densité de source
  10 : C    IZGG  : Champ point de type FACE representant les flux(l'increment)
  11 : C    IPHR  : Resultat
  12 : C    MTABD : table du maillage
  13 : C
  14 : C    MELEMA : Connectivites elements/faces 'ELTFA'
  15 : C    MCHELM : Sens des normales
  16 : C    MELEMF : Maillage de type face
  17 : C
  18 : C Variables :
  19 : C ---------
  20 : C    DT     : Pas de Temps
  21 : C    NUMCOM : Numero de Composante
  22 : C
  23 : C************************************************************************
  24 : C
  25 : C Objet : Fait le bilan par element pour un schema volume fini
  26 : C -----
  27 : C                   IPHR=IPHI + DT*(SOURCE) - DT*(FLUX)/DIAGONALE
  28 : C  ou encore        IPHR=IPHI + DT*IZSS - DT*IZGG/IZDD
  29 : C
  30 : C************************************************************************  
  31 : C  Modifications pour prendre en compte les champs a plusieurs
  32 : C  composantes et rajout de Messages d'erreurs : P.G   Aout 96
  33 : C************************************************************************
  34 : C
  35 :       IMPLICIT INTEGER(I-N)
  36 :       IMPLICIT REAL*8 (A-H,O-Z)
  37 : C
  38 : -INC CCOPTIO
  39 : -INC SMLENTI
  40 : C
  41 : -INC SMTABLE
  42 :       POINTEUR MTABD.MTABLE
  43 : C
  44 : -INC SMELEME
  45 :       POINTEUR MELEMA.MELEME,MELEMC.MELEME,MELEMF.MELEME
  46 : C
  47 : -INC SMCHPOI
  48 :       POINTEUR IPHI.MPOVAL,IPHR.MPOVAL
  49 :       POINTEUR IZDD.MPOVAL,IZGG.MPOVAL,IZSS.MPOVAL
  50 : C
  51 : -INC SMCHAML
  52 : C
  53 :       REAL*8 PHI
  54 : C
  55 : C
  56 : C - Lecture du tableau des sens des normales : chamelem
  57 : C   ---------------------------------------------------
  57 :       CALL LEKTAB(MTABD,'XXNORMAE',MCHELM)
  58 :       IF(MCHELM.EQ.0)THEN
  59 :               MOTERR(1:40)='Pas de CHAMELEM des Normales            '
  59 :               CALL ERREUR(-301)
  60 :       GO TO 99
  61 :       ENDIF
  62 :       SEGACT MCHELM
  63 : C
  64 : C - Lecture des connexions Faces/Elements
  65 : C   -------------------------------------
  65 :       CALL LEKTAB(MTABD,'ELTFA',MELEMA)
  66 :       IF(MELEMA.EQ.0)THEN
  67 :               MOTERR(1:40)='Pas de Meleme connexions Faces/Elements '
  67 :               CALL ERREUR(-301)
  68 :       GO TO 99
  69 :       ENDIF
  70 :       SEGACT MELEMA
  71 : C
  71 :       CALL LEKTAB(MTABD,'FACE',MELEMF)
  72 :       IF(MELEMF.EQ.0)THEN
  73 :               MOTERR(1:40)='Pas de Meleme des FACES                 '
  73 :               CALL ERREUR(-301)
  74 :       GO TO 99
  75 :       ENDIF
  76 :       SEGACT MELEMF
  77 : C
  78 : C
  79 :       NBSOUS = MELEMA.LISOUS(/1)
  80 : C
  81 :       IF(NBSOUS.EQ.0)NBSOUS = 1
  82 :       II = 0
  83 : C
  84 :       NBF = MELEMF.NUM(/2)
  85 :       MELEMC = MELEMF
  85 :       CALL KRIPAD(MELEMC,MLENTI)
  85 : C     CALL RSETXI(LECT,MELEMF.NUM,NBF)
  86 :       SEGACT MELEMC
  87 : C
  88 : C - Boucle sur les sous Objets
  89 : C   ==========================
  90 :       DO 1 L=1,NBSOUS
  91 :       IPT1 = MELEMA
  92 :       IF(NBSOUS.NE.1)IPT1 = MELEMA.LISOUS(L)
  93 :       SEGACT IPT1
  94 :       NP = IPT1.NUM(/1)
  95 :       NEL = IPT1.NUM(/2)
  96 :       MCHAML = ICHAML(L)
  97 :       SEGACT MCHAML
  98 :       MELVAL = IELVAL(1)
  99 :       SEGACT MELVAL
 100 : C
 101 : C - Cas ou il n'y a pas de terme Source
 102 : C   -----------------------------------
 103 : C
 104 :       IF(IZSS.EQ.0)THEN
 105 : C
 106 :       DO 10 K=1,NEL
 107 :       II = II+1
 108 :       PHI = 0.D0
 109 : C
 110 : C                     bilan sur chaque element
 111 : C                     -----------------------
 112 :       DO 11 I=1,NP
 113 :          NF = IPT1.NUM(I,K)
 114 :          NF = LECT(NF)
 115 :          PHI = PHI + IZGG.VPOCHA(nf,numcom)*MELVAL.VELCHE(I,K)
 116 :  11   CONTINUE
 117 : C
 118 :       IPHR.VPOCHA(II,numcom) = IPHI.VPOCHA(II,numcom)
 119 :      &                   -DT*PHI/IZDD.VPOCHA(II,numcom)
 120 : C
 121 :  10   CONTINUE
 122 : C
 123 :       ELSE
 124 : C
 125 : C - Cas ou il n'y a un terme Source
 126 : C   -------------------------------
 127 : C
 128 :       DO 20 K=1,NEL
 129 :       II = II+1
 130 :       PHI = 0.D0
 131 : C
 132 : C                     bilan sur chaque element
 133 : C                     -----------------------
 134 :       DO 21 I=1,NP
 135 :          NF = IPT1.NUM(I,K)
 136 :          NF = LECT(NF)
 137 :          PHI = PHI + IZGG.VPOCHA(nf,numcom)*MELVAL.VELCHE(I,K)
 138 :  21   CONTINUE
 139 : C
 140 :       IPHR.VPOCHA(II,numcom)= IPHI.VPOCHA(II,numcom)
 141 :      1                 -DT*PHI/IZDD.VPOCHA(II,numcom)
 142 :      2                 +DT*IZSS.VPOCHA(II,numcom)
 143 : C
 144 :  20   CONTINUE
 145 :       ENDIF
 146 :       SEGDES IPT1,MELVAL,MCHAML
 147 :  1    CONTINUE
 148 : C
 149 : C - Fin de Boucle sur les Sous-Objets
 150 : C   =================================
 151 : C
 152 :       SEGSUP MLENTI
 153 :       SEGDES MELEMC,MELEMA,MELEMF,MCHELM
 154 : C
 155 :       RETURN
 156 : C
 157 :  99   CONTINUE
 158 :       MOTERR(1:40)='     Interruption anormale de PF500     '
 158 :       CALL ERREUR(-301)
 159 : C
 160 :       RETURN
 161 :       END
 162 :  
 163 :  
 164 :  
 165 :  

© Cast3M 2003 - All rights reserved.
Disclaimer