1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 // vi: set et ts=4 sw=2 sts=2: 3 #ifndef DUNE_ALBERTA_CAPABILITIES_HH 4 #define DUNE_ALBERTA_CAPABILITIES_HH 5 6 #include <dune/geometry/type.hh> 7 8 #include <dune/grid/common/capabilities.hh> 9 10 #if HAVE_ALBERTA 11 12 namespace Dune 13 { 14 15 // External Forward Declarations 16 // ----------------------------- 17 18 template< int dim, int dimworld > 19 class AlbertaGrid; 20 21 22 23 // Capabilities 24 // ------------ 25 26 namespace Capabilities 27 { 28 29 /** \brief AlbertaGrid has only one geometry type for codim 0 entities 30 \ingroup AlbertaGrid 31 */ 32 template< int dim, int dimworld > 33 struct hasSingleGeometryType< AlbertaGrid< dim, dimworld > > 34 { 35 static const bool v = true; 36 static const unsigned int topologyId = GeometryTypes::simplex(dim).id(); 37 }; 38 39 40 /** \brief AlbertaGrid has entities for all codimensions 41 * \ingroup AlbertaGrid 42 */ 43 template< int dim, int dimworld, int codim > 44 struct hasEntity< AlbertaGrid< dim, dimworld >, codim > 45 { 46 static const bool v = true; 47 }; 48 49 /** 50 * \brief AlbertaGrid can iterate over all codimensions 51 * 52 * \ingroup AlbertaGrid 53 **/ 54 template< int dim, int dimworld, int codim > 55 struct hasEntityIterator< AlbertaGrid< dim, dimworld >, codim > 56 { 57 static const bool v = true; 58 }; 59 60 /** \brief AlbertaGrid is not levelwise conforming 61 * (since it uses bisection) 62 * \ingroup AlbertaGrid 63 */ 64 template< int dim, int dimworld > 65 struct isLevelwiseConforming< AlbertaGrid< dim, dimworld > > 66 { 67 static const bool v = false; 68 }; 69 70 /** \brief AlbertaGrid is leafwise conforming 71 * \ingroup AlbertaGrid 72 */ 73 template< int dim, int dimworld > 74 struct isLeafwiseConforming< AlbertaGrid< dim, dimworld > > 75 { 76 static const bool v = true; 77 }; 78 79 /** \brief AlbertaGrid has backup and restore facilities 80 * \ingroup AlbertaGrid 81 */ 82 template< int dim, int dimworld > 83 struct hasBackupRestoreFacilities< AlbertaGrid< dim, dimworld > > 84 { 85 static const bool v = true; 86 }; 87 88 89 90 // non-standard capabilities 91 // ------------------------- 92 93 template< class Grid > 94 struct hasHierarchicIndexSet; 95 96 template< int dim, int dimworld > 97 struct hasHierarchicIndexSet< AlbertaGrid< dim, dimworld > > 98 { 99 static const bool v = true; 100 }; 101 102 } 103 104 } 105 106 #endif // #if HAVE_ALBERTA 107 108 #endif // #ifndef DUNE_ALBERTA_CAPABILITIES_HH 109