From 1b356e44a4d6bc52ab59746f91f3ec88e7bcb036 Mon Sep 17 00:00:00 2001
From: Ellis <eshoag@illinois.edu>
Date: Fri, 20 Oct 2017 11:46:28 -0500
Subject: [PATCH] working

---
 examples/wave/wave-min.py           | 6 +++---
 grudge/execution.py                 | 5 +++--
 grudge/symbolic/mappers/__init__.py | 8 ++++++--
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/examples/wave/wave-min.py b/examples/wave/wave-min.py
index 6e2baa1b..bd3424bc 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 d6725f2f..ceb413aa 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 ae676628..94bf9734 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)
 
-- 
GitLab