“之前的案例,APDL Showcase3里使用到了流体压力渗透载荷。有朋友读到以后,希望能在Workbench里实现这一功能。有需求就有动力,我们来试一试。 ”
01—结果展示
先看计算结果:(为了截图方便将模型旋转了90度)
该案例为轴对称模型,分为两个载荷步。第一步将橡胶环和密封盖压紧,第二步在接触单元上施加流体压力渗透载荷,研究接触对的分离情况。
(接触单元的压力。这个结果的数量级有问题,请忽略)
本文参考 APDL Technology Showcase td-3 案例,在Workbench中实现施加流体压力渗透载荷的分析。
02—命令分析
官方案例中,加载部分的命令为:
从官方给的dat文件中可以看到,第一步只是施加一个强制位移,并没有什么特殊。第二步才是重点。施加流体压力渗透载荷的命令如下,我们依次分析。
! Load Step 2 - Apply fluid penetration pressure
esel,s,real,,6 ! select rigid-flexible contact pair
esel,r,ename,,172 ! reselect contact elements only
esel,a,real,,8 ! select flexible-flexible contact pair
sfe,all,1,pres,,4.1 ! apply fluid pressure
allsel
! Remove overlaping fluid penetration pressure loads
esel,s,real,,8 ! select flexible-flexible contact pair
nsle
esln,s,1
esel,r,real,,6 ! reselect rigid-flexible contact pair
sfedele,all,all,all ! remove overlaping fluid pressure loads
allsel 上面这一段命令分两部分,第一部分选择接触单元,施加流体压力渗透载荷;第二部分是去除重复的载荷。
esel命令,第一个参数s代表新建选择,r代表在当前选择集内重新选择,a代表添加到选择。第二个参数real表示按实常数选择,ename顾名思义,是按单元类型进行选择。
因此,前三行命令中文注释为:
esel,s,real,,6 ! 按实常数选择,选实常数为6的单元。在案例模型中为刚-柔接触对
esel,r,ename,,172 ! 在当前选择中重选,只留下CONTA172单元
esel,a,real,,8 ! 添加到选择,增加选择柔-柔接触对单元
这里为什么要只留下接触单元呢?因为APDL中的案例,下压的压头是刚体,这个接触对是刚-柔接触。如果我们做柔-柔接触,则不需要这一行。
第四行sfe命令,对当前选中的接触单元施加流体压力渗透载荷。
sfe,all,1,pres,,4.1 ! sfe施加表面压力在单元上; 1表示法向压力, 大小4.1(单位一致为MPa)
接下来是第二部分。这几行命令,用比较巧妙的方式,选中了重复的接触单元,将流体压力渗透载荷在重复的单元里去掉。
esel,s,real,,8 ! 选择实常数为8的柔-柔接触对
nsle ! 选择接触对连接到的节点
esln,s,1 ! 再选择节点对应的单元。1代表只有单元内所有节点都在当前选择中时才选择单元。这样避免了选中结构单元。
esel,r,real,,6 ! 在当前选择集中,重选刚-柔接触对
sfedele,all,all,all ! 删除重复的流体压力渗透载荷。
allsel
这个方法是:先选择实常数为8的柔-柔接触对;然后通过nsle命令选择这些单元对应的节点;再通过esln命令选择节点对应的单元。在这一过程中,和柔-柔接触对的节点重复的刚-柔接触对的接触单元也被选中了。最后通过esel, r命令,在当前选择集下重新选择实常数为6的刚-柔接触对,将其载荷删除。
(NSLE命令的帮助文档页。请忽略那个错误的机器翻译……)
接下来这一段就相对简单一点。
! Define starting points
sfe,2529,2,pres,,-1 ! 屏蔽掉默认的流体压力渗透起始点suppress default starting point (one end point) for contact surface
sfe,2625,2,pres,,-1 ! suppress default starting point (one end point) for target
sfe,3121,2,pres,,1 ! 在o形密封圈上自定义流体压力的起始点 define starting point for o-ring
sfe,3308,2,pres,,1 ! define starting point for cap
大概意思是说,施加流体压力渗透载荷的时候,软件会默认给一个起始点。但是那个点往往不是你想要的,所以你需要关掉默认的起点,并自定义一个新的起点。在关掉默认起始点的时候,不用看官方给的,直接全选单元关掉即可。
03—Workbench实现
在Workbench里,我做了一个类似的轴对称模型。据我考察在Workbench环境下轴对称模型中定义刚体好像不是很方便,我就索性都做成了变形体,然后把应该做成刚体的地方弹性模量设置大了几个数量级。
材料属性是从官方案例的APDL文件里导入的。但是导入时候单位好像出了点问题……总之O形密封圈是Ogden超弹性材料,塑料封盖是弹塑性材料。
在此也定义了两个接触,分别起名叫外部接触和内部接触:
由于流体压力渗透载荷一般需要先做一个密封分析步,第二步再施加流体压力,所以我们需要在 求解 部分添加命令,将命令对象添加到第2分析步里。
在此之前,我们需要确定这两个接触对在APDL中对应的实常数分别是多少。
为了确认接触对的实常数编号,我们可以通过 求解方案-生成MAPDL输入文件 按钮,或直接在Workbench的文件管理窗口找到.dat文件来查看求解器输入。
在生成的dat文件里搜索你在Workbench Mechanical环境下为接触对起的名字,就可以找到接触对的编号啦。
在这里注意,Windows环境里,生成的dat输入文件中的中文字符编码格式为GB2312,如果使用VS Code默认的UTF-8字符编码打开,中文会出现乱码。右下角修改一下即可。
(搜索“外部”,找到外部接触,看到其cid为6. 注意右下角的字符编码为GB2312)
同理,找到另一个接触对“内部接触”,确认cid为8.
另外,需要注意,根据帮助文档,在施加流体压力渗透载荷的时候,柔-柔接触对的“行为”如果设置为对称,则只需要对接触单元施加流体压力渗透载荷。反之如果设置为不对称,则需要同时对接触面和目标面施加。(详见帮助文档页:3.14. Applying Fluid Pressure-Penetration Loads)
好的,现在可以开始在求解部分插入命令流。我同样设置了两个分析步,这些命令被插入在第2分析步处。
全部命令如下(不要觉得看起来好像很多的样子,有套路的):
! Commands inserted into this file will be executed just prior to the ANSYS SOLVE command.
! These commands may supersede command settings set by Workbench.
! Active UNIT system in Workbench when this object was created: Metric (mm, kg, N, s, mV, mA)
! NOTE: Any data that requires units (such as mass) is assumed to be in the consistent solver unit system.
! See Solving Units in the help system for more information.
esel,s,real,,6 ! 按实常数选择,选实常数为6的单元。在案例模型中为“外部接触”
esel,a,real,,8 ! 按实常数选择,选实常数为8的单元。在案例模型中为“内部接触”
sfe,all,1,pres,,2000000 ! 这个压力数值,以及本案例中所有的材料参数都请勿参考
ALLSEL
esel,s,real,,8 ! 选择实常数为8的接触对,本案例中为“内部接触”
nsle ! 选择接触对连接到的节点
esln,s,1 ! 再选择节点对应的单元。1代表只有单元内所有节点都在当前选择中时才选择单元。这样避免了选中结构单元。
esel,r,real,,6 ! 在当前选择集中,重选"外部接触"对应的单元
sfedele,all,all,all ! 删除重复的流体压力渗透载荷。
allsel
sfe,all,2,pres,,-1 ! 先删除默认的流体压力渗透起点
nsel,s,node,,5 ! 选择编号为5的结点
esln,s,0 ! 选择与节点连接的单元
esel,r,real,,8 ! 选择“内部接触”接触单元
sfe,all,2,pres,,1 ! 指定“内部接触” 接触面流体压力渗透开始位置
ALLSEL
nsel,s,node,,5121 ! 选择编号为5121的结点
esln,s,0 ! 选择与节点连接的单元
esel,r,real,,8 ! 选择接触单元
sfe,all,2,pres,,1 ! 指定“内部接触” 目标面流体压力渗透开始位置
ALLSEL
nsel,s,node,,5137 ! 选择编号为5137的结点
esln,s,0 ! 选择与节点连接的单元
esel,r,real,,6 ! 选择接触单元
sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置
ALLSEL
nsel,s,node,,169 ! 选择编号为169的结点
esln,s,0 ! 选择与节点连接的单元
esel,r,real,,6 ! 选择接触单元
sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置
ALLSEL
nsel,s,node,,9184 ! 选择编号为9184的结点
esln,s,0 ! 选择与节点连接的单元
esel,r,real,,6 ! 选择接触单元
sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置
ALLSEL
第一段选中接触单元,施加流体压力渗透载荷;第二段删除重复载荷,并删除所有的默认起始点。(看图可以发现,内部接触和外部接触的接触单元定义有重复)
第3段开始直到最后,都是在定义流体压力的起始点。
这个起始点的含义再解释一下 。流体压力渗透载荷主要施加在接触单元上,目的就是研究在流体的压力作用下,原先处于关闭状态的接触对是否会变为打开状态。因此如果压力错误的从原先就处于关闭状态的位置起始,计算结果就会出错。
另外,APDL案例中,定义开始位置的方法是直接指定接触单元的编号。在Workbench中,不太容易确定某个位置对应的接触单元的编号,但确定一个节点的编号是很容易的事情。所以我们在这里首先选择节点,然后选择与它连接的接触单元。用这种方式定义起始点。
另外,施加流体压力渗透载荷的分析过程中,一个不小心就会出现计算不收敛的情况。官方的案例在求解时添加了一个0.01的能量耗散率。经过试验,这个案例模型还需要更大的能量耗散率才可以达到收敛。工程应用中,这个数值应该取能够收敛的最小值,否则有点暴力 即使收敛了结果可能也不准确。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删