Millepede-II  V04-08-03
Modules | Functions/Subroutines | Variables
mpqldec.f90 File Reference

QL decompostion. More...

Go to the source code of this file.

Modules

module  mpqldec
 QL data.
 

Functions/Subroutines

subroutine qlini (n, m, l, k)
 Initialize QL decomposition. More...
 
subroutine qldec (a)
 QL decomposition (as single block). More...
 
subroutine qldecb (a, bpar, bcon)
 QL decomposition (for disjoint block matrix). More...
 
subroutine qlmlq (x, m, t)
 Multiply left by Q(t) (per block). More...
 
subroutine qlmrq (x, m, t)
 Multiply right by Q(t). More...
 
subroutine qlsmq (x, t)
 Similarity transformation by Q(t). More...
 
subroutine qlssq (aprod, A, t)
 Similarity transformation by Q(t). More...
 
subroutine qlpssq (aprod, B, m, t)
 Partial similarity transformation by Q(t). More...
 
subroutine qlgete (emin, emax)
 Get eigenvalues. More...
 
subroutine qlbsub (d, y)
 Backward substitution (per block). More...
 
subroutine qlsetb (ib)
 Set block. More...
 
subroutine qldump ()
 Print statistics. More...
 

Variables

integer(mpi) mpqldec::npar
 number of parameters More...
 
integer(mpi) mpqldec::ncon
 number of constraints More...
 
integer(mpi) mpqldec::nblock
 number of blocks More...
 
integer(mpi) mpqldec::iblock
 active block More...
 
integer(mpi) mpqldec::monpg
 flag for progress monitoring More...
 
integer(mpi), dimension(:), allocatable mpqldec::sparsev
 sparsity structure matV More...
 
real(mpd), dimension(:), allocatable mpqldec::matv
 unit normals (v_i) of Householder reflectors More...
 
real(mpd), dimension(:), allocatable mpqldec::matl
 lower diagonal matrix L More...
 
real(mpd), dimension(:), allocatable mpqldec::vecn
 normal vector More...
 
integer(mpi), dimension(:), allocatable mpqldec::nparblock
 number of parameters in block More...
 
