From d5ebf724e5297de47aeaf88ea0f0839ca7268e45 Mon Sep 17 00:00:00 2001 From: Matthew Smith <mjsmith6@illinois.edu> Date: Thu, 3 Dec 2020 11:12:42 -0600 Subject: [PATCH] add mass operator to EagerDGDiscretization --- grudge/eager.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/grudge/eager.py b/grudge/eager.py index 92378f99..affefcbd 100644 --- a/grudge/eager.py +++ b/grudge/eager.py @@ -58,6 +58,7 @@ class EagerDGDiscretization(DGDiscretizationWithBoundaries): .. automethod:: weak_div .. automethod:: normal + .. automethod:: mass .. automethod:: inverse_mass .. automethod:: face_mass @@ -265,6 +266,26 @@ class EagerDGDiscretization(DGDiscretizationWithBoundaries): local_only=True) (array_context=actx)) + @memoize_method + def _bound_mass(self, dd): + return bind(self, sym.MassOperator(dd_in=dd)(sym.Variable("u", dd)), + local_only=True) + + def mass(self, *args): + if len(args) == 1: + vec, = args + dd = sym.DOFDesc("vol", sym.QTAG_NONE) + elif len(args) == 2: + dd, vec = args + else: + raise TypeError("invalid number of arguments") + + if isinstance(vec, np.ndarray): + return obj_array_vectorize( + lambda el: self.mass(dd, el), vec) + + return self._bound_mass(dd)(u=vec) + @memoize_method def _bound_inverse_mass(self): return bind(self, sym.InverseMassOperator()(sym.Variable("u")), -- GitLab