114 const ArrayScalar & inputPoints,
115 const EOperator operatorType)
const {
118#ifdef HAVE_INTREPID_DEBUG
119 Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues,
122 this -> getBaseCellTopology(),
123 this -> getCardinality() );
127 int dim0 = inputPoints.dimension(0);
134 switch (operatorType) {
137 for (
int i0 = 0; i0 < dim0; i0++) {
138 x = inputPoints(i0, 0);
139 y = inputPoints(i0, 1);
140 z = inputPoints(i0, 2);
143 outputValues( 0, i0) = 0.125*(1.0 - x)*(1.0 - y)*(1.0 - z)*(-x - y - z - 2.0);
144 outputValues( 1, i0) = 0.125*(1.0 + x)*(1.0 - y)*(1.0 - z)*( x - y - z - 2.0);
145 outputValues( 2, i0) = 0.125*(1.0 + x)*(1.0 + y)*(1.0 - z)*( x + y - z - 2.0);
146 outputValues( 3, i0) = 0.125*(1.0 - x)*(1.0 + y)*(1.0 - z)*(-x + y - z - 2.0);
147 outputValues( 4, i0) = 0.125*(1.0 - x)*(1.0 - y)*(1.0 + z)*(-x - y + z - 2.0);
148 outputValues( 5, i0) = 0.125*(1.0 + x)*(1.0 - y)*(1.0 + z)*( x - y + z - 2.0);
149 outputValues( 6, i0) = 0.125*(1.0 + x)*(1.0 + y)*(1.0 + z)*( x + y + z - 2.0);
150 outputValues( 7, i0) = 0.125*(1.0 - x)*(1.0 + y)*(1.0 + z)*(-x + y + z - 2.0);
152 outputValues( 8, i0) = 0.25*(1.0 - x*x)*(1.0 - y)*(1.0 - z);
153 outputValues( 9, i0) = 0.25*(1.0 + x)*(1.0 - y*y)*(1.0 - z);
154 outputValues(10, i0) = 0.25*(1.0 - x*x)*(1.0 + y)*(1.0 - z);
155 outputValues(11, i0) = 0.25*(1.0 - x)*(1.0 - y*y)*(1.0 - z);
157 outputValues(12, i0) = 0.25*(1.0 - x)*(1.0 - y)*(1.0 - z*z);
158 outputValues(13, i0) = 0.25*(1.0 + x)*(1.0 - y)*(1.0 - z*z);
159 outputValues(14, i0) = 0.25*(1.0 + x)*(1.0 + y)*(1.0 - z*z);
160 outputValues(15, i0) = 0.25*(1.0 - x)*(1.0 + y)*(1.0 - z*z);
162 outputValues(16, i0) = 0.25*(1.0 - x*x)*(1.0 - y)*(1.0 + z);
163 outputValues(17, i0) = 0.25*(1.0 + x)*(1.0 - y*y)*(1.0 + z);
164 outputValues(18, i0) = 0.25*(1.0 - x*x)*(1.0 + y)*(1.0 + z);
165 outputValues(19, i0) = 0.25*(1.0 - x)*(1.0 - y*y)*(1.0 + z);
171 for (
int i0 = 0; i0 < dim0; i0++) {
172 x = inputPoints(i0,0);
173 y = inputPoints(i0,1);
174 z = inputPoints(i0,2);
177 outputValues(0, i0, 0) = -0.125*(1.0-y)*(1.0-z)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z);
178 outputValues(0, i0, 1) = -0.125*(1.0-x)*(1.0-z)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z);
179 outputValues(0, i0, 2) = -0.125*(1.0-x)*(1.0-y)*(-x-y-z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0-z);
181 outputValues(1, i0, 0) = 0.125*(1.0-y)*(1.0-z)*( x-y-z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0-z);
182 outputValues(1, i0, 1) = -0.125*(1.0+x)*(1.0-z)*( x-y-z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0-z);
183 outputValues(1, i0, 2) = -0.125*(1.0+x)*(1.0-y)*( x-y-z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0-z);
185 outputValues(2, i0, 0) = 0.125*(1.0+y)*(1.0-z)*( x+y-z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0-z);
186 outputValues(2, i0, 1) = 0.125*(1.0+x)*(1.0-z)*( x+y-z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0-z);
187 outputValues(2, i0, 2) = -0.125*(1.0+x)*(1.0+y)*( x+y-z-2.0) - 0.125*(1.0+x)*(1.0+y)*(1.0-z);
189 outputValues(3, i0, 0) = -0.125*(1.0+y)*(1.0-z)*(-x+y-z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0-z);
190 outputValues(3, i0, 1) = 0.125*(1.0-x)*(1.0-z)*(-x+y-z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0-z);
191 outputValues(3, i0, 2) = -0.125*(1.0-x)*(1.0+y)*(-x+y-z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0-z);
193 outputValues(4, i0, 0) = -0.125*(1.0-y)*(1.0+z)*(-x-y+z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0+z);
194 outputValues(4, i0, 1) = -0.125*(1.0-x)*(1.0+z)*(-x-y+z-2.0) - 0.125*(1.0-x)*(1.0-y)*(1.0+z);
195 outputValues(4, i0, 2) = 0.125*(1.0-x)*(1.0-y)*(-x-y+z-2.0) + 0.125*(1.0-x)*(1.0-y)*(1.0+z);
197 outputValues(5, i0, 0) = 0.125*(1.0-y)*(1.0+z)*( x-y+z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0+z);
198 outputValues(5, i0, 1) = -0.125*(1.0+x)*(1.0+z)*( x-y+z-2.0) - 0.125*(1.0+x)*(1.0-y)*(1.0+z);
199 outputValues(5, i0, 2) = 0.125*(1.0+x)*(1.0-y)*( x-y+z-2.0) + 0.125*(1.0+x)*(1.0-y)*(1.0+z);
201 outputValues(6, i0, 0) = 0.125*(1.0+y)*(1.0+z)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z);
202 outputValues(6, i0, 1) = 0.125*(1.0+x)*(1.0+z)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z);
203 outputValues(6, i0, 2) = 0.125*(1.0+x)*(1.0+y)*( x+y+z-2.0) + 0.125*(1.0+x)*(1.0+y)*(1.0+z);
205 outputValues(7, i0, 0) = -0.125*(1.0+y)*(1.0+z)*(-x+y+z-2.0) - 0.125*(1.0-x)*(1.0+y)*(1.0+z);
206 outputValues(7, i0, 1) = 0.125*(1.0-x)*(1.0+z)*(-x+y+z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0+z);
207 outputValues(7, i0, 2) = 0.125*(1.0-x)*(1.0+y)*(-x+y+z-2.0) + 0.125*(1.0-x)*(1.0+y)*(1.0+z);
209 outputValues(8, i0, 0) = -0.5*x*(1.0-y)*(1.0-z);
210 outputValues(8, i0, 1) = -0.25*(1.0-x*x)*(1.0-z);
211 outputValues(8, i0, 2) = -0.25*(1.0-x*x)*(1.0-y);
213 outputValues(9, i0, 0) = 0.25*(1.0-y*y)*(1.0-z);
214 outputValues(9, i0, 1) = -0.5*y*(1.0+x)*(1.0-z);
215 outputValues(9, i0, 2) = -0.25*(1.0+x)*(1.0-y*y);
217 outputValues(10, i0, 0) = -0.5*x*(1.0+y)*(1.0-z);
218 outputValues(10, i0, 1) = 0.25*(1.0-x*x)*(1.0-z);
219 outputValues(10, i0, 2) = -0.25*(1.0-x*x)*(1.0+y);
221 outputValues(11, i0, 0) = -0.25*(1.0-y*y)*(1.0-z);
222 outputValues(11, i0, 1) = -0.5*y*(1.0-x)*(1.0-z);
223 outputValues(11, i0, 2) = -0.25*(1.0-x)*(1.0-y*y);
225 outputValues(12, i0, 0) = -0.25*(1.0-y)*(1.0-z*z);
226 outputValues(12, i0, 1) = -0.25*(1.0-x)*(1.0-z*z);
227 outputValues(12, i0, 2) = -0.5*z*(1.0-x)*(1.0-y);
229 outputValues(13, i0, 0) = 0.25*(1.0-y)*(1.0-z*z);
230 outputValues(13, i0, 1) = -0.25*(1.0+x)*(1.0-z*z);
231 outputValues(13, i0, 2) = -0.5*z*(1.0+x)*(1.0-y);
233 outputValues(14, i0, 0) = 0.25*(1.0+y)*(1.0-z*z);
234 outputValues(14, i0, 1) = 0.25*(1.0+x)*(1.0-z*z);
235 outputValues(14, i0, 2) = -0.5*z*(1.0+x)*(1.0+y);
237 outputValues(15, i0, 0) = -0.25*(1.0+y)*(1.0-z*z);
238 outputValues(15, i0, 1) = 0.25*(1.0-x)*(1.0-z*z);
239 outputValues(15, i0, 2) = -0.5*z*(1.0-x)*(1.0+y);
241 outputValues(16, i0, 0) = -0.5*x*(1.0-y)*(1.0+z);
242 outputValues(16, i0, 1) = -0.25*(1.0-x*x)*(1.0+z);
243 outputValues(16, i0, 2) = 0.25*(1.0-x*x)*(1.0-y);
245 outputValues(17, i0, 0) = 0.25*(1.0-y*y)*(1.0+z);
246 outputValues(17, i0, 1) = -0.5*y*(1.0+x)*(1.0+z);
247 outputValues(17, i0, 2) = 0.25*(1.0+x)*(1.0-y*y);
249 outputValues(18, i0, 0) = -0.5*x*(1.0+y)*(1.0+z);
250 outputValues(18, i0, 1) = 0.25*(1.0-x*x)*(1.0+z);
251 outputValues(18, i0, 2) = 0.25*(1.0-x*x)*(1.0+y);
253 outputValues(19, i0, 0) = -0.25*(1.0-y*y)*(1.0+z);
254 outputValues(19, i0, 1) = -0.5*y*(1.0-x)*(1.0+z);
255 outputValues(19, i0, 2) = 0.25*(1.0-x)*(1.0-y*y);
261 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
262 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
266 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
267 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
271 for (
int i0 = 0; i0 < dim0; i0++) {
272 x = inputPoints(i0,0);
273 y = inputPoints(i0,1);
274 z = inputPoints(i0,2);
277 outputValues(0, i0, 0) = 0.25*(1.0 - y)*(1.0 - z);
278 outputValues(0, i0, 1) = 0.125*(1.0 - z)*(-2.0*x - 2.0*y - z);
279 outputValues(0, i0, 2) = 0.125*(1.0 - y)*(-2.0*x - y - 2.0*z);
280 outputValues(0, i0, 3) = 0.25*(1.0 - x)*(1.0 - z);
281 outputValues(0, i0, 4) = 0.125*(1.0 - x)*(-x - 2.0*y - 2.0*z);
282 outputValues(0, i0, 5) = 0.25*(1.0 - x)*(1.0 - y);
284 outputValues(1, i0, 0) = 0.25*(1.0 - y)*(1.0 - z);
285 outputValues(1, i0, 1) = -0.125*(1.0 - z)*(2.0*x - 2.0*y - z);
286 outputValues(1, i0, 2) = -0.125*(1.0 - y)*(2.0*x - y - 2.0*z);
287 outputValues(1, i0, 3) = 0.25*(1.0 + x)*(1.0 - z);
288 outputValues(1, i0, 4) = 0.125*(1.0 + x)*(x - 2.0*y - 2.0*z);
289 outputValues(1, i0, 5) = 0.25*(1.0 + x)*(1.0 - y);
291 outputValues(2, i0, 0) = 0.25*(1.0 + y)*(1.0 - z);
292 outputValues(2, i0, 1) = 0.125*(1.0 - z)*(2.0*x + 2.0*y - z);
293 outputValues(2, i0, 2) = -0.125*(1.0 + y)*(2.0*x + y - 2.0*z);
294 outputValues(2, i0, 3) = 0.25*(1.0 + x)*(1.0 - z);
295 outputValues(2, i0, 4) = -0.125*(1.0 + x)*(x + 2.0*y - 2.0*z);
296 outputValues(2, i0, 5) = 0.25*(1.0 + x)*(1.0 + y);
298 outputValues(3, i0, 0) = 0.25*(1.0 + y)*(1.0 - z);
299 outputValues(3, i0, 1) = -0.125*(1.0 - z)*(-2.0*x + 2.0*y - z);
300 outputValues(3, i0, 2) = 0.125*(1.0 + y)*(-2.0*x + y - 2.0*z);
301 outputValues(3, i0, 3) = 0.25*(1.0 - x)*(1.0 - z);
302 outputValues(3, i0, 4) = -0.125*(1.0 - x)*(-x + 2.0*y - 2.0*z);
303 outputValues(3, i0, 5) = 0.25*(1.0 - x)*(1.0 + y);
305 outputValues(4, i0, 0) = 0.25*(1.0 - y)*(1.0 + z);
306 outputValues(4, i0, 1) = 0.125*(1.0 + z)*(-2.0*x - 2.0*y + z);
307 outputValues(4, i0, 2) = -0.125*(1.0 - y)*(-2.0*x - y + 2.0*z);
308 outputValues(4, i0, 3) = 0.25*(1.0 - x)*(1.0 + z);
309 outputValues(4, i0, 4) = -0.125*(1.0 - x)*(-x - 2.0*y + 2.0*z);
310 outputValues(4, i0, 5) = 0.25*(1.0 - x)*(1.0 - y);
312 outputValues(5, i0, 0) = 0.25*(1.0 - y)*(1.0 + z);
313 outputValues(5, i0, 1) = -0.125*(1.0 + z)*(2.0*x - 2.0*y + z);
314 outputValues(5, i0, 2) = 0.125*(1.0 - y)*(2.0*x - y + 2.0*z);
315 outputValues(5, i0, 3) = 0.25*(1.0 + x)*(1.0 + z);
316 outputValues(5, i0, 4) = -0.125*(1.0 + x)*(x - 2.0*y + 2.0*z);
317 outputValues(5, i0, 5) = 0.25*(1.0 + x)*(1.0 - y);
319 outputValues(6, i0, 0) = 0.25*(1.0 + y)*(1.0 + z);
320 outputValues(6, i0, 1) = 0.125*(1.0 + z)*(2.0*x + 2.0*y + z);
321 outputValues(6, i0, 2) = 0.125*(1.0 + y)*(2.0*x + y + 2.0*z);
322 outputValues(6, i0, 3) = 0.25*(1.0 + x)*(1.0 + z);
323 outputValues(6, i0, 4) = 0.125*(1.0 + x)*(x + 2.0*y + 2.0*z);
324 outputValues(6, i0, 5) = 0.25*(1.0 + x)*(1.0 + y);
326 outputValues(7, i0, 0) = 0.25*(1.0 + y)*(1.0 + z);
327 outputValues(7, i0, 1) = -0.125*(1.0 + z)*(-2.0*x + 2.0*y + z);
328 outputValues(7, i0, 2) = -0.125*(1.0 + y)*(-2.0*x + y + 2.0*z);
329 outputValues(7, i0, 3) = 0.25*(1.0 - x)*(1.0 + z);
330 outputValues(7, i0, 4) = 0.125*(1.0 - x)*(-x + 2.0*y + 2.0*z);
331 outputValues(7, i0, 5) = 0.25*(1.0 - x)*(1.0 + y);
333 outputValues(8, i0, 0) = -0.5*(1.0 - y)*(1.0 - z);
334 outputValues(8, i0, 1) = 0.5*x*(1.0 - z);
335 outputValues(8, i0, 2) = 0.5*x*(1.0 - y);
336 outputValues(8, i0, 3) = 0.0;
337 outputValues(8, i0, 4) = 0.25*(1.0 - x*x);
338 outputValues(8, i0, 5) = 0.0;
340 outputValues(9, i0, 0) = 0.0;
341 outputValues(9, i0, 1) = -0.5*y*(1.0 - z);
342 outputValues(9, i0, 2) = -0.25*(1.0 - y*y);
343 outputValues(9, i0, 3) = -0.5*(1.0 + x)*(1.0 - z);
344 outputValues(9, i0, 4) = 0.5*y*(1.0 + x);
345 outputValues(9, i0, 5) = 0.0;
347 outputValues(10, i0, 0) = -0.5*(1.0 + y)*(1.0 - z);
348 outputValues(10, i0, 1) = -0.5*x*(1.0 - z);
349 outputValues(10, i0, 2) = 0.5*x*(1.0 + y);
350 outputValues(10, i0, 3) = 0.0;
351 outputValues(10, i0, 4) = -0.25*(1.0 - x*x);
352 outputValues(10, i0, 5) = 0.0;
354 outputValues(11, i0, 0) = 0.0;
355 outputValues(11, i0, 1) = 0.5*y*(1.0 - z);
356 outputValues(11, i0, 2) = 0.25*(1.0 - y*y);
357 outputValues(11, i0, 3) = -0.5*(1.0 - x)*(1.0 - z);
358 outputValues(11, i0, 4) = 0.5*y*(1.0 - x);
359 outputValues(11, i0, 5) = 0.0;
361 outputValues(12, i0, 0) = 0.0;
362 outputValues(12, i0, 1) = 0.25*(1.0 - z*z);
363 outputValues(12, i0, 2) = 0.5*z*(1.0 - y);
364 outputValues(12, i0, 3) = 0.0;
365 outputValues(12, i0, 4) = 0.5*z*(1.0 - x);
366 outputValues(12, i0, 5) = -0.5*(1.0 - x)*(1.0 - y);
368 outputValues(13, i0, 0) = 0.0;
369 outputValues(13, i0, 1) = -0.25*(1.0 - z*z);
370 outputValues(13, i0, 2) = -0.5*z*(1.0 - y);
371 outputValues(13, i0, 3) = 0.0;
372 outputValues(13, i0, 4) = 0.5*z*(1.0 + x);
373 outputValues(13, i0, 5) = -0.5*(1.0 + x)*(1.0 - y);
375 outputValues(14, i0, 0) = 0.0;
376 outputValues(14, i0, 1) = 0.25*(1.0 - z*z);
377 outputValues(14, i0, 2) = -0.5*z*(1.0 + y);
378 outputValues(14, i0, 3) = 0.0;
379 outputValues(14, i0, 4) = -0.5*z*(1.0 + x);
380 outputValues(14, i0, 5) = -0.5*(1.0 + x)*(1.0 + y);
382 outputValues(15, i0, 0) = 0.0;
383 outputValues(15, i0, 1) = -0.25*(1.0 - z*z);
384 outputValues(15, i0, 2) = 0.5*z*(1.0 + y);
385 outputValues(15, i0, 3) = 0.0;
386 outputValues(15, i0, 4) = -0.5*z*(1.0 - x);
387 outputValues(14, i0, 5) = -0.5*(1.0 - x)*(1.0 + y);
389 outputValues(16, i0, 0) = -0.5*(1.0 - y)*(1.0 + z);
390 outputValues(16, i0, 1) = 0.5*x*(1.0 + z);
391 outputValues(16, i0, 2) = -0.5*x*(1.0 - y);
392 outputValues(16, i0, 3) = 0.0;
393 outputValues(16, i0, 4) = -0.25*(1.0 - x*x);
394 outputValues(16, i0, 5) = 0.0;
396 outputValues(17, i0, 0) = 0.0;
397 outputValues(17, i0, 1) = -0.5*y*(1.0 + z);
398 outputValues(17, i0, 2) = 0.25*(1.0 - y*y);
399 outputValues(17, i0, 3) = -0.5*(1.0 + x)*(1.0 + z);
400 outputValues(17, i0, 4) = -0.5*y*(1.0 + x);
401 outputValues(17, i0, 5) = 0.0;
403 outputValues(18, i0, 0) = -0.5*(1.0 + y)*(1.0 + z);
404 outputValues(18, i0, 1) = -0.5*x*(1.0 + z);
405 outputValues(18, i0, 2) = -0.5*x*(1.0 + y);
406 outputValues(18, i0, 3) = 0.0;
407 outputValues(18, i0, 4) = 0.25*(1.0 - x*x);
408 outputValues(18, i0, 5) = 0.0;
410 outputValues(19, i0, 0) = 0.0;
411 outputValues(19, i0, 1) = 0.5*y*(1.0 + z);
412 outputValues(19, i0, 2) = -0.25*(1.0 - y*y);
413 outputValues(19, i0, 3) = -0.5*(1.0 - x)*(1.0 + z);
414 outputValues(19, i0, 4) = -0.5*y*(1.0 - x);
415 outputValues(19, i0, 5) = 0.0;
421 for (
int i0 = 0; i0 < dim0; i0++) {
422 x = inputPoints(i0,0);
423 y = inputPoints(i0,1);
424 z = inputPoints(i0,2);
426 outputValues(0,i0, 0) = 0.0;
427 outputValues(0,i0, 1) = -0.25*(1.0 - z);
428 outputValues(0,i0, 2) = -0.25*(1.0 - y);
429 outputValues(0,i0, 3) = -0.25*(1.0 - z);
430 outputValues(0,i0, 4) = -0.125*(-2.0*x - 2.0*y - 2.0*z + 1.0);
431 outputValues(0,i0, 5) = -0.25*(1.0 - y);
432 outputValues(0,i0, 6) = 0.0;
433 outputValues(0,i0, 7) = -0.25*(1.0 - x);
434 outputValues(0,i0, 8) = -0.25*(1.0 - x);
435 outputValues(0,i0, 9) = 0.0;
437 outputValues(1,i0, 0) = 0.0;
438 outputValues(1,i0, 1) = -0.25*(1.0 - z);
439 outputValues(1,i0, 2) = -0.25*(1.0 - y);
440 outputValues(1,i0, 3) = 0.25*(1.0 - z);
441 outputValues(1,i0, 4) = 0.125*(2.0*x - 2.0*y - 2.0*z + 1.0);
442 outputValues(1,i0, 5) = 0.25*(1.0 - y);
443 outputValues(1,i0, 6) = 0.0;
444 outputValues(1,i0, 7) = -0.25*(1.0 + x);
445 outputValues(1,i0, 8) = -0.25*(1.0 + x);
446 outputValues(1,i0, 9) = 0.0;
448 outputValues(2,i0, 0) = 0.0;
449 outputValues(2,i0, 1) = 0.25*(1.0 - z);
450 outputValues(2,i0, 2) = -0.25*(1.0 + y);
451 outputValues(2,i0, 3) = 0.25*(1.0 - z);
452 outputValues(2,i0, 4) = -0.125*(2.0*x + 2.0*y - 2.0*z + 1.0);
453 outputValues(2,i0, 5) = 0.25*(1.0 + y);
454 outputValues(2,i0, 6) = 0.0;
455 outputValues(2,i0, 7) = -0.25*(1.0 + x);
456 outputValues(2,i0, 8) = 0.25*(1.0 + x);
457 outputValues(2,i0, 9) = 0.0;
459 outputValues(3,i0, 0) = 0.0;
460 outputValues(3,i0, 1) = 0.25*(1.0 - z);
461 outputValues(3,i0, 2) = -0.25*(1.0 + y);
462 outputValues(3,i0, 3) = -0.25*(1.0 - z);
463 outputValues(3,i0, 4) = 0.125*(-2.0*x + 2.0*y - 2.0*z + 1.0);
464 outputValues(3,i0, 5) = -0.25*(1.0 + y);
465 outputValues(3,i0, 6) = 0.0;
466 outputValues(3,i0, 7) = -0.25*(1.0 - x);
467 outputValues(3,i0, 8) = 0.25*(1.0 - x);
468 outputValues(3,i0, 9) = 0.0;
470 outputValues(4,i0, 0) = 0.0;
471 outputValues(4,i0, 1) = -0.25*(1.0 + z);
472 outputValues(4,i0, 2) = 0.25*(1.0 - y);
473 outputValues(4,i0, 3) = -0.25*(1.0 + z);
474 outputValues(4,i0, 4) = 0.125*(-2.0*x - 2.0*y + 2.0*z + 1.0);
475 outputValues(4,i0, 5) = -0.25*(1.0 - y);
476 outputValues(4,i0, 6) = 0.0;
477 outputValues(4,i0, 7) = 0.25*(1.0 - x);
478 outputValues(4,i0, 8) = -0.25*(1.0 - x);
479 outputValues(4,i0, 9) = 0.0;
481 outputValues(5,i0, 0) = 0.0;
482 outputValues(5,i0, 1) = -0.25*(1.0 + z);
483 outputValues(5,i0, 2) = 0.25*(1.0 - y);
484 outputValues(5,i0, 3) = 0.25*(1.0 + z);
485 outputValues(5,i0, 4) = -0.125*(2.0*x - 2.0*y + 2.0*z + 1.0);
486 outputValues(5,i0, 5) = 0.25*(1.0 - y);
487 outputValues(5,i0, 6) = 0.0;
488 outputValues(5,i0, 7) = 0.25*(1.0 + x);
489 outputValues(5,i0, 8) = -0.25*(1.0 + x);
490 outputValues(5,i0, 9) = 0.0;
492 outputValues(6,i0, 0) = 0.0;
493 outputValues(6,i0, 1) = 0.25*(1.0 + z);
494 outputValues(6,i0, 2) = 0.25*(1.0 + y);
495 outputValues(6,i0, 3) = 0.25*(1.0 + z);
496 outputValues(6,i0, 4) = 0.125*(2.0*x + 2.0*y + 2.0*z + 1.0);
497 outputValues(6,i0, 5) = 0.25*(1.0 + y);
498 outputValues(6,i0, 6) = 0.0;
499 outputValues(6,i0, 7) = 0.25*(1.0 + x);
500 outputValues(6,i0, 8) = 0.25*(1.0 + x);
501 outputValues(6,i0, 9) = 0.0;
503 outputValues(7,i0, 0) = 0.0;
504 outputValues(7,i0, 1) = 0.25*(1.0 + z);
505 outputValues(7,i0, 2) = 0.25*(1.0 + y);
506 outputValues(7,i0, 3) = -0.25*(1.0 + z);
507 outputValues(7,i0, 4) = -0.125*(-2.0*x + 2.0*y + 2.0*z + 1.0);
508 outputValues(7,i0, 5) = -0.25*(1.0 + y);
509 outputValues(7,i0, 6) = 0.0;
510 outputValues(7,i0, 7) = 0.25*(1.0 - x);
511 outputValues(7,i0, 8) = 0.25*(1.0 - x);
512 outputValues(7,i0, 9) = 0.0;
514 outputValues(8,i0, 0) = 0.0;
515 outputValues(8,i0, 1) = 0.5*(1.0 - z);
516 outputValues(8,i0, 2) = 0.5*(1.0 - y);
517 outputValues(8,i0, 3) = 0.0;
518 outputValues(8,i0, 4) = -0.5*x;
519 outputValues(8,i0, 5) = 0.0;
520 outputValues(8,i0, 6) = 0.0;
521 outputValues(8,i0, 7) = 0.0;
522 outputValues(8,i0, 8) = 0.0;
523 outputValues(8,i0, 9) = 0.0;
525 outputValues(9,i0, 0) = 0.0;
526 outputValues(9,i0, 1) = 0.0;
527 outputValues(9,i0, 2) = 0.0;
528 outputValues(9,i0, 3) = -0.5*(1.0 - z);
529 outputValues(9,i0, 4) = 0.5*y;
530 outputValues(9,i0, 5) = 0.0;
531 outputValues(9,i0, 6) = 0.0;
532 outputValues(9,i0, 7) = 0.5*(1.0 + x);
533 outputValues(9,i0, 8) = 0.0;
534 outputValues(9,i0, 9) = 0.0;
536 outputValues(10,i0, 0) = 0.0;
537 outputValues(10,i0, 1) = -0.5*(1.0 - z);
538 outputValues(10,i0, 2) = 0.5*(1.0 + y);
539 outputValues(10,i0, 3) = 0.0;
540 outputValues(10,i0, 4) = 0.5*x;
541 outputValues(10,i0, 5) = 0.0;
542 outputValues(10,i0, 6) = 0.0;
543 outputValues(10,i0, 7) = 0.0;
544 outputValues(10,i0, 8) = 0.0;
545 outputValues(10,i0, 9) = 0.0;
547 outputValues(11,i0, 0) = 0.0;
548 outputValues(11,i0, 1) = 0.0;
549 outputValues(11,i0, 2) = 0.0;
550 outputValues(11,i0, 3) = 0.5*(1.0 - z);
551 outputValues(11,i0, 4) = -0.5*y;
552 outputValues(11,i0, 5) = 0.0;
553 outputValues(11,i0, 6) = 0.0;
554 outputValues(11,i0, 7) = 0.5*(1.0 - x);
555 outputValues(11,i0, 8) = 0.0;
556 outputValues(11,i0, 9) = 0.0;
558 outputValues(12,i0, 0) = 0.0;
559 outputValues(12,i0, 1) = 0.0;
560 outputValues(12,i0, 2) = 0.0;
561 outputValues(12,i0, 3) = 0.0;
562 outputValues(12,i0, 4) = -0.5*z;
563 outputValues(12,i0, 5) = 0.5*(1.0 - y);
564 outputValues(12,i0, 6) = 0.0;
565 outputValues(12,i0, 7) = 0.0;
566 outputValues(12,i0, 8) = 0.5*(1.0 - x);
567 outputValues(12,i0, 9) = 0.0;
569 outputValues(13,i0, 0) = 0.0;
570 outputValues(13,i0, 1) = 0.0;
571 outputValues(13,i0, 2) = 0.0;
572 outputValues(13,i0, 3) = 0.0;
573 outputValues(13,i0, 4) = 0.5*z;
574 outputValues(13,i0, 5) = -0.5*(1.0 - y);
575 outputValues(13,i0, 6) = 0.0;
576 outputValues(13,i0, 7) = 0.0;
577 outputValues(13,i0, 8) = 0.5*(1.0 + x);
578 outputValues(13,i0, 9) = 0.0;
580 outputValues(14,i0, 0) = 0.0;
581 outputValues(14,i0, 1) = 0.0;
582 outputValues(14,i0, 2) = 0.0;
583 outputValues(14,i0, 3) = 0.0;
584 outputValues(14,i0, 4) = -0.5*z;
585 outputValues(14,i0, 5) = -0.5*(1.0 + y);
586 outputValues(14,i0, 6) = 0.0;
587 outputValues(14,i0, 7) = 0.0;
588 outputValues(14,i0, 8) = -0.5*(1.0 + x);
589 outputValues(14,i0, 9) = 0.0;
591 outputValues(15,i0, 0) = 0.0;
592 outputValues(15,i0, 1) = 0.0;
593 outputValues(15,i0, 2) = 0.0;
594 outputValues(15,i0, 3) = 0.0;
595 outputValues(15,i0, 4) = 0.5*z;
596 outputValues(15,i0, 5) = 0.5*(1.0 + y);
597 outputValues(15,i0, 6) = 0.0;
598 outputValues(15,i0, 7) = 0.0;
599 outputValues(15,i0, 8) = -0.5*(1.0 - x);
600 outputValues(15,i0, 9) = 0.0;
602 outputValues(16,i0, 0) = 0.0;
603 outputValues(16,i0, 1) = 0.5*(1.0 + z);
604 outputValues(16,i0, 2) = -0.5*(1.0 - y);
605 outputValues(16,i0, 3) = 0.0;
606 outputValues(16,i0, 4) = 0.5*x;
607 outputValues(16,i0, 5) = 0.0;
608 outputValues(16,i0, 6) = 0.0;
609 outputValues(16,i0, 7) = 0.0;
610 outputValues(16,i0, 8) = 0.0;
611 outputValues(16,i0, 9) = 0.0;
613 outputValues(17,i0, 0) = 0.0;
614 outputValues(17,i0, 1) = 0.0;
615 outputValues(17,i0, 2) = 0.0;
616 outputValues(17,i0, 3) = -0.5*(1.0 + z);
617 outputValues(17,i0, 4) = -0.5*y;
618 outputValues(17,i0, 5) = 0.0;
619 outputValues(17,i0, 6) = 0.0;
620 outputValues(17,i0, 7) = -0.5*(1.0 + x);
621 outputValues(17,i0, 8) = 0.0;
622 outputValues(17,i0, 9) = 0.0;
624 outputValues(18,i0, 0) = 0.0;
625 outputValues(18,i0, 1) = -0.5*(1.0 + z);
626 outputValues(18,i0, 2) = -0.5*(1.0 + y);
627 outputValues(18,i0, 3) = 0.0;
628 outputValues(18,i0, 4) = -0.5*x;
629 outputValues(18,i0, 5) = 0.0;
630 outputValues(18,i0, 6) = 0.0;
631 outputValues(18,i0, 7) = 0.0;
632 outputValues(18,i0, 8) = 0.0;
633 outputValues(18,i0, 9) = 0.0;
635 outputValues(19,i0, 0) = 0.0;
636 outputValues(19,i0, 1) = 0.0;
637 outputValues(19,i0, 2) = 0.0;
638 outputValues(19,i0, 3) = 0.5*(1.0 + z);
639 outputValues(19,i0, 4) = 0.5*y;
640 outputValues(19,i0, 5) = 0.0;
641 outputValues(19,i0, 6) = 0.0;
642 outputValues(19,i0, 7) = -0.5*(1.0 - x);
643 outputValues(19,i0, 8) = 0.0;
644 outputValues(19,i0, 9) = 0.0;
653 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
654 for (
int i0 = 0; i0 < dim0; i0++) {
655 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
656 outputValues(dofOrd, i0, dkOrd) = 0.0;
661 for (
int i0 = 0; i0 < dim0; i0++) {
662 x = inputPoints(i0,0);
663 y = inputPoints(i0,1);
664 z = inputPoints(i0,2);
666 outputValues( 0, i0, 4) = 0.25;
667 outputValues( 0, i0, 7) = 0.25;
668 outputValues( 0, i0, 8) = 0.25;
670 outputValues( 1, i0, 4) = 0.25;
671 outputValues( 1, i0, 7) = -0.25;
672 outputValues( 1, i0, 8) = -0.25;
674 outputValues( 2, i0, 4) = -0.25;
675 outputValues( 2, i0, 7) = -0.25;
676 outputValues( 2, i0, 8) = 0.25;
678 outputValues( 3, i0, 4) = -0.25;
679 outputValues( 3, i0, 7) = 0.25;
680 outputValues( 3, i0, 8) = -0.25;
682 outputValues( 4, i0, 4) = -0.25;
683 outputValues( 4, i0, 7) = -0.25;
684 outputValues( 4, i0, 8) = 0.25;
686 outputValues( 5, i0, 4) = -0.25;
687 outputValues( 5, i0, 7) = 0.25;
688 outputValues( 5, i0, 8) = -0.25;
690 outputValues( 6, i0, 4) = 0.25;
691 outputValues( 6, i0, 7) = 0.25;
692 outputValues( 6, i0, 8) = 0.25;
694 outputValues( 7, i0, 4) = 0.25;
695 outputValues( 7, i0, 7) = -0.25;
696 outputValues( 7, i0, 8) = -0.25;
698 outputValues( 8, i0, 4) = -0.5;
699 outputValues( 9, i0, 7) = 0.5;
700 outputValues(10, i0, 4) = 0.5;
701 outputValues(11, i0, 7) = -0.5;
702 outputValues(12, i0, 8) = -0.5;
703 outputValues(13, i0, 8) = 0.5;
704 outputValues(14, i0, 8) = -0.5;
705 outputValues(15, i0, 8) = 0.5;
706 outputValues(16, i0, 4) = 0.5;
707 outputValues(17, i0, 7) = -0.5;
708 outputValues(18, i0, 4) = -0.5;
709 outputValues(19, i0, 7) = 0.5;
723 this -> basisCellTopology_.getDimension() );
724 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
725 for (
int i0 = 0; i0 < dim0; i0++) {
726 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
727 outputValues(dofOrd, i0, dkOrd) = 0.0;
736 ">>> ERROR (Basis_HGRAD_HEX_I2_FEM): Invalid operator type");