You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/linear_systems/qmr.md
+1-9Lines changed: 1 addition & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,17 +10,9 @@ qmr!
10
10
```
11
11
12
12
## 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].
14
14
15
15
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.
16
16
17
-
For more detail on the implementation see the original paper [^Freund1990] or [^Saad2003].
18
-
19
17
!!! tip
20
18
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
Copy file name to clipboardExpand all lines: src/lal.jl
+5-4Lines changed: 5 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ import BlockDiagonals
7
7
"""
8
8
LookAheadLanczosDecompOptions
9
9
10
-
Options for [`LookAheadLanczosDecomp`](@ref).
10
+
Options for [`IterativeSolvers.LookAheadLanczosDecomp`](@ref).
11
11
12
12
# Fields
13
13
- `max_iter`: Maximum number of iterations
@@ -25,7 +25,7 @@ end
25
25
"""
26
26
LookAheadLanczosDecompLog
27
27
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.
29
29
"""
30
30
struct LookAheadLanczosDecompLog
31
31
PQ_block_count::Dict{Int, Int}
@@ -115,7 +115,7 @@ end
115
115
"""
116
116
LookAheadLanczosDecomp(A, v, w; kwargs...)
117
117
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)`.
119
119
120
120
# Arguments
121
121
- `A`: Operator used to construct Krylov subspace
@@ -127,12 +127,13 @@ Provides an iterable which constructs basis vectors for a Krylov subspace genera
127
127
- `max_iter=size(A, 2)`: Maximum number of iterations
128
128
- `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.
129
129
- `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)
131
131
- `verbose=false`: Flag determining verbosity of output during iteration
132
132
133
133
# References
134
134
[^Freund1993]:
135
135
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
+
136
137
[^Freund1994]:
137
138
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
0 commit comments