1 #ifndef INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP
2 #define INTREPID_HGRAD_WEDGE_C2_FEMDEF_HPP
53 template<
class Scalar,
class ArrayScalar>
56 this -> basisCardinality_ = 18;
57 this -> basisDegree_ = 2;
58 this -> basisCellTopology_ = shards::CellTopology(shards::getCellTopologyData<shards::Wedge<6> >() );
59 this -> basisType_ = BASIS_FEM_DEFAULT;
60 this -> basisCoordinates_ = COORDINATES_CARTESIAN;
61 this -> basisTagsAreSet_ =
false;
65 template<
class Scalar,
class ArrayScalar>
75 int tags[] = { 0, 0, 0, 1,
96 Intrepid::setOrdinalTagData(
this -> tagToOrdinal_,
97 this -> ordinalToTag_,
99 this -> basisCardinality_,
108 template<
class Scalar,
class ArrayScalar>
110 const ArrayScalar & inputPoints,
111 const EOperator operatorType)
const {
114 #ifdef HAVE_INTREPID_DEBUG
115 Intrepid::getValues_HGRAD_Args<Scalar, ArrayScalar>(outputValues,
118 this -> getBaseCellTopology(),
119 this -> getCardinality() );
123 int dim0 = inputPoints.dimension(0);
130 switch (operatorType) {
133 for (
int i0 = 0; i0 < dim0; i0++) {
134 x = inputPoints(i0, 0);
135 y = inputPoints(i0, 1);
136 z = inputPoints(i0, 2);
139 outputValues(0, i0) = ((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*z)/2.;
140 outputValues(1, i0) = (x*(-1. + 2.*x)*(-1. + z)*z)/2.;
141 outputValues(2, i0) = (y*(-1. + 2.*y)*(-1. + z)*z)/2.;
142 outputValues(3, i0) = ((-1. + x + y)*(-1. + 2.*x + 2.*y)*z*(1. + z))/2.;
143 outputValues(4, i0) = (x*(-1. + 2.*x)*z*(1. + z))/2.;
144 outputValues(5, i0) = (y*(-1. + 2.*y)*z*(1. + z))/2.;
146 outputValues(6, i0) = -2.*x*(-1. + x + y)*(-1. + z)*z;
147 outputValues(7, i0) = 2.*x*y*(-1. + z)*z;
148 outputValues(8, i0) = -2.*y*(-1. + x + y)*(-1. + z)*z;
149 outputValues(9, i0) = -((-1. + x + y)*(-1. + 2.*x + 2.*y)*(-1. + z)*(1. + z));
150 outputValues(10,i0) = -(x*(-1. + 2.*x)*(-1. + z)*(1. + z));
151 outputValues(11,i0) = -(y*(-1. + 2.*y)*(-1. + z)*(1. + z));
152 outputValues(12,i0) = -2.*x*(-1. + x + y)*z*(1. + z);
153 outputValues(13,i0) = 2.*x*y*z*(1. + z);
154 outputValues(14,i0) = -2.*y*(-1. + x + y)*z*(1. + z);
155 outputValues(15,i0) = 4.*x*(-1. + x + y)*(-1. + z)*(1. + z);
156 outputValues(16,i0) = -4.*x*y*(-1. + z)*(1. + z);
157 outputValues(17,i0) = 4.*y*(-1. + x + y)*(-1. + z)*(1. + z);
163 for (
int i0 = 0; i0 < dim0; i0++) {
164 x = inputPoints(i0,0);
165 y = inputPoints(i0,1);
166 z = inputPoints(i0,2);
169 outputValues(0, i0, 0) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
170 outputValues(0, i0, 1) = ((-3 + 4*x + 4*y)*(-1 + z)*z)/2.;
171 outputValues(0, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(-1 + 2*z))/2.;
173 outputValues(1, i0, 0) = ((-1 + 4*x)*(-1 + z)*z)/2.;
174 outputValues(1, i0, 1) = 0.;
175 outputValues(1, i0, 2) = (x*(-1 + 2*x)*(-1 + 2*z))/2.;
177 outputValues(2, i0, 0) = 0.;
178 outputValues(2, i0, 1) = ((-1 + 4*y)*(-1 + z)*z)/2.;
179 outputValues(2, i0, 2) = (y*(-1 + 2*y)*(-1 + 2*z))/2.;
181 outputValues(3, i0, 0) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.;
182 outputValues(3, i0, 1) = ((-3 + 4*x + 4*y)*z*(1 + z))/2.;
183 outputValues(3, i0, 2) = ((-1 + x + y)*(-1 + 2*x + 2*y)*(1 + 2*z))/2.;
185 outputValues(4, i0, 0) = ((-1 + 4*x)*z*(1 + z))/2.;
186 outputValues(4, i0, 1) = 0.;
187 outputValues(4, i0, 2) = (x*(-1 + 2*x)*(1 + 2*z))/2.;
189 outputValues(5, i0, 0) = 0.;
190 outputValues(5, i0, 1) = ((-1 + 4*y)*z*(1 + z))/2.;
191 outputValues(5, i0, 2) = (y*(-1 + 2*y)*(1 + 2*z))/2.;
193 outputValues(6, i0, 0) = -2*(-1 + 2*x + y)*(-1 + z)*z;
194 outputValues(6, i0, 1) = -2*x*(-1 + z)*z;
195 outputValues(6, i0, 2) = 2*x*(-1 + x + y)*(1 - 2*z);
197 outputValues(7, i0, 0) = 2*y*(-1 + z)*z;
198 outputValues(7, i0, 1) = 2*x*(-1 + z)*z;
199 outputValues(7, i0, 2) = 2*x*y*(-1 + 2*z);
201 outputValues(8, i0, 0) = -2*y*(-1 + z)*z;
202 outputValues(8, i0, 1) = -2*(-1 + x + 2*y)*(-1 + z)*z;
203 outputValues(8, i0, 2) = 2*y*(-1 + x + y)*(1 - 2*z);
205 outputValues(9, i0, 0) = -(-3 + 4*x + 4*y)*(-1 + z*z);
206 outputValues(9, i0, 1) = -(-3 + 4*x + 4*y)*(-1 + z*z);
207 outputValues(9, i0, 2) = -2*(1 + 2*x*x - 3*y + 2*y*y + x*(-3 + 4*y))*z;
209 outputValues(10,i0, 0) = -(-1 + 4*x)*(-1 + z*z);
210 outputValues(10,i0, 1) = 0;
211 outputValues(10,i0, 2) = 2*(1 - 2*x)*x*z;
213 outputValues(11,i0, 0) = 0;
214 outputValues(11,i0, 1) = -(-1 + 4*y)*(-1 + z*z);
215 outputValues(11,i0, 2) = 2*(1 - 2*y)*y*z;
217 outputValues(12,i0, 0) = -2*(-1 + 2*x + y)*z*(1 + z);
218 outputValues(12,i0, 1) = -2*x*z*(1 + z);
219 outputValues(12,i0, 2) = -2*x*(-1 + x + y)*(1 + 2*z);
221 outputValues(13,i0, 0) = 2*y*z*(1 + z);
222 outputValues(13,i0, 1) = 2*x*z*(1 + z);
223 outputValues(13,i0, 2) = 2*x*y*(1 + 2*z);
225 outputValues(14,i0, 0) = -2*y*z*(1 + z);
226 outputValues(14,i0, 1) = -2*(-1 + x + 2*y)*z*(1 + z);
227 outputValues(14,i0, 2) = -2*y*(-1 + x + y)*(1 + 2*z);
229 outputValues(15,i0, 0) = 4*(-1 + 2*x + y)*(-1 + z*z);
230 outputValues(15,i0, 1) = 4*x*(-1 + z)*(1 + z);
231 outputValues(15,i0, 2) = 8*x*(-1 + x + y)*z;
233 outputValues(16,i0, 0) = -4*y*(-1 + z)*(1 + z);
234 outputValues(16,i0, 1) = -4*x*(-1 + z)*(1 + z);
235 outputValues(16,i0, 2) = -8*x*y*z;
237 outputValues(17,i0, 0) = 4*y*(-1 + z)*(1 + z);
238 outputValues(17,i0, 1) = 4*(-1 + x + 2*y)*(-1 + z*z);
239 outputValues(17,i0, 2) = 8*y*(-1 + x + y)*z;
245 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_CURL), std::invalid_argument,
246 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): CURL is invalid operator for rank-0 (scalar) functions in 3D");
250 TEUCHOS_TEST_FOR_EXCEPTION( (operatorType == OPERATOR_DIV), std::invalid_argument,
251 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): DIV is invalid operator for rank-0 (scalar) functions in 3D");
255 for (
int i0 = 0; i0 < dim0; i0++) {
256 x = inputPoints(i0,0);
257 y = inputPoints(i0,1);
258 z = inputPoints(i0,2);
260 outputValues(0, i0, 0) = 2.*(-1. + z)*z;
261 outputValues(0, i0, 1) = 2.*(-1. + z)*z;
262 outputValues(0, i0, 2) = ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;
263 outputValues(0, i0, 3) = 2.*(-1. + z)*z;
264 outputValues(0, i0, 4) = ((-3. + 4.*x + 4.*y)*(-1. + 2.*z))/2.;
265 outputValues(0, i0, 5) = (-1. + x + y)*(-1. + 2.*x + 2.*y);
267 outputValues(1, i0, 0) = 2.*(-1. + z)*z;
268 outputValues(1, i0, 1) = 0.;
269 outputValues(1, i0, 2) = ((-1. + 4.*x)*(-1. + 2.*z))/2.;
270 outputValues(1, i0, 3) = 0.;
271 outputValues(1, i0, 4) = 0.;
272 outputValues(1, i0, 5) = x*(-1. + 2.*x);
274 outputValues(2, i0, 0) = 0.;
275 outputValues(2, i0, 1) = 0.;
276 outputValues(2, i0, 2) = 0.;
277 outputValues(2, i0, 3) = 2.*(-1. + z)*z;
278 outputValues(2, i0, 4) = ((-1. + 4.*y)*(-1. + 2.*z))/2.;
279 outputValues(2, i0, 5) = y*(-1. + 2.*y);
281 outputValues(3, i0, 0) = 2.*z*(1. + z);
282 outputValues(3, i0, 1) = 2.*z*(1. + z);
283 outputValues(3, i0, 2) = ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;
284 outputValues(3, i0, 3) = 2.*z*(1. + z);
285 outputValues(3, i0, 4) = ((-3. + 4.*x + 4.*y)*(1. + 2.*z))/2.;
286 outputValues(3, i0, 5) = (-1. + x + y)*(-1. + 2.*x + 2.*y);
288 outputValues(4, i0, 0) = 2.*z*(1. + z);
289 outputValues(4, i0, 1) = 0.;
290 outputValues(4, i0, 2) = ((-1. + 4.*x)*(1. + 2.*z))/2.;;
291 outputValues(4, i0, 3) = 0.;
292 outputValues(4, i0, 4) = 0.;
293 outputValues(4, i0, 5) = x*(-1. + 2.*x);
295 outputValues(5, i0, 0) = 0.;
296 outputValues(5, i0, 1) = 0.;
297 outputValues(5, i0, 2) = 0.;
298 outputValues(5, i0, 3) = 2.*z*(1. + z);
299 outputValues(5, i0, 4) = ((-1. + 4.*y)*(1. + 2.*z))/2.;
300 outputValues(5, i0, 5) = y*(-1. + 2.*y);
302 outputValues(6, i0, 0) = -4.*(-1. + z)*z;
303 outputValues(6, i0, 1) = -2.*(-1. + z)*z;
304 outputValues(6, i0, 2) = -2.*(-1. + 2.*x + y)*(-1. + 2.*z);
305 outputValues(6, i0, 3) = 0.;
306 outputValues(6, i0, 4) = x*(2. - 4.*z);
307 outputValues(6, i0, 5) = -4.*x*(-1. + x + y);
309 outputValues(7, i0, 0) = 0.;
310 outputValues(7, i0, 1) = 2.*(-1. + z)*z;
311 outputValues(7, i0, 2) = 2.*y*(-1. + 2.*z);
312 outputValues(7, i0, 3) = 0.;
313 outputValues(7, i0, 4) = 2.*x*(-1. + 2.*z);
314 outputValues(7, i0, 5) = 4.*x*y;
316 outputValues(8, i0, 0) = 0.;
317 outputValues(8, i0, 1) = -2.*(-1. + z)*z;
318 outputValues(8, i0, 2) = y*(2. - 4.*z);
319 outputValues(8, i0, 3) = -4.*(-1. + z)*z;
320 outputValues(8, i0, 4) = -2.*(-1. + x + 2.*y)*(-1. + 2.*z);
321 outputValues(8, i0, 5) = -4.*y*(-1. + x + y);
323 outputValues(9, i0, 0) = 4. - 4.*z*z;
324 outputValues(9, i0, 1) = 4. - 4.*z*z;
325 outputValues(9, i0, 2) = -2.*(-3. + 4.*x + 4.*y)*z;
326 outputValues(9, i0, 3) = 4. - 4.*z*z;
327 outputValues(9, i0, 4) = -2.*(-3. + 4.*x + 4.*y)*z;
328 outputValues(9, i0, 5) = -2.*(-1. + x + y)*(-1. + 2.*x + 2.*y);
330 outputValues(10,i0, 0) = 4. - 4.*z*z;
331 outputValues(10,i0, 1) = 0.;
332 outputValues(10,i0, 2) = (2. - 8.*x)*z;
333 outputValues(10,i0, 3) = 0.;
334 outputValues(10,i0, 4) = 0.;
335 outputValues(10,i0, 5) = -2.*x*(-1. + 2.*x);
337 outputValues(11,i0, 0) = 0.;
338 outputValues(11,i0, 1) = 0.;
339 outputValues(11,i0, 2) = 0.;
340 outputValues(11,i0, 3) = 4. - 4.*z*z;
341 outputValues(11,i0, 4) = (2. - 8.*y)*z;
342 outputValues(11,i0, 5) = -2.*y*(-1. + 2.*y);
344 outputValues(12,i0, 0) = -4.*z*(1. + z);
345 outputValues(12,i0, 1) = -2.*z*(1. + z);
346 outputValues(12,i0, 2) = -2.*(-1. + 2.*x + y)*(1. + 2.*z);
347 outputValues(12,i0, 3) = 0.;
348 outputValues(12,i0, 4) = -2.*(x + 2.*x*z);
349 outputValues(12,i0, 5) = -4.*x*(-1. + x + y);
351 outputValues(13,i0, 0) = 0.;
352 outputValues(13,i0, 1) = 2.*z*(1. + z);
353 outputValues(13,i0, 2) = 2.*(y + 2.*y*z);
354 outputValues(13,i0, 3) = 0.;
355 outputValues(13,i0, 4) = 2.*(x + 2.*x*z);
356 outputValues(13,i0, 5) = 4.*x*y;
358 outputValues(14,i0, 0) = 0.;
359 outputValues(14,i0, 1) = -2.*z*(1. + z);
360 outputValues(14,i0, 2) = -2.*(y + 2.*y*z);
361 outputValues(14,i0, 3) = -4.*z*(1. + z);
362 outputValues(14,i0, 4) = -2.*(-1. + x + 2.*y)*(1. + 2.*z);
363 outputValues(14,i0, 5) = -4.*y*(-1. + x + y);
365 outputValues(15,i0, 0) = 8.*(-1. + z*z);
366 outputValues(15,i0, 1) = 4.*(-1. + z*z);
367 outputValues(15,i0, 2) = 8.*(-1. + 2.*x + y)*z;
368 outputValues(15,i0, 3) = 0.;
369 outputValues(15,i0, 4) = 8.*x*z;
370 outputValues(15,i0, 5) = 8.*x*(-1. + x + y);
372 outputValues(16,i0, 0) = 0.;
373 outputValues(16,i0, 1) = 4. - 4.*z*z;
374 outputValues(16,i0, 2) = -8.*y*z;
375 outputValues(16,i0, 3) = 0.;
376 outputValues(16,i0, 4) = -8.*x*z;
377 outputValues(16,i0, 5) = -8.*x*y;
380 outputValues(17,i0, 0) = 0.;
381 outputValues(17,i0, 1) = 4.*(-1. + z*z);
382 outputValues(17,i0, 2) = 8.*y*z;
383 outputValues(17,i0, 3) = 8.*(-1. + z*z);
384 outputValues(17,i0, 4) = 8.*(-1. + x + 2.*y)*z;
385 outputValues(17,i0, 5) = 8.*y*(-1. + x + y);
390 for (
int i0 = 0; i0 < dim0; i0++) {
391 x = inputPoints(i0,0);
392 y = inputPoints(i0,1);
393 z = inputPoints(i0,2);
395 outputValues(0, i0, 0) = 0.;
396 outputValues(0, i0, 1) = 0.;
397 outputValues(0, i0, 2) = -2. + 4.*z;
398 outputValues(0, i0, 3) = 0.;
399 outputValues(0, i0, 4) = -2. + 4.*z;
400 outputValues(0, i0, 5) = -3. + 4.*x + 4.*y;
401 outputValues(0, i0, 6) = 0.;
402 outputValues(0, i0, 7) = -2. + 4.*z;
403 outputValues(0, i0, 8) = -3. + 4.*x + 4.*y;
404 outputValues(0, i0, 9) = 0.;
406 outputValues(1, i0, 0) = 0.;
407 outputValues(1, i0, 1) = 0.;
408 outputValues(1, i0, 2) = -2. + 4.*z;
409 outputValues(1, i0, 3) = 0.;
410 outputValues(1, i0, 4) = 0.;
411 outputValues(1, i0, 5) = -1 + 4.*x;
412 outputValues(1, i0, 6) = 0.;
413 outputValues(1, i0, 7) = 0.;
414 outputValues(1, i0, 8) = 0.;
415 outputValues(1, i0, 9) = 0.;
417 outputValues(2, i0, 0) = 0.;
418 outputValues(2, i0, 1) = 0.;
419 outputValues(2, i0, 2) = 0.;
420 outputValues(2, i0, 3) = 0.;
421 outputValues(2, i0, 4) = 0.;
422 outputValues(2, i0, 5) = 0.;
423 outputValues(2, i0, 6) = 0.;
424 outputValues(2, i0, 7) = -2. + 4.*z;
425 outputValues(2, i0, 8) = -1 + 4.*y;
426 outputValues(2, i0, 9) = 0.;
428 outputValues(3, i0, 0) = 0.;
429 outputValues(3, i0, 1) = 0.;
430 outputValues(3, i0, 2) = 2. + 4.*z;
431 outputValues(3, i0, 3) = 0.;
432 outputValues(3, i0, 4) = 2. + 4.*z;
433 outputValues(3, i0, 5) = -3. + 4.*x + 4.*y;
434 outputValues(3, i0, 6) = 0.;
435 outputValues(3, i0, 7) = 2. + 4.*z;
436 outputValues(3, i0, 8) = -3. + 4.*x + 4.*y;
437 outputValues(3, i0, 9) = 0.;
439 outputValues(4, i0, 0) = 0.;
440 outputValues(4, i0, 1) = 0.;
441 outputValues(4, i0, 2) = 2. + 4.*z;
442 outputValues(4, i0, 3) = 0.;
443 outputValues(4, i0, 4) = 0.;
444 outputValues(4, i0, 5) = -1 + 4.*x;
445 outputValues(4, i0, 6) = 0.;
446 outputValues(4, i0, 7) = 0.;
447 outputValues(4, i0, 8) = 0.;
448 outputValues(4, i0, 9) = 0.;
450 outputValues(5, i0, 0) = 0.;
451 outputValues(5, i0, 1) = 0.;
452 outputValues(5, i0, 2) = 0.;
453 outputValues(5, i0, 3) = 0.;
454 outputValues(5, i0, 4) = 0.;
455 outputValues(5, i0, 5) = 0.;
456 outputValues(5, i0, 6) = 0.;
457 outputValues(5, i0, 7) = 2. + 4.*z;
458 outputValues(5, i0, 8) = -1 + 4.*y;
459 outputValues(5, i0, 9) = 0.;
461 outputValues(6, i0, 0) = 0.;
462 outputValues(6, i0, 1) = 0.;
463 outputValues(6, i0, 2) = 4. - 8.*z;
464 outputValues(6, i0, 3) = 0.;
465 outputValues(6, i0, 4) = 2. - 4.*z;
466 outputValues(6, i0, 5) = -4.*(-1 + 2*x + y);
467 outputValues(6, i0, 6) = 0.;
468 outputValues(6, i0, 7) = 0.;
469 outputValues(6, i0, 8) = -4.*x;
470 outputValues(6, i0, 9) = 0.;
472 outputValues(7, i0, 0) = 0.;
473 outputValues(7, i0, 1) = 0.;
474 outputValues(7, i0, 2) = 0.;
475 outputValues(7, i0, 3) = 0.;
476 outputValues(7, i0, 4) = -2. + 4.*z;
477 outputValues(7, i0, 5) = 4.*y;
478 outputValues(7, i0, 6) = 0.;
479 outputValues(7, i0, 7) = 0.;
480 outputValues(7, i0, 8) = 4.*x;
481 outputValues(7, i0, 9) = 0.;
483 outputValues(8, i0, 0) = 0.;
484 outputValues(8, i0, 1) = 0.;
485 outputValues(8, i0, 2) = 0.;
486 outputValues(8, i0, 3) = 0.;
487 outputValues(8, i0, 4) = 2. - 4.*z;
488 outputValues(8, i0, 5) = -4.*y;
489 outputValues(8, i0, 6) = 0.;
490 outputValues(8, i0, 7) = 4. - 8.*z;
491 outputValues(8, i0, 8) = -4.*(-1 + x + 2*y);
492 outputValues(8, i0, 9) = 0.;
494 outputValues(9, i0, 0) = 0.;
495 outputValues(9, i0, 1) = 0.;
496 outputValues(9, i0, 2) = -8.*z;
497 outputValues(9, i0, 3) = 0.;
498 outputValues(9, i0, 4) = -8.*z;
499 outputValues(9, i0, 5) = 6. - 8.*x - 8.*y;
500 outputValues(9, i0, 6) = 0.;
501 outputValues(9, i0, 7) = -8.*z;
502 outputValues(9, i0, 8) = 6. - 8.*x - 8.*y;
503 outputValues(9, i0, 9) = 0.;
505 outputValues(10,i0, 0) = 0.;
506 outputValues(10,i0, 1) = 0.;
507 outputValues(10,i0, 2) = -8.*z;
508 outputValues(10,i0, 3) = 0.;
509 outputValues(10,i0, 4) = 0.;
510 outputValues(10,i0, 5) = 2. - 8.*x;
511 outputValues(10,i0, 6) = 0.;
512 outputValues(10,i0, 7) = 0.;
513 outputValues(10,i0, 8) = 0.;
514 outputValues(10,i0, 9) = 0.;
516 outputValues(11,i0, 0) = 0.;
517 outputValues(11,i0, 1) = 0.;
518 outputValues(11,i0, 2) = 0.;
519 outputValues(11,i0, 3) = 0.;
520 outputValues(11,i0, 4) = 0.;
521 outputValues(11,i0, 5) = 0.;
522 outputValues(11,i0, 6) = 0.;
523 outputValues(11,i0, 7) = -8.*z;
524 outputValues(11,i0, 8) = 2. - 8.*y;
525 outputValues(11,i0, 9) = 0.;
527 outputValues(12,i0, 0) = 0.;
528 outputValues(12,i0, 1) = 0.;
529 outputValues(12,i0, 2) = -4. - 8.*z;
530 outputValues(12,i0, 3) = 0.;
531 outputValues(12,i0, 4) = -2. - 4.*z;
532 outputValues(12,i0, 5) = -4.*(-1 + 2*x + y);
533 outputValues(12,i0, 6) = 0.;
534 outputValues(12,i0, 7) = 0.;
535 outputValues(12,i0, 8) = -4.*x;
536 outputValues(12,i0, 9) = 0.;
538 outputValues(13,i0, 0) = 0.;
539 outputValues(13,i0, 1) = 0.;
540 outputValues(13,i0, 2) = 0.;
541 outputValues(13,i0, 3) = 0.;
542 outputValues(13,i0, 4) = 2. + 4.*z;
543 outputValues(13,i0, 5) = 4.*y;
544 outputValues(13,i0, 6) = 0.;
545 outputValues(13,i0, 7) = 0.;
546 outputValues(13,i0, 8) = 4.*x;
547 outputValues(13,i0, 9) = 0.;
549 outputValues(14,i0, 0) = 0.;
550 outputValues(14,i0, 1) = 0.;
551 outputValues(14,i0, 2) = 0.;
552 outputValues(14,i0, 3) = 0.;
553 outputValues(14,i0, 4) = -2. - 4.*z;
554 outputValues(14,i0, 5) = -4.*y;
555 outputValues(14,i0, 6) = 0.;
556 outputValues(14,i0, 7) = -4. - 8.*z;
557 outputValues(14,i0, 8) = -4.*(-1 + x + 2*y);
558 outputValues(14,i0, 9) = 0.;
560 outputValues(15,i0, 0) = 0.;
561 outputValues(15,i0, 1) = 0.;
562 outputValues(15,i0, 2) = 16.*z;
563 outputValues(15,i0, 3) = 0.;
564 outputValues(15,i0, 4) = 8.*z;
565 outputValues(15,i0, 5) = 8.*(-1 + 2*x + y);
566 outputValues(15,i0, 6) = 0.;
567 outputValues(15,i0, 7) = 0.;
568 outputValues(15,i0, 8) = 8.*x;
569 outputValues(15,i0, 9) = 0.;
571 outputValues(16,i0, 0) = 0.;
572 outputValues(16,i0, 1) = 0.;
573 outputValues(16,i0, 2) = 0.;
574 outputValues(16,i0, 3) = 0.;
575 outputValues(16,i0, 4) = -8.*z;
576 outputValues(16,i0, 5) = -8.*y;
577 outputValues(16,i0, 6) = 0.;
578 outputValues(16,i0, 7) = 0.;
579 outputValues(16,i0, 8) = -8.*x;
580 outputValues(16,i0, 9) = 0.;
582 outputValues(17,i0, 0) = 0.;
583 outputValues(17,i0, 1) = 0.;
584 outputValues(17,i0, 2) = 0.;
585 outputValues(17,i0, 3) = 0.;
586 outputValues(17,i0, 4) = 8.*z;
587 outputValues(17,i0, 5) = 8.*y;
588 outputValues(17,i0, 6) = 0.;
589 outputValues(17,i0, 7) = 16.*z;
590 outputValues(17,i0, 8) = 8.*(-1 + x + 2*y);
591 outputValues(17,i0, 9) = 0.;
599 int DkCardinality = Intrepid::getDkCardinality(operatorType,
this -> basisCellTopology_.getDimension() );
600 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
601 for (
int i0 = 0; i0 < dim0; i0++) {
602 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
603 outputValues(dofOrd, i0, dkOrd) = 0.0;
608 for (
int i0 = 0; i0 < dim0; i0++) {
610 outputValues(0, i0, 5) = 4.;
611 outputValues(0, i0, 8) = 4.;
612 outputValues(0, i0,12) = 4.;
614 outputValues(1, i0, 5) = 4.;
616 outputValues(2, i0,12) = 4.;
618 outputValues(3, i0, 5) = 4.;
619 outputValues(3, i0, 8) = 4.;
620 outputValues(3, i0,12) = 4.;
622 outputValues(4, i0, 5) = 4.0;
624 outputValues(5, i0,12) = 4.0;
626 outputValues(6, i0, 5) =-8.;
627 outputValues(6, i0, 8) =-4.;
629 outputValues(7, i0, 8) = 4.;
631 outputValues(8, i0, 8) =-4.;
632 outputValues(8, i0,12) =-8.;
634 outputValues(9, i0, 5) =-8.;
635 outputValues(9, i0, 8) =-8.;
636 outputValues(9, i0,12) =-8.;
638 outputValues(10,i0, 5) =-8.;
640 outputValues(11,i0,12) =-8.;
642 outputValues(12,i0, 5) =-8.;
643 outputValues(12,i0, 8) =-4.;
645 outputValues(13,i0, 8) = 4.;
647 outputValues(14,i0, 8) =-4;
648 outputValues(14,i0,12) =-8.;
650 outputValues(15,i0, 5) =16.;
651 outputValues(15,i0, 8) = 8.;
653 outputValues(16,i0, 8) =-8.;
656 outputValues(17,i0, 8) = 8.;
657 outputValues(17,i0,12) =16.;
670 int DkCardinality = Intrepid::getDkCardinality(operatorType,
671 this -> basisCellTopology_.getDimension() );
672 for(
int dofOrd = 0; dofOrd <
this -> basisCardinality_; dofOrd++) {
673 for (
int i0 = 0; i0 < dim0; i0++) {
674 for(
int dkOrd = 0; dkOrd < DkCardinality; dkOrd++){
675 outputValues(dofOrd, i0, dkOrd) = 0.0;
683 TEUCHOS_TEST_FOR_EXCEPTION( !( Intrepid::isValidOperator(operatorType) ), std::invalid_argument,
684 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): Invalid operator type");
690 template<
class Scalar,
class ArrayScalar>
692 const ArrayScalar & inputPoints,
693 const ArrayScalar & cellVertices,
694 const EOperator operatorType)
const {
695 TEUCHOS_TEST_FOR_EXCEPTION( (
true), std::logic_error,
696 ">>> ERROR (Basis_HGRAD_WEDGE_C2_FEM): FEM Basis calling an FVD member function");
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.
Basis_HGRAD_WEDGE_C2_FEM()
Constructor.
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const
FEM basis evaluation on a reference Wedge cell.