PETSc has a hard-coded limit of 512 options per options manager. Because we duplicate the block options for every block, we can quickly run into this limit if we have a large number of timesteps or a complex option set for the blocks.
This limit is being removed from PETSc by this PR: https://gitlab.com/petsc/petsc/-/merge_requests/5838but until that is merged, and Firedrake's fork updated, we need to have each solver use the same option set.
We should allow for a default set of block options like fieldsplit does. The prefix for the default options is diagfft_block_. If any option exists with prefix diagfft_block_{i}_ then block i will use this prefix instead.
These changes were originally in PR #90 but are split out here to keep them more self-contained.
PETSc has a hard-coded limit of 512 options per options manager. Because we duplicate the block options for every block, we can quickly run into this limit if we have a large number of timesteps or a complex option set for the blocks.
This limit is being removed from PETSc by this PR: https://gitlab.com/petsc/petsc/-/merge_requests/5838
but until that is merged, and Firedrake's fork updated, we need to have each solver use the same option set.We should allow for a default set of block options likefieldsplit
does. The prefix for the default options isdiagfft_block_
. If any option exists with prefixdiagfft_block_{i}_
then blocki
will use this prefix instead.These changes were originally in PR #90 but are split out here to keep them more self-contained.