Download divu1.eso

Back to the list

   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