Intrepid2
Intrepid2_CellTopologyTags.hpp
Go to the documentation of this file.
1// @HEADER
2// ************************************************************************
3//
4// Intrepid2 Package
5// Copyright (2007) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Kyungjoo Kim (kyukim@sandia.gov), or
38// Mauro Perego (mperego@sandia.gov)
39//
40// ************************************************************************
41// @HEADER
42
66#ifndef __INTREPID2_CELLTOPOLOGYTAGS_HPP__
67#define __INTREPID2_CELLTOPOLOGYTAGS_HPP__
68
69#include "Intrepid2_ConfigDefs.hpp"
70
71//#include "Intrepid2_Types.hpp"
72#include "Intrepid2_Utils.hpp"
73//#include "Intrepid2_Kernels.hpp"
74
75namespace Intrepid2 {
76
77 namespace Impl {
78
79
80 // ---------------------------------------------------------------------------------------
81
82 template<int N>
83 struct Line;
84
88 template<>
89 struct Line<2> {
90 typedef struct Line<2> base_cell_topology_type;
91 enum : int { dimension = 1,
92 numNode = 2,
93 numVert = 2,
94 numEdge = 0,
95 numFace = 0,
96 numIntr = 1 };
97 static constexpr double coords[2][3]{ {-1.0, 0.0, 0.0}, { 1.0, 0.0, 0.0} };
98
99 // base topology has this check method
100 template<typename PointViewType>
101 KOKKOS_INLINE_FUNCTION
102 static bool
103 checkPointInclusion(const PointViewType &point,
104 const double threshold) {
105 const double minus_one = -1.0 - threshold, plus_one = 1.0 + threshold;
106 return (minus_one <= point(0) && point(0) <= plus_one);
107 }
108 };
109
113 template<>
114 struct Line<3> {
115 typedef struct Line<2> base_cell_topology_type;
116 enum : int { dimension = 1,
117 numNode = 3,
118 numVert = 2,
119 numEdge = 0,
120 numFace = 0,
121 numIntr = 1 };
122 static constexpr double coords[3][3]{ {-1.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 0.0, 0.0} };
123
124 template<typename PointViewType>
125 KOKKOS_INLINE_FUNCTION
126 static bool
127 checkPointInclusion(const PointViewType &point,
128 const double threshold) {
129 return base_cell_topology_type::checkPointInclusion(point, threshold);
130 }
131 };
132
133 // ---------------------------------------------------------------------------------------
134
135 template<int N>
136 struct Triangle;
137
141 template<>
142 struct Triangle<3> {
143 typedef struct Triangle<3> base_cell_topology_type;
144 enum : int { dimension = 2,
145 numNode = 3,
146 numVert = 3,
147 numEdge = 3,
148 numFace = 0,
149 numIntr = 1 };
150 static constexpr double coords[3][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0} };
151
152 template<typename PointViewType>
153 KOKKOS_INLINE_FUNCTION
154 static bool
155 checkPointInclusion(const PointViewType &point,
156 const double threshold) {
157 const double distance = max( max( -point(0), -point(1) ), point(0) + point(1) - 1.0 );
158 return distance < threshold;
159 }
160 };
161
165 template<>
166 struct Triangle<4> {
167 typedef struct Triangle<3> base_cell_topology_type;
168 enum : int { dimension = 2,
169 numNode = 4,
170 numVert = 3,
171 numEdge = 3,
172 numFace = 0,
173 numIntr = 1 };
174 static constexpr double coords[4][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, { 1.0/3.0, 1.0/3.0, 0.0} };
175
176 template<typename PointViewType>
177 KOKKOS_INLINE_FUNCTION
178 static bool
179 checkPointInclusion(const PointViewType &point,
180 const double threshold) {
181 return base_cell_topology_type::checkPointInclusion(point, threshold);
182 }
183 };
184
188 template<>
189 struct Triangle<6> {
190 typedef struct Triangle<3> base_cell_topology_type;
191 enum : int { dimension = 2,
192 numNode = 6,
193 numVert = 3,
194 numEdge = 3,
195 numFace = 0,
196 numIntr = 1 };
197 static constexpr double coords[6][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0},
198 { 0.5, 0.0, 0.0}, { 0.5, 0.5, 0.0}, { 0.0, 0.5, 0.0} };
199
200 template<typename PointViewType>
201 KOKKOS_INLINE_FUNCTION
202 static bool
203 checkPointInclusion(const PointViewType &point,
204 const double threshold) {
205 return base_cell_topology_type::checkPointInclusion(point, threshold);
206 }
207 };
208
209 // ---------------------------------------------------------------------------------------
210
211 template<int N>
213
217 template<>
218 struct Quadrilateral<4> {
219 typedef struct Quadrilateral<4> base_cell_topology_type;
220 enum : int { dimension = 2,
221 numNode = 4,
222 numVert = 4,
223 numEdge = 4,
224 numFace = 0,
225 numIntr = 1 };
226 static constexpr double coords[4][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0} };
227
228 template<typename PointViewType>
229 KOKKOS_INLINE_FUNCTION
230 static bool
231 checkPointInclusion(const PointViewType &point,
232 const double threshold) {
233 const double minus_one = -1.0 - threshold, plus_one = 1.0 + threshold;
234 return ((minus_one <= point(0) && point(0) <= plus_one) &&
235 (minus_one <= point(1) && point(1) <= plus_one));
236 }
237 };
238
242 template<>
243 struct Quadrilateral<8> {
244 typedef struct Quadrilateral<4> base_cell_topology_type;
245 enum : int { dimension = 2,
246 numNode = 8,
247 numVert = 4,
248 numEdge = 4,
249 numFace = 0,
250 numIntr = 1 };
251 static constexpr double coords[8][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0},
252 { 0.0,-1.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, {-1.0, 0.0, 0.0} };
253
254 template<typename PointViewType>
255 KOKKOS_INLINE_FUNCTION
256 static bool
257 checkPointInclusion(const PointViewType &point,
258 const double threshold) {
259 return base_cell_topology_type::checkPointInclusion(point, threshold);
260 }
261 };
262
266 template<>
267 struct Quadrilateral<9> {
268 typedef struct Quadrilateral<4> base_cell_topology_type;
269 enum : int { dimension = 2,
270 numNode = 9,
271 numVert = 4,
272 numEdge = 4,
273 numFace = 0,
274 numIntr = 1 };
275 static constexpr double coords[9][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0},
276 { 0.0,-1.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, {-1.0, 0.0, 0.0}, { 0.0, 0.0, 0.0} };
277
278 template<typename PointViewType>
279 KOKKOS_INLINE_FUNCTION
280 static bool
281 checkPointInclusion(const PointViewType &point,
282 const double threshold) {
283 return base_cell_topology_type::checkPointInclusion(point, threshold);
284 }
285 };
286
287 // ---------------------------------------------------------------------------------------
288
289 template<int N>
291
295 template<>
296 struct Tetrahedron<4> {
297 typedef struct Tetrahedron<4> base_cell_topology_type;
298 enum : int { dimension = 3,
299 numNode = 4,
300 numVert = 4,
301 numEdge = 6,
302 numFace = 4,
303 numIntr = 1 };
304 static constexpr double coords[4][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, { 0.0, 0.0, 1.0} };
305
306 template<typename PointViewType>
307 KOKKOS_INLINE_FUNCTION
308 static bool
309 checkPointInclusion(const PointViewType &point,
310 const double threshold) {
311 const double distance = max( max(-point(0),-point(1)),
312 max(-point(2), point(0) + point(1) + point(2) - 1) );
313
314 return distance < threshold;
315 }
316 };
317
321 template<>
322 struct Tetrahedron<8> {
323 typedef struct Tetrahedron<4> base_cell_topology_type;
324 enum : int { dimension = 3,
325 numNode = 8,
326 numVert = 4,
327 numEdge = 6,
328 numFace = 4,
329 numIntr = 1 };
330 static constexpr double coords[8][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, { 0.0, 0.0, 1.0},
331 { 1/3, 0.0, 1/3}, { 1/3, 1/3, 1/3}, { 1/3, 1/3, 0.0}, { 0.0, 1/3, 1/3} };
332
333 template<typename PointViewType>
334 KOKKOS_INLINE_FUNCTION
335 static bool
336 checkPointInclusion(const PointViewType &point,
337 const double threshold) {
338 return base_cell_topology_type::checkPointInclusion(point, threshold);
339 }
340 };
341
345 template<>
346 struct Tetrahedron<10> {
347 typedef struct Tetrahedron<4> base_cell_topology_type;
348 enum : int { dimension = 3,
349 numNode = 10,
350 numVert = 4,
351 numEdge = 6,
352 numFace = 4,
353 numIntr = 1 };
354 static constexpr double coords[10][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, { 0.0, 0.0, 1.0},
355 { 0.5, 0.0, 0.0}, { 0.5, 0.5, 0.0}, { 0.0, 0.5, 0.0}, { 0.0, 0.0, 0.5}, { 0.5, 0.0, 0.5}, { 0.0, 0.5, 0.5} };
356
357 template<typename PointViewType>
358 KOKKOS_INLINE_FUNCTION
359 static bool
360 checkPointInclusion(const PointViewType &point,
361 const double threshold) {
362 return base_cell_topology_type::checkPointInclusion(point, threshold);
363 }
364 };
365
369 template<>
370 struct Tetrahedron<11> {
371 typedef struct Tetrahedron<4> base_cell_topology_type;
372 enum : int { dimension = 3,
373 numNode = 11,
374 numVert = 4,
375 numEdge = 6,
376 numFace = 4,
377 numIntr = 1 };
378 static constexpr double coords[11][3]{ { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, { 0.0, 0.0, 1.0},
379 { 0.5, 0.0, 0.0}, { 0.5, 0.5, 0.0}, { 0.0, 0.5, 0.0}, { 0.0, 0.0, 0.5}, { 0.5, 0.0, 0.5}, { 0.0, 0.5, 0.5} };
380
381 template<typename PointViewType>
382 KOKKOS_INLINE_FUNCTION
383 static bool
384 checkPointInclusion(const PointViewType &point,
385 const double threshold) {
386 return base_cell_topology_type::checkPointInclusion(point, threshold);
387 }
388 };
389
390 // ---------------------------------------------------------------------------------------
391
392 template<int N>
394
398 template<>
399 struct Hexahedron<8> {
400 typedef struct Hexahedron<8> base_cell_topology_type;
401 enum : int { dimension = 3,
402 numNode = 8,
403 numVert = 8,
404 numEdge = 12,
405 numFace = 6,
406 numIntr = 1 };
407 static constexpr double coords[8][3]{ {-1.0,-1.0,-1.0}, { 1.0,-1.0,-1.0}, { 1.0, 1.0,-1.0}, {-1.0, 1.0,-1.0},
408 {-1.0,-1.0, 1.0}, { 1.0,-1.0, 1.0}, { 1.0, 1.0, 1.0}, {-1.0, 1.0, 1.0} };
409
410 template<typename PointViewType>
411 KOKKOS_INLINE_FUNCTION
412 static bool
413 checkPointInclusion(const PointViewType &point,
414 const double threshold) {
415 const double minus_one = -1.0 - threshold, plus_one = 1.0 + threshold;
416 return ((minus_one <= point(0) && point(0) <= plus_one) &&
417 (minus_one <= point(1) && point(1) <= plus_one) &&
418 (minus_one <= point(2) && point(2) <= plus_one));
419 }
420 };
421
425 template<>
426 struct Hexahedron<20> {
427 typedef struct Hexahedron<8> base_cell_topology_type;
428 enum : int { dimension = 3,
429 numNode = 20,
430 numVert = 8,
431 numEdge = 12,
432 numFace = 6,
433 numIntr = 1 };
434 static constexpr double coords[20][3]{ {-1.0,-1.0,-1.0}, { 1.0,-1.0,-1.0}, { 1.0, 1.0,-1.0}, {-1.0, 1.0,-1.0},
435 {-1.0,-1.0, 1.0}, { 1.0,-1.0, 1.0}, { 1.0, 1.0, 1.0}, {-1.0, 1.0, 1.0},
436 { 0.0,-1.0,-1.0}, { 1.0, 0.0,-1.0}, { 0.0, 1.0,-1.0}, {-1.0, 0.0,-1.0},
437 {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0},
438 { 0.0,-1.0, 1.0}, { 1.0, 0.0, 1.0}, { 0.0, 1.0, 1.0}, {-1.0, 0.0, 1.0} };
439
440 template<typename PointViewType>
441 KOKKOS_INLINE_FUNCTION
442 static bool
443 checkPointInclusion(const PointViewType &point,
444 const double threshold) {
445 return base_cell_topology_type::checkPointInclusion(point, threshold);
446 }
447
448 };
449
453 template<>
454 struct Hexahedron<27> {
455 typedef struct Hexahedron<8> base_cell_topology_type;
456 enum : int { dimension = 3,
457 numNode = 27,
458 numVert = 8,
459 numEdge = 12,
460 numFace = 6,
461 numIntr = 1 };
462 static constexpr double coords[27][3]{ {-1.0,-1.0,-1.0}, { 1.0,-1.0,-1.0}, { 1.0, 1.0,-1.0}, {-1.0, 1.0,-1.0},
463 {-1.0,-1.0, 1.0}, { 1.0,-1.0, 1.0}, { 1.0, 1.0, 1.0}, {-1.0, 1.0, 1.0},
464 { 0.0,-1.0,-1.0}, { 1.0, 0.0,-1.0}, { 0.0, 1.0,-1.0}, {-1.0, 0.0,-1.0},
465 {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0},
466 { 0.0,-1.0, 1.0}, { 1.0, 0.0, 1.0}, { 0.0, 1.0, 1.0}, {-1.0, 0.0, 1.0},
467 { 0.0, 0.0, 0.0},
468 { 0.0, 0.0,-1.0}, { 0.0, 0.0, 1.0}, {-1.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, {0.0,-1.0, 0.0}, {0.0, 1.0, 0.0} };
469
470 template<typename PointViewType>
471 KOKKOS_INLINE_FUNCTION
472 static bool
473 checkPointInclusion(const PointViewType &point,
474 const double threshold) {
475 return base_cell_topology_type::checkPointInclusion(point, threshold);
476 }
477 };
478
479 // ---------------------------------------------------------------------------------------
480
481 template<int N>
482 struct Pyramid;
483
487 template<>
488 struct Pyramid<5> {
489 typedef struct Pyramid<5> base_cell_topology_type;
490 enum : int { dimension = 3,
491 numNode = 5,
492 numVert = 5,
493 numEdge = 8,
494 numFace = 5,
495 numIntr = 1 };
496 static constexpr double coords[5][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0}, { 0.0, 0.0, 1.0} };
497
498 template<typename PointViewType>
499 KOKKOS_INLINE_FUNCTION
500 static bool
501 checkPointInclusion(const PointViewType &point,
502 const double threshold) {
503 const double minus_one = -1.0 - threshold, plus_one = 1.0 + threshold, minus_zero = -threshold;
504 const double left = minus_one + point(2);
505 const double right = plus_one - point(2);
506 return ((left <= point(0) && point(0) <= right) &&
507 (left <= point(1) && point(1) <= right) &&
508 (minus_zero <= point(2) && point(2) <= plus_one));
509 }
510 };
511
515 template<>
516 struct Pyramid<13> {
517 typedef struct Pyramid<5> base_cell_topology_type;
518 enum : int { dimension = 3,
519 numNode = 13,
520 numVert = 5,
521 numEdge = 8,
522 numFace = 5,
523 numIntr = 1 };
524 static constexpr double coords[13][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0}, { 0.0, 0.0, 1.0},
525 { 0.0,-1.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, {-1.0, 0.0, 0.0},
526 {-0.5,-0.5, 0.5}, { 0.5,-0.5, 0.5}, { 0.5, 0.5, 0.5}, {-0.5, 0.5, 0.5} };
527
528 template<typename PointViewType>
529 KOKKOS_INLINE_FUNCTION
530 static bool
531 checkPointInclusion(const PointViewType &point,
532 const double threshold) {
533 return base_cell_topology_type::checkPointInclusion(point, threshold);
534 }
535 };
536
540 template<>
541 struct Pyramid<14> {
542 typedef struct Pyramid<5> base_cell_topology_type;
543 enum : int { dimension = 3,
544 numNode = 14,
545 numVert = 5,
546 numEdge = 8,
547 numFace = 5,
548 numIntr = 1 };
549 static constexpr double coords[14][3]{ {-1.0,-1.0, 0.0}, { 1.0,-1.0, 0.0}, { 1.0, 1.0, 0.0}, {-1.0, 1.0, 0.0}, { 0.0, 0.0, 1.0},
550 { 0.0,-1.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0}, {-1.0, 0.0, 0.0},
551 {-0.5,-0.5, 0.5}, { 0.5,-0.5, 0.5}, { 0.5, 0.5, 0.5}, {-0.5, 0.5, 0.5}, { 0.0, 0.0, 0.0} };
552
553 template<typename PointViewType>
554 KOKKOS_INLINE_FUNCTION
555 static bool
556 checkPointInclusion(const PointViewType &point,
557 const double threshold) {
558 return base_cell_topology_type::checkPointInclusion(point, threshold);
559 }
560 };
561
562 // ---------------------------------------------------------------------------------------
563
564 template<int N>
565 struct Wedge;
566
570 template<>
571 struct Wedge<6> {
572 typedef struct Wedge<6> base_cell_topology_type;
573 enum : int { dimension = 3,
574 numNode = 6,
575 numVert = 6,
576 numEdge = 9,
577 numFace = 5,
578 numIntr = 1 };
579 static constexpr double coords[6][3]{ { 0.0, 0.0,-1.0}, { 1.0, 0.0,-1.0}, { 0.0, 1.0,-1.0}, { 0.0, 0.0, 1.0}, { 1.0, 0.0, 1.0}, { 0.0, 1.0, 1.0} };
580
581 template<typename PointViewType>
582 KOKKOS_INLINE_FUNCTION
583 static bool
584 checkPointInclusion(const PointViewType &point,
585 const double threshold) {
586 const double minus_one = -1.0 - threshold, plus_one = 1.0 + threshold;
587 const double distance = max( max( -point(0), -point(1) ), point(0) + point(1) - 1 );
588 return (distance < threshold && (minus_one <= point(2) && point(2) <= plus_one));
589 }
590 };
591
595 template<>
596 struct Wedge<15> {
597 typedef struct Wedge<6> base_cell_topology_type;
598 enum : int { dimension = 3,
599 numNode = 15,
600 numVert = 6,
601 numEdge = 9,
602 numFace = 5,
603 numIntr = 1 };
604 static constexpr double coords[15][3]{ { 0.0, 0.0,-1.0}, { 1.0, 0.0,-1.0}, { 0.0, 1.0,-1.0}, { 0.0, 0.0, 1.0}, { 1.0, 0.0, 1.0}, { 0.0, 1.0, 1.0},
605 { 0.5, 0.0,-1.0}, { 0.5, 0.5,-1.0}, { 0.0, 0.5,-1.0}, { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0},
606 { 0.5, 0.0, 1.0}, { 0.5, 0.5, 1.0}, { 0.0, 0.5, 1.0} };
607
608 template<typename PointViewType>
609 KOKKOS_INLINE_FUNCTION
610 static bool
611 checkPointInclusion(const PointViewType &point,
612 const double threshold) {
613 return base_cell_topology_type::checkPointInclusion(point, threshold);
614 }
615 };
616
620 template<>
621 struct Wedge<18> {
622 typedef struct Wedge<6> base_cell_topology_type;
623 enum : int { dimension = 3,
624 numNode = 18,
625 numVert = 6,
626 numEdge = 9,
627 numFace = 5,
628 numIntr = 1 };
629 static constexpr double coords[18][3]{ { 0.0, 0.0,-1.0}, { 1.0, 0.0,-1.0}, { 0.0, 1.0,-1.0}, { 0.0, 0.0, 1.0}, { 1.0, 0.0, 1.0}, { 0.0, 1.0, 1.0},
630 { 0.5, 0.0,-1.0}, { 0.5, 0.5,-1.0}, { 0.0, 0.5,-1.0}, { 0.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 0.0, 1.0, 0.0},
631 { 0.5, 0.0, 1.0}, { 0.5, 0.5, 1.0}, { 0.0, 0.5, 1.0},
632 { 0.5, 0.0, 0.0}, { 0.5, 0.5, 0.0}, { 0.0, 0.5, 0.0} };
633
634
635 template<typename PointViewType>
636 KOKKOS_INLINE_FUNCTION
637 static bool
638 checkPointInclusion(const PointViewType &point,
639 const double threshold) {
640 return base_cell_topology_type::checkPointInclusion(point, threshold);
641 }
642 };
643
644 }
645}
646
647#endif
648
Header function for Intrepid2::Util class and other utility functions.