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