Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

AEP: BYO cell groups #1605

Open
halfflat opened this issue Jul 28, 2021 · 0 comments
Open

AEP: BYO cell groups #1605

halfflat opened this issue Jul 28, 2021 · 0 comments
Labels
AEP Arbor Enhancement Proposal enhancement Project: Arborio

Comments

@halfflat
Copy link
Contributor

The set of possible cell kinds, and the mapping from cell kinds to implementations in cell groups, is all hard coded in the source. However if users are willing to write some C++ classes, there's no architectural reason why we can't allow an open collection of possible cell kinds and cell groups which can take responsibility for them.

Proposal:

  1. We switch cell kind away from an enumeration, and instead make it an integer.
  2. Cell group classes are derived from a common interface class, which is made part of the public C++ API.
  3. We provide a new 'cell group mapper' object that handles: the registration of new (i.e. non-built in) cell kinds, and maps from cell kinds to a tuple (priority, cell group factory fn), where the factory function takes the back-end as a parameter, can return a failure if the back-end is unsupported. If a cell group factory function fails, the next lowest priority entry can be tried instead. Alternatively, the map could map (cell kind, back-end) to a single cell group factory function, for which a failure is a hard error.
  4. The domain decomposition description and partition load balancer remain broadly unchanged.
  5. The cell group mapper is supplied as an optional additional parameter to the simulation constructor.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
AEP Arbor Enhancement Proposal enhancement Project: Arborio
Projects
None yet
Development

No branches or pull requests

4 participants