Millepede-II  V04-00-00_preview
 All Classes Files Functions Variables Enumerator Pages
Functions/Subroutines
mpnum.f90 File Reference

General linear algebra routines. More...

Go to the source code of this file.

Functions/Subroutines

subroutine sqminv (v, b, n, nrank, diag, next)
 Matrix inversion and solution.
subroutine sqminl (v, b, n, nrank, diag, next)
 Matrix inversion for LARGE matrices.
subroutine devrot (n, diag, u, v, work, iwork)
 Diagonalization.
subroutine devsig (n, diag, u, b, coef)
 Calculate significances.
subroutine devsol (n, diag, u, b, x, work)
 Solution by diagonalization.
subroutine devinv (n, diag, u, v)
 Inversion by diagonalization. Get inverse matrix V from DIAG and U.
subroutine choldc (g, n)
 Cholesky decomposition.
subroutine cholsl (g, x, n)
 Solution after decomposition.
subroutine cholin (g, v, n)
 Inversion after decomposition.
subroutine vabdec (n, val, ilptr)
 Variable band matrix decomposition.
subroutine vabmmm (n, val, ilptr)
 Variable band matrix print minimum and maximum.
subroutine vabslv (n, val, ilptr, x)
 Variable band matrix solution.
DOUBLE PRECISION function dbdot (n, dx, dy)
 Dot product.
subroutine dbaxpy (n, da, dx, dy)
 Multiply, addition.
subroutine dbsvx (v, a, b, n)
 Product symmetric matrix, vector.
subroutine dbsvxl (v, a, b, n)
 Product LARGE symmetric matrix, vector.
subroutine dbgax (a, x, y, m, n)
 Multiply general M-by-N matrix A and N-vector X.
subroutine dbavat (v, a, w, n, ms)
 A V AT product (similarity).
subroutine dbmprv (lun, x, v, n)
 Print symmetric matrix, vector.
subroutine dbprv (lun, v, n)
 Print symmetric matrix.
subroutine heapf (a, n)
 Heap sort direct (real).
subroutine sort1k (a, n)
 Quick sort 1.
subroutine sort2k (a, n)
 Quick sort 2.
REAL function chindl (n, nd)
 Chi2/ndf cuts.
subroutine lltdec (n, c, india, nrkd)
 LLT decomposition.
subroutine lltfwd (n, c, india, x)
 Forward solution.
subroutine lltbwd (n, c, india, x)
 Backward solution.
subroutine equdec (n, m, c, india, nrkd, nrkd2)
 Decomposition of equilibrium systems.
subroutine equslv (n, m, c, india, x)
 Solution of equilibrium systems (after decomposition).
subroutine precon (p, n, c, cu, a, s)
 Constrained preconditioner, decomposition.
subroutine presol (p, n, cu, a, s, x, y)
 Constrained preconditioner, solution.
subroutine sqmibb (v, b, n, nbdr, nbnd, inv, nrank, vbnd, vbdr, aux, vbk, vzru, scdiag, scflag)
 Bordered band matrix.

Detailed Description

General linear algebra routines.

***** Collection of utility routines from V. Blobel *****

V. Blobel, Univ. Hamburg
Numerical subprograms used in MP-II: matrix equations,
   and matrix products, double precision

Solution by inversion
   SQMINV
   SQMINL  for LARGE matrix, use OpenMP (CHK)

Solution by diagonalization
   DEVROT, DEVPRT, DEFSOL,DEVINV

Solution by Cholesky decomposition of symmetric matrix
   CHOLDC

Solution by Cholesky decomposition of variable-band matrix
   VABDEC

Solution by Cholesky decomposition of bordered band matrix
   SQMIBB  (CHK)

Matrix/vector products
   DBDOT     dot vector product
   DBAXPY    multiplication and addition
   DBSVX     symmetric matrix vector
   DBSVX     LARGE symmetric matrix vector (CHK)
   DBGAX     general matrix vector
   DBAVAT    AVAT product
   DBMPRV    print parameter and matrix
   DBPRV     print matrix  (CHK)

