From 2fabb17dc0dcd3307a38a197a7bd684eb21e36bd Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sat, 9 Jan 2016 15:48:35 -0600
Subject: [PATCH] Add meshmode.mesh.io.from_meshpy

---
 meshmode/mesh/io.py | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/meshmode/mesh/io.py b/meshmode/mesh/io.py
index 38617cca..96e333dd 100644
--- a/meshmode/mesh/io.py
+++ b/meshmode/mesh/io.py
@@ -39,6 +39,7 @@ __doc__ = """
 
 .. autofunction:: read_gmsh
 .. autofunction:: generate_gmsh
+.. autofunction:: from_meshpy
 
 """
 
@@ -179,6 +180,8 @@ class GmshMeshReceiver(GmshMeshReceiverBase):
 # }}}
 
 
+# {{{ gmsh
+
 def read_gmsh(filename, force_ambient_dim=None):
     """Read a gmsh mesh file from *filename* and return a
     :class:`meshmode.mesh.Mesh`.
@@ -229,3 +232,32 @@ def generate_gmsh(source, dimensions, order=None, other_options=[],
                 break
 
     return mesh
+
+# }}}
+
+
+# {{{ meshpy
+
+def from_meshpy(mesh_info, order):
+    """Imports a mesh from a :mod:`meshpy` *mesh_info* data structure,
+    which may be generated by either :mod:`meshpy.triangle` or
+    :mod:`meshpy_tet`.
+    """
+    from meshmode.mesh import Mesh
+    from meshmode.mesh.generation import make_group_from_vertices
+
+    vertices = np.array(mesh_info.points).T
+    elements = np.array(mesh_info.elements, np.int32)
+
+    grp = make_group_from_vertices(vertices, elements, order)
+
+    # FIXME: Should transfer boundary/volume markers
+
+    return Mesh(
+            vertices=vertices, groups=[grp],
+            nodal_adjacency=None,
+            facial_adjacency_groups=None)
+
+# }}}
+
+# vim: foldmethod=marker
-- 
GitLab