grid_tools  1.8.0
All Data Structures Namespaces Files Functions Variables Pages
pmat.f90 File Reference

Utility routines for various linear inversions and Cholesky. More...

Go to the source code of this file.

Data Types

interface  pmat::inv
 
interface  pmat::invl
 
interface  pmat::invu
 
interface  pmat::l1lm
 
interface  pmat::ldlm
 
interface  pmat::ldum
 
interface  pmat::swpvv
 
interface  pmat::udlmm
 

Functions/Subroutines

subroutine pmat::cinvmt (a)
 Invert complex matrix in place. More...
 
subroutine pmat::cinvmtf (a, ff)
 Invert a complex matrix in place, or flag if process fails. More...
 
subroutine pmat::cldum (a, ipiv, d)
 Perform L*D*U decomposition, with pivoting, of square matrix. More...
 
subroutine pmat::cldumf (a, ipiv, d, ff)
 Perform l-d-u decomposition of square matrix a in place with pivoting. More...
 
subroutine pmat::clinmmt (a, b)
 Invert complex linear system with multiple right-hand side vectors. More...
 
subroutine pmat::clinmmtf (a, b, ff)
 Invert linear system with multiple right-hand side vectors, or flag failure. More...
 
subroutine pmat::clinmvt (a, b)
 Invert linear system with single right-hand side vector. More...
 
subroutine pmat::clinmvtf (a, b, ff)
 Invert complex linear system with single right-hand side vector. More...
 
subroutine pmat::cswpvv (d, e)
 Swap a pair of complex vectors. More...
 
subroutine pmat::cudlmm (a, b, ipiv)
 Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 
subroutine pmat::cudlmv (a, b, ipiv)
 Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 
subroutine pmat::dinvl (a)
 Invert lower triangular matrix in place. More...
 
subroutine pmat::dinvmt (a)
 Invert double precision matrix in place. More...
 
subroutine pmat::dinvmtf (a, ff)
 Invert a double precision matrix in place, or flag if process fails. More...
 
subroutine pmat::dinvu (a)
 Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
 
subroutine pmat::dl1lm (a, b)
 Cholesky, M -> L*U, U(i,j)=L(j,i) More...
 
subroutine pmat::dl1lmf (a, b, ff)
 Cholesky, M -> L*U, U(i,j)=L(j,i) More...
 
subroutine pmat::dldlm (a, b, d)
 Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
 
subroutine pmat::dldlmf (a, b, d, ff)
 Modified Cholesky Q –> L*D*U, U(i,j)=L(j,i) More...
 
subroutine pmat::dldum (a, ipiv, d)
 Perform L*D*U decomposition, with pivoting, of square matrix. More...
 
subroutine pmat::dldumf (a, ipiv, d, ff)
 Perform l-d-u decomposition of square matrix a in place with pivoting. More...
 
subroutine pmat::dlinlv (a, u)
 Solve linear system involving lower triangular system matrix. More...
 
subroutine pmat::dlinmmt (a, b)
 Invert linear system with multiple right-hand side vectors. More...
 
subroutine pmat::dlinmmtf (a, b, ff)
 Invert linear system with multiple right-hand side vectors, or flag failure. More...
 
subroutine pmat::dlinmvt (a, b)
 Invert linear system with single right-hand side vector. More...
 
subroutine pmat::dlinmvtf (a, b, ff)
 Invert linear system with single right-hand side vector. More...
 
subroutine pmat::dlinuv (a, u)
 Solve linear system involving upper triangular system matrix. More...
 
subroutine pmat::dswpvv (d, e)
 Swap a pair of double precision vectors. More...
 
subroutine pmat::dudlmm (a, b, ipiv)
 Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 
subroutine pmat::dudlmv (a, b, ipiv)
 Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 
subroutine pmat::iinvf (imat, ff)
 Invert integer square matrix, imat, if possible, but flag ff=.true. More...
 
subroutine pmat::sinvl (a)
 Invert lower triangular matrix in place. More...
 
subroutine pmat::sinvmt (a)
 Invert single precision matrix in place. More...
 
