libMesh
Loading...
Searching...
No Matches
fe_clough_shape_3D.C
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 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
28namespace libMesh
29{
30
31
33
34
35template <>
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
47template <>
48Real 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
61template <>
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
76template <>
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
89template <>
90Real 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
103template <>
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
119template <>
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
131template <>
132Real 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
144template <>
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
This is the base class from which all geometric element types are derived.
Definition elem.h:96
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
Definition fe_type.h:197
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:40
The libMesh namespace provides an interface to certain functionality in the library.
LIBMESH_DEFAULT_VECTORIZED_FE(template<>Real FE< 0, BERNSTEIN)
ElemType
Defines an enum for geometric element types.
libmesh_assert(ctx)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real