涉及接触以及螺栓预紧
finish
/clear
!!!!!!!!!!!!!!!!环境设置!!!!!!!!!!!!!!!!!!!!!!!!!
/filn,flange
/title,flang_bolt
!设定结构基本参数,单位N,mm,MPa.密度为tons/mm3
*SET,PN,4 !工作压力
!结构尺寸参数遵循图形
*SET,DN,900
*SET,D,1115
*SET,D1,1055
*SET,D2,1010
*SET,D3,1000
*SET,D4,997
*SET,dta,86
*SET,H,170
*SET,xh,42
*SET,a,3
*SET,a1,3
*SET,dta1,24
*SET,dta2,36
*SET,R,15
*SET,xd,33
*SET,h1,225
*SET,h2,50
*SET,L,2.5*((DN/2+0.5*dta1)*dta1)**0.5 !筒体长
*SET,N,360/96 !法兰分度数
*SET,nut_rad,50.85/2 !螺母半径
*SET,nut_h,25.6 !螺母高度
*SET,bolt_h,250 !螺栓高度
*SET,forc_bolt,35000 !螺栓预紧力
/prep7 !进入前处理器
et,1,solid45 !实体单元
et,2,TARGE170 !3D接触目标面单元170
et,3,CONTA174 !3D接触接触面单元174
keyopt,3,9,0 !包含初始化穿透
*AFUN,DEG !设定角度单位为度数
!定义法兰材料1
mp,ex,1,2.16e5 !设定弹性模量
mp,nuxy,1,0.3 !定义泊松比
mp,dens,1,7.85e-9 !定义密度
!定义螺栓材料2
mp,ex,2,2.11e5 !设定弹性模量
mp,nuxy,2,0.3 !定义泊松比
mp,dens,2,7.85e-9 !定义密度
!定义摩擦系数为材料3
mp,mu,3,0.3
!!!!!!!!!!!!!!创建上法兰!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!创建关键点
k,1,DN/2,a+H
k,2,DN/2+dta1,a+H
k,3,DN/2+dta1,a+xh+dta
k,4,DN/2+dta2,a+dta
k,5,D1/2,a+dta
k,6,D/2,a+dta
k,7,D/2,a
k,8,D1/2,a
k,9,D4/2,a
k,10,D4/2,0
k,11,DN/2,0
k,12,DN/2,a+dta
k,13,DN/2,a+dta+xh
!通过关键点连线
*do,ii,1,12
l,ii,ii+1
*enddo
l,1,13
lfillt,2,3,R !创建倒角
lfillt,3,4,R !创建倒角
l,13,14
l,12,17
l,17,9
l,5,8
!连线构面
al,1,2,16,13
al,16,14,3,15,17,12
al,17,18,9,10,11
al,4,19,8,18
al,5,6,7,19
cm,flang_up,area !创建上法兰面积组件
!!!!!!!!!!!!!上法兰创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!创建下法兰!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!创建关键点
k,18,DN/2,a-a1
k,19,D3/2,a-a1
k,20,D3/2,a
k,21,D1/2,a
k,22,D/2,a
k,23,D/2,a-a1-dta
k,24,D1/2,a-a1-dta
k,25,D3/2,a-a1-dta
k,26,DN/2+dta2,a-a1-dta
k,27,DN/2+dta1,a-a1-dta-xh
k,28,DN/2+dta1,a-a1-H
k,29,DN/2,a-a1-H
k,30,DN/2,a-a1-dta-xh
k,31,DN/2,a-a1-dta
!通过关键点连线
*do,ii,18,30
l,ii,ii+1
*enddo
l,18,31
lfillt,27,28,R
lfillt,28,29,R
l,30,35
l,31,32
l,21,24
l,19,25
!连线构面
al,29,30,31,36
al,35,36,32,37,34,28
al,20,39,27,37,33
al,21,22,38,26,39
al,23,24,25,38
asel,u,area,,flang_up !选择除flang_up之外的所有面
cm,flang_down,area !创建下法兰面积组件
!!!!!!!!!!!!!下法兰创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!创建椭圆封头!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
k,,0,a+H+h2 !创建封头所处位置关键点
circle,36,1 !创建单位长圆
KWPAVE,36 !将工作平面移置于新设定点
CSYS,4 !激活随工作平面的坐标系
lsscale,40,43,1,DN/2+dta1,h1+dta1,,,1 !对单位圆按照椭圆比例进行缩放(外表面)
lsscale,40,43,1,DN/2,h1,,,1 !对单位圆按照椭圆比例进行缩放(内表面)
ldele,49,51,1,1 !删除多余的线段
ldele,45,47,1,1
ldele,40,43,1,1
wpstyl,defa !恢复工作平面至默认状态
l,45,41 !连接封头端、尾
l,42,46
l,1,45 !连接封头与法兰
l,2,41
!由线构成封头面
al,40,42,1,43
al,44,40,48,41
asel,u,area,,flang_down !选择构成封头的所有面
cm,coping,area !创建封头面积组件
!!!!!!!!!!!!!封头创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!创建筒体!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
allsel
k,,DN/2,a-a1-H-L !创建筒体底端位置点
k,,DN/2+dta1,a-a1-H-L
a,28,29,37,38 !连接筒体与下法兰,构成面
asel,u,area,,flang_up
asel,u,area,,flang_down
asel,u,area,,coping !排除筒体之外的所有面
cm,pot,area !创建筒体面积组件
!!!!!!!!!!!!!筒体创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!布尔操作,将面与面之间粘接!!!!!!!!!!!!!
asel,s,area,,flang_up
asel,a,area,,coping
aglue,all !将封头与上法兰面粘接
asel,s,area,,flang_down
asel,a,area,,pot
aglue,all !将筒体与下法兰面粘接
kdele,36 !删除建模过程中辅助点
!!!!!!!!!!!!!布尔操作完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
allsel
vrotat,all,,,,,,42,46,N !将所有的面绕y轴旋转N度,创建体
!!!!!!!!!!!!!创建螺栓!!!!!!!!!!!!!
KL,76,0.5, , !设定关键点平分线76,该点为螺栓中心所在
KWPAVE,77 !将工作平面移动至该点
wprota,0,90 !将工作平面绕x轴旋转90度
cyl4,,,xd/2,,,,bolt_h !创建螺栓
!将与螺栓相交的体组成一个组件,以便选取
vsel,s,volu,,4,5,1
vsel,a,volu,,9,10,1
cm,buer,volu !创建与螺栓相交的体积组件buer
allsel
bopt,numb,off
vsbv,buer,14 !将组件buer与螺栓进行布尔操作,挖出螺栓孔洞
cyl4,,,xd/2,,,,bolt_h !创建螺栓,体积编号为4
VGEN,,4,,,,,-(bolt_h/2-dta-a),,,1 !将螺栓平移至合适位置
rpr4,6,,,nut_rad,,-nut_h !创建螺母
vgen,2,5,,,,,2*dta+a1+nut_h,,,0 !复制螺母至合适位置
!!!!!!!!!!!!!螺栓创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!创建各部分体积组件方便选择!!!!!!!!!!!!!
vsel,s,volu,,4,5,1
vsel,a,volu,,9
vptn,all
cm,bvolu,volu !创建螺栓组件
allsel
wpstyl,defa
vsel,s,loc,y,-H-L,a1
vsel,u,volu,,bvolu
cm,flang_dvolu,volu !创建下法兰组件
allsel
vsel,s,loc,y,a1,H
vsel,u,volu,,bvolu
cm,flang_upvolu,volu !创建上法兰组件
allsel
vsel,s,loc,y,H+a,H+h1+dta1
cm,cop_volu,volu !创建封头组件
!!!!!!!!!!!!!!!划分网格!!!!!!!!!!!!!!!!!!!!!!!!!!!!
mat,1 !指定材料
esize,5 !指定单元大小
cmsel,s,cop_volu !选中封头组件
vsweep,all !对封头分网
esize,5 !指定单元大小
cmsel,s,flang_dvolu !选中下法兰组件
vsweep,all !对下法兰分网
cmsel,s,flang_upvolu !选中上法兰组件
vsweep,all !对上法兰分网
esize,4 !指定单元大小
mat,2 !指定材料
cmsel,s,bvolu !选中螺栓组件
vsweep,all !对螺栓分网
!!!!!!!!!!!!!网格划分完毕!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!对模型节点进行压缩合并!!!!!!!!!!!!!!!!!!!!!
!合并上法兰节点
allsel
vsel,s,loc,y,0,2*H
vsel,u,volu,,bvolu
nslv,s,1
nummrg,node
!合并下法兰节点
allsel
vsel,s,loc,y,-(H+L),a1
vsel,u,volu,,bvolu
nslv,s,1
nummrg,node
!!!!!!!!!!!!!节点合并完毕!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!建立螺栓预紧单元!!!!!!!!!!!!!!!!!!!!!
allsel
!在0号坐标系下,对螺栓1(14号体积)建立预紧单元,secid为1,name为bolt1
!预紧单元方向为y轴,位置为y向0位置处,同时将预紧单元存储于bolt_1单元组件中,预紧单元pretention179无需预先定义
psmesh,1,bolt1,,volu,14,0,y,0,,,,bolt_1
!!!!!!!!!!!!!螺栓预紧单元建立完毕!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!创建接触!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!创建凹面接触单元
cmsel,s,flang_upvolu !选择上法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,y,0 !通过坐标选择法兰上的接触面
cm,as_up,area !建立上法兰接触面组件as_up
allsel
cmsel,s,flang_dvolu !选择下法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,y,a-a1 !通过坐标选择法兰上的接触面
asel,r,loc,x,0,D3/2
cm,as_down,area !建立下法兰接触面组件as_down
r,1 !定义接触实常数1
real,1 !指定实常数1
mat,3 !指定材料3
cmsel,s,as_up !选择上法兰接触面组件as_up
type,2 !指定单元接触类型2
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
allsel
cmsel,s,as_down !选择下法兰接触面组件as_down
type,3 !指定单元接触类型3
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
!创建凸面接触单元
allsel
cmsel,s,flang_upvolu !选择上法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,y,a !通过坐标选择法兰上的接触面
cm,as_up1,area !建立上法兰接触面组件as_up1
allsel
cmsel,s,flang_dvolu !选择下法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,y,a !通过坐标选择法兰上的接触面
cm,as_down1,area !建立下法兰接触面组件as_down1
et,5,TARGE170 !定义目标单元170
et,6,CONTA174 !定义接触单元174
keyopt,6,9,0 !包含初始化穿透
r,2 !定义接触实常数2
real,2 !指定实常数2
mat,3 !指定材料3
cmsel,s,as_up1 !选择上法兰接触面组件as_up1
type,5 !指定单元接触类型5
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
allsel
cmsel,s,as_down1 !选择下法兰接触面组件as_down1
type,6 !指定单元接触类型6
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
!创建螺母与上法兰接触
allsel
cmsel,s,bvolu !选择螺栓体积组件
KWPAVE,77 !将工作平面移至77点
wprota,0,90 !将工作平面绕x轴旋转90度
aslv !选择依附于体上的面
asel,r,loc,z,0 !通过坐标选择螺栓上的接触面
asel,u,area,,104 !删除螺栓柱面,保留螺母面
cm,b_up,area !创建螺母与上法兰接触面组件b_up
cmsel,s,flang_upvolu !选择上法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,z,0 !通过坐标选择上法兰上的目标面
asel,r,loc,x,-(D-D1)/2,(D-D1)/2
cm,f_up,area !创建上法兰与螺母目标面组件f_up
cmsel,s,bvolu !选择螺栓体积组件
aslv !选择依附于体上的面
asel,r,loc,z,2*dta+a1 !通过坐标选择螺栓与下法兰的接触面
asel,u,area,,108 !删除螺栓柱面,保留螺母面
cm,b_down,area !创建螺母与下法兰接触面组件b_down
cmsel,s,flang_dvolu !选择下法兰体积组件
aslv !选择依附于体上的面
asel,r,loc,z,2*dta+a1 !通过坐标选择螺栓与下法兰的目标面
asel,r,loc,x,-(D-D1)/2,(D-D1)/2
cm,f_down,area !创建螺母与下法兰目标面组件f_down
et,7,TARGE170 !定义目标单元170
et,8,CONTA174 !定义接触单元174
keyopt,8,9,0 !包含初始化穿透
r,3 !定义接触实常数3
real,3 !指定实常数3
mat,3 !指定材料3
cmsel,s,b_up !选择螺母与上法兰接触面组件b_up
type,7 !指定单元接触类型7
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
allsel
cmsel,s,f_up !选择上法兰与螺母目标面组件f_up
type,8 !指定单元接触类型8
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
!创建螺母与下法兰接触
et,9,TARGE170 !定义目标单元170
et,10,CONTA174 !定义接触单元174
keyopt,10,9,0 !包含初始化穿透
r,4 !定义接触实常数4
real,4 !指定实常数4
mat,3 !指定材料3
cmsel,s,b_down !选择螺母与下法兰接触面组件b_down
type,9 !指定单元接触类型9
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
allsel
cmsel,s,f_down !选择螺母与下法兰目标面组件f_down
type,10 !指定单元接触类型10
nsla,s,1 !选择接触面上的所有节点,包括边界点
esln,s,0 !选择依附于这些节点的单元
esurf,all !构建接触单元
!!!!!!!!!!!!接触创建完毕!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FINISH
/SOL !进入求解处理器
allsel
lsclear,all !清空所有载荷
NROPT,Full !激活完全Newton-Raphson
pred,on !打开变形预测
lnsrch,on !激活线性搜索
antype,0 !静态分析
autots,1 !自动时间步长
nsubst,25,100,1 !设置载荷步
outres,all,all !输出所有结果
eqslv,pcg,1e-8 !采用pcg算法,对于大模型接触算法很有效
wpstyl,defa !将工作平面恢复至默认状态
csys,5 !激活柱坐标系(以y轴为旋转轴)
asel,s,loc,y,0 !通过坐标选择角度为0的面
asel,a,loc,y,-N !通过坐标选择角度为-N的面
da,all,symm !施加对称边界条件
csys,0 !激活笛卡尔坐标系
cmsel,s,flang_dvolu !选择下法兰体积组件
nslv,r,1 !选择依附于体积上的节点
nsel,r,loc,y,a-a1-H-L !选择筒体底端节点
d,all,uy !施加y向位移约束
allsel
sload,1,9,lock,forc,forc_bolt,1,2 !在螺栓中施加螺栓预紧
!第一载荷步中施加载荷大小为forc_bolt的预紧力,在第二个载荷步中锁住其位移,最终产生预紧效果
time,10 !设置时间步长为10
allsel
lswrite,1 !写出第一个载荷步文件
time,20 !设置时间步至20
lswrite,2 !写出第二个载荷步文件
!对容器壁施加内压
asel,s,area,,68 !选中编号为68的面
nsla,s,1 !选择依附于面上的节点
csys,5 !激活柱坐标系(以y轴为旋转轴)
nsel,a,loc,x,DN/2 !通过坐标选择内壁上的节点
sf,all,pres,PN !对内壁施加压强,大小为PN
allsel
time,30 !设置时间步至30
lswrite,3 !写出第三个载荷步文件
lssolve,1,3,1 !计算载荷步1-3
/post1 !进入通用后处理
set,last !读取最后结果
PLNSOL,S,EQV,0,1 !输出Von Mises应力结果
cmsel,s,bvolu !选择螺栓组件
eslv,s,1 !选中依附于体积的单元
nslv,s,1 !选中依附于体积的节点
PLNSOL,S,EQV,0,1 !输出Von Mises应力结果
cmsel,s,flang_dvolu !选择下法兰组件
eslv,s,1 !选中依附于体积的单元
nslv,s,1 !选中依附于体积的节点
PLNSOL,S,EQV,0,1 !输出Von Mises应力结果