HyperMesh中利用ANSYS命令流的方法

图片


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_PREP7UNSU_PREP7

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

图片


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

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

图片


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

图片



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

图片





02

UNSU_ENDUNSU_END

执行完所有控制卡片之后插入的命令。我们在这个卡片中输入ANSYS的命令流以后,这些命令流将被放置在CDB文件的最后端
 

我们可以利用该卡片来输入一些求解完成后需要执行的命令。比如计算完成后我们想直接显示计算结果,只需在分析中,插入UNSU_END卡片,并输入</POST1>和<PLNSOL,U,SUM>,表示
 

进入后处理并显示整**移结果,然后输出CDB文件。

图片



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

图片



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

图片


03

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


至此,本文完。
 

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空