如何在HyperMesh中使用ANSYS命令流
HyperMesh是一款优秀的通用前处理软件,与主流的有限元分析软件都有接口,如ANSYS、LS-DYNA、ABAQUS等。鉴于有些有限元分析软件的前处理功能相对较弱,很多的CAEer选择使用HyperMesh与其他有限元求解器进行联合仿真。
问题二:另外,笔者发现:HyperMesh为ANSYS创建MPC184单元时,只能设置K1(约束或连接单元类型)关键选项。比如:我们想使用MPC184单元建立一个刚性梁,设置完 K1=1 以后,有时还要设置它的K2关键选项(运动约束算法),这个是在HyperMesh中无法进行的,只能设置完K1以后,在ANSYS中再设置K2……
上面提到的2个问题,都可以在ANSYS导入CDB文件后使用命令流解决,但是比较浪费时间。所以笔者就想:可不可以在HyperMesh中输入ANSYS的命令流,导出时包含在CDB文件中,可以直接被ANSYS读取呢?经过不断尝试,还真发现了这个功能。即在求解控制卡片中设置:
UNSU_PREP7:在生成有限元模型之前插入的命令。由于输出的CDB文件自带一条</PREP7>命令(如下图),所以这个命令相当于在前处理中输入的命令。我们在这个卡片中输入ANSYS的命令流以后,这些命令流将被放置在CDB文件的最前端。
由于我们设置停用单元形状检查时,需要在导入CDB文件之前,所以我们可以在卡片UNSU_PREP7中输入命令<SHPP,OFF,ALL>。由于卡片中的命令在前处理中被执行,所以我们不需要使用</PREP7>命令进入前处理。
将CDB文件导入ANSYS,会收到ANSYS抛出的一个警告,说明ANSYS确实关闭了单元形状检查。
将CDB文件导入ANSYS,ANSYS求解完成后自动显示了整体位移结果,完成了我们的目标。
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(拉格朗日乘子法),完成了我们的目标。
UNSU_PREP_END:在载荷步数据定义之后、执行其他控制卡片命令之前插入的命令。举个栗子:我们有时会在HyperMesh中设置其他的ANSYS控制卡片,如添加加速度的卡片ACEL、执行求解命令的SOLVE卡片等。使用UNSU_PREP_END输入的命令,将在执行这些控制卡片命令之前执行。
为了验证UNSU_PREP_END卡片命令插入的位置,我们为该模型也添加了/SOLU、ACEL和SOLVE控制卡片。
我们选择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(拉格朗日乘子法),完成了我们的目标。
实际上使用者在HyperMesh中的操作,都被HyperMesh转换成ANSYS的命令流,记录在CDB文件中,这也是HyperMesh与ANSYS联合仿真的实质。
由于笔者未找到上述4种卡片在官方帮助文件中的解释,上述内容均为笔者自行总结,因此可能会存在一定的错误或偏差,还望各位读者不吝指正。
查看更多评论 >