Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType > Class Template Reference

Linear Operator Free between function spaces, represented by a matrix but this matrix is not automatically assembled. More...

+ Inheritance diagram for Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >:
+ Collaboration diagram for Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >:

Public Types

typedef super::backend_ptrtype backend_ptrtype
 
typedef super::backend_type backend_type
 
typedef super::domain_element_type domain_element_type
 
typedef super::domain_space_ptrtype domain_space_ptrtype
 
typedef super::domain_space_type domain_space_type
 
typedef super::dual_image_element_type dual_image_element_type
 
typedef super::dual_image_space_ptrtype dual_image_space_ptrtype
 
typedef super::dual_image_space_type dual_image_space_type
 
typedef ExprType expr_type
 
typedef FsFunctionalLinear< DualImageSpace > image_element_type
 
typedef std::shared_ptr< matrix_type > matrix_ptrtype
 
typedef super::matrix_type matrix_type
 
typedef std::shared_ptr< this_type > this_ptrtype
 
typedef OperatorLinearFree< DomainSpace, DualImageSpace, ExprType > this_type
 
- Public Types inherited from Feel::OperatorLinear< DomainSpace, DualImageSpace >
typedef std::shared_ptr< adjoint_type > adjoint_ptrtype
 
typedef OperatorLinear< DualImageSpace, DomainSpace > adjoint_type
 
typedef super::backend_ptrtype backend_ptrtype
 
typedef super::backend_type backend_type
 
typedef domain_space_type::element_type domain_element_type
 
typedef super::domain_space_ptrtype domain_space_ptrtype
 
typedef super::domain_space_type domain_space_type
 
typedef dual_image_space_type::element_type dual_image_element_type
 
typedef super::dual_image_space_ptrtype dual_image_space_ptrtype
 
typedef super::dual_image_space_type dual_image_space_type
 
typedef FsFunctionalLinear< DualImageSpace > image_element_type
 
typedef std::shared_ptr< matrix_type > matrix_ptrtype
 
typedef backend_type::sparse_matrix_type matrix_type
 
typedef Operator< DomainSpace, DualImageSpace > super_type
 
typedef OperatorLinear< DomainSpace, DualImageSpace > this_type
 
typedef backend_type::vector_ptrtype vector_ptrtype
 
typedef backend_type::vector_type vector_type
 
- Public Types inherited from Feel::Operator< DomainSpace, DualImageSpace >
typedef std::shared_ptr< backend_type > backend_ptrtype
 
typedef Backend< value_type > backend_type
 
typedef domain_space_type::element_type domain_element_type
 
typedef std::shared_ptr< domain_space_type > domain_space_ptrtype
 
typedef DomainSpace domain_space_type
 
typedef std::shared_ptr< dual_image_space_type > dual_image_space_ptrtype
 
typedef DualImageSpace dual_image_space_type
 
typedef FsFunctionalLinear< dual_image_space_type > image_element_type
 
typedef domain_space_type::value_type value_type
 

Public Member Functions

void apply (const domain_element_type &de, image_element_type &ie) const override
 
void apply (const typename domain_space_type::element_type &de, typename dual_image_space_type::element_type &ie) override
 
void applyInverse (domain_element_type &de, const image_element_type &ie) override
 apply the inverse of the operator: \(de = O^{-1} ie\) More...
 
double energy (const typename domain_space_type::element_type &de, const typename dual_image_space_type::element_type &ie) const override
 
expr_type expr ()
 
void init (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=false, size_type pattern=Pattern::COUPLED) override
 
void matPtr (matrix_ptrtype &matrix) override
 
this_type & operator= (this_type const &m)
 
 OperatorLinearFree (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, expr_type expr, size_type pattern=Pattern::COUPLED)
 
- Public Member Functions inherited from Feel::OperatorLinear< DomainSpace, DualImageSpace >
template<typename T >
OperatorLinear & add (T const &scalar, OperatorLinear const &ol)
 
template<typename T >
OperatorLinear & add (T const &scalar, std::shared_ptr< OperatorLinear > ol)
 
adjoint_ptrtype adjoint (size_type options=MATRIX_TRANSPOSE_ASSEMBLED) const
 
template<typename Storage >
void apply (const domain_element< typename domain_element_type::value_type, Storage > &de, image_element_type &ie) const
 
void apply (const domain_element_type &de, image_element_type &ie) const override
 
virtual void apply (const typename domain_space_type::element_type &de, typename dual_image_space_type::element_type &ie)
 
