Reference documentation for deal.II version GIT 6bdf9a4b6c 2022-08-12 19:20:02+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\}}\)
fe_tools.cc
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2000 - 2021 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
25 namespace 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 std::vector<unsigned int>
138 
139  template std::vector<unsigned int>
141 } // namespace FETools
142 
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:442
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:443
template std::vector< unsigned int > hierarchic_to_lexicographic_numbering< 0 >(unsigned int)
template std::vector< unsigned int > lexicographic_to_hierarchic_numbering< 0 >(unsigned int)