Loading Documentation/Tutorials/Solvers/Linear/tutorial_Linear_solvers.md +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ Solvers of linear systems are one of the most important algorithms in scientific 1. Stationary methods 1. [Jacobi method](https://en.wikipedia.org/wiki/Jacobi_method) (\ref TNL::Solvers::Linear::Jacobi) 2. [Successive-overrelaxation method, SOR]([https://en.wikipedia.org/wiki/Successive_over-relaxation]) (\ref TNL::Solvers::Linear::SOR) - CPU only currently 2. [Successive-overrelaxation method, SOR]([https://en.wikipedia.org/wiki/Successive_over-relaxation]) (\ref TNL::Solvers::Linear::SOR) 2. Krylov subspace methods 1. [Conjugate gradient method, CG](https://en.wikipedia.org/wiki/Conjugate_gradient_method) (\ref TNL::Solvers::Linear::CG) 2. [Biconjugate gradient stabilized method, BICGStab](https://en.wikipedia.org/wiki/Biconjugate_gradient_stabilized_method) (\ref TNL::Solvers::Linear::BICGStab) Loading src/TNL/Solvers/Linear/BICGStabL.h +1 −22 Original line number Diff line number Diff line Loading @@ -9,27 +9,6 @@ /* See Copyright Notice in tnl/Copyright */ /* * BICGStabL implements an iterative solver for non-symmetric linear systems, * using the BiCGstab(l) algorithm described in [1] and [2]. It is a * generalization of the stabilized biconjugate-gradient (BiCGstab) algorithm * proposed by van der Vorst [3]. BiCGstab(1) is equivalent to BiCGstab, and * BiCGstab(2) is a slightly more efficient version of the BiCGstab2 algorithm * by Gutknecht [4], while BiCGstab(l>2) is a further generalization. * * This code was implemented by: Jakub Klinkovsky <klinkjak@fjfi.cvut.cz> * * [1] Gerard L. G. Sleijpen and Diederik R. Fokkema, "BiCGstab(l) for linear * equations involving unsymmetric matrices with complex spectrum", * Electronic Trans. on Numerical Analysis 1, 11-32 (1993). * [2] Gerard L. G. Sleijpen, Henk A. van der Vorst, and Diederik R. Fokkema, * "BiCGstab(l) and other Hybrid Bi-CG Methods", Numerical Algorithms 7, * 75-109 (1994). * [3] Henk A. van der Vorst, "Bi-CGSTAB: A fast and smoothly converging variant * of Bi-CG for the solution of nonsymmetric linear systems, SIAM Journal on * scientific and Statistical Computing 13.2, 631-644 (1992). * [4] Martin H. Gutknecht, "Variants of BiCGStab for matrices with complex * spectrum", IPS Research Report No. 91-14 (1991). * * TODO: further variations to explore: * * [5] Gerard L. G. Sleijpen and Henk A. van der Vorst, "Reliable updated Loading src/TNL/Solvers/Linear/Preconditioners/Diagonal.h +6 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "Preconditioner.h" namespace TNL { namespace Solvers { namespace Linear { Loading Loading @@ -72,14 +73,14 @@ class Diagonal using typename Preconditioner< Matrix >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading Loading @@ -139,21 +140,19 @@ class Diagonal< Matrices::DistributedMatrix< Matrix > > using typename Preconditioner< MatrixType >::ConstVectorViewType; /** * \brief This methods update the preconditione with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. * \brief Type of shared pointer to the matrix. */ using typename Preconditioner< MatrixType >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading src/TNL/Solvers/Linear/Preconditioners/ILU0.h +2 −2 Original line number Diff line number Diff line Loading @@ -110,14 +110,14 @@ class ILU0_impl< Matrix, Real, Devices::Host, Index > using typename Preconditioner< Matrix >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading src/TNL/Solvers/Linear/Preconditioners/ILUT.h +2 −2 Original line number Diff line number Diff line Loading @@ -87,14 +87,14 @@ class ILUT } /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ using Base::update; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading Loading
Documentation/Tutorials/Solvers/Linear/tutorial_Linear_solvers.md +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ Solvers of linear systems are one of the most important algorithms in scientific 1. Stationary methods 1. [Jacobi method](https://en.wikipedia.org/wiki/Jacobi_method) (\ref TNL::Solvers::Linear::Jacobi) 2. [Successive-overrelaxation method, SOR]([https://en.wikipedia.org/wiki/Successive_over-relaxation]) (\ref TNL::Solvers::Linear::SOR) - CPU only currently 2. [Successive-overrelaxation method, SOR]([https://en.wikipedia.org/wiki/Successive_over-relaxation]) (\ref TNL::Solvers::Linear::SOR) 2. Krylov subspace methods 1. [Conjugate gradient method, CG](https://en.wikipedia.org/wiki/Conjugate_gradient_method) (\ref TNL::Solvers::Linear::CG) 2. [Biconjugate gradient stabilized method, BICGStab](https://en.wikipedia.org/wiki/Biconjugate_gradient_stabilized_method) (\ref TNL::Solvers::Linear::BICGStab) Loading
src/TNL/Solvers/Linear/BICGStabL.h +1 −22 Original line number Diff line number Diff line Loading @@ -9,27 +9,6 @@ /* See Copyright Notice in tnl/Copyright */ /* * BICGStabL implements an iterative solver for non-symmetric linear systems, * using the BiCGstab(l) algorithm described in [1] and [2]. It is a * generalization of the stabilized biconjugate-gradient (BiCGstab) algorithm * proposed by van der Vorst [3]. BiCGstab(1) is equivalent to BiCGstab, and * BiCGstab(2) is a slightly more efficient version of the BiCGstab2 algorithm * by Gutknecht [4], while BiCGstab(l>2) is a further generalization. * * This code was implemented by: Jakub Klinkovsky <klinkjak@fjfi.cvut.cz> * * [1] Gerard L. G. Sleijpen and Diederik R. Fokkema, "BiCGstab(l) for linear * equations involving unsymmetric matrices with complex spectrum", * Electronic Trans. on Numerical Analysis 1, 11-32 (1993). * [2] Gerard L. G. Sleijpen, Henk A. van der Vorst, and Diederik R. Fokkema, * "BiCGstab(l) and other Hybrid Bi-CG Methods", Numerical Algorithms 7, * 75-109 (1994). * [3] Henk A. van der Vorst, "Bi-CGSTAB: A fast and smoothly converging variant * of Bi-CG for the solution of nonsymmetric linear systems, SIAM Journal on * scientific and Statistical Computing 13.2, 631-644 (1992). * [4] Martin H. Gutknecht, "Variants of BiCGStab for matrices with complex * spectrum", IPS Research Report No. 91-14 (1991). * * TODO: further variations to explore: * * [5] Gerard L. G. Sleijpen and Henk A. van der Vorst, "Reliable updated Loading
src/TNL/Solvers/Linear/Preconditioners/Diagonal.h +6 −7 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "Preconditioner.h" namespace TNL { namespace Solvers { namespace Linear { Loading Loading @@ -72,14 +73,14 @@ class Diagonal using typename Preconditioner< Matrix >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading Loading @@ -139,21 +140,19 @@ class Diagonal< Matrices::DistributedMatrix< Matrix > > using typename Preconditioner< MatrixType >::ConstVectorViewType; /** * \brief This methods update the preconditione with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. * \brief Type of shared pointer to the matrix. */ using typename Preconditioner< MatrixType >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading
src/TNL/Solvers/Linear/Preconditioners/ILU0.h +2 −2 Original line number Diff line number Diff line Loading @@ -110,14 +110,14 @@ class ILU0_impl< Matrix, Real, Devices::Host, Index > using typename Preconditioner< Matrix >::MatrixPointer; /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ virtual void update( const MatrixPointer& matrixPointer ) override; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading
src/TNL/Solvers/Linear/Preconditioners/ILUT.h +2 −2 Original line number Diff line number Diff line Loading @@ -87,14 +87,14 @@ class ILUT } /** * \brief This methods update the preconditione with respect to given matrix. * \brief This method updates the preconditioner with respect to given matrix. * * \param matrixPointer smart pointer (\ref std::shared_ptr) to matrix the preconditioner is related to. */ using Base::update; /** * \brief This methods applies the preconditioner. * \brief This method applies the preconditioner. * * \param b is the input vector the preconditioner is applied on. * \param x is the result of the preconditioning. Loading