46 #ifndef Shards_BasicTopologies_hpp
47 #define Shards_BasicTopologies_hpp
50 #include <Shards_CellTopologyTraits.hpp>
63 #ifndef DOXYGEN_COMPILE
76 #ifndef DOXYGEN_COMPILE
91 template<
unsigned NodeCount = 2 >
struct Line {};
106 template<
unsigned NodeCount = 2 >
struct Beam {};
153 template<
unsigned NodeCount = 3 >
struct Triangle {};
174 template<>
const CellTopologyData * getCellTopologyData< ShellTriangle<3> >();
177 template<>
const CellTopologyData * getCellTopologyData< ShellTriangle<6> >();
205 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<4> >();
208 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<8> >();
211 template<>
const CellTopologyData * getCellTopologyData< Quadrilateral<9> >();
223 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<4> >();
226 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<8> >();
229 template<>
const CellTopologyData * getCellTopologyData< ShellQuadrilateral<9> >();
239 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<4> >();
242 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<10> >();
245 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<8> >();
248 template<>
const CellTopologyData * getCellTopologyData< Tetrahedron<11> >();
255 template<
unsigned NodeCount = 5 >
struct Pyramid {};
271 template<
unsigned NodeCount = 6 >
struct Wedge {};
368 template<>
const CellTopologyData * getCellTopologyData< Hexahedron<20> >();
371 template<>
const CellTopologyData * getCellTopologyData< Hexahedron<27> >();
376 #ifndef DOXYGEN_COMPILE
386 LineNodePermutation ;
388 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
389 CELL_PERMUTATION_POLARITY_NEGATIVE >
390 LineNodePermutationPolarity;
392 template<>
struct Line<2> :
public
394 TypeListEnd, TypeListEnd,
395 TypeListEnd, TypeListEnd,
397 LineNodePermutationPolarity >
400 template<>
struct Line<3> :
public
401 CellTopologyTraits< 1 , 2 , 3 ,
402 TypeListEnd, TypeListEnd,
403 TypeListEnd, TypeListEnd,
405 LineNodePermutationPolarity >
406 {
typedef Line<2> base ; };
411 MakeTypeList< LineNodeMapIdentity >::type BeamEdgeNodeMap ;
413 template<>
struct Beam<2> :
public
414 CellTopologyTraits< 2 , 2 , 2 ,
415 MakeTypeList< Line<2> >::type ,
417 {
typedef Beam<2> base ; };
419 template<>
struct Beam<3> :
public
420 CellTopologyTraits< 2 , 2 , 3 ,
421 MakeTypeList< Line<3> >::type ,
423 {
typedef Beam<2> base ; };
428 MakeTypeList< LineNodeMapIdentity , LineNodeMapReversed >::type
429 ShellLineEdgeNodeMap ;
431 template<>
struct ShellLine<2> :
public
432 CellTopologyTraits< 2 , 2 , 2 ,
433 MakeTypeList< Line<2> , Line<2> >::type ,
434 ShellLineEdgeNodeMap >
435 {
typedef ShellLine<2> base ; };
437 template<>
struct ShellLine<3> :
public
438 CellTopologyTraits< 2 , 2 , 3 ,
439 MakeTypeList< Line<3> , Line<3> >::type ,
440 ShellLineEdgeNodeMap >
441 {
typedef ShellLine<2> base ; };
447 typedef IndexList< 0, 1, 2, 3, 4, 5 > TriangleNodeMapIdentity ;
448 typedef IndexList< 2, 0, 1, 5, 3, 4 > TriangleNodeMapPositive1 ;
449 typedef IndexList< 1, 2, 0, 4, 5, 3 > TriangleNodeMapPositive2 ;
450 typedef IndexList< 0, 2, 1, 5, 4, 3 > TriangleNodeMapReversed0 ;
451 typedef IndexList< 2, 1, 0, 4, 3, 5 > TriangleNodeMapReversed1 ;
452 typedef IndexList< 1, 0, 2, 3, 5, 4 > TriangleNodeMapReversed2 ;
454 typedef MakeTypeList< TriangleNodeMapIdentity ,
455 TriangleNodeMapPositive1 ,
456 TriangleNodeMapPositive2 ,
457 TriangleNodeMapReversed0 ,
458 TriangleNodeMapReversed1 ,
459 TriangleNodeMapReversed2 >::type
460 TriangleNodePermutation ;
462 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
463 CELL_PERMUTATION_POLARITY_POSITIVE,
464 CELL_PERMUTATION_POLARITY_POSITIVE,
465 CELL_PERMUTATION_POLARITY_NEGATIVE,
466 CELL_PERMUTATION_POLARITY_NEGATIVE,
467 CELL_PERMUTATION_POLARITY_NEGATIVE >
468 TriangleNodePermutationPolarity;
470 typedef MakeTypeList< IndexList< 0 , 1 , 3 > ,
471 IndexList< 1 , 2 , 4 > ,
472 IndexList< 2 , 0 , 5 > >::type
473 TriangleEdgeNodeMap ;
475 template<>
struct Triangle<3> :
public
476 CellTopologyTraits< 2 , 3 , 3 ,
477 MakeTypeList< Line<2> ,
480 TriangleEdgeNodeMap ,
481 TypeListEnd , TypeListEnd ,
482 TriangleNodePermutation ,
483 TriangleNodePermutationPolarity >
484 {
typedef Triangle<3> base ; };
486 template<>
struct Triangle<6> :
public
487 CellTopologyTraits< 2 , 3 , 6 ,
488 MakeTypeList< Line<3> ,
491 TriangleEdgeNodeMap ,
492 TypeListEnd , TypeListEnd ,
493 TriangleNodePermutation ,
494 TriangleNodePermutationPolarity >
495 {
typedef Triangle<3> base ; };
497 typedef IndexList< 0, 1, 2, 3 > Triangle4_NodeMapIdentity ;
498 typedef IndexList< 2, 0, 1, 3 > Triangle4_NodeMapPositive1 ;
499 typedef IndexList< 1, 2, 0, 3 > Triangle4_NodeMapPositive2 ;
500 typedef IndexList< 0, 2, 1, 3 > Triangle4_NodeMapReversed0 ;
501 typedef IndexList< 2, 1, 0, 3 > Triangle4_NodeMapReversed1 ;
502 typedef IndexList< 1, 0, 2, 3 > Triangle4_NodeMapReversed2 ;
504 typedef MakeTypeList< Triangle4_NodeMapIdentity ,
505 Triangle4_NodeMapPositive1 ,
506 Triangle4_NodeMapPositive2 ,
507 Triangle4_NodeMapReversed0 ,
508 Triangle4_NodeMapReversed1 ,
509 Triangle4_NodeMapReversed2 >::type
510 Triangle4_NodePermutation ;
512 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
513 CELL_PERMUTATION_POLARITY_POSITIVE,
514 CELL_PERMUTATION_POLARITY_POSITIVE,
515 CELL_PERMUTATION_POLARITY_NEGATIVE,
516 CELL_PERMUTATION_POLARITY_NEGATIVE,
517 CELL_PERMUTATION_POLARITY_NEGATIVE >
518 Triangle4_NodePermutationPolarity;
520 template<>
struct Triangle<4> :
public
521 CellTopologyTraits< 2 , 3 , 4 ,
522 MakeTypeList< Line<2> ,
525 TriangleEdgeNodeMap ,
526 TypeListEnd , TypeListEnd ,
527 Triangle4_NodePermutation ,
528 Triangle4_NodePermutationPolarity >
529 {
typedef Triangle<3> base ; };
533 typedef MakeTypeList< TriangleNodeMapIdentity ,
534 TriangleNodeMapReversed0 >::type
535 ShellTriangleFaceNodeMap ;
537 template<>
struct ShellTriangle<3> :
public
538 CellTopologyTraits< 3 , 3 , 3 ,
539 MakeTypeList< Line<2> ,
542 TriangleEdgeNodeMap ,
543 MakeTypeList< Triangle<3> ,
544 Triangle<3> >::type ,
545 ShellTriangleFaceNodeMap >
546 {
typedef ShellTriangle<3> base ; };
548 template<>
struct ShellTriangle<6> :
public
549 CellTopologyTraits< 3 , 3 , 6 ,
550 MakeTypeList< Line<3> ,
553 TriangleEdgeNodeMap ,
554 MakeTypeList< Triangle<6> ,
555 Triangle<6> >::type ,
556 ShellTriangleFaceNodeMap >
557 {
typedef ShellTriangle<3> base ; };
564 typedef IndexList< 0, 1, 2, 3, 4, 5, 6, 7, 8 > QuadrilateralNodeMapIdentity ;
565 typedef IndexList< 3, 0, 1, 2, 7, 4, 5, 6, 8 > QuadrilateralNodeMapPositive1 ;
566 typedef IndexList< 2, 3, 0, 1, 6, 7, 4, 5, 8 > QuadrilateralNodeMapPositive2 ;
567 typedef IndexList< 1, 2, 3, 0, 5, 6, 7, 4, 8 > QuadrilateralNodeMapPositive3 ;
568 typedef IndexList< 0, 3, 2, 1, 7, 6, 5, 4, 8 > QuadrilateralNodeMapReversed0 ;
569 typedef IndexList< 3, 2, 1, 0, 6, 5, 4, 7, 8 > QuadrilateralNodeMapReversed1 ;
570 typedef IndexList< 2, 1, 0, 3, 5, 4, 7, 6, 8 > QuadrilateralNodeMapReversed2 ;
571 typedef IndexList< 1, 0, 3, 2, 4, 7, 6, 5, 8 > QuadrilateralNodeMapReversed3 ;
573 typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
574 QuadrilateralNodeMapPositive1 ,
575 QuadrilateralNodeMapPositive2 ,
576 QuadrilateralNodeMapPositive3 ,
577 QuadrilateralNodeMapReversed0 ,
578 QuadrilateralNodeMapReversed1 ,
579 QuadrilateralNodeMapReversed2 ,
580 QuadrilateralNodeMapReversed3 >::type
581 QuadrilateralNodePermutation ;
583 typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
584 CELL_PERMUTATION_POLARITY_POSITIVE,
585 CELL_PERMUTATION_POLARITY_POSITIVE,
586 CELL_PERMUTATION_POLARITY_POSITIVE,
587 CELL_PERMUTATION_POLARITY_NEGATIVE,
588 CELL_PERMUTATION_POLARITY_NEGATIVE,
589 CELL_PERMUTATION_POLARITY_NEGATIVE,
590 CELL_PERMUTATION_POLARITY_NEGATIVE >
591 QuadrilateralNodePermutationPolarity;
593 typedef MakeTypeList< IndexList< 0 , 1 , 4 > ,
594 IndexList< 1 , 2 , 5 > ,
595 IndexList< 2 , 3 , 6 > ,
596 IndexList< 3 , 0 , 7 > >::type
597 QuadrilateralEdgeNodeMap ;
599 template<>
struct Quadrilateral<4> :
public
600 CellTopologyTraits< 2 , 4 , 4 ,
601 MakeTypeList< Line<2> ,
605 QuadrilateralEdgeNodeMap ,
606 TypeListEnd , TypeListEnd ,
607 QuadrilateralNodePermutation ,
608 QuadrilateralNodePermutationPolarity >
609 {
typedef Quadrilateral<4> base ; };
611 template<>
struct Quadrilateral<8> :
public
612 CellTopologyTraits< 2 , 4 , 8 ,
613 MakeTypeList< Line<3> ,
617 QuadrilateralEdgeNodeMap ,
618 TypeListEnd , TypeListEnd ,
619 QuadrilateralNodePermutation ,
620 QuadrilateralNodePermutationPolarity >
621 {
typedef Quadrilateral<4> base ; };
623 template<>
struct Quadrilateral<9> :
public
624 CellTopologyTraits< 2 , 4 , 9 ,
625 MakeTypeList< Line<3> ,
629 QuadrilateralEdgeNodeMap ,
630 TypeListEnd , TypeListEnd ,
631 QuadrilateralNodePermutation ,
632 QuadrilateralNodePermutationPolarity >
633 {
typedef Quadrilateral<4> base ; };
637 typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
638 QuadrilateralNodeMapReversed0 >::type
639 ShellQuadrilateralFaceNodeMap ;
641 template<>
struct ShellQuadrilateral<4> :
public
642 CellTopologyTraits< 3 , 4 , 4 ,
643 MakeTypeList< Line<2> ,
647 QuadrilateralEdgeNodeMap ,
648 MakeTypeList< Quadrilateral<4> ,
649 Quadrilateral<4> >::type ,
650 ShellQuadrilateralFaceNodeMap >
651 {
typedef ShellQuadrilateral<4> base ; };
653 template<>
struct ShellQuadrilateral<8> :
public
654 CellTopologyTraits< 3 , 4 , 8 ,
655 MakeTypeList< Line<3> ,
659 QuadrilateralEdgeNodeMap ,
660 MakeTypeList< Quadrilateral<8> ,
661 Quadrilateral<8> >::type ,
662 ShellQuadrilateralFaceNodeMap >
663 {
typedef ShellQuadrilateral<4> base ; };
665 template<>
struct ShellQuadrilateral<9> :
public
666 CellTopologyTraits< 3 , 4 , 9 ,
667 MakeTypeList< Line<3> ,
671 QuadrilateralEdgeNodeMap ,
672 MakeTypeList< Quadrilateral<9> ,
673 Quadrilateral<9> >::type ,
674 ShellQuadrilateralFaceNodeMap >
675 {
typedef ShellQuadrilateral<4> base ; };
679 typedef MakeTypeList< IndexList< 0 , 1 , 4 > ,
680 IndexList< 1 , 2 , 5 > ,
681 IndexList< 2 , 0 , 6 > ,
682 IndexList< 0 , 3 , 7 > ,
683 IndexList< 1 , 3 , 8 > ,
684 IndexList< 2 , 3 , 9 > >::type
685 TetrahedronEdgeNodeMap ;
687 typedef MakeTypeList< IndexList< 0 , 1 , 3 , 4 , 8 , 7 > ,
688 IndexList< 1 , 2 , 3 , 5 , 9 , 8 > ,
689 IndexList< 0 , 3 , 2 , 7 , 9 , 6 > ,
690 IndexList< 0 , 2 , 1 , 6 , 5 , 4 > >::type
691 TetrahedronSideNodeMap ;
693 template<>
struct Tetrahedron<4> :
public
694 CellTopologyTraits< 3 , 4 , 4 ,
695 MakeTypeList< Line<2> ,
701 TetrahedronEdgeNodeMap ,
702 MakeTypeList< Triangle<3> ,
705 Triangle<3> >::type ,
706 TetrahedronSideNodeMap >
707 {
typedef Tetrahedron<4> base ; };
709 template<>
struct Tetrahedron<10> :
public
710 CellTopologyTraits< 3 , 4 , 10 ,
711 MakeTypeList< Line<3> ,
717 TetrahedronEdgeNodeMap ,
718 MakeTypeList< Triangle<6> ,
721 Triangle<6> >::type ,
722 TetrahedronSideNodeMap >
723 {
typedef Tetrahedron<4> base ; };
725 template<>
struct Tetrahedron<11> :
public
726 CellTopologyTraits< 3 , 4 , 11 ,
727 MakeTypeList< Line<3> ,
733 TetrahedronEdgeNodeMap ,
734 MakeTypeList< Triangle<6> ,
737 Triangle<6> >::type ,
738 TetrahedronSideNodeMap >
739 {
typedef Tetrahedron<4> base ; };
741 template<>
struct Tetrahedron<8> :
public
742 CellTopologyTraits< 3 , 4 , 8 ,
743 MakeTypeList< Line<2> ,
749 TetrahedronEdgeNodeMap ,
750 MakeTypeList< Triangle<4> ,
753 Triangle<4> >::type ,
754 TetrahedronSideNodeMap >
755 {
typedef Tetrahedron<4> base ; };
760 MakeTypeList< IndexList< 0 , 1 , 5 > ,
761 IndexList< 1 , 2 , 6 > ,
762 IndexList< 2 , 3 , 7 > ,
763 IndexList< 3 , 0 , 8 > ,
764 IndexList< 0 , 4 , 9 > ,
765 IndexList< 1 , 4 , 10 > ,
766 IndexList< 2 , 4 , 11 > ,
767 IndexList< 3 , 4 , 12 > >::type
771 MakeTypeList< IndexList< 0, 1, 4, 5, 10, 9 > ,
772 IndexList< 1, 2, 4, 6, 11, 10 > ,
773 IndexList< 2, 3, 4, 7, 12, 11 > ,
774 IndexList< 3, 0, 4, 8, 9, 12 > ,
775 IndexList< 0, 3, 2, 1, 8, 7, 6, 5, 13 > >::type
778 template<>
struct Pyramid<5> :
public
779 CellTopologyTraits< 3 , 5 , 5 ,
780 MakeTypeList< Line<2> ,
789 MakeTypeList< Triangle<3> ,
793 Quadrilateral<4> >::type ,
795 {
typedef Pyramid<5> base ; };
797 template<>
struct Pyramid<13> :
public
798 CellTopologyTraits< 3 , 5 , 13 ,
799 MakeTypeList< Line<3> ,
808 MakeTypeList< Triangle<6> ,
812 Quadrilateral<8> >::type ,
814 {
typedef Pyramid<5> base ; };
816 template<>
struct Pyramid<14> :
public
817 CellTopologyTraits< 3 , 5 , 14 ,
818 MakeTypeList< Line<3> ,
827 MakeTypeList< Triangle<6> ,
831 Quadrilateral<9> >::type ,
833 {
typedef Pyramid<5> base ; };
838 MakeTypeList< IndexList< 0 , 1 , 6 > ,
839 IndexList< 1 , 2 , 7 > ,
840 IndexList< 2 , 0 , 8 > ,
841 IndexList< 3 , 4 , 12 > ,
842 IndexList< 4 , 5 , 13 > ,
843 IndexList< 5 , 3 , 14 > ,
844 IndexList< 0 , 3 , 9 > ,
845 IndexList< 1 , 4 , 10 > ,
846 IndexList< 2 , 5 , 11 >
847 >::type WedgeEdgeNodeMap ;
850 MakeTypeList< IndexList< 0 , 1 , 4 , 3 , 6 , 10 , 12 , 9 , 15 > ,
851 IndexList< 1 , 2 , 5 , 4 , 7 , 11 , 13 , 10 , 16 > ,
852 IndexList< 0 , 3 , 5 , 2 , 9 , 14 , 11 , 8 , 17 > ,
853 IndexList< 0 , 2 , 1 , 8 , 7 , 6 > ,
854 IndexList< 3 , 4 , 5 , 12 , 13 , 14 >
855 >::type WedgeFaceNodeMap ;
857 template<>
struct Wedge<6> :
public
858 CellTopologyTraits< 3 , 6 , 6 ,
859 MakeTypeList< Line<2> ,
869 MakeTypeList< Quadrilateral<4> ,
873 Triangle<3> >::type ,
875 {
typedef Wedge<6> base ; };
877 template<>
struct Wedge<15> :
public
878 CellTopologyTraits< 3 , 6 , 15 ,
879 MakeTypeList< Line<3> ,
889 MakeTypeList< Quadrilateral<8> ,
893 Triangle<6> >::type ,
895 {
typedef Wedge<6> base ; };
897 template<>
struct Wedge<18> :
public
898 CellTopologyTraits< 3 , 6 , 18 ,
899 MakeTypeList< Line<3> ,
909 MakeTypeList< Quadrilateral<9> ,
913 Triangle<6> >::type ,
915 {
typedef Wedge<6> base ; };
920 MakeTypeList< IndexList< 0 , 1 , 8 > ,
921 IndexList< 1 , 2 , 9 > ,
922 IndexList< 2 , 3 , 10 > ,
923 IndexList< 3 , 0 , 11 > ,
924 IndexList< 4 , 5 , 16 > ,
925 IndexList< 5 , 6 , 17 > ,
926 IndexList< 6 , 7 , 18 > ,
927 IndexList< 7 , 4 , 19 > ,
928 IndexList< 0 , 4 , 12 > ,
929 IndexList< 1 , 5 , 13 > ,
930 IndexList< 2 , 6 , 14 > ,
931 IndexList< 3 , 7 , 15 > >::type
932 HexahedronEdgeNodeMap ;
935 MakeTypeList< IndexList< 0, 1, 5, 4, 8, 13, 16, 12, 25 > ,
936 IndexList< 1, 2, 6, 5, 9, 14, 17, 13, 24 > ,
937 IndexList< 2, 3, 7, 6, 10, 15, 18, 14, 26 > ,
938 IndexList< 0, 4, 7, 3, 12, 19, 15, 11, 23 > ,
939 IndexList< 0, 3, 2, 1, 11, 10, 9, 8, 21 > ,
940 IndexList< 4, 5, 6, 7, 16, 17, 18, 19, 22 > >::type
941 HexahedronFaceNodeMap ;
945 template<>
struct Hexahedron<8> :
public
946 CellTopologyTraits< 3 , 8 , 8 ,
947 MakeTypeList< Line<2> ,
959 HexahedronEdgeNodeMap ,
960 MakeTypeList< Quadrilateral<4> ,
965 Quadrilateral<4> >::type ,
966 HexahedronFaceNodeMap >
968 typedef Hexahedron<8> base ;
971 template<>
struct Hexahedron<20> :
public
972 CellTopologyTraits< 3 , 8 , 20 ,
973 MakeTypeList< Line<3> ,
985 HexahedronEdgeNodeMap ,
986 MakeTypeList< Quadrilateral<8> ,
991 Quadrilateral<8> >::type ,
992 HexahedronFaceNodeMap >
994 typedef Hexahedron<8> base ;
997 template<>
struct Hexahedron<27> :
public
998 CellTopologyTraits< 3 , 8 , 27 ,
999 MakeTypeList< Line<3> ,
1011 HexahedronEdgeNodeMap ,
1012 MakeTypeList< Quadrilateral<9> ,
1017 Quadrilateral<9> >::type ,
1018 HexahedronFaceNodeMap >
1020 typedef Hexahedron<8> base ;
1031 template<
unsigned NodeCount = 5 >
struct Pentagon {};
1039 MakeTypeList< IndexList< 0 , 1 > ,
1040 IndexList< 1 , 2 > ,
1041 IndexList< 2 , 3 > ,
1042 IndexList< 3 , 4 > ,
1043 IndexList< 4 , 0 > >::type PentagonEdgeNodeMap ;
1045 template<>
struct Pentagon<5> :
public
1046 CellTopologyTraits< 2 , 5 , 5 ,
1047 MakeTypeList< Line<2> ,
1052 PentagonEdgeNodeMap >
1054 typedef Pentagon<5> base ;
1063 template<
unsigned NodeCount = 6 >
struct Hexagon {};
1071 MakeTypeList< IndexList< 0 , 1 > ,
1072 IndexList< 1 , 2 > ,
1073 IndexList< 2 , 3 > ,
1074 IndexList< 3 , 4 > ,
1075 IndexList< 4 , 5 > ,
1076 IndexList< 5 , 0> >::type HexagonEdgeNodeMap ;
1078 template<>
struct Hexagon<6> :
public
1079 CellTopologyTraits< 2 , 6 , 6 ,
1080 MakeTypeList< Line<2> ,
1086 HexagonEdgeNodeMap >
1088 typedef Hexagon<6> base ;
1093 template<
class Traits >
struct BasicTopologyOf ;
1096 template<>
struct BasicTopologyOf< Node::Traits >
1097 {
typedef Node type ; };
1100 template<>
struct BasicTopologyOf< Particle::Traits >
1101 {
typedef Particle type ; };
1104 template<>
struct BasicTopologyOf< Line<2>::Traits >
1105 {
typedef Line<2> type ; };
1108 template<>
struct BasicTopologyOf< Line<3>::Traits >
1109 {
typedef Line<3> type ; };
1112 template<>
struct BasicTopologyOf< Beam<2>::Traits >
1113 {
typedef Beam<2> type ; };
1116 template<>
struct BasicTopologyOf< Beam<3>::Traits >
1117 {
typedef Beam<3> type ; };
1120 template<>
struct BasicTopologyOf< ShellLine<2>::Traits >
1121 {
typedef ShellLine<2> type ; };
1124 template<>
struct BasicTopologyOf< ShellLine<3>::Traits >
1125 {
typedef ShellLine<3> type ; };
1128 template<>
struct BasicTopologyOf< Triangle<3>::Traits >
1129 {
typedef Triangle<3> type ; };
1132 template<>
struct BasicTopologyOf< Triangle<6>::Traits >
1133 {
typedef Triangle<6> type ; };
1136 template<>
struct BasicTopologyOf< Triangle<4>::Traits >
1137 {
typedef Triangle<4> type ; };
1140 template<>
struct BasicTopologyOf< Quadrilateral<4>::Traits >
1141 {
typedef Quadrilateral<4> type ; };
1144 template<>
struct BasicTopologyOf< Quadrilateral<8>::Traits >
1145 {
typedef Quadrilateral<8> type ; };
1148 template<>
struct BasicTopologyOf< Quadrilateral<9>::Traits >
1149 {
typedef Quadrilateral<9> type ; };
1152 template<>
struct BasicTopologyOf< Pentagon<5>::Traits >
1153 {
typedef Pentagon<5> type ; };
1156 template<>
struct BasicTopologyOf< Hexagon<6>::Traits >
1157 {
typedef Hexagon<6> type ; };
1160 template<>
struct BasicTopologyOf< Tetrahedron<4>::Traits >
1161 {
typedef Tetrahedron<4> type ; };
1164 template<>
struct BasicTopologyOf< Tetrahedron<10>::Traits >
1165 {
typedef Tetrahedron<10> type ; };
1168 template<>
struct BasicTopologyOf< Tetrahedron<11>::Traits >
1169 {
typedef Tetrahedron<11> type ; };
1172 template<>
struct BasicTopologyOf< Tetrahedron<8>::Traits >
1173 {
typedef Tetrahedron<8> type ; };
1176 template<>
struct BasicTopologyOf< Pyramid<5>::Traits >
1177 {
typedef Tetrahedron<5> type ; };
1180 template<>
struct BasicTopologyOf< Pyramid<13>::Traits >
1181 {
typedef Tetrahedron<13> type ; };
1184 template<>
struct BasicTopologyOf< Pyramid<14>::Traits >
1185 {
typedef Tetrahedron<14> type ; };
1188 template<>
struct BasicTopologyOf< Wedge<6>::Traits >
1189 {
typedef Wedge<6> type ; };
1192 template<>
struct BasicTopologyOf< Wedge<15>::Traits >
1193 {
typedef Wedge<15> type ; };
1196 template<>
struct BasicTopologyOf< Wedge<18>::Traits >
1197 {
typedef Wedge<18> type ; };
1200 template<>
struct BasicTopologyOf< Hexahedron<8>::Traits >
1201 {
typedef Hexahedron<8> type ; };
1204 template<>
struct BasicTopologyOf< Hexahedron<20>::Traits >
1205 {
typedef Hexahedron<20> type ; };
1208 template<>
struct BasicTopologyOf< Hexahedron<27>::Traits >
1209 {
typedef Hexahedron<27> type ; };
1215 const unsigned * index_identity_array();
1237 #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 = 1, 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...