“之前的案例,APDL Showcase3里使用到了流体压力渗透载荷。有朋友读到以后,希望能在Workbench里实现这一功能。有需求就有动力,我们来试一试。 ”
01
—
结果展示先看计算结果:(为了截图方便将模型旋转了90度)该案例为轴对称模型,分为两个载荷步。第一步将橡胶环和密封盖压紧,第二步在接触单元上施加流体压力渗透载荷,研究接触对的分离情况。(接触单元的压力。这个结果的数量级有问题,请忽略)
本文参考APDL Technology Showcase td-3 案例,在Workbench中实现施加流体压力渗透载荷的分析。02
—
命令分析官方案例中,加载部分的命令为:从官方给的dat文件中可以看到,第一步只是施加一个强制位移,并没有什么特殊。第二步才是重点。施加流体压力渗透载荷的命令如下,我们依次分析。! Load Step 2 - Apply fluid penetration pressureesel,s,real,,6 ! select rigid-flexible contact pairesel,r,ename,,172 ! reselect contact elements only esel,a,real,,8 ! select flexible-flexible contact pairsfe,all,1,pres,,4.1 ! apply fluid pressure allsel! Remove overlaping fluid penetration pressure loadsesel,s,real,,8 ! select flexible-flexible contact pairnsleesln,s,1esel,r,real,,6 ! reselect rigid-flexible contact pairsfedele,all,all,all ! remove overlaping fluid pressure loadsallsel
上面这一段命令分两部分,第一部分选择接触单元,施加流体压力渗透载荷;第二部分是去除重复的载荷。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 surfacesfe,2625,2,pres,,-1 ! suppress default starting point (one end point) for target sfe,3121,2,pres,,1 ! 在o形密封圈上自定义流体压力的起始点 define starting point for o-ringsfe,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 ! 这个压力数值,以及本案例中所有的材料参数都请勿参考ALLSELesel,s,real,,8 ! 选择实常数为8的接触对,本案例中为“内部接触”nsle ! 选择接触对连接到的节点esln,s,1 ! 再选择节点对应的单元。1代表只有单元内所有节点都在当前选择中时才选择单元。这样避免了选中结构单元。esel,r,real,,6 ! 在当前选择集中,重选"外部接触"对应的单元sfedele,all,all,all ! 删除重复的流体压力渗透载荷。allselsfe,all,2,pres,,-1 ! 先删除默认的流体压力渗透起点nsel,s,node,,5 ! 选择编号为5的结点esln,s,0 ! 选择与节点连接的单元esel,r,real,,8 ! 选择“内部接触”接触单元sfe,all,2,pres,,1 ! 指定“内部接触” 接触面流体压力渗透开始位置ALLSELnsel,s,node,,5121 ! 选择编号为5121的结点esln,s,0 ! 选择与节点连接的单元esel,r,real,,8 ! 选择接触单元sfe,all,2,pres,,1 ! 指定“内部接触” 目标面流体压力渗透开始位置ALLSELnsel,s,node,,5137 ! 选择编号为5137的结点esln,s,0 ! 选择与节点连接的单元esel,r,real,,6 ! 选择接触单元sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置ALLSELnsel,s,node,,169 ! 选择编号为169的结点esln,s,0 ! 选择与节点连接的单元esel,r,real,,6 ! 选择接触单元sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置ALLSELnsel,s,node,,9184 ! 选择编号为9184的结点esln,s,0 ! 选择与节点连接的单元esel,r,real,,6 ! 选择接触单元sfe,all,2,pres,,1 ! 指定“外部接触”流体压力渗透开始位置ALLSEL
第一段选中接触单元,施加流体压力渗透载荷;第二段删除重复载荷,并删除所有的默认起始点。(看图可以发现,内部接触和外部接触的接触单元定义有重复)第3段开始直到最后,都是在定义流体压力的起始点。这个起始点的含义再解释一下。流体压力渗透载荷主要施加在接触单元上,目的就是研究在流体的压力作用下,原先处于关闭状态的接触对是否会变为打开状态。因此如果压力错误的从原先就处于关闭状态的位置起始,计算结果就会出错。另外,APDL案例中,定义开始位置的方法是直接指定接触单元的编号。在Workbench中,不太容易确定某个位置对应的接触单元的编号,但确定一个节点的编号是很容易的事情。所以我们在这里首先选择节点,然后选择与它连接的接触单元。用这种方式定义起始点。另外,施加流体压力渗透载荷的分析过程中,一个不小心就会出现计算不收敛的情况。官方的案例在求解时添加了一个0.01的能量耗散率。经过试验,这个案例模型还需要更大的能量耗散率才可以达到收敛。工程应用中,这个数值应该取能够收敛的最小值,否则有点暴力 即使收敛了结果可能也不准确。
最后,这个案例的官方模型(oring.cdb,oring.dat)和ANSYS 2020R2版本的Workbench模型 (td3.wbpz)文件已上传百度云。感兴趣的小伙伴可以下载学习
链接:https://pan.baidu.com/s/1jV5n92aOfKYXveIEYl5L_A
提取码:f450