Reference documentation for deal.II version 9.3.3
\(\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\}}\)
fe_tools.cc
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2000 - 2020 by the deal.II authors
4//
5// This file is part of the deal.II library.
6//
7// The deal.II library is free software; you can use it, redistribute
8// it, and/or modify it under the terms of the GNU Lesser General
9// Public License as published by the Free Software Foundation; either
10// version 2.1 of the License, or (at your option) any later version.
11// The full text of the license can be found in the file LICENSE.md at
12// the top level directory of deal.II.
13//
14// ---------------------------------------------------------------------
15
16
17#include <deal.II/fe/fe_tools.templates.h>
18
20
21/*-------------- Explicit Instantiations -------------------------------*/
22#include "fe_tools.inst"
23
24// these do not fit into the templates of the dimension in the inst file
25namespace FETools
26{
27 // Specializations for FE_Q.
28 template <>
29 std::unique_ptr<FiniteElement<1, 1>>
30 FEFactory<FE_Q<1, 1>>::get(const Quadrature<1> &quad) const
31 {
32 return std::make_unique<FE_Q<1>>(quad);
33 }
34
35 template <>
36 std::unique_ptr<FiniteElement<2, 2>>
37 FEFactory<FE_Q<2, 2>>::get(const Quadrature<1> &quad) const
38 {
39 return std::make_unique<FE_Q<2>>(quad);
40 }
41
42 template <>
43 std::unique_ptr<FiniteElement<3, 3>>
44 FEFactory<FE_Q<3, 3>>::get(const Quadrature<1> &quad) const
45 {
46 return std::make_unique<FE_Q<3>>(quad);
47 }
48
49 // Specializations for FE_Q_DG0.
50 template <>
51 std::unique_ptr<FiniteElement<1, 1>>
52 FEFactory<FE_Q_DG0<1, 1>>::get(const Quadrature<1> &quad) const
53 {
54 return std::make_unique<FE_Q_DG0<1>>(quad);
55 }
56
57 template <>
58 std::unique_ptr<FiniteElement<2, 2>>
59 FEFactory<FE_Q_DG0<2, 2>>::get(const Quadrature<1> &quad) const
60 {
61 return std::make_unique<FE_Q_DG0<2>>(quad);
62 }
63
64 template <>
65 std::unique_ptr<FiniteElement<3, 3>>
66 FEFactory<FE_Q_DG0<3, 3>>::get(const Quadrature<1> &quad) const
67 {
68 return std::make_unique<FE_Q_DG0<3>>(quad);
69 }
70
71 // Specializations for FE_Q_Bubbles.
72 template <>
73 std::unique_ptr<FiniteElement<1, 1>>
75 {
76 return std::make_unique<FE_Q_Bubbles<1>>(quad);
77 }
78
79 template <>
80 std::unique_ptr<FiniteElement<2, 2>>
82 {
83 return std::make_unique<FE_Q_Bubbles<2>>(quad);
84 }
85
86 template <>
87 std::unique_ptr<FiniteElement<3, 3>>
89 {
90 return std::make_unique<FE_Q_Bubbles<3>>(quad);
91 }
92
93 // Specializations for FE_DGQArbitraryNodes.
94 template <>
95 std::unique_ptr<FiniteElement<1, 1>>
96 FEFactory<FE_DGQ<1>>::get(const Quadrature<1> &quad) const
97 {
98 return std::make_unique<FE_DGQArbitraryNodes<1>>(quad);
99 }
100
101 template <>
102 std::unique_ptr<FiniteElement<1, 2>>
103 FEFactory<FE_DGQ<1, 2>>::get(const Quadrature<1> &quad) const
104 {
105 return std::make_unique<FE_DGQArbitraryNodes<1, 2>>(quad);
106 }
107
108 template <>
109 std::unique_ptr<FiniteElement<1, 3>>
110 FEFactory<FE_DGQ<1, 3>>::get(const Quadrature<1> &quad) const
111 {
112 return std::make_unique<FE_DGQArbitraryNodes<1, 3>>(quad);
113 }
114
115 template <>
116 std::unique_ptr<FiniteElement<2, 2>>
117 FEFactory<FE_DGQ<2>>::get(const Quadrature<1> &quad) const
118 {
119 return std::make_unique<FE_DGQArbitraryNodes<2>>(quad);
120 }
121
122 template <>
123 std::unique_ptr<FiniteElement<2, 3>>
124 FEFactory<FE_DGQ<2, 3>>::get(const Quadrature<1> &quad) const
125 {
126 return std::make_unique<FE_DGQArbitraryNodes<2, 3>>(quad);
127 }
128
129 template <>
130 std::unique_ptr<FiniteElement<3, 3>>
131 FEFactory<FE_DGQ<3>>::get(const Quadrature<1> &quad) const
132 {
133 return std::make_unique<FE_DGQArbitraryNodes<3>>(quad);
134 }
135
136 template void
138 std::vector<unsigned int> &);
139
140 template std::vector<unsigned int>
142
143 template std::vector<unsigned int>
145} // namespace FETools
146
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:402
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:403
template void hierarchic_to_lexicographic_numbering< 0 >(unsigned int, std::vector< unsigned int > &)
template std::vector< unsigned int > lexicographic_to_hierarchic_numbering< 0 >(unsigned int)