Reference documentation for deal.II version 9.2.0
|
#include <deal.II/lac/solver_gmres.h>
Classes | |
struct | AdditionalData |
Public Member Functions | |
SolverFGMRES (SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData()) | |
SolverFGMRES (SolverControl &cn, const AdditionalData &data=AdditionalData()) | |
template<typename MatrixType , typename PreconditionerType > | |
void | solve (const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner) |
Public Member Functions inherited from SolverBase< Vector< double > > | |
SolverBase (SolverControl &solver_control, VectorMemory< Vector< double > > &vector_memory) | |
SolverBase (SolverControl &solver_control) | |
boost::signals2::connection | connect (const std::function< SolverControl::State(const unsigned int iteration, const double check_value, const Vector< double > ¤t_iterate)> &slot) |
Public Member Functions inherited from Subscriptor | |
Subscriptor () | |
Subscriptor (const Subscriptor &) | |
Subscriptor (Subscriptor &&) noexcept | |
virtual | ~Subscriptor () |
Subscriptor & | operator= (const Subscriptor &) |
Subscriptor & | operator= (Subscriptor &&) noexcept |
void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
unsigned int | n_subscriptions () const |
template<typename StreamType > | |
void | list_subscribers (StreamType &stream) const |
void | list_subscribers () const |
template<class Archive > | |
void | serialize (Archive &ar, const unsigned int version) |
Private Attributes | |
AdditionalData | additional_data |
FullMatrix< double > | H |
FullMatrix< double > | H1 |
Additional Inherited Members | |
Public Types inherited from SolverBase< Vector< double > > | |
using | vector_type = Vector< double > |
Static Public Member Functions inherited from Subscriptor | |
static ::ExceptionBase & | ExcInUse (int arg1, std::string arg2, std::string arg3) |
static ::ExceptionBase & | ExcNoSubscriber (std::string arg1, std::string arg2) |
Protected Attributes inherited from SolverBase< Vector< double > > | |
GrowingVectorMemory< Vector< double > > | static_vector_memory |
VectorMemory< Vector< double > > & | memory |
boost::signals2::signal< SolverControl::State(const unsigned int iteration, const double check_value, const Vector< double > ¤t_iterate), StateCombiner > | iteration_status |
Implementation of the Generalized minimal residual method with flexible preconditioning (flexible GMRES or FGMRES).
This flexible version of the GMRES method allows for the use of a different preconditioner in each iteration step. Therefore, it is also more robust with respect to inaccurate evaluation of the preconditioner. An important application is the use of a Krylov space method inside the preconditioner. As opposed to SolverGMRES which allows one to choose between left and right preconditioning, this solver always applies the preconditioner from the right.
FGMRES needs two vectors in each iteration steps yielding a total of 2*SolverFGMRES::AdditionalData::max_basis_size+1
auxiliary vectors. Otherwise, FGMRES requires roughly the same number of operations per iteration compared to GMRES, except one application of the preconditioner less at each restart and at the end of solve().
For more details see [59].
Definition at line 464 of file solver_gmres.h.
SolverFGMRES< VectorType >::SolverFGMRES | ( | SolverControl & | cn, |
VectorMemory< VectorType > & | mem, | ||
const AdditionalData & | data = AdditionalData() |
||
) |
Constructor.
SolverFGMRES< VectorType >::SolverFGMRES | ( | SolverControl & | cn, |
const AdditionalData & | data = AdditionalData() |
||
) |
Constructor. Use an object of type GrowingVectorMemory as a default to allocate memory.
void SolverFGMRES< VectorType >::solve | ( | const MatrixType & | A, |
VectorType & | x, | ||
const VectorType & | b, | ||
const PreconditionerType & | preconditioner | ||
) |
Solve the linear system \(Ax=b\) for x.
|
private |
Additional flags.
Definition at line 525 of file solver_gmres.h.
|
private |
Projected system matrix
Definition at line 530 of file solver_gmres.h.
|
private |
Auxiliary matrix for inverting H
Definition at line 535 of file solver_gmres.h.