diff --git a/meshmode/mesh/io.py b/meshmode/mesh/io.py index f3cdaea853d0f9441d7d463f2155ba8d95004d1e..f4d7acc88bdfd9e526f4f495f0c061f470ff047c 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 )