// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- // vi: set et ts=4 sw=2 sts=2: #ifndef DUNE_CURVED_SURFACE_GRID_GRIDFAMILY_HH #define DUNE_CURVED_SURFACE_GRID_GRIDFAMILY_HH #include #include #include #include #include #include #include #include #include #include #include namespace Dune { /** \brief namespace containing the implementations of CurvedSurfaceGrid * \ingroup CurvedGeo */ namespace CGeo { // GridFamily // ---------- template< class HG, class CF, int order, class Allocator > struct GridFamily { struct Traits { using Grid = CurvedSurfaceGrid; using HostGrid = HG; using CoordFunction = CF; using ctype = typename HostGrid::ctype; static const int dimension = HostGrid::dimension; static const int dimensionworld = CoordFunction::dimRange; using LeafIntersection = Dune::Intersection>; using LevelIntersection = Dune::Intersection>; using LeafIntersectionIterator = Dune::IntersectionIterator, CGeo::Intersection >; using LevelIntersectionIterator = Dune::IntersectionIterator, CGeo::Intersection >; using HierarchicIterator = Dune::EntityIterator<0, const Grid, CGeo::HierarchicIterator>; template< int codim > struct Codim { template < int mydim, int cdim, class GridImpl > using GeometryImplTemplate = Dune::LagrangeCurvedGeometry; // geometry types using GeometryImpl = GeometryImplTemplate; using Geometry = Dune::Geometry; using LocalGeometry = typename HostGrid::template Codim::LocalGeometry; // entity types using EntityImpl = CGeo::Entity; using Entity = Dune::Entity; using EntitySeed = Dune::EntitySeed >; template< PartitionIteratorType pitype > struct Partition { using LeafIteratorImp = CGeo::Iterator; using LeafIterator = Dune::EntityIterator; using LevelIteratorImp = CGeo::Iterator; using LevelIterator = Dune::EntityIterator; }; using LeafIterator = typename Partition< All_Partition >::LeafIterator; using LevelIterator = typename Partition< All_Partition >::LevelIterator; }; // index-sets using LeafIndexSet = CGeo::IndexSet; using LevelIndexSet = CGeo::IndexSet; // id-sets using GlobalIdSet = CGeo::IdSet; using LocalIdSet = CGeo::IdSet; using CollectiveCommunication = typename HostGrid::Traits::CollectiveCommunication; // grid views using LeafGridView = Dune::GridView>; using LevelGridView = Dune::GridView>; }; }; } // namespace CGeo } // namespace Dune #endif // DUNE_CURVED_SURFACE_GRID_GRIDFAMILY_HH