Skip to content

Commit 6d6a09c

Browse files
committed
update paper refs
1 parent efd60ad commit 6d6a09c

7 files changed

Lines changed: 60 additions & 28 deletions

File tree

core/solver/minres.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,9 @@ typename Minres<ValueType>::parameters_type Minres<ValueType>::parse(
9595

9696

9797
/**
98-
* This Minres implementation is based on Anne Grennbaum's 'Iterative Methods
99-
* for Solving Linear Systems' (DOI: 10.1137/1.9781611970937) Ch. 2 and Ch. 8.
98+
* This Minres implementation is based on Anne Greenbaum's *Iterative Methods
99+
* for Solving Linear Systems* (<https://doi.org/10.1137/1.9781611970937>),
100+
* Ch. 2 and Ch. 8.
100101
* Most variable names are taken from that reference, with the exception that
101102
* the vector `w` and `w_tilde` from the reference are called `z` and `z_tilde`.
102103
* The variable declaration have a comment to specify the name used in the

include/ginkgo/core/solver/bicg.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ namespace solver {
5252
* It forms the basis of cheaper variants such as BiCGSTAB and CGS, which
5353
* avoid the explicit \f$ A^H \f$ apply.
5454
*
55-
* Reference: R.Fletcher, Conjugate gradient methods for indefinite systems,
56-
* doi: 10.1007/BFb0080116
55+
* @par References
56+
* - Fletcher, R. *Conjugate gradient methods for indefinite systems.*
57+
* Numerical Analysis (Dundee 1975), Lecture Notes in Mathematics 506,
58+
* Springer, 1976. <https://doi.org/10.1007/BFb0080116>
5759
*
5860
* @tparam ValueType precision of matrix elements
5961
*

include/ginkgo/core/solver/chebyshev.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ using coeff_type =
3939
* matrix. It avoids the computation of inner products, which may be a
4040
* performance bottleneck for distributed system. Chebyshev iteration is
4141
* developed based on Chebyshev polynomials of the first kind.
42-
* This implementation follows the algorithm in "Templates for the
43-
* Solution of Linear Systems: Building Blocks for Iterative Methods, 2nd
44-
* Edition".
4542
*
4643
* Given a preconditioner \f$ M \approx A^{-1} \f$, the iterate is updated
4744
* with the three-term recurrence
@@ -61,6 +58,11 @@ using coeff_type =
6158
* solution_{i-1})
6259
* ```
6360
*
61+
* @par References
62+
* - Barrett, R., Berry, M., Chan, T. F., et al.
63+
* *Templates for the Solution of Linear Systems: Building Blocks for
64+
* Iterative Methods.* 2nd ed. SIAM, 1994.
65+
* <https://doi.org/10.1137/1.9781611971538>
6466
*
6567
* @tparam ValueType precision of matrix elements
6668
*

include/ginkgo/core/solver/idr.hpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ namespace solver {
3636

3737
/**
3838
* IDR(s) is an efficient method for solving large nonsymmetric systems of
39-
* linear equations. The implemented version is the one presented in the
40-
* paper "Algorithm 913: An elegant IDR(s) variant that efficiently exploits
41-
* biorthogonality properties" by M. B. Van Gijzen and P. Sonneveld.
39+
* linear equations. The implementation follows the elegant variant that
40+
* exploits the biorthogonality of the shadow vectors.
4241
*
4342
* The method is based on the induced dimension reduction theorem. Fixing a
4443
* full-rank shadow space \f$ R = \mathrm{span}(r_1, \ldots, r_s) \f$ — the
@@ -53,6 +52,13 @@ namespace solver {
5352
* most \f$ N + N/s \f$ iterations in exact arithmetic — substantially fewer
5453
* matrix-vector products than the \f$ 2N \f$ BiCG would require.
5554
*
55+
* @par References
56+
* - Van Gijzen, M. B., Sonneveld, P.
57+
* *Algorithm 913: An Elegant IDR(s) Variant that Efficiently Exploits
58+
* Biorthogonality Properties.*
59+
* ACM Transactions on Mathematical Software, 38 (1), Article 5, 2011.
60+
* <https://doi.org/10.1145/2049662.2049667>
61+
*
5662
* @tparam ValueType precision of the elements of the system matrix.
5763
*
5864
* @ingroup idr

include/ginkgo/core/solver/minres.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,16 @@ namespace solver {
4949
* use of data locality. The inner operations in one iteration of Minres are
5050
* merged into 2 separate steps.
5151
*
52-
* For more details see Anne Grennbaum's 'Iterative Methods
53-
* for Solving Linear Systems' (DOI: 10.1137/1.9781611970937), and Sou-Cheng
54-
* (Terrya) Choi's 'ITERATIVE METHODS FOR SINGULAR LINEAR EQUATIONS AND
55-
* LEAST-SQUARES PROBLEMS'.
52+
* @par References
53+
* - Greenbaum, A. *Iterative Methods for Solving Linear Systems.*
54+
* SIAM Frontiers in Applied Mathematics, 17, 1997.
55+
* <https://doi.org/10.1137/1.9781611970937>
56+
* - Choi, S.-C. T. *Iterative Methods for Singular Linear Equations and
57+
* Least-Squares Problems.*
58+
* PhD thesis, Stanford University, 2006.
59+
* <https://web.stanford.edu/group/SOL/dissertations/sou-cheng-choi-thesis.pdf>
5660
*
57-
* @note: The Minres solver only reports an approximation of the residual norm
61+
* @note The Minres solver only reports an approximation of the residual norm
5862
* directly to the stopping criteria. Neither the actual residual, nor
5963
* the actual residual norm are reported. Thus, to get the minimal
6064
* overhead, the gko::stop::ImplicitResidualNorm criteria should be used.

include/ginkgo/core/solver/multigrid.hpp

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,13 @@ namespace multigrid {
4545
/**
4646
* cycle defines which kind of multigrid cycle can be used.
4747
* It contains V, W, and F cycle.
48-
* - V, W cycle uses the algorithm according to Briggs, Henson, and McCormick: A
49-
* multigrid tutorial 2nd Edition.
50-
* - F cycle uses the algorithm according to Trottenberg, Oosterlee, and
51-
* Schuller: Multigrid 1st Edition. F cycle first uses the recursive call but
52-
* second uses the V-cycle call such that F-cycle is between V and W cycle.
48+
* - V, W cycles use the algorithm from Briggs–Henson–McCormick
49+
* (*A Multigrid Tutorial*, 2nd ed., SIAM 2000).
50+
* - F cycle uses the algorithm from Trottenberg–Oosterlee–Schüller
51+
* (*Multigrid*, 1st ed., Academic Press 2001); F-cycle first does the
52+
* recursive call then a V-cycle call, sitting between V and W in cost.
53+
*
54+
* See the @ref Multigrid class for the full reference list with DOIs.
5355
*/
5456
enum class cycle { v, f, w };
5557

@@ -82,11 +84,17 @@ class MultigridState;
8284

8385

8486
/**
85-
* Multigrid methods have a hierarchy of many levels, whose corase level is a
86-
* subset of the fine level, of the problem. The coarse level solves the system
87-
* on the residual of fine level and fine level will use the coarse solution to
88-
* correct its own result. Multigrid solves the problem by relatively cheap step
89-
* in each level and refining the result when prolongating back.
87+
* Multigrid solves a linear system by combining cheap iterative sweeps
88+
* (smoothers) on a hierarchy of progressively coarser representations of
89+
* the operator with corrections transferred between adjacent levels. A
90+
* smoother on the fine level removes the high-frequency components of the
91+
* error quickly; the remaining low-frequency error is well-resolved on a
92+
* coarser space, where it is computed by a cheaper solve — or, recursively,
93+
* by another multigrid call. The correction is prolongated back to the
94+
* fine level and a second smoothing sweep removes any high-frequency error
95+
* introduced by the transfer. Because each coarser level holds only a
96+
* fraction of the unknowns of the next, the total work per cycle stays
97+
* close to that of a single fine-level matrix-vector apply.
9098
*
9199
* Each level \f$ \ell \f$ holds a system matrix \f$ A_\ell \f$, a smoother
92100
* \f$ S_\ell \f$, a restriction operator
@@ -121,6 +129,13 @@ class MultigridState;
121129
* the coarsest level (the coarsest solver), and its level counts is N (N
122130
* multigrid level generation).
123131
*
132+
* @par References
133+
* - Briggs, W. L., Henson, V. E., McCormick, S. F.
134+
* *A %Multigrid Tutorial.* 2nd ed. SIAM, 2000.
135+
* <https://doi.org/10.1137/1.9780898719505>
136+
* - Trottenberg, U., Oosterlee, C. W., Schüller, A.
137+
* *%Multigrid.* 1st ed. Academic Press, 2001. ISBN 978-0-12-701070-0.
138+
*
124139
* @ingroup Multigrid
125140
* @ingroup solvers
126141
* @ingroup LinOp

include/ginkgo/core/solver/pipe_cg.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,11 @@ namespace solver {
6262
* 3. As the CG itself, this method performs very well for symmetric positive
6363
* definite matrices but it is in general not suitable for general matrices.
6464
*
65-
* The implementation in Ginkgo is based on the following paper:
66-
* Pipelined, Flexible Krylov Subspace Methods, P. Sanan et. al, SISC, 2016,
67-
* doi: 10.1137/15M1049130
65+
* @par References
66+
* - Sanan, P., Schnepp, S. M., May, D. A.
67+
* *Pipelined, Flexible Krylov Subspace Methods.*
68+
* SIAM Journal on Scientific Computing, 38 (5), 2016.
69+
* <https://doi.org/10.1137/15M1049130>
6870
*
6971
* @tparam ValueType precision of matrix elements
7072
*

0 commit comments

Comments
 (0)