基于VB的ANSYS二次開(kāi)發(fā)之超彈性材料模型算法

      ANSYS現(xiàn)有版本雖包括了金屬、橡膠、Drucker-Prager、混凝土等眾多材料模型,但仍無(wú)法滿足工程計(jì)算需要,為了彌補(bǔ)這一不足,ANSYS為用戶提供了開(kāi)發(fā)材料模型的接口,即UPFs。通過(guò)修改、編譯連接相關(guān)用戶子程序,可以得到各種符合用戶需要的材料模型。ANSYS的TB,HYPER命令給用戶提供了各種不可壓縮和可壓縮的超彈性材料模型,比如:Polynomid Form模型、Mooney-Rivlin模型、Neo-Hookean模型、Yeoh模型、Arruda-Boyce模型、Gent模型、Ogden模型、Hyperfoam模型以及Blatz-Ko模型等。但是對(duì)于需要使用另外模型的用戶,則需要UserHyper用戶子程序來(lái)編寫(xiě)自己的超彈性材料模型。

UserHyper用戶子程序介紹

    用戶可以使用如下命令調(diào)用用戶定義的超彈性材料模型:

    TB,HYPER,,,,USER

    可以使用所有支持超彈性材料的單元。

    UserHyper用戶子程序輸入輸出變量說(shuō)明如下:

    *deck.UserHyper    USERDISTRIB parallel                gal

    subroutine UscrHyper(

        &      prophy,irtcomp,nprophy,invar,

        &      potential,plnvDer)

    c*********************************************************

    c    輸入變量

    c    =================

    c     prophy    (dp,ar(*),i)       材料特性數(shù)組

    c     npoophy    (int,sc,i)        材料常數(shù)個(gè)數(shù)

    c     ivar       dp,ar(3)          不變量

    c

    c

    c     輸出變量

    c    =================

 

    c     incomp      (log,sc,i)         可壓縮或不可壓縮

    c     potential    dp,sc             應(yīng)變能

    c     pInvDer        dp,ar(10)       應(yīng)變能wtr對(duì)il,i2,j的導(dǎo)數(shù)

    c                                    l-應(yīng)變能wtr對(duì)il的導(dǎo)數(shù)

    c                                    2-應(yīng)變能wtr對(duì)i2的導(dǎo)數(shù)

    c                                    3-應(yīng)變能wtr對(duì)il的二階導(dǎo)數(shù)

    c                                    4-應(yīng)變能wtr對(duì)il和i2的導(dǎo)數(shù)

    c                                    5-應(yīng)變能wtr對(duì)i2的導(dǎo)數(shù)

    c                                    6-應(yīng)變能wtr對(duì)il和j的導(dǎo)數(shù)

    c                                    7-應(yīng)變能wtr對(duì)i2和j的導(dǎo)數(shù)

    c                                    8-應(yīng)變能wtr對(duì)j的導(dǎo)數(shù)

    c                                    9-應(yīng)變能wtr對(duì)j的二階導(dǎo)數(shù)


 模型算法

       超彈性理論中一個(gè)很重要的量是應(yīng)變能函數(shù),UserHyper用戶子程序的應(yīng)變能函數(shù)適用于基于三個(gè)應(yīng)變不變量的率無(wú)關(guān)且各向同性超彈性模型。如果用戶想要定義率相關(guān)、非各向同性或非彈性材料模型,則需要利用前面介紹的usermat用戶子程序。ANSYS安裝文件夾中的UserHyper.F子程序基于Arruda-Boyce模型。這里將要介紹的是一種ANSYS沒(méi)有的超彈性材料模型。

在超彈性理論中,應(yīng)變能函數(shù)被劃分為偏部分(deviatoric part)和體積部分(volumetric part),因此一般情況下應(yīng)變能函數(shù)的輸入變量是3個(gè)修正的應(yīng)變不變量(分別對(duì)應(yīng)UserHyper用戶子程序的輸入變量invar(l)、invar(2)、invar(3)):

