From ff799e1651339aa9a6bf4633ae967f4a0f2d06b7 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Wed, 22 Feb 2017 16:11:27 -0600 Subject: [PATCH] Add support for element_shrink_factor in visualizer --- meshmode/discretization/visualization.py | 33 +++++++++++++++++++++--- test/test_meshmode.py | 2 +- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/meshmode/discretization/visualization.py b/meshmode/discretization/visualization.py index 660e78d3..1021d8f4 100644 --- a/meshmode/discretization/visualization.py +++ b/meshmode/discretization/visualization.py @@ -104,11 +104,16 @@ class Visualizer(object): .. automethod:: write_vtk_file """ - def __init__(self, connection): + def __init__(self, connection, element_shrink_factor=None): self.connection = connection self.discr = connection.from_discr self.vis_discr = connection.to_discr + if element_shrink_factor is None: + element_shrink_factor = 1 + + self.element_shrink_factor = element_shrink_factor + def _resample_and_get(self, queue, vec): from pytools.obj_array import with_object_array_or_scalar @@ -117,6 +122,8 @@ class Visualizer(object): return with_object_array_or_scalar(resample_and_get_one, vec) + # {{{ vis sub-element connectivity + @memoize_method def _vis_connectivity(self): """ @@ -207,6 +214,10 @@ class Visualizer(object): return result + # }}} + + # {{{ mayavi + def show_scalar_in_mayavi(self, field, **kwargs): import mayavi.mlab as mlab @@ -256,6 +267,10 @@ class Visualizer(object): if do_show: mlab.show() + # }}} + + # {{{ vtk + def write_vtk_file(self, file_name, names_and_fields, compressor=None, real_only=False): @@ -287,6 +302,16 @@ class Visualizer(object): # }}} + nodes = nodes + if self.element_shrink_factor != 1: + for vgrp in self.vis_discr.groups: + nodes_view = vgrp.view(nodes) + el_centers = np.mean(nodes_view, axis=-1) + nodes_view[:] = ( + (self.element_shrink_factor * nodes_view) + + (1-self.element_shrink_factor) + * el_centers[:, :, np.newaxis]) + grid = UnstructuredGrid( (self.vis_discr.nnodes, DataArray("points", @@ -314,7 +339,7 @@ class Visualizer(object): AppendedDataXMLGenerator(compressor)(grid).write(outf) -def make_visualizer(queue, discr, vis_order): +def make_visualizer(queue, discr, vis_order, element_shrink_factor=None): from meshmode.discretization import Discretization from meshmode.discretization.poly_element import ( PolynomialWarpAndBlendElementGroup, @@ -331,7 +356,9 @@ def make_visualizer(queue, discr, vis_order): from meshmode.discretization.connection import \ make_same_mesh_connection - return Visualizer(make_same_mesh_connection(vis_discr, discr)) + return Visualizer( + make_same_mesh_connection(vis_discr, discr), + element_shrink_factor=element_shrink_factor) # }}} diff --git a/test/test_meshmode.py b/test/test_meshmode.py index 38b153e1..5178cf40 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -496,7 +496,7 @@ def test_merge_and_map(ctx_getter, visualize=False): discr = Discretization(cl_ctx, mesh3, discr_grp_factory) from meshmode.discretization.visualization import make_visualizer - vis = make_visualizer(queue, discr, 3) + vis = make_visualizer(queue, discr, 3, element_shrink_factor=0.8) vis.write_vtk_file("merged.vtu", []) # }}} -- GitLab