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::OperatorLinearParametrized< DomainSpace, DualImageSpace > Class Template Referenceabstract

#include <operatorlinearparametrized.hpp>

Detailed Description

template<class DomainSpace, class DualImageSpace>
class Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >

An interface for linear parametrized operators.

Author
Christophe Prud'homme
See Also
+ Inheritance diagram for Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >:

Public Types

Typedefs
typedef
OperatorLinearParametrized
< DomainSpace, DualImageSpace > 
this_type
 
typedef OperatorLinear
< DomainSpace, DualImageSpace > 
super_type
 
typedef super::domain_space_type domain_space_type
 
typedef
super::dual_image_space_type 
dual_image_space_type
 
typedef super::domain_space_ptrtype domain_space_ptrtype
 
typedef
super::dual_image_space_ptrtype 
dual_image_space_ptrtype
 
typedef
domain_space_type::element_type 
domain_element_type
 
typedef super::backend_type backend_type
 
typedef super::backend_ptrtype backend_ptrtype
 
typedef
backend_type::sparse_matrix_type 
matrix_type
 
typedef backend_type::vector_type vector_type
 
typedef
backend_type::vector_ptrtype 
vector_ptrtype
 
typedef boost::shared_ptr
< matrix_type
matrix_ptrtype
 
typedef FsFunctionalLinear
< DualImageSpace > 
image_element_type
 
typedef ParameterSpace
< ParameterSpaceDimension > 
parameterspace_type
 
typedef boost::shared_ptr
< parameterspace_type
parameterspace_ptrtype
 
typedef
parameterspace_type::element_type 
parameter_type
 
typedef
parameterspace_type::element_ptrtype 
parameter_ptrtype
 
typedef
parameterspace_type::sampling_type 
sampling_type
 
typedef
parameterspace_type::sampling_ptrtype 
sampling_ptrtype
 
typedef Eigen::VectorXd theta_vector_type
 
- Public Types inherited from Feel::OperatorLinear< DomainSpace, DualImageSpace >
typedef super::backend_ptrtype backend_ptrtype
 
typedef super::backend_type backend_type
 
typedef
domain_space_type::template
Element< typename
domain_space_type::value_type,
typename VectorUblas< typename
domain_space_type::value_type >
::range::type > 
domain_element_range_type
 
typedef
domain_space_type::template
Element< typename
domain_space_type::value_type,
typename VectorUblas< typename
domain_space_type::value_type >
::slice::type > 
domain_element_slice_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::template
Element< typename
dual_image_space_type::value_type,
typename VectorUblas< typename
dual_image_space_type::value_type >
::range::type > 
dual_image_element_range_type
 
typedef
dual_image_space_type::template
Element< typename
dual_image_space_type::value_type,
typename VectorUblas< typename
dual_image_space_type::value_type >
::slice::type > 
dual_image_element_slice_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 boost::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 boost::shared_ptr
< backend_type
backend_ptrtype
 
typedef Backend< value_type > backend_type
 
typedef
domain_space_type::element_type 
domain_element_type
 
typedef boost::shared_ptr
< domain_space_type > 
domain_space_ptrtype
 
typedef DomainSpace domain_space_type
 
typedef boost::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

Constructors, destructor
 OperatorLinearParametrized ()
 default constructor
 
 OperatorLinearParametrized (OperatorLinearParametrized const &olp, bool deep_copy=false)
 copy constructor
 
 OperatorLinearParametrized (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend)
 
 ~OperatorLinearParametrized ()
 destructor
 
void init (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend)
 
Operator overloads
OperatorLinearParametrizedoperator= (OperatorLinearParametrized const &o)
 copy operator
 
Accessors
parameterspace_ptrtype parameterSpace () const
 return the parameter space
 
theta_vector_type const & thetaq () const
 return the coefficient vector
 
value_type thetaq (int q) const
 return the coefficient vector q component
 
Methods
virtual theta_vector_type computeThetaq (parameter_type const &mu)=0
 compute the theta coefficient for both bilinear and linear form More...
 
template<class ExprT >
this_typeadd (int q, ExprT const &e)
 
template<class ExprT >
this_typeoperator+= (ExprT const &e)
 
offline_merge_type update (parameter_type const &mu)
 update the model wrt mu
 
sparse_matrix_type merge (parameter_type const &mu)
 
- Public Member Functions inherited from Feel::OperatorLinear< DomainSpace, DualImageSpace >
template<typename T >
OperatorLinearadd (T const &scalar, OperatorLinear const &ol)
 
