![]() |
MODFLOW 6
version 6.7.0.dev2
USGS Modular Hydrologic Model
|
Functions/Subroutines | |
pure real(dp) function, dimension(:, :), allocatable | house_holder_matrix (x) |
pure subroutine, public | bidiagonal_decomposition (A, P, Qt) |
pure real(dp) function, dimension(2, 2) | givens_rotation (a, b) |
pure real(dp) function | compute_shift (A) |
pure subroutine, public | bidiagonal_qr_decomposition (A, U, VT) |
pure subroutine | handle_zero_diagonal (A, U, VT) |
pure real(dp) function | superdiagonal_norm (A) |
pure subroutine | find_nonzero_superdiagonal (A, p, q) |
pure logical(lgp) function | has_zero_diagonal (A) |
pure subroutine | make_matrix_square (A, Qt) |
pure subroutine | clean_superdiagonal (A) |
pure subroutine, public | svd (A, U, S, VT) |
Singular Value Decomposition. More... | |
pure subroutine, public svdmodule::bidiagonal_decomposition | ( | real(dp), dimension(:, :), intent(inout) | A, |
real(dp), dimension(:, :), intent(out), allocatable | P, | ||
real(dp), dimension(:, :), intent(out), allocatable | Qt | ||
) |
Definition at line 64 of file SingularValueDecomposition.f90.
pure subroutine, public svdmodule::bidiagonal_qr_decomposition | ( | real(dp), dimension(:, :), intent(inout) | A, |
real(dp), dimension(:, :), intent(inout) | U, | ||
real(dp), dimension(:, :), intent(inout) | VT | ||
) |
Definition at line 183 of file SingularValueDecomposition.f90.
|
private |
Definition at line 385 of file SingularValueDecomposition.f90.
|
private |
Definition at line 135 of file SingularValueDecomposition.f90.
|
private |
Definition at line 296 of file SingularValueDecomposition.f90.
|
private |
Definition at line 102 of file SingularValueDecomposition.f90.
|
private |
Definition at line 230 of file SingularValueDecomposition.f90.
|
private |
Definition at line 329 of file SingularValueDecomposition.f90.
|
private |
Definition at line 18 of file SingularValueDecomposition.f90.
|
private |
Definition at line 355 of file SingularValueDecomposition.f90.
|
private |
Definition at line 269 of file SingularValueDecomposition.f90.
pure subroutine, public svdmodule::svd | ( | real(dp), dimension(:, :), intent(in) | A, |
real(dp), dimension(:, :), intent(out), allocatable | U, | ||
real(dp), dimension(:, :), intent(out), allocatable | S, | ||
real(dp), dimension(:, :), intent(out), allocatable | VT | ||
) |
This method decomposes the matrix A into U, S and VT. It follows the algorithm as described by Golub and Reinsch.
The first step is to decompose the matrix A into a bidiagonal matrix. This is done using Householder transformations. Then second step is to decompose the bidiagonal matrix into U, S and VT by repetitively applying the QR algorithm. If there is a zero on the diagonal or superdiagonal the matrix can be split into two smaller matrices and the QR algorithm can be applied to the smaller matrices.
The matrix U is the eigenvectors of A*A^T The matrix VT is the eigenvectors of A^T*A The matrix S is the square root of the eigenvalues of A*A^T or A^T*A
Definition at line 420 of file SingularValueDecomposition.f90.