deal.II version GIT relicensing-2248-g6a8f632045 2024-12-12 07:30:00+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: LGPL-2.1-or-later
4// Copyright (C) 2016 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15
16#ifndef dealii_mg_transfer_internal_h
17#define dealii_mg_transfer_internal_h
18
19#include <deal.II/base/config.h>
20
22
24
26
28
30
31namespace internal
32{
33 namespace MGTransfer
34 {
43 template <int dim, int spacedim>
44 void
46 const DoFHandler<dim, spacedim> &dof_handler,
47 const MGConstrainedDoFs *mg_constrained_dofs,
48 std::vector<std::vector<
49 std::pair<types::global_dof_index, types::global_dof_index>>>
50 &copy_indices,
51 std::vector<std::vector<
52 std::pair<types::global_dof_index, types::global_dof_index>>>
53 &copy_indices_global_mine,
54 std::vector<std::vector<
55 std::pair<types::global_dof_index, types::global_dof_index>>>
56 &copy_indices_level_mine,
57 const bool skip_interface_dofs = true);
58
59
60
66 template <int dim>
67 unsigned int
68 compute_shift_within_children(const unsigned int child,
69 const unsigned int fe_shift_1d,
70 const unsigned int fe_degree);
71
77 template <typename Number>
79 {
84 unsigned int fe_degree;
85
91
95 unsigned int n_components;
96
102 unsigned int n_child_cell_dofs;
103
109 std::vector<unsigned int> lexicographic_numbering;
110
115 std::vector<Number> prolongation_matrix_1d;
116 };
117
121 template <int dim, typename Number>
122 void
124 const DoFHandler<dim> &dof_handler,
125 const MGConstrainedDoFs *mg_constrained_dofs,
126 const std::vector<std::shared_ptr<const Utilities::MPI::Partitioner>>
127 &external_partitioners,
128 ElementInfo<Number> &elem_info,
129 std::vector<std::vector<unsigned int>> &level_dof_indices,
130 std::vector<std::vector<std::pair<unsigned int, unsigned int>>>
131 &parent_child_connect,
132 std::vector<unsigned int> &n_owned_level_cells,
133 std::vector<std::vector<std::vector<unsigned short>>> &dirichlet_indices,
134 std::vector<std::vector<Number>> &weights_on_refined,
135 std::vector<Table<2, unsigned int>> &copy_indices_global_mine,
136 MGLevelObject<std::shared_ptr<const Utilities::MPI::Partitioner>>
137 &vector_partitioners);
138
139
140
146 void
148 const MGConstrainedDoFs *mg_constrained_dofs,
149 const unsigned int level,
150 std::vector<types::global_dof_index> &dof_indices);
151
152 } // namespace MGTransfer
153} // namespace internal
154
156
157#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:498
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:499
unsigned int level
Definition grid_out.cc:4632
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