From bfbee5cd95f37aedd1d736ec2dd0461901d0d390 Mon Sep 17 00:00:00 2001
From: Timo Koch <timokoch@uio.no>
Date: Sat, 27 May 2023 14:26:42 +0200
Subject: [PATCH] [solvers] Remove deprecated solvers and deprecate now
 obsolete helper interface

---
 dumux/linear/seqsolverbackend.hh | 717 +------------------------------
 1 file changed, 4 insertions(+), 713 deletions(-)

diff --git a/dumux/linear/seqsolverbackend.hh b/dumux/linear/seqsolverbackend.hh
index 916740a315..103961b4b7 100644
--- a/dumux/linear/seqsolverbackend.hh
+++ b/dumux/linear/seqsolverbackend.hh
@@ -18,8 +18,6 @@
 
 #include <dune/istl/preconditioners.hh>
 #include <dune/istl/solvers.hh>
-#include <dune/istl/superlu.hh>
-#include <dune/istl/umfpack.hh>
 #include <dune/istl/io.hh>
 #include <dune/common/indices.hh>
 #include <dune/common/hybridutilities.hh>
@@ -55,6 +53,7 @@ class IterativePreconditionedSolverImpl
 public:
 
     template<class Preconditioner, class Solver, class SolverInterface, class Matrix, class Vector>
+    [[deprecated("Removed after 3.8. Use solver from istlsolvers.hh")]]
     static bool solve(const SolverInterface& s, const Matrix& A, Vector& x, const Vector& b,
                       const std::string& modelParamGroup = "")
     {
@@ -75,6 +74,7 @@ public:
     }
 
     template<class Preconditioner, class Solver, class SolverInterface, class Matrix, class Vector>
+    [[deprecated("Removed after 3.8. Use solver from istlsolvers.hh")]]
     static bool solveWithGMRes(const SolverInterface& s, const Matrix& A, Vector& x, const Vector& b,
                                const std::string& modelParamGroup = "")
     {
@@ -98,6 +98,7 @@ public:
     }
 
     template<class Preconditioner, class Solver, class SolverInterface, class Matrix, class Vector>
