| FEAT 3
    Finite Element Analysis Toolbox | 
Base-Class for solvers/preconditioners borrowed from HYPRE library. More...
#include <hypre.hpp>
 
  
| Public Types | |
| typedef ADPSolverBase< Matrix_, Filter_, SolverBase_ > | BaseClass | 
| our base-class  More... | |
| typedef BaseClass::VectorType | VectorType | 
| Public Member Functions | |
| virtual Status | apply (Vector_ &vec_cor, const Vector_ &vec_def)=0 | 
| Solver application method.  More... | |
| virtual void | done () | 
| Finalization method.  More... | |
| virtual void | done_numeric () | 
| 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 =0 | 
| Returns a descriptive string.  More... | |
| Protected Member Functions | |
| HypreSolverBase (const Matrix_ &matrix, const Filter_ &filter) | |
| 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... | |
Base-Class for solvers/preconditioners borrowed from HYPRE library.
This class acts as a base-class for all solvers that we borrow from the HYPRE library. As all our HYPRE solvers use the "IJ"-based ParCSR format, which corresponds to our "algebraic DOF partitioning", this class derives from the ADPSolverBase class, which takes care of the translation between the system matrix and the ADP data structures.
This base-class takes care of allocating, initialising and updating the required HYPRE matrix and vector objects, which are outsourced into an opaque core wrapper object.
| typedef ADPSolverBase<Matrix_, Filter_, SolverBase_> FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::BaseClass | 
| typedef BaseClass::VectorType FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::VectorType | 
| 
 | inlineexplicitprotected | 
| 
 | inlineprotected | 
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.
| [out] | vec_cor | The 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().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor().
| 
 | protectedinherited | 
| 
 | inlineprotected | 
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor().
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_def().
| 
 | protectedinherited | 
| 
 | inlineprotected | 
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.
| [in] | vec_def | The 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().
| 
 | protectedinherited | 
| 
 | protectedinherited | 
Referenced by FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_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.
correct() method which corrects an initial solution instead of starting with the null vector.| [out] | vec_cor | The 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_def | The vector that represents the right-hand-side of the linear system to be solved. | 
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().
| 
 | 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().
| 
 | inlinevirtualinherited | 