1.png
2.png
數(shù)值實(shí)施

       在超彈性理論中,可以將應(yīng)變能函數(shù)分成兩部分處理,即偏應(yīng)變能部分和體積應(yīng)變能部分。本節(jié)使用的模型偏應(yīng)變能函數(shù)采用Horgan-Saccomandi建議的形式:

3.png

UserHyper用戶子程序的詳細(xì)代碼如下:

    *deck.UserHyper    USERDISTRIB parallel                gal

    subroutine UscrHyper(

        &      prophy,irtcomp,nprophy,invar,

        &      potential,plnvDer)

    c*********************************************************

    c    輸入變量

    c    =================

    c     prophy    (dp,ar(*),i)       材料特性數(shù)組

    c     npoophy    (int,sc,i)        材料常數(shù)個(gè)數(shù)

    c     ivar       dp,ar(3)          不變量

    c

    c

    c     輸出變量

    c    =================

 

    c     incomp      (log,sc,i)         可壓縮或不可壓縮

c     potential    dp,sc             應(yīng)變能

c     pInvDer        dp,ar(10)       應(yīng)變能wtr對(duì)il,i2,j的導(dǎo)數(shù)

c                                    l-應(yīng)變能wtr對(duì)il的導(dǎo)數(shù)

c                                    2-應(yīng)變能wtr對(duì)i2的導(dǎo)數(shù)

c                                    3-應(yīng)變能wtr對(duì)il的二階導(dǎo)數(shù)

c                                    4-應(yīng)變能wtr對(duì)il和i2的導(dǎo)數(shù)

c                                    5-應(yīng)變能wtr對(duì)i2的導(dǎo)數(shù)

c                                    6-應(yīng)變能wtr對(duì)il和j的導(dǎo)數(shù)

c                                    7-應(yīng)變能wtr對(duì)i2和j的導(dǎo)數(shù)

c                                    8-應(yīng)變能wtr對(duì)j的導(dǎo)數(shù)

c                                    9-應(yīng)變能wtr對(duì)j的二階導(dǎo)數(shù)

c

c**************************************************************

c

c---參數(shù)

c

#include “impcom.inc”

        DOUBLE PRECISION mu,jm,alpha,bulk

        DOUBLE PRECISION il,i2,i3

        DOUBLE PRECISION jdcnom, vpotcn

c

c ----變量列

c

       INTEGER        nprophy

       DOUBLE PRECISION prophy(*),invar(*),

     &               potential,pInvDer(*)

      LOGICAL         incomp

c

c----局部變量

c

     mu  =prophy(l)/2.0d0

     jm  =prophy(2)

     bulk =prophy(3)

     alpha=prophy(4)

c

     i1  = invar<l)

     i2  = invar(2)

     i3  = invar(3)

c

c-----計(jì)算偏應(yīng)變能

c

     jdenom=(jm*jm**2.0d0-jm**2.0d0*il+jm*i2-1.OdO)

     potential =-mu*jm*log(jdenom /((jm-1.OdO)*    !偏應(yīng)變能Wd

    &(jm - 1.0d0)**2.0d0))

     plnvDer(1)= mu*jm*jm**2.0d0/jdenom        !計(jì)算導(dǎo)數(shù)值

     pInvDer(2)=-mu*jm**2.0d0/jdenom

     pInvDer(3)= mu*jm*jm**2.0d0*jm**2.0d0/jdenom**2.0d0

     pInvDer(4)=-mu*jm**2.0d0*jm**2.0d0/jdenom**2.0d0

     pInvDcr(5)= mu*jm*jm**2.0d0/jdenom**2.0d0

c

c----計(jì)算體積應(yīng)變能

