Hey,
I hope this is the right place to ask my question.
I have a working Stokes solver using a multigrid preconditioner, which relies on the block structure of the velocity pressure system, for a serial triangulation. Recently, I started to extend my program to distributed triangulations and encountered the following problem:
--------------------------------------------------------
An error occurred in line <4486> of file <.../source/dofs/dof_handler_policy.cc> in function
dealii::internal::DoFHandlerImplementation::NumberCache dealii::internal::DoFHandlerImplementation::Policy::ParallelDistributed<dim, spacedim>::renumber_mg_dofs(unsigned int, const std::vector<long unsigned int>&) const [with int dim = 2; int spacedim = 2]
The violated condition was:
index_set.is_element(i)
Additional information:
Renumberings that change the locally owned mg dofs partitioning are currently not implemented for the multigrid levels
My DoFHandler passed was initialized with a FESystem characterizing velocity-pressure functions. Using DoFRenumbering::component_wise() on the active set of cells/dofs worked as in the serial case, however, the renumbering on any level throws the exception above (for more than one mpi proc).
Is there a particular reason that this should never be allowed because it would break dealii functionality in other places, or, was there just no need to do this before?
I am very hesitant to touch dealii code that deep. Currently, I tend to write a mapping between the component-wise and block-wise dof numbering transferring between the block structure my functionalities rely on and the original structure. Any suggestions would be appreciated.
Thanks in advance :)
Best,
Julius