BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_IF_HEX27.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_CL_IF_HEX27_HPP
13#define BELFEM_CL_IF_HEX27_HPP
14
16
17namespace belfem
18{
19 namespace fem
20 {
21//------------------------------------------------------------------------------
22
23 template<>
31
32//------------------------------------------------------------------------------
33
34 template<>
39 {
40 return ElementType::HEX27;
41 }
42
43//------------------------------------------------------------------------------
44
45 template<>
46 void
50 {
51 aXiHat.set_size( 3, 27 );
52
53 aXiHat( 0, 0 ) = -1.000000; aXiHat( 1, 0 ) = -1.000000; aXiHat( 2, 0 ) = -1.000000;
54 aXiHat( 0, 1 ) = 1.000000; aXiHat( 1, 1 ) = -1.000000; aXiHat( 2, 1 ) = -1.000000;
55 aXiHat( 0, 2 ) = 1.000000; aXiHat( 1, 2 ) = 1.000000; aXiHat( 2, 2 ) = -1.000000;
56 aXiHat( 0, 3 ) = -1.000000; aXiHat( 1, 3 ) = 1.000000; aXiHat( 2, 3 ) = -1.000000;
57 aXiHat( 0, 4 ) = -1.000000; aXiHat( 1, 4 ) = -1.000000; aXiHat( 2, 4 ) = 1.000000;
58 aXiHat( 0, 5 ) = 1.000000; aXiHat( 1, 5 ) = -1.000000; aXiHat( 2, 5 ) = 1.000000;
59 aXiHat( 0, 6 ) = 1.000000; aXiHat( 1, 6 ) = 1.000000; aXiHat( 2, 6 ) = 1.000000;
60 aXiHat( 0, 7 ) = -1.000000; aXiHat( 1, 7 ) = 1.000000; aXiHat( 2, 7 ) = 1.000000;
61
62 aXiHat( 0, 8 ) = 0.000000; aXiHat( 1, 8 ) = -1.000000; aXiHat( 2, 8 ) = -1.000000;
63 aXiHat( 0, 9 ) = 1.000000; aXiHat( 1, 9 ) = 0.000000; aXiHat( 2, 9 ) = -1.000000;
64 aXiHat( 0, 10 ) = 0.000000; aXiHat( 1, 10 ) = 1.000000; aXiHat( 2, 10 ) = -1.000000;
65 aXiHat( 0, 11 ) = -1.000000; aXiHat( 1, 11 ) = 0.000000; aXiHat( 2, 11 ) = -1.000000;
66
67 aXiHat( 0, 12 ) = -1.000000; aXiHat( 1, 12 ) = -1.000000; aXiHat( 2, 12 ) = 0.000000;
68 aXiHat( 0, 13 ) = 1.000000; aXiHat( 1, 13 ) = -1.000000; aXiHat( 2, 13 ) = 0.000000;
69 aXiHat( 0, 14 ) = 1.000000; aXiHat( 1, 14 ) = 1.000000; aXiHat( 2, 14 ) = 0.000000;
70 aXiHat( 0, 15 ) = -1.000000; aXiHat( 1, 15 ) = 1.000000; aXiHat( 2, 15 ) = 0.000000;
71
72 aXiHat( 0, 16 ) = 0.000000; aXiHat( 1, 16 ) = -1.000000; aXiHat( 2, 16 ) = 1.000000;
73 aXiHat( 0, 17 ) = 1.000000; aXiHat( 1, 17 ) = 0.000000; aXiHat( 2, 17 ) = 1.000000;
74 aXiHat( 0, 18 ) = 0.000000; aXiHat( 1, 18 ) = 1.000000; aXiHat( 2, 18 ) = 1.000000;
75 aXiHat( 0, 19 ) = -1.000000; aXiHat( 1, 19 ) = 0.000000; aXiHat( 2, 19 ) = 1.000000;
76
77 aXiHat( 0, 20 ) = 0.000000; aXiHat( 1, 20 ) = 0.000000; aXiHat( 2, 20 ) = 0.000000;
78 aXiHat( 0, 21 ) = 0.000000; aXiHat( 1, 21 ) = 0.000000; aXiHat( 2, 21 ) = -1.000000;
79 aXiHat( 0, 22 ) = 0.000000; aXiHat( 1, 22 ) = 0.000000; aXiHat( 2, 22 ) = 1.000000;
80 aXiHat( 0, 23 ) = -1.000000; aXiHat( 1, 23 ) = 0.000000; aXiHat( 2, 23 ) = 0.000000;
81 aXiHat( 0, 24 ) = 1.000000; aXiHat( 1, 24 ) = 0.000000; aXiHat( 2, 24 ) = 0.000000;
82 aXiHat( 0, 25 ) = 0.000000; aXiHat( 1, 25 ) = -1.000000; aXiHat( 2, 25 ) = 0.000000;
83 aXiHat( 0, 26 ) = 0.000000; aXiHat( 1, 26 ) = 1.000000; aXiHat( 2, 26 ) = 0.000000;
84
85 }
86
87//------------------------------------------------------------------------------
88
89 template<>
90 void
93 const Vector< real > & aXi,
94 Matrix< real > & aN ) const
95 {
96 const real xi = aXi( 0 );
97 const real eta = aXi( 1 );
98 const real zeta = aXi( 2 );
99
100 const real xi2 = xi*xi;
101 const real eta2 = eta*eta;
102 const real zeta2 = zeta*zeta;
103
104 const real a = -0.25 * eta * zeta;
105 const real b = -0.25 * xi * zeta;
106 const real c = -0.25 * xi * eta;
107 const real d = 0.125 * xi * eta * zeta;
108
109 aN.set_size( 1, 27 );
110
111 aN( 0, 0 ) = d * ( eta - 1.0 ) * ( xi - 1.0 ) * ( zeta - 1.0 );
112 aN( 0, 1 ) = d * ( eta - 1.0 ) * ( xi + 1.0 ) * ( zeta - 1.0 );
113 aN( 0, 2 ) = d * ( eta + 1.0 ) * ( xi + 1.0 ) * ( zeta - 1.0 );
114 aN( 0, 3 ) = d * ( eta + 1.0 ) * ( xi - 1.0 ) * ( zeta - 1.0 );
115 aN( 0, 4 ) = d * ( eta - 1.0 ) * ( xi - 1.0 ) * ( zeta + 1.0 );
116 aN( 0, 5 ) = d * ( eta - 1.0 ) * ( xi + 1.0 ) * ( zeta + 1.0 );
117 aN( 0, 6 ) = d * ( eta + 1.0 ) * ( xi + 1.0 ) * ( zeta + 1.0 );
118 aN( 0, 7 ) = d * ( eta + 1.0 ) * ( xi - 1.0 ) * ( zeta + 1.0 );
119 aN( 0, 8 ) = a * ( xi2 - 1.0 ) * ( eta - 1.0 ) * ( zeta - 1.0 );
120 aN( 0, 9 ) = b * ( eta2 - 1.0 ) * ( xi + 1.0 ) * ( zeta - 1.0 );
121 aN( 0, 10 ) = a * ( xi2 - 1.0 ) * ( eta + 1.0 ) * ( zeta - 1.0 );
122 aN( 0, 11 ) = b * ( eta2 - 1.0 ) * ( xi - 1.0 ) * ( zeta - 1.0 );
123 aN( 0, 12 ) = c * ( zeta2 - 1.0 ) * ( eta - 1.0 ) * ( xi - 1.0 );
124 aN( 0, 13 ) = c * ( zeta2 - 1.0 ) * ( eta - 1.0 ) * ( xi + 1.0 );
125 aN( 0, 14 ) = c * ( zeta2 - 1.0 ) * ( eta + 1.0 ) * ( xi + 1.0 );
126 aN( 0, 15 ) = c * ( zeta2 - 1.0 ) * ( eta + 1.0 ) * ( xi - 1.0 );
127 aN( 0, 16 ) = a * ( xi2 - 1.0 ) * ( eta - 1.0 ) * ( zeta + 1.0 );
128 aN( 0, 17 ) = b * ( eta2 - 1.0 ) * ( xi + 1.0 ) * ( zeta + 1.0 );
129 aN( 0, 18 ) = a * ( xi2 - 1.0 ) * ( eta + 1.0 ) * ( zeta + 1.0 );
130 aN( 0, 19 ) = b * ( eta2 - 1.0 ) * ( xi - 1.0 ) * ( zeta + 1.0 );
131 aN( 0, 20 ) = -( eta2 - 1.0 ) * ( xi2 - 1.0 ) * ( zeta2 - 1.0 );
132 aN( 0, 21 ) = ( zeta * ( eta2 - 1.0 ) * ( xi2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
133 aN( 0, 22 ) = ( zeta * ( eta2 - 1.0 ) * ( xi2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
134 aN( 0, 23 ) = ( xi * ( eta2 - 1.0 ) * ( zeta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
135 aN( 0, 24 ) = ( xi * ( eta2 - 1.0 ) * ( zeta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
136 aN( 0, 25 ) = ( eta * ( xi2 - 1.0 ) * ( zeta2 - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
137 aN( 0, 26 ) = ( eta * ( xi2 - 1.0 ) * ( zeta2 - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
138 }
139
140//------------------------------------------------------------------------------
141
142 template<>
143 void
146 const Vector< real > & aXi,
147 Matrix< real > & adNdXi ) const
148 {
149 const real xi = aXi( 0 );
150 const real eta = aXi( 1 );
151 const real zeta = aXi( 2 );
152
153 const real xi2 = xi*xi;
154 const real eta2 = eta*eta;
155 const real zeta2 = zeta*zeta;
156
157 const real a = 0.125*eta*zeta;
158 const real b = 0.125*xi*zeta;
159 const real c = 0.125*xi*eta;
160 const real d = -0.5*xi*eta*zeta;
161
162 adNdXi.set_size( 3, 27 );
163
164 adNdXi( 0, 0 ) = a * ( 2.0 * xi - 1.0 ) * ( eta - 1.0 ) * ( zeta - 1.0 );
165 adNdXi( 1, 0 ) = b * ( 2.0 * eta - 1.0 ) * ( xi - 1.0 ) * ( zeta - 1.0 );
166 adNdXi( 2, 0 ) = c * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) * ( xi - 1.0 );
167
168 adNdXi( 0, 1 ) = a * ( 2.0 * xi + 1.0 ) * ( eta - 1.0 ) * ( zeta - 1.0 );
169 adNdXi( 1, 1 ) = b * ( 2.0 * eta - 1.0 ) * ( xi + 1.0 ) * ( zeta - 1.0 );
170 adNdXi( 2, 1 ) = c * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) * ( xi + 1.0 );
171
172 adNdXi( 0, 2 ) = a * ( 2.0 * xi + 1.0 ) * ( eta + 1.0 ) * ( zeta - 1.0 );
173 adNdXi( 1, 2 ) = b * ( 2.0 * eta + 1.0 ) * ( xi + 1.0 ) * ( zeta - 1.0 );
174 adNdXi( 2, 2 ) = c * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) * ( xi + 1.0 );
175
176 adNdXi( 0, 3 ) = a * ( 2.0 * xi - 1.0 ) * ( eta + 1.0 ) * ( zeta - 1.0 );
177 adNdXi( 1, 3 ) = b * ( 2.0 * eta + 1.0 ) * ( xi - 1.0 ) * ( zeta - 1.0 );
178 adNdXi( 2, 3 ) = c * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) * ( xi - 1.0 );
179
180 adNdXi( 0, 4 ) = a * ( 2.0 * xi - 1.0 ) * ( eta - 1.0 ) * ( zeta + 1.0 );
181 adNdXi( 1, 4 ) = b * ( 2.0 * eta - 1.0 ) * ( xi - 1.0 ) * ( zeta + 1.0 );
182 adNdXi( 2, 4 ) = c * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) * ( xi - 1.0 );
183
184 adNdXi( 0, 5 ) = a * ( 2.0 * xi + 1.0 ) * ( eta - 1.0 ) * ( zeta + 1.0 );
185 adNdXi( 1, 5 ) = b * ( 2.0 * eta - 1.0 ) * ( xi + 1.0 ) * ( zeta + 1.0 );
186 adNdXi( 2, 5 ) = c * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) * ( xi + 1.0 );
187
188 adNdXi( 0, 6 ) = a * ( 2.0 * xi + 1.0 ) * ( eta + 1.0 ) * ( zeta + 1.0 );
189 adNdXi( 1, 6 ) = b * ( 2.0 * eta + 1.0 ) * ( xi + 1.0 ) * ( zeta + 1.0 );
190 adNdXi( 2, 6 ) = c * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) * ( xi + 1.0 );
191
192 adNdXi( 0, 7 ) = a * ( 2.0 * xi - 1.0 ) * ( eta + 1.0 ) * ( zeta + 1.0 );
193 adNdXi( 1, 7 ) = b * ( 2.0 * eta + 1.0 ) * ( xi - 1.0 ) * ( zeta + 1.0 );
194 adNdXi( 2, 7 ) = c * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) * ( xi - 1.0 );
195
196 adNdXi( 0, 8 ) = d * ( eta - 1.0 ) * ( zeta - 1.0 );
197 adNdXi( 1, 8 ) = - ( zeta * ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
198 adNdXi( 2, 8 ) = - ( eta * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) ) * 0.25;
199
200 adNdXi( 0, 9 ) = - ( zeta * ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
201 adNdXi( 1, 9 ) = d * ( xi + 1.0 ) * ( zeta - 1.0 );
202 adNdXi( 2, 9 ) = - ( xi * ( eta2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi + 1.0 ) ) * 0.25;
203
204 adNdXi( 0, 10 ) = d * ( eta + 1.0 ) * ( zeta - 1.0 );
205 adNdXi( 1, 10 ) = - ( zeta * ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
206 adNdXi( 2, 10 ) = - ( eta * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) ) * 0.25;
207
208 adNdXi( 0, 11 ) = - ( zeta * ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
209 adNdXi( 1, 11 ) = d * ( xi - 1.0 ) * ( zeta - 1.0 );
210 adNdXi( 2, 11 ) = - ( xi * ( eta2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi - 1.0 ) ) * 0.25;
211
212 adNdXi( 0, 12 ) = - ( eta * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 ) * ( eta - 1.0 ) ) * 0.25;
213 adNdXi( 1, 12 ) = - ( xi * ( 2.0 * eta - 1.0 ) * ( zeta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.25;
214 adNdXi( 2, 12 ) = d * ( eta - 1.0 ) * ( xi - 1.0 );
215
216 adNdXi( 0, 13 ) = - ( eta * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 ) * ( eta - 1.0 ) ) * 0.25;
217 adNdXi( 1, 13 ) = - ( xi * ( 2.0 * eta - 1.0 ) * ( zeta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.25;
218 adNdXi( 2, 13 ) = d * ( eta - 1.0 ) * ( xi + 1.0 );
219
220 adNdXi( 0, 14 ) = - ( eta * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 ) * ( eta + 1.0 ) ) * 0.25;
221 adNdXi( 1, 14 ) = - ( xi * ( 2.0 * eta + 1.0 ) * ( zeta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.25;
222 adNdXi( 2, 14 ) = d * ( eta + 1.0 ) * ( xi + 1.0 );
223
224 adNdXi( 0, 15 ) = - ( eta * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 ) * ( eta + 1.0 ) ) * 0.25;
225 adNdXi( 1, 15 ) = - ( xi * ( 2.0 * eta + 1.0 ) * ( zeta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.25;
226 adNdXi( 2, 15 ) = d * ( eta + 1.0 ) * ( xi - 1.0 );
227
228 adNdXi( 0, 16 ) = d * ( eta - 1.0 ) * ( zeta + 1.0 );
229 adNdXi( 1, 16 ) = - ( zeta * ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
230 adNdXi( 2, 16 ) = - ( eta * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) ) * 0.25;
231
232 adNdXi( 0, 17 ) = - ( zeta * ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
233 adNdXi( 1, 17 ) = d * ( xi + 1.0 ) * ( zeta + 1.0 );
234 adNdXi( 2, 17 ) = - ( xi * ( eta2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi + 1.0 ) ) * 0.25;
235
236 adNdXi( 0, 18 ) = d * ( eta + 1.0 ) * ( zeta + 1.0 );
237 adNdXi( 1, 18 ) = - ( zeta * ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
238 adNdXi( 2, 18 ) = - ( eta * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) ) * 0.25;
239
240 adNdXi( 0, 19 ) = - ( zeta * ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
241 adNdXi( 1, 19 ) = d * ( xi - 1.0 ) * ( zeta + 1.0 );
242 adNdXi( 2, 19 ) = - ( xi * ( eta2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi - 1.0 ) ) * 0.25;
243
244 adNdXi( 0, 20 ) = - 2.0 * xi * ( eta2 - 1.0 ) * ( zeta2 - 1.0 );
245 adNdXi( 1, 20 ) = - 2.0 * eta * ( xi2 - 1.0 ) * ( zeta2 - 1.0 );
246 adNdXi( 2, 20 ) = - 2.0 * zeta * ( eta2 - 1.0 ) * ( xi2 - 1.0 );
247
248 adNdXi( 0, 21 ) = 8.0 * b * ( eta2 - 1.0 ) * ( zeta - 1.0 );
249 adNdXi( 1, 21 ) = 8.0 * a * ( xi2 - 1.0 ) * ( zeta - 1.0 );
250 adNdXi( 2, 21 ) = ( ( eta2 - 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) ) * 0.5;
251
252 adNdXi( 0, 22 ) = 8.0 * b * ( eta2 - 1.0 ) * ( zeta + 1.0 );
253 adNdXi( 1, 22 ) = 8.0 * a * ( xi2 - 1.0 ) * ( zeta + 1.0 );
254 adNdXi( 2, 22 ) = ( ( eta2 - 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) ) * 0.5;
255
256 adNdXi( 0, 23 ) =( ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 ) ) * 0.5;
257 adNdXi( 1, 23 ) = 8.0 * c * ( zeta2 - 1.0 ) * ( xi - 1.0 );
258 adNdXi( 2, 23 ) = 8.0 * b * ( eta2 - 1.0 ) * ( xi - 1.0 );
259
260 adNdXi( 0, 24 ) =( ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 ) ) * 0.5;
261 adNdXi( 1, 24 ) = 8.0 * c * ( zeta2 - 1.0 ) * ( xi + 1.0 );
262 adNdXi( 2, 24 ) = 8.0 * b * ( eta2 - 1.0 ) * ( xi + 1.0 );
263
264 adNdXi( 0, 25 ) = 8.0 * c * ( zeta2 - 1.0 ) * ( eta - 1.0 );
265 adNdXi( 1, 25 ) = ( ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 ) * ( zeta2 - 1.0 ) ) * 0.5;
266 adNdXi( 2, 25 ) = 8.0 * a * ( xi2 - 1.0 ) * ( eta - 1.0 );
267
268 adNdXi( 0, 26 ) = 8.0 * c * ( zeta2 - 1.0 ) * ( eta + 1.0 );
269 adNdXi( 1, 26 ) = ( ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 ) * ( zeta2 - 1.0 ) ) * 0.5;
270 adNdXi( 2, 26 ) = 8.0 * a * ( xi2 - 1.0 ) * ( eta + 1.0 );
271 }
272
273//------------------------------------------------------------------------------
274
275 template<>
276 void
279 const Vector< real > & aXi,
280 Matrix< real > & ad2NdXi2 ) const
281 {
282 const real xi = aXi( 0 );
283 const real eta = aXi( 1 );
284 const real zeta = aXi( 2 );
285
286 const real xi2 = xi*xi;
287 const real eta2 = eta*eta;
288 const real zeta2 = zeta*zeta;
289
290 const real a = eta * zeta;
291 const real b = xi * zeta;
292 const real c = xi * eta;
293 const real d = 2.0 * xi* eta * zeta;
294
295 ad2NdXi2.set_size( 6, 27 );
296
297 ad2NdXi2( 0, 0 ) = ( a * ( eta - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
298 ad2NdXi2( 1, 0 ) = ( b * ( xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
299 ad2NdXi2( 2, 0 ) = ( c * ( eta - 1.0 ) * ( xi - 1.0 ) ) * 0.25;
300 ad2NdXi2( 3, 0 ) = ( xi * ( 2.0 * eta - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi - 1.0 ) ) * 0.125;
301 ad2NdXi2( 4, 0 ) = ( eta * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) ) * 0.125;
302 ad2NdXi2( 5, 0 ) = ( zeta * ( 2.0 * eta - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.125;
303
304 ad2NdXi2( 0, 1 ) = ( a * ( eta - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
305 ad2NdXi2( 1, 1 ) = ( b * ( xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
306 ad2NdXi2( 2, 1 ) = ( c * ( eta - 1.0 ) * ( xi + 1.0 ) ) * 0.25;
307 ad2NdXi2( 3, 1 ) = ( xi * ( 2.0 * eta - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi + 1.0 ) ) * 0.125;
308 ad2NdXi2( 4, 1 ) = ( eta * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) ) * 0.125;
309 ad2NdXi2( 5, 1 ) = ( zeta * ( 2.0 * eta - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.125;
310
311 ad2NdXi2( 0, 2 ) = ( a * ( eta + 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
312 ad2NdXi2( 1, 2 ) = ( b * ( xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
313 ad2NdXi2( 2, 2 ) = ( c * ( eta + 1.0 ) * ( xi + 1.0 ) ) * 0.25;
314 ad2NdXi2( 3, 2 ) = ( xi * ( 2.0 * eta + 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi + 1.0 ) ) * 0.125;
315 ad2NdXi2( 4, 2 ) = ( eta * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) ) * 0.125;
316 ad2NdXi2( 5, 2 ) = ( zeta * ( 2.0 * eta + 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.125;
317
318 ad2NdXi2( 0, 3 ) = ( a * ( eta + 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
319 ad2NdXi2( 1, 3 ) = ( b * ( xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.25;
320 ad2NdXi2( 2, 3 ) = ( c * ( eta + 1.0 ) * ( xi - 1.0 ) ) * 0.25;
321 ad2NdXi2( 3, 3 ) = ( xi * ( 2.0 * eta + 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( xi - 1.0 ) ) * 0.125;
322 ad2NdXi2( 4, 3 ) = ( eta * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) ) * 0.125;
323 ad2NdXi2( 5, 3 ) = ( zeta * ( 2.0 * eta + 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.125;
324
325 ad2NdXi2( 0, 4 ) = ( a * ( eta - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
326 ad2NdXi2( 1, 4 ) = ( b * ( xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
327 ad2NdXi2( 2, 4 ) = ( c * ( eta - 1.0 ) * ( xi - 1.0 ) ) * 0.25;
328 ad2NdXi2( 3, 4 ) = ( xi * ( 2.0 * eta - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi - 1.0 ) ) * 0.125;
329 ad2NdXi2( 4, 4 ) = ( eta * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) ) * 0.125;
330 ad2NdXi2( 5, 4 ) = ( zeta * ( 2.0 * eta - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.125;
331
332 ad2NdXi2( 0, 5 ) = ( a * ( eta - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
333 ad2NdXi2( 1, 5 ) = ( b * ( xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
334 ad2NdXi2( 2, 5 ) = ( c * ( eta - 1.0 ) * ( xi + 1.0 ) ) * 0.25;
335 ad2NdXi2( 3, 5 ) = ( xi * ( 2.0 * eta - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi + 1.0 ) ) * 0.125;
336 ad2NdXi2( 4, 5 ) = ( eta * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) ) * 0.125;
337 ad2NdXi2( 5, 5 ) = ( zeta * ( 2.0 * eta - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.125;
338
339 ad2NdXi2( 0, 6 ) = ( a * ( eta + 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
340 ad2NdXi2( 1, 6 ) = ( b * ( xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
341 ad2NdXi2( 2, 6 ) = ( c * ( eta + 1.0 ) * ( xi + 1.0 ) ) * 0.25;
342 ad2NdXi2( 3, 6 ) = ( xi * ( 2.0 * eta + 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi + 1.0 ) ) * 0.125;
343 ad2NdXi2( 4, 6 ) = ( eta * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) ) * 0.125;
344 ad2NdXi2( 5, 6 ) = ( zeta * ( 2.0 * eta + 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.125;
345
346 ad2NdXi2( 0, 7 ) = ( a * ( eta + 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
347 ad2NdXi2( 1, 7 ) = ( b * ( xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.25;
348 ad2NdXi2( 2, 7 ) = ( c * ( eta + 1.0 ) * ( xi - 1.0 ) ) * 0.25;
349 ad2NdXi2( 3, 7 ) = ( xi * ( 2.0 * eta + 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( xi - 1.0 ) ) * 0.125;
350 ad2NdXi2( 4, 7 ) = ( eta * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) ) * 0.125;
351 ad2NdXi2( 5, 7 ) = ( zeta * ( 2.0 * eta + 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.125;
352
353 ad2NdXi2( 0, 8 ) = - ( a * ( eta - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
354 ad2NdXi2( 1, 8 ) = - ( zeta * ( xi2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
355 ad2NdXi2( 2, 8 ) = - ( eta * ( xi2 - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
356 ad2NdXi2( 3, 8 ) = - ( ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) ) * 0.25;
357 ad2NdXi2( 4, 8 ) = - ( c * ( 2.0 * zeta - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
358 ad2NdXi2( 5, 8 ) = - ( b * ( 2.0 * eta - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
359
360 ad2NdXi2( 0, 9 ) = - ( zeta * ( eta2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
361 ad2NdXi2( 1, 9 ) = - ( b * ( xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
362 ad2NdXi2( 2, 9 ) = - ( xi * ( eta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
363 ad2NdXi2( 3, 9 ) = - ( c * ( 2.0 * zeta - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
364 ad2NdXi2( 4, 9 ) = - ( ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta - 1.0 ) ) * 0.25;
365 ad2NdXi2( 5, 9 ) = - ( a * ( 2.0 * xi + 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
366
367 ad2NdXi2( 0, 10 ) = - ( a * ( eta + 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
368 ad2NdXi2( 1, 10 ) = - ( zeta * ( xi2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
369 ad2NdXi2( 2, 10 ) = - ( eta * ( xi2 - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
370 ad2NdXi2( 3, 10 ) = - ( ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 ) ) * 0.25;
371 ad2NdXi2( 4, 10 ) = - ( c * ( 2.0 * zeta - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
372 ad2NdXi2( 5, 10 ) = - ( b * ( 2.0 * eta + 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
373
374 ad2NdXi2( 0, 11 ) = - ( zeta * ( eta2 - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
375 ad2NdXi2( 1, 11 ) = - ( b * ( xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
376 ad2NdXi2( 2, 11 ) = - ( xi * ( eta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
377 ad2NdXi2( 3, 11 ) = - ( c * ( 2.0 * zeta - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
378 ad2NdXi2( 4, 11 ) = - ( ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta - 1.0 ) ) * 0.25;
379 ad2NdXi2( 5, 11 ) = - ( a * ( 2.0 * xi - 1.0 ) * ( zeta - 1.0 ) ) * 0.5;
380
381 ad2NdXi2( 0, 12 ) = - ( eta * ( zeta2 - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
382 ad2NdXi2( 1, 12 ) = - ( xi * ( zeta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
383 ad2NdXi2( 2, 12 ) = - ( c * ( eta - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
384 ad2NdXi2( 3, 12 ) = - ( b * ( 2.0 * eta - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
385 ad2NdXi2( 4, 12 ) = - ( a * ( 2.0 * xi - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
386 ad2NdXi2( 5, 12 ) = - ( ( 2.0 * eta - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 ) ) * 0.25;
387
388 ad2NdXi2( 0, 13 ) = - ( eta * ( zeta2 - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
389 ad2NdXi2( 1, 13 ) = - ( xi * ( zeta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
390 ad2NdXi2( 2, 13 ) = - ( c * ( eta - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
391 ad2NdXi2( 3, 13 ) = - ( b * ( 2.0 * eta - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
392 ad2NdXi2( 4, 13 ) = - ( a * ( 2.0 * xi + 1.0 ) * ( eta - 1.0 ) ) * 0.5;
393 ad2NdXi2( 5, 13 ) = - ( ( 2.0 * eta - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 ) ) * 0.25;
394
395 ad2NdXi2( 0, 14 ) = - ( eta * ( zeta2 - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
396 ad2NdXi2( 1, 14 ) = - ( xi * ( zeta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
397 ad2NdXi2( 2, 14 ) = - ( c * ( eta + 1.0 ) * ( xi + 1.0 ) ) * 0.5;
398 ad2NdXi2( 3, 14 ) = - ( b * ( 2.0 * eta + 1.0 ) * ( xi + 1.0 ) ) * 0.5;
399 ad2NdXi2( 4, 14 ) = - ( a * ( 2.0 * xi + 1.0 ) * ( eta + 1.0 ) ) * 0.5;
400 ad2NdXi2( 5, 14 ) = - ( ( 2.0 * eta + 1.0 ) * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 ) ) * 0.25;
401
402 ad2NdXi2( 0, 15 ) = - ( eta * ( zeta2 - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
403 ad2NdXi2( 1, 15 ) = - ( xi * ( zeta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
404 ad2NdXi2( 2, 15 ) = - ( c * ( eta + 1.0 ) * ( xi - 1.0 ) ) * 0.5;
405 ad2NdXi2( 3, 15 ) = - ( b * ( 2.0 * eta + 1.0 ) * ( xi - 1.0 ) ) * 0.5;
406 ad2NdXi2( 4, 15 ) = - ( a * ( 2.0 * xi - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
407 ad2NdXi2( 5, 15 ) = - ( ( 2.0 * eta + 1.0 ) * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 ) ) * 0.25;
408
409 ad2NdXi2( 0, 16 ) = - ( a * ( eta - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
410 ad2NdXi2( 1, 16 ) = - ( zeta * ( xi2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
411 ad2NdXi2( 2, 16 ) = - ( eta * ( xi2 - 1.0 ) * ( eta - 1.0 ) ) * 0.5;
412 ad2NdXi2( 3, 16 ) = - ( ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) ) * 0.25;
413 ad2NdXi2( 4, 16 ) = - ( c * ( 2.0 * zeta + 1.0 ) * ( eta - 1.0 ) ) * 0.5;
414 ad2NdXi2( 5, 16 ) = - ( b * ( 2.0 * eta - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
415
416 ad2NdXi2( 0, 17 ) = - ( zeta * ( eta2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
417 ad2NdXi2( 1, 17 ) = - ( b * ( xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
418 ad2NdXi2( 2, 17 ) = - ( xi * ( eta2 - 1.0 ) * ( xi + 1.0 ) ) * 0.5;
419 ad2NdXi2( 3, 17 ) = - ( c * ( 2.0 * zeta + 1.0 ) * ( xi + 1.0 ) ) * 0.5;
420 ad2NdXi2( 4, 17 ) = - ( ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 ) * ( 2.0 * zeta + 1.0 ) ) * 0.25;
421 ad2NdXi2( 5, 17 ) = - ( a * ( 2.0 * xi + 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
422
423 ad2NdXi2( 0, 18 ) = - ( a * ( eta + 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
424 ad2NdXi2( 1, 18 ) = - ( zeta * ( xi2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
425 ad2NdXi2( 2, 18 ) = - ( eta * ( xi2 - 1.0 ) * ( eta + 1.0 ) ) * 0.5;
426 ad2NdXi2( 3, 18 ) = - ( ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 ) ) * 0.25;
427 ad2NdXi2( 4, 18 ) = - ( c * ( 2.0 * zeta + 1.0 ) * ( eta + 1.0 ) ) * 0.5;
428 ad2NdXi2( 5, 18 ) = - ( b * ( 2.0 * eta + 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
429
430 ad2NdXi2( 0, 19 ) = - ( zeta * ( eta2 - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
431 ad2NdXi2( 1, 19 ) = - ( b * ( xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
432 ad2NdXi2( 2, 19 ) = - ( xi * ( eta2 - 1.0 ) * ( xi - 1.0 ) ) * 0.5;
433 ad2NdXi2( 3, 19 ) = - ( c * ( 2.0 * zeta + 1.0 ) * ( xi - 1.0 ) ) * 0.5;
434 ad2NdXi2( 4, 19 ) = - ( ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 ) * ( 2.0 * zeta + 1.0 ) ) * 0.25;
435 ad2NdXi2( 5, 19 ) = - ( a * ( 2.0 * xi - 1.0 ) * ( zeta + 1.0 ) ) * 0.5;
436
437 ad2NdXi2( 0, 20 ) = - 2.0 * ( eta2 - 1.0 ) * ( zeta2 - 1.0 );
438 ad2NdXi2( 1, 20 ) = - 2.0 * ( xi2 - 1.0 ) * ( zeta2 - 1.0 );
439 ad2NdXi2( 2, 20 ) = - 2.0 * ( eta2 - 1.0 ) * ( xi2 - 1.0 );
440 ad2NdXi2( 3, 20 ) = - 4.0 * a * ( xi2 - 1.0 );
441 ad2NdXi2( 4, 20 ) = - 4.0 * b * ( eta2 - 1.0 );
442 ad2NdXi2( 5, 20 ) = - 4.0 * c * ( zeta2 - 1.0 );
443
444 ad2NdXi2( 0, 21 ) = zeta * ( eta2 - 1.0 ) * ( zeta - 1.0 );
445 ad2NdXi2( 1, 21 ) = zeta * ( xi2 - 1.0 ) * ( zeta - 1.0 );
446 ad2NdXi2( 2, 21 ) = ( eta2 - 1.0 ) * ( xi2 - 1.0 );
447 ad2NdXi2( 3, 21 ) = eta * ( xi2 - 1.0 ) * ( 2.0 * zeta - 1.0 );
448 ad2NdXi2( 4, 21 ) = xi * ( eta2 - 1.0 ) * ( 2.0 * zeta - 1.0 );
449 ad2NdXi2( 5, 21 ) = d * ( zeta - 1.0 );
450
451 ad2NdXi2( 0, 22 ) = zeta * ( eta2 - 1.0 ) * ( zeta + 1.0 );
452 ad2NdXi2( 1, 22 ) = zeta * ( xi2 - 1.0 ) * ( zeta + 1.0 );
453 ad2NdXi2( 2, 22 ) = ( eta2 - 1.0 ) * ( xi2 - 1.0 );
454 ad2NdXi2( 3, 22 ) = eta * ( xi2 - 1.0 ) * ( 2.0 * zeta + 1.0 );
455 ad2NdXi2( 4, 22 ) = xi * ( eta2 - 1.0 ) * ( 2.0 * zeta + 1.0 );
456 ad2NdXi2( 5, 22 ) = d * ( zeta + 1.0 );
457
458 ad2NdXi2( 0, 23 ) = ( eta2 - 1.0 ) * ( zeta2 - 1.0 );
459 ad2NdXi2( 1, 23 ) = xi * ( zeta2 - 1.0 ) * ( xi - 1.0 );
460 ad2NdXi2( 2, 23 ) = xi * ( eta2 - 1.0 ) * ( xi - 1.0 );
461 ad2NdXi2( 3, 23 ) = d * ( xi - 1.0 );
462 ad2NdXi2( 4, 23 ) = zeta * ( eta2 - 1.0 ) * ( 2.0 * xi - 1.0 );
463 ad2NdXi2( 5, 23 ) = eta * ( 2.0 * xi - 1.0 ) * ( zeta2 - 1.0 );
464
465 ad2NdXi2( 0, 24 ) = ( eta2 - 1.0 ) * ( zeta2 - 1.0 );
466 ad2NdXi2( 1, 24 ) = xi * ( zeta2 - 1.0 ) * ( xi + 1.0 );
467 ad2NdXi2( 2, 24 ) = xi * ( eta2 - 1.0 ) * ( xi + 1.0 );
468 ad2NdXi2( 3, 24 ) = d * ( xi + 1.0 );
469 ad2NdXi2( 4, 24 ) = zeta * ( eta2 - 1.0 ) * ( 2.0 * xi + 1.0 );
470 ad2NdXi2( 5, 24 ) = eta * ( 2.0 * xi + 1.0 ) * ( zeta2 - 1.0 );
471
472 ad2NdXi2( 0, 25 ) = eta * ( zeta2 - 1.0 ) * ( eta - 1.0 );
473 ad2NdXi2( 1, 25 ) = ( xi2 - 1.0 ) * ( zeta2 - 1.0 );
474 ad2NdXi2( 2, 25 ) = eta * ( xi2 - 1.0 ) * ( eta - 1.0 );
475 ad2NdXi2( 3, 25 ) = zeta * ( 2.0 * eta - 1.0 ) * ( xi2 - 1.0 );
476 ad2NdXi2( 4, 25 ) = d * ( eta - 1.0 );
477 ad2NdXi2( 5, 25 ) = xi * ( 2.0 * eta - 1.0 ) * ( zeta2 - 1.0 );
478
479 ad2NdXi2( 0, 26 ) = eta * ( zeta2 - 1.0 ) * ( eta + 1.0 );
480 ad2NdXi2( 1, 26 ) = ( xi2 - 1.0 ) * ( zeta2 - 1.0 );
481 ad2NdXi2( 2, 26 ) = eta * ( xi2 - 1.0 ) * ( eta + 1.0 );
482 ad2NdXi2( 3, 26 ) = zeta * ( 2.0 * eta + 1.0 ) * ( xi2 - 1.0 );
483 ad2NdXi2( 4, 26 ) = d * ( eta + 1.0 );
484 ad2NdXi2( 5, 26 ) = xi * ( 2.0 * eta + 1.0 ) * ( zeta2 - 1.0 );
485
486 }
487
488//------------------------------------------------------------------------------
489 }
490}
491
492#endif //BELFEM_CL_IF_HEX27_HPP
void set_size(const size_t aNumRows, const size_t aNumCols)
Definition cl_AR_Matrix.hpp:186
shape function templated class G : Geometry T : Type D : Dimension B : Number of Basis
Definition cl_IF_InterpolationFunctionTemplate.hpp:25
void param_coords(Matrix< real > &aXiHat) const override
returns a matrix containing the parameter coordinates of the nodes < number of dimensions x number of...
Definition cl_IF_InterpolationFunctionTemplate.hpp:49
InterpolationOrder interpolation_order() const override
returns the interpolation order
Definition cl_IF_InterpolationFunctionTemplate.hpp:145
void d2NdXi2(const Vector< real > &aXi, Matrix< real > &ad2NdXi2) const override
calculates the second derivative of the shape function in parameter space
Definition cl_IF_InterpolationFunctionTemplate.hpp:110
void dNdXi(const Vector< real > &aXi, Matrix< real > &adNdXi) const override
calculates the first derivative of the shape function in parameter space
Definition cl_IF_InterpolationFunctionTemplate.hpp:89
void N(const Vector< real > &aXi, Matrix< real > &aN) const override
evaluates the shape function at a given point
Definition cl_IF_InterpolationFunctionTemplate.hpp:68
Definition cl_IFB_LINE3.hpp:21
USER GUIDES:
Definition cl_Capacitor.cpp:16
@ LAGRANGE
Definition Mesh_Enums.hpp:100
ElementType element_type(const std::string &aStr)
Definition Mesh_Enums.hpp:370
ElementType
Element types.
Definition Mesh_Enums.hpp:27
@ HEX27
Definition Mesh_Enums.hpp:40
InterpolationOrder
Definition Mesh_Enums.hpp:85
@ QUADRATIC
Definition Mesh_Enums.hpp:88
double real
Definition typedefs.hpp:36
@ HEX
Definition Mesh_Enums.hpp:76