aAMG_level
This class is used to manage the aAMG hierarchy. More…
#include "aAMG_level.h"
Public Functions
| Name | |
|---|---|
| aAMG_level(const DSMat & mat_A) Constructs the object. |
|
| ~aAMG_level() Deletes the object. |
|
| void | SetOffsets(const iReg mynrows, const iReg nRHS) Sets the offsets for RHS and SOL in the last level. |
| void | Prepare_MxV(const iReg nRHS) Prepares the object for the application to a vector (DDMat). |
| void | UndoPrepare_MxV() Undo the data structure necessary for MxV. |
Public Attributes
| Name | |
|---|---|
| int | level Hierarchy level. |
| struct aAMG_OperInfo | OperInfo Operator information. |
| struct aAMG_TimeInfo | TimeInfo Set-up wall time of the AMG components. |
| MPI_Comm | Comm Communicator for the current level. |
| bool | is_SYM Flag to indicate symmetry of the coarsest level operator. |
| bool | CoarsestFac Flag for the coarsest level with factorization. |
| bool | CoarsestDiag Flag for the coarsest level without factorization (diagonal case). |
| SMOOTHER * | ptr_SMOOTH Pointer to the smoother for the current level. |
| PROLONGATION * | ptr_PROLO Pointer to the prolongation for the current level. |
| DSMat * | ptr_A Pointer to the sparse matrix for the current level. |
| DDMat * | ptr_LUFacA Pointer to the LU factorization of A (only for the last level) |
| VEC_CPU< type_LAPACK_int > | vec_IPIV Permution LU in case of non-symmetric coarsest operator. |
| aAMG_level * | ptr_nextlevel Pointer to the next level. |
| VEC_CPU< type_MPI_int > | nRecv_loc Number of receiving coefficiets for RHS communication in the last level. |
| VEC_CPU< type_MPI_int > | offsets RHS and SOL offsets in the last level. |
| DDMat * | WR1 First work array (used in recursive ApplyToVec). |
| DDMat * | WR2 Second work array (used in recursive ApplyToVec). |
| DDMat * | WR3 Third work array (used in recursive ApplyToVec). |
| DDMat * | nextRHS RHS vector for teh next level (used in recursive ApplyToVec). |
| DDMat * | nextSOL SOL vector for the next level (used in recursive ApplyToVec). |
Detailed Description
class aAMG_level;
This class is used to manage the aAMG hierarchy.
class aAMG_level.
Public Functions Documentation
function aAMG_level
aAMG_level(
const DSMat & mat_A
)
Constructs the object.
function ~aAMG_level
~aAMG_level()
Deletes the object.
function SetOffsets
void SetOffsets(
const iReg mynrows,
const iReg nRHS
)
Sets the offsets for RHS and SOL in the last level.
Parameters:
- mynrows local size of the matrix.
- nRHS number of Right Hand Sides.
function Prepare_MxV
void Prepare_MxV(
const iReg nRHS
)
Prepares the object for the application to a vector (DDMat).
Parameters:
- nRHS number of Right Hand Sides.
function UndoPrepare_MxV
void UndoPrepare_MxV()
Undo the data structure necessary for MxV.
Public Attributes Documentation
variable level
int level = 0;
Hierarchy level.
variable OperInfo
struct aAMG_OperInfo OperInfo;
Operator information.
variable TimeInfo
struct aAMG_TimeInfo TimeInfo;
Set-up wall time of the AMG components.
variable Comm
MPI_Comm Comm = MPI_COMM_WORLD;
Communicator for the current level.
variable is_SYM
bool is_SYM = false;
Flag to indicate symmetry of the coarsest level operator.
variable CoarsestFac
bool CoarsestFac = false;
Flag for the coarsest level with factorization.
variable CoarsestDiag
bool CoarsestDiag = false;
Flag for the coarsest level without factorization (diagonal case).
variable ptr_SMOOTH
SMOOTHER * ptr_SMOOTH = nullptr;
Pointer to the smoother for the current level.
variable ptr_PROLO
PROLONGATION * ptr_PROLO = nullptr;
Pointer to the prolongation for the current level.
variable ptr_A
DSMat * ptr_A = nullptr;
Pointer to the sparse matrix for the current level.
variable ptr_LUFacA
DDMat * ptr_LUFacA = nullptr;
Pointer to the LU factorization of A (only for the last level)
variable vec_IPIV
VEC_CPU< type_LAPACK_int > vec_IPIV;
Permution LU in case of non-symmetric coarsest operator.
variable ptr_nextlevel
aAMG_level * ptr_nextlevel = nullptr;
Pointer to the next level.
variable nRecv_loc
VEC_CPU< type_MPI_int > nRecv_loc;
Number of receiving coefficiets for RHS communication in the last level.
variable offsets
VEC_CPU< type_MPI_int > offsets;
RHS and SOL offsets in the last level.
variable WR1
DDMat * WR1 = nullptr;
First work array (used in recursive ApplyToVec).
variable WR2
DDMat * WR2 = nullptr;
Second work array (used in recursive ApplyToVec).
variable WR3
DDMat * WR3 = nullptr;
Third work array (used in recursive ApplyToVec).
variable nextRHS
DDMat * nextRHS = nullptr;
RHS vector for teh next level (used in recursive ApplyToVec).
variable nextSOL
DDMat * nextSOL = nullptr;
SOL vector for the next level (used in recursive ApplyToVec).
Updated on 19 November 2024 at 10:20:48 CET