Commit 5484a802 authored by MIJIEUX Thomas's avatar MIJIEUX Thomas

Update doc for Arnoldi's run methods

parent 08994b18
......@@ -122,7 +122,7 @@ endif()
#Ajout d'un repertoire Test (contenant executable)
add_subdirectory(test)
add_subdirectory(bigqr)
add_subdirectory(cham_hessqr)
#Ajout d'un repertoire pour la documentation
if(FABULOUS_BUILD_DOC)
......
......@@ -53,13 +53,19 @@ public:
}
}
/* \brief compute in-place (overwrite data) QR factorization (using Lapack kernels)
/**
* \brief Compute QR factorization
*
* Compute QR factorization using Lapack kernels.
* The first parameter Q is the input matrix and will be overwritten with the
* Q factor of the factorization.
*
* \param[inout] this: when the method returns, 'this' Block contains the Q part
* \param[out] R: contains the R part of the QR factorization
* it is assumed the user created the 'R' Block such as:
* \param[in,out] Q when the method returns: the Q part of the factorization
* \param[out] R the R part of the factorization
* it is assumed either the user allocated a 'R' Block such as:
* R.get_nb_col() == this->get_nb_col() and
* R.get_nb_row() == this->get_nb_col()
* or the user passed a block of size (0x0) and R will no be computed
*/
template< class Block, class T = typename Block::value_type >
static void InPlaceQRFacto(Block &Q, Block &R)
......
......@@ -166,24 +166,24 @@ public:
* Ref IB-BGMRES-DR (Giraud Jing Agullo): p.21
*
* \param[in] A User Matrix
* \param[in,out] X Needed for computing real solution if convergence
* \param[in,out] X initial guess (input), and best approximated solution (output)
* \param[in] B the right hand sides
* \param max_krylov_space_size Maximum size of Krylov Search space.
* \param[in] epsilon tolerance (backward error) for Residual
* \param restarter hold data to deflate at restart (see DR_param)
* \param[in] epsilon tolerance (backward error) for residual
* \param[in,out] restarter hold data to deflate at restart
* \param ortho_scheme orthogonalization schema
* \param ortho_type Choose between block wise arnoldi (through QR factorization)
* or vector wise arnoldi. (In distributed, only the vector wise will works)
*
* \return information about the iterations
* \return whether the convergence was reached
*/
template<class Matrix, class Block, class Restarter>
bool run( const Matrix &A, Block &X, const Block &B,
const int max_krylov_space_size,
const std::vector<P> &epsilon,
Restarter &restarter,
OrthoScheme ortho_scheme = OrthoScheme::ICGS,
OrthoType ortho_type = OrthoType::RUHE )
OrthoScheme ortho_scheme,
OrthoType ortho_type )
{
print_header(max_krylov_space_size);
......
......@@ -340,27 +340,24 @@ public:
* Ref: IB-BGMRES-DR (Giraud Jing Agullo): p.21
*
* \param[in] A User Matrix
* \param[in,out] X the solutions
* \param[in,out] X initial guess (input). Best approx. solution (output)
* \param[in] B the right hand sides
* \param max_krylov_space_size maximum size for the Krylov search space
* \param[in] epsilon tolerance for Residual
* \param DR_struct hold data to deflate at restart (see DR_param)
* \param ortho_scheme orthogonalization schema
* \param ortho_type Choose between BLOCK-wise arnoldi (through QR factorization)
* or vector wise arnoldi(RUHE). (In distributed, only the vector wise will works)
*
* \return Struct containing information about the procedure
*
* \return whether the convergence was reached
*/
template< class Matrix, class Block, class DRParam >
template< class Matrix, class Block, class Restarter >
bool run( Matrix &A, Block &X, Block &B,
const int max_krylov_space_size,
const std::vector<P> &epsilon,
DRParam &DR_struct,
OrthoScheme ortho_scheme = OrthoScheme::ICGS,
OrthoType ortho_type = OrthoType::RUHE)
Restarter &,
OrthoScheme ortho_scheme,
OrthoType ortho_type )
{
(void) DR_struct;
bool convergence = false;
print_header(max_krylov_space_size);
_base.reset(); // DR not implemented ; we force a cold restart
......
......@@ -153,28 +153,29 @@ public:
/**
* \brief Arnoldi iterations with incremental QR for least square resolution
*
* Solution will be stored inside X0 at the end of computation.
* Solution will be stored inside X at the end of computation.
* Ref IB-BGMRES-DR (Giraud Jing Agullo): p.21
*
* \param[in] A User Matrix
* \param[in,out] X Needed for computing real solution if convergence
* \param[in] B Needed for computing real residual if convergence
* \param[in,out] X initial guess (input), and best approximated solution (output)
* \param[in] B the right hand sides
* \param max_krylov_space_size Maximum size of Krylov Search space.
* \param[in] epsilon tolerance for Residual
* \param ortho_scheme orthogonalization schma
* \param[in,out] restarter hold data to deflate at restart
* \param ortho_scheme orthogonalization schema
* \param ortho_type Choose between BLOCK wise arnoldi
* (through QR factorization) or vector wise arnoldi (RUHE). <br/>
* (In distributed, only the vector wise will works)
*
* \return Struct containing information about the procedure
* \return whether the convergence was reached
*/
template<class Matrix, class Block, class Restarter>
bool run( const Matrix &A, Block &X, const Block &B,
const int max_krylov_space_size,
const std::vector<P> &epsilon,
Restarter &restarter,
OrthoScheme ortho_scheme = OrthoScheme::MGS,
OrthoType ortho_type = OrthoType::BLOCK)
OrthoScheme ortho_scheme,
OrthoType ortho_type )
{
assert( _nbRHS == B.get_nb_col() );
......
......@@ -158,24 +158,24 @@ public:
* Ref IB-BGMRES-DR (Giraud Jing Agullo): p.21
*
* \param[in] A User Matrix
* \param[in,out] X Needed for computing real solution if convergence
* \param[in] B Needed for computing real residual if convergence
* \param[in,out] X initial guess (input). Best approx. solution (output)
* \param[in] B the right hand sides
* \param max_krylov_space_size Maximum size of Krylov Search space.
* \param[in] epsilon tolerance for Residual
* \param ortho_scheme orthogonalization schma
* \param ortho_scheme orthogonalization schema
* \param ortho_type Choose between BLOCK wise arnoldi
* (through QR factorization) or vector wise arnoldi (RUHE). <br/>
* (In distributed, only the vector wise will works)
*
* \return Struct containing information about the procedure
* \return whether the convergence was reached
*/
template<class Matrix, class Block, class Restarter>
bool run( const Matrix &A, Block &X, const Block &B,
const int max_krylov_space_size,
const std::vector<P> &epsilon,
Restarter&,
OrthoScheme ortho_scheme = OrthoScheme::MGS,
OrthoType ortho_type = OrthoType::BLOCK)
OrthoScheme ortho_scheme,
OrthoType ortho_type )
{
assert( _nbRHS == B.get_nb_col() );
_base.reset(); // DR not implemented ; force a cold restart
......
......@@ -12,7 +12,7 @@ template<class> class HessQRDR;
namespace fabulous {
/**
* \brief Hessenberg for Incremental QR version
* \brief Hessenberg for Incremental QR version with Deflated Restarting
*
* Format: <br/>
\verbatim
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment