diff --git a/meshmode/discretization/poly_element.py b/meshmode/discretization/poly_element.py index 5f636e78165f46b32ecb9c41e2883927ece81f82..6615b16a57b4f58d5102fc513be94566dc2eded9 100644 --- a/meshmode/discretization/poly_element.py +++ b/meshmode/discretization/poly_element.py @@ -102,7 +102,17 @@ class PolynomialElementGroupBase(ElementGroupBase): # {{{ concrete element groups for simplices -class PolynomialSimplexElementGroupBase(PolynomialElementGroupBase): +class SimplexElementGroupBase(ElementGroupBase): + @memoize_method + def from_mesh_interp_matrix(self): + meg = self.mesh_el_group + return mp.resampling_matrix( + mp.simplex_best_available_basis(meg.dim, meg.order), + self.unit_nodes, + meg.unit_nodes) + + +class PolynomialSimplexElementGroupBase(PolynomialElementGroupBase, SimplexElementGroupBase): def is_orthogonal_basis(self): return self.dim <= 3 @@ -118,14 +128,6 @@ class PolynomialSimplexElementGroupBase(PolynomialElementGroupBase): else: return mp.grad_simplex_monomial_basis(self.dim, self.order) - @memoize_method - def from_mesh_interp_matrix(self): - meg = self.mesh_el_group - return mp.resampling_matrix( - mp.simplex_best_available_basis(meg.dim, meg.order), - self.unit_nodes, - meg.unit_nodes) - class InterpolatoryQuadratureSimplexElementGroup(PolynomialSimplexElementGroupBase): """Elemental discretization supplying a high-order quadrature rule @@ -160,7 +162,7 @@ class InterpolatoryQuadratureSimplexElementGroup(PolynomialSimplexElementGroupBa return self._quadrature_rule().weights -class QuadratureSimplexElementGroup(PolynomialSimplexElementGroupBase): +class QuadratureSimplexElementGroup(SimplexElementGroupBase): """Elemental discretization supplying a high-order quadrature rule with a number of nodes which does not necessarily match the number of polynomials in :math:`P^k`. This discretization therefore excels at @@ -186,6 +188,7 @@ class QuadratureSimplexElementGroup(PolynomialSimplexElementGroupBase): dim2, nunit_nodes = result.shape assert dim2 == self.mesh_el_group.dim + return result @property