From 461446a050b29bca6c3e7476a07e0de16c1cb283 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sat, 9 Jan 2016 15:56:45 -0600 Subject: [PATCH] Allow integral() to work on surfaces --- grudge/symbolic/operators.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/grudge/symbolic/operators.py b/grudge/symbolic/operators.py index a1396ff..e1e9091 100644 --- a/grudge/symbolic/operators.py +++ b/grudge/symbolic/operators.py @@ -475,11 +475,18 @@ def stiffness_t(dim): def integral(arg, dd=None): + sym = _sym() + if dd is None: - dd = _sym().DD_VOLUME + dd = sym.DD_VOLUME - from grudge import sym - return sym.NodalSum(dd)(sym.MassOperator()(sym.Ones(dd))*arg) + dd = sym.as_dofdesc(dd) + + return sym.NodalSum(dd)( + arg * sym.cse( + sym.MassOperator(dd_in=dd)(sym.Ones(dd)), + "mass_quad_weights", + sym.cse_scope.DISCRETIZATION)) def norm(p, arg, dd=None): @@ -489,7 +496,9 @@ def norm(p, arg, dd=None): sym = _sym() if dd is None: - dd = _sym().DD_VOLUME + dd = sym.DD_VOLUME + + dd = sym.as_dofdesc(dd) if p == 2: norm_squared = sym.NodalSum(dd_in=dd)( -- GitLab