integer(mpi), dimension(:), allocatable mpqldec::ioffblock
 block offset (1. More...
 

Detailed Description

QL decompostion.

Author
Claus Kleinwort, DESY, 2015 (Claus.nosp@m..Kle.nosp@m.inwor.nosp@m.t@de.nosp@m.sy.de)

QL decomposition of constraints matrix by Householder transformations for solution by elimination. Optionally split into disjoint blocks.

Definition in file mpqldec.f90.

Function/Subroutine Documentation

◆ qlbsub()

subroutine qlbsub ( real(mpd), dimension(*), intent(in)  d,
real(mpd), dimension(*), intent(out)  y 
)

Backward substitution (per block).

Get y from L^t*y=d.

Parameters
[in]dNcon vector, resdiduals
[out]yNcon vector, solution

Definition at line 750 of file mpqldec.f90.

References mpqldec::iblock, mpqldec::ioffblock, mpqldec::matl, and mpqldec::ncon.

Referenced by mchdec(), mdiags(), minver(), mminrs(), and mminrsqlp().

◆ qldec()

subroutine qldec ( real(mpd), dimension(*), intent(in)  a)

QL decomposition (as single block).

QL decomposition with Householder transformations. Decompose N-By-M matrix A into orthogonal N-by-N matrix Q and a N-by-M matrix containing zeros except for a lower triangular M-by-M matrix L (at the bottom):

         | 0 |
 A = Q * |   |
         | L |

The decomposition is stored in a N-by-M matrix matV containing the unit normal vectors v_i of the hyperplanes (Householder reflectors) defining Q. The lower triangular matrix L is stored in the M-by-M matrix matL.

Parameters
[in]aNpar-by-Ncon matrix

Definition at line 104 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::matl, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::nblock, mpqldec::ncon, mpqldec::npar, mpqldec::nparblock, mpqldec::sparsev, and mpqldec::vecn.

◆ qldecb()

subroutine qldecb ( real(mpd), dimension(*), intent(in)  a,
integer(mpi), dimension(2,*), intent(in)  bpar,
integer(mpi), dimension(3,*), intent(in)  bcon 
)

QL decomposition (for disjoint block matrix).

QL decomposition with Householder transformations. Decompose N-By-M matrix A into orthogonal N-by-N matrix Q and a N-by-M matrix containing zeros except for a lower triangular M-by-M matrix L (at the bottom):

         | 0 |
 A = Q * |   |
         | L |

The decomposition is stored in a N-by-M matrix matV containing the unit normal vectors v_i of the hyperplanes (Householder reflectors) defining Q. The lower triangular matrix L is stored in the M-by-M matrix matL.

Parameters
[in]ablock compressed Npar-by-Ncon matrix
[in]bpar2-by-NparBlock+1 matrix (with parameter block definition)
[in]bcon3-by-NconBlock+1 matrix (with constraint block definition)

Definition at line 194 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::matl, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::nblock, mpqldec::ncon, mpqldec::npar, mpqldec::nparblock, mpqldec::sparsev, and mpqldec::vecn.

Referenced by feasma().

◆ qldump()

subroutine qldump

Print statistics.

Definition at line 789 of file mpqldec.f90.

References mpqldec::matl, mpqldec::matv, mpqldec::ncon, and mpqldec::npar.

◆ qlgete()

subroutine qlgete ( real(mpd), intent(out)  emin,
real(mpd), intent(out)  emax 
)

Get eigenvalues.

Get smallest and largest |eigenvalue| of L.

Parameters
[out]emineigenvalue with smallest absolute value
[out]emaxeigenvalue with largest absolute value

Definition at line 714 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::matl, mpqldec::nblock, and mpqldec::ncon.

Referenced by feasma().

◆ qlini()

subroutine qlini ( integer(mpi), intent(in)  n,
integer(mpi), intent(in)  m,
integer(mpi), intent(in)  l,
integer(mpi), intent(in)  k 
)

Initialize QL decomposition.

Parameters
[in]nnumber of rows (parameters)
[in]mnumber of columns (constraints)
[in]lnumber of disjoint blocks
[in]kflag for progress monitoring

Definition at line 52 of file mpqldec.f90.

References mpqldec::iblock, mpqldec::ioffblock, mpqldec::matl, mpqldec::matv, mpqldec::monpg, mpqldec::nblock, mpqldec::ncon, mpqldec::npar, mpqldec::nparblock, mpqldec::sparsev, and mpqldec::vecn.

Referenced by feasma().

◆ qlmlq()

subroutine qlmlq ( real(mpd), dimension(*), intent(inout)  x,
integer(mpi), intent(in)  m,
logical, intent(in)  t 
)

Multiply left by Q(t) (per block).

Multiply left by Q(t) from QL decomposition.

Parameters
[in,out]xNparBlock-by-M matrix, overwritten with Q*X (t=false) or Q^t*X (t=true)
[in]mnumber of columns
[in]tuse transposed of Q

Definition at line 340 of file mpqldec.f90.

References mpqldec::iblock, mpqldec::ioffblock, mpqldec::matv, mpqldec::npar, and mpqldec::nparblock.

Referenced by avprod(), mchdec(), mdiags(), minver(), mminrs(), mminrsqlp(), and zdiags().

◆ qlmrq()

subroutine qlmrq ( real(mpd), dimension(*), intent(inout)  x,
integer(mpi), intent(in)  m,
logical, intent(in)  t 
)

Multiply right by Q(t).

Multiply right by Q(t) from QL decomposition.

Parameters
[in,out]xM-by-Npar matrix, overwritten with X*Q (t=false) or X*Q^t (t=true)
[in]mnumber of rows
[in]tuse transposed of Q

Definition at line 392 of file mpqldec.f90.

References mpqldec::matv, mpqldec::ncon, and mpqldec::npar.

◆ qlpssq()

subroutine qlpssq (   aprod,
real(mpd), dimension(*), intent(inout)  B,
integer(mpi), intent(in)  m,
logical, intent(in)  t 
)

Partial similarity transformation by Q(t).

Partial similarity transformation for symmetric matrix by Q from QL decomposition. Calculate corrections to band part of matrix.

Parameters
[in]aprodexternal procedure to calculate A*v
[in,out]Bband part of symmetric Npar-by-Npar matrix A in symmetric storage mode, overwritten with band part of Q^t*A*Q (t=false) or Q^t*A*Q (t=true)
[in]mband width (including diagonal)
[in]tuse transposed of Q

Definition at line 585 of file mpqldec.f90.

References mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::ncon, mpqldec::npar, and mpqldec::sparsev.

Referenced by mminrs(), and mminrsqlp().

◆ qlsetb()

subroutine qlsetb ( integer(mpi), intent(in)  ib)

Set block.

Definition at line 777 of file mpqldec.f90.

References mpqldec::iblock.

Referenced by mchdec(), and minver().

◆ qlsmq()

subroutine qlsmq ( real(mpd), dimension(*), intent(inout)  x,
logical, intent(in)  t 
)

Similarity transformation by Q(t).

Similarity transformation by Q from QL decomposition.

Parameters
[in,out]xNpar-by-Npar matrix, overwritten with Q*X*Q^t (t=false) or Q^t*X*Q (t=true)
[in]tuse transposed of Q

Definition at line 434 of file mpqldec.f90.

References mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::ncon, and mpqldec::npar.

◆ qlssq()

subroutine qlssq (   aprod,
real(mpd), dimension(*), intent(inout)  A,
logical, intent(in)  t 
)

Similarity transformation by Q(t).

Similarity transformation for symmetric matrix by Q from QL decomposition.

Parameters
[in]aprodexternal procedure to calculate A*v
[in,out]Asymmetric Npar-by-Npar matrix A in symmetric storage mode (V(1) = V11, V(2) = V12, V(3) = V22, V(4) = V13, ...), overwritten with Q*A*Q^t (t=false) or Q^t*A*Q (t=true)
[in]tuse transposed of Q

Definition at line 487 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::nblock, mpqldec::npar, and mpqldec::nparblock.

Referenced by mchdec(), mdiags(), minver(), and xloopn().