From 63c15e6d167430c9a1758eeb73ef8478b3c87d5f Mon Sep 17 00:00:00 2001 From: Thomas Gibson <gibsonthomas1120@hotmail.com> Date: Sat, 15 May 2021 20:33:40 -0500 Subject: [PATCH] Make advection and maxwell operators parallel-safe --- grudge/models/advection.py | 24 ++++++++++++++++++++++-- grudge/models/em.py | 4 ++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/grudge/models/advection.py b/grudge/models/advection.py index df29ecdc..adf93210 100644 --- a/grudge/models/advection.py +++ b/grudge/models/advection.py @@ -121,7 +121,12 @@ class StrongAdvectionOperator(AdvectionOperatorBase): dcoll, op.face_mass( dcoll, - flux(op.interior_trace_pair(dcoll, u)) + inflow_flux + flux(op.interior_trace_pair(dcoll, u)) + # communication of interface fluxes between + # parallel boundaries + + sum(flux(tpair) + for tpair in op.cross_rank_trace_pairs(dcoll, u)) + + inflow_flux # FIXME: Add support for inflow/outflow tags # + flux(TracePair(self.inflow_tag, @@ -166,7 +171,12 @@ class WeakAdvectionOperator(AdvectionOperatorBase): np.dot(self.v, op.weak_local_grad(dcoll, u)) - op.face_mass( dcoll, - flux(op.interior_trace_pair(dcoll, u)) + inflow_flux + flux(op.interior_trace_pair(dcoll, u)) + # communication of interface fluxes between + # parallel boundaries + + sum(flux(tpair) + for tpair in op.cross_rank_trace_pairs(dcoll, u)) + + inflow_flux # FIXME: Add support for inflow/outflow tags # + flux(TracePair(self.inflow_tag, @@ -269,6 +279,11 @@ class VariableCoefficientAdvectionOperator(AdvectionOperatorBase): dcoll, face_dd, flux(to_quad_int_tpair(dcoll, u, self.quad_tag)) + # communication of interface fluxes between + # parallel boundaries + + sum(flux(tpair) + for tpair in op.cross_rank_trace_pairs(dcoll, u, + self.quad_tag)) + inflow_flux # FIXME: Add support for inflow/outflow tags @@ -371,6 +386,11 @@ class SurfaceAdvectionOperator(AdvectionOperatorBase): dcoll, face_dd, flux(to_quad_int_tpair(dcoll, u, self.quad_tag)) + # communication of interface fluxes between + # parallel boundaries + + sum(flux(tpair) + for tpair in op.cross_rank_trace_pairs(dcoll, u, + self.quad_tag)) ) ) ) diff --git a/grudge/models/em.py b/grudge/models/em.py index a3fc5b32..d23eb080 100644 --- a/grudge/models/em.py +++ b/grudge/models/em.py @@ -301,6 +301,10 @@ class MaxwellOperator(HyperbolicOperator): op.face_mass( dcoll, flux(op.interior_trace_pair(dcoll, w)) + # communication of interface fluxes between + # parallel boundaries + + sum(flux(tpair) + for tpair in op.cross_rank_trace_pairs(dcoll, w)) + sum(flux(bv_tpair(tag, w, bc)) for tag, bc in tags_and_bcs) ) -- GitLab