You are on page 1of 2

SUBROUTINE UMAT(STRESS, STATEV, DDSDDE, SSE, SPD, SCD,

& RPL, DDSDDT, DRPLDE, DRPLDT,

& STRAN, DSTRAN, TIME, DTIME, TEMP, DTEMP, PREDEF, DPRED,

& CMNAME, NDI, NSHR, NTENS, NSTATV, PROPS, NPROPS, COORDS,

& DROT, PEWDT, CEL, DFGR0, DFGR1, NOEL, NPT, LAYER, KSPT,

& KSTEP, KINC)

INCLUDE 'ABA_PARAM.INC'

CHARACTER*80 CMNAME

DIMENSION STRESS(NTENS),STATEV(NSTATV),

& DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),

& STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),

& PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)

double precision :: eps, delta, alpha, n, sigma, E, sigmay,

& f, df

delta = 10e-15

E = PROPS(1)

alpha = PROPS(4)

n = PROPS(3)

sigmay = PROPS(2)

sigma = STRESS(1)

eps = STRAN(1) + DSTRAN(1)

f=(sigma/E)*(1.0+alpha*(abs(sigma)/sigmay)**(n-1.0))-eps

df=(1.0/E)*(1.0+alpha*n*(abs(sigma)/sigmay)**(n-1.0))

Do while (abs(f) > delta)


sigma = sigma - (f / df)

f=(sigma/E)*(1.0+alpha*(abs(sigma)/sigmay)**(n-1.0))-eps

df=(1.0/E)*(1.0+alpha*n*(abs(sigma)/sigmay)**(n-1.0))

End Do

STRESS(1) = sigma !Rueckgabe des berechneten sigma

DDSDDE(1,1) = 1.0/df !Materialtangente

RETURN

END SUBROUTINE UMAT

You might also like