前面讲述了两期关于ANSYS中弹性地基的实现方法,其方式主要是采用特殊单元定义实常数的方法来解决。这些所谓的特殊单元其实也就是在我们定义该实常数时,软件会自动创建弹簧,只是该弹簧不能由用户访问。除此之外,细心的同学还会发现,该类单元不能实现单向弹簧的作用,这是与实际严重不符合的。因而在进行模拟结构可能受拉导致地基弹簧失效的情况时,该类单元是不可用的。
除了可以采用这些特殊单元外,我们也可以自己手动添加弹簧来模拟弹性地基。自己手动添加弹簧的好处便是可以设置单向受拉或者单向受压弹簧,此处仍以前面文章中的大板为例,来简要说明手动添加弹簧的方法。关于ANSYS中实现单向弹簧的讨论,下节再仔细讨论。
首先回顾下前面文章的例子,设有一尺寸为8mX4mX0.6m的大板,在其顶面3mX2m的居中范围内作用均布荷载,荷载大小为150KN/m^2,弹性地基刚度取20MN/m^3,板的弹性模量取30GPa,泊松比系数取0.2,试分析其在均布荷载作用下的结构响应。
手动设置弹簧的一个核心点便是如何确定不同位置处弹簧的弹性刚度,弹簧的弹性刚度(KN/m)=弹性地基刚度(KN/m^3)*弹簧节点投影面积(m^2)。显然当单元划分大小不一致的时候,我们不可能手动去添加弹簧刚度,这样工作量很大。解决方法便是利用APDL编程循环获取弹簧节点对应的面积,乘以地基刚度并赋予相关节点即可。
因而,如何获取节点对应的单元面积是建模的重要地方。一个思路便是采用*get命令获取单元表面积,这对于壳单元是可以的。而对于实体单元,则可以通过表面效应单元来间接获取。
命令流如下:(篇幅所限,只列出核心命令流)
finish
/clear
/prep7
A=8$B=4$H=0.6
A1=3$B1=2
Q=150e3
ESF=2.0e7 !弹性地基刚度
ET,1,solid186
et,2,surf154 !辅助表面效应单元
et,3,combin39
!单向弹簧设置
keyopt,3,4,0
keyopt,3,3,3
keyopt,3,1,0
keyopt,3,2,1
!==============
建模、划分单元、建立表面效应单元
!==============
!下列命令流为核心命令流
allsel,all
!选择与地基相连的节点和单元
!此处考虑在整个模型中单元和节点号可能不连续的问题
!假定四边形和三角形两种单元
!获得节点总数,即弹簧个数;单元总数
*get,tmmax,node,,num,max !整个模型的最大节点号
esel,s,type,,2
!此处需注意,我们只选择各个单元角点处的节点
nsle,s,corner
*get,ntol,node,,count !节点总数
*get,etol,elem,,count !单元总数
*get,nmax,node,,num,max !最大节点号
*dim,nodno,,ntol !存储节点号
*dim,nodk,,nmax !存储各节点面积、弹簧刚度
*dim,eleno,,etol !存储单元号
!获得各个单元号
*get,e1,elem,,num,min
eleno(1)=e1
*do,i,2,etol
e1=elnext(e1)
eleno(i)=e1
*enddo
!获得各节点号
*get,n1,node,,num,min
nodno(1)=n1
*do,i,2,ntol
n1=ndnext(n1)
nodno(i)=n1
*enddo
!求每个节点对应的面积
*do,i,1,etol
ei=eleno(i)
n1=nelem(ei,1)
n2=nelem(ei,2)
n3=nelem(ei,3)
n4=nelem(ei,4)
*get,ai,elem,ei,area
*if,n3,ne,n4,then
ai=ai/4.0
nodk(n1)=nodk(n1)+ai
nodk(n2)=nodk(n2)+ai
nodk(n3)=nodk(n3)+ai
nodk(n4)=nodk(n4)+ai
*else
ai=ai/3.0
nodk(n1)=nodk(n1)+ai
nodk(n2)=nodk(n2)+ai
nodk(n3)=nodk(n3)+ai
*endif
*enddo
!求得弹簧刚度
!面积乘以弹性地基刚度
*do,i,1,nmax
nodk(i)=nodk(i)*ESF
*enddo
*do,i,1,ntol
ni=nodno(i)
r,i+1,0.01,nodk(ni)*0.01
*enddo
!创建弹簧单元
type,3
*do,i,1,ntol
ni=nodno(i)
!注意,此处为好观察弹簧,所以没有选择重合,求解时,软件会提示节点不重合的警告,一般而言,自己建模时可以重合节点。
n,tmmax+i,nx(ni),ny(ni),nz(ni)-0.5 !创建节点(重合)
real,i+1
e,ni,tmmax+i
*enddo
nsel,s,,,tmmax+1,tmmax+ntol
d,all,all
finish
!==============
求解,后处理
!==============
建立的弹簧单元如下所示:
细节如下:
求解结果对比:
采用前面方法计算出来的竖向位移云图如下:
采用本方法计算出来的位移云图如下:
各个弹簧单元的轴力如下:
从上述结果可见,采用手动弹簧时,最大位移为0.001846,采用前面方法最大位移为0.001847,两者结果吻合。同时,从弹簧反力也可以看出,本例所有弹簧均受到压力,无拉力产生,结果可信。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删