46#ifndef Shards_BasicTopologies_hpp
47#define Shards_BasicTopologies_hpp
50#include <Shards_CellTopologyTraits.hpp>
63#ifndef DOXYGEN_COMPILE
76#ifndef DOXYGEN_COMPILE
91template<
unsigned NodeCount = 2 >
struct Line {};
106template<
unsigned NodeCount = 2 >
struct Beam {};
153template<
unsigned NodeCount = 3 >
struct Triangle {};
255template<
unsigned NodeCount = 5 >
struct Pyramid {};
271template<
unsigned NodeCount = 6 >
struct Wedge {};
376#ifndef DOXYGEN_COMPILE
386 LineNodePermutation ;
388typedef IndexList< CELL_PERMUTATION_POLARITY_POSITIVE,
389 CELL_PERMUTATION_POLARITY_NEGATIVE >
390 LineNodePermutationPolarity;
392template<>
struct Line<2> :
public
394 TypeListEnd, TypeListEnd,
395 TypeListEnd, TypeListEnd,
397 LineNodePermutationPolarity >
400template<>
struct Line<3> :
public
401 CellTopologyTraits< 1 , 2 , 3 ,
402 TypeListEnd, TypeListEnd,
403 TypeListEnd, TypeListEnd,
405 LineNodePermutationPolarity >
406{
typedef Line<2> base ; };
413template<>
struct Beam<2> :
public
414 CellTopologyTraits< 2 , 2 , 2 ,
415 MakeTypeList< Line<2> >::type ,
417{
typedef Beam<2> base ; };
419template<>
struct Beam<3> :
public
420 CellTopologyTraits< 2 , 2 , 3 ,
421 MakeTypeList< Line<3> >::type ,
423{
typedef Beam<2> base ; };
429 ShellLineEdgeNodeMap ;
431template<>
struct ShellLine<2> :
public
432 CellTopologyTraits< 2 , 2 , 2 ,
433 MakeTypeList< Line<2> , Line<2> >::type ,
434 ShellLineEdgeNodeMap >
435{
typedef ShellLine<2> base ; };
437template<>
struct ShellLine<3> :
public
438 CellTopologyTraits< 2 , 2 , 3 ,
439 MakeTypeList< Line<3> , Line<3> >::type ,
440 ShellLineEdgeNodeMap >
441{
typedef ShellLine<2> base ; };
447typedef IndexList< 0, 1, 2, 3, 4, 5 > TriangleNodeMapIdentity ;
448typedef IndexList< 2, 0, 1, 5, 3, 4 > TriangleNodeMapPositive1 ;
449typedef IndexList< 1, 2, 0, 4, 5, 3 > TriangleNodeMapPositive2 ;
450typedef IndexList< 0, 2, 1, 5, 4, 3 > TriangleNodeMapReversed0 ;
451typedef IndexList< 2, 1, 0, 4, 3, 5 > TriangleNodeMapReversed1 ;
452typedef IndexList< 1, 0, 2, 3, 5, 4 > TriangleNodeMapReversed2 ;
454typedef MakeTypeList< TriangleNodeMapIdentity ,
455 TriangleNodeMapPositive1 ,
456 TriangleNodeMapPositive2 ,
457 TriangleNodeMapReversed0 ,
458 TriangleNodeMapReversed1 ,
459 TriangleNodeMapReversed2 >::type
460 TriangleNodePermutation ;
462typedef 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;
470typedef MakeTypeList< IndexList< 0 , 1 , 3 > ,
471 IndexList< 1 , 2 , 4 > ,
472 IndexList< 2 , 0 , 5 > >::type
473 TriangleEdgeNodeMap ;
475template<>
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 ; };
486template<>
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 ; };
497typedef IndexList< 0, 1, 2, 3 > Triangle4_NodeMapIdentity ;
498typedef IndexList< 2, 0, 1, 3 > Triangle4_NodeMapPositive1 ;
499typedef IndexList< 1, 2, 0, 3 > Triangle4_NodeMapPositive2 ;
500typedef IndexList< 0, 2, 1, 3 > Triangle4_NodeMapReversed0 ;
501typedef IndexList< 2, 1, 0, 3 > Triangle4_NodeMapReversed1 ;
502typedef IndexList< 1, 0, 2, 3 > Triangle4_NodeMapReversed2 ;
504typedef MakeTypeList< Triangle4_NodeMapIdentity ,
505 Triangle4_NodeMapPositive1 ,
506 Triangle4_NodeMapPositive2 ,
507 Triangle4_NodeMapReversed0 ,
508 Triangle4_NodeMapReversed1 ,
509 Triangle4_NodeMapReversed2 >::type
510 Triangle4_NodePermutation ;
512typedef 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;
520template<>
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 ; };
533typedef MakeTypeList< TriangleNodeMapIdentity ,
534 TriangleNodeMapReversed0 >::type
535 ShellTriangleFaceNodeMap ;
537template<>
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 ; };
548template<>
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 ; };
564typedef IndexList< 0, 1, 2, 3, 4, 5, 6, 7, 8 > QuadrilateralNodeMapIdentity ;
565typedef IndexList< 3, 0, 1, 2, 7, 4, 5, 6, 8 > QuadrilateralNodeMapPositive1 ;
566typedef IndexList< 2, 3, 0, 1, 6, 7, 4, 5, 8 > QuadrilateralNodeMapPositive2 ;
567typedef IndexList< 1, 2, 3, 0, 5, 6, 7, 4, 8 > QuadrilateralNodeMapPositive3 ;
568typedef IndexList< 0, 3, 2, 1, 7, 6, 5, 4, 8 > QuadrilateralNodeMapReversed0 ;
569typedef IndexList< 3, 2, 1, 0, 6, 5, 4, 7, 8 > QuadrilateralNodeMapReversed1 ;
570typedef IndexList< 2, 1, 0, 3, 5, 4, 7, 6, 8 > QuadrilateralNodeMapReversed2 ;
571typedef IndexList< 1, 0, 3, 2, 4, 7, 6, 5, 8 > QuadrilateralNodeMapReversed3 ;
573typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
574 QuadrilateralNodeMapPositive1 ,
575 QuadrilateralNodeMapPositive2 ,
576 QuadrilateralNodeMapPositive3 ,
577 QuadrilateralNodeMapReversed0 ,
578 QuadrilateralNodeMapReversed1 ,
579 QuadrilateralNodeMapReversed2 ,
580 QuadrilateralNodeMapReversed3 >::type
581 QuadrilateralNodePermutation ;
583typedef 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;
593typedef MakeTypeList< IndexList< 0 , 1 , 4 > ,
594 IndexList< 1 , 2 , 5 > ,
595 IndexList< 2 , 3 , 6 > ,
596 IndexList< 3 , 0 , 7 > >::type
597 QuadrilateralEdgeNodeMap ;
599template<>
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 ; };
611template<>
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 ; };
623template<>
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 ; };
637typedef MakeTypeList< QuadrilateralNodeMapIdentity ,
638 QuadrilateralNodeMapReversed0 >::type
639 ShellQuadrilateralFaceNodeMap ;
641template<>
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 ; };
653template<>
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 ; };
665template<>
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 ; };
679typedef 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 ;
687typedef 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 ;
693template<>
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 ; };
709template<>
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 ; };
725template<>
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 ; };
741template<>
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
778template<>
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 ; };
797template<>
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 ; };
816template<>
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 ;
857template<>
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 ; };
877template<>
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 ; };
897template<>
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 ;
945template<>
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 ;
971template<>
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 ;
997template<>
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 ;
1031template<
unsigned NodeCount = 5 >
struct Pentagon {};
1039MakeTypeList< IndexList< 0 , 1 > ,
1040 IndexList< 1 , 2 > ,
1041 IndexList< 2 , 3 > ,
1042 IndexList< 3 , 4 > ,
1043 IndexList< 4 , 0 > >::type PentagonEdgeNodeMap ;
1045template<>
struct Pentagon<5> :
public
1046CellTopologyTraits< 2 , 5 , 5 ,
1047 MakeTypeList< Line<2> ,
1052 PentagonEdgeNodeMap >
1054 typedef Pentagon<5> base ;
1063template<
unsigned NodeCount = 6 >
struct Hexagon {};
1071MakeTypeList< 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 ;
1078template<>
struct Hexagon<6> :
public
1079CellTopologyTraits< 2 , 6 , 6 ,
1080 MakeTypeList< Line<2> ,
1086 HexagonEdgeNodeMap >
1088 typedef Hexagon<6> base ;
1093template<
class Traits >
struct BasicTopologyOf ;
1096template<>
struct BasicTopologyOf< Node::Traits >
1097{
typedef Node type ; };
1100template<>
struct BasicTopologyOf< Particle::Traits >
1101{
typedef Particle type ; };
1104template<>
struct BasicTopologyOf< Line<2>::Traits >
1105{
typedef Line<2> type ; };
1108template<>
struct BasicTopologyOf< Line<3>::Traits >
1109{
typedef Line<3> type ; };
1112template<>
struct BasicTopologyOf< Beam<2>::Traits >
1113{
typedef Beam<2> type ; };
1116template<>
struct BasicTopologyOf< Beam<3>::Traits >
1117{
typedef Beam<3> type ; };
1120template<>
struct BasicTopologyOf< ShellLine<2>::Traits >
1121{
typedef ShellLine<2> type ; };
1124template<>
struct BasicTopologyOf< ShellLine<3>::Traits >
1125{
typedef ShellLine<3> type ; };
1128template<>
struct BasicTopologyOf< Triangle<3>::Traits >
1129{
typedef Triangle<3> type ; };
1132template<>
struct BasicTopologyOf< Triangle<6>::Traits >
1133{
typedef Triangle<6> type ; };
1136template<>
struct BasicTopologyOf< Triangle<4>::Traits >
1137{
typedef Triangle<4> type ; };
1140template<>
struct BasicTopologyOf< Quadrilateral<4>::Traits >
1141{
typedef Quadrilateral<4> type ; };
1144template<>
struct BasicTopologyOf< Quadrilateral<8>::Traits >
1145{
typedef Quadrilateral<8> type ; };
1148template<>
struct BasicTopologyOf< Quadrilateral<9>::Traits >
1149{
typedef Quadrilateral<9> type ; };
1152template<>
struct BasicTopologyOf< Pentagon<5>::Traits >
1153{
typedef Pentagon<5> type ; };
1156template<>
struct BasicTopologyOf< Hexagon<6>::Traits >
1157{
typedef Hexagon<6> type ; };
1160template<>
struct BasicTopologyOf< Tetrahedron<4>::Traits >
1161{
typedef Tetrahedron<4> type ; };
1164template<>
struct BasicTopologyOf< Tetrahedron<10>::Traits >
1165{
typedef Tetrahedron<10> type ; };
1168template<>
struct BasicTopologyOf< Tetrahedron<11>::Traits >
1169{
typedef Tetrahedron<11> type ; };
1172template<>
struct BasicTopologyOf< Tetrahedron<8>::Traits >
1173{
typedef Tetrahedron<8> type ; };
1176template<>
struct BasicTopologyOf< Pyramid<5>::Traits >
1177{
typedef Tetrahedron<5> type ; };
1180template<>
struct BasicTopologyOf< Pyramid<13>::Traits >
1181{
typedef Tetrahedron<13> type ; };
1184template<>
struct BasicTopologyOf< Pyramid<14>::Traits >
1185{
typedef Tetrahedron<14> type ; };
1188template<>
struct BasicTopologyOf< Wedge<6>::Traits >
1189{
typedef Wedge<6> type ; };
1192template<>
struct BasicTopologyOf< Wedge<15>::Traits >
1193{
typedef Wedge<15> type ; };
1196template<>
struct BasicTopologyOf< Wedge<18>::Traits >
1197{
typedef Wedge<18> type ; };
1200template<>
struct BasicTopologyOf< Hexahedron<8>::Traits >
1201{
typedef Hexahedron<8> type ; };
1204template<>
struct BasicTopologyOf< Hexahedron<20>::Traits >
1205{
typedef Hexahedron<20> type ; };
1208template<>
struct BasicTopologyOf< Hexahedron<27>::Traits >
1209{
typedef Hexahedron<27> type ; };
1215const unsigned * index_identity_array();
const CellTopologyData * getCellTopologyData< Particle >()
Singleton for Particle topology.
std::ostream & operator<<(std::ostream &, const CellTopology &)
Overloaded << operator for CellTopologyData objects.
const CellTopologyData * getCellTopologyData< Node >()
Singleton for Node topology.
A simple 'C' struct of cell topology attributes.
Topological traits: Dimension = 2, Edges = 1, Vertices = 2, and Nodes = 2 or 3.
Compile-time traits for a cell topology.
Topological traits: Dimension = 3, Sides = 6, Edges = 12, Vertices = 8, and Nodes = 8,...
Compile-time list of indices.
Topological traits: Dimension = 1, Vertices = 2, Nodes = 2 or 3.
TypeListClean< dirty_type >::type type
The constructed type list.
Topological traits: Dimension = 0, Vertices = 0, Nodes = 0.
Topological traits: Dimension = 0, Vertices = 1, Nodes = 1.
Topological traits: Dimension = 3, Sides = 5, Edges = 8, Vertices = 5, and Nodes = 5,...
Topological traits: Dimension = 2, Edges = 4, Vertices = 4, and Nodes = 4, 8, or 9.
Topological traits: Dimension = 2, Edges = 2, Vertices = 2, and Nodes = 2 or 3.
Topological traits: Dimension = 2, Sides = 2, Edges = 4, Vertices = 4, and Nodes = 4,...
Topological traits: Dimension = 3, Sides = 2, Edges = 3, Vertices = 3, and Nodes = 3 or 6.
Topological traits: Dimension = 3, Sides = 4, Edges = 6, Vertices = 4, and Nodes = 4 or 10.
Topological traits: Dimension = 2, Edges = 3, Vertices = 3, and Nodes = 3 or 6.
Topological traits: Dimension = 3, Sides = 5, Edges = 9, Vertices = 6, and Nodes = 6,...