首页/文章/ 详情

如何在HyperMesh中使用ANSYS命令流

6月前浏览10761

图片

本文摘要(由AI生成):

本文介绍了在HyperMesh与ANSYS联合仿真中使用的四种控制卡片:UNSU_PREP7、UNSU_END、UNSU_PREP_MID和UNSU_PREP_END。这些卡片允许用户在CDB文件的特定位置插入自定义命令,以在仿真过程的不同阶段执行特定的操作。例如,UNSU_END卡片可用于在仿真完成后自动显示结果,而UNSU_PREP_MID和UNSU_PREP_END卡片则可用于修改有限元模型和设置载荷步。本文还强调了HyperMesh与ANSYS联合仿真的实质是HyperMesh将用户操作转换为ANSYS命令流并记录在CDB文件中。通过正确使用这些控制卡片,用户可以更灵活地控制仿真过程并优化结果。


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文件。

图片

使用

图片

在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种卡片在官方帮助文件中的解释,上述内容均为笔者自行总结,因此可能会存在一定的错误或偏差,还望各位读者不吝指正。



至此,本文完。




MechanicalMechanical APDLHyperMesh网格处理二次开发代码&命令HyperWorks设计与仿真平台求解技术单元技术
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-02-12
最近编辑:6月前
CAE_LJX
本科 | 仿真工程师 在工程计算中,领悟CAE之道。
获赞 137粉丝 191文章 55课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