Given a linear operator with full column rank and the associated saddle-point problem
the Saunders-Simon-Yip factorization computes orthonormal bases and for the column-span and of and , respectively, and a tridiagonal matrix such that
with and .
Algorithmic Features
References
### Syntax
fortran
call ssy(A, U, V, T, info [, kstart] [, kend] [, tol])
### Arguments
A : Linear operator derived from one the base types provided by the
AbstractLinops module. It is an intent(inout) argument.
U : Arrays of types derived from one the base types provided by the AbstractVectors
module. It needs to be consistent with the type of A. On entry, U(1) = b.
On exit, it contains an orthonormal basis for .
It is an intent(inout) argument.
V : Arrays of types derived from one the base types provided by the AbstractVectors
module. It needs to be consistent with the type o fA. On entry, V(1) = c.
On exit, it contains an orthonormal basis for .
It is an intent(inout) argument.
T : real or complex rank-2 array. On exit, it contains the
tridiagonal matrix computed from the SSY factorization. It is an intent(inout) argument.
info : integer variable. It is the LightKrylov information flag. On exit, if info > 0
the SSY process experienced a lucky breakdown.
kstart (optional) : integer value determining the index of the first SSY step to be
computed. It is an optional intent(in) argument. By default, kstart = 1.
kend (optional) : integer value determining the index of the last SSY step to be computed.
It is an optional intent(in) argument. By default, kend = size(U) - 1.
tol (optional) : Numerical tolerance below which a subspace is considered to be -invariant.
It is an optional intent(in) argument. By default tol = atol_sp or
tol = atol_dp depending on the kind of A.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_cdp), | intent(inout) | :: | U(:) |
Orthonormal basis for the span of . On entry, |
||
| class(abstract_vector_cdp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . On entry, |
||
| complex(kind=dp), | intent(inout) | :: | T(:,:) |
Tridiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the SSY factorization (default 1) |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the SSY factorization (default size(U)-1). |
|
| real(kind=dp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_csp), | intent(inout) | :: | U(:) |
Orthonormal basis for the span of . On entry, |
||
| class(abstract_vector_csp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . On entry, |
||
| complex(kind=sp), | intent(inout) | :: | T(:,:) |
Tridiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the SSY factorization (default 1) |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the SSY factorization (default size(U)-1). |
|
| real(kind=sp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_rdp), | intent(inout) | :: | U(:) |
Orthonormal basis for the span of . On entry, |
||
| class(abstract_vector_rdp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . On entry, |
||
| real(kind=dp), | intent(inout) | :: | T(:,:) |
Tridiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the SSY factorization (default 1) |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the SSY factorization (default size(U)-1). |
|
| real(kind=dp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_rsp), | intent(inout) | :: | U(:) |
Orthonormal basis for the span of . On entry, |
||
| class(abstract_vector_rsp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . On entry, |
||
| real(kind=sp), | intent(inout) | :: | T(:,:) |
Tridiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the SSY factorization (default 1) |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the SSY factorization (default size(U)-1). |
|
| real(kind=sp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |