#include <operatorlinearparametrized.hpp>
An interface for linear parametrized operators.
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 |
![]() | |
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 |
![]() | |
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 | |
OperatorLinearParametrized & | operator= (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_type & | add (int q, ExprT const &e) |
template<class ExprT > | |
this_type & | operator+= (ExprT const &e) |
offline_merge_type | update (parameter_type const &mu) |
update the model wrt mu | |
sparse_matrix_type | merge (parameter_type const &mu) |
![]() | |
template<typename T > | |
OperatorLinear & | add (T const &scalar, OperatorLinear const &ol) |
template<typename T > | |
OperatorLinear & | add (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: ![]() | |
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 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) |
OperatorLinear & | operator+ (boost::shared_ptr< OperatorLinear > ol) |
OperatorLinear & | operator+ (OperatorLinear const &ol) |
template<class ExprT > | |
this_type & | operator+= (ExprT const &e) |
template<class ExprT > | |
this_type & | operator= (ExprT const &e) |
this_type & | operator= (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) |
![]() | |
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 | |
|
inline |
Constructor from domain and image space
domainSpace | |
dualImageSpace | |
backend | associated linear algebra backend |
|
pure virtual |
compute the theta coefficient for both bilinear and linear form
mu | parameter to evaluate the coefficients |
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 )
|
protected |
matrix storing the parameter independent matrices (affine decomposition)
|
protected |
parameter space