c

     pInvDer(6)= O.OdO

     pInvDer(7)= O.OdO

     pInvDer(8)= O.OdO

     pInvDer(9)= O.OdO

     IF(alpha.gt.0.0001d0)THEN  !通過(guò)參數(shù)a判斷材料是否可壓縮

         incomp=.FALSE.         !可壓縮

         vpoten =bulk/alpha**2.0d0*(cosh(alpha*(i3-1.OdO))

                                           !體積皮變能 Wv

     &   -l.OdO)

         potential=potential+vpoten      !總應(yīng)變能

         plnvDcr(8)= bulk/alpha**1.OdO*sinh(alpha*(i3-l.OdO))

                                             !計(jì)算導(dǎo)數(shù)值

         pInvDer(9)= bulk*cosh(alpha*(i3-l.OdO))

     END IF

c

    RETURN

    END


生成并調(diào)用宏文件

      在ANSYS中,宏是包含一系列ansys命令并且后綴為.MAC或.mac的命令文件。宏文件往往記錄一系列頻繁使用的ansys命令流,實(shí)現(xiàn)某種有限元分析或其他算法功能。宏文件在ansys中可以當(dāng)作定義的ansys命令進(jìn)行使用,可以帶有宏輸入?yún)?shù),也可以有內(nèi)部變量,同時(shí)在宏內(nèi)部可以直接引用總體變量。除了執(zhí)行一系列的ansys命令之外,宏還可以調(diào)用GUI函數(shù)或把值傳遞給參數(shù)。

      利用*USE命令調(diào)用宏文件,并向宏文件傳遞參數(shù):

*USE,Name,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8,ARG9,AR10,AR11,AR12,AR13,AR14,AR15,AR16,AR17,AR18

      其中,Name是宏文件名,ARGI到AR18是宏文件用到的參數(shù)值。


APDL實(shí)現(xiàn)過(guò)程

      下面為兩個(gè)簡(jiǎn)單的橡膠類材料受力分析的實(shí)例,目的是與ANSYS自帶的Gent模型比較,以便驗(yàn)證前面建立的用戶超彈性模型的正確性。通過(guò)模擬單軸拉伸試驗(yàn)考察Horgan-Saccomandi偏應(yīng)變能函數(shù),通過(guò)模擬靜水壓縮考察Bischoff體積應(yīng)變能函數(shù)。

 1.單軸拉伸

    建立兩個(gè)SOLID185單元,邊界條件完全相同,只是使用的材料不同,如圖8-7所示。命令流( \chp8\userhyper\userhyper_uniaxial.inp)如下:

    finisb

    /clear

    !設(shè)置參數(shù)

    STRE1TCH=4.9                            !拉伸量參數(shù)

    !進(jìn)入前處理囂

    /prep7

    et,l,185                                !設(shè)置單元類型

    r,l

tb,hyper,1,1,4,user                      !l號(hào)材料為用戶材料

    tbdata,,100,25,0,0                       !a=0,所以是不可壓縮材料

    tb,hyper,2,1,3,gent                     !2號(hào)材料為ANSYS標(biāo)準(zhǔn)gent

tbdata,,lOO,25.4-3,0                  !gent超彈材料參數(shù)

!幾何建模

block,,1,,1,,1

block,,2,3,,1,,1

esize,,1                         !僅劃分一個(gè)單元

mat,1$vmesh,1                    !劃分網(wǎng)格

mat,2$vmesh,2

!設(shè)置邊界條件

nsel,s,loc,x,0

nsel,s,loc,x,2

d,all,ux

nsel,s,loc,y,0

d,all,uy

nsel,s,loc,z,0

d,all,uz

nsel,s,loc,y,1

nsel,r,loc,x,0,1

cp,next,uy,all

    MYPARM1-ndnext(0)

d*ndnext(0),uy,STRETCH-l            !施加拉伸約束

nsel,s,loc,y,1

nsel,r,loc,x,2,3

cp,next,uy,all

d*ndnext(0),uy,STRETCH-l            !施加拉伸約束

allsel,all

finish

   !進(jìn)入求解器

