基于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)):
數(shù)值實(shí)施
在超彈性理論中,可以將應(yīng)變能函數(shù)分成兩部分處理,即偏應(yīng)變能部分和體積應(yīng)變能部分。本節(jié)使用的模型偏應(yīng)變能函數(shù)采用Horgan-Saccomandi建議的形式:
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.
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















