grid_tools
1.7.0
|
Routines dealing with the operations of banded matrices. More...
Data Types | |
interface | avco |
interface | cad1b |
interface | cad2b |
interface | clipb |
interface | csb1b |
interface | csb2b |
interface | dfco |
interface | dfco2 |
interface | l1ubb |
interface | l1ueb |
interface | ldltb |
interface | ldub |
interface | linbv |
interface | ltdlbv |
interface | u1lbv |
interface | u1lbx |
interface | u1lby |
interface | u1lvb |
interface | u1lxb |
interface | u1lyb |
interface | udlb |
interface | udlbv |
interface | udlbx |
interface | udlby |
interface | udlvb |
interface | udlxb |
interface | udlyb |
interface | wrtb |
Public Member Functions | |
subroutine, public | avco (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for the compact mid-interval interpolation scheme characterized by matrix equation of the form, A.t = B.s (*) Where s is the vector of "source" values, t the staggered "target" values. More... | |
subroutine, public | cad1b (m1, mah1, mah2, mirror2, a) |
Incorporate operand symmetry and clip near end-1 of a band matrix operator. More... | |
subroutine, public | cad2b (m1, m2, mah1, mah2, mirror2, a) |
Incorporate symmetry and clip near end-2 of a band matrix. More... | |
pure subroutine | clib_c (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
pure subroutine | clib_d (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
subroutine, public | csb1b (m1, mah1, mah2, mirror2, a) |
Like cad1b, but for antisymmetric operand. More... | |
subroutine, public | csb2b (m1, m2, mah1, mah2, mirror2, a) |
Incorporate operand antisymmetry and clip near end-2 of a band matrix. More... | |
subroutine | davco (na, nb, za, zb, z0, a, b) |
Double precision version of subroutine avco for midpoint interpolation. More... | |
subroutine | ddfco (na, nb, za, zb, z0, a, b) |
Double precision version of dfco for compact differentiation coefficients. More... | |
subroutine | ddfco2 (na, nb, za, zb, z0, a, b) |
Double precision version of DFCO2 to get 2nd-derivative coefficients. More... | |
subroutine, public | dfco (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for either the compact differencing or quadrature scheme characterized by matrix equation of the form, A.d = B.c (*) In either case, d is the derivative (or density) of cumulative c. More... | |
subroutine, public | dfco2 (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for either the compact second- differencing scheme characterized by matrix equation of the form, A.d = B.c (*) Where d is the second-derivative of c. More... | |
subroutine | dl1ubb (m, mah1, mah2, mbh1, mbh2, a, b) |
Double precision version of L1UBB. More... | |
subroutine | dl1ueb (m, mah1, mah2, mbh1, mbh2, a, b) |
Double precision version of L1UEB. More... | |
subroutine | dldltb (m, mah1, a) |
[L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky). More... | |
subroutine | dldub (m, mah1, mah2, a) |
[L]*[D]*[U] factoring of double precision band-matrix. More... | |
subroutine, public | l1ubb (m, mah1, mah2, mbh1, mbh2, a, b) |
[L]*[D]*[U] factoring of band-matrix [A], modify [B] –> [D**-1]*[B] [L] lower triangular with unit main diagonal [D] diagonal matrix [U] upper triangular with unit main diagonal [B] associated band matrix with same number of rows as [A] lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B]. More... | |
subroutine, public | l1ueb (m, mah1, mah2, mbh1, mbh2, a, b) |
Form the [L]*[D]*[U] decomposition of asymmetric band-matrix [A] replace all but row zero of the lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B]. More... | |
subroutine, public | ldltb (m, mah1, a) |
[L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky). More... | |
subroutine, public | ldub (m, mah1, mah2, a) |
[L]*[D]*[U] factoring of single precision band-matrix. More... | |
subroutine, public | linbv (m, mah1, mah2, a, v) |
Solve LINear system with square Banded-matrix and vector V. More... | |
subroutine, public | ltdlbv (m, mah1, a, v) |
Like udlbv, except assuming a is the ldlt decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy) More... | |
subroutine | tavco (xa, xb, a, b) |
Simplified computation of compact midpoint interpolation coefficients. More... | |
subroutine | tdfco (xa, xb, a, b) |
Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa. More... | |
subroutine | tdfco2 (xa, xb, a, b) |
Simplified computation of compact 2nd-derivative coefficients. More... | |
subroutine, public | u1lbv (m, mah1, mah2, a, v) |
Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector. More... | |
subroutine, public | u1lbx (mx, mah1, mah2, my, a, v) |
Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors. More... | |
subroutine, public | u1lby (my, mah1, mah2, mx, a, v) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors. More... | |
subroutine, public | u1lvb (m, mah1, mah2, v, a) |
Special Back-substitution step of linear inversion involving left-Vector and Banded matrix. More... | |
subroutine, public | u1lxb (mx, mah1, mah2, my, v, a) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors. More... | |
subroutine, public | u1lyb (my, mah1, mah2, mx, v, a) |
Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors. More... | |
subroutine, public | udlb (m, mah1, mah2, a) |
[U]*[D]*[L] factoring of single precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal More... | |
subroutine, public | udlbv (m, mah1, mah2, a, v) |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More... | |
subroutine, public | udlbx (mx, mah1, mah2, my, a, v) |
Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors. More... | |
subroutine, public | udlby (my, mah1, mah2, mx, a, v) |
Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors. More... | |
subroutine, public | udlvb (m, mah1, mah2, v, a) |
Back-substitution step of linear inversion involving row-Vector and Banded matrix. More... | |
subroutine, public | udlxb (mx, mah1, mah2, my, v, a) |
Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors. More... | |
subroutine, public | udlyb (my, mah1, mah2, mx, v, a) |
BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors. More... | |
subroutine, public | wrtb (m1, m2, mah1, mah2, a) |
Convenient routine for interactively writing out the real contents of a band matrix. More... | |
Private Member Functions | |
pure subroutine | clib (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
subroutine | dltdlbv (m, mah1, a, v) |
Like udlbv, except assuming a is the ltdl decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy) More... | |
subroutine | dudlb (m, mah1, mah2, a) |
[U]*[D]*[L] factoring of double precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal More... | |
subroutine | dudlbv (m, mah1, mah2, a, v) |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More... | |
Private Attributes | |
real(dp), parameter | zero =0 |
Double precision real zero. More... | |
Routines dealing with the operations of banded matrices.
The three special routines allow the construction of compact or conventional interpolation and differencing stencils to a general order of accuracy. These are:
Other routines provide the tools for applying compact schemes, and for the construction and application of recursive filters.
Last modified (Purser): January 6th 2005 added nonredundant ldltb and ltdlbv routines for symmetric matrices, and remove obsolescent routines.
subroutine, public pmat2::avco | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(sp), dimension(na), intent(in) | za, | ||
real(sp), dimension(nb), intent(in) | zb, | ||
real(sp), intent(in) | z0, | ||
real(sp), dimension(na), intent(out) | a, | ||
real(sp), dimension(nb), intent(out) | b | ||
) |
Compute one row of the coefficients for the compact mid-interval interpolation scheme characterized by matrix equation of the form, A.t = B.s (*) Where s is the vector of "source" values, t the staggered "target" values.
[in] | na | number of t-points operated on by this row of the A of (*) |
[in] | nb | number of s-points operated on by this row of the B of (*) |
[in] | za | coordinates of t-points used in this row of (*) |
[in] | zb | coordinates of s-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[out] | a | the NA coefficients A for this scheme |
[out] | b | the NB coefficients B for this scheme |
subroutine, public pmat2::cad1b | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mirror2, | ||
real(sp), dimension(0:m1-1,-mah1:mah2), intent(inout) | a | ||
) |
Incorporate operand symmetry and clip near end-1 of a band matrix operator.
[in] | m1 | Size of implied full matrix |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-1 operand element. |
[in,out] | a | Input operator, output as symmetrized and clipped at end-1 Note: although m2 is not used here, it IS used in companion routines cad2b and csb2b; it is retained in the interests of uniformity. |
subroutine, public pmat2::cad2b | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | m2, | ||
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mirror2, | ||
real(sp), dimension(1-m1:0,m1-m2-mah1:m1-m2+mah2), intent(inout) | a | ||
) |
Incorporate symmetry and clip near end-2 of a band matrix.
[in] | m1 | Number of rows of full matrix A |
[in] | m2 | Number of columns of implied full matrix A |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-2 operand element. |
[in,out] | a | Input operator, output as symmetrized and clipped at end-2. |
|
private |
Clip (set to zero) the unused values in a banded matrix representation.
[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in,out] | a | single precision matrix elements, stored compactly as rows |
pure subroutine pmat2::clib_c | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | m2, | ||
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
complex(dpc), dimension(m1,-mah1:mah2), intent(inout) | a | ||
) |
Clip (set to zero) the unused values in a banded matrix representation.
[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in] | a | complex matrix elements, stored compactly as rows |
pure subroutine pmat2::clib_d | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | m2, | ||
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(dp), dimension(m1,-mah1:mah2), intent(inout) | a | ||
) |
Clip (set to zero) the unused values in a banded matrix representation.
[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in] | a | double precision matrix elements, stored compactly as rows |
subroutine, public pmat2::csb1b | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mirror2, | ||
real(sp), dimension(0:m1-1,-mah1:mah2), intent(inout) | a | ||
) |
Like cad1b, but for antisymmetric operand.
[in] | m1 | Size of implied full matrix |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-1 operand element. |
[in,out] | a | Input operator, output as clipped antisymmetric at end-1. |
subroutine, public pmat2::csb2b | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | m2, | ||
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mirror2, | ||
real(sp), dimension(1-m1:0,m1-m2-mah1:m1-m2+mah2), intent(inout) | a | ||
) |
Incorporate operand antisymmetry and clip near end-2 of a band matrix.
[in] | m1 | Number of rows of matrix A |
[in] | m2 | Number of columns of matrix A |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-2 operand element. |
[in,out] | a | Input operator, output as antisymmetrized and clipped at end-2. |
subroutine pmat2::davco | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(dp), dimension(na), intent(in) | za, | ||
real(dp), dimension(nb), intent(in) | zb, | ||
real(dp), intent(in) | z0, | ||
real(dp), dimension(na), intent(out) | a, | ||
real(dp), dimension(nb), intent(out) | b | ||
) |
Double precision version of subroutine avco for midpoint interpolation.
[in] | na | number of target points involved in formula |
[in] | nb | number of source points involved in formula |
[in] | za | coordinates of target points |
[in] | zb | coordinates of source points |
[in] | z0 | nominal point of application of compact interpolation formula |
[out] | a | the coefficients A for this scheme |
[out] | b | the coefficients B for this scheme |
subroutine pmat2::ddfco | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(dp), dimension(na), intent(in) | za, | ||
real(dp), dimension(nb), intent(in) | zb, | ||
real(dp), intent(in) | z0, | ||
real(dp), dimension(na), intent(out) | a, | ||
real(dp), dimension(nb), intent(out) | b | ||
) |
Double precision version of dfco for compact differentiation coefficients.
[in] | na | number of A coefficients multiplying derivatives |
[in] | nb | number of B coefficients multiplying cumulatives |
[in] | za | coordinates of the density (d) points |
[in] | zb | coordinates of the cumulative (c) points |
[in] | z0 | nominal point of application of the compact formula |
[in] | a | the A-coefficients for this scheme |
[in] | b | the B-coefficients for this scheme |
subroutine pmat2::ddfco2 | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(dp), dimension(na), intent(in) | za, | ||
real(dp), dimension(nb), intent(in) | zb, | ||
real(dp), intent(in) | z0, | ||
real(dp), dimension(na), intent(out) | a, | ||
real(dp), dimension(nb), intent(out) | b | ||
) |
Double precision version of DFCO2 to get 2nd-derivative coefficients.
[in] | na | number of 2nd-derivative (d) points in compact formula |
[in] | nb | number of source points (c) |
[in] | za | coordinates of 2nd-derivative points |
[in] | zb | coordinates of source points |
[in] | z0 | nominal coordinate of application |
[in] | a | coefficients A for derivative points |
[in] | b | coefficients B for source points |
subroutine, public pmat2::dfco | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(sp), dimension(na), intent(in) | za, | ||
real(sp), dimension(nb), intent(in) | zb, | ||
real(sp), intent(in) | z0, | ||
real(sp), dimension(na), intent(out) | a, | ||
real(sp), dimension(nb), intent(out) | b | ||
) |
Compute one row of the coefficients for either the compact differencing or quadrature scheme characterized by matrix equation of the form, A.d = B.c (*) In either case, d is the derivative (or density) of cumulative c.
[in] | na | number of d-points operated on by this row of the A of (*) |
[in] | nb | number of c-points operated on by this row of the B of (*) |
[in] | za | coordinates of d-points used in this row of (*) |
[in] | zb | coordinates of c-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[in] | A | the A-coefficients for this scheme |
[in] | B | the B-coefficients for this scheme |
subroutine, public pmat2::dfco2 | ( | integer(spi), intent(in) | na, |
integer(spi), intent(in) | nb, | ||
real(sp), dimension(na), intent(in) | za, | ||
real(sp), dimension(nb), intent(in) | zb, | ||
real(sp), intent(in) | z0, | ||
real(sp), dimension(na), intent(out) | a, | ||
real(sp), dimension(nb), intent(out) | b | ||
) |
Compute one row of the coefficients for either the compact second- differencing scheme characterized by matrix equation of the form, A.d = B.c (*) Where d is the second-derivative of c.
[in] | na | number of d-points operated on by this row of the A of (*) |
[in] | nb | number of c-points operated on by this row of the B of (*) |
[in] | za | coordinates of d-points used in this row of (*) |
[in] | zb | coordinates of c-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[in] | a | the NA coefficients A for this scheme |
[in] | b | the NB coefficients B for this scheme |
subroutine pmat2::dl1ubb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mbh1, | ||
integer(spi), intent(in) | mbh2, | ||
real(dp), dimension(m,-mah1:mah2), intent(inout) | a, | ||
real(dp), dimension(m,-mbh1:mbh2), intent(inout) | b | ||
) |
Double precision version of L1UBB.
[in] | m | Number of rows of A and B |
[in] | mah1 | left half-width of fortran array A |
[in] | mah2 | right half-width of fortran array A |
[in] | mbh1 | left half-width of fortran array B |
[in] | mbh2 | left half-width of fortran array B |
[in,out] | a | Input double precision band matrix A; output factors encoded as [D**-1 * L * D]+[U-I] |
[in,out] | b | Input double precision band matrix B; output [D**-1 B] |
subroutine pmat2::dl1ueb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mbh1, | ||
integer(spi), intent(in) | mbh2, | ||
real(dp), dimension(0:,-mah1:), intent(inout) | a, | ||
real(dp), dimension(:,-mbh1:), intent(inout) | b | ||
) |
Double precision version of L1UEB.
[in] | m | number of rows of band matrices A and B |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in] | mbh1 | number of subdiagonals of B |
[in] | mbh2 | number of superdiagonals of B |
[in,out] | a | Input matrix A; output encoded L, D, U, factors |
[in,out] | b | Input matrix B; output D**-1 * B |
subroutine pmat2::dldltb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
real(dp), dimension(m,-mah1:0), intent(inout) | a | ||
) |
[L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky).
[L] is lower triangular with unit main diagonal [D] is a diagonal matrix
[in] | m | size of symmetric matrix A |
[in] | mah1 | semi-bandwidth of matrix A |
[in,out] | a | input lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1] |
subroutine pmat2::dldub | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(dp), dimension(m,-mah1:mah2), intent(inout) | a | ||
) |
[L]*[D]*[U] factoring of double precision band-matrix.
[L] is lower triangular with unit main diagonal [D] is a diagonal matrix [U] is upper triangular with unit main diagonal
[in] | m | The number of rows of array A |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | a | input as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity. |
|
private |
Like udlbv, except assuming a is the ltdl decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy)
[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in,out] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
|
private |
[U]*[D]*[L] factoring of double precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal
[in] | m | number of rows of A |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in,out] | a | Input double precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I] |
Definition at line 703 of file pmat2.f90.
References pmat2::ldub::dldub().
|
private |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v.
Output vector is [U**-1]*[D**-1]*[L**-1]*v
[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in double precision |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::l1ubb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mbh1, | ||
integer(spi), intent(in) | mbh2, | ||
real(sp), dimension(m,-mah1:mah2), intent(inout) | a, | ||
real(sp), dimension(m,-mbh1:mbh2), intent(inout) | b | ||
) |
[L]*[D]*[U] factoring of band-matrix [A], modify [B] –> [D**-1]*[B] [L] lower triangular with unit main diagonal [D] diagonal matrix [U] upper triangular with unit main diagonal [B] associated band matrix with same number of rows as [A] lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B].
[in] | m | Number of rows of A and B |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in] | mbh1 | number of subdiagonals of B |
[in] | mbh2 | number of superdiagonals of B |
[in,out] | a | input as band matrix, output as lower and upper triangulars with 1s implicitly assumed to lie on the main diagonal. The product of these triangular matrices is [D**-1]*[A], where [D] is a diagonal matrix. |
[in,out] | b | Input single precision band matrix B; output [D**-1 B] |
subroutine, public pmat2::l1ueb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mbh1, | ||
integer(spi), intent(in) | mbh2, | ||
real(sp), dimension(0:m,-mah1:mah2), intent(inout) | a, | ||
real(sp), dimension(m,-mbh1:mbh2), intent(inout) | b | ||
) |
Form the [L]*[D]*[U] decomposition of asymmetric band-matrix [A] replace all but row zero of the lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B].
This is a special adaptation of L1UBB used to process quadrature weights for QEDBV etc in which the initial quadrature value is provided as input instead of being implicitly assumed zero (which is the case for QZDBV etc).
[in] | m | number of rows of B, one less than the rows of A (which has "row 0") |
[in] | mah1 | left half-width of fortran array A |
[in] | mah2 | right half-width of fortran array A |
[in] | mbh1 | left half-width of fortran array B |
[in] | mbh2 | right half-width of fortran array B |
[in,out] | a | input as band matrix, output as lower and upper triangulars with 1s implicitly assumed to lie on the main diagonal. The product of these triangular matrices is [D**-1]*[A], where [D] is a diagonal matrix. |
[in,out] | b | in as band matrix, out as same but premultiplied by diagonal [D**-1] |
subroutine, public pmat2::ldltb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
real(sp), dimension(m,-mah1:0), intent(inout) | a | ||
) |
[L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky).
[L] is lower triangular with unit main diagonal [D] is a diagonal matrix.
[in] | m | size of symmetric matrix A |
[in] | mah1 | semi-bandwidth of matrix A |
[in,out] | a | input lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1] |
subroutine, public pmat2::ldub | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m,-mah1:mah2), intent(inout) | a | ||
) |
[L]*[D]*[U] factoring of single precision band-matrix.
[L] is lower triangular with unit main diagonal [D] is a diagonal matrix [U] is upper triangular with unit main diagonal
[in] | m | The number of rows of array A |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | a | input as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity. |
subroutine, public pmat2::linbv | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m,-mah1:mah2), intent(inout) | a, | ||
real(sp), dimension(m), intent(inout) | v | ||
) |
Solve LINear system with square Banded-matrix and vector V.
[in] | m | order of matrix A |
[in] | mah1 | left half-bandwidth of A |
[in] | mah2 | right half-bandwidth of A |
[in,out] | a | system matrix on input, its [L]*[D**-1]*[U] factorization on exit |
[in,out] | v | vector of right-hand-sides on input, solution vector on exit |
subroutine, public pmat2::ltdlbv | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
real(sp), dimension(m,-mah1:0), intent(in) | a, | ||
real(sp), dimension(m), intent(inout) | v | ||
) |
Like udlbv, except assuming a is the ldlt decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy)
[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | a | encodes the L*D*L^T factorization of the linear-system matrix, as supplied by subroutine LDLTB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine pmat2::tavco | ( | real(dp), dimension(:), intent(in) | xa, |
real(dp), dimension(:), intent(in) | xb, | ||
real(dp), dimension(:), intent(out) | a, | ||
real(dp), dimension(:), intent(out) | b | ||
) |
Simplified computation of compact midpoint interpolation coefficients.
[in] | xa | coordinates of target points relative to point of application |
[in] | xb | coordinates of source points relative to point of application |
[out] | a | the coefficients A for this scheme |
[out] | b | the coefficients B for this scheme |
Definition at line 164 of file pmat2.f90.
References pmat2::avco::davco().
subroutine pmat2::tdfco | ( | real(dp), dimension(:), intent(in) | xa, |
real(dp), dimension(:), intent(in) | xb, | ||
real(dp), dimension(:), intent(out) | a, | ||
real(dp), dimension(:), intent(out) | b | ||
) |
Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa.
[in] | xa | coordinates, relative to point of application, of d values |
[in] | xb | coordinates, relatuve to point of application, of c values |
[in] | a | the coefficients, A, for this scheme |
[in] | b | the coefficients, B, for this scheme |
Definition at line 257 of file pmat2.f90.
References pmat2::dfco::ddfco().
subroutine pmat2::tdfco2 | ( | real(dp), dimension(:), intent(in) | xa, |
real(dp), dimension(:), intent(in) | xb, | ||
real(dp), dimension(:), intent(out) | a, | ||
real(dp), dimension(:), intent(out) | b | ||
) |
Simplified computation of compact 2nd-derivative coefficients.
[in] | xa | Relative coordinates of derivatives |
[in] | xb | Relative coordinates of source points |
[out] | a | coefficients A for the derivatives in compact scheme |
[out] | b | coefficients B for source values in the compact scheme |
Definition at line 349 of file pmat2.f90.
References pmat2::dfco2::ddfco2().
subroutine, public pmat2::u1lbv | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(m), intent(inout) | v | ||
) |
Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector.
[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::u1lbx | ( | integer(spi), intent(in) | mx, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | my, | ||
real(sp), dimension(mx,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(mx,my), intent(inout) | v | ||
) |
Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors.
[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::u1lby | ( | integer(spi), intent(in) | my, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mx, | ||
real(sp), dimension(my,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(mx,my), intent(inout) | v | ||
) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors.
[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::u1lvb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m), intent(inout) | v, | ||
real(sp), dimension(m,-mah1:mah2), intent(in) | a | ||
) |
Special Back-substitution step of linear inversion involving left-Vector and Banded matrix.
[in] | m | the number of rows assumed for A and columns for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | v | input as right-hand-side row-vector, output as solution vector |
[in] | a | encodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::u1lxb | ( | integer(spi), intent(in) | mx, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | my, | ||
real(sp), dimension(mx,my), intent(inout) | v, | ||
real(sp), dimension(mx,-mah1:mah2), intent(in) | a | ||
) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors.
[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::u1lyb | ( | integer(spi), intent(in) | my, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mx, | ||
real(sp), dimension(mx,my), intent(inout) | v, | ||
real(sp), dimension(my,-mah1:mah2), intent(in) | a | ||
) |
Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors.
[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::udlb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m,-mah1:mah2), intent(inout) | a | ||
) |
[U]*[D]*[L] factoring of single precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal
[in] | m | number of rows of A |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in,out] | a | Input single precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I] |
subroutine, public pmat2::udlbv | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(m), intent(inout) | v | ||
) |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v.
Output vector is [U**-1]*[D**-1]*[L**-1]*v
[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in single precision |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::udlbx | ( | integer(spi), intent(in) | mx, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | my, | ||
real(sp), dimension(mx,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(mx,my), intent(inout) | v | ||
) |
Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors.
[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::udlby | ( | integer(spi), intent(in) | my, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mx, | ||
real(sp), dimension(my,-mah1:mah2), intent(in) | a, | ||
real(sp), dimension(mx,my), intent(inout) | v | ||
) |
Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors.
[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::udlvb | ( | integer(spi), intent(in) | m, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m), intent(inout) | v, | ||
real(sp), dimension(m,-mah1:mah2), intent(in) | a | ||
) |
Back-substitution step of linear inversion involving row-Vector and Banded matrix.
[in] | m | the number of rows assumed for A and columns for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | v | input as right-hand-side row-vector, output as solution vector |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::udlxb | ( | integer(spi), intent(in) | mx, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | my, | ||
real(sp), dimension(mx,my), intent(inout) | v, | ||
real(sp), dimension(mx,-mah1:mah2), intent(in) | a | ||
) |
Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors.
[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::udlyb | ( | integer(spi), intent(in) | my, |
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
integer(spi), intent(in) | mx, | ||
real(sp), dimension(mx,my), intent(inout) | v, | ||
real(sp), dimension(my,-mah1:mah2), intent(in) | a | ||
) |
BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors.
[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::wrtb | ( | integer(spi), intent(in) | m1, |
integer(spi), intent(in) | m2, | ||
integer(spi), intent(in) | mah1, | ||
integer(spi), intent(in) | mah2, | ||
real(sp), dimension(m1,-mah1:mah2), intent(in) | a | ||
) |
Convenient routine for interactively writing out the real contents of a band matrix.
[in] | m1 | number of rows of full matrix |
[in] | m2 | number of columns of full matrix |
[in] | mah1 | number of sub-diagonals |
[in] | mah2 | number of super-diagonals |
[in] | a | contents of single precision real band matrix. |
|
private |