![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
Smoothed Aggregation AMG preconditioner : distributed MUMPS coarsest solver. More...
Functions/Subroutines | |
| logical function, public | hecmw_saamg_cmumps_available () |
| .true. only when compiled with MUMPS; the caller uses the dense coarsest else. More... | |
| subroutine, public | hecmw_saamg_cmumps_setup (cmt, Aloc, my_off, m, naggr_local, symmetric, cm) |
| Factor the distributed coarse operator. Aloc = this rank's owned coarse rows (n_loc = naggr_local*m rows, columns localized; global column dof via cmtgnode); my_off = owned coarse-node offset, m = coarse block size. Builds the global lower-triangle distributed COO and runs MUMPS analyze+factor (JOB=4). More... | |
| subroutine, public | hecmw_saamg_cmumps_refresh (cmt, Aloc, my_off, m, naggr_local, cm) |
| Numeric refresh: pattern unchanged, only values change. Refill A_loc and run MUMPS numeric factorization (JOB=2, reusing the JOB=1 analysis). More... | |
| subroutine, public | hecmw_saamg_cmumps_solve (cmt, rhs_loc, n_loc, cm, sol_loc) |
| Solve A_coarse x = b. rhs_loc/sol_loc are this rank's owned slices (length n_loc, local owned order = global order on this rank). Gathers RHS to the host, runs MUMPS solve (JOB=3), scatters the owned solution slice back. More... | |
| subroutine, public | hecmw_saamg_cmumps_free (cm) |
Smoothed Aggregation AMG preconditioner : distributed MUMPS coarsest solver.
Alternative coarsest-level backend (F7): a parallel sparse direct factorization of the DISTRIBUTED coarse operator, with NO redundant gather. Each rank feeds its owned coarse rows to MUMPS as distributed assembled input (ICNTL(18)=3, lower triangle, SYM=2) over the level communicator; MUMPS factors in parallel. Per V-cycle the coarse RHS is gathered to the host, solved, and the owned solution slice scattered back. This removes the last O(P) redundant gather so a much larger (sparse) coarsest may be used, keeping the hierarchy shallow.
All MUMPS code is guarded by HECMW_WITH_MUMPS; without it this module compiles to stubs (hecmw_saamg_cmumps_available() = .false.) so the standalone build and MUMPS-less configurations fall back to the dense LDL^T coarsest.
| logical function, public hecmw_precond_saamg_coarse_mumps::hecmw_saamg_cmumps_available |
.true. only when compiled with MUMPS; the caller uses the dense coarsest else.
Definition at line 57 of file hecmw_precond_SAAMG_coarse_mumps.F90.
| subroutine, public hecmw_precond_saamg_coarse_mumps::hecmw_saamg_cmumps_free | ( | type(hecmwst_saamg_cmumps), intent(inout) | cm | ) |
Definition at line 159 of file hecmw_precond_SAAMG_coarse_mumps.F90.
| subroutine, public hecmw_precond_saamg_coarse_mumps::hecmw_saamg_cmumps_refresh | ( | type(hecmwst_saamg_comm), intent(in) | cmt, |
| type(hecmwst_saamg_bcsr), intent(in) | Aloc, | ||
| integer(kind=kint), intent(in) | my_off, | ||
| integer(kind=kint), intent(in) | m, | ||
| integer(kind=kint), intent(in) | naggr_local, | ||
| type(hecmwst_saamg_cmumps), intent(inout) | cm | ||
| ) |
Numeric refresh: pattern unchanged, only values change. Refill A_loc and run MUMPS numeric factorization (JOB=2, reusing the JOB=1 analysis).
Definition at line 125 of file hecmw_precond_SAAMG_coarse_mumps.F90.
| subroutine, public hecmw_precond_saamg_coarse_mumps::hecmw_saamg_cmumps_setup | ( | type(hecmwst_saamg_comm), intent(in) | cmt, |
| type(hecmwst_saamg_bcsr), intent(in) | Aloc, | ||
| integer(kind=kint), intent(in) | my_off, | ||
| integer(kind=kint), intent(in) | m, | ||
| integer(kind=kint), intent(in) | naggr_local, | ||
| logical, intent(in) | symmetric, | ||
| type(hecmwst_saamg_cmumps), intent(inout) | cm | ||
| ) |
Factor the distributed coarse operator. Aloc = this rank's owned coarse rows (n_loc = naggr_local*m rows, columns localized; global column dof via cmtgnode); my_off = owned coarse-node offset, m = coarse block size. Builds the global lower-triangle distributed COO and runs MUMPS analyze+factor (JOB=4).
Definition at line 69 of file hecmw_precond_SAAMG_coarse_mumps.F90.
| subroutine, public hecmw_precond_saamg_coarse_mumps::hecmw_saamg_cmumps_solve | ( | type(hecmwst_saamg_comm), intent(in) | cmt, |
| real(kind=kreal), dimension(:), intent(in) | rhs_loc, | ||
| integer(kind=kint), intent(in) | n_loc, | ||
| type(hecmwst_saamg_cmumps), intent(inout) | cm, | ||
| real(kind=kreal), dimension(:), intent(out) | sol_loc | ||
| ) |
Solve A_coarse x = b. rhs_loc/sol_loc are this rank's owned slices (length n_loc, local owned order = global order on this rank). Gathers RHS to the host, runs MUMPS solve (JOB=3), scatters the owned solution slice back.
Definition at line 144 of file hecmw_precond_SAAMG_coarse_mumps.F90.