grid_tools  1.13.0
pmat2 Module Reference

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
 

Functions/Subroutines

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 (m1, m2, mah1, mah2, a)
 Clip (set to zero) the unused values in a banded matrix representation. 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 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...
 
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...
 

Variables

real(dp), parameter zero =0
 Double precision real zero. More...
 

Detailed Description

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:

  • avco() Averaging, or interpolating;
  • dfco() Differentiating (once);
  • dfco2() Differentiating (twice).

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.

Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994/1999

Function/Subroutine Documentation

◆ avco()

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.

Parameters
[in]nanumber of t-points operated on by this row of the A of (*)
[in]nbnumber of s-points operated on by this row of the B of (*)
[in]zacoordinates of t-points used in this row of (*)
[in]zbcoordinates of s-points used in this row of (*)
[in]z0nominal point of application of this row of (*)
[out]athe NA coefficients A for this scheme
[out]bthe NB coefficients B for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 100 of file pmat2.f90.

References pietc::u0, and pietc::u1.

◆ cad1b()

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.

Parameters
[in]m1Size of implied full matrix
[in]mah1Left semi-bandwidths (subdiagonals) of A.
[in]mah2Right semi-bandwidths (superdiagonals) of A.
[in]mirror22*location of symmetry axis relative to end-1 operand element.
[in,out]aInput 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.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 426 of file pmat2.f90.

◆ cad2b()

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.

Parameters
[in]m1Number of rows of full matrix A
[in]m2Number of columns of implied full matrix A
[in]mah1Left semi-bandwidths (subdiagonals) of A.
[in]mah2Right semi-bandwidths (superdiagonals) of A.
[in]mirror22*location of symmetry axis relative to end-2 operand element.
[in,out]aInput operator, output as symmetrized and clipped at end-2.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 477 of file pmat2.f90.

◆ clib()

pure subroutine pmat2::clib ( 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(inout)  a 
)
private

Clip (set to zero) the unused values in a banded matrix representation.

Parameters
[in]m1number of matrix rows
[in]m2number of matrix columns
[in]mah1number of subdiagonals
[in]mah2number of superdiagonals
[in,out]asingle precision matrix elements, stored compactly as rows
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 370 of file pmat2.f90.

◆ clib_c()

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.

Parameters
[in]m1number of matrix rows
[in]m2number of matrix columns
[in]mah1number of subdiagonals
[in]mah2number of superdiagonals
[in]acomplex matrix elements, stored compactly as rows
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 406 of file pmat2.f90.

References pietc::c0.

◆ clib_d()

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.

Parameters
[in]m1number of matrix rows
[in]m2number of matrix columns
[in]mah1number of subdiagonals
[in]mah2number of superdiagonals
[in]adouble precision matrix elements, stored compactly as rows
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 388 of file pmat2.f90.

References pietc::u0.

◆ csb1b()

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.

Parameters
[in]m1Size of implied full matrix
[in]mah1Left semi-bandwidths (subdiagonals) of A.
[in]mah2Right semi-bandwidths (superdiagonals) of A.
[in]mirror22*location of symmetry axis relative to end-1 operand element.
[in,out]aInput operator, output as clipped antisymmetric at end-1.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 451 of file pmat2.f90.

◆ csb2b()

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.

Parameters
[in]m1Number of rows of matrix A
[in]m2Number of columns of matrix A
[in]mah1Left semi-bandwidths (subdiagonals) of A.
[in]mah2Right semi-bandwidths (superdiagonals) of A.
[in]mirror22*location of symmetry axis relative to end-2 operand element.
[in,out]aInput operator, output as antisymmetrized and clipped at end-2.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 504 of file pmat2.f90.

◆ davco()

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.

Parameters
[in]nanumber of target points involved in formula
[in]nbnumber of source points involved in formula
[in]zacoordinates of target points
[in]zbcoordinates of source points
[in]z0nominal point of application of compact interpolation formula
[out]athe coefficients A for this scheme
[out]bthe coefficients B for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 134 of file pmat2.f90.

References pietc::u0, and pietc::u1.

Referenced by tavco().

◆ ddfco()

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.

Parameters
[in]nanumber of A coefficients multiplying derivatives
[in]nbnumber of B coefficients multiplying cumulatives
[in]zacoordinates of the density (d) points
[in]zbcoordinates of the cumulative (c) points
[in]z0nominal point of application of the compact formula
[in]athe A-coefficients for this scheme
[in]bthe B-coefficients for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 225 of file pmat2.f90.

References pietc::u0, and pietc::u1.

Referenced by tdfco().

◆ ddfco2()

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.

Parameters
[in]nanumber of 2nd-derivative (d) points in compact formula
[in]nbnumber of source points (c)
[in]zacoordinates of 2nd-derivative points
[in]zbcoordinates of source points
[in]z0nominal coordinate of application
[in]acoefficients A for derivative points
[in]bcoefficients B for source points
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 318 of file pmat2.f90.

References pietc::u0, and pietc::u1.

Referenced by tdfco2().

◆ dfco()

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.

