![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
Go to the source code of this file.
Modules | |
| module | hecmw_precond_saamg_matrix |
| Smoothed Aggregation AMG preconditioner : internal block-CSR matrix. | |
Functions/Subroutines | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_free (A) |
| Release the storage held by a hecmwST_saamg_bcsr. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_copy (A, B) |
| Copy: B = A. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_move (A, B) |
| Move: B = A, transferring A's storage (move_alloc, no copy); A is emptied. Use when the source is no longer needed – avoids holding the operator twice. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_from_dense (dense, n, nb, A, mb) |
| Build a block-CSR matrix from a dense n x n array. A block is stored when any of its entries is nonzero (the full nb x mb block is kept, in-block zeros and all). Intended for unit tests and small reference matrices, not production. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_matvec (A, x, y) |
| Sparse matrix-vector product : y = A x. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_matvec_d (cmt, A, x, y) |
| Distributed matvec y = A x : refresh x's halo region from the owning ranks (via the level comm table), then run the local product. x must have length nb*nnode (internal + halo room); y has length An = nb*nint (internal rows). Reduces to hecmw_saamg_matvec when the comm table has no neighbors (serial). More... | |
| real(kind=kreal) function, public | hecmw_precond_saamg_matrix::hecmw_saamg_is_symmetric (A) |
| Relative asymmetry ||A - A^T||_F / ||A||_F (debug / verification helper). Returns 0 for a structurally and numerically symmetric matrix. Square only. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_from_triplets (nrow, ncol, nb, ti, tj, tv, nt, A, mb) |
| Assemble a block-CSR (nrow x ncol) from a scalar triplet list (i,j,v): each entry is scattered into its block (block row (i-1)/nb+1, block col (j-1)/mb+1, in-block position), duplicate entries summed. Used by the distributed operator assembly (routed scalar triplets -> owned block rows). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_from_block_triplets (nbrow, nbcol, nb, mb, bi, bj, bv, nt, A) |
| Assemble a block-CSR (nbrow x nbcol block grid, nb x mb blocks) from a list of block triplets (bi, bj, block); duplicate (bi,bj) blocks are summed. Each block bv(:,t) is the nb*mb column-major entries of block t. The block-native assembler used by the operator producers (adapter, tentative, smoothed prolongator). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_transpose (A, At) |
| Transpose: At = A^T (At is ncol x n). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_spgemm (A, B, C) |
| Sparse matrix-matrix product C = A * B. Requires Amb == Bnb. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_galerkin_local (A, P, mblk, Ac) |
| Galerkin coarse operator Ac = P^T A P. mblk = coarse block size. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_bcsr_to_dense (A, dense) |
| Densify a matrix into a (n x ncol) array (verification helper). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_to_dense_blk (A, dense) |
| Densify from the block-CSR storage. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_matvec_blk (A, x, y) |
| Block matvec y = A x (x indexed by column blocks, y by row blocks). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_transpose_blk (A, At) |
| Block transpose At = A^T : swap block dims and transpose each block. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_spgemm_blk (A, B, C) |
| Block SpGEMM C = A * B : block Gustavson with dense block GEMM accumulation. Requires Amb == Bnb (inner block dimension). More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_galerkin_blk (A, P, mblk, Ac) |
| Block Galerkin Ac = P^T A P (block transpose + two block SpGEMM). mblk = coarse block size, tagged on Acnb / Acmb. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_transpose_blk_rows (A, nbrow_keep, At) |
| Transpose only the first nbrow_keep block rows of A : At = (A[1:nbrow_keep])^T. Used to form the restriction P^T from the internal rows of the halo-extended prolongator without first copying out those rows. More... | |
| subroutine, public | hecmw_precond_saamg_matrix::hecmw_saamg_triple_blk (L, A, R, Ac) |
| FUSED block triple product Ac = L * A * R, computed WITHOUT materializing the intermediate A*R (or L*A): the i -> j(L) -> k(A) -> l(R) loop accumulates the block products L(i,j) A(j,k) R(k,l) directly into Ac(i,l) (modelled on the FrontISTR T^t K T product). Only a small per-(i,j,k) temporary L*A is held, so the large A*R intermediate is never formed – critical for the level-1 Galerkin P^T A P on huge meshes. Requires Lmb==Anb, Amb==Rnb (and matching counts). More... | |