10#include <kernel/lafem/forward.hpp>
12#include <kernel/util/type_traits.hpp>
13#include <kernel/lafem/container.hpp>
14#include <kernel/adjacency/graph.hpp>
40 template <
typename DT_,
typename IT_ = Index>
52 template <
typename DT2_ = DT_,
typename IT2_ = IT_>
56 template <
typename DataType2_,
typename IndexType2_>
90 this->
_indices.push_back(MemoryPool::template allocate_memory<IT_>(
rows() + 1));
107 Index num_rows = graph.get_num_nodes_domain();
108 Index num_cols = graph.get_num_nodes_image();
118 IT_ * prow_ptr(vrow_ptr.
elements());
119 IT_ * pcol_idx(vcol_idx.
elements());
122 prow_ptr[0] = IT_(dom_ptr[0]);
123 for(
Index i(0); i < num_rows; ++i)
124 prow_ptr[i+1] = IT_(dom_ptr[i+1]);
127 for(
Index i(0); i < num_nnze; ++i)
128 pcol_idx[i] = IT_(img_idx[i]);
149 Container<DT_, IT_>(rows_in * columns_in)
151 XASSERT(val_in.
size() % entries_per_nonzero_in == 0);
179 template <
typename DT2_ = DT_,
typename IT2_ = IT_>
183 deserialize<DT2_, IT2_>(input);
207 this->
move(std::forward<MatrixMirrorBuffer>(other));
222 t.
clone(*
this, clone_mode);
234 template<
typename DT2_,
typename IT2_>
247 template <
typename DT2_,
typename IT2_>
260 template <
typename DT2_ = DT_,
typename IT2_ = IT_>
273 template <
typename DT2_ = DT_,
typename IT2_ = IT_>
284 template <Perspective = Perspective::native>
295 template <Perspective = Perspective::native>
306 template <Perspective = Perspective::native>
317 template <Perspective = Perspective::native>
330 template <Perspective = Perspective::native>
370 DT_
const *
val()
const
#define XASSERT(expr)
Assertion macro definition.
Adjacency Graph implementation.
Index * get_domain_ptr()
Returns the domain pointer array.
Index * get_image_idx()
Returns the image node index array.
Index get_num_indices() const
Returns the total number indices.
std::vector< DT_ * > _elements
List of pointers to all datatype dependent arrays.
std::vector< Index > _elements_size
List of corresponding datatype array sizes.
Index size() const
Returns the containers size.
void assign(const Container< DT2_, IT2_ > &other)
Assignment operation.
std::vector< IT_ * > _indices
List of pointers to all IT_ dependent arrays.
void clone(const Container &other, CloneMode clone_mode=CloneMode::Weak)
Clone operation.
void move(Container &&other)
Assignment move operation.
std::vector< Index > _indices_size
List of corresponding IT_ array sizes.
std::vector< Index > _scalar_index
List of scalars with datatype index.
Dense data vector class template.
DT_ * elements()
Get a pointer to the data array.
Matrix Mirror Buffer class template.
IT_ IndexType
Our indextype.
void convert(const MatrixMirrorBuffer< DT2_, IT2_ > &other)
Conversion method.
MatrixMirrorBuffer clone(CloneMode clone_mode=CloneMode::Weak) const
Clone operation.
MatrixMirrorBuffer(MatrixMirrorBuffer &&other)
Move Constructor.
MatrixMirrorBuffer(std::vector< char > input)
Constructor.
Index val_size() const
Retrieve total length of value array.
DT_ * val()
Retrieve non zero element array.
DT_ DataType
Our datatype.
Index columns() const
Retrieve matrix column count.
IT_ * row_ptr()
Retrieve row start index array.
IT_ * col_ind()
Retrieve column indices array.
MatrixMirrorBuffer(Index rows_in, Index columns_in, Index used_elements_in, Index entries_per_nonzero_in)
Basic Constructor.
MatrixMirrorBuffer & operator=(MatrixMirrorBuffer &&other)
Assignment move operator.
Index entries_per_nonzero() const
Retrieve entries per non zero element count.
std::vector< char > serialize() const
Serialization of complete container entity.
Index used_elements() const
Retrieve non zero element count.
MatrixMirrorBuffer(const Adjacency::Graph &graph, Index entries_per_nonzero_in)
Constructor.
MatrixMirrorBuffer(const Index rows_in, const Index columns_in, Index entries_per_nonzero_in, DenseVector< IT_, IT_ > &col_ind_in, DenseVector< DT_, IT_ > &val_in, DenseVector< IT_, IT_ > &row_ptr_in)
Constructor.
DT_ ValueType
Our value type.
void clone(const MatrixMirrorBuffer< DT2_, IT2_ > &other, CloneMode clone_mode=CloneMode::Weak)
Clone operation.
Index rows() const
Retrieve matrix row count.
void deserialize(std::vector< char > input)
Deserialization of complete container entity.
MatrixMirrorBuffer()
Constructor.
static void increase_memory(void *address)
increase memory counter
std::uint64_t Index
Index data type.