diff --git a/grudge/execution.py b/grudge/execution.py index ceb413aabe8af6100b89be678c8b8d2f16146864..402bb6b44c55a4d3b6037c62824af48985f6fecc 100644 --- a/grudge/execution.py +++ b/grudge/execution.py @@ -532,6 +532,7 @@ def process_sym_operator(sym_operator, post_bind_mapper=None, dumper("before-empty-flux-killer", sym_operator) sym_operator = mappers.EmptyFluxKiller(mesh)(sym_operator) + dumper("before-cfold", sym_operator) sym_operator = mappers.CommutativeConstantFoldingMapper()(sym_operator) @@ -560,7 +561,7 @@ def process_sym_operator(sym_operator, post_bind_mapper=None, sym_operator = mappers.GlobalToReferenceMapper(mesh.ambient_dim)(sym_operator) dumper("before-distributed", sym_operator) - sys_operator = mappers.DistributedMapper()(sym_operator) + sym_operator = mappers.DistributedMapper()(sym_operator) # Ordering restriction: # diff --git a/grudge/symbolic/mappers/__init__.py b/grudge/symbolic/mappers/__init__.py index 94bf9734a776236f4ff360150942b69a0297bd4c..323cc4ae6d8409805b1ef40fc93eabe2b6bdf5bb 100644 --- a/grudge/symbolic/mappers/__init__.py +++ b/grudge/symbolic/mappers/__init__.py @@ -340,7 +340,8 @@ class DistributedMapper(CSECachingMapperMixin, IdentityMapper): def map_operator_binding(self, expr): if isinstance(expr.op, op.OppositeInteriorFaceSwap): - return op.OppositeRankFaceSwap()(self.rec(expr.field)) + return (op.OppositeInteriorFaceSwap()(self.rec(expr.field)) + + op.OppositeRankFaceSwap()(self.rec(expr.field))) else: return IdentityMapper.map_operator_binding(self, expr) diff --git a/grudge/symbolic/operators.py b/grudge/symbolic/operators.py index 23ca69bcd57bc202ac82367305732d56581879c1..05a23adfccee398fe568290326b35163a0533630 100644 --- a/grudge/symbolic/operators.py +++ b/grudge/symbolic/operators.py @@ -383,16 +383,18 @@ class OppositeRankFaceSwap(Operator): def __init__(self, dd_in=None, dd_out=None): sym = _sym() - from meshmode.mesh import BTAG_PARTITION + # from meshmode.mesh import BTAG_PARTITION if dd_in is None: - dd_in = sym.DOFDesc(BTAG_PARTITION, None) + # FIXME: What is FRESTR_INTERIOR_FACES? + dd_in = sym.DOFDesc(sym.FRESTR_INTERIOR_FACES) + # dd_in = sym.DOFDesc(sym.BTAG_PARTITION) if dd_out is None: dd_out = dd_in - if dd_in.domain_tag is not BTAG_PARTITION: - raise ValueError("dd_in must be a rank boundary faces domain") - if dd_out != dd_in: - raise ValueError("dd_out and dd_in must be identical") + # if dd_in.domain_tag is not BTAG_PARTITION: + # raise ValueError("dd_in must be a rank boundary faces domain") + # if dd_out != dd_in: + # raise ValueError("dd_out and dd_in must be identical") super(OppositeRankFaceSwap, self).__init__(dd_in, dd_out)