16 #ifndef dealii_block_indices_h
17 #define dealii_block_indices_h
20 #include <deal.II/base/config.h>
22 #include <deal.II/base/exceptions.h>
23 #include <deal.II/base/logstream.h>
24 #include <deal.II/base/subscriptor.h>
25 #include <deal.II/base/utilities.h>
30 DEAL_II_NAMESPACE_OPEN
111 reinit(
const std::vector<size_type> &block_sizes);
168 std::pair<unsigned int, size_type>
243 const unsigned int n = bi.size();
247 s << bi.block_size(0);
249 for (
unsigned int i = 1; i < n; ++i)
250 s <<
' ' << bi.block_size(i);
251 s <<
"]->" << bi.total_size();
275 n_blocks = static_cast<unsigned int>(block_sizes.size());
294 , start_indices(n_blocks + 1)
303 : n_blocks(static_cast<unsigned int>(block_sizes.size()))
304 , start_indices(block_sizes.size() + 1)
312 : n_blocks(b.n_blocks)
313 , start_indices(std::move(b.start_indices))
316 b.start_indices = std::vector<size_type>(1, 0);
330 inline std::pair<unsigned int, BlockIndices::size_type>
350 ExcIndexRangeType<size_type>(
388 for (
unsigned int i = 0; i <
n_blocks; ++i)
422 start_indices = std::move(b.start_indices);
423 n_blocks = b.n_blocks;
425 b.start_indices = std::vector<size_type>(1, 0);
484 DEAL_II_NAMESPACE_CLOSE