FrontISTR  6.0.0
Large-scale structural analysis program with finit element method
hecmw_mf_kernel.F90 File Reference

Go to the source code of this file.

Modules

module  hecmw_mf_kernel
 Dense kernels of the multifrontal solver, symmetric (LDLt) and unsymmetric (LU) mode.
 

Functions/Subroutines

subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_ldlt (n, lda, a, zero, info)
 In place LDLt of the lower triangle of a(n,n) without pivoting; info is the index of the first pivot whose magnitude is not above zero, 0 on success. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_trsm (m, n, ldl, l, lda, a)
 a(m,n) <- a * L^-T * D^-1 with L, D taken from the factored tile l(n,n) (1x1 pivots only). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_panel_nopiv (m, n, lda, a, u, zero, info)
 Factor the panel a(m,n) (leading n x n block LDLt, rows below by the panel solve) without pivoting and check the threshold u afterwards: info is 0 when every pivot magnitude is above zero and every entry of L is bounded by 1/u, otherwise the first column that fails. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_panel_piv (m, n, lda, a, blk, u, alpha, zero, allow_delay, wk, npiv, perm, ptype, dsub, nswap, n2x2, info)
 Factor the panel a(m,n) with 1x1 and 2x2 pivots chosen among its n columns. A column is accepted as a 1x1 pivot when it satisfies the threshold u against the whole column; else a partner is searched, first among the columns of the same block (blk), then among the others, and the Bunch-Kaufman rule with alpha decides between a 1x1 pivot on the partner and a 2x2 pivot, the latter accepted when the entries of L stay bounded by 1/u. Columns without an acceptable pivot are moved to the end of the panel (allow_delay) or stop the factorization (info = column). On return the first npiv columns are factored, perm(j) is the original column at position j, and blk is permuted alike. wk holds 2*m words. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_scale (m, n, ldl, l, ptype, dsub, lda, a, w)
 w(m,n) <- a * D with the block diagonal D of the factored tile l(n,n). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_gemm (m, n, k, ldw, w, ldb, b, ldc, c)
 c(m,n) <- c - w(m,k) * b(n,k)^T More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_trsv (n, ldl, l, x)
 x <- L^-1 x with the unit lower triangle of the tile l(n,n). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_trsv_t (n, ldl, l, x)
 x <- L^-T x with the unit lower triangle of the tile l(n,n). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_dsolve (n, ldl, l, ptype, dsub, x)
 x <- D^-1 x with the block diagonal D of the factored tile l(n,n). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_gemv (m, n, lda, a, x, y)
 y(m) <- y - a(m,n) * x(n) More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_gemv_t (m, n, lda, a, x, y)
 y(n) <- y - a(m,n)^T * x(m) More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_lu (n, lda, a, ldb, b, zero, info)
 In place LU of the n x n block held in a (diagonal and below) and b (above, transposed) without pivoting; info is the index of the first pivot whose magnitude is not above zero, 0 on success. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_trsm_rt (m, n, ldt, t, unit, lda, a)
 a(m,n) <- a * T^-T with the lower triangle of t(n,n), unit diagonal when unit. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_panel_lu_nopiv (m, n, lda, a, ldb, b, u, zero, info)
 LU of the panel a(m,n), b(m,n) (leading n x n block, rows below by the panel solves) without pivoting and the threshold check afterwards, as panel_nopiv. The diagonal of b receives the diagonal of U. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_panel_lu_piv (m, n, lda, a, ldb, b, blk, blkr, u, zero, allow_delay, npiv, permc, permr, nswap, info)
 LU of the panel a(m,n), b(m,n) with threshold partial pivoting among its n rows: column p takes the row of largest magnitude among the rows of the same block (blkr against blk(p)), else among the other panel rows, when it reaches u times the largest magnitude of the whole column. Rows are exchanged, columns are not. Columns without an acceptable pivot are moved with their rows to the end of the panel (allow_delay) or stop the factorization (info = column). On return the first npiv columns are factored, permc(j) and permr(j) are the original column and row at position j, and blk, blkr are permuted alike. More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_usolve (n, ldl, l, ldu, ut, x)
 x <- U^-1 x with the diagonal of U on the diagonal of l(n,n) and its strictly upper part transposed in the strictly lower part of ut(n,n). More...
 
logical function, public hecmw_mf_kernel::hecmw_mf_kernel_blr_available ()
 Whether the BLR compression is available (LAPACK build). More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_compress (m, n, lda, a, eps, ldv, v, rank, rcap)
 Truncated rank revealing QR of a(m,n) with the truncation |R(k,k)| <= eps |R(1,1)|: on success the leading rank columns of a hold U and v(n,rank) holds V with a ~ U V^T. rank is -1, with a destroyed, when the low rank form would not take fewer than m*n words (the caller keeps its full rank copy) or without LAPACK. The column pivoted Householder QR stops right at the truncation or at the word bound, so the cost is O(m*n*rank) where dgeqp3 pays the full decomposition. The pivot column is selected by downdated norms with the dgeqp3 recomputation guard, but the truncation is decided on the freshly computed norm so a stale estimate cannot end the sweep early. rcap tightens the word bound: the sweep gives up (rank = -1) beyond min(rlim, rcap). The pivoted sweep with the downdated column norms is adapted from LAPACK's dlaqp2 (with the norm recomputation guard of LAPACK Working Note 176) and the explicit formation of the Q columns follows dorg2r. LAPACK is distributed under the modified BSD license: More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_mult_nn (m, n, k, lda, a, ldb, b, ldc, c)
 c(m,n) <- a(m,k) * b(k,n) More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_mult_tn (m, n, k, lda, a, ldb, b, ldc, c)
 c(m,n) <- a(k,m)^T * b(k,n) More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_mult_tv (m, n, lda, a, x, y)
 y(n) <- a(m,n)^T * x(m) More...
 
subroutine, public hecmw_mf_kernel::hecmw_mf_kernel_scale_rows (n, r, ldl, l, ptype, dsub, ldv, v, ldw, w)
 w(n,r) <- D * v(n,r) with the block diagonal D of the factored tile l(n,n). More...