Millepede-II V04-17-04
|
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... | |
QL decompostion.
QL decomposition of constraints matrix by Householder transformations for solution by elimination. Optionally split into disjoint blocks.
Definition in file mpqldec.f90.
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.
[in] | d | Ncon vector, resdiduals |
[out] | y | Ncon vector, solution |
Definition at line 991 of file mpqldec.f90.
References mpqldec::iblock, mpqldec::ioffblock, and mpqldec::matl.
Referenced by mchdec(), mdiags(), mdptrf(), mdutrf(), minver(), mminrs(), and mminrsqlp().
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.
[in] | a | Npar-by-Ncon matrix |
Definition at line 125 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.
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.
[in] | a | block compressed Npar-by-Ncon matrix |
[in] | bpar | 2-by-NparBlock+1 matrix (with parameter block definition) |
[in] | bcon | 3-by-Ncon(Block)s+1 matrix (with constraint block definition) |
[in] | rcon | 4-by-Ncons matrix (with constraint ranges) |
Definition at line 219 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().
subroutine qldump |
Print statistics.
Definition at line 1030 of file mpqldec.f90.
References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matl, mpqldec::matv, mpqldec::ncon, mpqldec::npar, mpqldec::vecn, and mpqldec::vecvk.
subroutine qlgete | ( | real(mpd), intent(out) | emin, |
real(mpd), intent(out) | emax | ||
) |
Get eigenvalues.
Get smallest and largest |eigenvalue| of L.
[out] | emin | eigenvalue with smallest absolute value |
[out] | emax | eigenvalue with largest absolute value |
Definition at line 955 of file mpqldec.f90.
References mpqldec::ioffblock, mpqldec::matl, mpqldec::nblock, and mpqldec::ncon.
Referenced by feasma().
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.
[in] | n | number of rows (parameters) |
[in] | m | number of columns (constraints) |
[in] | l | number of disjoint blocks |
[in] | s | size of constraints matrix (compressed or n*m) |
[in] | k | flag for progress monitoring |
Definition at line 61 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().
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.
[in,out] | x | NparBlock-by-M matrix, overwritten with Q*X (t=false) or Q^t*X (t=true) |
[in] | m | number of columns |
[in] | t | use transposed of Q |
Definition at line 404 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().
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.
[in,out] | x | M-by-Npar matrix, overwritten with X*Q (t=false) or X*Q^t (t=true) |
[in] | m | number of rows |
[in] | t | use transposed of Q |
Definition at line 465 of file mpqldec.f90.
References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::ncon, mpqldec::vecn, and mpqldec::vecvk.
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.
[in] | aprod | external procedure to calculate A*v |
[in,out] | B | band 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] | m | band width (including diagonal) |
[in] | t | use transposed of Q |
Definition at line 711 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().
subroutine qlsetb | ( | integer(mpi), intent(in) | ib | ) |
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.
[in,out] | x | Npar-by-Npar matrix, overwritten with Q*X*Q^t (t=false) or Q^t*X*Q (t=true) |
[in] | t | use transposed of Q |
Definition at line 513 of file mpqldec.f90.
References mpqldec::ioffrow, mpqldec::irangeparnz, mpqldec::matv, mpqldec::monpg, monpgs(), mpqldec::ncon, mpqldec::vecn, and mpqldec::vecvk.
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.
[in] | aprod | external procedure to calculate A*v |
[in,out] | A | symmetric 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] | s | size of A |
[in] | roff | row offsets for A |
[in] | t | use transposed of Q |
Definition at line 573 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().