User-Defined Explicit Creep (usercr.F)
User-defined implicit creep (usercreep.F) is the preferred method to write your own creep law. A discussion on usercreep.F can be found here.
There may be some instances where a user may wish to use user-defined explicit creep (usercr.F), although I would highly recommend using user-defined implicit creep whenever possible.
usercr.F is a much older subroutine, and it doesn’t have a straightforward mechanism to save state variable data, unlike the newer usercreep.F. If a user is using explicit creep usercr.F, the state variables need to be saved to the ANSYS results file via the user-defined output userou.F subroutine.
The steps are as follows:
- In usercr.F, dimension the state variable array usvr as desired, and put calculations in this array. usvr has dimensions of nuval x nintp, where nintp is the number of integration points for that element
- In userou.F, copy the values in usvr array to the udbdat array. Note that usvr, which was a 2D array (nuval x nintp) will be converted to a 1D array of size nusvr, the latter of which is defined in ANSYS via the NSVR command. The way in which usvr values change is that usvr(a,b) in usercr.F now become usvr(c) in userou.F, where c=nuval*(a-1) + b
- In the ANSYS input file, use TB,CREEP,,,,0 with TBDATA,6,100 to specify user-defined explicit creep. Filll in the other material parameters with TBDATA command, as needed.
- In the ANSYS input file, use the NSVR command to define the state variables (this is the value of nusvr explained above).
- Lastly, use USRCAL,USEROU to activate the user-defined output.
Since the data is stored in non-summable miscellaneous records (NMISC) per element, you can’t plot nodal values as you can with implicit creep state variables. Hence, you may choose to average (or get the max value of) the integration point values to produce 1 value per element — in other words, instead of storing damage values per integration point with userou.F, you may want to store the average and max value per element instead, reducing the amount of data one deals with. Using ETABLE along with PRETAB and PLETAB, listing and plotting of these state variables is possible.
The procedure for user-defined implicit creep is much easier, so use usercreep.F instead, whenever possible. (Implicit creep is also generally a much more efficient way to solve creep problems.)
Comments are closed.