Reference documentation for deal.II version GIT relicensing-214-g6e74dec06b 2024-03-27 18:10: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
fe_tools.cc
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2000 - 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#include <deal.II/fe/fe_tools.templates.h>
17
19
20
21namespace FETools
22{
23 namespace internal
24 {
25 namespace FEToolsAddFENameHelper
26 {
27 std::shared_mutex fe_name_map_lock;
28 }
29 } // namespace internal
30} // namespace FETools
31
32
33/*-------------- Explicit Instantiations -------------------------------*/
34#include "fe_tools.inst"
35
36// these do not fit into the templates of the dimension in the inst file
37namespace FETools
38{
39 // Specializations for FE_Q.
40 template <>
41 std::unique_ptr<FiniteElement<1, 1>>
42 FEFactory<FE_Q<1, 1>>::get(const Quadrature<1> &quad) const
43 {
44 return std::make_unique<FE_Q<1>>(quad);
45 }
46
47 template <>
48 std::unique_ptr<FiniteElement<2, 2>>
49 FEFactory<FE_Q<2, 2>>::get(const Quadrature<1> &quad) const
50 {
51 return std::make_unique<FE_Q<2>>(quad);
52 }
53
54 template <>
55 std::unique_ptr<FiniteElement<3, 3>>
56 FEFactory<FE_Q<3, 3>>::get(const Quadrature<1> &quad) const
57 {
58 return std::make_unique<FE_Q<3>>(quad);
59 }
60
61 // Specializations for FE_Q_DG0.
62 template <>
63 std::unique_ptr<FiniteElement<1, 1>>
64 FEFactory<FE_Q_DG0<1, 1>>::get(const Quadrature<1> &quad) const
65 {
66 return std::make_unique<FE_Q_DG0<1>>(quad);
67 }
68
69 template <>
70 std::unique_ptr<FiniteElement<2, 2>>
71 FEFactory<FE_Q_DG0<2, 2>>::get(const Quadrature<1> &quad) const
72 {
73 return std::make_unique<FE_Q_DG0<2>>(quad);
74 }
75
76 template <>
77 std::unique_ptr<FiniteElement<3, 3>>
78 FEFactory<FE_Q_DG0<3, 3>>::get(const Quadrature<1> &quad) const
79 {
80 return std::make_unique<FE_Q_DG0<3>>(quad);
81 }
82
83 // Specializations for FE_Q_Bubbles.
84 template <>
85 std::unique_ptr<FiniteElement<1, 1>>
87 {
88 return std::make_unique<FE_Q_Bubbles<1>>(quad);
89 }
90
91 template <>
92 std::unique_ptr<FiniteElement<2, 2>>
94 {
95 return std::make_unique<FE_Q_Bubbles<2>>(quad);
96 }
97
98 template <>
99 std::unique_ptr<FiniteElement<3, 3>>
101 {
102 return std::make_unique<FE_Q_Bubbles<3>>(quad);
103 }
104
105 // Specializations for FE_DGQArbitraryNodes.
106 template <>
107 std::unique_ptr<FiniteElement<1, 1>>
108 FEFactory<FE_DGQ<1>>::get(const Quadrature<1> &quad) const
109 {
110 return std::make_unique<FE_DGQArbitraryNodes<1>>(quad);
111 }
112
113 template <>
114 std::unique_ptr<FiniteElement<1, 2>>
115 FEFactory<FE_DGQ<1, 2>>::get(const Quadrature<1> &quad) const
116 {
117 return std::make_unique<FE_DGQArbitraryNodes<1, 2>>(quad);
118 }
119
120 template <>
121 std::unique_ptr<FiniteElement<1, 3>>
122 FEFactory<FE_DGQ<1, 3>>::get(const Quadrature<1> &quad) const
123 {
124 return std::make_unique<FE_DGQArbitraryNodes<1, 3>>(quad);
125 }
126
127 template <>
128 std::unique_ptr<FiniteElement<2, 2>>
129 FEFactory<FE_DGQ<2>>::get(const Quadrature<1> &quad) const
130 {
131 return std::make_unique<FE_DGQArbitraryNodes<2>>(quad);
132 }
133
134 template <>
135 std::unique_ptr<FiniteElement<2, 3>>
136 FEFactory<FE_DGQ<2, 3>>::get(const Quadrature<1> &quad) const
137 {
138 return std::make_unique<FE_DGQArbitraryNodes<2, 3>>(quad);
139 }
140
141 template <>
142 std::unique_ptr<FiniteElement<3, 3>>
143 FEFactory<FE_DGQ<3>>::get(const Quadrature<1> &quad) const
144 {
145 return std::make_unique<FE_DGQArbitraryNodes<3>>(quad);
146 }
147
148 template std::vector<unsigned int>
150
151 template std::vector<unsigned int>
153} // namespace FETools
154
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:502
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:503
template std::vector< unsigned int > hierarchic_to_lexicographic_numbering< 0 >(unsigned int)
template std::vector< unsigned int > lexicographic_to_hierarchic_numbering< 0 >(unsigned int)