FLAC3D中的模型建立与网格划分难以应对复杂情况,通常使用其他软件来完成模型建立与网格划分流程。如使用midas GTS 软件或者Altair公司的Hypermesh软件。ANSYS 也可以用于网格划分,但其花费的时间与最终网格划分质量难以尽人意。在Hypermesh中自带了与许多大型计算软件的转换接口,如ANSYS,ABAQUS 等,但其并未提供与FLAC3D的转换接口。
之前我所在实验室的做法是先使用Hypermesh自带的接口程序转换到ANSYS格式,然后再使用ANSYS至FLAC3D的接口程序(也是由前人编写,非官方接口)转换。但是这种方法的麻烦之处不仅在于需要两步转换过程,而且由于ANSYS软件的特性(模型分组依照模型材料确定),需要对Hypermesh的每一分组指定材料(material)和特性(properties),该过程需要花费一定的时间与精力。
我试图在网上寻找已经写好的Hypermesh->FLAC3D转换程序,但没有找到,于是自己参照Hypermesh的帮助文档编写了一份转换程序(Altiar公司发布在B站的官方教学视频也给我了很大帮助)。
程序见如下链接:
该程序只能进行一些简单的转换,但对于岩土工程领域来说,一般也能够满足需求。
使用方法
1.找到hypermesh安装目录,将userpage.mac文件复制到%hm\bin\win64文件夹下,选择替换目标文件。
2.将HMtoFLAC3D.tcl 文件复制到%\hm\scripts文件夹下。
3.打开hypermesh,在上方菜单栏中选择Preferences - Menu Config(或键盘输入"O",选择Menu Config),点击 retrieve...,在macro file 一栏中选择刚才复制的userpage.mac文件。
4.重新启动hypermesh或更改求解器类型。
5.在右侧选项卡中选择Utility->User,即出现"ToFLAC3D"按钮,单击按钮,选择想要导出的部分,即可完成FLAC3D网格文件的导出。
说明
1.本转换程序目前只支持以下单元类型的转换:
hypermesh -> FLAC3D
六面体单元 hex8 -> brick
三棱柱单元 penta6 -> wedge
四面体单元 tetra4 -> tetrahedron
后续可能会增加更多单元类型。
2.在进行转换之前,无需对单元赋予 matarial 和 property 属性。
3.导出数据在 FLAC3D 中单元分组与 hypermesh 中 components 分组相同,FLAC3D 中 GROUP 名称即 hypermesh 中 component 的名称。
4.导出格式兼容FLAC5.0及以上版本。
2023.2.27补充说明
近期收到了一些朋友给我的私信,表示无法成功导出网格文件,在此补充一些说明。
本程序基于hypermesh2019编写,在其他版本hypermesh使用本程序可能会出现兼容性问题,如果出现该问题建议使用“测试版”,“测试版”由于缺少分组导出功能,故其对不同版本之间的鲁棒性更高。在使用“测试版”的时候需要注意,请将不需要的部分提前删除掉,因为它会将目前存在的elems全部导出。(注:其实除上述提到的三种可以导出的单元类型外,其余类型可以不用删除,反正也导不出来……如果有不能导出的类型,导出结束后会给一个警告,表示有单元没有导出)
导出的文件在FLAC5.0及以上都可以打开,因为它们共用一套网格文件格式。
另附一组详细的使用过程图片。
1.从上文中给到的链接下载文件。
2.按照自己需求选择V1.0或测试版,将userpage.mac文件复制到%hm\bin\win64文件夹下,选择替换目标文件。将HMtoFLAC3D.tcl文件复制到%\hm\scripts文件夹下。
3.在想要导出网格时,按照下图顺序操作。
上图表示网格成功导出,如果此处有警告,说明存在三种支持导出类型以外的类型。
4.将导出的文件用FLAC3D打开。