FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
hecmw_precond_SAAMG_verify.f90 File Reference

Go to the source code of this file.

Modules

module  hecmw_precond_saamg_verify
 Smoothed Aggregation AMG preconditioner : distributed self-checks.
 

Functions/Subroutines

subroutine, public hecmw_precond_saamg_verify::hecmw_saamg_verify_refresh (dh, A, cmt, B, m, prm, n)
 Verify the distributed numeric refresh: refreshing with the SAME operator A must reproduce the freshly-built preconditioner (refresh reuses aggregation / coarse comm table / tentative P-hat, recomputes the value-dependent parts). Applies M^{-1} to a partition-invariant seed before and after refresh and reports the global relative difference, which must be ~machine precision. More...
 
subroutine, public hecmw_precond_saamg_verify::hecmw_saamg_verify_matvec (hecMAT, hecMESH, cmt, ndof)
 F4a self-check: the distributed (halo-aware) matvec applied to a globally consistent vector x (defined from global node ids) must give the same global ||A x||^2 regardless of how the mesh is partitioned. Compare the printed value between a 1-rank run and a K-rank run: equality proves the comm table and halo exchange are correct (dropping halo columns would change it). More...
 
subroutine, public hecmw_precond_saamg_verify::hecmw_saamg_verify_coarsen (hecMAT, cmt, m, prm)
 F4b self-check: build the uncoupled aggregation and the coarse comm table on the distributed finest operator, verify the coarse table is symmetric (each neighbor's coarse export to me equals my coarse import from it), and report the global coarse-node count. The global coarse-node count is partition-independent-ish (uncoupled aggregation differs only at boundaries); the symmetry flag must be true on every rank. More...
 
subroutine, public hecmw_precond_saamg_verify::hecmw_saamg_verify_prolong (hecMAT, hecMESH, cmt, ndof, m, prm)
 F4b-2 self-check: build the halo-extended tentative prolongator P-hat_ext on the distributed operator and confirm the exact QR identity P-hat_ext * B_c = B_fine holds on ALL rows (internal AND halo). The halo rows exercise the P-hat block exchange and the coarse near-kernel exchange (coarse comm table). The near-kernel is built with zero centroid so it is globally consistent across ranks (owner and neighbor agree on a shared node's B_fine). More...
 
subroutine, public hecmw_precond_saamg_verify::hecmw_saamg_verify_smoothp (hecMAT, hecMESH, cmt, ndof, m, prm)
 F4c-1 self-check: build the distributed SMOOTHED prolongator P and confirm the global near-kernel residual ||P B_c - B_f||^2 (over internal rows) is partition-independent. Smoothing does not preserve B exactly (P B_c = B_f - omega D^{-1} A B_f), so the residual is nonzero, but it is the SAME global value on 1 / K ranks iff the smoothed P, the shared lambda_max (omega) and the coarse near-kernel exchange are all correct. Compare the printed value between a 1-rank and a K-rank run. More...