dune-grid  2.3beta2
alugrid/common/capabilities.hh
Go to the documentation of this file.
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_ALUGRID_CAPABILITIES_HH
4 #define DUNE_ALUGRID_CAPABILITIES_HH
5 
6 // only include this code, if ENABLE_ALUGRID is defined
7 #if HAVE_ALUGRID
8 
12 #include <dune/geometry/genericgeometry/topologytypes.hh>
13 
19 namespace Dune
20 {
21 
22  namespace Capabilities
23  {
24 
25  // Capabilities for ALUGrid
26  // -------------------------------
27 
31  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, class Comm >
32  struct hasSingleGeometryType< ALUGrid< dim, dimworld, eltype, refinementtype, Comm > >
33  {
34  static const bool v = true;
35  static const unsigned int topologyId = (eltype == cube) ?
36  GenericGeometry :: CubeTopology< dim > :: type :: id :
37  GenericGeometry :: SimplexTopology< dim > :: type :: id ;
38  };
39 
43  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, class Comm, int cdim >
44  struct hasEntity< ALUGrid< dim, dimworld, eltype, refinementtype, Comm >, cdim >
45  {
46  static const bool v = true;
47  };
48 
52  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype >
53  struct isParallel< ALUGrid< dim, dimworld, eltype, refinementtype, No_Comm > >
54  {
55  static const bool v = false;
56  };
57 
61 #if ALU3DGRID_PARALLEL
62  template< ALUGridElementType eltype, ALUGridRefinementType refinementtype >
63  struct isParallel< ALUGrid< 3, 3, eltype, refinementtype, MPI_Comm > >
64  {
65  static const bool v = true;
66  };
67 #endif
68 
72  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, int codim >
73  struct canCommunicate< ALUGrid< dim, dimworld, eltype, refinementtype, No_Comm >, codim >
74  {
75  static const bool v = false;
76  };
77 
81 #if ALU3DGRID_PARALLEL
82  template< ALUGridElementType eltype, ALUGridRefinementType refinementtype, int codim >
83  struct canCommunicate< ALUGrid< 3, 3, eltype, refinementtype, MPI_Comm >, codim >
84  {
85  static const bool v = true;
86  };
87 #endif
88 
92  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, class Comm >
93  struct isLevelwiseConforming< ALUGrid< dim, dimworld, eltype, refinementtype, Comm > >
94  {
95  static const bool v = refinementtype == nonconforming;
96  };
97 
101  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, class Comm >
102  struct isLeafwiseConforming< ALUGrid< dim, dimworld, eltype, refinementtype, Comm > >
103  {
104  static const bool v = refinementtype == conforming ;
105  };
106 
110  template< int dim, int dimworld, ALUGridElementType eltype, ALUGridRefinementType refinementtype, class Comm >
111  struct hasBackupRestoreFacilities< ALUGrid< dim, dimworld, eltype, refinementtype, Comm > >
112  {
113  static const bool v = true;
114  };
115 
116  } // end namespace Capabilities
117 
118 } //end namespace Dune
119 
120 #endif // #if HAVE_ALUGRID
121 
122 #endif // #ifdef DUNE_ALUGRID_CAPABILITIES_HH