subroutine pmat::sinvmtf (a, ff)
 Invert a single precision matrix in place, or flag if process fails. More...
 
subroutine pmat::sinvu (a)
 Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
 
subroutine pmat::sl1lm (a, b)
 Cholesky, M -> L*U, U(i,j)=L(j,i) More...
 
subroutine pmat::sl1lmf (a, b, ff)
 Cholesky, M -> L*U, U(i,j)=L(j,i) More...
 
subroutine pmat::sldlm (a, b, d)
 Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
 
subroutine pmat::sldlmf (a, b, d, ff)
 Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
 
subroutine pmat::sldum (a, ipiv, d)
 Perform L*D*U decomposition, with pivoting, of square matrix. More...
 
subroutine pmat::sldumf (a, ipiv, d, ff)
 Perform l-d-u decomposition of square matrix a in place with pivoting. More...
 
subroutine pmat::slinlv (a, u)
 Solve linear system involving lower triangular system matrix. More...
 
subroutine pmat::slinmmt (a, b)
 Invert linear system with multiple right-hand side vectors. More...
 
subroutine pmat::slinmmtf (a, b, ff)
 Invert linear system with multiple right-hand side vectors, or flag failure. More...
 
subroutine pmat::slinmvt (a, b)
 Invert linear system with single right-hand side vector. More...
 
subroutine pmat::slinmvtf (a, b, ff)
 Invert linear system with single right-hand side vector. More...
 
subroutine pmat::slinuv (a, u)
 Solve linear system involving upper triangular system matrix. More...
 
subroutine pmat::sswpvv (d, e)
 Swap a pair of single precision vectors. More...
 
subroutine pmat::sudlmm (a, b, ipiv)
 Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 
subroutine pmat::sudlmv (a, b, ipiv)
 Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
 

Detailed Description

Utility routines for various linear inversions and Cholesky.

Author
R. J. Purser, NOAA/NCEP/EMC, Tsukasa Fujita, JMA.

Definition in file pmat.f90.

Function/Subroutine Documentation

◆ cinvmt()

subroutine pmat::cinvmt ( complex(dpc), dimension(:,:), intent(inout)  a)
private

Invert complex matrix in place.

Parameters
[in,out]amatrix
Author
R. J. Purser

Definition at line 104 of file pmat.f90.

◆ cinvmtf()

subroutine pmat::cinvmtf ( complex(dpc), dimension(:,:), intent(inout)  a,
logical, intent(out)  ff 
)
private

Invert a complex matrix in place, or flag if process fails.

Parameters
[in,out]amatrix
[out]ffflag for error condition
Author
R. J. Purser

Definition at line 191 of file pmat.f90.

References pietc::c1.

◆ cldum()

subroutine pmat::cldum ( complex(dpc), dimension(:,:), intent(inout)  a,
integer(spi), dimension(:), intent(out)  ipiv,
complex(dpc), intent(out)  d 
)
private

Perform L*D*U decomposition, with pivoting, of square matrix.

Complex double precision version.

Parameters
[in,out]ainput square matrix, output L,D,U factors
[out]ddeterminant sign change indicator (+1 or -1)
[out]ipivvector of pivots
Author
R. J. Purser

Definition at line 509 of file pmat.f90.

◆ cldumf()

subroutine pmat::cldumf ( complex(dpc), dimension(:,:), intent(inout)  a,
integer(spi), dimension(:), intent(out)  ipiv,
complex(dpc), intent(out)  d,
logical, intent(out)  ff 
)

Perform l-d-u decomposition of square matrix a in place with pivoting.

Complex double precision version.

Parameters
[in,out]asquare matrix to be factorized
[out]ipivvector encoding the pivoting sequence
[out]dindicator for possible sign change of determinant
[out]fffailure flag, set to .true. when determinant of a vanishes.
Author
R. J. Purser

Definition at line 660 of file pmat.f90.

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

◆ clinmmt()

subroutine pmat::clinmmt ( complex(dpc), dimension(:,:), intent(inout)  a,
complex(dpc), dimension(:,:), intent(inout)  b 
)
private

Invert complex linear system with multiple right-hand side vectors.

