Reference documentation for deal.II version 9.2.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

## Detailed Description

### template<typename VectorType = Vector<double>> struct SolverQMRS< VectorType >::AdditionalData

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.

## Constructor & Destructor Documentation

template<typename VectorType = Vector<double>>
 SolverQMRS< VectorType >::AdditionalData::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 )
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.

## ◆ left_preconditioning

template<typename VectorType = Vector<double>>

Flag for using a left-preconditioned version.

Definition at line 143 of file solver_qmrs.h.

## ◆ solver_tolerance

template<typename VectorType = Vector<double>>

The threshold below which the current residual is computed exactly.

Definition at line 148 of file solver_qmrs.h.

## ◆ breakdown_testing

template<typename VectorType = Vector<double>>

Flag for breakdown testing.

Definition at line 153 of file solver_qmrs.h.

## ◆ breakdown_threshold

template<typename VectorType = Vector<double>>