diff --git a/grudge/execution.py b/grudge/execution.py index 04bc71d911525c43916e0dd00ced7d14e91b001c..0b5b21e545a6ceec57f353ab57792e7233cdab11 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