10 #ifndef Shards_BasicTopologies_hpp
11 #define Shards_BasicTopologies_hpp
14 #include <Shards_CellTopologyTraits.hpp>
27 #ifndef DOXYGEN_COMPILE
40 #ifndef DOXYGEN_COMPILE
55 template<
unsigned NodeCount = 2 >
struct Line {};
70 template<
unsigned NodeCount = 2 >
struct Beam {};
85 template<
unsigned NodeCount = 2 >
struct ShellLine {};
117 template<
unsigned NodeCount = 3 >
struct Triangle {};
138 template<>
const CellTopologyData * getCellTopologyData< ShellTriangle<3> >();
141 template<>
const CellTopologyData * getCellTopologyData< ShellTriangle<6> >();
169 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<4> >();
172 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<8> >();
175 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<9> >();
187 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<4> >();
190 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<8> >();
193 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<9> >();
203 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<4> >();
206 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<10> >();
209 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<8> >();
212 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<11> >();
219 template<
unsigned NodeCount = 5 >
struct Pyramid {};
235 template<
unsigned NodeCount = 6 >
struct Wedge {};
332 template<>
const CellTopologyData * getCellTopologyData< Hexahedron<20> >();
335 template<>
const CellTopologyData * getCellTopologyData< Hexahedron<27> >();
340 #ifndef DOXYGEN_COMPILE
350 LineNodePermutation ;
352 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
353 CELL_PERMUTATION_POLARITY_NEGATIVE >
354 LineNodePermutationPolarity;
356 template<>
struct Line<2> :
public
358 TypeListEnd, TypeListEnd,
359 TypeListEnd, TypeListEnd,
361 LineNodePermutationPolarity >
364 template<>
struct Line<3> :
public
365 CellTopologyTraits< 1 , 2 , 3 ,
366 TypeListEnd, TypeListEnd,
367 TypeListEnd, TypeListEnd,
369 LineNodePermutationPolarity >
370 {
typedef Line<2> base ; };
375 MakeTypeList< LineNodeMapIdentity >::type BeamEdgeNodeMap ;
377 template<>
struct Beam<2> :
public
378 CellTopologyTraits< 2 , 2 , 2 ,
379 MakeTypeList< Line<2> >::type ,
381 {
typedef Beam<2> base ; };
383 template<>
struct Beam<3> :
public
384 CellTopologyTraits< 2 , 2 , 3 ,
385 MakeTypeList< Line<3> >::type ,
387 {
typedef Beam<2> base ; };
392 MakeTypeList< LineNodeMapIdentity , LineNodeMapReversed >::type
393 ShellLineEdgeNodeMap ;
395 template<>
struct ShellLine<2> :
public
396 CellTopologyTraits< 2 , 2 , 2 ,
397 MakeTypeList< Line<2> , Line<2> >::type ,
398 ShellLineEdgeNodeMap >
399 {
typedef ShellLine<2> base ; };
401 template<>
struct ShellLine<3> :
public
402 CellTopologyTraits< 2 , 2 , 3 ,
403 MakeTypeList< Line<3> , Line<3> >::type ,
404 ShellLineEdgeNodeMap >
405 {
typedef ShellLine<2> base ; };
411 typedef IndexList< 0, 1, 2, 3, 4, 5 > TriangleNodeMapIdentity ;
412 typedef IndexList< 2, 0, 1, 5, 3, 4 > TriangleNodeMapPositive1 ;
413 typedef IndexList< 1, 2, 0, 4, 5, 3 > TriangleNodeMapPositive2 ;
414 typedef IndexList< 0, 2, 1, 5, 4, 3 > TriangleNodeMapReversed0 ;
415 typedef IndexList< 2, 1, 0, 4, 3, 5 > TriangleNodeMapReversed1 ;
416 typedef IndexList< 1, 0, 2, 3, 5, 4 > TriangleNodeMapReversed2 ;
418 typedef MakeTypeList< TriangleNodeMapIdentity ,
419 TriangleNodeMapPositive1 ,
420 TriangleNodeMapPositive2 ,
421 TriangleNodeMapReversed0 ,
422 TriangleNodeMapReversed1 ,
423 TriangleNodeMapReversed2 >::type
424 TriangleNodePermutation ;
426 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
427 CELL_PERMUTATION_POLARITY_POSITIVE,
428 CELL_PERMUTATION_POLARITY_POSITIVE,
429 CELL_PERMUTATION_POLARITY_NEGATIVE,
430 CELL_PERMUTATION_POLARITY_NEGATIVE,
431 CELL_PERMUTATION_POLARITY_NEGATIVE >
432 TriangleNodePermutationPolarity;
434 typedef MakeTypeList< IndexList< 0 , 1 , 3 > ,
435 IndexList< 1 , 2 , 4 > ,
436 IndexList< 2 , 0 , 5 > >::type
437 TriangleEdgeNodeMap ;
439 template<>
struct Triangle<3> :
public
440 CellTopologyTraits< 2 , 3 , 3 ,
441 MakeTypeList< Line<2> ,
444 TriangleEdgeNodeMap ,
445 TypeListEnd , TypeListEnd ,
446 TriangleNodePermutation ,
447 TriangleNodePermutationPolarity >
448 {
typedef Triangle<3> base ; };
450 template<>
struct Triangle<6> :
public
451 CellTopologyTraits< 2 , 3 , 6 ,
452 MakeTypeList< Line<3> ,
455 TriangleEdgeNodeMap ,
456 TypeListEnd , TypeListEnd ,
457 TriangleNodePermutation ,
458 TriangleNodePermutationPolarity >
459 {
typedef Triangle<3> base ; };
461 typedef IndexList< 0, 1, 2, 3 > Triangle4_NodeMapIdentity ;
462 typedef IndexList< 2, 0, 1, 3 > Triangle4_NodeMapPositive1 ;
463 typedef IndexList< 1, 2, 0, 3 > Triangle4_NodeMapPositive2 ;
464 typedef IndexList< 0, 2, 1, 3 > Triangle4_NodeMapReversed0 ;
465 typedef IndexList< 2, 1, 0, 3 > Triangle4_NodeMapReversed1 ;
466 typedef IndexList< 1, 0, 2, 3 > Triangle4_NodeMapReversed2 ;
468 typedef MakeTypeList< Triangle4_NodeMapIdentity ,
469 Triangle4_NodeMapPositive1 ,
470 Triangle4_NodeMapPositive2 ,
471 Triangle4_NodeMapReversed0 ,
472 Triangle4_NodeMapReversed1 ,
473 Triangle4_NodeMapReversed2 >::type
474 Triangle4_NodePermutation ;
476 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
477 CELL_PERMUTATION_POLARITY_POSITIVE,
478 CELL_PERMUTATION_POLARITY_POSITIVE,
479 CELL_PERMUTATION_POLARITY_NEGATIVE,
480 CELL_PERMUTATION_POLARITY_NEGATIVE,
481 CELL_PERMUTATION_POLARITY_NEGATIVE >
482 Triangle4_NodePermutationPolarity;
484 template<>
struct Triangle<4> :
public
485 CellTopologyTraits< 2 , 3 , 4 ,
486 MakeTypeList< Line<2> ,
489 TriangleEdgeNodeMap ,
490 TypeListEnd , TypeListEnd ,
491 Triangle4_NodePermutation ,
492 Triangle4_NodePermutationPolarity >
493 {
typedef Triangle<3> base ; };
497 typedef MakeTypeList< TriangleNodeMapIdentity ,
498 TriangleNodeMapReversed0 >::type
499 ShellTriangleFaceNodeMap ;
501 template<>
struct ShellTriangle<3> :
public
502 CellTopologyTraits< 3 , 3 , 3 ,
503 MakeTypeList< Line<2> ,
506 TriangleEdgeNodeMap ,
507 MakeTypeList< Triangle<3> ,
508 Triangle<3> >::type ,
509 ShellTriangleFaceNodeMap >
510 {
typedef ShellTriangle<3> base ; };
512 template<>
struct ShellTriangle<6> :
public
513 CellTopologyTraits< 3 , 3 , 6 ,
514 MakeTypeList< Line<3> ,
517 TriangleEdgeNodeMap ,
518 MakeTypeList< Triangle<6> ,
519 Triangle<6> >::type ,
520 ShellTriangleFaceNodeMap >
521 {
typedef ShellTriangle<3> base ; };
528 typedef IndexList< 0, 1, 2, 3, 4, 5, 6, 7, 8 > QuadrilateralNodeMapIdentity ;
529 typedef IndexList< 3, 0, 1, 2, 7, 4, 5, 6, 8 > QuadrilateralNodeMapPositive1 ;
530 typedef IndexList< 2, 3, 0, 1, 6, 7, 4, 5, 8 > QuadrilateralNodeMapPositive2 ;
531 typedef IndexList< 1, 2, 3, 0, 5, 6, 7, 4, 8 > QuadrilateralNodeMapPositive3 ;
532 typedef IndexList< 0, 3, 2, 1, 7, 6, 5, 4, 8 > QuadrilateralNodeMapReversed0 ;
533 typedef IndexList< 3, 2, 1, 0, 6, 5, 4, 7, 8 > QuadrilateralNodeMapReversed1 ;
534 typedef IndexList< 2, 1, 0, 3, 5, 4, 7, 6, 8 > QuadrilateralNodeMapReversed2 ;
535 typedef IndexList< 1, 0, 3, 2, 4, 7, 6, 5, 8 > QuadrilateralNodeMapReversed3 ;
537 typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
538 QuadrilateralNodeMapPositive1 ,
539 QuadrilateralNodeMapPositive2 ,
540 QuadrilateralNodeMapPositive3 ,
541 QuadrilateralNodeMapReversed0 ,
542 QuadrilateralNodeMapReversed1 ,
543 QuadrilateralNodeMapReversed2 ,
544 QuadrilateralNodeMapReversed3 >::type
545 QuadrilateralNodePermutation ;
547 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
548 CELL_PERMUTATION_POLARITY_POSITIVE,
549 CELL_PERMUTATION_POLARITY_POSITIVE,
550 CELL_PERMUTATION_POLARITY_POSITIVE,
551 CELL_PERMUTATION_POLARITY_NEGATIVE,
552 CELL_PERMUTATION_POLARITY_NEGATIVE,
553 CELL_PERMUTATION_POLARITY_NEGATIVE,
554 CELL_PERMUTATION_POLARITY_NEGATIVE >
555 QuadrilateralNodePermutationPolarity;
557 typedef MakeTypeList< IndexList< 0 , 1 , 4 > ,
558 IndexList< 1 , 2 , 5 > ,
559 IndexList< 2 , 3 , 6 > ,
560 IndexList< 3 , 0 , 7 > >::type
561 QuadrilateralEdgeNodeMap ;
563 template<>
struct Quadrilateral<4> :
public
564 CellTopologyTraits< 2 , 4 , 4 ,
565 MakeTypeList< Line<2> ,
569 QuadrilateralEdgeNodeMap ,
570 TypeListEnd , TypeListEnd ,
571 QuadrilateralNodePermutation ,
572 QuadrilateralNodePermutationPolarity >
573 {
typedef Quadrilateral<4> base ; };
575 template<>
struct Quadrilateral<8> :
public
576 CellTopologyTraits< 2 , 4 , 8 ,
577 MakeTypeList< Line<3> ,
581 QuadrilateralEdgeNodeMap ,
582 TypeListEnd , TypeListEnd ,
583 QuadrilateralNodePermutation ,
584 QuadrilateralNodePermutationPolarity >
585 {
typedef Quadrilateral<4> base ; };
587 template<>
struct Quadrilateral<9> :
public
588 CellTopologyTraits< 2 , 4 , 9 ,
589 MakeTypeList< Line<3> ,
593 QuadrilateralEdgeNodeMap ,
594 TypeListEnd , TypeListEnd ,
595 QuadrilateralNodePermutation ,
596 QuadrilateralNodePermutationPolarity >
597 {
typedef Quadrilateral<4> base ; };
601 typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
602 QuadrilateralNodeMapReversed0 >::type
603 ShellQuadrilateralFaceNodeMap ;
605 template<>
struct ShellQuadrilateral<4> :
public
606 CellTopologyTraits< 3 , 4 , 4 ,
607 MakeTypeList< Line<2> ,
611 QuadrilateralEdgeNodeMap ,
612 MakeTypeList< Quadrilateral<4> ,
613 Quadrilateral<4> >::type ,
614 ShellQuadrilateralFaceNodeMap >
615 {
typedef ShellQuadrilateral<4> base ; };
617 template<>
struct ShellQuadrilateral<8> :
public
618 CellTopologyTraits< 3 , 4 , 8 ,
619 MakeTypeList< Line<3> ,
623 QuadrilateralEdgeNodeMap ,
624 MakeTypeList< Quadrilateral<8> ,
625 Quadrilateral<8> >::type ,
626 ShellQuadrilateralFaceNodeMap >
627 {
typedef ShellQuadrilateral<4> base ; };
629 template<>
struct ShellQuadrilateral<9> :
public
630 CellTopologyTraits< 3 , 4 , 9 ,
631 MakeTypeList< Line<3> ,
635 QuadrilateralEdgeNodeMap ,
636 MakeTypeList< Quadrilateral<9> ,
637 Quadrilateral<9> >::type ,
638 ShellQuadrilateralFaceNodeMap >
639 {
typedef ShellQuadrilateral<4> base ; };
643 typedef MakeTypeList< IndexList< 0 , 1 , 4 > ,
644 IndexList< 1 , 2 , 5 > ,
645 IndexList< 2 , 0 , 6 > ,
646 IndexList< 0 , 3 , 7 > ,
647 IndexList< 1 , 3 , 8 > ,
648 IndexList< 2 , 3 , 9 > >::type
649 TetrahedronEdgeNodeMap ;
651 typedef MakeTypeList< IndexList< 0 , 1 , 3 , 4 , 8 , 7 > ,
652 IndexList< 1 , 2 , 3 , 5 , 9 , 8 > ,
653 IndexList< 0 , 3 , 2 , 7 , 9 , 6 > ,
654 IndexList< 0 , 2 , 1 , 6 , 5 , 4 > >::type
655 TetrahedronSideNodeMap ;
657 template<>
struct Tetrahedron<4> :
public
658 CellTopologyTraits< 3 , 4 , 4 ,
659 MakeTypeList< Line<2> ,
665 TetrahedronEdgeNodeMap ,
666 MakeTypeList< Triangle<3> ,
669 Triangle<3> >::type ,
670 TetrahedronSideNodeMap >
671 {
typedef Tetrahedron<4> base ; };
673 template<>
struct Tetrahedron<10> :
public
674 CellTopologyTraits< 3 , 4 , 10 ,
675 MakeTypeList< Line<3> ,
681 TetrahedronEdgeNodeMap ,
682 MakeTypeList< Triangle<6> ,
685 Triangle<6> >::type ,
686 TetrahedronSideNodeMap >
687 {
typedef Tetrahedron<4> base ; };
689 template<>
struct Tetrahedron<11> :
public
690 CellTopologyTraits< 3 , 4 , 11 ,
691 MakeTypeList< Line<3> ,
697 TetrahedronEdgeNodeMap ,
698 MakeTypeList< Triangle<6> ,
701 Triangle<6> >::type ,
702 TetrahedronSideNodeMap >
703 {
typedef Tetrahedron<4> base ; };
705 template<>
struct Tetrahedron<8> :
public
706 CellTopologyTraits< 3 , 4 , 8 ,
707 MakeTypeList< Line<2> ,
713 TetrahedronEdgeNodeMap ,
714 MakeTypeList< Triangle<4> ,
717 Triangle<4> >::type ,
718 TetrahedronSideNodeMap >
719 {
typedef Tetrahedron<4> base ; };
724 MakeTypeList< IndexList< 0 , 1 , 5 > ,
725 IndexList< 1 , 2 , 6 > ,
726 IndexList< 2 , 3 , 7 > ,
727 IndexList< 3 , 0 , 8 > ,
728 IndexList< 0 , 4 , 9 > ,
729 IndexList< 1 , 4 , 10 > ,
730 IndexList< 2 , 4 , 11 > ,
731 IndexList< 3 , 4 , 12 > >::type
735 MakeTypeList< IndexList< 0, 1, 4, 5, 10, 9 > ,
736 IndexList< 1, 2, 4, 6, 11, 10 > ,
737 IndexList< 2, 3, 4, 7, 12, 11 > ,
738 IndexList< 3, 0, 4, 8, 9, 12 > ,
739 IndexList< 0, 3, 2, 1, 8, 7, 6, 5, 13 > >::type
742 template<>
struct Pyramid<5> :
public
743 CellTopologyTraits< 3 , 5 , 5 ,
744 MakeTypeList< Line<2> ,
753 MakeTypeList< Triangle<3> ,
757 Quadrilateral<4> >::type ,
759 {
typedef Pyramid<5> base ; };
761 template<>
struct Pyramid<13> :
public
762 CellTopologyTraits< 3 , 5 , 13 ,
763 MakeTypeList< Line<3> ,
772 MakeTypeList< Triangle<6> ,
776 Quadrilateral<8> >::type ,
778 {
typedef Pyramid<5> base ; };
780 template<>
struct Pyramid<14> :
public
781 CellTopologyTraits< 3 , 5 , 14 ,
782 MakeTypeList< Line<3> ,
791 MakeTypeList< Triangle<6> ,
795 Quadrilateral<9> >::type ,
797 {
typedef Pyramid<5> base ; };
802 MakeTypeList< IndexList< 0 , 1 , 6 > ,
803 IndexList< 1 , 2 , 7 > ,
804 IndexList< 2 , 0 , 8 > ,
805 IndexList< 3 , 4 , 12 > ,
806 IndexList< 4 , 5 , 13 > ,
807 IndexList< 5 , 3 , 14 > ,
808 IndexList< 0 , 3 , 9 > ,
809 IndexList< 1 , 4 , 10 > ,
810 IndexList< 2 , 5 , 11 >
811 >::type WedgeEdgeNodeMap ;
814 MakeTypeList< IndexList< 0 , 1 , 4 , 3 , 6 , 10 , 12 , 9 , 15 > ,
815 IndexList< 1 , 2 , 5 , 4 , 7 , 11 , 13 , 10 , 16 > ,
816 IndexList< 0 , 3 , 5 , 2 , 9 , 14 , 11 , 8 , 17 > ,
817 IndexList< 0 , 2 , 1 , 8 , 7 , 6 > ,
818 IndexList< 3 , 4 , 5 , 12 , 13 , 14 >
819 >::type WedgeFaceNodeMap ;
821 template<>
struct Wedge<6> :
public
822 CellTopologyTraits< 3 , 6 , 6 ,
823 MakeTypeList< Line<2> ,
833 MakeTypeList< Quadrilateral<4> ,
837 Triangle<3> >::type ,
839 {
typedef Wedge<6> base ; };
841 template<>
struct Wedge<15> :
public
842 CellTopologyTraits< 3 , 6 , 15 ,
843 MakeTypeList< Line<3> ,
853 MakeTypeList< Quadrilateral<8> ,
857 Triangle<6> >::type ,
859 {
typedef Wedge<6> base ; };
861 template<>
struct Wedge<18> :
public
862 CellTopologyTraits< 3 , 6 , 18 ,
863 MakeTypeList< Line<3> ,
873 MakeTypeList< Quadrilateral<9> ,
877 Triangle<6> >::type ,
879 {
typedef Wedge<6> base ; };
884 MakeTypeList< IndexList< 0 , 1 , 8 > ,
885 IndexList< 1 , 2 , 9 > ,
886 IndexList< 2 , 3 , 10 > ,
887 IndexList< 3 , 0 , 11 > ,
888 IndexList< 4 , 5 , 16 > ,
889 IndexList< 5 , 6 , 17 > ,
890 IndexList< 6 , 7 , 18 > ,
891 IndexList< 7 , 4 , 19 > ,
892 IndexList< 0 , 4 , 12 > ,
893 IndexList< 1 , 5 , 13 > ,
894 IndexList< 2 , 6 , 14 > ,
895 IndexList< 3 , 7 , 15 > >::type
896 HexahedronEdgeNodeMap ;
899 MakeTypeList< IndexList< 0, 1, 5, 4, 8, 13, 16, 12, 25 > ,
900 IndexList< 1, 2, 6, 5, 9, 14, 17, 13, 24 > ,
901 IndexList< 2, 3, 7, 6, 10, 15, 18, 14, 26 > ,
902 IndexList< 0, 4, 7, 3, 12, 19, 15, 11, 23 > ,
903 IndexList< 0, 3, 2, 1, 11, 10, 9, 8, 21 > ,
904 IndexList< 4, 5, 6, 7, 16, 17, 18, 19, 22 > >::type
905 HexahedronFaceNodeMap ;
909 template<>
struct Hexahedron<8> :
public
910 CellTopologyTraits< 3 , 8 , 8 ,
911 MakeTypeList< Line<2> ,
923 HexahedronEdgeNodeMap ,
924 MakeTypeList< Quadrilateral<4> ,
929 Quadrilateral<4> >::type ,
930 HexahedronFaceNodeMap >
932 typedef Hexahedron<8> base ;
935 template<>
struct Hexahedron<20> :
public
936 CellTopologyTraits< 3 , 8 , 20 ,
937 MakeTypeList< Line<3> ,
949 HexahedronEdgeNodeMap ,
950 MakeTypeList< Quadrilateral<8> ,
955 Quadrilateral<8> >::type ,
956 HexahedronFaceNodeMap >
958 typedef Hexahedron<8> base ;
961 template<>
struct Hexahedron<27> :
public
962 CellTopologyTraits< 3 , 8 , 27 ,
963 MakeTypeList< Line<3> ,
975 HexahedronEdgeNodeMap ,
976 MakeTypeList< Quadrilateral<9> ,
981 Quadrilateral<9> >::type ,
982 HexahedronFaceNodeMap >
984 typedef Hexahedron<8> base ;
995 template<
unsigned NodeCount = 5 >
struct Pentagon {};
1003 MakeTypeList< IndexList< 0 , 1 > ,
1004 IndexList< 1 , 2 > ,
1005 IndexList< 2 , 3 > ,
1006 IndexList< 3 , 4 > ,
1007 IndexList< 4 , 0 > >::type PentagonEdgeNodeMap ;
1009 template<>
struct Pentagon<5> :
public
1010 CellTopologyTraits< 2 , 5 , 5 ,
1011 MakeTypeList< Line<2> ,
1016 PentagonEdgeNodeMap >
1018 typedef Pentagon<5> base ;
1027 template<
unsigned NodeCount = 6 >
struct Hexagon {};
1035 MakeTypeList< IndexList< 0 , 1 > ,
1036 IndexList< 1 , 2 > ,
1037 IndexList< 2 , 3 > ,
1038 IndexList< 3 , 4 > ,
1039 IndexList< 4 , 5 > ,
1040 IndexList< 5 , 0> >::type HexagonEdgeNodeMap ;
1042 template<>
struct Hexagon<6> :
public
1043 CellTopologyTraits< 2 , 6 , 6 ,
1044 MakeTypeList< Line<2> ,
1050 HexagonEdgeNodeMap >
1052 typedef Hexagon<6> base ;
1057 template<
class Traits >
struct BasicTopologyOf ;
1060 template<>
struct BasicTopologyOf< Node::Traits >
1061 {
typedef Node type ; };
1064 template<>
struct BasicTopologyOf< Particle::Traits >
1065 {
typedef Particle type ; };
1068 template<>
struct BasicTopologyOf< Line<2>::Traits >
1069 {
typedef Line<2> type ; };
1072 template<>
struct BasicTopologyOf< Line<3>::Traits >
1073 {
typedef Line<3> type ; };
1076 template<>
struct BasicTopologyOf< Beam<2>::Traits >
1077 {
typedef Beam<2> type ; };
1080 template<>
struct BasicTopologyOf< Beam<3>::Traits >
1081 {
typedef Beam<3> type ; };
1084 template<>
struct BasicTopologyOf< ShellLine<2>::Traits >
1085 {
typedef ShellLine<2> type ; };
1088 template<>
struct BasicTopologyOf< ShellLine<3>::Traits >
1089 {
typedef ShellLine<3> type ; };
1092 template<>
struct BasicTopologyOf< Triangle<3>::Traits >
1093 {
typedef Triangle<3> type ; };
1096 template<>
struct BasicTopologyOf< Triangle<6>::Traits >
1097 {
typedef Triangle<6> type ; };
1100 template<>
struct BasicTopologyOf< Triangle<4>::Traits >
1101 {
typedef Triangle<4> type ; };
1104 template<>
struct BasicTopologyOf< Quadrilateral<4>::Traits >
1105 {
typedef Quadrilateral<4> type ; };
1108 template<>
struct BasicTopologyOf< Quadrilateral<8>::Traits >
1109 {
typedef Quadrilateral<8> type ; };
1112 template<>
struct BasicTopologyOf< Quadrilateral<9>::Traits >
1113 {
typedef Quadrilateral<9> type ; };
1116 template<>
struct BasicTopologyOf< Pentagon<5>::Traits >
1117 {
typedef Pentagon<5> type ; };
1120 template<>
struct BasicTopologyOf< Hexagon<6>::Traits >
1121 {
typedef Hexagon<6> type ; };
1124 template<>
struct BasicTopologyOf< Tetrahedron<4>::Traits >
1125 {
typedef Tetrahedron<4> type ; };
1128 template<>
struct BasicTopologyOf< Tetrahedron<10>::Traits >
1129 {
typedef Tetrahedron<10> type ; };
1132 template<>
struct BasicTopologyOf< Tetrahedron<11>::Traits >
1133 {
typedef Tetrahedron<11> type ; };
1136 template<>
struct BasicTopologyOf< Tetrahedron<8>::Traits >
1137 {
typedef Tetrahedron<8> type ; };
1140 template<>
struct BasicTopologyOf< Pyramid<5>::Traits >
1141 {
typedef Tetrahedron<5> type ; };
1144 template<>
struct BasicTopologyOf< Pyramid<13>::Traits >
1145 {
typedef Tetrahedron<13> type ; };
1148 template<>
struct BasicTopologyOf< Pyramid<14>::Traits >
1149 {
typedef Tetrahedron<14> type ; };
1152 template<>
struct BasicTopologyOf< Wedge<6>::Traits >
1153 {
typedef Wedge<6> type ; };
1156 template<>
struct BasicTopologyOf< Wedge<15>::Traits >
1157 {
typedef Wedge<15> type ; };
1160 template<>
struct BasicTopologyOf< Wedge<18>::Traits >
1161 {
typedef Wedge<18> type ; };
1164 template<>
struct BasicTopologyOf< Hexahedron<8>::Traits >
1165 {
typedef Hexahedron<8> type ; };
1168 template<>
struct BasicTopologyOf< Hexahedron<20>::Traits >
1169 {
typedef Hexahedron<20> type ; };
1172 template<>
struct BasicTopologyOf< Hexahedron<27>::Traits >
1173 {
typedef Hexahedron<27> type ; };
1179 const unsigned * index_identity_array();
1201 #endif // Shards_BasicTopologies_hpp
TypeListClean< dirty_type >::type type
The constructed type list.
Topological traits: Dimension = 3, Sides = 5, Edges = 8, Vertices = 5, and Nodes = 5...
Topological traits: Dimension = 3, Sides = 5, Edges = 9, Vertices = 6, and Nodes = 6...
const CellTopologyData * getCellTopologyData< Particle >()
Singleton for Particle topology.
Topological traits: Dimension = 1, Vertices = 2, Nodes = 2 or 3.
Topological traits: Dimension = 3, Sides = 6, Edges = 12, Vertices = 8, and Nodes = 8...
Topological traits: Dimension = 2, Edges = 1, Vertices = 2, and Nodes = 2 or 3.
Compile-time traits for a cell topology.
Compile-time list of indices.
Topological traits: Dimension = 2, Edges = 3, Vertices = 3, and Nodes = 3 or 6.
Topological traits: Dimension = 0, Vertices = 0, Nodes = 0.
Topological traits: Dimension = 0, Vertices = 1, Nodes = 1.
Topological traits: Dimension = 2, Edges = 2, Vertices = 2, and Nodes = 2 or 3.
A simple 'C' struct of cell topology attributes.
const CellTopologyData * getCellTopologyData< Node >()
Singleton for Node topology.
Topological traits: Dimension = 2, Sides = 2, Edges = 4, Vertices = 4, and Nodes = 4...
Topological traits: Dimension = 3, Sides = 4, Edges = 6, Vertices = 4, and Nodes = 4 or 10...
Topological traits: Dimension = 2, Edges = 4, Vertices = 4, and Nodes = 4, 8, or 9.
std::ostream & operator<<(std::ostream &, const CellTopology &)
Overloaded << operator for CellTopologyData objects.
Topological traits: Dimension = 3, Sides = 2, Edges = 3, Vertices = 3, and Nodes = 3 or 6...