Parameters
[in]nanumber of d-points operated on by this row of the A of (*)
[in]nbnumber of c-points operated on by this row of the B of (*)
[in]zacoordinates of d-points used in this row of (*)
[in]zbcoordinates of c-points used in this row of (*)
[in]z0nominal point of application of this row of (*)
[in]Athe A-coefficients for this scheme
[in]Bthe B-coefficients for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 190 of file pmat2.f90.

◆ dfco2()

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.

Parameters
[in]nanumber of d-points operated on by this row of the A of (*)
[in]nbnumber of c-points operated on by this row of the B of (*)
[in]zacoordinates of d-points used in this row of (*)
[in]zbcoordinates of c-points used in this row of (*)
[in]z0nominal point of application of this row of (*)
[in]athe NA coefficients A for this scheme
[in]bthe NB coefficients B for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 283 of file pmat2.f90.

◆ dl1ubb()

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.

Parameters
[in]mNumber of rows of A and B
[in]mah1left half-width of fortran array A
[in]mah2right half-width of fortran array A
[in]mbh1left half-width of fortran array B
[in]mbh2left half-width of fortran array B
[in,out]aInput double precision band matrix A; output factors encoded as [D**-1 * L * D]+[U-I]
[in,out]bInput double precision band matrix B; output [D**-1 B]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 771 of file pmat2.f90.

References pietc::u0, and pietc::u1.

◆ dl1ueb()

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.

Parameters
[in]mnumber of rows of band matrices A and B
[in]mah1number of subdiagonals of A
[in]mah2number of superdiagonals of A
[in]mbh1number of subdiagonals of B
[in]mbh2number of superdiagonals of B
[in,out]aInput matrix A; output encoded L, D, U, factors
[in,out]bInput matrix B; output D**-1 * B
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 855 of file pmat2.f90.

References pietc::u0, and pietc::u1.

◆ dldltb()

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

Parameters
[in]msize of symmetric matrix A
[in]mah1semi-bandwidth of matrix A
[in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 645 of file pmat2.f90.

References pietc::u0, and pietc::u1.

◆ dldub()

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

Parameters
[in]mThe number of rows of array A
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 571 of file pmat2.f90.

References pietc::u0, and pietc::u1.

Referenced by dudlb().

◆ dltdlbv()

subroutine pmat2::dltdlbv ( integer(spi), intent(in)  m,
integer(spi), intent(in)  mah1,
real(dp), dimension(m,-mah1:0), intent(in)  a,
real(dp), dimension(m), intent(inout)  v 
)
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)

Parameters
[in]mthe number of rows assumed for A and for V
[in]mah1the left half-bandwidth of fortran array A
[in,out]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
[in,out]vinput as right-hand-side vector, output as solution vector
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 980 of file pmat2.f90.

◆ dudlb()

subroutine pmat2::dudlb ( integer(spi), intent(in)  m,
integer(spi), intent(in)  mah1,
integer(spi), intent(in)  mah2,
real(dp), dimension(m,-mah1:mah2), intent(inout)  a 
)
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

Parameters
[in]mnumber of rows of A
[in]mah1number of subdiagonals of A
[in]mah2number of superdiagonals of A
[in,out]aInput double precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 704 of file pmat2.f90.

References dldub().

◆ dudlbv()

subroutine pmat2::dudlbv ( integer(spi), intent(in)  m,
integer(spi), intent(in)  mah1,
integer(spi), intent(in)  mah2,
real(dp), dimension(m,-mah1:mah2), intent(in)  a,
real(dp), dimension(m), intent(inout)  v 
)
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

Parameters
[in]mthe number of rows assumed for A and for V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in double precision
[in,out]vinput as right-hand-side vector, output as solution vector
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 921 of file pmat2.f90.

◆ l1ubb()

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].

Parameters
[in]mNumber of rows of A and B
[in]mah1number of subdiagonals of A
[in]mah2number of superdiagonals of A
[in]mbh1number of subdiagonals of B
[in]mbh2number of superdiagonals of B
[in,out]ainput 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]bInput single precision band matrix B; output [D**-1 B]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 733 of file pmat2.f90.

◆ l1ueb()

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).

Parameters
[in]mnumber of rows of B, one less than the rows of A (which has "row 0")
[in]mah1left half-width of fortran array A
[in]mah2right half-width of fortran array A
[in]mbh1left half-width of fortran array B
[in]mbh2right half-width of fortran array B
[in,out]ainput 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]bin as band matrix, out as same but premultiplied by diagonal [D**-1]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1998

Definition at line 818 of file pmat2.f90.

◆ ldltb()

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.

Parameters
[in]msize of symmetric matrix A
[in]mah1semi-bandwidth of matrix A
[in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 609 of file pmat2.f90.

◆ ldub()

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

Parameters
[in]mThe number of rows of array A
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 532 of file pmat2.f90.

◆ linbv()

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.

Parameters
[in]morder of matrix A
[in]mah1left half-bandwidth of A
[in]mah2right half-bandwidth of A
[in,out]asystem matrix on input, its [L]*[D**-1]*[U] factorization on exit
[in,out]vvector of right-hand-sides on input, solution vector on exit
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1323 of file pmat2.f90.

◆ ltdlbv()

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)

