Gmsh(Geometry Modeling and Meshing Suite)是一个开源的三维有限元网格生成器,它集成了内置的CAD引擎和后处理器。Gmsh的设计目标是提供一个快速、轻量级且用户友好的网格工具,同时具备参数化输入和高级可视化能力。Gmsh围绕几何(geometry)、网格(mesh)、求解器(solver)和后处理(post-processing)四个模块构建,用户可以通过图形用户界面(GUI)或者使用Gmsh自己的脚本语言(.geo文件)进行交互式输入,也可以通过C++、C、Python或Julia的应用程序接口(API)进行操作。
Gmsh支持多种文件格式的导入和导出,可以直接导入CAD文件并生成2D/3D网格,用户还可以在用户界面直接修改网格参数并指定网格大小。此外,Gmsh可以从导入的STEP文件导出GEO脚本文件,从而在geo文件中对模型参数进行修改。对于Python用户,可以使用Pygmsh,这是Gmsh的Python接口,它改进了直接使用Gmsh的一些缺点,例如在Gmsh脚本中每个几何实体必须手动分配唯一编号,而Pygmsh允许使用变量名来命名这些几何实体,避免了对编号唯一性的检查。
Gmsh的使用在学术界和工程界都得到了广泛的认可,其研究成果被发表在《International Journal for Numerical Methods in Engineering》上。Gmsh遵循GNU通用公共许可证(GPL)的条款进行分发,这意味着任何人都可以自由使用和分发Gmsh,但不能将Gmsh集成到任何计划分发的封闭源代码软件中,除非获得不同的许可。
Gmsh的用户界面提供了浅色和深色两种主题,并且基于FLTK和OpenGL构建,提供了跨平台的图形用户界面。Gmsh还实现了ONELAB服务器来驱动外部求解器,如开源有限元求解器GetDP,Gmsh和GetDP捆绑在ONELAB应用程序中,可在iPhone、iPad和Android设备上使用。
在使用Gmsh时,用户可以通过设置基本的几何实体和布尔操作来建立几何形状,然后进行网格划分。用户还可以指定使用内置内核还是OpenCASCADE内核来创建几何形状。Gmsh的设计和功能使其成为一个强大的工具,适用于需要进行复杂几何建模和网格生成的各种应用场景。对于需要结构化网格的情况,Gmsh能够对具有四边形的区域进行网格划分,并且可以使用结构化算法对圆形等形状进行网格划分。
安装gmsh
Pip install gmsh
测试gmsh
import gmsh
gmsh.initialize()
gmsh.model.add("model13")
gmsh.model.occ.addBox(1,1,1,1,1,1)
gmsh.model.occ.synchronize()
gmsh.model.mesh.setSize(gmsh.model.getEntities(0), 0.05)
gmsh.option.setNumber("Mesh.Algorithm3D",1)
gmsh.model.mesh.generate(3)
gmsh.fltk.run()
gmsh.finalize()