Use BCGS_AMG_SSOR solver for finite volume methods
We currently use the
AMG_4_DG solver in all cases. As its name suggests, the solver is optimized for solving DG problems by separating them into a CG and DG subspace. As finite volume spaces are essentially DG spaces of order zero, this solver works, but it likely performs many no-ops. Specifically, the CG subspace of the problem should be empty. We can therefore switch to a more direct solver.
BCGS_AMG_SSOR solver for the finite volume method. It uses the same overall routines as the
AMG_4_DG, which should ensure that the results remain comparable. It uses
AMG for preconditioning,
BiCGStab for solving the problem, and
SSOR for smoothing the solution.
The PDELab class is called
Dune::PDELab::ISTLBackend_BCGS_AMG_SSOR and defined in the
dune/pdelab/backend/istl/ovlpistlsolverbackend.hh header. The class must replace the other linear solver via a conditional type definition based on the polynomial order of the problem. Initialization of the solver object is also different and must be controlled via
How to test the implementation?
Test suite still succeeds.