deal.II version 9.8.0
\(\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
source
multigrid
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
15
DEAL_II_NAMESPACE_OPEN
16
17
namespace
MGTransferGlobalCoarseningTools
18
{
19
unsigned
int
20
create_next_polynomial_coarsening_degree
(
21
const
unsigned
int
previous_fe_degree,
22
const
PolynomialCoarseningSequenceType
&p_sequence)
23
{
24
switch
(p_sequence)
25
{
26
case
PolynomialCoarseningSequenceType::bisect
:
27
return
std::max
(previous_fe_degree / 2, 1u);
28
case
PolynomialCoarseningSequenceType::decrease_by_one
:
29
return
std::max
(previous_fe_degree - 1, 1u);
30
case
PolynomialCoarseningSequenceType::go_to_one
:
31
return
1u;
32
default
:
33
DEAL_II_NOT_IMPLEMENTED
();
34
return
1u;
35
}
36
}
37
38
39
40
std::vector<unsigned int>
41
create_polynomial_coarsening_sequence
(
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
59
DEAL_II_NAMESPACE_CLOSE
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition
config.h:38
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition
config.h:39
DEAL_II_NOT_IMPLEMENTED
#define DEAL_II_NOT_IMPLEMENTED()
Definition
exception_macros.h:705
MGTransferGlobalCoarseningTools
Definition
mg_transfer_global_coarsening.h:38
MGTransferGlobalCoarseningTools::PolynomialCoarseningSequenceType
PolynomialCoarseningSequenceType
Definition
mg_transfer_global_coarsening.h:47
MGTransferGlobalCoarseningTools::PolynomialCoarseningSequenceType::go_to_one
@ go_to_one
Definition
mg_transfer_global_coarsening.h:62
MGTransferGlobalCoarseningTools::PolynomialCoarseningSequenceType::decrease_by_one
@ decrease_by_one
Definition
mg_transfer_global_coarsening.h:57
MGTransferGlobalCoarseningTools::PolynomialCoarseningSequenceType::bisect
@ bisect
Definition
mg_transfer_global_coarsening.h:52
MGTransferGlobalCoarseningTools::create_next_polynomial_coarsening_degree
unsigned int create_next_polynomial_coarsening_degree(const unsigned int degree, const PolynomialCoarseningSequenceType &p_sequence)
Definition
mg_transfer_global_coarsening.cc:20
MGTransferGlobalCoarseningTools::create_polynomial_coarsening_sequence
std::vector< unsigned int > create_polynomial_coarsening_sequence(const unsigned int max_degree, const PolynomialCoarseningSequenceType &p_sequence)
Definition
mg_transfer_global_coarsening.cc:41
std::max
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
Definition
vectorization.h:6741
Generated by
1.16.1