[Gmsh] Building meshes through the gmsh api

Lawrence Mitchell lawrence.mitchell at imperial.ac.uk
Mon Sep 16 15:07:15 CEST 2013


Dear gmshers,

I would like to use the gmsh API to define a geometry and then mesh it.
 The meshes I am trying to build are quite simple, unit square, cube,
circle and spherical structured meshes.  So I am using the extrusion
capabilities.  I'm using the python interface, but examples in C++ would
probably be fine.

Currently I do something like the following:

Build .geo file source string

e.g. for a circle:

cat > circle.geo<<EOF
            lc = 1e-2;
            Point(1) = {0, -0.5, 0, lc};
            boundary[] = Extrude {0, 1, 0} {
                Point{1}; Layers{4};
            };
            surface[] = Extrude{{0, 0, 1},{0, 0, 0}, 1.9999 * Pi}{
                    Line{1};Layers{8};
            };
            Physical Line(1) = { boundary[1] };
            Physical Surface(2) = { surface[1] };
EOF

Now I do:

model = gmshpy.GModel()
model.readGEO("circle.geo")
model.mesh(2)
model.writeMSH("circle.msh")

Given how simple my meshes are, I'd like to replace the writing to a geo
file and immediately reading by directly building the geometry
programmatically.  But I'm unsure how to specify extruded entities.  Any
advice?

Additionally, for the circle mesh case, is there an obvious way I can
build a semi-structured mesh in this way, but avoid the large number of
elements meeting at the centre?

Cheers,

Lawrence