General Mechanical

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

Viewing 2 reply threads
  • You must be logged in to reply to this topic.