Parameters
[in]mthe number of rows assumed for A and for V
[in]mah1the left half-bandwidth of fortran array A
[in]aencodes the L*D*L^T factorization of the linear-system matrix, as supplied by subroutine LDLTB
[in,out]vinput as right-hand-side vector, output as solution vector
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 950 of file pmat2.f90.

◆ tavco()

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.

Parameters
[in]xacoordinates of target points relative to point of application
[in]xbcoordinates of source points relative to point of application
[out]athe coefficients A for this scheme
[out]bthe coefficients B for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 165 of file pmat2.f90.

References davco(), and zero.

◆ tdfco()

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.

Parameters
[in]xacoordinates, relative to point of application, of d values
[in]xbcoordinates, relatuve to point of application, of c values
[in]athe coefficients, A, for this scheme
[in]bthe coefficients, B, for this scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 258 of file pmat2.f90.

References ddfco(), and zero.

◆ tdfco2()

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.

Parameters
[in]xaRelative coordinates of derivatives
[in]xbRelative coordinates of source points
[out]acoefficients A for the derivatives in compact scheme
[out]bcoefficients B for source values in the compact scheme
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 350 of file pmat2.f90.

References ddfco2(), and zero.

◆ u1lbv()

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.

Parameters
[in]mthe number of rows assumed for A and for V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
[in,out]vinput as right-hand-side vector, output as solution vector
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1155 of file pmat2.f90.

◆ u1lbx()

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.

Parameters
[in]mxthe number of rows assumed for A and length of X-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mynumber of parallel X-vectors inverted
[in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
[in,out]vinput as right-hand-side vectors, output as solution vectors
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1186 of file pmat2.f90.

◆ u1lby()

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.

Parameters
[in]mythe number of rows assumed for A and length of Y-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mxnumber of parallel Y-vectors inverted
[in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
[in,out]vinput as right-hand-side vectors, output as solution vectors
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1214 of file pmat2.f90.

◆ u1lvb()

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.

Parameters
[in]mthe number of rows assumed for A and columns for V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in,out]vinput as right-hand-side row-vector, output as solution vector
[in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1240 of file pmat2.f90.

◆ u1lxb()

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.

Parameters
[in]mxthe number of rows assumed for A and length of X-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mynumber of parallel X-vectors inverted
[in]vinput as right-hand-side vectors, output as solution vectors
[in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1271 of file pmat2.f90.

◆ u1lyb()

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.

Parameters
[in]mythe number of rows assumed for A and length of Y-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mxnumber of parallel Y-vectors inverted
[in,out]vinput as right-hand-side vectors, output as solution vectors
[in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1996

Definition at line 1299 of file pmat2.f90.

◆ udlb()

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

Parameters
[in]mnumber of rows of A
[in]mah1number of subdiagonals of A
[in]mah2number of superdiagonals of A
[in,out]aInput single precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 683 of file pmat2.f90.

◆ udlbv()

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

Parameters
[in]mthe number of rows assumed for A and for V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in single precision
[in,out]vinput as right-hand-side vector, output as solution vector
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 892 of file pmat2.f90.

◆ udlbx()

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.

Parameters
[in]mxthe number of rows assumed for A and length of X-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mynumber of parallel X-vectors inverted
[in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
[in,out]vinput as right-hand-side vectors, output as solution vectors
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1011 of file pmat2.f90.

◆ udlby()

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.

Parameters
[in]mythe number of rows assumed for A and length of Y-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mxnumber of parallel Y-vectors inverted
[in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
[in,out]vinput as right-hand-side vectors, output as solution vectors
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1040 of file pmat2.f90.

◆ udlvb()

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.

Parameters
[in]mthe number of rows assumed for A and columns for V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in,out]vinput as right-hand-side row-vector, output as solution vector
[in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1067 of file pmat2.f90.

◆ udlxb()

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.

Parameters
[in]mxthe number of rows assumed for A and length of X-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mynumber of parallel X-vectors inverted
[in,out]vinput as right-hand-side vectors, output as solution vectors
[in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1099 of file pmat2.f90.

◆ udlyb()

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.

Parameters
[in]mythe number of rows assumed for A and length of Y-vectors stored in V
[in]mah1the left half-bandwidth of fortran array A
[in]mah2the right half-bandwidth of fortran array A
[in]mxnumber of parallel Y-vectors inverted
[in,out]vinput as right-hand-side vectors, output as solution vectors
[in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1994

Definition at line 1128 of file pmat2.f90.

◆ wrtb()

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.

Parameters
[in]m1number of rows of full matrix
[in]m2number of columns of full matrix
[in]mah1number of sub-diagonals
[in]mah2number of super-diagonals
[in]acontents of single precision real band matrix.
Author
R. J. Purser, Tsukasa Fujita (JMA)
Date
1999

Definition at line 1341 of file pmat2.f90.

Variable Documentation

◆ zero

real(dp), parameter pmat2::zero =0
private

Double precision real zero.

Definition at line 54 of file pmat2.f90.

Referenced by tavco(), tdfco(), and tdfco2().