首页/文章/ 详情

如何在HyperMesh中使用ANSYS命令流

11月前浏览3286

HyperMesh是一款优秀的通用前处理软件,与主流的有限元分析软件都有接口,如ANSYS、LS-DYNA、ABAQUS等。鉴于有些有限元分析软件的前处理功能相对较弱,很多的CAEer选择使用HyperMesh与其他有限元求解器进行联合仿真。

笔者也经常使用HyperMesh做前处理,然后将求解文件(CDB文件)导入ANSYS进行求解。由于一些原因,HyperMesh不能完整地为ANSYS制作一个CDB文件,有时需要我们在ANSYS中做进一步的处理后再进行计算,这样就降低了工作效率。比如:
问题一:有时,我们想关掉ANSYS的单元形状检查(虽然这样做是ANSYS不建议的),就必须在ANSYS中执行<SHPP,OFF,ALL>命令,这样就出现了一个问题:我们每次在ANSYS导入CDB文件之前,都必须先把单元形状检查关掉,这样一来让本不宽裕的计算时间雪上加霜……

问题二:另外,笔者发现:HyperMesh为ANSYS创建MPC184单元时,只能设置K1(约束或连接单元类型)关键选项。比如:我们想使用MPC184单元建立一个刚性梁,设置完 K1=1 以后,有时还要设置它的K2关键选项(运动约束算法),这个是在HyperMesh中无法进行的,只能设置完K1以后,在ANSYS中再设置K2……

上面提到的2个问题,都可以在ANSYS导入CDB文件后使用命令流解决,但是比较浪费时间。所以笔者就想:可不可以在HyperMesh中输入ANSYS的命令流,导出时包含在CDB文件中,可以直接被ANSYS读取呢?经过不断尝试,还真发现了这个功能。即在求解控制卡片中设置:

01

UNSU_PREP7

UNSU_PREP7:在生成有限元模型之前插入的命令。由于输出的CDB文件自带一条</PREP7>命令(如下图),所以这个命令相当于在前处理中输入的命令。我们在这个卡片中输入ANSYS的命令流以后,这些命令流将被放置在CDB文件的最前端

我们可以用这个控制卡片解决问题一:

由于我们设置停用单元形状检查时,需要在导入CDB文件之前,所以我们可以在卡片UNSU_PREP7中输入命令<SHPP,OFF,ALL>。由于卡片中的命令在前处理中被执行,所以我们不需要使用</PREP7>命令进入前处理。

打开输出的CDB文件,我们发现:使用UNSU_PREP7卡片输入的命令在第14行,位于产生节点(第18行)之前,所以这条命令将先被执行,即在导入单元数据之前就已经关闭了单元形状检查。

将CDB文件导入ANSYS,会收到ANSYS抛出的一个警告,说明ANSYS确实关闭了单元形状检查。

02

UNSU_END
UNSU_END:执行完所有控制卡片之后插入的命令。我们在这个卡片中输入ANSYS的命令流以后,这些命令流将被放置在CDB文件的最后端
我们可以利用该卡片来输入一些求解完成后需要执行的命令。比如计算完成后我们想直接显示计算结果,只需在分析中,插入UNSU_END卡片,并输入</POST1>和<PLNSOL,U,SUM>,表示进入后处理并显示整体 位移结果,然后输出CDB文件。

打开输出的CDB文件,我们发现:使用UNSU_END卡片输入的命令在第183、184行,的确是CDB文件中的最后一条命令。

将CDB文件导入ANSYS,ANSYS求解完成后自动显示了整体 位移结果,完成了我们的目标。

03

UNSU_PREP_MID

UNSU_PREP_MID:生成有限元模型之后、载荷步数据定义之前插入的命令。如此,我们就可以利用这张卡片对我们建立的有限元模型进行修改。

我们可以用这个控制卡片解决问题二:

