29 #ifndef __FunctionalSet_H
30 #define __FunctionalSet_H 1
32 #include <boost/numeric/ublas/vector.hpp>
33 #include <boost/numeric/ublas/vector_proxy.hpp>
34 #include <boost/numeric/ublas/matrix.hpp>
35 #include <boost/numeric/ublas/matrix_proxy.hpp>
36 #include <boost/numeric/ublas/lu.hpp>
37 #include <boost/numeric/ublas/io.hpp>
52 template<
typename Space>
62 typedef Space space_type;
63 typedef typename space_type::value_type value_type;
66 typedef FunctionalSet<Space> functionalset_type;
67 typedef functionalset_type self_type;
68 typedef Functional<Space> functional_type;
71 typedef typename space_type::matrix_type matrix_type;
73 typedef std::vector<functional_type> fset_type;
88 FunctionalSet( space_type
const& s )
95 FunctionalSet( space_type
const& s, std::vector<functional_type>
const& fset )
99 M_mat( space_type::nComponents*fset.size(), fset[0].coeff().size2() )
104 FunctionalSet( FunctionalSet
const & fset )
106 M_space( fset.M_space ),
107 M_fset( fset.M_fset ),
120 self_type& operator=( self_type
const& fset )
124 M_space = fset.M_space;
125 M_fset = fset.M_fset;
147 return ublas::prod( space_type::polyset_type::toMatrix( M_mat ),
148 ublas::trans( space_type::polyset_type::toMatrix( p.coeff() ) ) );
171 matrix_type
const&
rep()
const
199 if ( space_type::is_scalar )
203 M_mat = ublas::zero_matrix<value_type>( fset.size(), fset[0].coeff().size2() );
206 for ( uint16_type i = 0; i < fset.size(); ++i )
209 ublas::row( M_mat, i ) = ublas::row( fset[i].coeff(), 0 );
220 M_mat = ublas::zero_matrix<value_type>( space_type::nComponents*fset.size(), fset[0].coeff().size2() );
222 for ( uint16_type i = 0; i < fset.size(); ++i )
225 ublas::range( i*space_type::nComponents, ( i+1 )*space_type::nComponents ),
226 ublas::range( 0, M_mat.size2() ) ) = ublas::scalar_matrix<value_type>( space_type::nComponents, M_mat.size2(), -1 );
228 ublas::range( i*space_type::nComponents, ( i+1 )*space_type::nComponents ),
229 ublas::range( 0, M_mat.size2() ) ) = fset[i].coeff();
Polynomial< Pset, Scalar > project(Pset const &pset, Func const &f, IM const &im)
Definition: operations.hpp:436
void setFunctionSpace(space_type const &__space)
Definition: functionalset.hpp:186
void setFunctionalSet(std::vector< functional_type > const &fset)
Definition: functionalset.hpp:194
functional_type const & operator()(uint16_type i) const
Definition: functionalset.hpp:135
matrix_type const & rep() const
Definition: functionalset.hpp:171
space_type const & functionSpace() const
Definition: functionalset.hpp:160
matrix_type operator()(space_type const &p) const
Definition: functionalset.hpp:143