From 01a59e0b7a73810f8004071a9519c4fa43bbd72c Mon Sep 17 00:00:00 2001 From: Matt Smith <mjsmith6@illinois.edu> Date: Fri, 20 May 2022 17:37:57 -0500 Subject: [PATCH] make dt_geometric_factors work with empty meshes (#257) --- grudge/dt_utils.py | 8 ++++++-- grudge/op.py | 2 +- test/test_dt_utils.py | 5 +++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/grudge/dt_utils.py b/grudge/dt_utils.py index d54851f9..e245ad25 100644 --- a/grudge/dt_utils.py +++ b/grudge/dt_utils.py @@ -288,7 +288,9 @@ def dt_geometric_factors( actx.einsum( "fej->e", face_ae_i.reshape( - vgrp.mesh_el_group.nfaces, vgrp.nelements, -1), + vgrp.mesh_el_group.nfaces, + vgrp.nelements, + face_ae_i.shape[-1]), tagged=(FirstAxisIsElementsTag(),)) for vgrp, face_ae_i in zip(volm_discr.groups, face_areas) @@ -307,7 +309,9 @@ def dt_geometric_factors( actx.einsum( "fej->e", face_ae_i.reshape( - vgrp.mesh_el_group.nfaces, vgrp.nelements, -1 + vgrp.mesh_el_group.nfaces, + vgrp.nelements, + face_ae_i.shape[-1] ) / afgrp.nunit_dofs, tagged=(FirstAxisIsElementsTag(),)) diff --git a/grudge/op.py b/grudge/op.py index 07b94f02..d544d7ca 100644 --- a/grudge/op.py +++ b/grudge/op.py @@ -874,7 +874,7 @@ def _apply_face_mass_operator(dcoll: DiscretizationCollection, dd, vec): surf_ae_i.reshape( vgrp.mesh_el_group.nfaces, vgrp.nelements, - -1), + surf_ae_i.shape[-1]), vec_i.reshape( vgrp.mesh_el_group.nfaces, vgrp.nelements, diff --git a/test/test_dt_utils.py b/test/test_dt_utils.py index af9cbb6b..63eb4b4c 100644 --- a/test/test_dt_utils.py +++ b/test/test_dt_utils.py @@ -85,6 +85,11 @@ def test_geometric_factors_regular_refinement(actx_factory, name): ratios = min_factors[:-1] / min_factors[1:] assert np.all(np.isclose(ratios, 2)) + # Make sure it works with empty meshes + mesh = builder.get_mesh(0, builder.mesh_order) + dcoll = DiscretizationCollection(actx, mesh, order=builder.order) + factors = thaw(dt_geometric_factors(dcoll), actx) # noqa: F841 + @pytest.mark.parametrize("name", ["interval", "box2d", "box3d"]) def test_non_geometric_factors(actx_factory, name): -- GitLab