30 #ifndef __VectorBlock_H
31 #define __VectorBlock_H 1
33 #include <feel/feelalg/vector.hpp>
42 template<
typename T>
class Backend;
45 template <
typename T=
double>
46 class BlocksBaseVector :
public vf::BlocksBase<boost::shared_ptr<Vector<T> > >
49 typedef vf::BlocksBase<boost::shared_ptr<Vector<T> > > super_type;
50 typedef BlocksBaseVector<T> self_type;
51 typedef Vector<T> vector_type;
52 typedef boost::shared_ptr<vector_type> vector_ptrtype;
54 BlocksBaseVector(uint16_type nr)
59 BlocksBaseVector(super_type
const & b)
68 operator<<( vector_ptrtype
const& m )
const
70 return super_type::operator<<( m );
76 void localize( vector_ptrtype
const& vb )
81 for ( uint16_type i=0; i<this->nRow(); ++i )
83 size_type nBlockRow = this->operator()( i,0 )->localSize();
87 this->operator()( i,0 )->set( k, vb->operator()( _start_i+k ) );
90 this->operator()( i,0 )->close();
91 _start_i += nBlockRow;
97 template <
int NR,
typename T=
double>
98 class BlocksVector :
public BlocksBaseVector<T>
101 static const uint16_type NBLOCKROWS = NR;
102 static const uint16_type NBLOCKCOLS = 1;
104 typedef BlocksBaseVector<T> super_type;
108 super_type(NBLOCKROWS)
126 template<
typename T>
127 class VectorBlockBase
136 typedef VectorBlockBase<T> self_type;
137 typedef T value_type;
139 typedef Backend<value_type> backend_type;
140 typedef boost::shared_ptr<backend_type> backend_ptrtype;
142 typedef Vector<T> vector_type;
143 typedef boost::shared_ptr<vector_type> vector_ptrtype;
151 VectorBlockBase( vf::BlocksBase<vector_ptrtype >
const & blockVec,
152 backend_type &backend,
153 bool copy_values=
true );
156 VectorBlockBase( VectorBlockBase
const & vb )
170 VectorBlockBase
operator=( VectorBlockBase
const& vb )
185 vector_ptrtype getVector()
202 void updateBlockVec( vector_ptrtype
const & m,
size_type start_i );
212 vector_ptrtype M_vec;
216 template<
int NR,
typename T>
217 class VectorBlock :
public VectorBlockBase<T>
219 typedef VectorBlockBase<T> super_type;
223 static const uint16_type NBLOCKROWS = NR;
225 typedef typename super_type::value_type value_type;
226 typedef typename super_type::vector_ptrtype vector_ptrtype;
227 typedef typename super_type::backend_type backend_type;
228 typedef vf::Blocks<NBLOCKROWS,1,vector_ptrtype > blocks_type;
229 typedef vf::BlocksBase<vector_ptrtype> blocksbase_type;
231 VectorBlock( blocksbase_type
const & blockVec,
232 backend_type &backend,
233 bool copy_values=
true )
235 super_type( blockVec,backend,copy_values )
238 VectorBlock( VectorBlock
const & vb )
243 VectorBlock operator=( VectorBlock
const& vb )
249 VectorBlock & operator = ( vector_ptrtype
const& F )
size_t size_type
Indices (starting from 0)
Definition: feelcore/feel.hpp:319
Elements & operator=(Elements const &e)
Definition: elements.hpp:335