Complex double precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
Author
R. J. Purser

Definition at line 256 of file pmat.f90.

◆ clinmmtf()

subroutine pmat::clinmmtf ( complex(dpc), dimension(:,:), intent(inout)  a,
complex(dpc), dimension(:,:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert linear system with multiple right-hand side vectors, or flag failure.

Complex double precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
[out]fffailure flag
Author
R. J. Purser

Definition at line 320 of file pmat.f90.

◆ clinmvt()

subroutine pmat::clinmvt ( complex(dpc), dimension(:,:), intent(inout)  a,
complex(dpc), dimension(:), intent(inout)  b 
)
private

Invert linear system with single right-hand side vector.

Complex double precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
Author
R. J. Purser

Definition at line 372 of file pmat.f90.

◆ clinmvtf()

subroutine pmat::clinmvtf ( complex(dpc), dimension(:,:), intent(inout)  a,
complex(dpc), dimension(:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert complex linear system with single right-hand side vector.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
[out]fffailure flag
Author
R. J. Purser

Definition at line 430 of file pmat.f90.

◆ cswpvv()

subroutine pmat::cswpvv ( complex(dpc), dimension(:), intent(inout)  d,
complex(dpc), dimension(:), intent(inout)  e 
)
private

Swap a pair of complex vectors.

Parameters
[in,out]dvector
[in,out]evector
Author
R. J. Purser

Definition at line 72 of file pmat.f90.

◆ cudlmm()

subroutine pmat::cudlmm ( complex(dpc), dimension(:,:), intent(in)  a,
complex(dpc), dimension(:,:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]asquare matrix to be factorized
[in,out]brt-hand-sides vectors on input, corresponding solutions on return
[in]ipivvector encoding the pivoting sequence
Author
R. J. Purser

Definition at line 798 of file pmat.f90.

References pietc::c1.

◆ cudlmv()

subroutine pmat::cudlmv ( complex(dpc), dimension(:,:), intent(in)  a,
complex(dpc), dimension(:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]asquare matrix to be factorized
[in,out]bright-hand side vector on input, corresponding solution on return
[in]ipivarray encoding the pivoting sequence
Author
R. J. Purser

Definition at line 893 of file pmat.f90.

References pietc::c1.

◆ dinvl()

subroutine pmat::dinvl ( real(dp), dimension(:,:), intent(inout)  a)

Invert lower triangular matrix in place.

Double precision.

Parameters
[in,out]alower triangular matrix.
Author
R. J. Purser

Definition at line 1154 of file pmat.f90.

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

◆ dinvmt()

subroutine pmat::dinvmt ( real(dp), dimension(:,:), intent(inout)  a)
private

Invert double precision matrix in place.

Parameters
[in,out]amatrix
Author
R. J. Purser

Definition at line 93 of file pmat.f90.

◆ dinvmtf()

subroutine pmat::dinvmtf ( real(dp), dimension(:,:), intent(inout)  a,
logical, intent(out)  ff 
)

Invert a double precision matrix in place, or flag if process fails.

Parameters
[in,out]amatrix
[out]ffflag for error condition
Author
R. J. Purser

Definition at line 154 of file pmat.f90.

◆ dinvu()

subroutine pmat::dinvu ( real(dp), dimension(:,:), intent(inout)  a)
private

Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

Double precision version.

Parameters
[in,out]aupper triangular matrix.
Author
R. J. Purser

Definition at line 1127 of file pmat.f90.

◆ dl1lm()

subroutine pmat::dl1lm ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:,:), intent(inout)  b 
)
private

Cholesky, M -> L*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]bCholesky factor matrix.
Author
R. J. Purser

Definition at line 934 of file pmat.f90.

◆ dl1lmf()

subroutine pmat::dl1lmf ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:,:), intent(inout)  b,
logical, intent(out)  ff 
)

Cholesky, M -> L*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]bCholesky factor matrix.
[out]fffailure flag
Author
R. J. Purser

Definition at line 982 of file pmat.f90.

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

◆ dldlm()

