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

HYPRE Euclid Preconditioner Wrapper class template. More...

#include <hypre.hpp>

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

Public Types

typedef HypreSolverBase< Matrix_, Filter_ > BaseClass
 our base-class More...
 
typedef BaseClass::VectorType VectorType
 the vector type More...
 

Public Member Functions

 EuclidPrecond (const Matrix_ &matrix, const Filter_ &filter)
 
 EuclidPrecond (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...
 
void _download_vec_cor (VectorType &vec_cor)
 
void _download_vec_def (VectorType &vec_def)
 
void _format_cor ()
 Format the HYPRE correction vector. More...
 
const Dist::Comm_get_comm () const
 
Index _get_global_dof_offset () const
 
const IndexType * _get_mat_col_idx () const
 
Index _get_mat_num_nze () const
 
const IndexType * _get_mat_row_ptr () const
 
const DataType * _get_mat_vals () const
 
Index _get_num_global_dofs () const
 
Index _get_num_owned_dofs () const
 
DataType * _get_vec_cor_vals (VectorType &vec_cor)
 
const DataType * _get_vec_def_vals (const VectorType &vec_def)
 
DataType * _get_vec_def_vals (VectorType &vec_def)
 
void _upload_def (const VectorType &vec_def)
 Uploads the HYPRE defect vector. More...
 
void _upload_vec_cor (const VectorType &vec_cor)
 
void _upload_vec_def (const VectorType &vec_def)
 

Protected Attributes

void * _core
 a pointer to our opaque core wrapper object More...
 
double _dparam [1]
 double parameters: More...
 
int _iparam [1]
 integer parameters: More...
 
void * _solver
 the HYPRE solver object More...
 

Detailed Description

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

HYPRE Euclid Preconditioner Wrapper class template.

This class acts as a wrapper around the Euclid preconditioner from the HYPRE library. Euclid is some sort of parallel ILU preconditioner, see the documentation of HYPRE for details.

Todo:
support setting of solver parameters
Author
Peter Zajac

Definition at line 389 of file hypre.hpp.

Member Typedef Documentation

◆ BaseClass

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

our base-class

Definition at line 394 of file hypre.hpp.

◆ VectorType

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

the vector type

Definition at line 396 of file hypre.hpp.

Constructor & Destructor Documentation

◆ EuclidPrecond() [1/2]

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

Definition at line 411 of file hypre.hpp.

◆ EuclidPrecond() [2/2]

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

Definition at line 419 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 downloads the HYPRE vector into its ADP correction vector counterpart and afterwards downloads that into the given correction vector.

Parameters
[out]vec_corThe correction vector to download to.

Definition at line 151 of file hypre.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vec_cor(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_vec_cor_vals().

◆ _download_vec_cor()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vec_cor ( VectorType vec_cor)
protectedinherited
Returns
Downloads a correction vector.

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

◆ _download_vec_def()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_download_vec_def ( VectorType vec_def)
protectedinherited
Returns
Downloads a defect vector.

◆ _format_cor()

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

Format the HYPRE correction vector.

Definition at line 136 of file hypre.hpp.

◆ _get_comm()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const Dist::Comm * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_comm ( ) const
protectedinherited

◆ _get_global_dof_offset()

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

◆ _get_mat_col_idx()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const IndexType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_col_idx ( ) const
protectedinherited

◆ _get_mat_num_nze()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
Index FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_num_nze ( ) const
protectedinherited
Returns
The number of non-zero entries in this process's matrix partition

◆ _get_mat_row_ptr()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const IndexType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_row_ptr ( ) const
protectedinherited

◆ _get_mat_vals()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const DataType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_vals ( ) const
protectedinherited

◆ _get_num_global_dofs()

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

◆ _get_num_owned_dofs()

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

◆ _get_vec_cor_vals()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
DataType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_vec_cor_vals ( VectorType vec_cor)
protectedinherited
Returns
The data array of the owned correction vector.

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

◆ _get_vec_def_vals() [1/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
const DataType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_vec_def_vals ( const VectorType vec_def)
protectedinherited
Returns
The data array of the owned defect vector.

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

◆ _get_vec_def_vals() [2/2]

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
DataType * FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_vec_def_vals ( VectorType vec_def)
protectedinherited
Returns
The data array of the owned defect vector.

◆ _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 into its ADP defect vector counterpart and afterwards uploads that into the HYPRE vector counterpart.

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

Definition at line 124 of file hypre.hpp.

References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_vec_def_vals(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vec_def().

◆ _upload_vec_cor()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vec_cor ( const VectorType vec_cor)
protectedinherited
Returns
Uploads a correction vector.

◆ _upload_vec_def()

template<typename Matrix_ , typename Filter_ , typename SolverBase_ = Solver::SolverBase<typename Matrix_::VectorTypeL>>
void FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vec_def ( const VectorType vec_def)
protectedinherited

◆ 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::CuSolverLU, FEAT::Solver::CuSolverQR, 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::EuclidPrecond< Matrix_, Filter_ >::apply ( VectorType vec_cor,
const VectorType vec_def 
)
inlineoverridevirtual

Definition at line 455 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::EuclidPrecond< 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 446 of file hypre.hpp.

References FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >::_solver.

◆ 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 211 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::EuclidPrecond< 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 438 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_comm(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_global_dof_offset(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_col_idx(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_row_ptr(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_owned_dofs(), FEAT::Solver::SolverBase< Vector_ >::init_symbolic(), and XASSERT.

◆ name()

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

Returns a descriptive string.

Returns
A string describing the solver.

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

Definition at line 433 of file hypre.hpp.

Member Data Documentation

◆ _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::EuclidPrecond< Matrix_, Filter_ >::_dparam[1]
protected

double parameters:

Definition at line 408 of file hypre.hpp.

◆ _iparam

template<typename Matrix_ , typename Filter_ >
int FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >::_iparam[1]
protected

integer parameters:

Definition at line 404 of file hypre.hpp.

◆ _solver

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

the HYPRE solver object

Definition at line 400 of file hypre.hpp.

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


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