FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ > Class Template Referenceabstract

HYPRE ParaSails Preconditioner Wrapper class template. More...

#include <hypre.hpp>

Inheritance diagram for FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >:
FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ > FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ > FEAT::Solver::SolverBase< Vector_ > FEAT::Solver::SolverBase< Vector_ >

Public Types

typedef HypreSolverBase< Matrix_, Filter_ > BaseClass
 our base-class More...
 
typedef MatrixType::DataType DataType
 our internal data type More...
 
typedef Filter_ FilterType
 the (local) filter type More...
 
typedef MatrixType::IndexType IndexType
 our internal index type More...
 
typedef Matrix_ MatrixType
 this specialization expects a local matrix More...
 
typedef BaseClass::VectorType VectorType
 the vector type More...
 

Public Member Functions

 ParaSailsPrecond (const Matrix_ &matrix, const Filter_ &filter)
 
 ParaSailsPrecond (const String &section_name, const PropertyMap *section, const Matrix_ &matrix, const Filter_ &filter)
 
virtual Status apply (Vector_ &vec_cor, const Vector_ &vec_def)=0
 Solver application method. More...
 
virtual Status apply (VectorType &vec_cor, const VectorType &vec_def) override
 
virtual void done ()
 Finalization method. More...
 
virtual void done_numeric () override
 Numeric finalization method. More...
 
virtual void done_symbolic () override
 Symbolic Finalization. More...
 
virtual void init ()
 Initialization method. More...
 
virtual void init_numeric () override
 Numeric Initialization. More...
 
virtual void init_symbolic () override
 Symbolic Initialization. More...
 
virtual String name () const override
 Returns a descriptive string. More...
 

Protected Member Functions

void _download_cor (VectorType &vec_cor)
 Downloads the HYPRE correction vector. More...
 
template<typename DTV_ >
void _download_vector (LocalVectorType &vector, const DTV_ *val)
 Downloads the ADP vector values from the given array. More...
 
template<typename DTV_ >
void _download_vector (VectorType &vector, const DTV_ *val)
 Downloads the ADP vector values from the given array. More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const Global::MeanFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const LAFEM::MeanFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *, const RPT_ *, const CIT_ *, const LAFEM::NoneFilter< DataType, IndexType > &)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterChain< First_ > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ , typename... Rest_>
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterChain< First_, Rest_... > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ , typename SubFilter_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::FilterSequence< SubFilter_ > &filter)
 auxiliary function: filters the local ADP matrix More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _filter_mat (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx, const LAFEM::UnitFilter< DataType, IndexType > &filter)
 auxiliary function: filters the local ADP matrix More...
 
void _format_cor ()
 Formats the HYPRE correction vector to zero. More...
 
String _get_adp_block_information () const
 
String _get_adp_block_information () const
 
Index _get_adp_matrix_num_cols () const
 
Index _get_adp_matrix_num_cols () const
 
Index _get_adp_matrix_num_nzes () const
 
Index _get_adp_matrix_num_nzes () const
 
Index _get_adp_matrix_num_rows () const
 
Index _get_adp_matrix_num_rows () const
 
Index _get_adp_vector_size () const
 
Index _get_adp_vector_size () const
 
const Dist::Comm_get_comm () const
 
const Dist::Comm_get_comm () const
 
Index _get_global_dof_offset () const
 
Index _get_global_dof_offset () const
 
Index _get_num_global_dofs () const
 
Index _get_num_global_dofs () const
 
Index _get_num_global_nonzeros () const
 
Index _get_num_global_nonzeros () const
 
Index _get_num_owned_dofs () const
 
Index _get_num_owned_dofs () const
 
void _upload_def (const VectorType &vec_def)
 Uploads the HYPRE defect vector. More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _upload_numeric (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx)
 Uploads the (filtered) ADP matrix values to the given array. More...
 
template<typename DTV_ , typename RPT_ , typename CIT_ >
void _upload_numeric (DTV_ *val, const RPT_ *row_ptr, const CIT_ *col_idx)
 Uploads the (filtered) ADP matrix values to the given array. More...
 