template<typename T >
OperatorLinearadd (T const &scalar, boost::shared_ptr< OperatorLinear > ol)
 
template<typename Storage >
void apply (const domain_element< typename domain_element_type::value_type, Storage > &de, image_element_type &ie) const
 
virtual void apply (const domain_element_type &de, image_element_type &ie) const
 
virtual void apply (const typename domain_space_type::element_type &de, typename dual_image_space_type::element_type &ie)
 
virtual void apply (const domain_element_range_type &de, typename dual_image_space_type::element_type &ie)
 
virtual void apply (const typename domain_space_type::element_type &de, dual_image_element_range_type &ie)
 
virtual void apply (const domain_element_range_type &de, dual_image_element_range_type &ie)
 
virtual void apply (const domain_element_slice_type &de, typename dual_image_space_type::element_type &ie)
 
virtual void apply (const typename domain_space_type::element_type &de, dual_image_element_slice_type &ie)
 
virtual void apply (domain_element_slice_typede, dual_image_element_slice_typeie)
 
virtual void apply (const domain_element_range_type &de, dual_image_element_slice_type &ie)
 
virtual void apply (const domain_element_slice_type &de, dual_image_element_range_type &ie)
 
virtual void applyInverse (domain_element_type &de, const image_element_type &ie)
 apply the inverse of the operator: $de = O^{-1} ie$
 
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_typemat ()
 
matrix_type const & mat () const
 
matrix_ptrtype const & matPtr () const
 
matrix_ptrtype & matPtr ()
 
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() (T1 &de)
 
template<typename T1 = typename domain_space_type::element_type, typename T2 = typename dual_image_space_type::element_type>
T2 operator() (boost::shared_ptr< T1 > de)
 
OperatorLinearoperator+ (boost::shared_ptr< OperatorLinear > ol)
 
OperatorLinearoperator+ (OperatorLinear const &ol)
 
template<class ExprT >
this_typeoperator+= (ExprT const &e)
 
template<class ExprT >
this_typeoperator= (ExprT const &e)
 
this_typeoperator= (this_type const &m)
 
 OperatorLinear (OperatorLinear const &ol, bool deep_copy=false)
 
 OperatorLinear (domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend, bool buildMatrix=true, size_type pattern=Pattern::COUPLED)
 
size_type pattern ()
 
void setName (std::string name)
 
- Public Member Functions inherited from Feel::Operator< DomainSpace, DualImageSpace >
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)
 
image_element_type operator() (const domain_element_type &de) const
 
void setDomainSpace (domain_space_ptrtype const &domainspace)
 
void setDualImageSpace (dual_image_space_ptrtype const &dualImageSpace)
 

Protected Attributes

std::vector
< sparse_matrix_ptrtype > 
M_Aq
 
parameterspace_ptrtype M_Dmu
 
theta_vector_type M_thetaq
 coefficients of the Aq matrices
 

Constructor & Destructor Documentation

template<class DomainSpace, class DualImageSpace>
Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >::OperatorLinearParametrized ( domain_space_ptrtype  domainSpace,
dual_image_space_ptrtype  dualImageSpace,
backend_ptrtype  backend 
)
inline

Constructor from domain and image space

Parameters
domainSpace
dualImageSpace
backendassociated linear algebra backend

Member Function Documentation

template<class DomainSpace, class DualImageSpace>
virtual theta_vector_type Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >::computeThetaq ( parameter_type const &  mu)
pure virtual

compute the theta coefficient for both bilinear and linear form

Parameters
muparameter to evaluate the coefficients
template<class DomainSpace , class DualImageSpace >
OperatorLinearParametrized< DomainSpace, DualImageSpace >::sparse_matrix_ptrtype Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >::merge ( parameter_type const &  mu)

Sum the affine decomposition for the parameter mu, need to call update( mu ) before calling the merge( mu )

Member Data Documentation

template<class DomainSpace, class DualImageSpace>
std::vector<sparse_matrix_ptrtype> Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >::M_Aq
protected

matrix storing the parameter independent matrices (affine decomposition)

template<class DomainSpace, class DualImageSpace>
parameterspace_ptrtype Feel::OperatorLinearParametrized< DomainSpace, DualImageSpace >::M_Dmu
protected

parameter space


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

Generated on Fri Oct 25 2013 14:24:31 for Feel++ by doxygen 1.8.4