Download wkuma0.eso

Back to the list

   1 : C WKUMA0    SOURCE    FANDEUR   12/07/18    21:15:50     7435           
   2 : 
   3 :       SUBROUTINE WKUMA0 ( iqmod, wrk52, wkumat, IFOURB )
   4 : 
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8(A-H,O-Z)
   7 : 
   8 : C-----------------------------------------------------------------------
   9 : C
  10 : C     DESCRIPTION FONCTIONNELLE :
  11 : C     -------------------------
  12 : C
  13 : C     Preparation des donnees de l'integrateur de la loi de comportement
  14 : C     externe UMAT.
  15 : C
  16 : C     WKUMA0 prepare les donnees independantes de l'element et du point
  17 : C     d'integration ; de ce fait, WKUMA0 est appelee par COML6 avant le
  18 : C     demarrage des boucles imbriquees sur les elements de la sous-zone
  19 : C     et sur les points de Gauss de l'element.
  20 : C
  21 : C     La plupart des donnees concernees sont des entrees non actives ou
  22 : C     des sorties non exploitees dans le cas d'une adherence a CAST3M.
  23 : C
  24 : C
  25 : C     INTERFACE :
  26 : C     ---------
  27 : C
  28 : C     IN     : iqmod  : pointeur actif sur le modele elementaire
  29 : C     IN     : wrk52  : pointeur actif sur le segment de travail WRK52
  30 : C                       de l'objet DECHE
  31 : C     IN     : wkumat : pointeur actif sur le segment de travail
  32 : C                       WKUMAT contenant les donnees a preparer
  33 : C     IN     : IFOURB : type de calcul CAST3M
  34 : C                =  2 : tridimensionnel (3D)
  35 : C                =  0 : axisymetrie (2D)
  36 : C                = -1 : deformations planes (2D)
  37 : C                = -2 : contraintes planes (2D)
  38 : C                = -3 : deformations planes generalisees (2D)
  39 : C                =  3 a 11 : unidimensionnel plan (massif 1D)
  40 : C                = 12 a 14 : unidimensionnel axisymetrique (massif 1D)
  41 : C
  42 : C
  43 : C     Les operations effectuees par WKUMA0 consistent a initialiser
  44 : C     certains elements du segment de travail WKUMAT.
  45 : C     Sont concernees les donnees suivantes :
  46 : C
  47 : C              Entrees/sorties de la routines UMAT :
  48 : C              -----------------------------------
  49 : C
  50 : C              SSE    : REAL*8, energie de deformation elastique
  51 : C              SPD    : REAL*8, dissipation plastique
  52 : C              SCD    : REAL*8, dissipation visqueuse
  53 : C                       Entrees/sorties facultatives de la routine UMAT,
  54 : C                       non exploitees par CAST3M pour l'instant
  55 : C                       Initialisation arbitraire
  56 : C
  57 : C
  58 : C              RPL    : REAL*8, puissance calorifique volumique degagee
  59 : C                       par le travail mecanique, a t0+dt
  60 : C              DRPLDT : REAL*8, derivee de RPL par rapport a la
  61 : C                       temperature, a t0+dt
  62 : C                       Sorties facultatives de la routine UMAT, non
  63 : C                       exploitees par CAST3M pour l'instant
  64 : C                       Initialisation arbitraire
  65 : C
  66 : C
  67 : C              TEMP   : REAL*8, temperature a t0
  68 : C              DTEMP  : REAL*8, increment de temperature a t0+dt
  69 : C              DPRED  : REAL*8(*), increments des parametres externes
  70 : C                       a t0+dt
  71 : C                       Entrees de la routine UMAT
  72 : C                       Ces entrees ne sont initialisees par WKUMA0 que
  73 : C                       dans le cas ou elles ne sont pas actives, i.e.
  74 : C                       quand aucun champ de temperature ni aucun champ
  75 : C                       de parametre externe n'est fourni en entree a
  76 : C                       l'operateur COMP (cas d'un modele independant
  77 : C                       de la temperature et de tout autre parametre).
  78 : C
  79 : C
  80 : C              CMNAME : CHARACTER*16, identifiant de la loi de
  81 : C                       comportement
  82 : C                       Entree de la routine UMAT
  83 : C
  84 : C
  85 : C              NDI    : INTEGER prenant la valeur de IFOURB
  86 : C                       Entree de la routine UMAT
  87 : C
  88 : C
  89 : C              NSHR   : INTEGER, nombre de composantes extradiagonales
  90 : C                       du tenseur des contraintes
  91 : C                       Entree de la routine UMAT, non active dans le
  92 : C                       cas d'une adherence a CAST3M
  93 : C                       Initialisation arbitraire
  94 : C
  95 : C
  96 : C              NSTATV : INTEGER, nombre de variables internes
  97 : C              NPROPS : INTEGER, nombre de constantes de materiau
  98 : C                       Entrees de la routine UMAT
  99 : C
 100 : C
 101 : C              DROT   : REAL*8(3,3), matrice de passage du repere local
 102 : C                       de l'element fini massif au repere general
 103 : C                       du maillage
 104 : C                       Cette matrice etant dependante de l'element fini
 105 : C                       son initialisation dans ce sous-programme est
 106 : C                       arbitraire (matrice identite)
 107 : C                       Entree de la routine UMAT, non active pour les
 108 : C                       elements finis non massifs
 109 : C
 110 : C
 111 : C              DFGRD0 : REAL*8(3,3), tenseur gradient de deplacement
 112 : C                       a t0
 113 : C              DFGRD1 : REAL*8(3,3), tenseur gradient de deplacement
 114 : C                       a t0+dt
 115 : C                       Entrees de la routine UMAT
 116 : C                       Ces entrees ne sont initialisees par WKUMA0 que
 117 : C                       dans le cas ou elles ne sont pas actives, i.e.
 118 : C                       quand aucun champ de gradient de deplacement
 119 : C                       n'est fourni en entree a l'operateur COMP.
 120 : C
 121 : C
 122 : C              LAYER  : INTEGER, numero de couche pour des coques
 123 : C                       composites ou des solides multi-couches
 124 : C              KSPT   : INTEGER, numero de section dans la couche
 125 : C                       courante
 126 : C                       Entrees de la routine UMAT, non actives dans le
 127 : C                       cas d'une adherence a CAST3M
 128 : C                       Initialisation arbitraire
 129 : C
 130 : C
 131 : C              KSTEP  : INTEGER
 132 : C              KINC   : INTEGER
 133 : C                       Entrees de la routine UMAT n'ayant pas
 134 : C                       de sens dans le cas d'une adherence a CAST3M
 135 : C                       Initialisation arbitraire
 136 : C
 137 : C
 138 : C              Variables de travail :
 139 : C              --------------------
 140 : C
 141 : C              LTEMP  : LOGICAL, indicateur de fourniture de
 142 : C                       la temperature
 143 : C                       LTEMP=.TRUE.  : TEMP et DTEMP mis a jour par
 144 : C                       WKUMA1, a chaque nouveau point d'integration.
 145 : C                       LTEMP=.FALSE. : TEMP et DTEMP mis a zero une
 146 : C                       fois pour toutes par WKUMA0.
 147 : C
 148 : C              LPRED  : LOGICAL, indicateur d'existence de parametres
 149 : C                       externes du modele
 150 : C                       LPRED=.TRUE.  : mise a jour de PAREX0(*) par
 151 : C                       COMVAL et de DPRED(*) par WKUMA1, a chaque
 152 : C                       nouveau point d'integration.
 153 : C                       LPRED=.FALSE. : PAREX0(1) mis a zero par COMVAL
 154 : C                       a chaque nouveau point d'integration et DPRED(1)
 155 : C                       mis a zero une fois pour toutes par WKUMA0.
 156 : C
 157 : C              LVARI  : LOGICAL, indicateur d'existence de variables
 158 : C                       internes de la loi de comportement
 159 : C                       LVARI=.TRUE.  : initialisation de VARF(*) par
 160 : C                       WKUMA1 a chaque nouveau point d'integration,
 161 : C                       par recopiage du contenu de VAR0(*).
 162 : C                       LVARI=.FALSE. : VAR0(1) et VARF(1) mis a zero
 163 : C                       par COMVAL a chaque nouveau point d'integration,
 164 : C                       pas de recopiage dans WKUMA1.
 165 : C
 166 : C              LDFGRD : LOGICAL, indicateur de fourniture de
 167 : C                       gradients de deplacement
 168 : C                       LDFGRD=.TRUE.  : DFGRD0 et DFGRD1 mis a jour par
 169 : C                       WKUMA1, a chaque nouveau point d'integration.
 170 : C                       LDFGRD=.FALSE. : DFGRD0 et DFGRD1 mis a zero une
 171 : C                       fois pour toutes par WKUMA0.
 172 : C
 173 : C              NSIG0  : INTEGER, nombre de composantes du tenseur des
 174 : C                       contraintes
 175 : C                       Stockage dans une variable de travail afin de ne
 176 : C                       pas "mesurer" un vecteur a chaque nouvel appel a
 177 : C                       WKUMA1
 178 : C
 179 : C              NPARE0 : INTEGER, nombre de parametres externes de la loi
 180 : C                       de comportement
 181 : C                       Stockage dans une variable de travail afin de ne
 182 : C                       pas "mesurer" un vecteur a chaque nouvel appel a
 183 : C                       WKUMA1
 184 : C                       N'est utile que dans le cas ou le modele depend
 185 : C                       effectivement de parametres externes
 186 : C
 187 : C              NGRAD0 : INTEGER, nombre de composantes des tenseurs
 188 : C                       gradients de deplacement
 189 : C                       Stockage dans une variable de travail afin de ne
 190 : C                       pas "mesurer" un vecteur a chaque nouvel appel a
 191 : C                       WKUMA1
 192 : C
 193 : C-----------------------------------------------------------------------
 194 : -INC SMMODEL
 195 : -INC DECHE
 196 : C
 197 :       SEGMENT WKUMAT
 198 : C        Entrees/sorties de la routine UMAT
 199 :          REAL*8        DDSDDE(NTENS,NTENS), SSE, SPD, SCD,
 200 :      &                 RPL, DDSDDT(NTENS), DRPLDE(NTENS), DRPLDT,
 201 :      &                 TIME(2), DTIME, TEMP, DTEMP, DPRED(NPRED),
 202 :      &                 DROT(3,3), PNEWDT, DFGRD0(3,3), DFGRD1(3,3)
 203 :          CHARACTER*16  CMNAME
 204 :          INTEGER       NDI, NSHR, NSTATV, NPROPS,
 205 :      &                 LAYER, KSPT, KSTEP, KINC
 206 : C        Variables de travail
 207 :          LOGICAL       LTEMP, LPRED, LVARI, LDFGRD
 208 :          INTEGER       NSIG0, NPARE0, NGRAD0
 209 :       ENDSEGMENT
 210 : C
 211 : C     Arguments de l'interface
 212 : C
 213 : C     Pointeurs        iqmod, wrk52, wkumat
 214 : C-----------------------------------------------------------------------
 215 : C
 216 :       IMODEL=iqmod
 217 : C
 218 : C 1 - Initialisations arbitraires d'entrees/sorties non actives ou
 219 : C     non exploitees
 220 : C
 221 :       SSE=0.0D0
 222 :       SPD=0.0D0
 223 :       SCD=0.0D0
 224 : C
 225 :       RPL=0.0D0
 226 :       DRPLDT=0.0D0
 227 : C
 228 : C 2 - Temperature a t0 et increment
 229 : C     Parametres externes a t0 et increments
 230 : C
 231 :       NTURE0=TURE0(/1)
 232 :       IF (NTURE0.GT.0) THEN
 233 :          LTEMP=.TRUE.
 234 :       ELSE
 235 :          LTEMP=.FALSE.
 236 :          TEMP=0.0D0
 237 :          DTEMP=0.0D0
 238 :       ENDIF
 239 : C
 240 :       NPARE0=PAREX0(/1)
 241 :       nomid=LNOMID(14)
 242 :       IF (nomid.NE.0) THEN
 243 :         SEGACT,nomid
 244 :         nparmo = lesobl(/2)
 245 :         IF (nparmo.EQ.1) THEN
 246 :           IF (lesobl(1).EQ.'T   ') THEN
 247 :             nparmo = 0
 248 :           ENDIF
 249 :         ENDIF
 250 :         SEGDES,nomid
 251 :       ELSE
 252 :         nparmo = 0
 253 :       ENDIF
 254 :       IF (nparmo.EQ.0) THEN
 255 :         LPRED = .FALSE.
 256 :         DPRED(1) = 0.0D0
 257 :       ELSE
 258 :         LPRED = .TRUE.
 259 :       ENDIF
 260 : C
 261 : C 3 - Numero de loi externe encode dans une chaine de 16 caracteres
 262 : C
 263 :       NMAMOD=MATMOD(/2)
 264 :       CMNAME=MATMOD(NMAMOD)
 265 : C
 266 : C 4 - Type de calcul
 267 : C     Nombre de composantes du tenseur des contraintes
 268 : C     Nombre de variables internes
 269 : C     Nombre de constantes de materiau
 270 : C
 271 : C     Type de calcul
 272 :       NDI=IFOURB
 273 : C
 274 : C     Initialisation arbitraire du nombre de composantes
 275 : C     extradiagonales du tenseur des contraintes
 276 :       NSHR=0
 277 : C
 278 :       NSIG0=SIG0(/1)
 279 : C
 280 :       NSTATV=VAR0(/1)
 281 :       nomid=lnomid(10)
 282 :       IF (nomid.EQ.0) THEN
 283 :          LVARI=.FALSE.
 284 :       ELSE
 285 :          SEGACT,NOMID
 286 :          NOBL=LESOBL(/2)
 287 :          NFAC=LESFAC(/2)
 288 :          LVARI=(NOBL.NE.0 .OR. NFAC.NE.0)
 289 :          SEGDES,NOMID
 290 :       ENDIF
 291 : C
 292 :       NPROPS=xmatf(/1)
 293 : C
 294 : C 5 - Matrice d'increments de rotation
 295 : C     Initialisation a la matrice identite
 296 : C
 297 :       DROT(1,1)=1.0D0
 298 :       DROT(2,1)=0.0D0
 299 :       DROT(3,1)=0.0D0
 300 :       DROT(1,2)=0.0D0
 301 :       DROT(2,2)=1.0D0
 302 :       DROT(3,2)=0.0D0
 303 :       DROT(1,3)=0.0D0
 304 :       DROT(2,3)=0.0D0
 305 :       DROT(3,3)=1.0D0
 306 : C
 307 : C 6 - Gradients de deplacement a t0 et t0+dt
 308 : C
 309 :       NGRAD0=grad0(/1)
 310 :       IF (NGRAD0.NE.0) THEN
 311 :          LDFGRD=.TRUE.
 312 :       ELSE
 313 :          LDFGRD=.FALSE.
 314 :          DO 20 J=1,3
 315 :             DO 21 I=1,3
 316 :                DFGRD0(I,J)=0.0D0
 317 :                DFGRD1(I,J)=0.0D0
 318 :   21        CONTINUE
 319 :   20     CONTINUE
 320 :       ENDIF
 321 : C
 322 : C 7 - Initialisations arbitraires d'entrees/sorties non actives ou
 323 : C     non exploitees
 324 : C
 325 :       LAYER=0
 326 :       KSPT=0
 327 : C
 328 :       KSTEP=1
 329 :       KINC=1
 330 : C
 331 :       RETURN
 332 :       END
 333 : 
 334 :  

© Cast3M 2003 - All rights reserved.
Disclaimer