![]() |
Reference documentation for deal.II version 9.6.0
|
#include <deal.II/lac/solver_qmrs.h>
Public Member Functions | |
AdditionalData (const bool left_preconditioning=false, const double solver_tolerance=1.e-9, const bool breakdown_testing=true, const double breakdown_threshold=1.e-16) | |
Public Attributes | |
bool | left_preconditioning |
double | solver_tolerance |
bool | breakdown_testing |
double | breakdown_threshold |
Standardized data struct to pipe additional data to the solver.
The user is able to switch between right and left preconditioning, that means solving the systems P-1A and AP-1 respectively, using the corresponding parameter. Note that left preconditioning means to employ the preconditioned (BiCG-)residual and otherwise the unpreconditioned one. The default is the application from the right side.
The solver_tolerance
threshold is used to define the said bound below which the residual is computed exactly. See the class documentation for more information. The default value is 1e-9, that is the default solving precision multiplied by ten.
SQMR is susceptible to breakdowns (divisions by zero), so we need a parameter telling us which numbers are considered zero. The proper breakdown criterion is very unclear, so experiments may be necessary here. It is even possible to achieve convergence despite of dividing through by small numbers. There are even cases in which it is advantageous to accept such divisions because the cheap iteration cost makes the algorithm the fastest of all available indefinite iterative solvers. Nonetheless, the default breakdown threshold value is 1e-16.
Definition at line 122 of file solver_qmrs.h.
|
inlineexplicit |
Constructor.
The default is right preconditioning, with the solver_tolerance
chosen to be 1e-9 and the breakdown_threshold
set at 1e-16.
Definition at line 130 of file solver_qmrs.h.
bool SolverQMRS< VectorType >::AdditionalData::left_preconditioning |
Flag for using a left-preconditioned version.
Definition at line 143 of file solver_qmrs.h.
double SolverQMRS< VectorType >::AdditionalData::solver_tolerance |
The threshold below which the current residual is computed exactly.
Definition at line 148 of file solver_qmrs.h.
bool SolverQMRS< VectorType >::AdditionalData::breakdown_testing |
Flag for breakdown testing.
Definition at line 153 of file solver_qmrs.h.
double SolverQMRS< VectorType >::AdditionalData::breakdown_threshold |
Breakdown threshold. Scalars measured to this bound are used for divisions.
Definition at line 159 of file solver_qmrs.h.