subroutine pmat::dldlm ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:,:), intent(inout)  b,
real(dp), dimension(:), intent(out)  d 
)
private

Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]boutput modified cholesky factor, L.
[out]ddiagonal matrix, D.
Author
R. J. Purser

Definition at line 1031 of file pmat.f90.

◆ dldlmf()

subroutine pmat::dldlmf ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:,:), intent(inout)  b,
real(dp), dimension(:), intent(out)  d,
logical, intent(out)  ff 
)

Modified Cholesky Q –> L*D*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]bmodified Cholesky factor, L.
[out]ddiagonal matrix, D.
[out]fferror flag
Author
R. J. Purser

Definition at line 1084 of file pmat.f90.

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

◆ dldum()

subroutine pmat::dldum ( real(dp), dimension(:,:), intent(inout)  a,
integer(spi), dimension(:), intent(out)  ipiv,
real(dp), intent(out)  d 
)
private

Perform L*D*U decomposition, with pivoting, of square matrix.

Double precision version.

Parameters
[in,out]ainput square matrix, output L,D,U factors
[out]ddeterminant sign change indicator (+1 or -1)
[out]ipivvector of pivots
Author
R. J. Purser

Definition at line 493 of file pmat.f90.

◆ dldumf()

subroutine pmat::dldumf ( real(dp), dimension(:,:), intent(inout)  a,
integer, dimension(:), intent(out)  ipiv,
real(dp), intent(out)  d,
logical(spi), intent(out)  ff 
)

Perform l-d-u decomposition of square matrix a in place with pivoting.

Double precision version.

Parameters
[in,out]asquare matrix to be factorized
[out]ipivvector encoding the pivoting sequence
[out]dindicator for possible sign change of determinant
[out]fffailure flag, set to .true. when determinant of a vanishes.
Author
R. J. Purser

Definition at line 593 of file pmat.f90.

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

◆ dlinlv()

subroutine pmat::dlinlv ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:), intent(inout)  u 
)
private

Solve linear system involving lower triangular system matrix.

Double precision version.

Parameters
[in]alower triangular matrix.
[in,out]uinput RHS vector, output solution vector.
Author
R. J. Purser

Definition at line 1189 of file pmat.f90.

◆ dlinmmt()

subroutine pmat::dlinmmt ( real(dp), dimension(:,:), intent(inout)  a,
real(dp), dimension(:,:), intent(inout)  b 
)
private

Invert linear system with multiple right-hand side vectors.

Double precision version

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
Author
R. J. Purser

Definition at line 243 of file pmat.f90.

◆ dlinmmtf()

