Logo  0.95.0-final
Finite Element Embedded Library and Language in C++
Feel++ Feel++ on Github Feel++ community
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Feel::BackendEigen< T, _Options > Class Template Reference

#include <backendeigen.hpp>

Detailed Description

template<typename T, int _Options = 0>
class Feel::BackendEigen< T, _Options >

this class provides an interface to the EIGEN linear algebra library

+ Inheritance diagram for Feel::BackendEigen< T, _Options >:

Public Types

typedef super::datamap_ptrtype datamap_ptrtype
 
typedef super::datamap_type datamap_type
 
typedef boost::shared_ptr
< eigen_sparse_matrix_type > 
eigen_sparse_matrix_ptrtype
 
typedef mpl::if_< mpl::bool_
< IsDense >, mpl::identity
< MatrixEigenDense< value_type >
>, mpl::identity
< MatrixEigenSparse
< value_type > > >::type::type 
eigen_sparse_matrix_type
 
typedef boost::shared_ptr
< vector_type
eigen_vector_ptrtype
 
typedef VectorEigen< value_type > eigen_vector_type
 
typedef
sparse_matrix_type::graph_ptrtype 
graph_ptrtype
 
typedef
sparse_matrix_type::graph_type 
graph_type
 
typedef super::nl_solve_return_type nl_solve_return_type
 
typedef super::real_type real_type
 
typedef super::solve_return_type solve_return_type
 
typedef
super::sparse_matrix_ptrtype 
sparse_matrix_ptrtype
 
typedef super::sparse_matrix_type sparse_matrix_type
 
typedef super::value_type value_type
 
typedef super::vector_ptrtype vector_ptrtype
 
typedef super::vector_type vector_type
 
- Public Types inherited from Feel::Backend< T >
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 MatrixShell< value_type > shell_matrix_type
 
typedef boost::shared_ptr
< shell_matrix_type
shell_matrix_ptrtype
 
typedef
sparse_matrix_type::graph_type 
graph_type
 
typedef
sparse_matrix_type::graph_ptrtype 
graph_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
 
typedef DataMap datamap_type
 
typedef boost::shared_ptr
< datamap_type
datamap_ptrtype
 

Public Member Functions

 BackendEigen (WorldComm const &worldComm=Environment::worldComm())
 
 BackendEigen (po::variables_map const &vm, std::string const &prefix="", WorldComm const &worldComm=Environment::worldComm())
 
real_type dot (const vector_type &f, const vector_type &x) const
 
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, size_type matrix_properties=NON_HERMITIAN)
 
sparse_matrix_ptrtype newMatrix (const size_type m, const size_type n, const size_type m_l, const size_type n_l, graph_ptrtype const &graph, size_type matrix_properties=NON_HERMITIAN)
 
sparse_matrix_ptrtype newMatrix (datamap_ptrtype const &d1, datamap_ptrtype const &d2, size_type matrix_properties=NON_HERMITIAN, bool init=true)
 
vector_ptrtype newVector (datamap_ptrtype const &d)
 
vector_ptrtype newVector (const size_type n, const size_type n_local)
 
sparse_matrix_ptrtype newZeroMatrix (const size_type m, const size_type n, const size_type m_l, const size_type n_l)
 
sparse_matrix_ptrtype newZeroMatrix (datamap_ptrtype const &d1, datamap_ptrtype const &d2)
 
void prod (sparse_matrix_type const &A, vector_type const &x, vector_type &b) const
 
solve_return_type solve (sparse_matrix_type const &A, vector_type &x, const vector_type &b)
 
solve_return_type solve (sparse_matrix_ptrtype const &A, vector_ptrtype &x, const vector_ptrtype &b)
 
solve_return_type solve (sparse_matrix_ptrtype const &A, sparse_matrix_ptrtype const &P, vector_ptrtype &x, const vector_ptrtype &b)
 
- Public Member Functions inherited from Feel::Backend< T >
std::string prefix () const
 
std::string kspType () const
 
std::string pcType () const
 
