Skip to content

Commit c608bc8

Browse files
author
Pawel Latawiec
committed
Fix LAL docs
1 parent 8f4734b commit c608bc8

File tree

4 files changed

+12
-28
lines changed

4 files changed

+12
-28
lines changed

docs/make.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ makedocs(
2222
"BiCGStab(l)" => "linear_systems/bicgstabl.md",
2323
"IDR(s)" => "linear_systems/idrs.md",
2424
"Restarted GMRES" => "linear_systems/gmres.md",
25-
"QMR" => "linear_systems/qmr.md"
25+
"QMR" => "linear_systems/qmr.md",
2626
"LSMR" => "linear_systems/lsmr.md",
2727
"LSQR" => "linear_systems/lsqr.md",
28-
"Stationary methods" => "linear_systems/stationary.md"
28+
"Stationary methods" => "linear_systems/stationary.md",
2929
"LAL" => "linear_systems/lal.md"
3030
],
3131
"Eigenproblems" => [

docs/src/linear_systems/lal.md

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
11
# [Look-Ahead Lanczos Bi-Orthogonalization](@id LAL)
22

33
The Look-ahead Lanczos Bi-orthogonalization process is a generalization of the Lanczos
4-
bi-orthoganilization (as used in, for instance, [QMR](@ref)). The look-ahead process detects
4+
bi-orthoganilization (as used in, for instance, [QMR](@ref)) [^Freund1993], [^Freund1994]. The look-ahead process detects
55
(near-)singularities during the construction of the Lanczos iterates, known as break-down,
66
and skips over them. This is particularly advantageous for linear systems with large
77
null-spaces or eigenvalues close to 0.
88

9-
We provide an iterator interface for the Lanczos decomposition, following [^Freund1994],
9+
We provide an iterator interface for the Lanczos decomposition (Freund, 1994),
1010
where the look-ahead Lanczos process is implemented as a two-term coupled recurrence.
1111

1212
## Usage
1313

1414
```@docs
15-
LookAheadLanczosDecomp
15+
IterativeSolvers.LookAheadLanczosDecomp
16+
IterativeSolvers.LookAheadLanczosDecompLog
1617
```
17-
18-
## References
19-
20-
[^Freund1993]: Freund, R. W., Gutknecht, M. H., & Nachtigal, N. M. (1993). An Implementation
21-
of the Look-Ahead Lanczos Algorithm for Non-Hermitian Matrices. SIAM Journal on
22-
Scientific Computing, 14(1), 137–158. https://doi.org/10.1137/0914009
23-
24-
[^Freund1994]: Freund, R. W., & Nachtigal, N. M. (1994). An Implementation of the QMR Method
25-
Based on Coupled Two-Term Recurrences. SIAM Journal on Scientific Computing, 15(2),
26-
313–337. https://doi.org/10.1137/0915022

docs/src/linear_systems/qmr.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,9 @@ qmr!
1010
```
1111

1212
## Implementation details
13-
QMR exploits the tridiagonal structure of the Hessenberg matrix. Although QMR is similar to GMRES, where instead of using the Arnoldi process, a pair of biorthogonal vector spaces $V$ and $W$ is constructed via the Lanczos process. It requires that the adjoint of $A$ `adjoint(A)` be available.
13+
QMR exploits the tridiagonal structure of the Hessenberg matrix. Although QMR is similar to GMRES, where instead of using the Arnoldi process, a pair of biorthogonal vector spaces $V$ and $W$ is constructed via the Lanczos process. It requires that the adjoint of $A$ `adjoint(A)` be available [^Saad2003], [^Freund1990].
1414

1515
QMR enables the computation of $V$ and $W$ via a three-term recurrence. A three-term recurrence for the projection onto the solution vector can also be constructed from these values, using the portion of the last column of the Hessenberg matrix. Therefore we pre-allocate only eight vectors.
1616

17-
For more detail on the implementation see the original paper [^Freund1990] or [^Saad2003].
18-
1917
!!! tip
2018
QMR can be used as an [iterator](@ref Iterators) via `qmr_iterable!`. This makes it possible to access the next, current, and previous Krylov basis vectors during the iteration.
21-
22-
[^Saad2003]:
23-
Saad, Y. (2003). Interactive method for sparse linear system.
24-
[^Freund1990]:
25-
Freund, W. R., & Nachtigal, N. M. (1990). QMR : for a Quasi-Minimal
26-
Residual Linear Method Systems. (December).

src/lal.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import BlockDiagonals
77
"""
88
LookAheadLanczosDecompOptions
99
10-
Options for [`LookAheadLanczosDecomp`](@ref).
10+
Options for [`IterativeSolvers.LookAheadLanczosDecomp`](@ref).
1111
1212
# Fields
1313
- `max_iter`: Maximum number of iterations
@@ -25,7 +25,7 @@ end
2525
"""
2626
LookAheadLanczosDecompLog
2727
28-
Log for [`LookAheadLanczosDecomp`](@ref). In particular, logs the sizes of blocks constructed in the P-Q and V-W sequences.
28+
Log for [`IterativeSolvers.LookAheadLanczosDecomp`](@ref). In particular, logs the sizes of blocks constructed in the P-Q and V-W sequences.
2929
"""
3030
struct LookAheadLanczosDecompLog
3131
PQ_block_count::Dict{Int, Int}
@@ -115,7 +115,7 @@ end
115115
"""
116116
LookAheadLanczosDecomp(A, v, w; kwargs...)
117117
118-
Provides an iterable which constructs basis vectors for a Krylov subspace generated by `A` given by two initial vectors `v` and `w`. This implementation follows [^Freund1994], where a coupled two-term recurrence is used to generate both a V-W and a P-Q sequence. Following the reference, the Lanczos sequence is generated by `A` and `transpose(A)`.
118+
Provides an iterable which constructs basis vectors for a Krylov subspace generated by `A` given by two initial vectors `v` and `w` [^Freund1993]. This implementation follows [^Freund1994], where a coupled two-term recurrence is used to generate both a V-W and a P-Q sequence. Following the reference, the Lanczos sequence is generated by `A` and `transpose(A)`.
119119
120120
# Arguments
121121
- `A`: Operator used to construct Krylov subspace
@@ -127,12 +127,13 @@ Provides an iterable which constructs basis vectors for a Krylov subspace genera
127127
- `max_iter=size(A, 2)`: Maximum number of iterations
128128
- `max_block_size=4`: Maximum look-ahead block size to construct. Following [^Freund1994], it is rare for blocks to go beyond size 3. This pre-allocates the block storage for the computation to size `(max_block_size, length(v))`. If a block would be built that exceeds this size, the estimate of `norm(A)` is adjusted to allow the block to close.
129129
- `max_memory=4`: Maximum memory to store the sequence vectors. This may be greater than the block size.
130-
- `log=false`: Flag determining whether to log history in a [`LookAheadLanczosDecompLog`](@ref)
130+
- `log=false`: Flag determining whether to log history in a [`IterativeSolvers.LookAheadLanczosDecompLog`](@ref)
131131
- `verbose=false`: Flag determining verbosity of output during iteration
132132
133133
# References
134134
[^Freund1993]:
135135
Freund, R. W., Gutknecht, M. H., & Nachtigal, N. M. (1993). An Implementation of the Look-Ahead Lanczos Algorithm for Non-Hermitian Matrices. SIAM Journal on Scientific Computing, 14(1), 137–158. https://doi.org/10.1137/0914009
136+
136137
[^Freund1994]:
137138
Freund, R. W., & Nachtigal, N. M. (1994). An Implementation of the QMR Method Based on Coupled Two-Term Recurrences. SIAM Journal on Scientific Computing, 15(2), 313–337. https://doi.org/10.1137/0915022
138139
"""

0 commit comments

Comments
 (0)