|
Feel++ 0.91.0
|
! More...
#include <backend.hpp>
Public Types | |
Typedefs | |
| typedef T | value_type |
| typedef type_traits< T >::real_type | real_type |
| typedef Vector< value_type > | vector_type |
|
typedef boost::shared_ptr < vector_type > | vector_ptrtype |
| typedef MatrixSparse< value_type > | sparse_matrix_type |
|
typedef boost::shared_ptr < sparse_matrix_type > | sparse_matrix_ptrtype |
| typedef Backend< value_type > | backend_type |
|
typedef boost::shared_ptr < backend_type > | backend_ptrtype |
|
typedef SolverNonLinear < value_type > | solvernonlinear_type |
|
typedef boost::shared_ptr < solvernonlinear_type > | solvernonlinear_ptrtype |
|
typedef boost::tuple< bool, size_type, value_type > | solve_return_type |
|
typedef boost::tuple< bool, size_type, value_type > | nl_solve_return_type |
Public Member Functions | |
Accessors | |
| std::string | kspType () |
| std::string | pcType () |
| PreconditionerType | pcEnumType () |
| SolverType | kspEnumType () |
| MatrixStructure | precMatrixStructure () const |
| value_type | rTolerance () const |
| value_type | dTolerance () const |
| value_type | aTolerance () const |
| size_type | maxIterations () const |
| bool | converged () const |
| size_type | nIterations () const |
| bool | transpose () const |
| mpi::communicator const & | comm () const |
Mutators | |
| BOOST_PARAMETER_MEMBER_FUNCTION ((void), setTolerances, tag,(required(rtolerance,(double)))(optional(maxit,(size_type), 1000)(atolerance,(double), 1e-50)(dtolerance,(double), 1e5))) | |
| BOOST_PARAMETER_MEMBER_FUNCTION ((void), setSolverType, tag,(required(ksp,(std::string)))(optional(pc,(std::string),"lu"))) | |
| void | setPrecMatrixStructure (MatrixStructure mstruct) |
| solvernonlinear_ptrtype | nlSolver () |
| void | setTranspose (bool transpose) |
Methods | |
| virtual real_type | dot (vector_type const &x, vector_type const &y) const |
| real_type | dot (vector_ptrtype const &x, vector_ptrtype const &y) const |
| virtual void | prod (sparse_matrix_type const &A, vector_type const &x, vector_type &y) const =0 |
| void | prod (sparse_matrix_ptrtype const &A, vector_ptrtype const &x, vector_ptrtype &y) const |
| BOOST_PARAMETER_MEMBER_FUNCTION ((solve_return_type), solve, tag,(required(matrix,(sparse_matrix_ptrtype))(in_out(solution),*(mpl::or_< boost::is_convertible< mpl::_, vector_type & >, boost::is_convertible< mpl::_, vector_ptrtype > >))(rhs,(vector_ptrtype)))(optional(prec,(sparse_matrix_ptrtype), matrix)(maxit,(size_type), M_maxit)(rtolerance,(double), M_rtolerance)(atolerance,(double), M_atolerance)(dtolerance,(double), M_dtolerance)(reuse_prec,(bool), false)(transpose,(bool), false)(pc,(std::string), M_pc)(ksp,(std::string), M_ksp))) | |
| virtual solve_return_type | solve (sparse_matrix_ptrtype const &A, sparse_matrix_ptrtype const &P, vector_ptrtype &x, vector_ptrtype const &b)=0 |
| solve_return_type | solve (sparse_matrix_ptrtype const &A, sparse_matrix_ptrtype const &P, vector_ptrtype &x, vector_ptrtype const &b, bool reuse_prec) |
| virtual nl_solve_return_type | nlSolve (sparse_matrix_ptrtype &A, vector_ptrtype &x, vector_ptrtype &b, const double, const int) |
| virtual nl_solve_return_type | nlSolve (sparse_matrix_ptrtype &A, vector_ptrtype &x, vector_ptrtype &b, const double, const int, bool reusePC) |
Constructors, destructor | |
| Backend () | |
| Backend (po::variables_map const &vm, std::string const &prefix="") | |
| Backend (Backend const &) | |
| virtual | ~Backend () |
| virtual sparse_matrix_ptrtype | newMatrix (const size_type m, const size_type n, const size_type m_l, const size_type n_l, const size_type nnz=30, const size_type noz=10)=0 |
| virtual sparse_matrix_ptrtype | newMatrix (DataMap const &dm1, DataMap const &dm2)=0 |
| template<typename DomainSpace , typename ImageSpace > | |
| sparse_matrix_ptrtype | newMatrix (DomainSpace const &dm, ImageSpace const &im) |
| template<int NR, int NC> | |
| sparse_matrix_ptrtype | newBlockMatrix (Blocks< NR, NC, T > const &b) |
| virtual vector_ptrtype | newVector (DataMap const &dm)=0 |
| template<typename DomainSpace > | |
| vector_ptrtype | newVector (DomainSpace const &dm) |
| static backend_ptrtype | build (BackendType=BACKEND_PETSC) |
| static backend_ptrtype | build (po::variables_map const &vm, std::string const &prefix="") |
!
base class for all linear algebra backends
| value_type Feel::Backend< T >::aTolerance | ( | ) | const [inline] |
| Feel::Backend< T >::BOOST_PARAMETER_MEMBER_FUNCTION | ( | (void) | , |
| setTolerances | , | ||
| tag | , | ||
| (required(rtolerance,(double)))(optional(maxit,(size_type), 1000)(atolerance,(double),1e-50)(dtolerance,(double),1e5)) | |||
| ) | [inline] |
set tolerances: relative tolerance rtol, divergence tolerance dtol and absolute tolerance atol
| Feel::Backend< T >::BOOST_PARAMETER_MEMBER_FUNCTION | ( | (void) | , |
| setSolverType | , | ||
| tag | , | ||
| (required(ksp,(std::string)))(optional(pc,(std::string),"lu")) | |||
| ) | [inline] |
set solver: krylov subspace method and preconditioners
| Feel::Backend< T >::BOOST_PARAMETER_MEMBER_FUNCTION | ( | (solve_return_type) | , |
| solve | , | ||
| tag | , | ||
| (required(matrix,(sparse_matrix_ptrtype))(in_out(solution),*(mpl::or_< boost::is_convertible< mpl::_, vector_type & >,boost::is_convertible< mpl::_, vector_ptrtype > >))(rhs,(vector_ptrtype)))(optional(prec,(sparse_matrix_ptrtype), matrix)(maxit,(size_type), M_maxit)(rtolerance,(double), M_rtolerance)(atolerance,(double), M_atolerance)(dtolerance,(double), M_dtolerance)(reuse_prec,(bool), false)(transpose,(bool), false)(pc,(std::string), M_pc)(ksp,(std::string), M_ksp)) | |||
| ) | [inline] |
solve for
where
is an approximation of the inverse of
. this interface uses the boost.parameter library to ease the function usage
| A | matrix to inverse |
| rhs | right hand side vector |
| solution | solution of the system |
| P | preconditioner |
| maxit | maximum number of iterations |
| tolerance | tolerance on the residual |
| reuse_prec | if true use adaptive preconditioning strategy |
| transpose | if true solve the transpose problem |
References Feel::Backend< T >::newVector(), and Feel::Backend< T >::solve().
| Backend< T >::backend_ptrtype Feel::Backend< T >::build | ( | po::variables_map const & | vm, |
| std::string const & | prefix = "" |
||
| ) | [static] |
Builds a Backend
| Backend< T >::backend_ptrtype Feel::Backend< T >::build | ( | BackendType | bt = BACKEND_PETSC | ) | [static] |
Builds a Backend, if Petsc is available, use Petsc by default, otherwise use GMM which is distributed with feel
| mpi::communicator const& Feel::Backend< T >::comm | ( | ) | const [inline] |
| Backend< T >::real_type Feel::Backend< T >::dot | ( | vector_type const & | x, |
| vector_type const & | y | ||
| ) | const [virtual] |
clean up
References Feel::Vector< T >::localSize().
Referenced by Feel::Backend< T >::dot().
| real_type Feel::Backend< T >::dot | ( | vector_ptrtype const & | x, |
| vector_ptrtype const & | y | ||
| ) | const [inline] |
References Feel::Backend< T >::dot().
| value_type Feel::Backend< T >::dTolerance | ( | ) | const [inline] |
| SolverType Feel::Backend< T >::kspEnumType | ( | ) |
return enum solver type from options
| std::string Feel::Backend< T >::kspType | ( | ) | [inline] |
| size_type Feel::Backend< T >::maxIterations | ( | ) | const [inline] |
| sparse_matrix_ptrtype Feel::Backend< T >::newBlockMatrix | ( | Blocks< NR, NC, T > const & | b | ) | [inline] |
instantiate a new block matrix sparse
| virtual sparse_matrix_ptrtype Feel::Backend< T >::newMatrix | ( | DataMap const & | dm1, |
| DataMap const & | dm2 | ||
| ) | [pure virtual] |
instantiate a new sparse vector
Implemented in Feel::BackendGmm< T >, and Feel::BackendPetsc< T >.
| sparse_matrix_ptrtype Feel::Backend< T >::newMatrix | ( | DomainSpace const & | dm, |
| ImageSpace const & | im | ||
| ) | [inline] |
helper function
References Feel::Backend< T >::newMatrix().
| virtual sparse_matrix_ptrtype Feel::Backend< T >::newMatrix | ( | const size_type | m, |
| const size_type | n, | ||
| const size_type | m_l, | ||
| const size_type | n_l, | ||
| const size_type | nnz = 30, |
||
| const size_type | noz = 10 |
||
| ) | [pure virtual] |
instantiate a new sparse vector
Implemented in Feel::BackendGmm< T >, and Feel::BackendPetsc< T >.
Referenced by Feel::Backend< T >::newMatrix().
| vector_ptrtype Feel::Backend< T >::newVector | ( | DomainSpace const & | dm | ) | [inline] |
helper function
References Feel::Backend< T >::newVector().
| virtual vector_ptrtype Feel::Backend< T >::newVector | ( | DataMap const & | dm | ) | [pure virtual] |
instantiate a new vector
Implemented in Feel::BackendGmm< T >, and Feel::BackendPetsc< T >.
Referenced by Feel::Backend< T >::BOOST_PARAMETER_MEMBER_FUNCTION(), and Feel::Backend< T >::newVector().
| Backend< T >::nl_solve_return_type Feel::Backend< T >::nlSolve | ( | sparse_matrix_ptrtype & | A, |
| vector_ptrtype & | x, | ||
| vector_ptrtype & | b, | ||
| const double | tol, | ||
| const int | its | ||
| ) | [virtual] |
solve for the nonlinear problem
| Backend< T >::nl_solve_return_type Feel::Backend< T >::nlSolve | ( | sparse_matrix_ptrtype & | A, |
| vector_ptrtype & | x, | ||
| vector_ptrtype & | b, | ||
| const double | tol, | ||
| const int | its, | ||
| bool | reusePC | ||
| ) | [virtual] |
solve for the nonlinear problem
with an adaptive strategy to reuse the preconditioner
| solvernonlinear_ptrtype Feel::Backend< T >::nlSolver | ( | ) | [inline] |
| PreconditionerType Feel::Backend< T >::pcEnumType | ( | ) |
return enum pc type from options
| std::string Feel::Backend< T >::pcType | ( | ) | [inline] |
| MatrixStructure Feel::Backend< T >::precMatrixStructure | ( | ) | const [inline] |
| virtual void Feel::Backend< T >::prod | ( | sparse_matrix_type const & | A, |
| vector_type const & | x, | ||
| vector_type & | y | ||
| ) | const [pure virtual] |
Implemented in Feel::BackendGmm< T >, and Feel::BackendPetsc< T >.
Referenced by Feel::Backend< T >::prod().
| void Feel::Backend< T >::prod | ( | sparse_matrix_ptrtype const & | A, |
| vector_ptrtype const & | x, | ||
| vector_ptrtype & | y | ||
| ) | const [inline] |
References Feel::Backend< T >::prod().
| value_type Feel::Backend< T >::rTolerance | ( | ) | const [inline] |
| void Feel::Backend< T >::setPrecMatrixStructure | ( | MatrixStructure | mstruct | ) | [inline] |
set the type of preconditioner associated to the matrix
Referenced by Feel::BackendPetsc< T >::solve().
| Backend< T >::solve_return_type Feel::Backend< T >::solve | ( | sparse_matrix_ptrtype const & | A, |
| sparse_matrix_ptrtype const & | P, | ||
| vector_ptrtype & | x, | ||
| vector_ptrtype const & | b, | ||
| bool | reuse_prec | ||
| ) |
solve for
where
is an approximation of the inverse of
using an adaptive preconditioning strategy.
| A | matrix to inverse |
| rhs | right hand side vector |
| solution | solution of the system |
| P | preconditioner |
| maxit | maximum number of iterations |
| tolerance | tolerance on the residual |
| transpose | if true solve the transpose problem |
| virtual solve_return_type Feel::Backend< T >::solve | ( | sparse_matrix_ptrtype const & | A, |
| sparse_matrix_ptrtype const & | P, | ||
| vector_ptrtype & | x, | ||
| vector_ptrtype const & | b | ||
| ) | [pure virtual] |
solve for
where
is an approximation of the inverse of
.
| A | matrix to inverse |
| rhs | right hand side vector |
| solution | solution of the system |
| P | preconditioner |
| maxit | maximum number of iterations |
| tolerance | tolerance on the residual |
| transpose | if true solve the transpose problem |
Implemented in Feel::BackendGmm< T >, and Feel::BackendPetsc< T >.
Referenced by Feel::Backend< T >::BOOST_PARAMETER_MEMBER_FUNCTION().
1.7.4