APDLサンプル:単純支持梁の曲げ

薄板の単純な曲げ計算を実施するサンプルです。スクリプトのみで動作が完結します。

モデルの設定は私が非常勤講師としてお手伝いをしている名城大学のメカトロニクス実験で学生が実施している材料変形の実験から。
実働コードは下記の通り。l=300,w=30、tはスイッチにより3水準で可変としてあります。市販の金属板板厚相当ということで。

材料/厚さ水準水準1水準2水準3
SS400相当2.3[mm]3.2[mm]4.5[mm]
SUS304相当2.0[mm]3.0[mm]4.0[mm]
A5052相当3.0[mm]4.0[mm]5.0[mm]
真鍮相当3.0[mm]4.0[mm]5.0[mm]

本当は実際の試験結果と突き合わせるとよいのですが、私の手元には保存していないので計算のみ。

!APDL_sample1.txt
!単純支持梁の曲げ計算
finish
/clear
/prep7
!パラメータリスト=============================================
!varMarNum:材料スイッチ
!1:SS400相当
!2:SUS304相当
!3:A5052相当
!4:Brass相当
varMatNum=1
!梁の厚さスイッチ:
!薄(1)・中(2)・厚(3)の3パターン。材料によって異なる値を取る。
varBeamThinNum=1
!varBeamLength
varBeamLength=300
varBeamOverhang=10
varBeamWidth=30
*if,varMatNum,eq,1,then
*if,varBeamThinNum,eq,1,then
varBeamThin=2.3
*elseif,varBeamThinNum,eq,2,then
varBeamThin=3.2
*elseif,varBeamThinNum,eq,3,then
varBeamThin=4.5
*endif
*elseif,varMatNum,eq,2,then
*if,varBeamThinNum,eq,1,then
varBeamThin=2.0
*elseif,varBeamThinNum,eq,2,then
varBeamThin=3.0
*elseif,varBeamThinNum,eq,3,then
varBeamThin=4.0
*endif
*elseif,varMatNum,eq,3,then
*if,varBeamThinNum,eq,1,then
varBeamThin=3.0
*elseif,varBeamThinNum,eq,2,then
varBeamThin=4.0
*elseif,varBeamThinNum,eq,3,then
varBeamThin=5.0
*endif
*elseif,varMatNum,eq,4,then
*if,varBeamThinNum,eq,1,then
varBeamThin=3.0
*elseif,varBeamThinNum,eq,2,then
varBeamThin=4.0
*elseif,varBeamThinNum,eq,3,then
varBeamThin=5.0
*endif
*endif
!荷重ステップ条件(N/step)
varForceStep=6.0
varForceStepNum=5
!固定パラメータ=============================================
!材料物性[すべて線形]
!ヤング率[MPa]
*if,varMatNum,eq,1,then
mp,ex,1,210000
*elseif,varMatNum,eq,2,then
mp,ex,1,193000
*elseif,varMatNum,eq,3,then
mp,ex,1,70600
*elseif,varMatNum,eq,4,then
mp,ex,1,100000
*endif
!ポアソン比:全て0.3とする。
mp,prxy,1,0.3
!SOLID185:六面体8節点構造ソリッド要素
et,1,185
!モデル形状作成====================================
csys,0
blc4,0,0,varBeamLength/2,varBeamThin,-varBeamWidth/2
!厚さ方向3分割
lsel,s,length,,varBeamThin
lesize,all, , ,3, , , , ,1
!幅方向5分割
lsel,s,length,,varBeamWidth/2
lesize,all, , ,5, , , , ,1
!長さ方向30分割
lsel,s,length,,varBeamLength/2
lesize,all, , ,30, , , , ,1
allsel
type,1
mat,1
mshkey,1
vmesh,all
asel,s,loc,x,varBeamLength/2
extopt,esize,2,0,
extopt,aclear,1
extopt,attr,1,0,0
vext,all, , ,varBeamOverhang,0,0,
allsel
!拘束条件の定義
!荷重負荷節点
varForceNode=node(0,varBeamThin,0)
!支点
lsel,s,loc,y,0
lsel,r,loc,x,varBeamLength/2
cm,cmLineStay,line
DL,cmLineStay, ,UY,0
allsel
!対称面(X方向)
asel,s,loc,x,0
DA,all,SYMM
allsel
!対称面(Z方向)
asel,s,loc,z,0
DA,all,SYMM
allsel
!画面表示設定
/SHOW,WIN32C
/DEVICE,VECTOR,0
/DEVICE,BBOX,1
/DEVICE,DITHER,1
/DEVICE,ANIM,BMP
/PLOPTS,INFO,2
/PLOPTS,LEG1,1
/PLOPTS,LEG2,0
/PLOPTS,LEG3,1
/PLOPTS,FRAME,1
/PLOPTS,TITLE,1
/PLOPTS,MINM,1
/PLOPTS,FILE,0
/PLOPTS,LOGO,0
/PLOPTS,WINS,1
/PLOPTS,WP,0
/PLOPTS,DATE,0
/TRIAD,LBOT
/color,smax,red
/color,smin,blue
/TYPE,1,6
/CPLANE,0
/SHADE,1,2
/HBC,1,0
/PNUM,KP,0
/PNUM,LINE,0
/PNUM,AREA,0
/PNUM,VOLU,0
/PNUM,NODE,0
/PNUM,TABN,0
/PNUM,SVAL,0
/NUMBER,1
!*
/PNUM,MAT,1
/REPLOT
/VIEW,1,1,1,1
/ANG,1
/REP,FAST
/solu
!静的構造解析
antype,0
!大変形オプション
nlgeom,1
solc,on
nsubst,100,1e6,1
do,i,1,varForceStepNum F,varForceNode,FY,-varForceStepi
solve
*enddo
!結果表示(最終StepのY方向変位)
/post1
set,last
!*
/efacet,1
plnsol, u,y, 1,1.0
/cont,1,,-4,0.25,0
/replot
save

全て独学の我流なので、もう少し効率の良い作り方などあるかもしれません。
次回は結果整理用のスクリプトについて。