template<typename RPT_ , typename CIT_ >
void _upload_symbolic (RPT_ *row_ptr, CIT_ *col_idx)
 Uploads the ADP matrix structure to the given arrays. More...
 
template<typename RPT_ , typename CIT_ >
void _upload_symbolic (RPT_ *row_ptr, CIT_ *col_idx)
 Uploads the ADP matrix structure to the given arrays. More...
 
template<typename DTV_ >
void _upload_vector (DTV_ *val, const LocalVectorType &vector)
 Uploads the ADP vector values to the given array. More...
 
template<typename DTV_ >
void _upload_vector (DTV_ *val, const VectorType &vector)
 Uploads the ADP vector values to the given array. More...
 

Protected Attributes

Dist::Comm _comm_self
 self-communicator object More...
 
void * _core
 a pointer to our opaque core wrapper object More...
 
double _dparam [2]
 double parameters: More...
 
int _iparam [2]
 integer parameters: More...
 
void * _solver
 the HYPRE solver object More...
 
const FilterType_system_filter
 the system filter More...
 
const MatrixType_system_matrix
 the system matrix More...
 

Detailed Description

template<typename Matrix_, typename Filter_>
class FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >

HYPRE ParaSails Preconditioner Wrapper class template.

This class acts as a wrapper around the ParaSails preconditioner from the HYPRE library. ParaSails is some sort of parallel sparse approximate inverse preconditioner, see the documentation of HYPRE for details.

Todo:
support setting of solver parameters
Author
Peter Zajac

Definition at line 244 of file hypre.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename Matrix_ , typename Filter_ >
typedef HypreSolverBase<Matrix_, Filter_> FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::BaseClass

our base-class

Definition at line 249 of file hypre.hpp.

◆ DataType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef MatrixType::DataType FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::DataType
inherited

our internal data type

Definition at line 783 of file adp_solver_base.hpp.

◆ FilterType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef Filter_ FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::FilterType
inherited

the (local) filter type

Definition at line 777 of file adp_solver_base.hpp.

◆ IndexType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef MatrixType::IndexType FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::IndexType
inherited

our internal index type

Definition at line 785 of file adp_solver_base.hpp.

◆ MatrixType

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
typedef Matrix_ FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::MatrixType
inherited

this specialization expects a local matrix

the (local) matrix type

Definition at line 773 of file adp_solver_base.hpp.

◆ VectorType

template<typename Matrix_ , typename Filter_ >
typedef BaseClass::VectorType FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::VectorType

the vector type

Definition at line 251 of file hypre.hpp.

Constructor & Destructor Documentation

◆ ParaSailsPrecond() [1/2]

template<typename Matrix_ , typename Filter_ >
FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::ParaSailsPrecond ( const Matrix_ &  matrix,
const Filter_ &  filter 
)
inlineexplicit

Definition at line 268 of file hypre.hpp.

◆ ParaSailsPrecond() [2/2]

template<typename Matrix_ , typename Filter_ >
FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::ParaSailsPrecond ( const String section_name,
const PropertyMap section,
const Matrix_ &  matrix,
const Filter_ &  filter 
)
inlineexplicit

Definition at line 279 of file hypre.hpp.

Member Function Documentation

◆ _download_cor()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor ( VectorType &  vec_cor)
inlineprotectedinherited

Downloads the HYPRE correction vector.

This function first queries the vector values from HYPRE into the internal buffer and then downloads the contents to the given correction vector.

Parameters
[out]vec_corThe correction vector to download to.

Definition at line 148 of file hypre.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_filter.

◆ _download_vector() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector ( LocalVectorType &  vector,
const DTV_ *  val 
)
protectedinherited

Downloads the ADP vector values from the given array.

Parameters
[in,out]vectorA transient reference to the local vector that receives the downloaded ADP value array. It is assumed to be allocated to the correct size, but its contents on entry are ignored.
[in]valA transient pointer to an array of length _get_adp_vector_size() that contains the ADP values that are to be downloaded to the output vector given by vector.