Chi^2 cut values
   CHINDL

Accurate summation (moved to pede.f90)
   ADDSUM

Sorting
   HEAPF    heap sort reals direct
   SORT1K   sort 1-dim key-array (CHK)
   SORT2K   sort 2-dim key-array

Definition in file mpnum.f90.


Function/Subroutine Documentation

REAL function chindl ( integer, intent(in)  n,
integer, intent(in)  nd 
)

Chi2/ndf cuts.

Return limit in Chi^2/ndf for N sigmas (N=1, 2 or 3).

Parameters:
[in]nnumber of sigmas
[in]ndndf
Returns:
Chi2/ndf cut value

Definition at line 1641 of file mpnum.f90.

Referenced by loop2(), and loopbf().

subroutine choldc ( double precision, dimension(*), intent(inout)  g,
integer, intent(in)  n 
)

Cholesky decomposition.

Cholesky decomposition of the matrix G: G = L D L^T

  • G = symmetric matrix, in symmetric storage mode
  • L = unit triangular matrix (1's on diagonal)
  • D = diagonal matrix (elements store on diagonal of L)

The sqrts of the usual Cholesky decomposition are avoided by D. Matrices L and D are stored in the place of matrix G; after the decomposition, the solution of matrix equations and the computation of the inverse of the (original) matrix G are done by CHOLSL and CHOLIN.

Parameters:
[in,out]gsymmetric matrix, replaced by D,L
[in]nsize of matrix

Definition at line 719 of file mpnum.f90.

subroutine cholin ( double precision, dimension(*), intent(in)  g,
double precision, dimension(*), intent(out)  v,
integer, intent(in)  n 
)

Inversion after decomposition.

The inverse of the (original) matrix G is computed and stored in symmetric storage mode in matrix V. Arrays G and V must be different arrays.

Parameters:
[in]gdecomposed symmetric matrix
[in,out]vinverse matrix
[in]nsize of matrix

Definition at line 807 of file mpnum.f90.

subroutine cholsl ( double precision, dimension(*), intent(in)  g,
double precision, dimension(n), intent(inout)  x,
integer, intent(in)  n 
)

Solution after decomposition.

The matrix equation G X = B is solved for X, where the matrix G in the argument is already decomposed by CHOLDC. The vector B is called X in the argument and the content is replaced by the resulting vector X.

Parameters:
[in]gdecomposed symmetric matrix
[in,out]xr.h.s vector B, replaced by solution vector X
[in]nsize of matrix

Definition at line 763 of file mpnum.f90.

subroutine dbavat ( double precision, dimension(*), intent(in)  v,
double precision, dimension(*), intent(in)  a,
double precision, dimension(*), intent(inout)  w,
integer, intent(in)  n,
integer, intent(in)  ms 
)

A V AT product (similarity).

Multiply symmetric N-by-N matrix from the left with general M-by-N matrix and from the right with the transposed of the same general matrix to form symmetric M-by-M matrix (used for error propagation).

Parameters:
[in]Vsymmetric N-by-N matrix
[in]Ageneral M-by-N matrix
[in,out]Wsymmetric M-by-M matrix
[in]MSrows of A (-rows: don't reset W)
[in]Ncolumns of A

Definition at line 1234 of file mpnum.f90.

Referenced by loopbf().

subroutine dbaxpy ( integer, intent(in)  n,
double precision, intent(in)  da,
double precision, dimension(*), intent(in)  dx,
double precision, dimension(*), intent(inout)  dy 
)

Multiply, addition.

Constant times vector added to a vector: DY:=DY+DA*DX

Parameters:
[in]nvector size
[in]dxvector
[in,out]dyvector
[in]dascalar

Definition at line 1087 of file mpnum.f90.

DOUBLE PRECISION function dbdot ( integer, intent(in)  n,
double precision, dimension(*), intent(in)  dx,
double precision, dimension(*), intent(in)  dy 
)

Dot product.

Parameters:
[in]nvector size
[in]dxvector
[in]dyvector
Returns:
dot product dx*dy

Definition at line 1058 of file mpnum.f90.

Referenced by xloopn().

subroutine dbgax ( double precision, dimension(*), intent(in)  a,
double precision, dimension(*), intent(in)  x,
double precision, dimension(*), intent(out)  y,
integer, intent(in)  m,
integer, intent(in)  n 
)

Multiply general M-by-N matrix A and N-vector X.

Parameters:
[in]Ageneral M-by-N matrix (A11 A12 ... A1N A21 A22 ...)
[in]XN vector
[out]Y= M vector
[in]Mrows of A
[in]Ncolumns of A

Definition at line 1199 of file mpnum.f90.

subroutine dbmprv ( integer, intent(in)  lun,
double precision, dimension(*), intent(in)  x,
double precision, dimension(*), intent(in)  v,
integer, intent(in)  n 
)

Print symmetric matrix, vector.

Prints the n-vector X and the symmetric N-by-N covariance matrix V, the latter as a correlation matrix.

Parameters:
[in]lununit number
[in]xvector
[in]vsymmetric matrix
[in]nsize of matrix, vector

Definition at line 1304 of file mpnum.f90.

subroutine dbprv ( integer, intent(in)  lun,
double precision, dimension(*), intent(in)  v,
integer, intent(in)  n 
)

Print symmetric matrix.

Prints the symmetric N-by-N matrix V.

Parameters:
[in]lununit number
[in]vsymmetric matrix
[in]nsize of matrix,

Definition at line 1377 of file mpnum.f90.

subroutine dbsvx ( double precision, dimension(*), intent(in)  v,
double precision, dimension(*), intent(in)  a,
double precision, dimension(*), intent(out)  b,
integer, intent(in)  n 
)

Product symmetric matrix, vector.

Multiply symmetric N-by-N matrix and N-vector.

Parameters:
[in]vsymmetric matrix
[in]avector
[out]bvector B = V * A
[in]nsize of matrix

Definition at line 1116 of file mpnum.f90.

Referenced by feasib().

subroutine dbsvxl ( double precision, dimension(*), intent(in)  v,
double precision, dimension(*), intent(in)  a,
double precision, dimension(*), intent(out)  b,
integer, intent(in)  n 
)

Product LARGE symmetric matrix, vector.

Multiply LARGE symmetric N-by-N matrix and N-vector:

Parameters:
[in]vsymmetric matrix
[in]avector
[out]bproduct vector B = V * A
[in]nsize of matrix

Definition at line 1158 of file mpnum.f90.

Referenced by minver().

subroutine devinv ( integer, intent(in)  n,
double precision, dimension(n), intent(in)  diag,
double precision, dimension(n,n), intent(in)  u,
double precision, dimension(*), intent(out)  v 
)

Inversion by diagonalization. Get inverse matrix V from DIAG and U.

Parameters:
[in]Nsize of matrix
[in]DIAGdiagonal elements
[in]Utransformation matrix
[out]Vsmmmetric matrix

Definition at line 671 of file mpnum.f90.

Referenced by zdiags().

subroutine devrot ( integer, intent(in)  n,
double precision, dimension(n), intent(out)  diag,
double precision, dimension(n,n), intent(out)  u,
double precision, dimension(*), intent(in)  v,
double precision, dimension(n), intent(out)  work,
integer, dimension(n), intent(out)  iwork 
)

Diagonalization.

Determination of eigenvalues and eigenvectors of symmetric matrix V by Householder method

Parameters:
[in]nsize of matrix
[out]diagdiagonal elements
[out]utransformation matrix
[in]vsymmetric matrix, unchanged
[out]workwork array
[out]iworkwork array

Definition at line 351 of file mpnum.f90.

Referenced by mdiags().

subroutine devsig ( integer, intent(in)  n,
double precision, dimension(n), intent(in)  diag,
double precision, dimension(n,n), intent(in)  u,
double precision, dimension(n), intent(in)  b,
double precision, dimension(n), intent(out)  coef 
)

Calculate significances.

Definition at line 590 of file mpnum.f90.

Referenced by mdiags().

subroutine devsol ( integer, intent(in)  n,
double precision, dimension(n), intent(in)  diag,
double precision, dimension(n,n), intent(in)  u,
double precision, dimension(n), intent(in)  b,
double precision, dimension(n), intent(out)  x,
double precision, dimension(n), intent(out)  work 
)

Solution by diagonalization.

Solution of matrix equation V * X = B after diagonalization of V.

Parameters:
[in]Nsize of matrix
[in]DIAGdiagonal elements
[in]Utransformation matrix
[in]Br.h.s. of matrix equation (unchanged)
[out]Xsolution vector
[out]WORKwork array

Definition at line 626 of file mpnum.f90.

Referenced by mdiags().

subroutine equdec ( integer, intent(in)  n,
integer, intent(in)  m,
double precision, dimension(*), intent(inout)  c,
integer, dimension(n+m), intent(inout)  india,
integer, intent(out)  nrkd,
integer, intent(out)  nrkd2 
)

Decomposition of equilibrium systems.

N x N matrix C:     starting with sym.pos.def. matrix (N)
length  of array C: INDIA(N) + N*M + (M*M+M)/2
Content of array C: band matrix, as described by INDIA(1)...INDIA(N)
       followed by: NxM elements of constraint matrix A
       followed by: (M*M+M)/2 unused elements
                    INDIA(N+1)...INDIA(N+M) defined internally
Parameters:
[in]nsize of symmetric matrix
[in]mnumber of constrains
[in,out]ccombined variable-band + constraints matrix, replaced by decomposition
[in,out]indiapointer array
[out]nrkdremoved components
[out]nrkd2removed components

Definition at line 1851 of file mpnum.f90.

References lltdec(), and lltfwd().

Referenced by mminrs().

subroutine equslv ( integer, intent(in)  n,
integer, intent(in)  m,
double precision, dimension(*), intent(in)  c,
integer, dimension(n+m), intent(in)  india,
double precision, dimension(n+m), intent(inout)  x 
)

Solution of equilibrium systems (after decomposition).

N x N matrix C:     starting with sym.pos.def. matrix (N)
length  of array C: INDIA(N) + N*M + (M*M+M)/2
Content of array C: band matrix, as described by INDIA(1)...INDIA(N)
       followed by: NxM elements of constraint matrix A
       followed by: (M*M+M)/2 unused elements
                    INDIA(N+1)...INDIA(N+M) defined internally
Parameters:
[in]nsize of symmetric matrix
[in]mnumber of constrains
[in]cdecomposed combined variable-band + constraints matrix
[in]indiapointer array
[in,out]xr.h.s vector B, replaced by solution vector X

Definition at line 1915 of file mpnum.f90.

References lltbwd(), and lltfwd().

Referenced by mvsolv().

subroutine heapf ( real, dimension(*), intent(inout)  a,
integer, intent(in)  n 
)

Heap sort direct (real).

Real keys A(*), sorted at return.

Parameters:
[in,out]aarray of keys
[in]nnumber of keys

Definition at line 1419 of file mpnum.f90.

Referenced by bintab(), hmpmak(), and rmesig().

subroutine lltbwd ( integer, intent(in)  n,
double precision, dimension(*), intent(in)  c,
integer, dimension(n), intent(in)  india,
double precision, dimension(n), intent(inout)  x 
)

Backward solution.

The matrix equation A X = B is solved by forward + backward solution. The matrix is assumed to decomposed before using LLTDEC. The array X(N) contains on entry the right-hand-side B(N); at return it contains the solution.

Parameters:
[in]nsize of matrix
[in,out]cdecomposed variable-band matrix
[in]indiapointer array
[in,out]xr.h.s vector B, replaced by solution vector X

Definition at line 1816 of file mpnum.f90.

Referenced by equslv().

subroutine lltdec ( integer, intent(in)  n,
double precision, dimension(*), intent(inout)  c,
integer, dimension(n), intent(in)  india,
integer, intent(out)  nrkd 
)

LLT decomposition.

Decomposition: C = L L^T.

Variable-band matrix row-Doolittle decomposition of pos. def. matrix. A variable-band NxN symmetric matrix, is stored row by row in the array C(.). For each row all coefficients from the first non-zero element in the row to the diagonal is stored. The pointer array INDIA(N) contains the indices in C(.) of the diagonal elements. INDIA(1) is always 1, and INDIA(N) is equal to the total number of coefficients stored, called the profile. The form of a variable-band matrix is preserved in the L D L^T decomposition. No fill-in is created ahead in any row or ahead of the first entry in any column, but existing zero-values will become non-zero. The decomposition is done "in-place".

  • NRKD = 0 no component removed
  • NRKD < 0 1 component removed, negative index
  • NRKD > 1 number of

The matrix C is assumed to be positive definite, e.g. from the normal equations of least squares. The (positive) diagonal elements are reduced during decomposition. If a diagonal element is reduced by about a word length (see line "test for linear dependence"), then the pivot is assumed as zero and the entire row/column is reset to zero, removing the corresponding element from the solution.

Parameters:
[in]nsize of matrix
[in,out]cvariable-band matrix, replaced by L
[in]indiapointer array
[out]nrkdremoved components

Definition at line 1712 of file mpnum.f90.

Referenced by equdec().

subroutine lltfwd ( integer, intent(in)  n,
double precision, dimension(*), intent(in)  c,
integer, dimension(n), intent(in)  india,
double precision, dimension(n), intent(inout)  x 
)

Forward solution.

The matrix equation A X = B is solved by forward + backward solution. The matrix is assumed to decomposed before using LLTDEC. The array X(N) contains on entry the right-hand-side B(N); at return it contains the solution.

Parameters:
[in]nsize of matrix
[in,out]cdecomposed variable-band matrix
[in]indiapointer array
[in,out]xr.h.s vector B, replaced by solution vector X

Definition at line 1784 of file mpnum.f90.

Referenced by equdec(), and equslv().

subroutine precon ( integer, intent(in)  p,
integer, intent(in)  n,
double precision, dimension(n), intent(in)  c,
double precision, dimension(n), intent(out)  cu,
double precision, dimension(n,p), intent(inout)  a,
double precision, dimension((p*p+p)/2), intent(out)  s 
)

Constrained preconditioner, decomposition.

Constrained preconditioner, e.g for GMRES solution:

                                           intermediate
   (            )  (   )      (   )           (   )
   (   C    A^T )  ( x )   =  ( y )           ( u )
   (            )  (   )      (   )           (   )
   (   A     0  )  ( l )      ( d )           ( v )

input:
   C(N) is diagonal matrix and remains unchanged
        may be identical to CU(N), then it is changed
   A(N,P) is modified
   Y(N+P) is rhs vector, unchanged
        may be identical to X(N), then it is changed

result:
   CU(N) is 1/sqrt of diagonal matrix C(N)
   X(N+P) is result vector
   S((P*P+P)/2) is Cholesky decomposed symmetric (P,P) matrix
Parameters:
[in]pnumber of constraints
[in]nsize of diagonal matrix
[in]cdiagonal matrix (changed if c=cu as actual parameters)
[out]cu1/sqrt(c)
[in,out]aconstraint matrix (size n*p), modified
[out]sCholesky decomposed symmetric (P,P) matrix

Definition at line 1977 of file mpnum.f90.

Referenced by minres(), and mminrs().

subroutine presol ( integer, intent(in)  p,
integer, intent(in)  n,
double precision, dimension(n), intent(in)  cu,
double precision, dimension(n,p), intent(in)  a,
double precision, dimension((p*p+p)/2), intent(in)  s,
double precision, dimension(n+p), intent(out)  x,
double precision, dimension(n+p), intent(in)  y 
)

Constrained preconditioner, solution.

Parameters:
[in]pnumber of constraints
[in]nsize of diagonal matrix
[in]cu1/sqrt(c)
[in]amodified constraint matrix (size n*p)
[in]sCholesky decomposed symmetric (P,P) matrix
[out]xresult vector
[in]yrhs vector (changed if x=y as actual parameters)

Definition at line 2046 of file mpnum.f90.

Referenced by mcsolv().

subroutine sort1k ( integer, dimension(*), intent(inout)  a,
integer, intent(in)  n 
)

Quick sort 1.

Quick sort of A(1,N) integer.

Parameters:
[in,out]avector of integers, sorted at return
[in]nsize of vector

Definition at line 1472 of file mpnum.f90.

Referenced by loop2(), and loopbf().

subroutine sort2k ( integer, dimension(2,*), intent(inout)  a,
integer, intent(in)  n 
)

Quick sort 2.

Quick sort of A(2,N) integer.

Parameters:
[in,out]avector (pair) of integers, sorted at return
[in]nsize of vector

Definition at line 1552 of file mpnum.f90.

Referenced by peread(), and upone().

subroutine sqmibb ( double precision, dimension(*), intent(inout)  v,
double precision, dimension(n), intent(out)  b,
integer, intent(in)  n,
integer, intent(in)  nbdr,
integer, intent(in)  nbnd,
integer, intent(in)  inv,
integer, intent(out)  nrank,
double precision, dimension(n*(nbnd+1)), intent(out)  vbnd,
double precision, dimension(n*nbdr), intent(out)  vbdr,
double precision, dimension(n*nbdr), intent(out)  aux,
double precision, dimension((nbdr*nbdr+nbdr)/2), intent(out)  vbk,
double precision, dimension(nbdr), intent(out)  vzru,
double precision, dimension(nbdr), intent(out)  scdiag,
integer, dimension(nbdr), intent(out)  scflag 
)

Bordered band matrix.

Obtain solution of a system of linear equations with symmetric bordered band matrix (V * X = B), on request inverse is calculated. For band part root-free Cholesky decomposition and forward/backward substitution is used.

Use decomposition in border and band part for block matrix algebra:

| A  Ct |   | x1 |   | b1 |        , A  is the border part
|       | * |    | = |    |        , Ct is the mixed part
| C  D  |   | x2 |   | b2 |        , D  is the band part

Explicit inversion of D is avoided by using solution X of D*X=C (X=D^-1*C, obtained from Cholesky decomposition and forward/backward substitution)

| x1 |   | E*b1 - E*Xt*b2 |        , E^-1 = A-Ct*D^-1*C = A-Ct*X
|    | = |                |
| x2 |   |  x   - X*x1    |        , x is solution of D*x=b2 (x=D^-1*b2)

Inverse matrix is:

|  E   -E*Xt          |
|                     |            , only band part of (D^-1 + X*E*Xt)
| -X*E  D^-1 + X*E*Xt |              is calculated for inv=1
Parameters:
[in,out]vsymmetric N-by-N matrix in symmetric storage mode (V(1) = V11, V(2) = V12, V(3) = V22, V(4) = V13, ...), replaced by inverse matrix
[in,out]bN-vector, replaced by solution vector
[in]nsize of V, B
[in]nbdrborder size
[in]nbndband width
[in]inv=1 calculate band part of inverse (for pulls), >1 calculate complete inverse
[out]nrankrank of matrix V
[out]vbndband part of V
[out]vbdrborder part of V
[out]auxsolutions for border rows
[out]vbkmatrix for border solution
[out]vzruborder solution
[out]scdiagworkspace (D)
[out]scflagworkspace (I)

Definition at line 2153 of file mpnum.f90.

References dbcdec(), and sqminv().

Referenced by loopbf().

subroutine sqminl ( double precision, dimension(*), intent(inout)  v,
double precision, dimension(n), intent(out)  b,
integer, intent(in)  n,
integer, intent(out)  nrank,
double precision, dimension(n), intent(out)  diag,
integer, dimension(n), intent(out)  next 
)

Matrix inversion for LARGE matrices.

Like SQMINV, additional parallelization with OpenMP.

Parameters:
[in,out]Vsymmetric N-by-N matrix in symmetric storage mode (V(1) = V11, V(2) = V12, V(3) = V22, V(4) = V13, ...), replaced by inverse matrix
[in,out]BN-vector, replaced by solution vector
[in]Nsize of V, B
[out]NRANKrank of matrix V
[out]DIAGdouble precision scratch array
[out]NEXTinteger aux array

Definition at line 198 of file mpnum.f90.

Referenced by minver().

subroutine sqminv ( double precision, dimension(*), intent(inout)  v,
double precision, dimension(n), intent(out)  b,
integer, intent(in)  n,
integer, intent(out)  nrank,
double precision, dimension(n), intent(out)  diag,
integer, dimension(n), intent(out)  next 
)

Matrix inversion and solution.

Obtain solution of a system of linear equations with symmetric matrix (V * X = B) and the inverse.

Method of solution is by elimination selecting the pivot on the diagonal each stage. The rank of the matrix is returned in NRANK. For NRANK ne N, all remaining rows and cols of the resulting matrix V and the corresponding elements of B are set to zero.

Parameters:
[in,out]Vsymmetric N-by-N matrix in symmetric storage mode (V(1) = V11, V(2) = V12, V(3) = V22, V(4) = V13, ...), replaced by inverse matrix
[in,out]BN-vector, replaced by solution vector
[in]Nsize of V, B
[out]NRANKrank of matrix V
[out]DIAGdouble precision scratch array
[out]NEXTinteger aux array

Definition at line 72 of file mpnum.f90.

Referenced by feasma(), loopbf(), and sqmibb().

subroutine vabdec ( integer, intent(in)  n,
double precision, dimension(*), intent(inout)  val,
integer, dimension(n), intent(in)  ilptr 
)

Variable band matrix decomposition.

Decomposition: A = L D L^T

Variable-band matrix row Doolittle decomposition. A variable-band NxN symmetric matrix, also called skyline, is stored row by row in the array VAL(.). For each row every coefficient between the first non-zero element in the row and the diagonal is stored. The pointer array ILPTR(N) contains the indices in VAL(.) of the diagonal elements. ILPTR(1) is always 1, and ILPTR(N) is equal to the total number of coefficients stored, called the profile. The form of a variable-band matrix is preserved in the L D L^T decomposition no fill-in is created ahead in any row or ahead of the first entry in any column, but existing zero-values will become non-zero. The decomposition is done "in-place".

Parameters:
[in]nsize of matrix
[in,out]valvariable-band matrix, replaced by D,L
[in]ilptrpointer array

Definition at line 860 of file mpnum.f90.

subroutine vabmmm ( integer, intent(in)  n,
double precision, dimension(*), intent(inout)  val,
integer, dimension(n), intent(in)  ilptr 
)

Variable band matrix print minimum and maximum.

Parameters:
[in]nsize of matrix
[in,out]valvariable-band matrix, replaced by D,L
[in]ilptrpointer array

Definition at line 984 of file mpnum.f90.

subroutine vabslv ( integer, intent(in)  n,
double precision, dimension(*), intent(inout)  val,
integer, dimension(n), intent(in)  ilptr,
double precision, dimension(n), intent(inout)  x 
)

Variable band matrix solution.

The matrix equation A X = B is solved. The matrix is assumed to decomposed before using VABDEC. The array X(N) contains on entry the right-hand-side B(N); at return it contains the solution.

Parameters:
[in]nsize of matrix
[in,out]valdecomposed variable-band matrix
[in]ilptrpointer array
[in,out]xr.h.s vector B, replaced by solution vector X

Definition at line 1019 of file mpnum.f90.