deal.II version GIT relicensing-6848-g68f52df3ff 2026-10-09 12:50: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_transfer_internal.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) 2016 - 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
14#ifndef dealii_mg_transfer_internal_h
15#define dealii_mg_transfer_internal_h
16
17#include <deal.II/base/config.h>
18
20
22
24
26
28
29namespace internal
30{
31 namespace MGTransfer
32 {
41 template <int dim, int spacedim>
42 void
44 const DoFHandler<dim, spacedim> &dof_handler,
45 const MGConstrainedDoFs *mg_constrained_dofs,
46 std::vector<std::vector<
47 std::pair<types::global_dof_index, types::global_dof_index>>>
48 &copy_indices,
49 std::vector<std::vector<
50 std::pair<types::global_dof_index, types::global_dof_index>>>
51 &copy_indices_global_mine,
52 std::vector<std::vector<
53 std::pair<types::global_dof_index, types::global_dof_index>>>
54 &copy_indices_level_mine,
55 const bool skip_interface_dofs = true);
56
57
58
64 template <int dim>
65 unsigned int
66 compute_shift_within_children(const unsigned int child,
67 const unsigned int fe_shift_1d,
68 const unsigned int fe_degree);
69
75 template <typename Number>
77 {
82 unsigned int fe_degree;
83
89
93 unsigned int n_components;
94
100 unsigned int n_child_cell_dofs;
101
107 std::vector<unsigned int> lexicographic_numbering;
108
113 std::vector<Number> prolongation_matrix_1d;
114 };
115
119 template <int dim, typename Number>
120 void
122 const DoFHandler<dim> &dof_handler,
123 const MGConstrainedDoFs *mg_constrained_dofs,
124 const std::vector<std::shared_ptr<const Utilities::MPI::Partitioner>>
125 &external_partitioners,
126 ElementInfo<Number> &elem_info,
127 std::vector<std::vector<unsigned int>> &level_dof_indices,
128 std::vector<std::vector<std::pair<unsigned int, unsigned int>>>
129 &parent_child_connect,
130 std::vector<unsigned int> &n_owned_level_cells,
131 std::vector<std::vector<std::vector<unsigned short>>> &dirichlet_indices,
132 std::vector<std::vector<Number>> &weights_on_refined,
133 std::vector<Table<2, unsigned int>> &copy_indices_global_mine,
134 MGLevelObject<std::shared_ptr<const Utilities::MPI::Partitioner>>
135 &vector_partitioners);
136
137
138
144 void
146 const MGConstrainedDoFs *mg_constrained_dofs,
147 const unsigned int level,
148 std::vector<types::global_dof_index> &dof_indices);
149
150 } // namespace MGTransfer
151} // namespace internal
152
154
155#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
unsigned int level
Definition grid_out.cc:4642
void resolve_identity_constraints(const MGConstrainedDoFs *mg_constrained_dofs, const unsigned int level, std::vector< types::global_dof_index > &dof_indices)
unsigned int compute_shift_within_children(const unsigned int child, const unsigned int fe_shift_1d, const unsigned int fe_degree)
void setup_transfer(const DoFHandler< dim > &dof_handler, const MGConstrainedDoFs *mg_constrained_dofs, const std::vector< std::shared_ptr< const Utilities::MPI::Partitioner > > &external_partitioners, ElementInfo< Number > &elem_info, std::vector< std::vector< unsigned int > > &level_dof_indices, std::vector< std::vector< std::pair< unsigned int, unsigned int > > > &parent_child_connect, std::vector< unsigned int > &n_owned_level_cells, std::vector< std::vector< std::vector< unsigned short > > > &dirichlet_indices, std::vector< std::vector< Number > > &weights_on_refined, std::vector< Table< 2, unsigned int > > &copy_indices_global_mine, MGLevelObject< std::shared_ptr< const Utilities::MPI::Partitioner > > &vector_partitioners)
void fill_copy_indices(const DoFHandler< dim, spacedim > &dof_handler, const MGConstrainedDoFs *mg_constrained_dofs, std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > &copy_indices, std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > &copy_indices_global_mine, std::vector< std::vector< std::pair< types::global_dof_index, types::global_dof_index > > > &copy_indices_level_mine, const bool skip_interface_dofs=true)
std::vector< unsigned int > lexicographic_numbering