ANSYS中如何实现单向弹簧的模拟

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

        在前面几期的文章中,本人介绍了在ANSYS中如何实现弹性地基的模拟,其中既使用了本身可以设置弹性地基刚度的特殊单元,也采用了弹簧单元来间接实现。然而一个不可避免的现象便是在实际中,其实有很多情况下地基是既受拉又受压的,如果继续采用特殊单元,则不能考虑这点。也即是这些特殊的单元无法考虑单向受压的情况,例如在隧道二次衬砌分析中,外部等效围岩就不能使用这些特殊单元。

        在前面一期中也介绍了如何使用combin39单元来实现弹性地基的模拟,使用该单元的一个好处便是可以考虑单向作用。本文就简单介绍如何使用该单元实现单向弹簧的模拟。

        要利用该单元实现单向弹簧,首先要读懂该单元各个单元关键项的意思,该单元有很多关键项,不同的设置会有不同的单元表现。该单元一共有八种单元表现,罗列如下:

ANSYS中如何实现单向弹簧的模拟

ANSYS中如何实现单向弹簧的模拟

ANSYS中如何实现单向弹簧的模拟

        从上述单元表现可见,第B种和第e种情况可实现单向弹簧的功能,这两者的主要区别在于一个是卸载路径与原加载路径相同,一种是卸载路径与加载路劲的原点段平行。

        细心的同学可以发现,这儿combin39所谓的单向是指受拉单向,也即是该单元只提供单向受拉的功能,如果要实现我们口中所谓的单向受压,则需要一定的建模技巧。

        为验证该单元的单向功能,下面我们做一个小实验。

        命令流如下:

finish

/clear

/prep7

et,1,combin39

!Z方向的单向弹簧

keyopt,1,4,0

keyopt,1,3,3

keyopt,1,1,0

keyopt,1,2,1

n,1

n,2,0,0,1.0

!弹簧的初始弹性模量为100

r,1,0.1,100*0.1

e,1,2

d,1,all,0

allsel,all

!弹簧受到拉力100,可以预见最大位移为1

f,2,fz,100

/solu

allsel,all

nsubst,10,,1

autots,on

solve

        结果位移云图如下:

ANSYS中如何实现单向弹簧的模拟

        在上述命令流下,我们将拉力改为压力,可以预见,由于弹簧只是受拉弹簧,因此结果应该为0.

        修改的命令流如下:

!==============

f,2,fz,-100

!=============

        修改之后求解,虽然软件显示的是solution is done,然而并没有位移结果,这也表明,该弹簧不能模拟受压。

ANSYS中如何实现单向弹簧的模拟

        在保持上述命令流不变的情况下,我们在做一个改变,具体改变就是在单元建立的时候,调换下生成单元的节点序号,也即修改的命令如下:

!===========

e,2,1

!===========

        修改之后我们会发现,结果如下:

ANSYS中如何实现单向弹簧的模拟

        从这个位移云图可见,弹簧被压缩了1,而这与我们口中所说的受压情况很符合。

        综合这个小实验,我们可以得到一些有用的结论:

        1、Combin39只能模拟单向受拉.

        2、Combin39所谓的拉应变是指沿着单元坐标系X的正方向,如果我们需要模拟单向受压,只需调整该单元的单元坐标系。

        为体现该单元使用上的一些技能,设有某矩形大板,长80m,宽40m,在中间3m范围内作用有均布荷载,地基刚度为20MPa,采用ANSYS模拟该过程。

ANSYS中如何实现单向弹簧的模拟

        一个可以预见的结果便是 由于该板相对于加载面积来讲,其长边太长,会有一种中间凹两边凸的直观效果,因此如果采用弹簧模拟弹性地基,两边的弹簧会处于受拉状态,然而事实是我们只希望地基弹簧只受压不受拉,受拉弹簧退出工作。

        我们采用combin39来模拟该过程。命令流如下:

!===========

finish

/clear

/prep7

A=80$B=40$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

!注意此处生成弹簧单元节点顺序,改变了顺序也即是改变了单元坐标系X的方向。

e,ni,tmmax+i

*enddo

nsel,s,,,tmmax+1,tmmax+ntol

d,all,all

finish

/solu

allsel,all

nsubst,100,,1

autots,on

solve

!===============

        最后的竖向位移云图如下:

ANSYS中如何实现单向弹簧的模拟

        可见其位移趋势符合常识。弹簧单元的轴力云图如下:

ANSYS中如何实现单向弹簧的模拟

ANSYS中如何实现单向弹簧的模拟

        从图中可见,只有中部弹簧受力,两边受拉弹簧轴力为0,说明该过程有效的实现了单向弹簧作用。

        有兴趣的童鞋还可以用combin14做对比,水哥这里就不在演示了。


        终于有时间码字了~~~泪奔!走过路过,顺便点个赞塞~~~感激     ANSYS中如何实现单向弹簧的模拟

欢迎搜索关注本站微信公众号:ANSYS结构院

如果觉得本网站的文章和资源对您的研究具有一定的帮助,欢迎给网站捐助,您的支持是我坚持下去的动力!

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容