Numeric finalization method.
This method is called to release any data allocated in the numeric initialization step.
Reimplemented in FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, FEAT::Solver::CUDSS, FEAT::Solver::DirectStokesSolver< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, LAFEM::TupleFilter< FilterV_, FilterP_ > >, FEAT::Solver::DirectStokesSolver< Global::Matrix< LocalMatrix_, Mirror_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, FEAT::Solver::BoomerAMG< Matrix_, Filter_ >, FEAT::Solver::PreconditionedIterativeSolver< Vector_ >, FEAT::Solver::PreconditionedIterativeSolver< Matrix_::VectorTypeR >, FEAT::Solver::PreconditionedIterativeSolver< Functional_::VectorTypeR >, FEAT::Solver::MKLDSS, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::PCGNR< Matrix_, Filter_ >, FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::Umfpack, FEAT::Solver::UmfpackMean, FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >, FEAT::Solver::GenericUmfpack< Matrix_ >, FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >.
Definition at line 246 of file base.hpp.
Referenced by FEAT::Solver::SolverBase< Vector_ >::done(), FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric(), FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >::done_numeric(), FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >::done_numeric(), FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::PreconditionedIterativeSolver< Vector_ >::done_numeric(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::done_numeric(), FEAT::Solver::PCGNR< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::done_numeric(), FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric().
| 
 | inlineoverridevirtual | 
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.
| 
 | 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().
| 
 | 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::SolverBase< Vector_ >.
Reimplemented in FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, and FEAT::Solver::BoomerAMG< Matrix_, Filter_ >.
Definition at line 195 of file hypre.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_mat_vals(), FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and XASSERT.
Referenced by FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >::init_numeric(), and FEAT::Solver::BoomerAMG< Matrix_, Filter_ >::init_numeric().
| 
 | inlineoverridevirtual | 
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.
| 
 | pure virtualinherited | 
Returns a descriptive string.
Implemented in FEAT::Solver::ALGLIBMinLBFGS< Functional_, Filter_ >, FEAT::Solver::ALGLIBMinCG< Functional_, Filter_ >, FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::BiCGStab< Matrix_, Filter_ >, FEAT::Solver::BiCGStabL< Matrix_, Filter_ >, FEAT::Solver::Chebyshev< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, FEAT::Solver::CUDSS, FEAT::Solver::CuSolverLU, FEAT::Solver::CuSolverQR, FEAT::Solver::Descent< Matrix_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::DirectStokesSolver< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, LAFEM::TupleFilter< FilterV_, FilterP_ > >, FEAT::Solver::DirectStokesSolver< Global::Matrix< LocalMatrix_, Mirror_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::FGMRES< Matrix_, Filter_ >, FEAT::Solver::FixedStepLinesearch< Functional_, Filter_ >, FEAT::Solver::GMRES< Matrix_, Filter_ >, FEAT::Solver::GroppPCG< Matrix_, Filter_ >, FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, FEAT::Solver::BoomerAMG< Matrix_, Filter_ >, FEAT::Solver::IDRS< Matrix_, Filter_ >, FEAT::Solver::ILUPrecond< Matrix_, Filter_ >, FEAT::Solver::JacobiPrecond< Matrix_, Filter_ >, FEAT::Solver::MatrixPrecond< Matrix_, Filter_ >, FEAT::Solver::MKLDSS, FEAT::Solver::MQCLinesearch< Functional_, Filter_ >, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NewtonRaphsonLinesearch< Functional_, Filter_ >, FEAT::Solver::NLCG< Functional_, Filter_ >, FEAT::Solver::NonlinearOperatorPrecondWrapper< NonlinearOperator_ >, FEAT::Solver::NLSD< Functional_, Filter_ >, FEAT::Solver::PCG< Matrix_, Filter_ >, FEAT::Solver::PCGNR< Matrix_, Filter_ >, FEAT::Solver::PCGNRILU< Matrix_, Filter_ >, FEAT::Solver::PCR< Matrix_, Filter_ >, FEAT::Solver::PipePCG< Matrix_, Filter_ >, FEAT::Solver::PMR< Matrix_, Filter_ >, FEAT::Solver::PolynomialPrecond< Matrix_, Filter_ >, FEAT::Solver::PreconWrapper< Matrix_, Filter_, Precon_ >, FEAT::Solver::PSD< Matrix_, Filter_ >, FEAT::Solver::QPenalty< Functional_ >, FEAT::Solver::RBiCGStab< Matrix_, Filter_ >, FEAT::Solver::RGCR< Matrix_, Filter_ >, FEAT::Solver::Richardson< Matrix_, Filter_ >, FEAT::Solver::ScalePrecond< Vector_, Filter_ >, FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::SecantLinesearch< Functional_, Filter_ >, FEAT::Solver::SORPrecond< Matrix_, Filter_ >, FEAT::Solver::SSORPrecond< Matrix_, Filter_ >, FEAT::Solver::SuperLU< Matrix_, Filter_ >, FEAT::Solver::Umfpack, FEAT::Solver::UmfpackMean, FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >, FEAT::Solver::GenericUmfpack< Matrix_ >, FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::Vanka< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, Filter_ >, FEAT::Solver::VoxelAmaVanka< Matrix_, Filter_, pol_threading_, macro_type_ >, FEAT::Solver::NLOptPrecond< VectorType_, FilterType_ >, FEAT::Solver::NLOptPrecond< OperatorType_::VectorType, Filter >, FEAT::Solver::NLOptPrecond< Operator_::VectorType, Filter_ >, and FEAT::Solver::NLOptPrecond< NonlinearOperator_::SystemLevelType::GlobalSystemVectorR, NonlinearOperator_::SystemLevelType::GlobalSystemFilter >.
Referenced by FEAT::Solver::PreconditionedIterativeSolver< Vector_ >::_apply_precond(), FEAT::Solver::Linesearch< Functional_, Filter_ >::_check_convergence(), FEAT::Solver::IterativeSolver< Vector_ >::_set_initial_defect(), FEAT::Solver::NLOptLS< Functional_, Filter_ >::_set_initial_defect(), FEAT::Solver::IterativeSolver< Vector_ >::_set_new_defect(), FEAT::Solver::NLOptLS< Functional_, Filter_ >::_set_new_defect(), and FEAT::Solver::IterativeSolver< Vector_ >::_update_defect().
| 
 | protected | 
a pointer to our opaque core wrapper object
Definition at line 107 of file hypre.hpp.
Referenced by FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >::init_numeric(), and FEAT::Solver::BoomerAMG< Matrix_, Filter_ >::init_numeric().