deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20: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
mg_tools.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) 2005 - 2025 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_mg_tools_h
14#define dealii_mg_tools_h
15
16#include <deal.II/base/config.h>
17
19
22
23#include <set>
24#include <vector>
25
26
28
29// Forward declarations
30#ifndef DOXYGEN
31template <int dim, int spacedim>
33class DoFHandler;
35#endif
36
49namespace MGTools
50{
54 template <int dim, int spacedim>
55 void
57 const DoFHandler<dim, spacedim> &dofs,
58 const unsigned int level,
59 std::vector<unsigned int> &row_lengths,
60 const DoFTools::Coupling flux_couplings = DoFTools::none);
61
66 template <int dim, int spacedim>
67 void
69 const unsigned int level,
70 std::vector<unsigned int> &row_lengths,
71 const Table<2, DoFTools::Coupling> &couplings,
72 const Table<2, DoFTools::Coupling> &flux_couplings);
73
86 template <int dim, int spacedim, typename number = double>
87 void
89 SparsityPatternBase &sparsity,
90 const unsigned int level,
91 const AffineConstraints<number> &constraints = {},
92 const bool keep_constrained_dofs = true);
93
102 template <int dim, int spacedim, typename number = double>
103 void
105 SparsityPatternBase &sparsity,
106 const unsigned int level,
107 const AffineConstraints<number> &constraints = {},
108 const bool keep_constrained_dofs = true);
109
110
117 template <int dim, int spacedim>
118 void
120 SparsityPatternBase &sparsity,
121 const unsigned int level);
131 template <int dim, int spacedim>
132 void
134 SparsityPatternBase &sparsity,
135 const unsigned int level,
136 const Table<2, DoFTools::Coupling> &int_mask,
137 const Table<2, DoFTools::Coupling> &flux_mask);
138
147 template <int dim, int spacedim>
148 void
150 const DoFHandler<dim, spacedim> &dof_handler,
151 SparsityPatternBase &sparsity,
152 const unsigned int level,
153 const Table<2, DoFTools::Coupling> &flux_mask);
154
155
162 template <int dim, int spacedim>
163 void
165 const MGConstrainedDoFs &mg_constrained_dofs,
166 SparsityPatternBase &sparsity,
167 const unsigned int level);
168
169
176 template <int dim, int spacedim>
177 void
179 const DoFHandler<dim, spacedim> &dof_handler,
180 std::vector<std::vector<types::global_dof_index>> &dofs_per_block,
181 std::vector<unsigned int> target_block = {});
182
190 template <int dim, int spacedim>
191 void
193 const DoFHandler<dim, spacedim> &mg_dof,
194 std::vector<std::vector<types::global_dof_index>> &result,
195 const bool only_once = false,
196 std::vector<unsigned int> target_component = {});
197
226 template <int dim, int spacedim>
227 void
229 const DoFHandler<dim, spacedim> &mg_dof,
230 const std::map<types::boundary_id, const Function<spacedim> *>
231 &function_map,
232 std::vector<std::set<types::global_dof_index>> &boundary_indices,
233 const ComponentMask &component_mask = {});
234
242 template <int dim, int spacedim>
243 void
245 const std::map<types::boundary_id,
246 const Function<spacedim> *> &function_map,
247 std::vector<IndexSet> &boundary_indices,
248 const ComponentMask &component_mask = {});
249
257 template <int dim, int spacedim>
258 void
260 const std::set<types::boundary_id> &boundary_ids,
261 std::vector<IndexSet> &boundary_indices,
262 const ComponentMask &component_mask = {});
263
269 template <int dim, int spacedim>
270 void
272 std::vector<IndexSet> &interface_dofs);
273
283 template <int dim, int spacedim>
284 unsigned int
286
297 template <int dim, int spacedim>
298 std::vector<types::global_dof_index>
300
308 template <int dim, int spacedim>
309 std::vector<types::global_dof_index>
311 const std::vector<std::shared_ptr<const Triangulation<dim, spacedim>>>
312 &trias);
313
332 template <int dim, int spacedim>
333 double
335
341 template <int dim, int spacedim>
342 double
344 const std::vector<std::shared_ptr<const Triangulation<dim, spacedim>>>
345 &trias);
346
354 template <int dim, int spacedim>
355 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>
357
366 template <int dim, int spacedim>
367 std::vector<std::pair<types::global_dof_index, types::global_dof_index>>
369 const std::vector<std::shared_ptr<const Triangulation<dim, spacedim>>>
370 &trias);
371
383 template <int dim, int spacedim>
384 double
386
392 template <int dim, int spacedim>
393 double
395 const std::vector<std::shared_ptr<const Triangulation<dim, spacedim>>>
396 &trias);
397
398
399} // namespace MGTools
400
404
405#endif
#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
void make_flux_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity, const unsigned int level, const AffineConstraints< number > &constraints={}, const bool keep_constrained_dofs=true)
Definition mg_tools.cc:604
void count_dofs_per_component(const DoFHandler< dim, spacedim > &mg_dof, std::vector< std::vector< types::global_dof_index > > &result, const bool only_once=false, std::vector< unsigned int > target_component={})
Definition mg_tools.cc:1042
std::vector< std::pair< types::global_dof_index, types::global_dof_index > > local_vertical_communication_cost(const Triangulation< dim, spacedim > &tria)
Definition mg_tools.cc:1684
void make_boundary_list(const DoFHandler< dim, spacedim > &mg_dof, const std::map< types::boundary_id, const Function< spacedim > * > &function_map, std::vector< std::set< types::global_dof_index > > &boundary_indices, const ComponentMask &component_mask={})
Definition mg_tools.cc:1227
void make_interface_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, const MGConstrainedDoFs &mg_constrained_dofs, SparsityPatternBase &sparsity, const unsigned int level)
Definition mg_tools.cc:1003
std::vector< types::global_dof_index > local_workload(const Triangulation< dim, spacedim > &tria)
Definition mg_tools.cc:1616
void make_flux_sparsity_pattern_edge(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity, const unsigned int level)
Definition mg_tools.cc:677
void compute_row_length_vector(const DoFHandler< dim, spacedim > &dofs, const unsigned int level, std::vector< unsigned int > &row_lengths, const DoFTools::Coupling flux_couplings=DoFTools::none)
Definition mg_tools.cc:106
void extract_inner_interface_dofs(const DoFHandler< dim, spacedim > &mg_dof_handler, std::vector< IndexSet > &interface_dofs)
Definition mg_tools.cc:1431
double workload_imbalance(const Triangulation< dim, spacedim > &tria)
Definition mg_tools.cc:1662
void count_dofs_per_block(const DoFHandler< dim, spacedim > &dof_handler, std::vector< std::vector< types::global_dof_index > > &dofs_per_block, std::vector< unsigned int > target_block={})
Definition mg_tools.cc:1144
double vertical_communication_efficiency(const Triangulation< dim, spacedim > &tria)
Definition mg_tools.cc:1778
void make_sparsity_pattern(const DoFHandler< dim, spacedim > &dof_handler, SparsityPatternBase &sparsity, const unsigned int level, const AffineConstraints< number > &constraints={}, const bool keep_constrained_dofs=true)
Definition mg_tools.cc:575
unsigned int max_level_for_coarse_mesh(const Triangulation< dim, spacedim > &tria)
Definition mg_tools.cc:1518