我们在HyperMesh中使用MPC184单元建立了一个刚性梁(K1=1)模型,单元ID为4。为了验证UNSU_PREP_MID输入的命令在载荷步数据定义之前,我们也为该模型定义了1个约束

我们知道,MPC刚性梁单元的运动约束算法缺省为直接消去法(K2=0),当我们想使用拉格朗日乘子法(K2=1)时,没办法在HyperMesh中直接定义定义关键选项K2,所以之前笔者都是先把CDB文件导入ANSYS然后再修改K2。现在我们尝试使用UNSU_PREP_MID卡片对K2进行修改。

我们选择UNSU_PREP_MID卡片,在卡片中输入<KEYOPT,4,2,1>命令(这条命令的意思是将ID为4的单元的K2设置为1),然后输出CDB文件。

打开输出的CDB文件,我们发现:使用UNSU_PREP_MID卡片输入的命令在第59行,位于定义的约束数据(第69行)之前,所以这条命令将先于定义约束命令被执行,即在定义约束之前完成了对刚性梁MPC184单元K2关键选项的修改

在ANSYS中导入CDB文件,打开MPC184单元的设置,我们发现,184单元的K2关键选项确实已经被修改为K2=1(拉格朗日乘子法),完成了我们的目标。

04

UNSU_PREP_END

UNSU_PREP_END:载荷步数据定义之后、执行其他控制卡片命令之前插入的命令。举个栗子:我们有时会在HyperMesh中设置其他的ANSYS控制卡片,如添加加速度的卡片ACEL、执行求解命令的SOLVE卡片等。使用UNSU_PREP_END输入的命令,将在执行这些控制卡片命令之前执行。

为了验证UNSU_PREP_END卡片命令插入的位置,我们为该模型也添加了/SOLU、ACELSOLVE控制卡片。

我们选择UNSU_PREP_END卡片,同样在卡片中输入<KEYOPT,4,2,1>命令(这条命令的意思是将ID为4的单元的K2设置为1),然后输出CDB文件。

打开输出的CDB文件,我们发现:使用UNSU_PREP_END卡片输入的命令在第68行,位于定义的约束(第66行)数据之后、执行其他控制卡片命令(第73、74、75行)之前。所以这条命令将先于其他控制卡片命令被执行,即在执行其他卡片命令之前完成了对刚性梁MPC184单元K2关键选项的修改。同样能帮助我们解决问题二。

在ANSYS中导入CDB文件,打开MPC184单元的设置,我们发现,184单元的K2关键选项确实已经被修改为K2=1(拉格朗日乘子法),完成了我们的目标。

总结    

   

   
1.UNSU_PREP7:用来输入在生成有限元模型之前的命令,所输入的命令位于CDB文件的最前端。    
2.UNSU_END:用来输入CDB文件最后执行的命令,所输入的命令位于CDB文件的最后端。    
3.UNSU_PREP_MID:生成有限元模型之后、载荷步数据定义之前插入的命令。    
4.UNSU_PREP_END:载荷步数据定义之后、执行其他控制卡片命令之前插入的命令。    

上图为4种卡片在CDB文件中的位置(各种命令的执行顺序)    
   
上述所有操作,在HyperWorksX中仍然适用。

实际上使用者在HyperMesh中的操作,都被HyperMesh转换成ANSYS的命令流,记录在CDB文件中,这也是HyperMesh与ANSYS联合仿真的实质

由于笔者未找到上述4种卡片在官方帮助文件中的解释,上述内容均为笔者自行总结,因此可能会存在一定的错误或偏差,还望各位读者不吝指正。

至此,本文完。 
来源:CAE之道
LS-DYNAHyperMesh通用HyperWorks设计与仿真平台UM多体动力学材料控制ANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-05-30
最近编辑:11月前
CAE_LJX
本科 | 仿真工程师 在工程计算中,领悟CAE之道。
获赞 132粉丝 184文章 56课程 0
点赞
收藏
未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