The present version is inherently serial - we loop over the entire p::s::T on every processor and filter for cells which intersect the patches on the present processor. No communication (aside from the global scatter of bounding boxes in IFEDMethod) is required.
A choice leading to using more than p::s::T is to flip this around: given a global set of bounding boxes (e.g., the bounding box for each patch), loop over the locally-owned cells and send their IDs to any processors which intersect the correct patches. The check should look similar to BoxIntersectionPredicate::operator().
Getting this to work with AMR may be tricky - we can figure out which cells exist on the finest grid level but we will need to communicate that grid refinement information. Perhaps getting this working with p::f::T first is a better choice.
The present version is inherently serial - we loop over the entire
p::s::T
on every processor and filter for cells which intersect the patches on the present processor. No communication (aside from the global scatter of bounding boxes inIFEDMethod
) is required.A choice leading to using more than
p::s::T
is to flip this around: given a global set of bounding boxes (e.g., the bounding box for each patch), loop over the locally-owned cells and send their IDs to any processors which intersect the correct patches. The check should look similar toBoxIntersectionPredicate::operator()
.Getting this to work with AMR may be tricky - we can figure out which cells exist on the finest grid level but we will need to communicate that grid refinement information. Perhaps getting this working with
p::f::T
first is a better choice.