Millepede-II V04-16-01
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, s, k)
 Initialize QL decomposition. More...
 
subroutine qldec (a)
 QL decomposition (as single block). More...
 
subroutine qldecb (a, bpar, bcon, rcon)
 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, s, roff, 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(mpl) mpqldec::matsize
 size of contraints matrix More...
 
integer(mpi) mpqldec::iblock
 active block More...
 
integer(mpi) mpqldec::monpg
 flag for progress monitoring More...
 
real(mpd), dimension(:), allocatable mpqldec::matv
 unit normals (v_i) of Householder reflectors More...
 
real(mpd), dimension(:), allocatable mpqldec::vecvk
 secondary diagonal of matV (including last element) 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...
 
integer(mpl), dimension(:), allocatable mpqldec::ioffrow
 row offsets in matV (for constrint block) More...
 
integer(mpi), dimension(:), allocatable mpqldec::ioffpar
 parameter number offsets for matV ( " ) More...
 
integer(mpi), dimension(:,:), allocatable mpqldec::irangeparnz
 range for non zero part (except vecVk) 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(ncon), intent(in)  d,
real(mpd), dimension(ncon), 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 969 of file mpqldec.f90.

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

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

◆ qldec()

subroutine qldec ( real(mpd), dimension(matsize), 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 121 of file mpqldec.f90.

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

◆ qldecb()

subroutine qldecb ( real(mpd), dimension(matsize), intent(in)  a,
integer(mpi), dimension(2,nblock+1), intent(in)  bpar,
integer(mpi), dimension(3,ncon+1), intent(in)  bcon,
integer(mpi), dimension(4,ncon), intent(in)  rcon 
)

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-Ncon(Block)s+1 matrix (with constraint block definition)
[in]rcon4-by-Ncons matrix (with constraint ranges)

Definition at line 215 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::ioffpar, mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matl, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::nparblock, mpqldec::vecn, and mpqldec::vecvk.

Referenced by feasma().

◆ qldump()

subroutine qldump

◆ 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 933 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(mpl), intent(in)  s,
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]ssize of constraints matrix (compressed or n*m)
[in]kflag for progress monitoring

Definition at line 57 of file mpqldec.f90.

References mpqldec::iblock, mpqldec::ioffblock, mpqldec::ioffpar, mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matl, mpqldec::matsize, mpqldec::matv, mpqldec::monpg, mpqldec::nblock, mpqldec::ncon, mpqldec::npar, mpqldec::nparblock, mpqldec::vecn, and mpqldec::vecvk.

Referenced by feasma().

◆ qlmlq()

subroutine qlmlq ( real(mpd), dimension(int(npar,mpl)*int(m,mpl)), 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 394 of file mpqldec.f90.

References mpqldec::iblock, mpqldec::ioffblock, mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::nparblock, mpqldec::vecn, and mpqldec::vecvk.

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

◆ qlmrq()

subroutine qlmrq ( real(mpd), dimension(int(m,mpl)*int(npar,mpl)), 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 455 of file mpqldec.f90.

References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::ncon, mpqldec::vecn, and mpqldec::vecvk.

◆ qlpssq()

subroutine qlpssq (   aprod,
real(mpd), dimension(npar*m-(m*m-m)/2), 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 695 of file mpqldec.f90.

References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::ncon, mpqldec::vecn, and mpqldec::vecvk.

Referenced by mminrs(), and mminrsqlp().

◆ qlsetb()

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

Set block.

Definition at line 996 of file mpqldec.f90.

References mpqldec::iblock.

Referenced by mchdec(), mdptrf(), mdutrf(), and minver().

◆ qlsmq()

subroutine qlsmq ( real(mpd), dimension(int(npar,mpl)*int(npar,mpl)), 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 503 of file mpqldec.f90.

References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::ncon, mpqldec::vecn, and mpqldec::vecvk.

◆ qlssq()

subroutine qlssq (   aprod,
real(mpd), dimension(s), intent(inout)  A,
integer(mpl), intent(in)  s,
integer(mpl), dimension(npar), intent(in)  roff,
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 or unpacked storage mode overwritten with Q*A*Q^t (t=false) or Q^t*A*Q (t=true)
[in]ssize of A
[in]roffrow offsets for A
[in]tuse transposed of Q

Definition at line 563 of file mpqldec.f90.

References mpqldec::ioffblock, mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::nblock, mpqldec::nparblock, mpqldec::vecn, and mpqldec::vecvk.

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