Create mesh with gmsh, convert it and import it in dolfin, problems

I would suggest not using xml, as this is a legacy-format.
How about using meshio to save your file as XDMF:

import meshio

geometry = meshio.read(filename)
meshio.write("mesh.xdmf", meshio.Mesh(points=geometry.points, cells={"triangle": geometry.cells["triangle"]}))
meshio.write("mf.xdmf", meshio.Mesh(points=geometry.points, cells={"line": geometry.cells["line"]},
                                                               cell_data={"line": {"name_to_read": geometry.cell_data["line"]["gmsh:physical"]}}))

This can be read into dolfin in the following way:

mesh = Mesh()
with XDMFFile("mesh.xdmf") as infile:
    infile.read(mesh)
mvc = MeshValueCollection("size_t", mesh, 1)
with XDMFFile("mf.xdmf") as infile:
    infile.read(mvc, "name_to_read")
mf  = cpp.mesh.MeshFunctionSizet(mesh, mvc))

1 Like