bool hasConstantNullSpace () const
 
std::string fieldsplitType () const
 
PreconditionerType pcEnumType () const
 
SolverType kspEnumType () const
 
FieldSplitType fieldSplitEnumType () const
 
std::string pcFactorMatSolverPackageType () const
 
MatSolverPackageType matSolverPackageEnumType () const
 
MatrixStructure precMatrixStructure () const
 
value_type rTolerance () const
 
value_type rToleranceSNES () const
 
value_type dTolerance () const
 
value_type sToleranceSNES () const
 
value_type aTolerance () const
 
value_type aToleranceSNES () const
 
size_type maxIterations () const
 
size_type maxIterationsSNES () const
 
value_type rtoleranceKSPinSNES () const
 
bool converged () const
 
size_type nIterations () const
 
bool transpose () const
 
WorldComm const & comm () const
 
bool showKSPMonitor () const
 
bool showSNESMonitor () const
 
bool showKSPConvergedReason () const
 
bool showSNESConvergedReason () const
 
bool reusePrec () const
 
bool reuseJac () const
 
bool reusePrecRebuildAtFirstNewtonStep () const
 
bool reuseJacRebuildAtFirstNewtonStep () const
 
BackendType type () const
 
void setPrecMatrixStructure (MatrixStructure mstruct)
 
solvernonlinear_ptrtype nlSolver ()
 
void setTranspose (bool transpose)
 
void setShowKSPMonitor (bool b)
 
void setShowSNESMonitor (bool b)
 
void setShowKSPConvergedReason (bool b)
 
void setShowSNESConvergedReason (bool b)
 
void setReusePrec (bool b)
 
void setReuseJac (bool b)
 
void setReusePrecRebuildAtFirstNewtonStep (bool b)
 
void setReuseJacRebuildAtFirstNewtonStep (bool b)
 
virtual void clear ()
 
real_type dot (vector_ptrtype const &x, vector_ptrtype const &y) const
 
void prod (sparse_matrix_ptrtype const &A, vector_ptrtype const &x, vector_ptrtype &y) const
 
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, bool reuseJAC)
 
void attachPreconditioner (preconditioner_ptrtype preconditioner)
 
template<typename Observer >
void addDeleteObserver (Observer const &obs)
 
template<typename Observer >
void addDeleteObserver (boost::shared_ptr< Observer > const &obs)
 
void sendDeleteSignal ()
 
 Backend (WorldComm const &worldComm=Environment::worldComm())
 
 Backend (po::variables_map const &vm, std::string const &prefix="", WorldComm const &worldComm=Environment::worldComm())
 
 Backend (Backend const &)
 
virtual ~Backend ()
 
sparse_matrix_ptrtype newMatrix (const size_type m, const size_type n, const size_type m_l, const size_type n_l, graph_ptrtype const &graph, std::vector< std::vector< size_type > > indexSplit, size_type matrix_properties=NON_HERMITIAN)
 
sparse_matrix_ptrtype newMatrix (datamap_ptrtype const &domainmap, datamap_ptrtype const &imagemap, graph_ptrtype const &graph, size_type matrix_properties=NON_HERMITIAN, bool init=true)
 
template<typename DomainSpace , typename ImageSpace >
sparse_matrix_ptrtype newMatrix (DomainSpace const &dm, ImageSpace const &im, sparse_matrix_ptrtype const &M, size_type prop=NON_HERMITIAN)
 
sparse_matrix_ptrtype newBlockMatrixImpl (vf::BlocksBase< sparse_matrix_ptrtype > const &b, bool copy_values=true, bool diag_is_nonzero=true)
 
sparse_matrix_ptrtype newBlockMatrixImpl (vf::BlocksBase< boost::shared_ptr< GraphCSR > > const &b, bool copy_values=true, bool diag_is_nonzero=true)
 
template<typename BlockType = vector_ptrtype>
vector_ptrtype newBlockVectorImpl (vf::BlocksBase< BlockType > const &b, bool copy_values=true)
 

Static Public Member Functions