+    [[deprecated("Removed after 3.8. Use solver from istlsolvers.hh")]]
     static bool solveWithILU0Prec(const SolverInterface& s, const Matrix& A, Vector& x, const Vector& b,
                                   const std::string& modelParamGroup = "")
     {
@@ -118,6 +119,7 @@ public:
 
     // solve with RestartedGMRes (needs restartGMRes as additional argument)
     template<class Preconditioner, class Solver, class SolverInterface, class Matrix, class Vector>
+    [[deprecated("Removed after 3.8. Use solver from istlsolvers.hh")]]
     static bool solveWithILU0PrecGMRes(const SolverInterface& s, const Matrix& A, Vector& x, const Vector& b,
                                        const std::string& modelParamGroup = "")
     {
@@ -172,565 +174,6 @@ constexpr std::size_t preconditionerBlockLevel() noexcept
     return isMultiTypeBlockMatrix<M>::value ? 2 : 1;
 }
 
-/*!
- * \ingroup Linear
- * \brief Sequential ILU(n)-preconditioned BiCSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. It can be applied to
- * nonsymmetric matrices.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: ILU(n) incomplete LU factorization. The order n can be
- * provided by the parameter LinearSolver.PreconditionerIterations and controls
- * the fill-in. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILUnBiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILUn preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential SOR-preconditioned BiCSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. It can be applied to
- * nonsymmetric matrices.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: SOR successive overrelaxation method. The relaxation is
- * controlled by the parameter LinearSolver.PreconditionerRelaxation. In each
- * preconditioning step, it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SORBiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqSOR<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SOR preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential SSOR-preconditioned BiCGSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. While, it can be
- * applied to nonsymmetric matrices, the preconditioner SSOR assumes symmetry.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: SSOR symmetric successive overrelaxation method. The
- * relaxation is controlled by the parameter LinearSolver.PreconditionerRelaxation.
- * In each preconditioning step, it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SSORBiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqSSOR<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SSOR preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential GS-preconditioned BiCGSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. While, it can be
- * applied to nonsymmetric matrices, the preconditioner SSOR assumes symmetry.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: GS Gauss-Seidel method. It can be damped by the relaxation
- * parameter LinearSolver.PreconditionerRelaxation. In each preconditioning step,
- * it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] GSBiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqGS<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SSOR preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential Jacobi-preconditioned BiCSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. While, it can be
- * applied to nonsymmetric matrices, the preconditioner SSOR assumes symmetry.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: Jacobi method. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation. In each preconditioning step, it is
- * applied as often as given by the parameter LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] JacBiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqJac<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "Jac preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential ILU(n)-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: ILU(n) incomplete LU factorization. The order n can be
- * provided by the parameter LinearSolver.PreconditionerIterations and controls
- * the fill-in. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILUnCGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILUn preconditioned CG solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential SOR-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: SOR successive overrelaxation method. The relaxation is
- * controlled by the parameter LinearSolver.PreconditionerRelaxation. In each
- * preconditioning step, it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SORCGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqSOR<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SOR preconditioned CG solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential SSOR-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: SSOR symmetric successive overrelaxation method. The
- * relaxation is controlled by the parameter LinearSolver.PreconditionerRelaxation.
- * In each preconditioning step, it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SSORCGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqSSOR<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SSOR preconditioned CG solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential GS-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: GS Gauss-Seidel method. It can be damped by the relaxation
- * parameter LinearSolver.PreconditionerRelaxation. In each preconditioning step,
- * it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] GSCGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqGS<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "GS preconditioned CG solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential Jacobi-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: Jacobi method. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation. In each preconditioning step, it is
- * applied as often as given by the parameter LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] JacCGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqJac<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solve<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "GS preconditioned CG solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential SSOR-preconditioned GMRes solver.
- *
- * Solver: The GMRes (generalized minimal residual) method is an iterative
- * method for the numerical solution of a nonsymmetric system of linear
- * equations.\n
- * See: Saad, Y., Schultz, M. H. (1986). "GMRES: A generalized minimal residual
- * algorithm for solving nonsymmetric linear systems." SIAM J. Sci. and Stat.
- * Comput. 7: 856–869.
- *
- * Preconditioner: SSOR symmetric successive overrelaxation method. The
- * relaxation is controlled by the parameter LinearSolver.PreconditionerRelaxation.
- * In each preconditioning step, it is applied as often as given by the parameter
- * LinearSolver.PreconditionerIterations.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SSORRestartedGMResBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqSSOR<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::RestartedGMResSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solveWithGMRes<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "SSOR preconditioned GMRes solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential ILU(0)-preconditioned BiCGSTAB solver.
- *
- * Solver: The BiCGSTAB (stabilized biconjugate gradients method) solver has
- * faster and smoother convergence than the original BiCG. It can be applied to
- * nonsymmetric matrices.\n
- * See: Van der Vorst, H. A. (1992). "Bi-CGSTAB: A Fast and Smoothly Converging
- * Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems".
- * SIAM J. Sci. and Stat. Comput. 13 (2): 631–644. doi:10.1137/0913035.
- *
- * Preconditioner: ILU(0) incomplete LU factorization. The order 0 indicates
- * that no fill-in is allowed. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILU0BiCGSTABBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::BiCGSTABSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solveWithILU0Prec<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILU0 preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential ILU(0)-preconditioned CG solver.
- *
- * Solver: CG (conjugate gradient) is an iterative method for solving linear
- * systems with a symmetric, positive definite matrix.\n
- * See:  Helfenstein, R., Koko, J. (2010). "Parallel preconditioned conjugate
- * gradient algorithm on GPU", Journal of Computational and Applied Mathematics,
- * Volume 236, Issue 15, Pages 3584–3590, http://dx.doi.org/10.1016/j.cam.2011.04.025.
- *
- * Preconditioner: ILU(0) incomplete LU factorization. The order 0 indicates
- * that no fill-in is allowed. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILU0CGBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::CGSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solveWithILU0Prec<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILU0 preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential ILU0-preconditioned GMRes solver.
- *
- * Solver: The GMRes (generalized minimal residual) method is an iterative
- * method for the numerical solution of a nonsymmetric system of linear
- * equations.\n
- * See: Saad, Y., Schultz, M. H. (1986). "GMRES: A generalized minimal residual
- * algorithm for solving nonsymmetric linear systems." SIAM J. Sci. and Stat.
- * Comput. 7: 856–869.
- *
- * Preconditioner: ILU(0) incomplete LU factorization. The order 0 indicates
- * that no fill-in is allowed. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILU0RestartedGMResBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::RestartedGMResSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solveWithILU0PrecGMRes<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILU0 preconditioned BiCGSTAB solver";
-    }
-};
-
-/*!
- * \ingroup Linear
- * \brief Sequential ILU(n)-preconditioned GMRes solver.
- *
- * Solver: The GMRes (generalized minimal residual) method is an iterative
- * method for the numerical solution of a nonsymmetric system of linear
- * equations.\n
- * See: Saad, Y., Schultz, M. H. (1986). "GMRES: A generalized minimal residual
- * algorithm for solving nonsymmetric linear systems." SIAM J. Sci. and Stat.
- * Comput. 7: 856–869.
- *
- * Preconditioner: ILU(n) incomplete LU factorization. The order n can be
- * provided by the parameter LinearSolver.PreconditionerIterations and controls
- * the fill-in. It can be damped by the relaxation parameter
- * LinearSolver.PreconditionerRelaxation.\n
- * See: Golub, G. H., and Van Loan, C. F. (2012). Matrix computations. JHU Press.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] ILUnRestartedGMResBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        constexpr auto precondBlockLevel = preconditionerBlockLevel<Matrix>();
-        using Preconditioner = Dune::SeqILU<Matrix, Vector, Vector, precondBlockLevel>;
-        using Solver = Dune::RestartedGMResSolver<Vector>;
-
-        return IterativePreconditionedSolverImpl::template solveWithGMRes<Preconditioner, Solver>(*this, A, x, b, this->paramGroup());
-    }
-
-    std::string name() const
-    {
-        return "ILUn preconditioned GMRes solver";
-    }
-};
-
 /*!
  * \ingroup Linear
  * \brief Solver for simple block-diagonal matrices (e.g. from explicit time stepping schemes)
@@ -761,158 +204,6 @@ public:
     }
 };
 
-#if HAVE_SUPERLU
-/*!
- * \ingroup Linear
- * \brief Direct linear solver using the SuperLU library.
- *
- * See: Li, X. S. (2005). "An overview of SuperLU: Algorithms, implementation,
- * and user interface." ACM Transactions on Mathematical Software (TOMS) 31(3): 302-325.
- * http://crd-legacy.lbl.gov/~xiaoye/SuperLU/
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] SuperLUBackend : public LinearSolver
-{
-public:
-    using LinearSolver::LinearSolver;
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        static_assert(isBCRSMatrix<Matrix>::value, "SuperLU only works with BCRS matrices!");
-        using BlockType = typename Matrix::block_type;
-        static_assert(BlockType::rows == BlockType::cols, "Matrix block must be quadratic!");
-        constexpr auto blockSize = BlockType::rows;
-
-        Dune::SuperLU<Matrix> solver(A, this->verbosity() > 0);
-
-        Vector bTmp(b);
-        solver.apply(x, bTmp, result_);
-
-        int size = x.size();
-        for (int i = 0; i < size; i++)
-        {
-            for (int j = 0; j < blockSize; j++)
-            {
-                using std::isnan;
-                using std::isinf;
-                if (isnan(x[i][j]) || isinf(x[i][j]))
-                {
-                    result_.converged = false;
-                    break;
-                }
-            }
-        }
-
-        return result_.converged;
-    }
-
-    std::string name() const
-    {
-        return "SuperLU solver";
-    }
-
-    const Dune::InverseOperatorResult& result() const
-    {
-        return result_;
-    }
-
-private:
-    Dune::InverseOperatorResult result_;
-};
-#endif // HAVE_SUPERLU
-
-#if HAVE_UMFPACK
-/*!
- * \ingroup Linear
- * \brief Direct linear solver using the UMFPack library.
- *
- * See: Davis, Timothy A. (2004). "Algorithm 832". ACM Transactions on
- * Mathematical Software 30 (2): 196–199. doi:10.1145/992200.992206.
- * http://faculty.cse.tamu.edu/davis/suitesparse.html
- *
- * You can choose from one of the following ordering strategies using the input
- * parameter "LinearSolver.UMFPackOrdering":
- * \verbatim
- * 0: UMFPACK_ORDERING_CHOLMOD
- * 1: UMFPACK_ORDERING_AMD (default)
- * 2: UMFPACK_ORDERING_GIVEN
- * 3: UMFPACK_ORDERING_METIS
- * 4: UMFPACK_ORDERING_BEST
- * 5: UMFPACK_ORDERING_NONE
- * 6: UMFPACK_ORDERING_USER
- * \endverbatim
- *
- * See https://fossies.org/linux/SuiteSparse/UMFPACK/Doc/UMFPACK_UserGuide.pdf page 17 for details.
- */
-class [[deprecated("Removed after 3.7. Use solver from istlsolvers.hh")]] UMFPackBackend : public LinearSolver
-{
-public:
-
-    UMFPackBackend(const std::string& paramGroup = "")
-    : LinearSolver(paramGroup)
-    {
-        ordering_ = getParamFromGroup<int>(this->paramGroup(), "LinearSolver.UMFPackOrdering", 1);
-    }
-
-    //! set ordering strategy
-    void setOrdering(int i)
-    { ordering_ = i; }
-
-    //! the ordering strategy
-    int ordering() const
-    { return ordering_; }
-
-    template<class Matrix, class Vector>
-    bool solve(const Matrix& A, Vector& x, const Vector& b)
-    {
-        static_assert(isBCRSMatrix<Matrix>::value, "UMFPack only works with BCRS matrices!");
-        using BlockType = typename Matrix::block_type;
-        static_assert(BlockType::rows == BlockType::cols, "Matrix block must be quadratic!");
-        constexpr auto blockSize = BlockType::rows;
-
-        Dune::UMFPack<Matrix> solver;
-        solver.setVerbosity(this->verbosity() > 0);
-        solver.setOption(UMFPACK_ORDERING, ordering_);
-        solver.setMatrix(A);
-
-        Vector bTmp(b);
-        solver.apply(x, bTmp, result_);
-
-        int size = x.size();
-        for (int i = 0; i < size; i++)
-        {
-            for (int j = 0; j < blockSize; j++)
-            {
-                using std::isnan;
-                using std::isinf;
-                if (isnan(x[i][j]) || isinf(x[i][j]))
-                {
-                    result_.converged = false;
-                    break;
-                }
-            }
-        }
-
-        return result_.converged;
-    }
-
-    std::string name() const
-    {
-        return "UMFPack solver";
-    }
-
-    const Dune::InverseOperatorResult& result() const
-    {
-        return result_;
-    }
-
-private:
-    Dune::InverseOperatorResult result_;
-    int ordering_;
-};
-#endif // HAVE_UMFPACK
-
-
 /*!
  * \name Solver for MultiTypeBlockMatrix's
  */
-- 
GitLab