deal.II version GIT relicensing-6917-gb466a1809f 2026-10-16 06:30: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_global_coarsening.cc
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) 2020 - 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#include <deal.II/multigrid/mg_transfer_global_coarsening.templates.h>
14
16
18{
19 unsigned int
21 const unsigned int previous_fe_degree,
22 const PolynomialCoarseningSequenceType &p_sequence)
23 {
24 switch (p_sequence)
25 {
27 return std::max(previous_fe_degree / 2, 1u);
29 return std::max(previous_fe_degree - 1, 1u);
31 return 1u;
32 default:
34 return 1u;
35 }
36 }
37
38
39
40 std::vector<unsigned int>
42 const unsigned int max_degree,
43 const PolynomialCoarseningSequenceType &p_sequence)
44 {
45 std::vector<unsigned int> degrees{max_degree};
46
47 while (degrees.back() > 1)
48 degrees.push_back(
49 create_next_polynomial_coarsening_degree(degrees.back(), p_sequence));
50
51 std::reverse(degrees.begin(), degrees.end());
52
53 return degrees;
54 }
55} // namespace MGTransferGlobalCoarseningTools
56
57#include "multigrid/mg_transfer_global_coarsening.inst"
58
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
#define DEAL_II_NOT_IMPLEMENTED()
unsigned int create_next_polynomial_coarsening_degree(const unsigned int degree, const PolynomialCoarseningSequenceType &p_sequence)
std::vector< unsigned int > create_polynomial_coarsening_sequence(const unsigned int max_degree, const PolynomialCoarseningSequenceType &p_sequence)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)