template<typename DomainSpace , typename DualImageSpace >
static sparse_matrix_ptrtype newMatrix (boost::shared_ptr< DomainSpace > const &space1, boost::shared_ptr< DualImageSpace > const &space2, size_type matrix_properties=NON_HERMITIAN)
 
template<typename SpaceT >
static vector_ptrtype newVector (boost::shared_ptr< SpaceT > const &space)
 
template<typename SpaceT >
static vector_ptrtype newVector (SpaceT const &space)
 
- Static Public Member Functions inherited from Feel::Backend< T >
static backend_ptrtype build (BackendType=BACKEND_GMM, WorldComm const &worldComm=Environment::worldComm())
 
static backend_ptrtype build (po::variables_map const &vm, std::string const &prefix="", WorldComm const &worldComm=Environment::worldComm())
 

Static Public Attributes

static const bool IsDense = (_Options == 1)
 
static const bool IsSparse = (_Options == 0)
 

Additional Inherited Members

- Protected Attributes inherited from Feel::Backend< T >
preconditioner_ptrtype M_preconditioner
 

Member Function Documentation

template<typename T, int _Options = 0>
real_type Feel::BackendEigen< T, _Options >::dot ( const vector_type x,
const vector_type y 
) const
inlinevirtual
Returns
$ r = x^T * y $

Reimplemented from Feel::Backend< T >.

References Feel::VectorEigen< T >::vec().

template<typename T, int _Options = 0>
sparse_matrix_ptrtype Feel::BackendEigen< T, _Options >::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,
size_type  prop = NON_HERMITIAN 
)
inlinevirtual

instantiate a new sparse vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
sparse_matrix_ptrtype Feel::BackendEigen< T, _Options >::newMatrix ( const size_type  m,
const size_type  n,
const size_type  m_l,
const size_type  n_l,
graph_ptrtype const &  graph,
size_type  matrix_properties = NON_HERMITIAN 
)
inlinevirtual

instantiate a new sparse vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
sparse_matrix_ptrtype Feel::BackendEigen< T, _Options >::newMatrix ( datamap_ptrtype const &  dm1,
datamap_ptrtype const &  dm2,
size_type  prop = NON_HERMITIAN,
bool  init = true 
)
inlinevirtual

instantiate a new sparse vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
vector_ptrtype Feel::BackendEigen< T, _Options >::newVector ( datamap_ptrtype const &  dm)
inlinevirtual

instantiate a new vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
vector_ptrtype Feel::BackendEigen< T, _Options >::newVector ( const size_type  n,
const size_type  n_local 
)
inlinevirtual

instantiate a new vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
sparse_matrix_ptrtype Feel::BackendEigen< T, _Options >::newZeroMatrix ( const size_type  m,
const size_type  n,
const size_type  m_l,
const size_type  n_l 
)
inlinevirtual

instantiate a new sparse vector

Implements Feel::Backend< T >.

template<typename T, int _Options = 0>
void Feel::BackendEigen< T, _Options >::prod ( sparse_matrix_type const &  A,
vector_type const &  x,
vector_type y 
) const
inlinevirtual
Returns
$ y = A * x $

Implements Feel::Backend< T >.

References Feel::VectorEigen< T >::vec().

template<typename T, int _Options = 0>
solve_return_type Feel::BackendEigen< T, _Options >::solve ( sparse_matrix_ptrtype const &  A,
sparse_matrix_ptrtype const &  P,
vector_ptrtype &  x,
const vector_ptrtype &  b 
)
inlinevirtual

solve for $P A x = P b$ where $P$ is an approximation of the inverse of $A$.

Parameters
Amatrix to inverse
rhsright hand side vector
solutionsolution of the system
Ppreconditioner
maxitmaximum number of iterations
tolerancetolerance on the residual
transposeif true solve the transpose problem
Warning
some parameter may not be meaningful for all backends

Implements Feel::Backend< T >.


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

Generated on Sun Dec 22 2013 13:11:17 for Feel++ by doxygen 1.8.5