GMSH Mesh Files#
Export meshes in GMSH’s native format for inspection, debugging, or further processing.
Basic Export#
import cadquery as cq
from cad_to_dagmc import CadToDagmc
assembly = cq.Assembly()
assembly.add(cq.Workplane("XY").sphere(10), name="sphere")
model = CadToDagmc()
model.add_cadquery_object(assembly, material_tags=["tungsten"])
# Export 2D surface mesh
model.export_gmsh_mesh_file(
filename="surface_mesh.msh",
dimensions=2,
min_mesh_size=0.5,
max_mesh_size=5.0,
)
# Export 3D volume mesh
model.export_gmsh_mesh_file(
filename="volume_mesh.msh",
dimensions=3,
min_mesh_size=0.5,
max_mesh_size=5.0,
)
With Per-Volume Mesh Sizing#
import cadquery as cq
from cad_to_dagmc import CadToDagmc
coarse_box = cq.Workplane().box(1, 1, 2)
fine_box = cq.Workplane().moveTo(1, 0.5).box(1, 1, 1.5)
default_box = cq.Workplane().moveTo(2, 1).box(1, 1, 1)
assembly = cq.Assembly()
assembly.add(coarse_box, name="coarse")
assembly.add(fine_box, name="fine")
assembly.add(default_box, name="global")
model = CadToDagmc()
model.add_cadquery_object(assembly, material_tags="assembly_names")
model.export_gmsh_mesh_file(
filename="different_resolution_meshes.msh",
dimensions=2,
min_mesh_size=0.01,
max_mesh_size=10,
set_size={
"coarse": 0.9,
"fine": 0.1,
},
)
API Reference#
export_gmsh_mesh_file()#
model.export_gmsh_mesh_file(
filename="mesh.msh", # Output file path
dimensions=2, # 2 for surface, 3 for volume
min_mesh_size=1.0, # Minimum element size
max_mesh_size=10.0, # Maximum element size
mesh_algorithm=1, # GMSH algorithm (1-10)
set_size=None, # Per-volume sizes
scale_factor=1.0, # Geometry scaling
imprint=True, # Imprint shared surfaces
method="file", # CAD transfer method
)
Parameters:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
str |
“mesh.msh” |
Output GMSH file path |
|
int |
2 |
Mesh dimensions (2=surface, 3=volume) |
|
float |
None |
Minimum mesh element size |
|
float |
None |
Maximum mesh element size |
|
int |
1 |
GMSH meshing algorithm |
|
dict |
None |
Per-volume mesh sizes |
|
float |
1.0 |
Geometry scale factor |
|
bool |
True |
Imprint shared surfaces |
|
str |
“file” |
CAD transfer method |
Use Cases#
Debugging Mesh Quality#
Export to GMSH format and open in the GMSH GUI:
gmsh mesh.msh
This allows you to:
Visually inspect mesh quality
Check element sizes
Verify geometry import
Creating Pre-meshed Files#
Create a mesh file that can be converted to DAGMC later:
import cadquery as cq
from cad_to_dagmc import CadToDagmc
import cad_to_dagmc
# First, create GMSH mesh
result1 = cq.Workplane("XY").box(10.0, 10.0, 5.0)
result2 = cq.Workplane("XY").moveTo(10, 0).box(10.0, 10.0, 5.0)
assembly = cq.Assembly()
assembly.add(result1)
assembly.add(result2)
assembly.save("geometry.stp", exportType="STEP")
geometry = CadToDagmc()
geometry.add_stp_file("geometry.stp")
geometry.export_gmsh_mesh_file(filename="mesh.msh")
# Later, convert to DAGMC
cad_to_dagmc.export_gmsh_file_to_dagmc_h5m_file(
gmsh_filename="mesh.msh",
material_tags=["mat1", "mat2"],
dagmc_filename="dagmc.h5m",
)
2D vs 3D Meshes#
Dimension |
Mesh Type |
Use Case |
|---|---|---|
|
Triangular surface |
DAGMC geometry input |
|
Tetrahedral volume |
Volume mesh / analysis |
See Also#
GMSH Files Input - Loading GMSH files back
GMSH Backend - Meshing parameters
GMSH Documentation - Official GMSH docs