Download thcapa1.eso

Back to the list

   1 : C THCAPA1   SOURCE    FANDEUR   11/07/19    21:17:42     7042           
   2 : 
   3 : C=======================================================================
   4 : C=                           T H C A P A 1                             =
   5 : C=                           -------------                             =
   6 : C=                      (CAPA1 dans le cas de la thermique)            =
   7 : C=  Fonction :                                                         =
   8 : C=  ----------                                                         =
   9 : C=  Calcul de la matrice de CAPACITE en couplage THERMOHYDRIQUE        =
  10 : C=                 (type RIGIDITE)                                     =
  11 : C=                                                                     =
  12 : C=  Parametres :  (E)=Entree   (S)=Sortie                              =
  13 : C=  ------------                                                       =
  14 : C=   IPMODE   (E)   Segment IMODEL pour un modele elementaire  (ACTIF) =
  15 : C=   IPCHEL   (E)   Segment MCHELM de CARACTERISTIQUES         (?)     =
  16 : C=   ISUPCA   (E)   Support du champ de CARACTERISTIQUES               =
  17 : C=   IPRIGI  (E/S)  Segment MRIGID : CAPACITE                  (ACTIF) =
  18 : C=                                                                     =
  19 : C=   Zakaria HABIBI le 30 juin 2008.                                   =
  20 : C=======================================================================
  21 : 
  22 :       SUBROUTINE THCAPA1 (IPMODE,IPCHEL,ISUPCA, IPRIGI)
  23 : 
  24 :       IMPLICIT INTEGER(I-N)
  25 :       IMPLICIT REAL*8(A-H,O-Z)
  26 : 
  27 : -INC CCOPTIO
  28 : 
  29 : -INC SMELEME
  30 : -INC SMINTE
  31 : -INC SMMODEL
  32 : -INC SMRIGID
  33 : 
  34 :       INTEGER OOOVAL
  35 : 
  36 :       SEGMENT NOTYPE
  37 :         CHARACTER*16 TYPE(NBTYPE)
  38 :       ENDSEGMENT
  39 : 
  40 :       SEGMENT MPTVAL
  41 :         INTEGER IPOS(NS),NSOF(NS), IVAL(NCOSOU)
  42 :         CHARACTER*16 TYVAL(NCOSOU)
  43 :       ENDSEGMENT
  44 : 
  45 :       CHARACTER*8 CMATE
  46 :       CHARACTER*(LCONMO) CONM
  47 : 
  48 :       PARAMETER ( NINF=3 )
  49 :       DIMENSION INFOS(NINF)
  50 : 
  51 : C=  LEFMAS   Liste des numeros d'elements finis MASSIFs supportant la  =
  52 : C            la formulation thermohydrique                             =
  53 : C=  NEFMAS   Longueur de cette liste                                   =
  54 :       PARAMETER ( NEFMAS = 14 )
  55 :       DIMENSION LEFMAS(NEFMAS)
  56 : 
  57 : C ==========
  58 : C  Elements        TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10
  59 : C  MASSIFs         PYR5 PY13 T1D2 T1D3
  60 : C ==========
  61 :       DATA LEFMAS /   4,   6,   8,  10,  14,  15,  16,  17,  23,  24,
  62 :      &               25,  26, 191, 192 /
  63 : 
  64 :       IPINTE = 0
  65 :       IPINT1 = 0
  66 :       MOMATE = 0
  67 :       MOTYPE = 0
  68 : 
  69 : C- Matrice de capacite 
  70 :       MRIGID = IPRIGI
  71 : c*      SEGACT,MRIGID
  72 :       NRIGE0 = IRIGEL(/2)
  73 : 
  74 : C- Recuperation du sous-modele et de la zone elementaire associee
  75 :       IMODEL = IPMODE
  76 : c*      SEGACT,IMODEL
  77 : 
  78 :       NEF = NEFMOD
  79 : C Test sur l'element fini
  80 :       IMAS = 0
  80 :       CALL PLACE2(LEFMAS,NEFMAS,IMAS,NEF)
  81 : C ERREUR : Element fini non implemente actuellement
  82 :       IF (NEF.EQ.22 .OR. IMAS.EQ.0) THEN
  82 :         CALL ERREUR(19)
  83 :         GOTO 9991
  84 :       ENDIF
  85 : C
  86 : C- Recuperation d'informations sur le maillage elementaire
  87 :       IPT1 = IMAMOD
  88 :       SEGACT,IPT1
  89 :       NBNOE1 = IPT1.NUM(/1)
  90 :       NBELE1 = IPT1.NUM(/2)
  91 : *
  92 : C- Quelques informations sur le modele
  93 :       CONM  = CONMOD
  94 :       CMATE = CMATEE
  95 :       MATE  = IMATEE
  96 : 
  97 :       IRET = 1
  97 :       CALL IDENT(IPT1,CONM,IPCHEL,0, INFOS,IRET)
  98 :       IF (IRET.EQ.0) GOTO 9990
  99 : 
 100 : C- Recuperation d'informations sur l'element fini
 100 :       CALL TSHAPE(NEF,'GAUSS',IPINTE)
 101 :       IF (IERR.NE.0) GOTO 9990
 102 :       MINTE = IPINTE
 103 :       SEGACT,MINTE
 104 : 
 105 :       IF (MATE.EQ.2 .OR. MATE.EQ.3) THEN
 106 :         NLG = NUMGEO(NEF)
 106 :         CALL RESHPT(1,NBNOE1,NLG,NEF,0,IPINT1,IOK)
 107 :         IF (IOK.EQ.0) GOTO 9990
 108 :         MINTE1 = IPINT1
 109 :         SEGACT,MINTE1
 110 :       ENDIF
 111 : 
 112 : C- Recuperation des caracteristiques materielles
 113 :       nomid = LNOMID(6)
 114 :       SEGACT,nomid
 115 :       NMATO = lesobl(/2)
 116 :       NMATF = lesfac(/2)
 117 :       NMATT = NMATO + NMATF
 118 :       MOMATE = nomid
 119 : 
 120 :       nbtype = 1
 121 :       SEGINI,notype
 122 :       TYPE(1) = 'REAL*8'
 123 :       MOTYPE = notype
 124 : 
 125 : C- Definition du descripteur IDESCR
 126 :       IDESCR = 0
 126 :       CALL THCOND2(NBNOE1,IDESCR)
 127 :       descr = IDESCR
 128 :       SEGACT,descr
 129 :       NLIGRD = lisdua(/2)
 130 :       NLIGRP = lisinc(/2)
 131 :       SEGDES,descr
 132 :       LRE = NLIGRD
 133 : 
 134 : C- Partionnement si necessaire de la matrice thermohydrique
 135 : C- determinant ainsi le nombre d'objets elementaires de MRIGID
 136 :       LTRK = oooval(1,4)
 137 :       IF (LTRK.EQ.0) LTRK = oooval(1,1)
 138 : * Ajout a la taille en mots de la matrice des infos du segment
 139 :       LSEG = LRE*LRE*NBELE1 + 16
 140 :       NBLPRT = (LSEG-1)/LTRK + 1
 141 :       NBLMAX = (NBELE1-1)/NBLPRT + 1
 142 :       NBLPRT = (NBELE1-1)/NBLMAX + 1
 143 : *      write(ioimp,*) ' thcond1 : nblprt nblmax = ',nblprt,nblmax,nbele1
 144 : 
 145 : C Ajout de la matrice de CAPACITE THERMOHYDRIQUE a la matrice globale
 146 : C ===================================================================
 147 :       NRIGEL = NRIGE0 + NBLPRT
 148 :       SEGADJ,MRIGID
 149 : 
 150 :       descr  = IDESCR
 151 :       meleme = IPT1
 152 :       nbnn   = NBNOE1
 153 :       nbelem = NBELE1
 154 :       nbsous = 0
 155 :       nbref  = 0
 156 : 
 157 : C  Boucle sur les PARTITIONS elementaires de la matrice
 158 : C=======================================================
 159 :       DO irige = 1, NBLPRT
 160 : 
 161 :         IF (NBLPRT.GT.1) THEN
 162 : C  Partitionnement du maillage support de la matrice elementaire
 163 :           SEGACT,IPT1
 164 :           ielem = (irige-1)*NBLMAX
 165 :           nbelem = MIN(NBLMAX,NBELE1-ielem)
 166 : *          write(ioimp,*) ' creation segment ',nbnn,nbelem
 167 :           SEGINI,meleme
 168 :           itypel = IPT1.itypel
 169 :           DO ielt = 1, nbelem
 170 :             jelt = ielt + ielem
 171 :             DO inoe = 1, nbnn
 172 :               num(inoe,ielt) = IPT1.NUM(inoe,jelt)
 173 :             ENDDO
 174 :             icolor(ielt) = IPT1.ICOLOR(jelt)
 175 :           ENDDO
 176 : C  Recopie du descripteur
 177 :           des1 = IDESCR
 178 :           SEGINI,descr=des1
 179 :           SEGDES,descr
 180 :         ENDIF
 181 :         ipmail = meleme
 182 :         ipdesc = descr
 183 : 
 184 : C  Initialisation de la matrice de rigidite elementaire (xmatri)
 185 :         NELRIG = nbelem
 186 :         SEGINI,xmatri
 187 :         ipmatr = xmatri
 188 : 
 189 :         IVAMAT = 0
 189 :         CALL KOMCHA(IPCHEL,ipmail,CONM,MOMATE,MOTYPE,1,INFOS,3,IVAMAT)
 190 :         IF (IERR.NE.0) GOTO 9995
 191 :         IF (ISUPCA.EQ.1) THEN
 191 :           CALL VALCHE(IVAMAT,NMATT,IPINTE,0)
 192 :           IF (IERR.NE.0) THEN
 193 :             ISUPCA = 0
 194 :             GOTO 9995
 195 :           ENDIF
 196 :         ENDIF
 197 : 
 198 : C- Elements MASSIFs a integration NUMERIQUE
 199 :         IF (IMAS.NE.0) THEN
 199 :           CALL THNUMAC2(NEF,ipmail,IPINTE,IPINT1,IVAMAT,NMATT,
 200 :      &                  ipmatr,LRE)
 201 : C- Element fini non implemente
 202 :         ELSE
 202 :           CALL ERREUR(19)
 203 :         ENDIF
 204 : 
 205 : C- Un peu de menage
 206 :  9995   CONTINUE
 207 :         IF (ISUPCA.EQ.1 .OR. NBLPRT.GT.1) THEN
 207 :           CALL DTMVAL(IVAMAT,3)
 208 :         ELSE
 208 :           CALL DTMVAL(IVAMAT,1)
 209 :         ENDIF
 210 :         IF (IERR.NE.0) GOTO 9990
 211 : 
 212 :         xmatri = ipmatr
 213 :         SEGDES,xmatri
 214 :         IF (NBLPRT.GT.1) THEN
 215 :           meleme = ipmail
 216 :           SEGDES,meleme
 217 :         ENDIF
 218 : 
 219 : C- Remplissage de la matrice de CAPACITE
 220 :         jrige = NRIGE0 + irige
 221 :         COERIG(jrige)   = 1.
 222 :         IRIGEL(1,jrige) = ipmail
 223 :         IRIGEL(2,jrige) = 0
 224 :         IRIGEL(3,jrige) = ipdesc
 225 :         IRIGEL(4,jrige) = ipmatr
 226 :         IRIGEL(5,jrige) = NIFOUR
 227 :         IRIGEL(6,jrige) = 0
 228 :         IRIGEL(7,jrige) = 2
 229 :         IRIGEL(8,jrige) = 0
 230 : 
 231 :       ENDDO
 232 : 
 233 :       IPRIGI = MRIGID
 234 : 
 235 : C FIN DU TRAITEMENT : DESACTIVATION/DESTRUCTION DE SEGMENTS
 236 : C =========================================================
 237 :  9990 CONTINUE
 238 :       SEGDES,IPT1
 239 :       IF (IPINTE.GT.0) THEN
 240 :         MINTE = IPINTE
 241 :         SEGDES,MINTE
 242 :       ENDIF
 243 :       IF (IPINT1.GT.0) THEN
 244 :         MINTE = IPINT1
 245 :         SEGDES,MINTE
 246 :       ENDIF
 247 :       IF (MOMATE.NE.0) THEN
 248 :         nomid = MOMATE
 249 :         SEGDES,nomid
 250 :       ENDIF
 251 :       IF (MOTYPE.NE.0) THEN
 252 :         notype = MOTYPE
 253 :         SEGSUP,notype
 254 :       ENDIF
 255 :  9991 CONTINUE
 256 : c*      SEGDES,IMODEL
 257 : c*      SEGDES,MRIGID
 258 : 
 259 :       RETURN
 260 :       END
 261 : 
 262 :  

© Cast3M 2003 - All rights reserved.
Disclaimer