libMesh
fe_clough_shape_3D.C
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2024 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 // C++ includes
20 
21 // Local includes
22 #include "libmesh/fe.h"
23 #include "libmesh/elem.h"
24 
25 
26 // FIXME: 3D C1 finite elements are still a work in progress
27 
28 namespace libMesh
29 {
30 
31 
33 
34 
35 template <>
37  const Order,
38  const unsigned int,
39  const Point &)
40 {
41  libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
42  return 0.;
43 }
44 
45 
46 
47 template <>
48 Real FE<3,CLOUGH>::shape(const Elem * libmesh_dbg_var(elem),
49  const Order,
50  const unsigned int,
51  const Point &,
52  const bool)
53 {
54  libmesh_assert(elem);
55 
56  libmesh_not_implemented();
57  return 0.;
58 }
59 
60 
61 template <>
63  const Elem * libmesh_dbg_var(elem),
64  const unsigned int,
65  const Point &,
66  const bool)
67 {
68  libmesh_assert(elem);
69 
70  libmesh_not_implemented();
71  return 0.;
72 }
73 
74 
75 
76 template <>
78  const Order,
79  const unsigned int,
80  const unsigned int,
81  const Point &)
82 {
83  libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
84  return 0.;
85 }
86 
87 
88 
89 template <>
90 Real FE<3,CLOUGH>::shape_deriv(const Elem * libmesh_dbg_var(elem),
91  const Order,
92  const unsigned int,
93  const unsigned int,
94  const Point &,
95  const bool)
96 {
97  libmesh_assert(elem);
98  libmesh_not_implemented();
99  return 0.;
100 }
101 
102 
103 template <>
105  const Elem * libmesh_dbg_var(elem),
106  const unsigned int,
107  const unsigned int,
108  const Point &,
109  const bool)
110 {
111  libmesh_assert(elem);
112  libmesh_not_implemented();
113  return 0.;
114 }
115 
116 
117 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
118 
119 template <>
121  const Order,
122  const unsigned int,
123  const unsigned int,
124  const Point &)
125 {
126  libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
127  return 0.;
128 }
129 
130 
131 template <>
132 Real FE<3,CLOUGH>::shape_second_deriv(const Elem * libmesh_dbg_var(elem),
133  const Order,
134  const unsigned int,
135  const unsigned int,
136  const Point &,
137  const bool)
138 {
139  libmesh_assert(elem);
140  libmesh_not_implemented();
141  return 0.;
142 }
143 
144 template <>
146  const Elem * libmesh_dbg_var(elem),
147  const unsigned int,
148  const unsigned int,
149  const Point &,
150  const bool)
151 {
152  libmesh_assert(elem);
153  libmesh_not_implemented();
154  return 0.;
155 }
156 
157 #endif
158 
159 } // namespace libMesh
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
Definition: fe_type.h:182
ElemType
Defines an enum for geometric element types.
Order
defines an enum for polynomial orders.
Definition: enum_order.h:40
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)
This is the base class from which all geometric element types are derived.
Definition: elem.h:94
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
The libMesh namespace provides an interface to certain functionality in the library.
LIBMESH_DEFAULT_VECTORIZED_FE(template<>Real FE< 0, BERNSTEIN)
libmesh_assert(ctx)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:39
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)