|
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 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 |
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... | |
| 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... | |
| const FilterType & | _system_filter |
| the system filter More... | |
| const MatrixType & | _system_matrix |
| the system matrix 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, initializing 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 |
|
inherited |
our internal data type
Definition at line 783 of file adp_solver_base.hpp.
|
inherited |
the (local) filter type
Definition at line 777 of file adp_solver_base.hpp.
|
inherited |
our internal index type
Definition at line 785 of file adp_solver_base.hpp.
|
inherited |
this specialization expects a local matrix
the (local) matrix type
Definition at line 773 of file adp_solver_base.hpp.
| typedef BaseClass::VectorType FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::VectorType |
|
inlineexplicitprotected |
|
inlineprotected |
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.
| [out] | vec_cor | The 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.
|
protectedinherited |
Downloads the ADP vector values from the given array.
| [in,out] | vector | A 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] | val | A 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().
|
inlineprotectedinherited |
Downloads the ADP vector values from the given array.
| [in,out] | vector | A 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] | val | A 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.
|
inlineprotectedinherited |
auxiliary function: filters the local ADP matrix
Definition at line 994 of file adp_solver_base.hpp.
References XASSERTM.
|
inlineprotectedinherited |
auxiliary function: filters the local ADP matrix
Definition at line 986 of file adp_solver_base.hpp.
References XASSERTM.
|
inlineprotectedinherited |
auxiliary function: filters the local ADP matrix
Definition at line 963 of file adp_solver_base.hpp.
Referenced by FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_filter_mat(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_filter_mat(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_upload_numeric(), and FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric().
|
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().
|
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().
|
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().
|
inlineprotectedinherited |
auxiliary function: filters the local ADP matrix
Definition at line 971 of file adp_solver_base.hpp.
|
inlineprotected |
|
protectedinherited |
|
inlineprotectedinherited |
Definition at line 873 of file adp_solver_base.hpp.
References XABORTM.
|
protectedinherited |
|
inlineprotectedinherited |
Definition at line 837 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Definition at line 843 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
|
inlineprotectedinherited |
Definition at line 831 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
Referenced by FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_download_vector(), and FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_upload_vector().
|
inlineprotectedinherited |
Definition at line 825 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Definition at line 819 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_comm_self.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Definition at line 867 of file adp_solver_base.hpp.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_get_adp_matrix_num_cols(), FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Definition at line 855 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), and FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack().
|
inlineprotectedinherited |
Definition at line 849 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
protectedinherited |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_get_adp_matrix_num_rows(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_get_adp_vector_size(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Definition at line 861 of file adp_solver_base.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_system_matrix.
|
inlineprotected |
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.
| [in] | vec_def | The defect vector to be uploaded from. |
Definition at line 133 of file hypre.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_vector().
|
protectedinherited |
Uploads the (filtered) ADP matrix values to the given array.
| [out] | val | A 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_ptr | A transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function. |
| [in] | col_idx | A 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().
|
inlineprotectedinherited |
Uploads the (filtered) ADP matrix values to the given array.
| [out] | val | A 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_ptr | A transient pointer to the row-pointer array of the ADP matrix as returned by the _upload_symbolic() function. |
| [in] | col_idx | A 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.
|
protectedinherited |
Uploads the ADP matrix structure to the given arrays.
| [out] | row_ptr | A transient pointer to an array of length _get_adp_matrix_num_rows()+1 that receives the the row-pointer array of the local ADP matrix. |
| [out] | col_idx | A transient pointer to an array of length _get_adp_matrix_num_nzes() that receives the column index array of the local ADP matrix. |
Referenced by FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_cudss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mkldss(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_mumps(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_superlu(), FEAT::Solver::DirectSparseSolver< Matrix_, Filter_ >::_create_core_umfpack(), FEAT::Solver::FROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::StokesFROSchPreconditioner< Matrix_, Filter_ >::init_symbolic(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_symbolic(), and FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_symbolic().
|
inlineprotectedinherited |
Uploads the ADP matrix structure to the given arrays.
| [out] | row_ptr | A 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_idx | A 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.
|
protectedinherited |
Uploads the ADP vector values to the given array.
| [out] | val | A 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] | vector | A 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().
|
inlineprotectedinherited |
Uploads the ADP vector values to the given array.
| [out] | val | A 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] | vector | A 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.
|
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::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::DirectSparseSolver< Matrix_, 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::FROSchPreconditioner< Matrix_, Filter_ >, 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::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_ >, 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::DirectSparseSolver< Matrix_, Filter_ >::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::SuperLU< 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 221 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 202 of file hypre.hpp.
References FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric(), 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_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.
|
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::Descent< Matrix_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::DirectSparseSolver< Matrix_, 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::FROSchPreconditioner< Matrix_, Filter_ >, FEAT::Solver::StokesFROSchPreconditioner< Matrix_, 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().
|
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().
|
protected |
a pointer to our opaque core wrapper object
Definition at line 116 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().
|
protectedinherited |
the system filter
Definition at line 799 of file adp_solver_base.hpp.
Referenced by FEAT::Solver::TpetraSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor(), and FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::_download_cor().
|
protectedinherited |
the system matrix
Definition at line 797 of file adp_solver_base.hpp.
Referenced by FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_cols(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_nzes(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_matrix_num_rows(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_adp_vector_size(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_dofs(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_global_nonzeros(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_get_num_owned_dofs(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_upload_numeric(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_numeric(), FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::_upload_symbolic(), FEAT::Solver::ADPSolverBase< Matrix_, Filter_, SolverBase_ >::_upload_symbolic(), and FEAT::Solver::ADPSolverBase< Global::PMDCDSCMatrix< MatrixB_, MatrixD_ >, GlobalFilter_, SolverBase_ >::init_symbolic().