Line data Source code
1 : // The libMesh Finite Element Library.
2 : // Copyright (C) 2002-2025 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 :
32 0 : LIBMESH_DEFAULT_VECTORIZED_FE(3,CLOUGH)
33 :
34 :
35 : template <>
36 0 : Real FE<3,CLOUGH>::shape(const ElemType,
37 : const Order,
38 : const unsigned int,
39 : const Point &)
40 : {
41 0 : 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 0 : 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 0 : libmesh_assert(elem);
55 :
56 0 : libmesh_not_implemented();
57 : return 0.;
58 : }
59 :
60 :
61 : template <>
62 0 : Real FE<3,CLOUGH>::shape(const FEType,
63 : const Elem * libmesh_dbg_var(elem),
64 : const unsigned int,
65 : const Point &,
66 : const bool)
67 : {
68 0 : libmesh_assert(elem);
69 :
70 0 : libmesh_not_implemented();
71 : return 0.;
72 : }
73 :
74 :
75 :
76 : template <>
77 0 : Real FE<3,CLOUGH>::shape_deriv(const ElemType,
78 : const Order,
79 : const unsigned int,
80 : const unsigned int,
81 : const Point &)
82 : {
83 0 : 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 0 : 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 0 : libmesh_assert(elem);
98 0 : libmesh_not_implemented();
99 : return 0.;
100 : }
101 :
102 :
103 : template <>
104 0 : Real FE<3,CLOUGH>::shape_deriv(const FEType,
105 : const Elem * libmesh_dbg_var(elem),
106 : const unsigned int,
107 : const unsigned int,
108 : const Point &,
109 : const bool)
110 : {
111 0 : libmesh_assert(elem);
112 0 : libmesh_not_implemented();
113 : return 0.;
114 : }
115 :
116 :
117 : #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
118 :
119 : template <>
120 0 : Real FE<3,CLOUGH>::shape_second_deriv(const ElemType,
121 : const Order,
122 : const unsigned int,
123 : const unsigned int,
124 : const Point &)
125 : {
126 0 : 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 0 : 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 0 : libmesh_assert(elem);
140 0 : libmesh_not_implemented();
141 : return 0.;
142 : }
143 :
144 : template <>
145 0 : Real FE<3,CLOUGH>::shape_second_deriv(const FEType,
146 : const Elem * libmesh_dbg_var(elem),
147 : const unsigned int,
148 : const unsigned int,
149 : const Point &,
150 : const bool)
151 : {
152 0 : libmesh_assert(elem);
153 0 : libmesh_not_implemented();
154 : return 0.;
155 : }
156 :
157 : #endif
158 :
159 : } // namespace libMesh
|