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