Associate a `common::Scatterer` with `fem::FunctionSpace`
- Dominant language
- C++
- Stars
- 1.2k
- Forks
- 261
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 65
Description
At present, each `la::Vector` has it's own `common::Scatterer`. This allows overlapping non-blocking communication for `la::Vector`s because each scatter has its own buffers. A potential problem is that a code that creates a a lot of `Function`s can create a lot of (neighbourhood) communicators, and exhaust the available communicators.
A possibility is to:
1. Associate a `Scatterer` with each `FunctionSpace`.
2. Copy the `Scatterer` for `Function` vectors that need their own `Scatterer`.
3. For `Function` vectors that don't need their own `Scatterer`, let them share the FunctionSpace` `Scatterer`.
In any case, it's probably a good thing for a `FunctionSpace` to hold the necessary data to create a suitable `Scatterer` cheaply so the scatter details are not re-computed for every `Function` created on a space.\
See #3061.
@IgorBaratta , @chrisrichardson?
Contributor guide
Assessment
This issue has not been assessed yet.