Referenced by FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::apply().

◆ _download_vector() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vector ( VectorType vector,
const DTV_ *  val 
)
inlineprotectedinherited

Downloads the ADP vector values from the given array.

Parameters
[in,out]vectorA transient reference to the local vector that receives the downloaded ADP value array. It is assumed to be allocated to the correct size, but its contents on entry are ignored.
[in]valA transient pointer to an array of length _get_adp_vector_size() that contains the ADP values that are to be downloaded to the output vector given by vector.

Definition at line 956 of file adp_solver_base.hpp.

◆ _filter_mat() [1/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const Global::MeanFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 994 of file adp_solver_base.hpp.

References XASSERTM.

◆ _filter_mat() [2/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const LAFEM::MeanFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 986 of file adp_solver_base.hpp.

References XASSERTM.

◆ _filter_mat() [3/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  ,
const RPT_ *  ,
const CIT_ *  ,
const LAFEM::NoneFilter< DataType, IndexType > &   
)
inlineprotectedinherited

◆ _filter_mat() [4/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterChain< First_ > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1020 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [5/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename First_ , typename... Rest_>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterChain< First_, Rest_... > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1011 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [6/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ , typename SubFilter_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::FilterSequence< SubFilter_ > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 1002 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat().

◆ _filter_mat() [7/7]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx,
const LAFEM::UnitFilter< DataType, IndexType > &  filter 
)
inlineprotectedinherited

auxiliary function: filters the local ADP matrix

Definition at line 971 of file adp_solver_base.hpp.

◆ _format_cor()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_format_cor ( )
inlineprotectedinherited

Formats the HYPRE correction vector to zero.

Definition at line 158 of file hypre.hpp.

◆ _get_adp_block_information() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
String FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_block_information ( ) const
protectedinherited
Returns
The block information of the algebraic dof partitioning as an XML string.

◆ _get_adp_block_information() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
String FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_block_information ( ) const
inlineprotectedinherited
Returns
The block information of the algebraic dof partitioning as an XML string.

Definition at line 873 of file adp_solver_base.hpp.

References XABORTM.

◆ _get_adp_matrix_num_cols() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_cols ( ) const
protectedinherited
Returns
The number of columns of the local ADP matrix; equal to _get_num_global_dofs()

◆ _get_adp_matrix_num_cols() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_cols ( ) const
inlineprotectedinherited
Returns
The number of columns of the local ADP matrix; equal to _get_num_global_dofs()

Definition at line 837 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_matrix_num_nzes() [1/2]

◆ _get_adp_matrix_num_nzes() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_nzes ( ) const
inlineprotectedinherited
Returns
The number of nonzero entries of the local ADP matrix

Definition at line 843 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_matrix_num_rows() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_rows ( ) const
protectedinherited
Returns
The number of rows of the local ADP matrix; equal to _get_num_owned_dofs()

◆ _get_adp_matrix_num_rows() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_rows ( ) const
inlineprotectedinherited
Returns
The number of rows of the local ADP matrix; equal to _get_num_owned_dofs()

Definition at line 831 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_adp_vector_size() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_vector_size ( ) const
protectedinherited

◆ _get_adp_vector_size() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_vector_size ( ) const
inlineprotectedinherited
Returns
The size of the local ADP vector; equal to _get_num_owned_dofs()

Definition at line 825 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_comm() [1/2]

◆ _get_comm() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const Dist::Comm * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm ( ) const
inlineprotectedinherited
Returns
A pointer to the underlying (self) communicator

Definition at line 819 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_comm_self.

◆ _get_global_dof_offset() [1/2]

◆ _get_global_dof_offset() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_global_dof_offset ( ) const
inlineprotectedinherited
Returns
The index of the first global DOF owned by this process

Definition at line 867 of file adp_solver_base.hpp.

◆ _get_num_global_dofs() [1/2]

◆ _get_num_global_dofs() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_dofs ( ) const
inlineprotectedinherited
Returns
The total number of global DOFs on all processes

Definition at line 855 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_num_global_nonzeros() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_nonzeros ( ) const
protectedinherited

◆ _get_num_global_nonzeros() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_nonzeros ( ) const
inlineprotectedinherited
Returns
The total number of nonzero entries of the global ADP matrix

Definition at line 849 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _get_num_owned_dofs() [1/2]

◆ _get_num_owned_dofs() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_owned_dofs ( ) const
inlineprotectedinherited
Returns
The number of global DOFs owned by this process

Definition at line 861 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_def()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def ( const VectorType &  vec_def)
inlineprotectedinherited

Uploads the HYPRE defect vector.

This function first uploads the given defect vector the internal buffer and notifies HYPRE that the vector values have changed.

Parameters
[in]vec_defThe defect vector to be uploaded from.

Definition at line 133 of file hypre.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector().

◆ _upload_numeric() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx 
)
protectedinherited

Uploads the (filtered) ADP matrix values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the filtered matrix values of the local ADP matrix.
[in]row_ptrA transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function.
[in]col_idxA transient pointer to the column-index array of the ADP matrix as returned by the _upload_symbolic() function.

Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric().

◆ _upload_numeric() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ , typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric ( DTV_ *  val,
const RPT_ *  row_ptr,
const CIT_ *  col_idx 
)
inlineprotectedinherited

Uploads the (filtered) ADP matrix values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the filtered matrix values of the local ADP matrix.
[in]row_ptrA transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function.
[in]col_idxA transient pointer to the column-index array of the ADP matrix as returned by the _upload_symbolic() function.

Definition at line 917 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_symbolic() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic ( RPT_ *  row_ptr,
CIT_ *  col_idx 
)
protectedinherited

◆ _upload_symbolic() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename RPT_ , typename CIT_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic ( RPT_ *  row_ptr,
CIT_ *  col_idx 
)
inlineprotectedinherited

Uploads the ADP matrix structure to the given arrays.

Parameters
[out]row_ptrA transient pointer to an array of length _get_adp_matrix_num_rows()+1 that receives the the row-pointer array of the ADP matrix.
[out]col_idxA transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the column index array of the ADP matrix.

Definition at line 891 of file adp_solver_base.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.

◆ _upload_vector() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector ( DTV_ *  val,
const LocalVectorType &  vector 
)
protectedinherited

Uploads the ADP vector values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_vector_size() that receives the local ADP values of the input vector given by vector.
[in]vectorA transient reference to the local vector that is to be uploaded to the ADP value array.

Referenced by FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::apply().

◆ _upload_vector() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
template<typename DTV_ >
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector ( DTV_ *  val,
const VectorType vector 
)
inlineprotectedinherited

Uploads the ADP vector values to the given array.

Parameters
[out]valA transient pointer to an array of length _get_adp_vector_size() that receives the local ADP values of the input vector given by vector.
[in]vectorA transient reference to the local vector that is to be uploaded to the ADP value array.

Definition at line 939 of file adp_solver_base.hpp.

◆ apply() [1/2]

template<typename Vector_ >
virtual Status FEAT::Solver::SolverBase< Vector_ >::apply ( Vector_ &  vec_cor,
const Vector_ &  vec_def 
)
pure virtualinherited

Solver application method.

This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.

Note
Solvers which derive from the IterativeSolver base class also provide a correct() method which corrects an initial solution instead of starting with the null vector.
Parameters
[out]vec_corThe vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method.
[in]vec_defThe vector that represents the right-hand-side of the linear system to be solved.
Attention
vec_cor and vec_def must not refer to the same vector object!
Returns
A Status code that represents the status of the solution step.

Implemented in FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::ScalePrecond< Vector_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NLOptPrecond< VectorType_, FilterType_ >, FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, and FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >.

Referenced by FEAT::Solver::solve().

◆ apply() [2/2]

template<typename Matrix_ , typename Filter_ >
virtual Status FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::apply ( VectorType vec_cor,
const VectorType vec_def 
)
inlineoverridevirtual

Definition at line 325 of file hypre.hpp.

◆ done()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::done ( )
inlinevirtualinherited

Finalization method.

This function performs both the symbolic and numeric finalization, i.e. it simply performs

this->done_numeric();
this->done_symbolic();

Definition at line 283 of file base.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_numeric(), and FEAT::Solver::SolverBase< Vector_ >::done_symbolic().

◆ done_numeric()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::done_numeric ( )
inlineoverridevirtual

Numeric finalization method.

This method is called to release any data allocated in the numeric initialization step.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 314 of file hypre.hpp.

References FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::_solver, and FEAT::Solver::SolverBase< Vector_ >::done_numeric().

◆ done_symbolic()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
virtual void FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::done_symbolic ( )
inlineoverridevirtualinherited

Symbolic Finalization.

This function destroys all HYPRE objects managed by this class and resets all auxiliary vectors and pointers.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 221 of file hypre.hpp.

References FEAT::Solver::SolverBase< Vector_ >::done_symbolic(), and XASSERT.

◆ init()

template<typename Vector_ >
virtual void FEAT::Solver::SolverBase< Vector_ >::init ( )
inlinevirtualinherited

Initialization method.

This function performs both the symbolic and numeric initialization, i.e. it simply performs

this->init_symbolic();
this->init_numeric();

Definition at line 268 of file base.hpp.

References FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().

◆ init_numeric()

template<typename Matrix_ , typename Filter_ >
virtual void FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::init_numeric ( )
inlineoverridevirtual

Numeric Initialization.

This function uploads the numerical values of the ADP matrix, which is managed by the base-class, to the HYPRE matrix.

Reimplemented from FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >.

Definition at line 306 of file hypre.hpp.

References FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_core, and FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric().

◆ init_symbolic()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
virtual void FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic ( )
inlineoverridevirtualinherited

Symbolic Initialization.

This function creates the HYPRE matrix and vector objects and initializes their structure/layout by using the algebraic DOF partitioning (ADP) that is managed by the base-class. This function also performs an initial upload of the matrix and vector values from the ADP structures (because HYPRE requires this), although these values may be undefined (but existent) at this point.

Reimplemented from FEAT::Solver::SolverBase< Vector_ >.

Definition at line 173 of file hypre.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_nzes(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_global_dof_offset(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_owned_dofs(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic(), FEAT::Solver::SolverBase< Vector_ >::init_symbolic(), and XASSERT.

◆ name()

template<typename Matrix_ , typename Filter_ >
virtual String FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::name ( ) const
inlineoverridevirtual

Returns a descriptive string.

Returns
A string describing the solver.

Implements FEAT::Solver::SolverBase< Vector_ >.

Definition at line 301 of file hypre.hpp.

Member Data Documentation

◆ _comm_self

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Dist::Comm FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_comm_self
protectedinherited

self-communicator object

Many third-party libraries always expect a MPI_Comm object even if we operate only on a single MPI process, therefore this class creates a custom self-communicator that can be passed on to the third-party libraries.

Definition at line 795 of file adp_solver_base.hpp.

Referenced by FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm().

◆ _core

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void* FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_core
protectedinherited

◆ _dparam

template<typename Matrix_ , typename Filter_ >
double FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::_dparam[2]
protected

double parameters:

Definition at line 265 of file hypre.hpp.

◆ _iparam

template<typename Matrix_ , typename Filter_ >
int FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::_iparam[2]
protected

integer parameters:

Definition at line 260 of file hypre.hpp.

◆ _solver

template<typename Matrix_ , typename Filter_ >
void* FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::_solver
protected

the HYPRE solver object

Definition at line 255 of file hypre.hpp.

Referenced by FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::done_numeric().

◆ _system_filter

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const FilterType& FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_filter
protectedinherited

◆ _system_matrix


The documentation for this class was generated from the following file: