FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
hecmw_precond_saamg_adapt Module Reference

Smoothed Aggregation AMG preconditioner : FrontISTR adapter. More...

Functions/Subroutines

subroutine, public hecmw_saamg_from_hecmat (hecMAT, A, include_halo)
 Convert hecmwST_matrix (FrontISTR block storage) -> internal block-CSR. Rows are always internal only (1..hecMATN); the result has nint*ndof rows. include_halo = .false. (default): square nint*ndof matrix, halo columns dropped – the sequential operator. include_halo = .true.: rectangular nint*ndof x NP*ndof matrix that keeps the couplings to halo nodes (columns nint*ndof+1..NP*ndof) – the distributed finest operator, used with a comm table by hecmw_saamg_matvec_d. More...
 
subroutine, public hecmw_saamg_comm_from_mesh (hecMESH, ndof, cmt)
 Build the finest-level communication table from the FrontISTR mesh. Copies the node-based halo descriptor (neighbor PEs, import/export CSR lists) verbatim; these operate on nodes with nb = ndof dofs each. More...
 

Detailed Description

Smoothed Aggregation AMG preconditioner : FrontISTR adapter.

Bridges FrontISTR data structures to the mesh-independent SA-AMG core:

  • converts the BCRS hecmwST_matrix (separate D / AL / AU node blocks) into the core's internal block-CSR (include_halo keeps the rectangular couplings to halo columns for the distributed operator);
  • builds the finest-level communication table from the mesh import/export. The rigid-body near-kernel is built in the backend (build_global_rbm) because it needs the global-centroid allreduce for rank consistency.

Function/Subroutine Documentation

◆ hecmw_saamg_comm_from_mesh()

subroutine, public hecmw_precond_saamg_adapt::hecmw_saamg_comm_from_mesh ( type(hecmwst_local_mesh), intent(in)  hecMESH,
integer(kind=kint), intent(in)  ndof,
type(hecmwst_saamg_comm), intent(out)  cmt 
)

Build the finest-level communication table from the FrontISTR mesh. Copies the node-based halo descriptor (neighbor PEs, import/export CSR lists) verbatim; these operate on nodes with nb = ndof dofs each.

Definition at line 118 of file hecmw_precond_SAAMG_adapt.f90.

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

◆ hecmw_saamg_from_hecmat()

subroutine, public hecmw_precond_saamg_adapt::hecmw_saamg_from_hecmat ( type(hecmwst_matrix), intent(in)  hecMAT,
type(hecmwst_saamg_bcsr), intent(out)  A,
logical, intent(in), optional  include_halo 
)

Convert hecmwST_matrix (FrontISTR block storage) -> internal block-CSR. Rows are always internal only (1..hecMATN); the result has nint*ndof rows. include_halo = .false. (default): square nint*ndof matrix, halo columns dropped – the sequential operator. include_halo = .true.: rectangular nint*ndof x NP*ndof matrix that keeps the couplings to halo nodes (columns nint*ndof+1..NP*ndof) – the distributed finest operator, used with a comm table by hecmw_saamg_matvec_d.

Definition at line 34 of file hecmw_precond_SAAMG_adapt.f90.

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