gmsh是一款功能强大的开源有限元网格生成工具,能够便捷地读取 STEP 格式几何文件并实现参数化网格划分。下面使用C++调用GMSH编程接口,实现从几何导入到网格生成的完整流程,最终的网格划分数据保存成matlab可读取的文件,可用于后续的有限元计算。
原模型
网格划分结果
代码
#include <vector>
#include <gmsh.h>
int main(int argc, char **argv)
{
gmsh::initialize(argc, argv);
gmsh::model::add("model");
// 1. STEP文件导入
std::vector<std::pair<int, int> > v;
try {
gmsh::model::occ::importShapes("test.step", v);
} catch(...) {
gmsh::logger::write("Could not load STEP file!");
gmsh::finalize();
return 0;
}
// 2. 强制同步几何模型
gmsh::model::occ::synchronize();
// 3. 网格参数设置
gmsh::option::setNumber("Mesh.MeshSizeMin", 0.1); // 设置网格大小
gmsh::option::setNumber("Mesh.MeshSizeMax", 10);
gmsh::option::setNumber("Mesh.SubdivisionAlgorithm", 2); //设置网格细分为六面体
// 4. 生成网格
gmsh::model::mesh::generate(3);
// 5. 保存结果成matlab文件
gmsh::write("model.m");
// 6. 启动GUI验证
gmsh::fltk::run();
gmsh::finalize();
return 0;
}