导入的时候FLAC3D弹出来一句“Unrecognized zone type”,后面跟着一串单元ID,翻了半天,HyperMesh里用的是金字塔单元,FLAC3D不认。路径D:\HyperMesh\flac3d_interface\notes.txt。
HyperMesh没有官方FLAC3D接口,走的是第三方插件。GitHub上搜Unusednamee/HMtoFLAC3D,下载下来两个文件:userpage.mac和HMtoFLAC3D.tcl。userpage.mac复制到%hm\bin\win64下面覆盖原文件,HMtoFLAC3D.tcl复制到%hm\scripts下面。打开HyperMesh,Preferences→Menu Config,键盘敲O也行,点retrieve,macro file那一栏选刚才复制的userpage.mac,重启HyperMesh或者切换一下求解器类型,右侧Utility→User里面就多出来一个ToFLAC3D按钮。点一下,选要导出的部件,FLAC3D网格文件就出来了。
这个插件只认三种单元:六面体hex8转brick,三棱柱penta6转wedge,四面体tetra4转tetrahedron。其他单元类型导不出来,导完会弹个警告告诉你哪些没导出去,正常现象。金字塔单元在HyperMesh里是pyramid5,FLAC3D里没有对应类型,要么删掉重划,要么退化成四面体。二次单元C3D10、C3D20也不支持,FLAC3D只用一阶单元,HyperMesh里划网格的时候直接用一阶的,别用二次的省事,导的时候还得降阶。
分组这块是插件自己处理的,HyperMesh里每个Component对应FLAC3D里一个Group,Group名字就是Component的名字。不用提前赋材料属性和截面属性,导出来的f3grid文件里只有节点和单元信息,材料在FLAC3D里用FISH或者zone cmodel assign重新赋。HyperMesh里给Component起名的时候别用中文和特殊符号,FLAC3D的GROUP名里有中文有时候识别不了,改成全英文或者拼音。D:\HyperMesh\flac3d_interface\group_naming.txt里记着上次中文名导致分组丢失的例子。
不想装插件的话走Abaqus inp中转也行。HyperMesh里导出Abaqus格式的inp文件,FLAC3D里`zone import`命令直接读inp,支持六面体和四面体。但inp里不能有结构单元,Liner和Geogrid要在HyperMesh里单独导出成另一个inp,然后在FLAC3D里用`structure liner import`读。梁单元和壳单元也是单独导,混在一起导的时候FLAC3D会报“Unrecognized element type”。实体和结构分开导,D:\HyperMesh\flac3d_interface\export_order.txt里记着先导zone再导structure,反了的话structure附着不到zone上。

导入FLAC3D的命令,6.0及以上版本用`zone import 'filename.f3grid'`,5.0用`import grid 'filename.f3grid'`。导入之后用`zone list`看一下单元数量和类型,跟HyperMesh里的单元数对一下,少了几十个的话大概率是有不支持的类型被静默跳过了。`zone group list`看分组,分组数量跟HyperMesh里的Component数量对一下,少了就回去查Component名字有没有中文或者特殊字符。命令流里加`use-given-ids`关键字的时候节点和单元的ID按f3grid文件里的来,不加的话FLAC3D自己重新编号,跟后续FISH脚本里的ID引用对不上。
网格质量检查在HyperMesh里先做,F10扫一遍,Jacobian低于0.5的单元FLAC3D算起来会出问题,长宽比超过10的也检查一下。FLAC3D对网格质量的容忍度比有限元低,畸变单元在大变形计算里直接导致计算中止,HyperMesh里先光顺几遍再导。D:\HyperMesh\flac3d_interface\quality_check.txt里存着上次导之前的F10报告。
那个金字塔单元混在实体里那次,回去把金字塔删了,交界面的网格重新划成四面体,导出来之后FLAC3D里zone数量跟HyperMesh里对上了。下次导之前先F10扫一遍,把不支持的类型挑出来删掉,插件报的警告里会列出来,但列的是单元ID,还得自己去找位置。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删