diff --git a/dumux/assembly/fclocalassembler.hh b/dumux/assembly/fclocalassembler.hh index c58f85ba126bd267cf080a3f8b6bf8e3865e92eb..78050f1320f978bce8452bc22b3f1ebbd9f92cd4 100644 --- a/dumux/assembly/fclocalassembler.hh +++ b/dumux/assembly/fclocalassembler.hh @@ -385,7 +385,8 @@ public: auto evalFlux = [&](ElementResidualVector& residual, const SubControlVolumeFace& scvf) { - this->localResidual().evalFlux(residual, problem, element, fvGeometry, curElemVolVars, this->elemBcTypes(), this->elemFluxVarsCache(), scvf); + if (!scvf.processorBoundary()) + this->localResidual().evalFlux(residual, problem, element, fvGeometry, curElemVolVars, this->elemBcTypes(), this->elemFluxVarsCache(), scvf); }; // derivative w.r.t. own DOF @@ -470,6 +471,9 @@ public: for (const auto& scvf : scvfs(fvGeometry, scv)) { + if (scvf.processorBoundary()) + continue; + if (scvf.outsideScvIdx() == scvJ.index()) { evalFlux(residual, scvf); @@ -502,6 +506,9 @@ public: for (const auto& scvf : scvfs(fvGeometry, scv)) { + if (scvf.processorBoundary()) + continue; + if (scvf.outsideScvIdx() == scvJ.index()) { evalFlux(result, scvf); diff --git a/dumux/discretization/facecentered/staggered/connectivitymap.hh b/dumux/discretization/facecentered/staggered/connectivitymap.hh index b6cd81092e4888e178019a6bab7eeccd69f41c16..8450a287dc87b5839c5c08588574b4e93873094a 100644 --- a/dumux/discretization/facecentered/staggered/connectivitymap.hh +++ b/dumux/discretization/facecentered/staggered/connectivitymap.hh @@ -58,16 +58,18 @@ public: if (element.partitionType() == Dune::InteriorEntity) continue; + assert(element.partitionType() == Dune::OverlapEntity); + // restrict the FvGeometry locally and bind to the element fvGeometry.bind(element); // loop over sub control faces for (const auto& scvf : scvfs(fvGeometry)) { - if (scvf.isFrontal() && !scvf.boundary()) + if (scvf.isFrontal() && !scvf.boundary() && !scvf.processorBoundary()) { const auto& ownScv = fvGeometry.scv(scvf.insideScvIdx()); const auto& facet = element.template subEntity <1> (ownScv.indexInElement()); - if (facet.partitionType() == 1) + if (facet.partitionType() == Dune::BorderEntity) { const auto& oppositeScv = fvGeometry.scv(scvf.outsideScvIdx()); map_[ownScv.index()].push_back(oppositeScv.index()); @@ -83,6 +85,7 @@ public: // loop over sub control faces for (const auto& scvf : scvfs(fvGeometry)) { + assert(!scvf.processorBoundary()); const auto& ownScv = fvGeometry.scv(scvf.insideScvIdx()); const auto ownDofIndex = ownScv.dofIndex(); const auto ownScvIndex = ownScv.index(); diff --git a/dumux/discretization/facecentered/staggered/elementvolumevariables.hh b/dumux/discretization/facecentered/staggered/elementvolumevariables.hh index 32ca10c61d351bd357f7500b231f475e1a17cc8a..0c7cd0c5981ec426c53fe544ef0187274c7ce519 100644 --- a/dumux/discretization/facecentered/staggered/elementvolumevariables.hh +++ b/dumux/discretization/facecentered/staggered/elementvolumevariables.hh @@ -111,7 +111,7 @@ public: for (const auto& scvf : scvfs(fvGeometry)) { - if (!scvf.boundary() || scvf.isFrontal()) + if (!scvf.boundary() || scvf.isFrontal() || scvf.processorBoundary()) continue; // check if boundary is a pure dirichlet boundary