subroutine pmat::dlinmmtf ( real(dp), dimension(:,:), intent(inout)  a,
real(dp), dimension(:,:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert linear system with multiple right-hand side vectors, or flag failure.

Double precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
[out]fffailure flag
Author
R. J. Purser

Definition at line 295 of file pmat.f90.

◆ dlinmvt()

subroutine pmat::dlinmvt ( real(dp), dimension(:,:), intent(inout)  a,
real(dp), dimension(:), intent(inout)  b 
)
private

Invert linear system with single right-hand side vector.

Double precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
Author
R. J. Purser

Definition at line 358 of file pmat.f90.

◆ dlinmvtf()

subroutine pmat::dlinmvtf ( real(dp), dimension(:,:), intent(inout)  a,
real(dp), dimension(:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert linear system with single right-hand side vector.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
[out]fffailure flag
Author
R. J. Purser

Definition at line 408 of file pmat.f90.

◆ dlinuv()

subroutine pmat::dlinuv ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:), intent(inout)  u 
)
private

Solve linear system involving upper triangular system matrix.

Double precision version.

Parameters
[in]aupper triangular matrix.
[in,out]uinput RHS vector, output solution vector.
Author
R. J. Purser

Definition at line 1219 of file pmat.f90.

◆ dswpvv()

subroutine pmat::dswpvv ( real(dp), dimension(:), intent(inout)  d,
real(dp), dimension(:), intent(inout)  e 
)
private

Swap a pair of double precision vectors.

Parameters
[in,out]dvector
[in,out]evector
Author
R. J. Purser

Definition at line 61 of file pmat.f90.

◆ dudlmm()

subroutine pmat::dudlmm ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:,:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]asquare matrix to be factorized
[in,out]brt-hand-sides vectors on input, corresponding solutions on return
[in]ipivvector encoding the pivoting sequence
Author
R. J. Purser

Definition at line 764 of file pmat.f90.

References pietc::u1.

◆ dudlmv()

subroutine pmat::dudlmv ( real(dp), dimension(:,:), intent(in)  a,
real(dp), dimension(:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]asquare matrix to be factorized
[in,out]bright-hand side vector on input, corresponding solution on return
[in]ipivarray encoding the pivoting sequence
Author
R. J. Purser

Definition at line 862 of file pmat.f90.

References pietc::u1.

◆ iinvf()

subroutine pmat::iinvf ( integer(spi), dimension(:,:), intent(inout)  imat,
logical, intent(out)  ff 
)
private

Invert integer square matrix, imat, if possible, but flag ff=.true.

if not possible. (Determinant of imat must be +1 or -1)

Parameters
[in,out]imatinteger square matrix
[out]fferror flag
Author
R. J. Purser

Definition at line 452 of file pmat.f90.

References pietc::t.

◆ sinvl()

subroutine pmat::sinvl ( real(sp), dimension(:,:), intent(inout)  a)
private

Invert lower triangular matrix in place.

Single precision.

Parameters
[in,out]alower triangular matrix.
Author
R. J. Purser

Definition at line 1136 of file pmat.f90.

◆ sinvmt()

subroutine pmat::sinvmt ( real(sp), dimension(:,:), intent(inout)  a)
private

Invert single precision matrix in place.

Parameters
[in,out]amatrix
Author
R. J. Purser

Definition at line 82 of file pmat.f90.

◆ sinvmtf()

subroutine pmat::sinvmtf ( real(sp), dimension(:,:), intent(inout)  a,
logical, intent(out)  ff 
)
private

Invert a single precision matrix in place, or flag if process fails.

Parameters
[in,out]amatrix
[out]ffflag for error condition
Author
R. J. Purser

Definition at line 116 of file pmat.f90.

◆ sinvu()

subroutine pmat::sinvu ( real(sp), dimension(:,:), intent(inout)  a)

Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

Single precision version.

Parameters
[in,out]aupper triangular matrix.
Author
R. J. Purser

Definition at line 1117 of file pmat.f90.

◆ sl1lm()

subroutine pmat::sl1lm ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:,:), intent(inout)  b 
)

Cholesky, M -> L*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]bCholesky factor matrix.
Author
R. J. Purser

Definition at line 921 of file pmat.f90.

◆ sl1lmf()

subroutine pmat::sl1lmf ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:,:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Cholesky, M -> L*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]bCholesky factor matrix.
[out]fffailure flag
Author
R. J. Purser

Definition at line 948 of file pmat.f90.

References pietc::f.

◆ sldlm()

subroutine pmat::sldlm ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:,:), intent(inout)  b,
real(sp), dimension(:), intent(out)  d 
)

Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix.
[in,out]boutput modified cholesky factor, L.
[out]ddiagonal matrix, D.
Author
R. J. Purser

Definition at line 1016 of file pmat.f90.

◆ sldlmf()

subroutine pmat::sldlmf ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:,:), intent(inout)  b,
real(sp), dimension(:), intent(out)  d,
logical, intent(out)  ff 
)
private

Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

Parameters
[in]asymmetric matrix
[in,out]bmodified cholesky factor, L.
[out]ddiagonal matrix, D.
[out]fferror flag
Author
R. J. Purser

Definition at line 1047 of file pmat.f90.

References pietc::f.

◆ sldum()

subroutine pmat::sldum ( real(sp), dimension(:,:), intent(inout)  a,
integer(spi), dimension(:), intent(out)  ipiv,
real(sp), intent(out)  d 
)
private

Perform L*D*U decomposition, with pivoting, of square matrix.

Single precision version.

Parameters
[in,out]ainput square matrix, output L,D,U factors
[out]ddeterminant sign change indicator (+1 or -1)
[out]ipivvector of pivots
Author
R. J. Purser

