From 9b938d8dd4ea12bd26cc5a6d96173932ed1aee96 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 8 Jan 2016 14:51:14 -0600 Subject: [PATCH] Implement face mass matrices --- grudge/execution.py | 64 ++++++++++++++++++++++++++++- grudge/symbolic/mappers/__init__.py | 11 +++++ grudge/symbolic/operators.py | 42 +++++++++++++++++-- 3 files changed, 112 insertions(+), 5 deletions(-) diff --git a/grudge/execution.py b/grudge/execution.py index 04bc71d9..0b5b21e5 100644 --- a/grudge/execution.py +++ b/grudge/execution.py @@ -239,8 +239,68 @@ class ExecutionMapper(mappers.Evaluator, return self.discr.opposite_face_connection(qtag)( self.queue, self.rec(field_expr)).with_queue(self.queue) - def map_face_mass_operator(self, op, field_expr): - raise NotImplementedError + # {{{ face mass operator + + def map_ref_face_mass_operator(self, op, field_expr): + field = self.rec(field_expr) + + from grudge.tools import is_zero + if is_zero(field): + return 0 + + @memoize_in(self.bound_op, "face_mass_knl") + def knl(): + knl = lp.make_kernel( + """{[k,i,f,j]: + 0<=k