/title,nan hu da dao zhan
几何参数设置(根据工程修改) ! 顶板厚度 d1=0.8
! 楼板厚度 d2=0.4
! 底板厚度 d3=0.9
! 两侧墙厚度 d4=0.7
! 支柱等效厚度
zhuchang=1.0 柱长 zhukuan=0.7 柱宽 zhuju=8 柱距
d5=(zhuchang*zhukuan**3/zhuju)**(1/3) !围护结构等效厚度 d6=0.8 ! 跨度
w1=10 支柱离左侧墙距离 nw1=10 划分数
w2=10 支柱离右侧墙距离 nw2=10 划分数 !中板距顶板 h1=5
nh1=5 划分数 !中板距底板 h2=5
nh2=5 划分数 !底板距连续墙底 h3=7
nh3=7 划分数 !顶板距连续墙顶 h4=2
nh4=2 划分数
!围护结构与侧墙距离(侧墙单元别小于nn,它用来选择单元来用的) nn=0.9
荷载参数(根据工程修改)
! 顶板水土压力加超载 p1=80*1000
! 楼板荷载,恒载加活载 p2=6*1000 ! 底板水压 p3=130*1000
!围护结构顶水平土压 qt1=10*1000
!围护结构底水平土压,可以将土从中板处分层两个线性荷载来施加 qt2=64*1000
!围护结构底水平土压 qt3=100*1000 !侧墙顶水压 qw1=30*1000 !侧墙底水压 qw2=p3
物理参数 ! c30
! 衬砌容重 r1=25e3*1
! 衬砌弹性模量 e1=30e9
! 衬砌泊松比 u1=0.2
! c40
! 衬砌容重 r2=25e3*1
! 衬砌弹性模量 e2=32.5e9 ! 衬砌泊松比 u2=0.2
! 围岩弹性抗力系数,和单元划分细密有关,尽量将单元划分为1米长 k1=10e6 底板竖向基床系数 k3=12e6 水平基床系数
!链杆单元弹性模量,按C30取
k2=1e13 可以取个大数吧
定义单元类型、实常数、材料属性。 /prep7
! 定义梁单元 et,1,beam3
! 定义链杆单元 et,2,link10
keyopt,2,3,1 !设为只受压 ! 定义弹簧单元 et,3,combin14
! 定义实常数
! 定义梁单元的面积、惯性矩和梁高 r,1,d1,d1*d1*d1/12,d1 r,2,d2,d2*d2*d2/12,d2 r,3,d3,d3*d3*d3/12,d3 r,4,d4,d4*d4*d4/12,d4 r,5,d5,d5*d5*d5/12,d5
r,6,d6,d6*d6*d6/12,d6 围护结构若考虑刚度折减,则在此惯性矩可乘个系数
! 定义弹簧单元的弹性系数 r,7,k1 底板竖向基床系数 r,9,k3 水平基床系数
! 定义链杆单元的实常数(面积) r,8,1
! 定义材料属性 ! 衬砌材料属性,C30 mp,ex,1,e1 mp,prxy,1,u1 mp,dens,1,r1/10
! 衬砌材料属性,C40 mp,ex,2,e2 mp,prxy,2,u2 mp,dens,2,r2/10
! 链杆单元属性 mp,ex,3,k2
建立几何模型。 ! 创建隧道支护控制关键点 k,1,-w1,0 k,2,0,0 k,3,w2,0 k,4,-w1,h2 k,5,0,h2 k,6,w2,h2
k,7,-w1,h2+h1 k,8,0,h2+h1 k,9,w2,h2+h1 K,10,w2+nn,-h3 K,11,w2+nn,0 K,12,w2+nn,h2 K,13,w2+nn,h2+h1 K,14,w2+nn,h2+h1+h4 K,15,-w1-nn,-h3 K,16,-w1-nn,0 K,17,-w1-nn,h2 K,18,-w1-nn,h2+h1 K,19,-w1-nn,h2+h1+h4
! 生成线 l,1,2 l,2,3 l,4,5 l,5,6 l,7,8 l,8,9 l,1,4 l,4,7 l,3,6 l,6,9 l,2,5 l,5,8 l,10,11 l,11,12 l,12,13 l,13,14 l,15,16 l,16,17 l,17,18
l,18,19
单元网格划分。 ! 底板 lsel,s,line,,1 lesize,all,,,nw1 latt,2,3,1 lmesh,all lsel,s,line,,2 lesize,all,,,nw2 latt,2,3,1 lmesh,all ! 中板 lsel,s,line,,3 lesize,all,,,nw1 latt,2,2,1 lmesh,all lsel,s,line,,4 lesize,all,,,nw2 latt,2,2,1 lmesh,all ! 顶板 lsel,s,line,,5 lesize,all,,,nw1 latt,2,1,1 lmesh,all lsel,s,line,,6 lesize,all,,,nw2 latt,2,1,1 lmesh,all !侧墙
lsel,s,line,,7,9,2 lesize,all,,,nh2 latt,2,4,1 lmesh,all !!
lsel,s,line,,8,10,2 lesize,all,,,nh1 latt,2,4,1 lmesh,all !中柱
lsel,s,line,,11 lesize,all,,,nh2
latt,2,5,1 lmesh,all lsel,s,line,,12 lesize,all,,,nh1 latt,2,5,1 lmesh,all !围护
lsel,s,line,,13,17,4 lesize,all,,,nh3 latt,1,6,1 lmesh,all
lsel,s,line,,14,18,4 lesize,all,,,nh2 latt,1,6,1 lmesh,all
lsel,s,line,,15,19,4 lesize,all,,,nh1 latt,1,6,1 lmesh,all
lsel,s,line,,16,20,4 lesize,all,,,nh4 latt,1,6,1 lmesh,all
创建弹簧单元 ! 显示节点 nplot
! 显示节点编号 /pnum,node,1 /replot
! 确定单元类型 type,3
! 赋予弹簧单元实常数 real,7
! 创建底板弹簧单元 !选择底板节点 nsel,s,loc,y,0
nsel,r,loc,x,-w1,w2 ngen,2,300,all,,,,-0.9 *do,i,1,nw1+nw2+1,1 e,i,i+300 *enddo
!创建左围护结构水平弹簧单元 type,3 real,9
nsel,s,loc,x,-w1-nn
nsel,u,loc,y,-0.1,h1+h2+0.1 ngen,2,400,all,,,-1 nsel,r,loc,x,-w1-nn
*get,Node,node,0,count *get,Nmin,node,0,num,min *dim,P,array,Node,2,1
k=Nmin !令K等于所选取最小节点号
*do,i,1,Node,1 P(i,1)=k !保存当前节点号 P(i,2)=P(i,1)+400
k=ndnext(k) !令K等于下一个所选取节点号 *enddo
*do,i,1,Node,1 e,P(i,1),P(i,2) *enddo k= Node= Nmin=
!创建右围护结构弹簧单元 type,3 real,9
nsel,s,loc,x,w2+nn
nsel,u,loc,y,-0.1,h1+h2+0.1 ngen,2,700,all,,,1 nsel,r,loc,x,w2+nn
*get,Node,node,0,count *get,Nmin,node,0,num,min *dim,P,array,Node,2,1
k=Nmin !令K等于所选取最小节点号
*do,i,1,Node,1 P(i,1)=k !保存当前节点号 P(i,2)=P(i,1)+700
k=ndnext(k) !令K等于下一个所选取节点号 *enddo
*do,i,1,Node,1 e,P(i,1),P(i,2) *enddo k=
Node= Nmin=
创建链杆单元。 创建左侧链杆单元 nsel,s,loc,x,-w1
nsel,r,loc,y,-0.1,h1+h2+0.1
*get,Node,node,0,count *get,Nmin,node,0,num,min *dim,P,array,Node,2,1 nsel,s,loc,x,-w1 nsel,a,loc,x,-w1-nn
nsel,r,loc,y,-0.1,h1+h2+0.1
k=Nmin !令K等于所选取最小节点号
*do,i,1,Node,1 P(i,1)=k !保存当前节点号 P(i,2)=nnear(P(i,1))
k=ndnext(k) !令K等于下一个所选取节点号 *enddo type,2 real,8 mat,3
*do,i,1,Node,1 e,P(i,1),P(i,2) *enddo k= Node= Nmin=
创建右侧链杆单元 nsel,s,loc,x,w2
nsel,r,loc,y,-0.1,h1+h2+0.1
*get,Node,node,0,count *get,Nmin,node,0,num,min *dim,P,array,Node,2,1 nsel,s,loc,x,w2 nsel,a,loc,x,w2+nn
nsel,r,loc,y,-0.1,h1+h2+0.1
k=Nmin !令K等于所选取最小节点号
*do,i,1,Node,1 P(i,1)=k !保存当前节点号
P(i,2)=nnear(P(i,1))
k=ndnext(k) !令K等于下一个所选取节点号 *enddo type,2 real,8 mat,3
*do,i,1,Node,1 e,P(i,1),P(i,2) *enddo k= Node= Nmin= finish
加载与求解 /solu
! 对弹簧施加约束 alls
nsel,s,loc,x,-w1-nn-1 nsel,a,loc,x,w2+nn+1
d,all,ux,0,,,,,uy 对水平弹簧约束 alls
nsel,s,loc,y,-0.9
d,all,ux,0,,,,,uy 对底板弹簧约束
allsel,all
nsel,s,loc,y,-h3
d,all,uy,0 对围护结构底施加竖向约束
allsel,all
nsel,s,loc,y,h1+h2 nsel,r,loc,x,-w1 d,all,uy,0 allsel,all
nsel,s,loc,y,h1+h2 nsel,r,loc,x,w2
d,all,uy,0 相当于压顶梁的作用,若抗浮满足,则这两个约束可取消 alls
nsel,s,loc,x,0 nsel,r,loc,y,0
d,all,ux,0 底板某点施加水平约束
allsel,all
acel,0,10,0 施加重力荷载
加载
!施加顶板荷载 alls
esel,s,real,,1 sfbeam,all,1,pres,p1
!施加底板水压 allsel,all esel,s,real,,3 sfbeam,all,1,pres,-p3
!施加楼板荷载 allsel,all esel,s,real,,2 sfbeam,all,1,pres,p2
左侧墙水压
allsel,all esel,s,real,,4 nsle,s nsel,r,loc,x,-w1 esln,r,1
*get,Nelm,elem,0,count *get,Emin,elem,0,num,min *dim,P,array,Nelm,3,1 !数组第1列储存单元号
k=Emin *do,i,1,Nelm P(i,1)=k k=elnext(k) *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
P(i,2)=qw2-(qw2-qw1)*ny(m1)/(h1+h2) P(i,3)=qw2-(qw2-qw1)*ny(m2)/(h1+h2) !读取所选取单元总数
!读取所选取单元中最小单元号 定义一个Nelm行3列的数组 !令K等于所选取单元中最小单元号 !保存当前单元号
!令K等于下一个所选取单元号 !
*enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,P(i,2),P(i,3) *enddo
右侧墙水压
allsel,all esel,s,real,,4 nsle,s nsel,r,loc,x,w2 esln,r,1
*get,Nelm,elem,0,count !读取所选取单元总数
*get,Emin,elem,0,num,min !读取所选取单元中最小单元号 *dim,P,array,Nelm,3,1 !定义一个Nelm行3列的数组 !数组第1列储存单元号
k=Emin !令K等于所选取单元中最小单元号 *do,i,1,Nelm P(i,1)=k !保存当前单元号
k=elnext(k) !令K等于下一个所选取单元号 *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
P(i,2)=qw2-(qw2-qw1)*ny(m1)/(h1+h2) P(i,3)=qw2-(qw2-qw1)*ny(m2)/(h1+h2) *enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,-P(i,2),-P(i,3) *enddo
左围护墙荷载 allsel,all
esel,s,real,,6 nsel,r,loc,x,-w1-nn
nsel,r,loc,y,h2,h1+h2+h4 esln,r,1
*get,Nelm,elem,0,count !读取所选取单元总数
*get,Emin,elem,0,num,min !读取所选取单元中最小单元号 *dim,P,array,Nelm,3,1 !定义一个Nelm行3列的数组 !数组第1列储存单元号
k=Emin !令K等于所选取单元中最小单元号
*do,i,1,Nelm P(i,1)=k !保存当前单元号
k=elnext(k) !令K等于下一个所选取单元号 *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
p(i,2)=qt2-(qt2-qt1)*ny(m1)/(h1+h2+h4) p(i,3)=qt2-(qt2-qt1)*ny(m2)/(h1+h2+h4) *enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,p(i,2),p(i,3) *enddo
allsel,all
esel,s,real,,6 nsel,r,loc,x,-w1-nn nsel,r,loc,y,0,h2 esln,r,1
*get,Nelm,elem,0,count *get,Emin,elem,0,num,min *dim,P,array,Nelm,3,1 !数组第1列储存单元号
k=Emin *do,i,1,Nelm P(i,1)=k k=elnext(k) *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
p(i,2)=qt3-(qt3-qt2)*ny(m1)/h2 p(i,3)=qt3-(qt3-qt2)*ny(m2)/h2 *enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,p(i,2),p(i,3) *enddo
allsel,all esel,s,real,,6 nsle,s
!读取所选取单元总数
!读取所选取单元中最小单元号 定义一个Nelm行3列的数组 !令K等于所选取单元中最小单元号 !保存当前单元号
!令K等于下一个所选取单元号 ! nsel,r,loc,x,-w1-nn nsel,r,loc,y,-h3,0 esln,r,1
sfbeam,all,1,pres,qt3
右围护墙荷载 allsel,all
esel,s,real,,6 nsel,r,loc,x,w2+nn
nsel,r,loc,y,h2,h1+h2+h4 esln,r,1
*get,Nelm,elem,0,count *get,Emin,elem,0,num,min *dim,P,array,Nelm,3,1 !数组第1列储存单元号
k=Emin *do,i,1,Nelm P(i,1)=k k=elnext(k) *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
p(i,2)=qt2-(qt2-qt1)*ny(m1)/(h1+h2+h4) p(i,3)=qt2-(qt2-qt1)*ny(m2)/(h1+h2+h4) *enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,-p(i,2),-p(i,3) *enddo
allsel,all
esel,s,real,,6 nsel,r,loc,x,w2+nn nsel,r,loc,y,0,h2 esln,r,1
*get,Nelm,elem,0,count *get,Emin,elem,0,num,min *dim,P,array,Nelm,3,1 !数组第1列储存单元号
!读取所选取单元总数
!读取所选取单元中最小单元号 定义一个Nelm行3列的数组 !令K等于所选取单元中最小单元号 !保存当前单元号
!令K等于下一个所选取单元号 !读取所选取单元总数
!读取所选取单元中最小单元号 定义一个Nelm行3列的数组 ! !k=Emin !令K等于所选取单元中最小单元号 *do,i,1,Nelm P(i,1)=k !保存当前单元号
k=elnext(k) !令K等于下一个所选取单元号 *enddo
*do,i,1,Nelm
m1=nelem(P(i,1),1) m2=nelem(P(i,1),2)
p(i,2)=qt3-(qt3-qt2)*ny(m1)/h2 p(i,3)=qt3-(qt3-qt2)*ny(m2)/h2 *enddo
*do,i,1,Nelm sfbeam,P(i,1),1,pres,-p(i,2),-p(i,3) *enddo
allsel,all esel,s,real,,6 nsle,s nsel,r,loc,x,w2+nn nsel,r,loc,y,-h3,0 esln,r,1
sfbeam,all,1,pres,-qt3
求解
NROPT,FULL,, !采用全牛顿-拉普森法进行求解 Allsel !选择所有内容 Outres,all,all !输出所有内容 allsel,all solve
进入后处理 /post1 allsel,all esel,s,type,,1
/AUTO,1 相当于fit /post1
/pnum,node,0
/RGB,INDEX,100,100,100, 0 /RGB,INDEX, 80, 80, 80,13 /RGB,INDEX, 60, 60, 60,14 /RGB,INDEX, 0, 0, 0,15 /REPLOT
/COLOR,PBAK,OFF ! 关闭背景颜色
allsel,all
! 选择梁单元 esel,s,type,,1
! 画变形结果图
/TITLE,deform diagram pldisp,1
! 保存为图片
!/image,save,deform_1,jpg
Save !保存数据 allsel
底板部分弹簧单元都是受拉,因此要去除受拉弹簧单元,并进行重新计算 Finish !结束后处理器操作 /sol !进入求解器
ekill,129 !进入求解器(根据每个工程杀死的单元不同) ekill,131 ekill,132 ekill,133 ekill,134 ekill,135 ekill,136 ekill,140 ekill,144 ekill,145 ekill,146 ekill,147 ekill,148 ekill,149 SAVE
ESEL,S,LIVE 只显示活着的单元 EPLOT
重新求解。
Allsel !选择所有内容 Solve !求解计算 Finish !求解结束返回Main Menu 主菜单
/post1 allsel,all esel,s,type,,1
/AUTO,1 相当于fit /post1
allsel,all
! 选择梁单元 esel,s,type,,1 ! 画变形结果图
/TITLE,deform diagram pldisp,1
! 保存为图片
!/image,save,deform_1,jpg
建立单元表
etable,imoment,smisc,6 etable,jmoment,smisc,12 etable,ishear,smisc,2 etable,jshear,smisc,8 etable,iforce,smisc,1 etable,jforce,smisc,7 !更新单元表 ETABLE,REFL !画弯矩分布图
/TITLE,Bending moment diagram plls,imoment,jmoment,-1
/image,save,Bending_moment_1,jpg ! 画剪力分布图
/TITLE,Shearing force diagram plls,ishear,jshear,-1
/image,save,Shearing_force_1,jpg ! 画轴力分布图
/TITLE,Axial force diagram plls,iforce,jforce
/image,save,Axial_force_1,jpg ! 弹簧单元轴力图 /post1 alls
esel,s,real,,7 etable,f,smisc,1 ETABLE,REFL pretab,f
因篇幅问题不能全部显示,请点此查看更多更全内容