DOLFINx
0.11.0.0
DOLFINx C++
Toggle main menu visibility
Loading...
Searching...
No Matches
dolfinx
fem
sparsitybuild.h
1
// Copyright (C) 2007-2023 Garth N. Wells
2
//
3
// This file is part of DOLFINx (https://www.fenicsproject.org)
4
//
5
// SPDX-License-Identifier: LGPL-3.0-or-later
6
7
#pragma once
8
9
#include "
DofMap.h
"
10
#include <array>
11
#include <cstdint>
12
#include <dolfinx/la/SparsityPattern.h>
13
#include <functional>
14
#include <ranges>
15
#include <span>
16
17
namespace
dolfinx::fem
18
{
19
class
DofMap
;
20
22
namespace
sparsitybuild
23
{
36
template
<std::ranges::input_range R0, std::ranges::input_range R1>
37
void
cells
(
la::SparsityPattern
& pattern,
const
std::pair<R0, R1>&
cells
,
38
std::array<std::reference_wrapper<const DofMap>, 2> dofmaps)
39
{
40
assert(
cells
.first.size() ==
cells
.second.size());
41
const
DofMap
& map0 = dofmaps[0].get();
42
const
DofMap
& map1 = dofmaps[1].get();
43
for
(
auto
cell0 =
cells
.first.begin(), cell1 =
cells
.second.begin();
44
cell0 !=
cells
.first.end() and cell1 !=
cells
.second.end();
45
++cell0, ++cell1)
46
{
47
pattern.
insert
(map0.
cell_dofs
(*cell0), map1.
cell_dofs
(*cell1));
48
}
49
}
50
65
void
interior_facets
(
66
la::SparsityPattern
& pattern,
67
std::array<std::span<const std::int32_t>, 2>
cells
,
68
std::array<std::reference_wrapper<const DofMap>, 2> dofmaps);
69
70
}
// namespace sparsitybuild
71
}
// namespace dolfinx::fem
DofMap.h
Degree-of-freedom map representations and tools.
dolfinx::fem::DofMap
Degree-of-freedom map.
Definition
DofMap.h:73
dolfinx::fem::DofMap::cell_dofs
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
dolfinx::la::SparsityPattern
Definition
SparsityPattern.h:26
dolfinx::la::SparsityPattern::insert
void insert(std::int32_t row, std::int32_t col)
Insert non-zero locations using local (process-wise) indices.
Definition
SparsityPattern.cpp:142
dolfinx::fem::sparsitybuild
Support for building sparsity patterns from degree-of-freedom maps.
Definition
sparsitybuild.h:23
dolfinx::fem::sparsitybuild::interior_facets
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
dolfinx::fem::sparsitybuild::cells
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
dolfinx::fem
Finite element method functionality.
Definition
assemble_expression_impl.h:23
Generated by
1.17.0