diff --git a/examples/wave/wave-min.py b/examples/wave/wave-min.py index 6e2baa1bcc328af322a8e45cc1d04c2f78613a8b..bd3424bc470c58f4d9eb175e9d24af696488ccd9 100644 --- a/examples/wave/wave-min.py +++ b/examples/wave/wave-min.py @@ -35,7 +35,7 @@ def main(write_output=True, order=4): cl_ctx = cl.create_some_context() queue = cl.CommandQueue(cl_ctx) - dims = 3 + dims = 2 from meshmode.mesh.generation import generate_regular_rect_mesh mesh = generate_regular_rect_mesh( a=(-0.5,)*dims, @@ -84,8 +84,8 @@ def main(write_output=True, order=4): # print(sym.pretty(op.sym_operator())) bound_op = bind(discr, op.sym_operator()) - # print(bound_op) - # 1/0 + print(bound_op) + 1/0 def rhs(t, w): return bound_op(queue, t=t, w=w) diff --git a/grudge/execution.py b/grudge/execution.py index d6725f2f7583d37aa3f4bf98f4245546828c0c76..ceb413aabe8af6100b89be678c8b8d2f16146864 100644 --- a/grudge/execution.py +++ b/grudge/execution.py @@ -559,6 +559,9 @@ def process_sym_operator(sym_operator, post_bind_mapper=None, dumper("before-global-to-reference", sym_operator) sym_operator = mappers.GlobalToReferenceMapper(mesh.ambient_dim)(sym_operator) + dumper("before-distributed", sym_operator) + sys_operator = mappers.DistributedMapper()(sym_operator) + # Ordering restriction: # # - Must specialize quadrature operators before performing inverse mass @@ -575,8 +578,6 @@ def process_sym_operator(sym_operator, post_bind_mapper=None, # dumper("before-derivative-join", sym_operator) # sym_operator = mappers.DerivativeJoiner()(sym_operator) - sys_operator = mappers.DistributedMapper()(sym_operator) - dumper("process-finished", sym_operator) return sym_operator diff --git a/grudge/symbolic/mappers/__init__.py b/grudge/symbolic/mappers/__init__.py index ae6766281401870cfeaa70960319d9ed412a25c8..94bf9734a776236f4ff360150942b69a0297bd4c 100644 --- a/grudge/symbolic/mappers/__init__.py +++ b/grudge/symbolic/mappers/__init__.py @@ -147,6 +147,7 @@ class OperatorReducerMixin(LocalOpReducerMixin, FluxOpReducerMixin): map_ref_mass = _map_op_base map_ref_inverse_mass = _map_op_base + map_opposite_rank_face_swap = _map_op_base map_opposite_interior_face_swap = _map_op_base map_face_mass_operator = _map_op_base map_ref_face_mass_operator = _map_op_base @@ -195,6 +196,7 @@ class IdentityMapperMixin(LocalOpReducerMixin, FluxOpReducerMixin): map_ref_mass = map_elementwise_linear map_ref_inverse_mass = map_elementwise_linear + map_opposite_rank_face_swap = map_elementwise_linear map_opposite_interior_face_swap = map_elementwise_linear map_face_mass_operator = map_elementwise_linear map_ref_face_mass_operator = map_elementwise_linear @@ -338,8 +340,7 @@ class DistributedMapper(CSECachingMapperMixin, IdentityMapper): def map_operator_binding(self, expr): if isinstance(expr.op, op.OppositeInteriorFaceSwap): - return 42 - # return expr.op + op.OppositeRankFaceSwap()(self.rec(expr.field)) + return op.OppositeRankFaceSwap()(self.rec(expr.field)) else: return IdentityMapper.map_operator_binding(self, expr) @@ -683,6 +684,9 @@ class StringifyMapper(pymbolic.mapper.stringifier.StringifyMapper): def map_ref_face_mass_operator(self, expr, enclosing_prec): return "RefFaceM" + self._format_op_dd(expr) + def map_opposite_rank_face_swap(self, expr, enclosing_prec): + return "RankSwap" + self._format_op_dd(expr) + def map_opposite_interior_face_swap(self, expr, enclosing_prec): return "OppSwap" + self._format_op_dd(expr)