Ansys, Inc. recommends using current-technology elements and the
UserMat
subroutine for defining your own material model. However, if you are using
an archived element type and wish to define a plasticity or viscoplasticity material
model, the UserPL subroutine is applicable to archived element
SOLID65.
*deck,userpl USERDISTRIB
subroutine userpl (elem,intpt,mat,ncomp,kfirst,kfsteq,e,nu,dens,
x prop,d,ktform,timval,timinc,tem,dtem,toffst,flu,dflu,epel,eppl,
x statev,usvr,epeq,plwork,sigepl,sigrat,depeq,dt)
c
c *** primary function: allow users to write their own plasticity laws.
c this logic is accessed with tb,user.
c the below demonstration logic is the same as using
c tb,bkin, without adaptive descent (nropt,,,off).
c Other plasticity rules may require internal
c iterations and/or the more general definition of
c plasticity theory, discussed in the Theory
c Manual.
c *** secondary function: demonstrate the use of user-written plasticity laws
c in this routine:
c a. update the nonlinear strain history
c b. compute the material tangent matrix if requested
c
c *** Notice - This file contains ANSYS Confidential information ***
c
c
c Copyright ANSYS. All Rights Reserved.
c *** ansys, inc.
c
c input arguments:
c variable (type,sze,intent) description
c
c elem (int,sc,in) - element number (label)
c intpt (int,sc,in) - element integration point number
c mat (int,sc,in) - material reference number
c ncomp (int,sc,in) - no. of stress/strain components (1,4 or 6)
c 1 - x
c 4 - x,y,z,xy
c 6 - x,y,z,xy,yz,xz
c kfirst (int,sc,in) - 1 if first time through, 0 otherwise
c (useful for initializing state variables
c to a non-zero value)
c kfsteq (int,sc,in) - 1 if first equilibrium iteration of a
c substep, 0 otherwise
c
c e (dp,sc,in) - average elastic modulus
c nu (dp,sc,in) - average poisson ratio
c dens (dp,sc,in) - current material density (mass/volume)
c prop - linear material property array
c (dp,ar(9),in) (ex,ey,ez, gxy,gyz,gxz, nuxy,nuyz,nuxz)
c (dp,ar(1),in) if ncomp=1 (ex)
c d (dp,ar(ncomp,ncomp),in)- elastic stress-strain matrix
c ktform (int,sc,in) - request key for tangent matrix formation
c (=1, form tangent .ne.1, do not form)
c
c timval (dp,sc,in) - current time value
c timinc (dp,sc,in) - time increment over this substep
c
c tem (dp,sc,in) - temperature at the end of this substep
c dtem (dp,sc,in) - temperature increment over this substep
c toffst (dp,sc,in) - temperature offset from absolute zero
c flu (dp,sc,in) - fluence at the end of this substep
c dflu (dp,sc,in) - fluence increment over this substep
c
c epel (dp,ar(ncomp),inout)- modified total strain (trial strain)
c epel = eptot - eppl - eptherm - ...
c if a large strain analysis, epel is
c rotation neutralized and is the hencky
c (i.e. log) strain
c eppl (dp,ar(ncomp),inout)- plastic strain from previous substep
c
c statev (dp,ar(ncomp,6),inout)- state variables from previous substep
c usvr (dp,ar(nuval,nintp),inout)- additional state variables from
c previous equilibrium iteration (saved
c if the nsvr command is used)
c
c epeq (dp,sc,inout) - effective plastic strain from prev substep
c plwork (dp,sc,inout) - accumulated plastic work from prev substep
c
c output arguments:
c variable (type,sze,intent) description
c
c epel (dp,ar(ncomp),inout)- elastic strain
c eppl (dp,ar(ncomp),inout)- updated plastic strain
c
c statev (dp,ar(ncomp,6),inout)- updated state variables
c usvr (dp,ar(nuval,nintp),inout)- updated additional state variables
c
c epeq (dp,sc,inout) - updated effective plastic strain
c plwork (dp,sc,inout) - updated accumulated plastic work
c
c sigepl (dp,sc,out) - stress value on stress-strain curve at epeq
c sigrat (dp,sc,out) - ratio of trial stress to yield stress
c depeq (dp,sc,out) - increment in plastic strain (equivalent)
c (used for auto time stepping - time step
c is reduced if it exceeds .05)
c
c dt (dp,ar(ncomp,ncomp),out)- material tangent modulus
c
c fortran parameters (to be defined by the user):
c variable (type) description
c numinp (int) - number of data items in the user-defined
c data table (tbdat commands)
c nuval (int) - number of additional state variables per
c integration point
c nintp (int) - maximum number of integration points of
c an element to be used with this routine
c (14 is the maximum)
c note: nuval x nintp = nstv(on nsvr command); cannot exceed 840!
c
c internal variables:
c variable (type,sze) description
c b (dp,ar(6,6)) - 2nd derivative of the yield function
c c (dp,ar(6,12)) - part of deff
c con (dp,sc) - temporary variable
c deppl (dp,ar(6)) - plastic strain increment
c dfds (dp,ar(6)) - derivative of the yield function (normal)
c dlamb (dp,sc) - plastic multiplier
c ep (dp,ar(6)) - shifted strain
c epshfo (dp,ar(6)) - initial shift strain (center of the yield surf)
c epshft (dp,ar(6)) - shift strain (center of the yield surface)
c et (dp,sc) - tangent modulus (stress/total strain)
c h (dp,sc) - plastic tangent modulus (stress/plastic strain)
c n2 (int,sc) - ncomp squared, ncomp*ncomp
c seqtr (dp,sc) - equivalent (von mises) trial stress
c sigtr (dp,ar(6)) - trial stress
c sigy (dp,sc) - yield stress
c vect (dp,ar(6)) - temporary vector
c