virtual void applyInverse (domain_element_type &de, const image_element_type &ie)
 apply the inverse of the operator: \(de = O^{-1} ie\) More...
 
backend_ptrtype & backend ()
 
void close ()
 
virtual double energy (const typename domain_space_type::element_type &de, const typename dual_image_space_type::element_type &ie) const
 
virtual void init (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=true, size_type pattern=Pattern::COUPLED)
 
template<typename RhsExpr >
domain_element_type inv (RhsExpr const &rhs_expr)
 
matrix_type & mat ()
 
matrix_type const & mat () const
 
matrix_ptrtype & matPtr ()
 
matrix_ptrtype const & matPtr () const
 
virtual void matPtr (matrix_ptrtype &matrix)
 
std::string name () const
 
template<typename T1 = typename domain_space_type::element_type, typename T2 = typename dual_image_space_type::element_type>
T2 operator() (std::shared_ptr< T1 > de)
 
template<typename T1 = typename domain_space_type::element_type, typename T2 = typename dual_image_space_type::element_type>
T2 operator() (T1 &de)
 
OperatorLinear & operator+ (OperatorLinear const &ol)
 
OperatorLinear & operator+ (std::shared_ptr< OperatorLinear > ol)
 
template<class ExprT >
this_type & operator+= (ExprT const &e)
 
template<class ExprT >
this_type & operator= (ExprT const &e)
 
this_type & operator= (this_type &&m)=default
 
this_type & operator= (this_type const &m)=default
 
 OperatorLinear (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=true, size_type pattern=Pattern::COUPLED)
 
 OperatorLinear (OperatorLinear &&ol)=default
 
 OperatorLinear (OperatorLinear const &ol)=default
 
size_type pattern ()
 
void setMatrix (matrix_ptrtype m)
 
void setName (std::string name)
 
- Public Member Functions inherited from Feel::Operator< DomainSpace, DualImageSpace >
virtual void apply (const domain_element_type &de, image_element_type &ie) const =0
 
domain_space_ptrtype domainSpace ()
 
const domain_space_ptrtype domainSpace () const
 
dual_image_space_ptrtype dualImageSpace ()
 
const dual_image_space_ptrtype dualImageSpace () const
 
 Operator (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace)
 
 Operator (Operator< domain_space_type, DualImageSpace > &&)=default
 
 Operator (Operator< domain_space_type, DualImageSpace > const &)=default
 
image_element_type operator() (const domain_element_type &de) const
 
Operator & operator= (Operator &&)=default
 
Operator & operator= (Operator const &)=default
 
void setDomainSpace (domain_space_ptrtype const &domainspace)
 
void setDualImageSpace (dual_image_space_ptrtype const &dualImageSpace)
 

Detailed Description

template<class DomainSpace, class DualImageSpace, typename ExprType>
class Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >

Linear Operator Free between function spaces, represented by a matrix but this matrix is not automatically assembled.

Member Function Documentation

◆ apply() [1/2]

template<class DomainSpace , class DualImageSpace , typename ExprType >
void Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::apply ( const domain_element_type &  de,
image_element_type &  ie 
) const
overridevirtual

◆ apply() [2/2]

template<class DomainSpace , class DualImageSpace , typename ExprType >
void Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::apply ( const typename domain_space_type::element_type &  de,
typename dual_image_space_type::element_type &  ie 
)
overridevirtual

◆ applyInverse()

template<class DomainSpace , class DualImageSpace , typename ExprType >
void Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::applyInverse ( domain_element_type &  de,
const image_element_type &  ie 
)
overridevirtual

apply the inverse of the operator: \(de = O^{-1} ie\)

Reimplemented from Feel::OperatorLinear< DomainSpace, DualImageSpace >.

◆ energy()

template<class DomainSpace , class DualImageSpace , typename ExprType >
double Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::energy ( const typename domain_space_type::element_type &  de,
const typename dual_image_space_type::element_type &  ie 
) const
overridevirtual

◆ init()

template<class DomainSpace , class DualImageSpace , typename ExprType >
void Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::init ( domain_space_ptrtype  domainSpace,
dual_image_space_ptrtype  dualImageSpace,
backend_ptrtype  backend,
bool  buildMatrix = false,
size_type  pattern = Pattern::COUPLED 
)
overridevirtual

◆ matPtr()

template<class DomainSpace , class DualImageSpace , typename ExprType >
void Feel::OperatorLinearFree< DomainSpace, DualImageSpace, ExprType >::matPtr ( matrix_ptrtype &  matrix)
overridevirtual