20 #ifndef GEOS_LINEARALGEBRA_UTILITIES_BLOCKVECTOR_HPP_
21 #define GEOS_LINEARALGEBRA_UTILITIES_BLOCKVECTOR_HPP_
35 template<
typename VECTOR >
49 m_vectorStorage( nBlocks )
67 m_vectorStorage( rhs.m_vectorStorage )
77 :
Base( std::move( rhs ) ),
78 m_vectorStorage( std::move( rhs.m_vectorStorage ) )
93 m_vectorStorage.emplace_back( rhs.
block( i ) );
105 m_vectorStorage = x.m_vectorStorage;
117 m_vectorStorage = std::move( x.m_vectorStorage );
136 m_vectorStorage.resize( nBlocks );
145 for(
localIndex i = 0; i < m_vectorStorage.size(); ++i )
152 array1d< VECTOR > m_vectorStorage;
Concrete representation of a block vector.
BlockVector(BlockVectorView< VECTOR > const &rhs)
Conversion constructor from a compatible view with a deep copy of each sub-vector.
BlockVector & operator=(BlockVector &&x) noexcept
Move assignment.
virtual ~BlockVector() override=default
Destructor.
BlockVector & operator=(BlockVector const &x)
Copy assignment.
BlockVector(BlockVector const &rhs)
Copy constructor that performs a deep copy of each sub-vector.
BlockVector(localIndex const nBlocks)
Create a vector of nBlocks blocks.
void resize(localIndex const nBlocks)
Resize to a different number of blocks.
BlockVector()
Create a vector of nBlocks blocks.
BlockVector(BlockVector &&rhs)
Move constructor.
Abstract view of a block vector.
VECTOR const & block(localIndex const blockIndex) const
Get a reference to the vector corresponding to block blockRowIndex.
void setPointer(localIndex i, VECTOR *vec)
Set pointer to a vector.
void resize(localIndex const size)
Resize to a new number of blocks.
localIndex blockSize() const
Get block size.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).