Definition at line 477 of file pmat.f90.

◆ sldumf()

subroutine pmat::sldumf ( real(sp), dimension(:,:), intent(inout)  a,
integer(spi), dimension(:), intent(out)  ipiv,
real(sp), intent(out)  d,
logical, intent(out)  ff 
)
private

Perform l-d-u decomposition of square matrix a in place with pivoting.

Single precision version.

Parameters
[in,out]asquare matrix to be factorized
[out]ipivvector encoding the pivoting sequence
[out]dindicator for possible sign change of determinant
[out]fffailure flag, set to .true. when determinant of a vanishes.
Author
R. J. Purser

Definition at line 526 of file pmat.f90.

References pietc::f, and pietc::t.

◆ slinlv()

subroutine pmat::slinlv ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:), intent(inout)  u 
)

Solve linear system involving lower triangular system matrix.

Single precision version.

Parameters
[in]alower triangular matrix.
[in,out]uinput RHS vector, output solution vector.
Author
R. J. Purser

Definition at line 1174 of file pmat.f90.

◆ slinmmt()

subroutine pmat::slinmmt ( real(sp), dimension(:,:), intent(inout)  a,
real(sp), dimension(:,:), intent(inout)  b 
)

Invert linear system with multiple right-hand side vectors.

Single precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
Author
R. J. Purser

Definition at line 230 of file pmat.f90.

◆ slinmmtf()

subroutine pmat::slinmmtf ( real(sp), dimension(:,:), intent(inout)  a,
real(sp), dimension(:,:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert linear system with multiple right-hand side vectors, or flag failure.

Single precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vectors, output solution vectors
[out]fffailure flag
Author
R. J. Purser

Definition at line 270 of file pmat.f90.

◆ slinmvt()

subroutine pmat::slinmvt ( real(sp), dimension(:,:), intent(inout)  a,
real(sp), dimension(:), intent(inout)  b 
)
private

Invert linear system with single right-hand side vector.

Single precision version.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
Author
R. J. Purser

Definition at line 344 of file pmat.f90.

◆ slinmvtf()

subroutine pmat::slinmvtf ( real(sp), dimension(:,:), intent(inout)  a,
real(sp), dimension(:), intent(inout)  b,
logical, intent(out)  ff 
)
private

Invert linear system with single right-hand side vector.

Parameters
[in,out]aInvertible system matrix, destroyed on output
[in,out]binput RHS vector, output solution vector
[out]fffailure flag
Author
R. J. Purser

Definition at line 386 of file pmat.f90.

◆ slinuv()

subroutine pmat::slinuv ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:), intent(inout)  u 
)
private

Solve linear system involving upper triangular system matrix.

Single precision version.

Parameters
[in]aupper triangular matrix.
[in,out]uinput RHS vector, output solution vector.
Author
R. J. Purser

Definition at line 1204 of file pmat.f90.

◆ sswpvv()

subroutine pmat::sswpvv ( real(sp), dimension(:), intent(inout)  d,
real(sp), dimension(:), intent(inout)  e 
)
private

Swap a pair of single precision vectors.

Parameters
[in,out]dvector
[in,out]evector
Author
R. J. Purser

Definition at line 50 of file pmat.f90.

◆ sudlmm()

subroutine pmat::sudlmm ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:,:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]aL-D-U factorization of linear system matrux
[in,out]brt-hand-sides vectors on input, corresponding solutions on return
[in]ipivvector encoding the pivoting sequence
Author
R. J. Purser

Definition at line 730 of file pmat.f90.

◆ sudlmv()

subroutine pmat::sudlmv ( real(sp), dimension(:,:), intent(in)  a,
real(sp), dimension(:), intent(inout)  b,
integer(spi), dimension(:), intent(in)  ipiv 
)

Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

Parameters
[in]aL-D-U factorization of linear system matrix
[in,out]bright-hand-side vector on input, corresponding solution on return
[in]ipivvector encoding the pivoting sequence
Author
R. J. Purser

Definition at line 831 of file pmat.f90.