From 5fd80db67ef6c8072262506392b53c36504ef4cf Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 30 Jan 2017 03:00:34 -0600
Subject: [PATCH] Reorder gmsh vertices (not just nodes) when loading quad
 meshes

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

diff --git a/meshmode/mesh/io.py b/meshmode/mesh/io.py
index f3cdaea8..f4d7acc8 100644
--- a/meshmode/mesh/io.py
+++ b/meshmode/mesh/io.py
@@ -177,9 +177,20 @@ class GmshMeshReceiver(GmshMeshReceiverBase):
                             np.ones(ngroup_elements, np.bool))
 
             elif isinstance(group_el_type, GmshTensorProductElementBase):
+                gmsh_vertex_tuples = type(group_el_type)(order=1).gmsh_node_tuples()
+                gmsh_vertex_tuples_loc_dict = dict(
+                        (gvt, i)
+                        for i, gvt in enumerate(gmsh_vertex_tuples))
+
+                from pytools import (
+                        generate_nonnegative_integer_tuples_below as gnitb)
+                vertex_shuffle = np.array([
+                    gmsh_vertex_tuples_loc_dict[vt]
+                    for vt in gnitb(2, group_el_type.dimensions)])
+
                 group = TensorProductElementGroup(
                     group_el_type.order,
-                    vertex_indices,
+                    vertex_indices[:, vertex_shuffle],
                     nodes,
                     unit_nodes=unit_nodes
                     )
-- 
GitLab