deal.II version GIT relicensing-6842-g793a97d2aa 2026-10-02 14:00:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
dof_handler_policy.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2010 - 2024 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_dof_handler_policy_h
14#define dealii_dof_handler_policy_h
15
16
17
18#include <deal.II/base/config.h>
19
22
25
26#include <vector>
27
29
30// Forward declaration
31#ifndef DOXYGEN
32template <int dim, int spacedim>
34class DoFHandler;
35#endif
36
37namespace internal
38{
39 namespace DoFHandlerImplementation
40 {
41 struct NumberCache;
42
47 namespace Policy
48 {
49 struct Implementation;
50
56 template <int dim, int spacedim>
58 {
59 public:
63 virtual ~PolicyBase() = default;
64
73 virtual NumberCache
74 distribute_dofs() const = 0;
75
81 virtual std::vector<NumberCache>
82 distribute_mg_dofs() const = 0;
83
89 virtual NumberCache
91 const std::vector<types::global_dof_index> &new_numbers) const = 0;
92
101 virtual NumberCache
103 const unsigned int level,
104 const std::vector<types::global_dof_index> &new_numbers) const = 0;
105 };
106
107
112 template <int dim, int spacedim>
113 class Sequential : public PolicyBase<dim, spacedim>
114 {
115 public:
122
123 // documentation is inherited
124 virtual NumberCache
125 distribute_dofs() const override;
126
127 // documentation is inherited
128 virtual std::vector<NumberCache>
129 distribute_mg_dofs() const override;
130
131 // documentation is inherited
132 virtual NumberCache
133 renumber_dofs(const std::vector<types::global_dof_index> &new_numbers)
134 const override;
135
136 // documentation is inherited
137 virtual NumberCache
138 renumber_mg_dofs(const unsigned int level,
139 const std::vector<types::global_dof_index>
140 &new_numbers) const override;
141
142 protected:
147 };
148
149
150
155 template <int dim, int spacedim>
156 class ParallelShared : public PolicyBase<dim, spacedim>
157 {
158 public:
165
174 virtual NumberCache
175 distribute_dofs() const override;
176
180 virtual std::vector<NumberCache>
181 distribute_mg_dofs() const override;
182
192 virtual NumberCache
193 renumber_dofs(const std::vector<types::global_dof_index> &new_numbers)
194 const override;
195
196 // documentation is inherited
197 virtual NumberCache
198 renumber_mg_dofs(const unsigned int level,
199 const std::vector<types::global_dof_index>
200 &new_numbers) const override;
201
202 private:
207 };
208
209
214 template <int dim, int spacedim>
215 class ParallelDistributed : public PolicyBase<dim, spacedim>
216 {
217 public:
224
225 // documentation is inherited
226 virtual NumberCache
227 distribute_dofs() const override;
228
229 // documentation is inherited
230 virtual std::vector<NumberCache>
231 distribute_mg_dofs() const override;
232
233 // documentation is inherited
234 virtual NumberCache
235 renumber_dofs(const std::vector<types::global_dof_index> &new_numbers)
236 const override;
237
238 // documentation is inherited
239 virtual NumberCache
240 renumber_mg_dofs(const unsigned int level,
241 const std::vector<types::global_dof_index>
242 &new_numbers) const override;
243
244 private:
249 };
250 } // namespace Policy
251 } // namespace DoFHandlerImplementation
252} // namespace internal
253
254
255
257
258#endif
virtual NumberCache renumber_dofs(const std::vector< types::global_dof_index > &new_numbers) const override
virtual std::vector< NumberCache > distribute_mg_dofs() const override
virtual NumberCache renumber_mg_dofs(const unsigned int level, const std::vector< types::global_dof_index > &new_numbers) const override
ObserverPointer< DoFHandler< dim, spacedim > > dof_handler
ObserverPointer< DoFHandler< dim, spacedim > > dof_handler
virtual std::vector< NumberCache > distribute_mg_dofs() const override
virtual NumberCache renumber_mg_dofs(const unsigned int level, const std::vector< types::global_dof_index > &new_numbers) const override
virtual NumberCache renumber_dofs(const std::vector< types::global_dof_index > &new_numbers) const override
virtual NumberCache renumber_mg_dofs(const unsigned int level, const std::vector< types::global_dof_index > &new_numbers) const =0
virtual NumberCache renumber_dofs(const std::vector< types::global_dof_index > &new_numbers) const =0
virtual std::vector< NumberCache > distribute_mg_dofs() const =0
virtual std::vector< NumberCache > distribute_mg_dofs() const override
ObserverPointer< DoFHandler< dim, spacedim > > dof_handler
virtual NumberCache renumber_dofs(const std::vector< types::global_dof_index > &new_numbers) const override
virtual NumberCache renumber_mg_dofs(const unsigned int level, const std::vector< types::global_dof_index > &new_numbers) const override
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_CXX20_REQUIRES(condition)
Definition config.h:249
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
unsigned int level
Definition grid_out.cc:4642