29 #ifndef __OperatorLinearParametrized_H
30 #define __OperatorLinearParametrized_H 1
43 template<
class DomainSpace,
class DualImageSpace>
64 typedef typename super::domain_space_type domain_space_type;
65 typedef typename super::dual_image_space_type dual_image_space_type;
66 typedef typename super::domain_space_ptrtype domain_space_ptrtype;
67 typedef typename super::dual_image_space_ptrtype dual_image_space_ptrtype;
68 typedef typename domain_space_type::element_type domain_element_type;
70 typedef typename super::backend_type backend_type;
71 typedef typename super::backend_ptrtype backend_ptrtype;
74 typedef typename backend_type::vector_ptrtype vector_ptrtype;
75 typedef boost::shared_ptr<matrix_type> matrix_ptrtype;
77 template<
typename T,
typename Storage>
78 struct domain_element:
public super::domain_space_type::template Element<T,Storage> {};
80 typedef FsFunctionalLinear<DualImageSpace> image_element_type;
84 typedef boost::shared_ptr<parameterspace_type> parameterspace_ptrtype;
86 typedef parameterspace_type::element_ptrtype parameter_ptrtype;
88 typedef parameterspace_type::sampling_ptrtype sampling_ptrtype;
90 typedef Eigen::VectorXd theta_vector_type;
117 dual_image_space_ptrtype dualImageSpace,
118 backend_ptrtype backend )
120 super_type( domainSpace, dualImageSpace, backend )
129 init( domain_space_ptrtype domainSpace,
130 dual_image_space_ptrtype dualImageSpace,
131 backend_ptrtype backend )
133 super::init( domainSpace, dualImageSpace, backend );
196 virtual theta_vector_type
computeThetaq( parameter_type
const& mu ) = 0;
199 template<
class ExprT>
200 this_type& add(
int q, ExprT
const& e )
203 form2( this->domainSpace(),
204 this->dualImageSpace(),
213 template<
class ExprT>
214 this_type& operator+=( ExprT
const& e )
216 form2( this->domainSpace(),
217 this->dualImageSpace(),
229 return offlineMerge( mu );
236 sparse_matrix_type
merge( parameter_type
const& mu );
248 std::vector<sparse_matrix_ptrtype>
M_Aq;
259 template<
class DomainSpace,
class DualImageSpace>
263 sparse_matrix_ptrtype A( M_backend->newMatrix( domainSpace(), dualImageSpace() ) )
267 A->scale( this->thetaq( 0 ) );
269 for (
int q = 1; q < Qa(); ++q )
271 A->addMatrix( this->thetaq( q ), M_Aq[q] );
Linear Operator between function spaces, represented by a matrix.
Definition: operatorlinear.hpp:43
sparse_matrix_type merge(parameter_type const &mu)
parameterspace_ptrtype M_Dmu
Definition: operatorlinearparametrized.hpp:253
Definition: solverlinear.hpp:33
OperatorLinearParametrized()
default constructor
Definition: operatorlinearparametrized.hpp:99
parameterspace_ptrtype parameterSpace() const
return the parameter space
Definition: operatorlinearparametrized.hpp:157
OperatorLinearParametrized(domain_space_ptrtype domainSpace, dual_image_space_ptrtype dualImageSpace, backend_ptrtype backend)
Definition: operatorlinearparametrized.hpp:116
theta_vector_type const & thetaq() const
return the coefficient vector
Definition: operatorlinearparametrized.hpp:165
OperatorLinearParametrized(OperatorLinearParametrized const &olp, bool deep_copy=false)
copy constructor
Definition: operatorlinearparametrized.hpp:105
An interface for linear parametrized operators.
Definition: operatorlinearparametrized.hpp:44
value_type thetaq(int q) const
return the coefficient vector q component
Definition: operatorlinearparametrized.hpp:174
Parameter space sampling class.
Definition: parameterspace.hpp:219
std::vector< sparse_matrix_ptrtype > M_Aq
Definition: operatorlinearparametrized.hpp:248
Parameter space class.
Definition: parameterspace.hpp:58
OperatorLinearParametrized & operator=(OperatorLinearParametrized const &o)
copy operator
Definition: operatorlinearparametrized.hpp:142
Definition: matrixsparse.hpp:76
~OperatorLinearParametrized()
destructor
Definition: operatorlinearparametrized.hpp:125
theta_vector_type M_thetaq
coefficients of the Aq matrices
Definition: operatorlinearparametrized.hpp:256
offline_merge_type update(parameter_type const &mu)
update the model wrt mu
Definition: operatorlinearparametrized.hpp:226
virtual theta_vector_type computeThetaq(parameter_type const &mu)=0
compute the theta coefficient for both bilinear and linear form
element of a parameter space
Definition: parameterspace.hpp:84