Hello,
I currently have a few codes written in the meshworker framework that solve systems of PDE's. (Elasticity, Laplace/Poisson, Stokes) I am interested in experimenting with Multigrid preconditioner for these. I have been unable to get this to work using the MeshWorker::Assembler::MGMatrixLocalBlocksToGlobalBlocks function. I am interested in seeing an example of a code where this strategy is used. If there is any interest in seeing my code, I will be happy to produce a minimal non-working example. For now, the compilation error that I get from clang is as follows (g++ is similar).
git/dealiiBase/dealiiInstall/include/deal.II/lac/matrix_block.h:932:10: error:
no viable conversion from returned value of type 'const
MGLevelObject<dealii::SparseMatrix<double>>' to function return type 'const
MGLevelObject<MatrixBlock<dealii::SparseMatrix<double> >>'
return *matrices.read<const MGLevelObject<MatrixType>* >(i);
The line that triggers it is the following
dealii::MeshWorker::integration_loop<dim,dim>
( dof_handler.begin_mg(),
dof_handler.end_mg(),
dof_Info,
info_box,
LDGintegrator,
assembleSystem);
LDGintegrator is my custom integrator of a type inheriated from MeshWorker::LocalIntegrator<dim>;
and assembleSystem is of type
MeshWorker
::Assembler
::MGMatrixLocalBlocksToGlobalBlock< SparseMatrix<double>,
double>;
Any help would be greatly appreciated. I would be happy to contribute any changes required to get this to work.
Kent