在CAE工程仿真领域,有一个一直被低估却至关重要的问题——网格数据格式。无论是流体、结构还是电磁仿真,网格文件不仅关乎数据的传递效率,更直接影响着自研求解器或仿真平台的开发成本。作为自研CAE软件的开发者,当你的求解器需要一个“前处理搭档”时,选择哪种主流通用格式作为输入?哪些格式可以直接解析?哪些需要逆向破解?本文将对主流CAE软件(涵盖流体与结构)的网格导出格式进行一次全面梳理。
为什么网格格式如此重要?
在开始逐一盘点之前,有必要先理解网格格式在CAE数据链路中的角色。网格文件本质上是对几何模型离散化后的数据描述,主要包含:
节点(Node)信息:空间坐标
单元(Element)信息:由节点连接构成的网格单元及其类型
边界/面(Boundary/Face)信息:用于施加边界条件的面分组
材料/属性信息:有时会附带写入
网格格式的可解析程度,直接决定了它能否被第三方求解器正确读取。对于自研软件开发而言,理想的网格格式应具备三个特征:① 文本化(ASCII),肉眼可读;② 数据结构清晰,文档完整;③ 行业通用性强,生态支持好。
一、结构仿真软件阵营
1. Abaqus:INP格式——最受开发者青睐的结构网格格式
导出格式:Abaqus的网格数据主要通过 INP文件(*.inp) 导出。INP文件是Abaqus求解器的输入文件,采用关键词驱动(Keyword-driven)的纯文本格式,结构清晰,层级分明。此外,Abaqus/CAE还支持导出STL、OBJ等可视化格式。
可解析性:INP文件的结构分为两大板块:模型数据(Model Data)和历程数据(History Data),以首个*STEP关键词为界。模型数据部分包含*NODE(节点坐标定义)、*ELEMENT(单元拓扑定义)、*NSET和*ELSET(分组定义)等核心块-。因为是纯文本且遵循严格的语法规范,INP是可解析性最优的CAE网格格式之一。
作为自研软件前处理网格的适用性:
INP格式堪称自研软件“最佳前处理网格格式”的热门候选。Abaqus已成为结构仿真的行业标准,大量网格划分工具(如HyperMesh、ANSA)都原生支持导出INP文件。而且INP的ASCII文本特性使得开发者可以轻松编写解析器,甚至可以直接在Python中用正则表达式或基于numpy进行逐行解析,将节点坐标和单元连接关系提取到自研求解器的数据结构中。目前市面上已有多个国产CAE格式转换工具(如YJExchanger)全面支持INP文件解析,并不断扩充网格类型适配范围(新增DC3D10E、SFM3D4等多种类型)。
解析注意事项:
注意单元类型映射:INP中的单元类型(如C3D8R、CAX3)需要与自研求解器的单元库对应
INP格式存在不同版本之间的语法差异,需要做兼容处理
部分商软导出的INP可能包含平台特有关键词,需要过滤或兼容
2. Nastran:BDF/DAT/NAS——航空航天的“通用语”
导出格式:Nastran格式(*.bdf, *.dat, *.nas, *.nastran)是仿真工具之间交换三维网格最常用的格式之一。绝大多数结构前处理软件(Patran、HyperMesh、ANSA等)都支持输出Nastran格式。
可解析性:Nastran文件同样采用固定格式或自由格式的文本语法,由各种“卡片”(如GRID定义节点、CTETRA/CHEXA等定义单元)构成。其中小场格式(Small field format, 8字符宽)和大场格式(Large field format, 16字符宽)以及自由场格式(Free field format, 逗号分隔)三种输出格式可供选择,灵活适配不同解析需求。整个格式是公开文档化的,可解析性很高。
作为自研软件前处理网格的适用性:Nastran格式是与INP并列的最优选择之一,尤其在航空航天和汽车行业具有极强的影响力。Altair的OptiStruct求解器就采用了与Nastran高度兼容的输入格式,两者文本格式几乎可以直接互换。如果你面向的行业以航空航天为主,Nastran格式几乎是必选项。目前国产CAE数据转换工具也已支持Nastran(*.bdf)格式并新增局部坐标系解析功能,进一步提升转换准确性。
解析注意事项:
固定格式对列位置敏感,需注意符合标准
多种单元类型支持(体、壳、梁等),需建立完整的单元映射表
卡片类型繁多,全量支持成本较高
3. COMSOL Multiphysics:MPHTXT——被低估的通用网格格式
导出格式:COMSOL支持多种网格导出格式,包括:
原生格式:COMSOL Multiphysics文本格式(.mphtxt)和二进制格式(.mphbin)
Nastran格式:*.nas, *.bdf, *.nastran, *.dat-
STL格式:三角形面网格
节式文本格式(Sectionwise)
可解析性:MPHTXT是纯文本格式,可读性高。Nastran导出则兼容已有生态。COMSOL的网格导出功能还支持指定导出域单元、边界单元、边单元和顶点单元等不同层次的网格数据。
作为自研软件前处理网格的适用性:COMSOL本身是多物理场仿真的标杆,其MPHTXT格式可以直接读取解析。对于需要处理多物理场耦合的自研求解器来说,如果希望从COMSOL生态导流用户,这是一个很好的选择。此外COMSOL的Nastran导出功能也能借助该通用格式的生态优势。不过需要注意的是,COMSOL虽然能够导出“映射”网格,但导出后可能丢失结构化信息,变为非结构化格式这一点在解析时需要特别注意。
二、流体仿真软件阵营
4. ANSYS Fluent & SpaceClaim:MSH/CDB/CGNS——流体仿真的格式中枢
导出格式:ANSYS生态下的网格导出能力非常丰富:
Fluent网格格式(*.msh):Fluent的标准网格文件,支持ASCII和二进制两种格式
ANSYS Mechanical格式(*.cdb):用于结构分析,支持节点和单元集导出CGNS格式(*.cgns):CFD通用符号系统标准格式
SpaceClaim导出:支持*.amm, *.anf, *.inp, *.cdb, *.msh, *.cgns, *.uns, *.k等多种格式-
可解析性:MSH格式在非二进制模式下是ASCII文本,可以直接读取。但需要特别注意:Fluent Meshing中默认导出二进制格式,需要取消勾选二进制选项才能获得可解析的ASCII文件。
CGNS格式有两种底层存储:较新的HDF5格式(.cgns)和传统ADF格式(.cga),其中HDF5是当前默认标准。
作为自研软件前处理网格的适用性:MSH格式是流体仿真中最通用的网格格式,大量开源工具(如OpenFOAM的fluentMeshToFoam转换工具)都支持读取。CDB格式在结构仿真中也有很好的互操作性。CGNS格式作为CFD通用标准,支持跨软件的网格与求解数据交换。。
解析注意事项:
MSH文件需要确保以ASCII模式导出(默认是二进制!)
CGNS的HDF5底层需要专门的库支持
Fluent的边界条件命名可能在跨软件时丢失,需在导出前做好Named Selection设置-
5. STAR-CCM+:CCM/CGNS——功能强大但生态相对封闭
导出格式:STAR-CCM+支持的网格导出格式(以向Fluent导出为例)包括:
CGNS格式(*.cgns):CFD通用标准格式
Ensight格式:EnSight Gold格式
Tecplot格式:已被逐步废弃
CCM格式(*.ccm):STAR-CD求解器和pro-STAR的本地格式
Simcenter数据文件(*.scd5):基于HDF5的西门子专有格式
可解析性——关键警报:CCM格式是加密后的二进制格式,直接用记事本打开是乱码。这一点需要自研软件开发团队特别注意。相比之下,CGNS导出是更开放的选择。CGNS标准广泛用于各种软件包之间的数据交换支持网格与求解数据的同时导出。
值得一提的是STAR-CCM+向Fluent导出时,三种格式的表现差异较大:Ensight格式能够较好地保存区域及边界信息,几乎无损导出;Tecplot格式边界类型识别存在较多错误且已被弃用;而CGNS格式的边界名称导出效果最差,可能需要额外处理。
作为自研软件前处理网格的适用性:💎💎💎(CGNS路径)💎(直接CCM解析路径)
直接解析CCM加密二进制文件的技术难度和逆向风险都较高。推荐路径是要求用户通过CGNS格式导出,STAR-CCM+在CGNS导出方面提供了成熟的机制,可以设置导出事件触发、增量导出等高级功能。此外,也可以通过OpenFOAM自带的ccmToFoam工具将CCM文件转换后再接入自研求解器。
6. OpenFOAM:polyMesh——开源世界的标杆,自研求解器的“原生模板”
导出格式:OpenFOAM使用其专有的polyMesh格式,本质上是一组文本文件的集合:
points文件:定义网格顶点坐标(单位:米)
faces文件:定义由顶点组成的面
owner文件:定义每个面的所有者单元
neighbour文件:定义每个面的邻居单元
boundary文件:定义边界面分组
可解析性:polyMesh采用完全开放、纯文本的文件结构,每一个文件都有极其清晰的格式定义。例如,points文件的第一行声明点数量,后续每行给出XYZ坐标;faces文件定义了每个面由哪些顶点按右手定则组成。这种透明性使得polyMesh成为可解析性最好的网格格式之一。Python库openfoamparser_mai已经可以直接解析polyMesh文件中的所有网格数据(points, boundary, owner, neighbour, faces)并转换为Numpy数组。
作为自研软件前处理网格的适用性:💎💎💎💎💎
如果你正在开发CFD类自研求解器,polyMesh几乎是“零成本”的首选格式:
优势1:完全开源、格式公开、无商业许可风险
优势2:已有大量开源解析库可直接集成
优势3:polyMesh支持任意多面体单元,网格灵活性远超传统格式-91
优势4:生态强大,大量第三方工具(如Gmsh、Salome)都可生成polyMesh
优势5:既可读又可写,可以直接将自研求解器的结果写回polyMesh格式,实现闭环
注意:OpenFOAM的网格有效性检查非常严格,不符合标准的网格会被拒绝运行。这一点实际上也保护了自研求解器的稳定性——如果网格能在OpenFOAM中通过检查,那么在自研求解器中的可靠性也会更高。
三、前后处理专用工具
7. Altair HyperMesh:NASTRAN/ANSYS/ABAQUS——网格生成的“万能工厂”
导出格式:作为专业的前处理软件,HyperMesh可以导出几乎所有主流求解器的网格格式:
**NASTRAN格式(.nas, .bdf)
ANSYS格式(*.cdb)
ABAQUS格式(*.inp)
Feko格式(*.fhm)
HMASCII格式:HyperMesh自身的ASCII格式
可解析性:HyperMesh导出的网格文件天然兼容目标求解器格式,可解析性取决于所选输出格式。其中HMASCII是HyperMesh自身的ASCII文本格式,可读性较好;而通过NASTRAN模板导出时,文件结构与标准NASTRAN完全一致。HyperMesh还可以通过自定义模板(User Profile)实现任意格式的网格输出,灵活性极高。
作为自研软件前处理网格的适用性:💎💎💎💎💎
对于自研软件开发来说,HyperMesh是非常值得考虑的前处理工具选择:
用户使用HyperMesh划分好网格后,导出为NASTRAN或INP标准格式,即可被自研求解器直接读取
HyperMesh支持自定义导出模板,可以实现“为你的自研软件定制专属输出格式”,即直接在HyperMesh中生成求解器原生格式的网格文件
目前已有成功案例:用户定义HyperMesh输出模板后,可以将网格转化为Nek5000等科研程序的专用格式-
8. Gmsh:开源前处理的“新星”
导出格式:Gmsh支持导出多种网格格式,包括其自身的MSH格式(文本版)以及INP、UNV、VTK等,并可通过脚本将网格转化为各种目标格式。清华大学计算动力学研究室就基于Gmsh开发了CAD2Point预处理软件,用于将CAD模型转化为物质点模型。
可解析性:Gmsh的MSH格式(ASCII版)是纯文本格式,节点和单元定义一目了然。
作为自研软件前处理网格的适用性:💎💎💎💎
Gmsh非常适合科研类和轻量级自研求解器——免费、开源、跨平台。如果你希望为用户提供一个“从几何到网格”的完整链路,可以推荐用户使用Gmsh划分网格后再导入自研求解器。
四、自研软件开发者的格式选择指南
综合以上分析,这里给出针对不同场景的推荐方案:
场景一:CFD流体求解器开发
首选:OpenFOAM polyMesh —— 开源、无许可风险、格式透明次选:CGNS —— CFD通用标准,与主流商软互通兼容方案:Fluent MSH(ASCII模式)—— 通过
fluentMeshToFoam等工具可轻松转换
场景二:结构力学求解器开发
首选:Abaqus INP —— 行业标准、文档完善、解析友好次选:Nastran BDF —— 航空航天领域必备兼容方案:ANSYS CDB —— 通过APDL格式也可以读取
场景三:多物理场求解器开发
首选:Nastran —— 覆盖结构、热、电磁等多领域次选:COMSOL MPHTXT —— 原生多物理场网格描述兼容方案:CGNS —— 支持流体+结构联合仿真数据
快速参考表
五、给自研软件团队的三条实操建议
建议一:优先选择“文本格式+公开文档”
选择原则很简单——能用文本格式就用文本格式。 INP、BDF、MSH(ASCII模式)、polyMesh都是文本格式,可以直接阅读和调试。而二进制/加密格式(如STAR-CCM+的CCM文件)虽然功能强大,但直接解析的技术门槛高且存在逆向工程的法律与合规风险。如果用户必须使用STAR-CCM+作为前处理,建议引导用户通过CGNS通道导出,或使用OpenFOAM自带的ccmToFoam工具作为中间转换层。
不过这个原则也存在一些例外。 比如,CGNS的性能更好(基于HDF5的二进制实现),适合大规模网格;而EnSight Gold这种纯文本格式虽然透明性最好,但IO性能可能不够。工程中不是“非此即彼”,可以根据规模灵活选择。
建议二:打造“多格式导入”能力
如果想让自研求解器获得更广泛的用户基础,至少应支持INP + Nastran + polyMesh三种格式的导入,这样可以覆盖90%以上的结构、流体和科研用户场景。同时考虑支持CGNS格式,以打通与商软(ANSYS、STAR-CCM+)的互通链路。
目前国内已有团队在做这方面的工具(如Simversus的YJExchanger,支持多格式互相转换),可以关注和借鉴。
建议三:重视边界条件信息的保留
网格不只是节点和单元。Named Selection、边界类型标记、材料分组等附加信息同样重要。在选择网格导出格式和解析方案时,务必验证这些信息的完整性。例如,Fluent的MSH格式在跨软件迁移时可能出现边界命名丢失的问题;STAR-CCM+通过CGNS导出的边界命名也需要在导入端进行分割和重命名处理。
此外,不同软件对单元类型的命名体系和编号规则存在差异。建议在解析层建立一套内部统一的单元类型枚举,然后在每种格式的解析器中实现“外部类型→内部类型”的映射表,确保解析逻辑清晰、可维护。
结语
网格数据格式是CAE软件互操作的基础设施。对于自研CAE软件的开发者来说,选择正确的网格格式策略,可以让你的求解器低成本地接入成熟的商业网格生成工具生态,从而把研发精力集中在求解器本身的算法创新上。
在目前的技术条件下,文本格式(INP/BDF/polyMesh/MSH-ASCII)是最务实的选择,而CGNS则代表了未来标准化互操作的方向——特别是随着行业对多物理场耦合仿真的需求增加,CGNS这种能同时承载网格和求解数据的格式,将是自研软件生态的必争之地。
夜雨聆风