## General Mechanical

#### shift function for viscoelastic material

TAGGED:

• Tianxiao Xie
Subscriber

Hello,

I am trying to implement a poly-function (like: Sum(A_i(T-T_ref)^i)) for the shift-function at describing the viscoelastic materials by APDL-Snippet.

When I choose "USER", like explained from the ansys help, how should I know, which user-defined shift function will be used? Where should I define it?

kind regards!

Tianxiao

• John Doyle
Ansys Employee

What you are describing is the very last step in the process of implimenting a customized user routine that is not available as a standard option.  If you are sure that you need a user routine to represent your material behavior, then you need to write the user programmable routine and link it into the standard code, before you can use it.

I would refer you to the MAPDL Programmer's Reference Manual available online for all these details.

Programmer's Reference (ansys.com)

• Tianxiao Xie
Subscriber

This is a APDL-snippet that I am currently using to define the viscoelastic material:

!initial stress
xstress=0.00
ystress=0.00

zstress=0

emodul= 1000

prxy=0.48 !change it by youre own data!
T_Tref= 22
dens=1.5E-9
WLF_C1= 1233.38549256198

WLF_C2= 15051.0592897475

!WLF_C1= 3000

!WLF_C2= 15051.0592897475

!range of validity: 253.192 K to 383.216 K
!these values are ansys usershift compatible. ansys usershift function result is in natural logarithm values.
!divide these values with log(10) or /2.3025850929940456840179914546844 for decadic results
anz_poly=8
a0=6.08419150763354e-14 ! (t-tref)^0
a1=0.102634777333732 ! (t-tref)^1
a2=-0.00432532400851257 ! (t-tref)^2
a3=0.000196313036174406 ! (t-tref)^3
a4=-2.20392742071311e-06 ! (t-tref)^4
a5=-4.82538390415738e-08 ! (t-tref)^5
a6=1.42616810358004e-09 ! (t-tref)^6
a7=-1.16517006882461e-11 ! (t-tref)^7
a8=3.02875871074624e-14 ! (t-tref)^8

!Prony parameters
anz_pr= 21
prony_1=0.114383103651657 \$tau_1=3.75431737187164e-09
prony_2=0.359145957896381 \$tau_2=3.95059243268877e-08
prony_3=0.180874503329114 \$tau_3=4.15712871963117e-07
prony_4=0.220762760051141 \$tau_4=4.3744626878203e-06
prony_5=0.0478664850812527 \$tau_5=4.60315883815832e-05
prony_6=0.0337057365002902 \$tau_6=0.00048438111835566
prony_7=0.0300874841778958 \$tau_7=0.00509704479181848
prony_8=0.00509344253533475 \$tau_8=0.0536351740918356
prony_9=0.000809387642727866 \$tau_9=0.564392116875075
prony_10=0.0013005444966005 \$tau_10=5.9389843882173
prony_11=9.73728989199814e-12 \$tau_11=62.4947346160328
prony_12=0.000469558168317785 \$tau_12=657.619484987521
prony_13=5.74776608225847e-05 \$tau_13=6919.99717563891
prony_14=0.000589409390620715 \$tau_14=72817.7342734289
prony_15=0.000515575282781819 \$tau_15=766246.327871682
prony_16=9.73728989549931e-12 \$tau_16=8063055.52946983
prony_17=0.000953273629946875 \$tau_17=84845906.7358834
prony_18=0.000127406166934482 \$tau_18=892816360.190391
prony_19=0.000175746416302754 \$tau_19=9394926445.95063
prony_20=0.000792321519092591 \$tau_20=98860915704.9957
prony_21=9.73728993446728e-12 \$tau_21=1040293472254.13

!anz_pr= 3
!prony_1=0.3 \$tau_1=2
!prony_2=0.3 \$tau_2=2
!prony_3=0.4 \$tau_3=2

/PREP7
alls

CMSEL,s,Membrane

mat_id=50000
EMODIF,all,mat,mat_id
mp,ex,mat_id, emodul
MP,PRXY,mat_id,prxy
mp,dens,mat_id,dens
*dim,prony_pairs,array,anz_pr,2
*do,i,1,anz_pr,1
prony_pairs(i,1)=prony_%i%
prony_pairs(i,2)=tau_%i%
*enddo

TB,PRONY,mat_id,1,anz_pr,SHEAR
*do,i,1,anz_pr,1
TBDATA,2*i-1,prony_pairs(i,1),prony_pairs(i,2)
*enddo

TB,PRONY,mat_id,1,anz_pr,BULK
*do,i,1,anz_pr,1
TBDATA,2*i-1,prony_pairs(i,1),prony_pairs(i,2)
*enddo

*dim,poly_shift,array,anz_poly,1
*do,i,1,anz_poly,1
poly_shift(i,1)=a%i%
*enddo

mod_shift=2
*IF,mod_shift,eq,1,then
tb,shift,mat_id,1,3,WLF ! Use WLF shift function
tbdata,1,T_Tref,WLF_C1,WLF_C2 ! Parameter of WLF Fct.
*ELSEIF,mod_shift,eq,2,then
tb,shift,mat_id,1,anz_poly+1,user ! Use poly shift function Poly 8 fit with Ax(T-Tref)^X
tbdata,1,T_Tref
*do,j,1,anz_poly,1
tbdata,j+1,poly_shift(j,1)
*enddo
*endif

alls
!CMSEL,s,Membrane
!INISTATE, DEFINE, , , , ,xstress,ystress,zstress
!alls
fini

/SOLU

we have two options for shift function, one is using WLF-shift function, the other one is using a poly-function of 8-oder. The code is working very well, but I don't know, how APDL experiences, that the 8 coeffcients defined in the code will be used in a poly-function of 8-oder? According to my understanding, we only define the coefficient and put them into a table, and didn't define how the function looks like. I got this code from my ex-colleague.

regards

tianxiao