10#include <kernel/util/memory_pool.hpp>
11#include <kernel/lafem/forward.hpp>
23 template <SparseLayoutId LT_>
29 template<
typename DT_,
typename IT_>
30 using MatrixType = SparseMatrixCSR<DT_, IT_>;
36 template<
typename DT_,
typename IT_>
37 using MatrixType = SparseMatrixCSCR<DT_, IT_>;
43 template<
typename DT_,
typename IT_>
44 using MatrixType = SparseMatrixBanded<DT_, IT_>;
63 template <
typename IT_, SparseLayoutId Layout_>
67 std::vector<IT_*> _indices;
68 std::vector<Index> _indices_size;
69 std::vector<Index> _scalar_index;
71 template<
typename DT_>
72 using MatrixType =
typename Intern::LayoutId<Layout_>::template MatrixType<DT_, IT_>;
81 SparseLayout(
const std::vector<IT_ *> & indices,
const std::vector<Index> & indices_size,
const std::vector<Index> & scalar_index) :
83 _indices_size(indices_size),
84 _scalar_index(scalar_index)
86 for(
auto i : this->_indices)
92 _indices(std::move(other._indices)),
93 _indices_size(std::move(other._indices_size)),
94 _scalar_index(std::move(other._scalar_index))
101 for(
auto i : this->_indices)
108 _indices = std::move(other._indices);
109 _indices_size = std::move(other._indices_size);
110 _scalar_index = std::move(other._scalar_index);
132 return _indices_size;
142 return _scalar_index;
Layout scheme for sparse matrix containers.
virtual ~SparseLayout()
virtual destructor
SparseLayout & operator=(SparseLayout &&other)
move operator=
SparseLayout(SparseLayout &&other)
move constructor
const std::vector< Index > & get_indices_size() const
Returns a list of all Index array sizes.
const std::vector< Index > & get_scalar_index() const
Returns a list of all scalar values with datatype index.
const std::vector< IT_ * > & get_indices() const
Returns a list of all Index arrays.
static void release_memory(void *address)
release memory or decrease reference counter
static void increase_memory(void *address)
increase memory counter
LAFEM common type definitions.