diff --git a/dune/solvers/iterationsteps/blockgssteps.hh b/dune/solvers/iterationsteps/blockgssteps.hh index ece128737eb2bb9647bbbb22fd4d3b872c21b658..76cae5f91eeab69d4c6ebf86a4327d472227cfe5 100644 --- a/dune/solvers/iterationsteps/blockgssteps.hh +++ b/dune/solvers/iterationsteps/blockgssteps.hh @@ -352,7 +352,8 @@ auto gs(Args&&... args) { * \brief A Gauss--Seidel-type linear iteration step. * \param localSolver The solver for the linear block correction problems. */ -template <class Matrix, class Vector, class BitVector, class LocalSolver> +template <class LocalSolver, class Matrix, class Vector, + class BitVector = Dune::Solvers::DefaultBitVector_t<Vector>> struct BlockGSStep : public LinearIterationStep<Matrix, Vector, BitVector> { //! \brief Implicitly default-construct local solver @@ -415,7 +416,7 @@ struct BlockGSStepFactory { static auto create( LocalSolver&& localSolver, BlockGS::Direction direction = BlockGS::Direction::FORWARD) { - return BlockGSStep<Matrix, Vector, BitVector, LocalSolver>( + return BlockGSStep<LocalSolver, Matrix, Vector, BitVector>( std::forward<LocalSolver>(localSolver), direction); } @@ -424,7 +425,7 @@ struct BlockGSStepFactory { LocalSolver&& localSolver, BlockGS::Direction direction = BlockGS::Direction::FORWARD) { return std::make_shared< - BlockGSStep<Matrix, Vector, BitVector, LocalSolver>>( + BlockGSStep<LocalSolver, Matrix, Vector, BitVector>>( std::forward<LocalSolver>(localSolver), direction); } diff --git a/dune/solvers/iterationsteps/obstacletnnmgstep.hh b/dune/solvers/iterationsteps/obstacletnnmgstep.hh index 8f369cfb3e8a370ca08805e9f403b5d49b0e4c41..f1a5b6b989f1832612f036f0c7297d3de77fe638 100644 --- a/dune/solvers/iterationsteps/obstacletnnmgstep.hh +++ b/dune/solvers/iterationsteps/obstacletnnmgstep.hh @@ -73,8 +73,7 @@ class ObstacleTNNMGStep typedef ProjectedBlockGSStep<Matrix, Vector> NonlinearSmoother; typedef Dune::Solvers::BlockGSStep< - Matrix, Vector, Dune::Solvers::DefaultBitVector_t<Vector>, - decltype(Dune::Solvers::BlockGS::LocalSolvers::gs())> + decltype(Dune::Solvers::BlockGS::LocalSolvers::gs()), Matrix, Vector> LinearSmoother; typedef MultigridStep<Matrix, Vector, BitVector> LinearMultigridStep; typedef EnergyNorm<Matrix, Vector> LinearBaseSolverEnergyNorm;