Skip to content

Commit 3516f58

Browse files
author
Pawel Latawiec
committed
Add documentation
1 parent 90a2ff1 commit 3516f58

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

docs/make.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ 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"
26+
"LALQMR" => "linear_systems/lalqmr.md"
2627
"LSMR" => "linear_systems/lsmr.md",
2728
"LSQR" => "linear_systems/lsqr.md",
2829
"Stationary methods" => "linear_systems/stationary.md",

docs/src/linear_systems/lalqmr.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [LALQMR](@id LALQMR)
2+
3+
Look-ahead Lanczos Quasi-minimal Residual (LALQMR) is the look-ahead variant of [QMR](@ref) for solving $Ax = b$ approximately for $x$ where $A$ is a linear operator and $b$ the right-hand side vector. $A$ may be non-symmetric. The Krylov subspace is generated via the [Look-ahead Lanczos process](@LAL)
4+
5+
## Usage
6+
7+
```@docs
8+
lalqmr
9+
lalqmr!
10+
```
11+
12+
## Implementation details
13+
This implementation of LALQMR follows [^Freund1994] and [^Freund1993], where we generate the Krylov subspace via Lanczos bi-orthogonalization based on the matrix `A` and its transpose. In the regular Lanczos process, we may encounter singularities during the construction of the Krylov basis. The look-ahead process avoids this by building blocks instead, avoiding the singularities. Therefore, the LALQMR technique is well-suited towards problematic linear systems. Typically, most systems will not have blocks of size larger than 4 made, and most iterations are "regular", or blocks of size 1 [^Freund1994].
14+
15+
For more detail on the implementation see the original paper [^Freund1994]. This implementation follows the paper, with the exception that if a block of maximum size is reached during the Lanczos process, the block is closed instead of restarted.
16+
17+
For a solution vector of size `n`, the memory allocated will be `(12 + max_memory * 5) * n`.
18+
19+
!!! tip
20+
LALQMR can be used as an [iterator](@ref Iterators) via `lalqmr_iterable!`. This makes it possible to access the next, current, and previous Krylov basis vectors during the iteration.
21+
22+
## References
23+
[^Freund1993]:
24+
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
25+
[^Freund1994]:
26+
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
27+
[^Freund1990]:
28+
Freund, W. R., & Nachtigal, N. M. (1990). QMR : for a Quasi-Minimal Residual Linear Method Systems. (December).

docs/src/linear_systems/qmr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# [QMR](@id QMR)
22

3-
QMR is a short-recurrence version of GMRES for solving $Ax = b$ approximately for $x$ where $A$ is a linear operator and $b$ the right-hand side vector. $A$ may be non-symmetric.
3+
QMR is a short-recurrence version of GMRES for solving $Ax = b$ approximately for $x$ where $A$ is a linear operator and $b$ the right-hand side vector. $A$ may be non-symmetric. This is a simplified version of [LALQMR](@ref)
44

55
## Usage
66

0 commit comments

Comments
 (0)