13#ifndef dealii_meshworker_copy_data_h
14#define dealii_meshworker_copy_data_h
48 template <
int n_matrices = 1,
49 int n_vectors = n_matrices,
50 int n_dof_indices = n_matrices,
51 typename ScalarType =
double>
72 const std::array<unsigned int, n_vectors> &vector_sizes,
73 const std::array<unsigned int, n_dof_indices> &dof_indices_sizes);
122 const unsigned int size_rows,
123 const unsigned int size_columns);
128 std::array<FullMatrix<ScalarType>, n_matrices>
matrices;
133 std::array<Vector<ScalarType>, n_vectors>
vectors;
138 std::array<std::vector<types::global_dof_index>, n_dof_indices>
147 template <
int n_matrices,
152 const unsigned int size)
159 template <
int n_matrices,
165 const std::array<unsigned int, n_vectors> &vector_sizes,
166 const std::array<unsigned int, n_dof_indices> &dof_indices_sizes)
168 for (
unsigned int i = 0; i < n_matrices; ++i)
169 matrices[i].reinit(matrix_sizes[i++]);
171 for (
unsigned int i = 0; i < n_vectors; ++i)
172 vectors[i].reinit(vector_sizes[i++]);
174 for (
unsigned int i = 0; i < n_dof_indices; ++i)
175 local_dof_indices[i].resize(dof_indices_sizes[i++]);
180 template <
int n_matrices,
186 const unsigned int size)
188 for (
auto &m : matrices)
190 for (
auto &v : vectors)
192 for (
auto &d : local_dof_indices)
198 template <
int n_matrices,
204 const unsigned int index,
205 const unsigned int size)
212 template <
int n_matrices,
218 const unsigned int index,
219 const unsigned int size_rows,
220 const unsigned int size_columns)
224 constexpr int max_index =
std::max({n_matrices, n_vectors, n_dof_indices});
227 if (index < n_matrices)
228 matrices[
index].reinit({size_rows, size_columns});
230 if (index < n_vectors)
231 vectors[
index].reinit(size_columns);
233 if (index < n_dof_indices)
234 local_dof_indices[
index].resize(size_columns);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcIndexRange(std::size_t arg1, std::size_t arg2, std::size_t arg3)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
void reinit(MatrixBlock< MatrixType > &v, const BlockSparsityPattern &p)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
typename internal::ndarray::HelperArray< T, Ns... >::type ndarray
CopyData(const CopyData &other)=default
void reinit(const unsigned int index, const unsigned int size_rows, const unsigned int size_columns)
CopyData & operator=(const CopyData &other)=default
std::array< FullMatrix< ScalarType >, n_matrices > matrices
CopyData(const unsigned int size)
std::array< Vector< ScalarType >, n_vectors > vectors
void reinit(const unsigned int size)
void reinit(const unsigned int index, const unsigned int size)
CopyData(const ndarray< unsigned int, n_matrices, 2 > &matrix_sizes, const std::array< unsigned int, n_vectors > &vector_sizes, const std::array< unsigned int, n_dof_indices > &dof_indices_sizes)
std::array< std::vector< types::global_dof_index >, n_dof_indices > local_dof_indices