/solu

antype,static                        !靜態(tài)分析類型

nlgeom,on                              !打開(kāi)大變形開(kāi)關(guān)

outres,all,all                          !輸出所有計(jì)算結(jié)果

nsubst,100,1000,50                     !求解子步數(shù)設(shè)置

solve

save

finish

 

 

 

    !1.定義工作文件名及文件標(biāo)題

    !(1)定義工作文件名:

    /FILNAME,shiyan_thermal,0

    !(2)定義文件標(biāo)題

    /TITLE,shiyan of experiment

 

    !2.定義單元類型及材料屬性

    !(1)定義單元類型:

    /PREP7 

    !* 

    ET,1,185

    !(2)設(shè)置材料屬性

 

    !* 

    MPTEMP,,,,,,,, 

    MPTEMP,1,0 

    MPDATA,EX,1,,2e11  

    MPDATA,PRXY,1,,0.3

    MPTEMP,,,,,,,, 

    MPTEMP,1,0 

    MPDATA,DENS,1,,7800 

 

    !3.建立幾何模型

    !(1)顯示工作平面

    WPSYYLE,,,,,,,,1

    !(2)建立模型

    BLOCK,0,10,0,20,0,2,

    /REPLO 

    wpoff,3,5,0

    /REPLO 

    CYLIND,1, ,0,10,0,360,

    /REPLO 

    wpoff,0,10,0

    CYLIND,1, ,0,10,0,360, 

    wpoff,0,-5,0

    CYLIND,1, ,0,10,0,360,

    wpoff,4,0,0

    CYLIND,1, ,0,10,0,360, 

    wpoff,0,5,0

    CYLIND,1, ,0,10,0,360, 

    wpoff,0,-10,0  

    CYLIND,1, ,0,10,0,360, 

    !(3)體布爾操作

    FLST,3,6,6,ORDE,2  

    FITEM,3,2  

    FITEM,3,-7 

    VSBV,       1,P51X 

    !4.生成有限元模型

    /REPLO 

    FINISH 

    /AUX12 

    FINISH 

    /PREP7 

    MSHAPE,1,3D

    MSHKEY,0

    !* 

    CM,_Y,VOLU 

    VSEL, , , ,       8

    CM,_Y1,VOLU

    CHKMSH,'VOLU'  

    CMSEL,S,_Y 

    !* 

    VMESH,_Y1  

    !* 

    CMDELE,_Y  

    CMDELE,_Y1 

    CMDELE,_Y2 

    !* 

 

    !5.加載以及求解

    !(1)加載

    //REPLO 

    VPLOT  

    FINISH 

    /SOL

    FLST,2,1,5,ORDE,1  

    FITEM,2,3  

    !* 

    /GO

    DA,P51X,ALL,0

 

    /REPLO 

    FLST,2,1,4,ORDE,1  

    FITEM,2,7  

    /GO

    FLST,2,1,5,ORDE,1  

    FITEM,2,4  

    /GO

    !* 

    SFA,P51X,1,PRES,1000

    !* 

    /STATUS,SOLU

    SOLVE  

    FINISH 

    /POST1 

    !* 

    PLDISP,2

    !* 

/EFACET,1  

PLNSOL, S,EQV, 0,1.0


參考文獻(xiàn)

[1] 師訪編.ANSYS二次開(kāi)發(fā)及應(yīng)用實(shí)例講解[M].中國(guó)水利水電出版社.2012.1

[2] 隋麗娜,遲劍,郭立峰編. Visual Basic范例開(kāi)發(fā)大全[M].清華大學(xué)出版社.

[3] 張艷.Visual Basic程序設(shè)計(jì)教程[M].徐州:中國(guó)礦業(yè)大學(xué)出版社,2001.

[4] 龔曙光,謝桂蘭. ANSYS操作命令與參數(shù)化編程[M].北京:機(jī)械工業(yè)出版社,2004.

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

2
1