最近在科研项目上,卡了我快一年的难题稍见曙光。这个模型我之前一直都是用HyperMesh划分网格,生成inp文件再导入Abaqus定义边界条件的。但是这样来回在两个界面之间折腾效率还是比较低。这次我终于下定决心学习使用HyperMesh独立完成Abaqus的全程前处理工作。
01
—
问题和动机
首先,咱来聊聊为啥要用HyperMesh完成全部前处理工作。
一般来说,Abaqus的网格划分功能不太能胜任稍微复杂一点的几何。使用HyperMesh或是ANSA这类专业前处理工具相对来说能更轻松地画出漂亮的网格。而在Abaqus/CAE界面下,定义分析步、边界条件等操作则比较方便,全程图形界面操作。
但是,如果你的项目涉及到好几个不同的模型方案的对比,方案之间又不太方便通过类似Morph的功能修改的话,如果只导出包含网格的inp文件再放到Abaqus里定义载荷等信息,就可能面临更多的重复操作。
我之前几个项目也是这么做的。其实也不麻烦,用abaqus.rpy录制一段小脚本,把重复性工作自动化就好。但这次我还是想搞点不一样的。稍加研究后我实现了在HyperMesh中完成Abaqus的全部前处理。刚好前些天看到有别人发了ANSA联合Abaqus做隐式分析的推送,那我也来写一篇HyperMesh的推送吧。
02
—
Abaqus简单模型
用Abaqus建立一个简单的梁模型。emmmm……实在太简单了也不好,左端固定,就在右端定义一个参考点然后加一个刚性耦合Coupling吧。然后在右侧参考点处施加一个扭转位移。
别问我为什么是在Abaqus里建模而不是HyperMesh。因为这是简单有效的学习过程——在HyperMesh这类基于关键字的前处理软件里,想要完成完整的前处理流程,当然可以直接去求解器的文档参考它的关键字。但如果能有一个写好的求解器inp文件供参考,学习效率自然会更高。
在单元这里,我给它添加一点不一样的属性:C3D8R单元,增强沙漏刚度控制。其实这个选项在简单模型里完全体现不出区别。
最终在Abaqus里的位移:
这个文件命名为hm_test.inp。
03
—
HyperMesh参考步骤
在HyperMesh中导入刚才的inp文件,来参考一下这个inp文件在HyperMesh里呈现的结构。
那么,在HyperMesh里重做一遍全部操作吧~
创建一个长方体模型。模型建立和网格划分这部分工作就不再赘述,一般如果是真正的工程问题,如果模型太简单了我们还真没必要劳烦HyperMesh。
好的,我们得到了一个只有网格的模型。现在让我们来按照Abaqus的操作逻辑,从创建材料开始。
1. 创建材料。
在HyperMesh的Model选项卡中找到添加材料功能。其实也可以在左侧模型树上右键Create-Material.
在HyperMesh切换到新界面时,底部的Panel面板仍得到保留。因此同样的卡片编辑功能,有两套(或者也可以说是三套?)GUI。其一就是新建材料时的这种对话框,其二是在模型树中点选材料,下面的属性框(其实就是把新建材料的Name-Value表格给固定到屏幕左下角),其三是右键某一对象时选择Card Edit时的编辑卡片窗口。
这里只需要勾选最简单的Elastic,输入E和NU即可。
2. 定义截面。
在Materials右侧就是Properties按钮。Card Image选择SOLIDSECTION,材料选择刚才定义的结构钢。
注意,如果要对单元类型中的减缩积分算法进行控制的话,虽然在Abaqus/CAE界面中是在单元类型里定义,但在Abaqus的inp文件中,是把这些信息归类为截面控制类别的。所以还需要添加一个Property,卡片选择SECTION_CONTROLS,定义好对单元类型的控制属性。然后在第一个Steel_section中引用它。
定义好材料和截面,将截面赋予给刚才建立好的Component即可。
3. 定义分析步。
这次直接右键创建Load Step吧。
分析步类型选择为static。
注意,在HyperMesh中,如果模板设置为Standard 3D,则只能创建Abaqus/Standard分析步。如果想要创建Abaqus/Explicit分析步,则需要将模板切换为Explicit.
其他设置如图所示。其实,这个界面就是针对Abaqus的*STEP分析步可用的关键字做了一个GUI。它的每一个选项和Abaqus关键字的语法都是对应的。初学者可以参考从Abaqus导出的inp文件来进行设置,而更多高级选项,其含义在Abaqus文档的*STEP关键字页面里都有写。
Abaqus界面中默认的场输出和历程输出选项,在HyperMesh中也需要显式定义一下。但都不算很难。就选择PRESELECT就好。
分析步的定义其实还没结束。后面还需要把设定好的载荷Loadcols和接触Group放进分析步里。
4. 定义相互作用。
HyperMesh中,把大部分的相互作用都称为Group。这个命名我着实是没太看懂,但……你说是就是吧。
在定义耦合之前,需要定义一个参考节点的set,和一个耦合的SURFACE。定义好以后,新建一个Group对象,Card Image选择COUPLING。
5. 定义载荷。
这个模型中,载荷只有位移边界条件。在HyperMesh里,当然可以直接点BCs和Loads创建载荷,再把它们归类到Load Collectors里。但如果希望在Abaqus中打开还能看到以集合形式定义的位移边界条件的话,还是像这样设置比较好:
这里有DOF1和DOF2,但我在里面写上了PINNED。在Abaqus文档 > Prescribed Conditions > Boundary Conditions 页中,介绍了*BOUNDARY关键字的用法:
就是说,可以从DOF1约束到DOF2,同样也可以在第一个位置写上XSYMM等关键字。这和Abaqus/CAE中的图形界面操作是一致的。
固定边界条件用PINNED关键字,而参考点处的边界条件就可以直接设置了:Analyze-BCs-Constraints
6. 修改单元类型。
在HyperMesh的Abaqus模板下,可以直接在下方的 3D 面板上修改单元类型。选右下角的elem types即可。(如果换成ANSYS模板,就不能这么做了。ANSYS模板里,需要定义一个sensor对象,卡片选为ETType。所以我才说,HyperMesh这谜一样的卡片类型名称简直是阻碍学习者的最大障碍之一)
选择单元,切换单元类型后点击update即可。
Hex8单元有这么多类型可选。
全部定义好以后,导出inp文件,就可以直接提交Abaqus计算了。
小喵使用的是并行超算云。在云端提交Abaqus作业,只需要在写好的.sh文件里,修改inp文件的文件名,定义使用的核心数就可以了。
Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved.
湘ICP备20015126号-2
联系我们