Download wkuma1.eso

Back to the list

   1 : C WKUMA1    SOURCE    KICH      09/09/11    21:18:55     6505           
   2 : 
   3 : C-----------------------------------------------------------------------
   4 : C
   5 : C     DESCRIPTION FONCTIONNELLE :
   6 : C     -------------------------
   7 : C
   8 : C     Preparation des donnees de l'integrateur de la loi de comportement
   9 : C     externe UMAT.
  10 : C
  11 : C     WKUMA1 prepare les donnees variables en chaque point d'integration
  12 : C     De ce fait, WKUMA1 est appelee par COML8 avant l'appel a UMAT.
  13 : C
  14 : C
  15 : C     INTERFACE :
  16 : C     ---------
  17 : C
  18 : C     IN     : wrk52  : pointeur actif sur le segment de travail WRK52
  19 : C                       de l'objet DECHE
  20 : C     IN     : wkumat : pointeur actif sur le segment de travail
  21 : C                       WKUMAT contenant les donnees a preparer
  22 : C
  23 : C
  24 : C     Les operations effectuees par WKUMA1 consistent, d'une part, a
  25 : C     initialiser certains elements du segment de travail WKUMAT.
  26 : C     Sont concernees les donnees suivantes :
  27 : C
  28 : C              Entrees/sorties de la routines UMAT :
  29 : C              -----------------------------------
  30 : C
  31 : C              TIME   : REAL*8(2), TIME(1) = 0
  32 : C                                  TIME(2) = t0
  33 : C              DTIME  : REAL*8,    DTIME   = dt
  34 : C                       Entrees de la routine UMAT
  35 : C                       t0 : precedent instant d'equilibre atteint
  36 : C                       dt : nouveau pas de temps propose par PASAPAS
  37 : C                       pour atteindre l'equilibre avec l'increment de
  38 : C                       deformation totale impose
  39 : C                       Les donnees t0 et t1=t0+dt sont fournies sous
  40 : C                       forme de MCHAML, d'ou actualisation a chaque
  41 : C                       nouveau point d'integration
  42 : C
  43 : C              TEMP   : REAL*8, temperature a t0
  44 : C              DTEMP  : REAL*8, increment de temperature a t0+dt
  45 : C              DPRED  : REAL*8(*), increments des parametres externes
  46 : C                       a t0+dt
  47 : C                       Entrees de la routine UMAT
  48 : C                       Ces entrees sont mises a jour par WKUMA1 dans le
  49 : C                       cas ou elles sont actives, c'est-a-dire :
  50 : C                       - quand LTEMP=.TRUE. : champs de temperature
  51 : C                         fournis en entree de COMP,
  52 : C                       - quand LPRED=.TRUE. : existence de parametres
  53 : C                         externes du modele.
  54 : C
  55 : C              PNEWDT : REAL*8, rapport entre le nouveau pas de temps
  56 : C                       suggere et le pas de temps donne en entree
  57 : C                       Sortie de la routine UMAT
  58 : C                       Initialisation a 1.0D+6
  59 : C
  60 : C              DFGRD0 : REAL*8(3,3), tenseur gradient de la
  61 : C                       transformation a t0        ( F(t0) )
  62 : C              DFGRD1 : REAL*8(3,3), tenseur gradient de la
  63 : C                       transformation a t0+dt     ( F(t0+dt) )
  64 : C                       Entrees de la routine UMAT
  65 : C                       Ces entrees sont mises a jour par WKUMA1 dans le
  66 : C                       cas ou elles sont actives, c'est-a-dire :
  67 : C                       - quand LDFGRD=.TRUE. : gradients de
  68 : C                         deplacement fournis en entree de COMP.
  69 : C
  70 : C
  71 : C     D'autre part, WKUMA1 prepare certains vecteurs du segment WRK52
  72 : C     de l'objet DECHE qui sont passes directement a UMAT.
  73 : C     Sont concernees les donnees suivantes :
  74 : C
  75 : C              Entrees/sorties de la routines UMAT :
  76 : C              -----------------------------------
  77 : C
  78 : C              SIGF   : REAL*8(NTENS), tenseur des contraintes
  79 : C          <=> STRESS   En entree : tenseur des contraintes a t0
  80 : C                       En sortie : tenseur des contraintes a t0+dt
  81 : C                       WKUMA1 recopie le contenu de SIG0 dans SIGF
  82 : C                       avant l'appel a UMAT.
  83 : C
  84 : C              VARF   : REAL*8(*), variables internes
  85 : C          <=> STATEV   En entree : variables internes a t0
  86 : C                       En sortie : variables internes a t0+dt
  87 : C                       WKUMA1 recopie le contenu de VAR0 dans VARF
  88 : C                       avant l'appel a UMAT.
  89 : C
  90 : C-----------------------------------------------------------------------
  91 : C
  92 : C     Arguments de l'interface WKUMA1 :
  93 : C
  94 : C     Pointeurs        wrk52, wkumat
  95 : C
  96 : C-----------------------------------------------------------------------
  97 : 
  98 :       SUBROUTINE WKUMA1 ( wrk52, wkumat )
  99 : 
 100 :       IMPLICIT INTEGER(I-N)
 101 :       IMPLICIT REAL*8 (A-H,O-Z)
 102 : 
 103 :       PARAMETER (XZero=0.,XUn=1.)
 104 : 
 105 : -INC DECHE
 106 : 
 107 :       SEGMENT WKUMAT
 108 : C        Entrees/sorties de la routine UMAT
 109 :          REAL*8        DDSDDE(NTENS,NTENS), SSE, SPD, SCD,
 110 :      &                 RPL, DDSDDT(NTENS), DRPLDE(NTENS), DRPLDT,
 111 :      &                 TIME(2), DTIME, TEMP, DTEMP, DPRED(NPRED),
 112 :      &                 DROT(3,3), PNEWDT, DFGRD0(3,3), DFGRD1(3,3)
 113 :          CHARACTER*16  CMNAME
 114 :          INTEGER       NDI, NSHR, NSTATV, NPROPS,
 115 :      &                 LAYER, KSPT, KSTEP, KINC
 116 : C        Variables de travail
 117 :          LOGICAL       LTEMP, LPRED, LVARI, LDFGRD
 118 :          INTEGER       NSIG0, NPARE0, NGRAD0
 119 :       ENDSEGMENT
 120 : 
 121 : C
 122 : C 1 - Instant d'equilibre precedent et pas de temps (iteration globale,
 123 : C     pilotage par PASAPAS)
 124 : C
 125 :       TIME(1)=XZero
 126 :       TIME(2)=temp0
 127 :       DTIME=tempf-temp0
 128 : C
 129 : C 2 - Recopiage des contraintes a t0 dans le vecteur SIGF
 130 : C     En sortie de UMAT le contenu de ce vecteur sera ecrase par les
 131 : C     valeurs a t0+dt
 132 : C
 133 :       DO 10 I=1,NSIG0
 134 :          SIGF(I)=SIG0(I)
 135 :   10  CONTINUE
 136 : C
 137 : C 3 - Recopiage des variables internes a t0 dans le vecteur VARF
 138 : C     Operation conditionnee par le booleen LVARI car il peut
 139 : C     ne pas y avoir de variables internes
 140 : C     En sortie de UMAT le contenu de ce vecteur sera ecrase par les
 141 : C     valeurs a t0+dt
 142 : C
 143 :       IF ( LVARI ) THEN
 144 :          DO 20 I=1,NSTATV
 145 :             VARF(I)=VAR0(I)
 146 :   20     CONTINUE
 147 :       ENDIF
 148 : C
 149 : C 4 - Temperature a t0 et increment
 150 : C     Increments de parametres externes sur le pas de temps
 151 : C
 152 :       IF ( LTEMP ) THEN
 153 :          TEMP=TURE0(1)
 154 :          DTEMP=TUREF(1)-TEMP
 155 :       ENDIF
 156 : C
 157 :       IF ( LPRED ) THEN
 158 :          DO 30 I=1,NPARE0
 159 :             DPRED(I)=PAREXF(I)-PAREX0(I)
 160 :   30     CONTINUE
 161 :       ENDIF
 162 : C
 163 : C 5 - Rapport entre le pas de temps suggere pour l'iteration suivante
 164 : C     et le pas de temps de l'iteration en cours
 165 : C     Initialisation avant calcul
 166 : C
 167 :       PNEWDT=1.0D+6
 168 : C
 169 : C 6 - Gradients de la transformation a t0 et t0+dt
 170 : C
 171 : C     En mecanique, les composantes du tenseur gradient de la tansforma-
 172 : C     tion sont toutes obligatoires, il y en a 4 ou 9 suivant la formu-
 173 : C     lation EF et la dimension du probleme. L'ordre des composantes
 174 : C     correspond a un parcours du tenseur ligne par ligne.
 175 : C     cf. IDGRAD.eso
 176 : C     En entree de COMP, les gradients de deplacements sont fournis.
 177 : C     Les gradients de transformation s'en deduisent en ajoutant le
 178 : C     tenseur identite (termes diagonaux).
 179 : C
 180 :       IF ( LDFGRD ) THEN
 181 : C
 182 :          IF (NGRAD0.EQ.4) THEN
 183 : C
 184 :             DFGRD0(1,1)=grad0(1)+XUn
 185 :             DFGRD0(2,1)=grad0(3)
 186 :             DFGRD0(3,1)=XZero
 187 :             DFGRD0(1,2)=grad0(2)
 188 :             DFGRD0(2,2)=grad0(4)+XUn
 189 :             DFGRD0(3,2)=XZero
 190 :             DFGRD0(1,3)=XZero
 191 :             DFGRD0(2,3)=XZero
 192 :             DFGRD0(3,3)=XUn
 193 : C
 194 :             DFGRD1(1,1)=gradf(1)+XUn
 195 :             DFGRD1(2,1)=gradf(3)
 196 :             DFGRD1(3,1)=XZero
 197 :             DFGRD1(1,2)=gradf(2)
 198 :             DFGRD1(2,2)=gradf(4)+XUn
 199 :             DFGRD1(3,2)=XZero
 200 :             DFGRD1(1,3)=XZero
 201 :             DFGRD1(2,3)=XZero
 202 :             DFGRD1(3,3)=XUn
 203 : C
 204 :          ELSE
 205 : C
 206 :             DFGRD0(1,1)=grad0(1)+XUn
 207 :             DFGRD0(2,1)=grad0(4)
 208 :             DFGRD0(3,1)=grad0(7)
 209 :             DFGRD0(1,2)=grad0(2)
 210 :             DFGRD0(2,2)=grad0(5)+XUn
 211 :             DFGRD0(3,2)=grad0(8)
 212 :             DFGRD0(1,3)=grad0(3)
 213 :             DFGRD0(2,3)=grad0(6)
 214 :             DFGRD0(3,3)=grad0(9)+XUn
 215 : C
 216 :             DFGRD1(1,1)=gradf(1)+XUn
 217 :             DFGRD1(2,1)=gradf(4)
 218 :             DFGRD1(3,1)=gradf(7)
 219 :             DFGRD1(1,2)=gradf(2)
 220 :             DFGRD1(2,2)=gradf(5)+XUn
 221 :             DFGRD1(3,2)=gradf(8)
 222 :             DFGRD1(1,3)=gradf(3)
 223 :             DFGRD1(2,3)=gradf(6)
 224 :             DFGRD1(3,3)=gradf(9)+XUn
 225 : C
 226 :          ENDIF
 227 : C
 228 :       ENDIF
 229 : C
 230 :       RETURN
 231 :       END
 232 :  
 233 :  
 234 :  
 235 :  
 236 :  

© Cast3M 2003 - All rights reserved.
Disclaimer