12#include <dolfinx/la/SparsityPattern.h>
36template <std::ranges::input_range R0, std::ranges::input_range R1>
38 std::array<std::reference_wrapper<const DofMap>, 2> dofmaps)
40 assert(
cells.first.size() ==
cells.second.size());
41 const DofMap& map0 = dofmaps[0].get();
42 const DofMap& map1 = dofmaps[1].get();
45 if constexpr (std::ranges::sized_range<R0> and std::ranges::sized_range<R1>)
47 if (std::size_t num_cells = std::ranges::size(
cells.first); num_cells > 0)
55 for (
auto cell0 =
cells.first.begin(), cell1 =
cells.second.begin();
56 cell0 !=
cells.first.end() and cell1 !=
cells.second.end();
81 std::array<std::span<const std::int32_t>, 2>
cells,
82 std::array<std::reference_wrapper<const DofMap>, 2> dofmaps);
Degree-of-freedom map representations and tools.
Degree-of-freedom map.
Definition DofMap.h:73
std::span< const std::int32_t > cell_dofs(std::int32_t c) const
Local-to-global mapping of dofs on a cell.
Definition DofMap.h:127
Definition SparsityPattern.h:28
void reserve_blocks(std::size_t num_blocks, std::size_t num_rows, std::size_t num_cols)
Reserve storage for additional insert(rows, cols) calls.
Definition SparsityPattern.cpp:368
void insert(std::int32_t row, std::int32_t col)
Insert non-zero locations using local (process-wise) indices.
Definition SparsityPattern.cpp:396
Support for building sparsity patterns from degree-of-freedom maps.
Definition sparsitybuild.h:23
void interior_facets(la::SparsityPattern &pattern, std::array< std::span< const std::int32_t >, 2 > cells, std::array< std::reference_wrapper< const DofMap >, 2 > dofmaps)
Iterate over interior facets and insert entries into sparsity pattern.
Definition sparsitybuild.cpp:16
void cells(la::SparsityPattern &pattern, const std::pair< R0, R1 > &cells, std::array< std::reference_wrapper< const DofMap >, 2 > dofmaps)
Iterate over cells and insert entries into sparsity pattern.
Definition sparsitybuild.h:37
Finite element method functionality.
Definition assemble_expression_impl.h:22