From 3a91a47f04d84bf274b0a4d91d58cde136f680ef Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Wed, 22 Feb 2017 17:30:33 -0600 Subject: [PATCH] Fix Mesh.copy() (Closes #3 on Gitlab) --- meshmode/mesh/__init__.py | 18 ++++++++++++++++++ test/test_meshmode.py | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/meshmode/mesh/__init__.py b/meshmode/mesh/__init__.py index e1a9566d..4a9279cb 100644 --- a/meshmode/mesh/__init__.py +++ b/meshmode/mesh/__init__.py @@ -660,6 +660,24 @@ class Mesh(Record): assert test_volume_mesh_element_orientations(self), \ "negatively oriented elements found" + def get_copy_kwargs(self, **kwargs): + def set_if_not_present(name, from_name=None): + if from_name is None: + from_name = name + if name not in kwargs: + kwargs[name] = getattr(self, from_name) + + set_if_not_present("vertices") + if "groups" not in kwargs: + kwargs["groups"] = [group.copy() for group in self.groups] + set_if_not_present("boundary_tags") + set_if_not_present("nodal_adjacency", "_nodal_adjacency") + set_if_not_present("facial_adjacency_groups", "_facial_adjacency_groups") + set_if_not_present("vertex_id_dtype") + set_if_not_present("element_id_dtype") + + return kwargs + @property def ambient_dim(self): return self.vertices.shape[0] diff --git a/test/test_meshmode.py b/test/test_meshmode.py index 5178cf40..84b14ec9 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -793,6 +793,12 @@ def test_box_mesh(ctx_getter, visualize=False): # }}} +def test_mesh_copy(): + from meshmode.mesh.generation import generate_box_mesh + mesh = generate_box_mesh(3*(np.linspace(0, 1, 5),)) + mesh.copy() + + # {{{ as_python stringification def test_as_python(): -- GitLab