FrontISTR  6.0.0
Large-scale structural analysis program with finit element method
hecmw_precond_saamg_coarse_mf Module Reference

Smoothed Aggregation AMG preconditioner : redundant sparse DIRECTmf coarsest solver. More...

Functions/Subroutines

subroutine, public hecmw_saamg_cmf_setup (Ac, symmetric, cmf)
 Convert the redundantly gathered coarse operator Ac to the block matrix layout, run the symbolic analysis (graph, fill-reducing ordering, supernode structure) and factor: symmetric -> LDL^T, else -> LU (mode follows matsymmetric). More...
 
subroutine, public hecmw_saamg_cmf_refresh (Ac, cmf)
 Numeric refresh: reload the values of the re-gathered operator into the stored pattern and re-run the numeric factorization on the retained symbolic structure. The gather drops numerically zero entries, so a refreshed operator can (rarely) carry a block outside the stored pattern; then the symbolic structure is stale and the backend falls back to a full re-setup. More...
 
subroutine, public hecmw_saamg_cmf_solve (cmf, b, x)
 Solve Ac x = b with the stored factor (plain-array interface, every rank solves the full gathered system redundantly, like the dense backend). More...
 
subroutine, public hecmw_saamg_cmf_free (cmf)
 

Detailed Description

Smoothed Aggregation AMG preconditioner : redundant sparse DIRECTmf coarsest solver.

Third direct coarsest-level backend: the same redundant data flow as the dense LDL^T backend (coarse operator gathered to every rank, RHS allgathered per V-cycle), but factored SPARSE by the built-in multifrontal solver (DIRECTmf) through its graph / symbolic / numeric API. No external library is needed, so a MUMPS-less build gets a sparse coarsest and the dense O(n^3) size limit does not apply; a symmetric-indefinite coarse operator is factored LDL^T with threshold pivoting (inertia reported like the other backends) and a non-symmetric one (friction contact) LU. A numeric-only refresh re-factors the new values on the retained symbolic structure.

Function/Subroutine Documentation

◆ hecmw_saamg_cmf_free()

subroutine, public hecmw_precond_saamg_coarse_mf::hecmw_saamg_cmf_free ( type(hecmwst_saamg_cmf), intent(inout)  cmf)

Definition at line 106 of file hecmw_precond_SAAMG_coarse_mf.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hecmw_saamg_cmf_refresh()

subroutine, public hecmw_precond_saamg_coarse_mf::hecmw_saamg_cmf_refresh ( type(hecmwst_saamg_bcsr), intent(in)  Ac,
type(hecmwst_saamg_cmf), intent(inout)  cmf 
)

Numeric refresh: reload the values of the re-gathered operator into the stored pattern and re-run the numeric factorization on the retained symbolic structure. The gather drops numerically zero entries, so a refreshed operator can (rarely) carry a block outside the stored pattern; then the symbolic structure is stale and the backend falls back to a full re-setup.

Definition at line 81 of file hecmw_precond_SAAMG_coarse_mf.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hecmw_saamg_cmf_setup()

subroutine, public hecmw_precond_saamg_coarse_mf::hecmw_saamg_cmf_setup ( type(hecmwst_saamg_bcsr), intent(in)  Ac,
logical, intent(in)  symmetric,
type(hecmwst_saamg_cmf), intent(inout)  cmf 
)

Convert the redundantly gathered coarse operator Ac to the block matrix layout, run the symbolic analysis (graph, fill-reducing ordering, supernode structure) and factor: symmetric -> LDL^T, else -> LU (mode follows matsymmetric).

Definition at line 58 of file hecmw_precond_SAAMG_coarse_mf.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hecmw_saamg_cmf_solve()

subroutine, public hecmw_precond_saamg_coarse_mf::hecmw_saamg_cmf_solve ( type(hecmwst_saamg_cmf), intent(inout)  cmf,
real(kind=kreal), dimension(:), intent(in)  b,
real(kind=kreal), dimension(:), intent(out)  x 
)

Solve Ac x = b with the stored factor (plain-array interface, every rank solves the full gathered system redundantly, like the dense backend).

Definition at line 97 of file hecmw_precond_SAAMG_coarse_mf.F90.

Here is the call graph for this function:
Here is the caller graph for this function: