From 6a2bae2da7b7c5c05153227a01c577fa9de74ef2 Mon Sep 17 00:00:00 2001 From: ikligge Date: Thu, 18 Jan 2018 12:43:27 +0100 Subject: [PATCH] Updated output file of linear operator test Minor request changes embedded; another changelog entry added --- .../incompatibilities/20171206IngoKligge | 4 +- include/deal.II/lac/solver_qmrs.h | 48 +++++++++---------- ..._trilinos=on.with_64bit_indices=off.output | 6 +-- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/doc/news/changes/incompatibilities/20171206IngoKligge b/doc/news/changes/incompatibilities/20171206IngoKligge index caba1bdfdd..f49536479a 100644 --- a/doc/news/changes/incompatibilities/20171206IngoKligge +++ b/doc/news/changes/incompatibilities/20171206IngoKligge @@ -1,5 +1,5 @@ -Changed: The parameters contained in struct SolverQMRS::AdditionalData has -been changed in order to meet the rewritten algorithm. See class documentation +Changed: The parameters contained in struct SolverQMRS::AdditionalData have +been changed in order to meet the rewritten algorithm. See the class documentation for more details.
(Ingo Kligge, 2017/12/06) diff --git a/include/deal.II/lac/solver_qmrs.h b/include/deal.II/lac/solver_qmrs.h index d648b719b0..a13a2daa18 100644 --- a/include/deal.II/lac/solver_qmrs.h +++ b/include/deal.II/lac/solver_qmrs.h @@ -33,37 +33,38 @@ DEAL_II_NAMESPACE_OPEN /** *

Quasi-minimal method for symmetric matrices (SQMR)

* - * The SQMR method is supposed to solve symmetric indefinite linear systems - * with symmetric, not necessarily definite preconditioners. This version of - * SQMR is adapted from the respective symmetric QMR-from-BiCG algorithm - * given by both Freund/Nachtigal: A new Krylov-subspace method for symmetric - * indefinite linear systems, NASA STI/Recon Technical Report N, 95 (1994) and - * Freund/Nachtigal: Software for simplified Lanczos and QMR algorithms, - * Appl. Num. Math. 19 (1995), pp. 319-341 and provides both right and left - * but not split preconditioning. + * The SQMR (symmetric quasi-minimal residual) method is supposed to solve symmetric + * indefinite linear systems with symmetric, not necessarily definite preconditioners. + * It is a variant of the original quasi-minimal residual method (QMR) and produces + * the same iterative solution. This version of SQMR is adapted from the respective + * symmetric QMR-from-BiCG algorithm given by both Freund/Nachtigal: A new + * Krylov-subspace method for symmetric indefinite linear systems, NASA STI/Recon + * Technical Report N, 95 (1994) and Freund/Nachtigal: Software for simplified + * Lanczos and QMR algorithms, Appl. Num. Math. 19 (1995), pp. 319-341 and provides + * both right and left (but not split) preconditioning. * * *

Trade off of stability to simplicity

* - * Note, that the QMR implementation the given algorithm is based on, is + * Note, that the QMR implementation that the given algorithm is based on is * derived from classical BiCG. It can be shown (Freund/Szeto: A transpose-free * quasi-minimal residual squared algorithm for non-Hermitian linear systems, * Advances in Computer Methods for Partial Differential Equations VII - * (IMACS, New Brunswick, NJ, 1992) pp. 258-264), that the QMR iterates can + * (IMACS, New Brunswick, NJ, 1992) pp. 258-264) that the QMR iterates can * be generated from the BiCG iteration through one additional vector and * some scalar updates. Possible breakdowns (or precisely, divisions by * zero) of BiCG therefore obviously transfer to this simple no-look-ahead algorithm. * - * In return the algorithm is cheap compared to classical QMR or BiCGStab - * using only one matrix-vector-product with the system matrix and + * In return the algorithm is cheap compared to classical QMR or BiCGStab, + * using only one matrix-vector product with the system matrix and * one application of the preconditioner per iteration respectively. * * The residual used for measuring convergence is only approximately calculated - * by an upper bound. If this value comes below a threshold given by the + * by an upper bound. If this value comes below a threshold prescribed within the * AdditionalData struct, then the exact residual of the current * QMR iterate will be calculated using another multiplication with the system * matrix. By experience (according to Freund and Nachtigal) this technique - * is useful for a threshold that is ten times the solving tolerance and in + * is useful for a threshold that is ten times the solving tolerance, and in * that case will be only used in the last one or two steps of the complete iteration. * * For the requirements on matrices and vectors in order to work with this @@ -85,7 +86,7 @@ DEAL_II_NAMESPACE_OPEN * to observe the progress of the iteration. * * - * @author Guido Kanschat, Ingo Kligge 1999, 2017 + * @author Guido Kanschat, 1999; Ingo Kligge 2017 */ template > class SolverQMRS : public Solver @@ -96,28 +97,27 @@ public: * * 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 + * 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 class documentation for more information. The default value is 1e-9, + * The @p 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, + * 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 small numbers. There are even cases, in which it is advantageous to + * 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 indefinit solvers. Nonetheless, the default breakdown threshold value is 1e-16. + * available indefinite iterative solvers. Nonetheless, the default breakdown threshold value is 1e-16. */ struct AdditionalData { /** * Constructor. * - * The default is right preconditioning and breakdown parameter - * 1e-16. + * The default is right preconditioning, with the @p solver_tolerance chosen to be 1e-9 and the @p breakdown_threshold set at 1e-16. */ explicit AdditionalData (const bool left_preconditioning = false, @@ -138,7 +138,7 @@ public: bool left_preconditioning; /** - * Representing the threshold below which the current residual is computed exactly. + * The threshold below which the current residual is computed exactly. */ double solver_tolerance; diff --git a/tests/lac/linear_operator_10a.with_trilinos=on.with_64bit_indices=off.output b/tests/lac/linear_operator_10a.with_trilinos=on.with_64bit_indices=off.output index 4a7a0241e5..4648c5a2a8 100644 --- a/tests/lac/linear_operator_10a.with_trilinos=on.with_64bit_indices=off.output +++ b/tests/lac/linear_operator_10a.with_trilinos=on.with_64bit_indices=off.output @@ -137,9 +137,9 @@ DEAL:Solvers:SolverFGMRES:C_Op2::0.000000000 0.5000000000 1.000000000 1.50000000 DEAL:Solvers:SolverMinRes:S_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 DEAL:Solvers:SolverMinRes:C_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 DEAL:Solvers:SolverMinRes:C_Op2::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 -DEAL:Solvers:SolverQMRS:S_Op::0.000000000 1.000000000 2.000000000 3.000000000 4.000000000 5.000000000 6.000000000 7.000000000 8.000000000 9.000000000 -DEAL:Solvers:SolverQMRS:C_Op::0.000000000 2.000000000 4.000000000 6.000000000 8.000000000 10.00000000 12.00000000 14.00000000 16.00000000 18.00000000 -DEAL:Solvers:SolverQMRS:C_Op2::0.000000000 2.000000000 4.000000000 6.000000000 8.000000000 10.00000000 12.00000000 14.00000000 16.00000000 18.00000000 +DEAL:Solvers:SolverQMRS:S_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 +DEAL:Solvers:SolverQMRS:C_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 +DEAL:Solvers:SolverQMRS:C_Op2::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 DEAL:Solvers:SolverRichardson:S_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 DEAL:Solvers:SolverRichardson:C_Op::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 DEAL:Solvers:SolverRichardson:C_Op2::0.000000000 0.5000000000 1.000000000 1.500000000 2.000000000 2.500000000 3.000000000 3.500000000 4.000000000 4.500000000 -- 2.39.5