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