Dune Core Modules (unstable)

gridfamily.hh
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2 // SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 // vi: set et ts=4 sw=2 sts=2:
5 #ifndef DUNE_ALBERTAGRID_GRIDFAMILTY_HH
6 #define DUNE_ALBERTAGRID_GRIDFAMILTY_HH
7 
14 
15 #include <dune/grid/common/entity.hh>
17 #include <dune/grid/common/intersection.hh>
18 #include <dune/grid/common/intersectioniterator.hh>
19 #include <dune/grid/common/entityiterator.hh>
20 
21 #include <dune/grid/albertagrid/misc.hh>
22 #include <dune/grid/albertagrid/gridview.hh>
24 
25 #if HAVE_ALBERTA
26 
27 namespace Dune
28 {
29 
30  // External Forward Declarations
31  // -----------------------------
32 
33  template< int dim, int dimworld >
34  class AlbertaGrid;
35 
36  template< int codim, int dim, class GridImp >
37  class AlbertaGridEntity;
38 
39  template< int codim, class GridImp >
40  class AlbertaGridEntityPointer;
41 
42  template< int codim, class Grid >
43  class AlbertaGridEntitySeed;
44 
45  template< int mydim, int cdim, class GridImp >
46  class AlbertaGridGeometry;
47 
48  template< int mydim, int cdim, class GridImp >
49  class AlbertaGridGlobalGeometry;
50 
51  template< int dim, int dimworld >
52  class AlbertaGridHierarchicIndexSet;
53 
54  template< class GridImp >
55  class AlbertaGridHierarchicIterator;
56 
57  template< class GridImp >
58  class AlbertaGridLeafIntersection;
59 
60  template< class GridImp >
61  class AlbertaGridLeafIntersectionIterator;
62 
63  template< int dim, int dimworld >
64  class AlbertaGridIdSet;
65 
66  template< int dim, int dimworld >
67  class AlbertaGridIndexSet;
68 
69  template< int codim, PartitionIteratorType pitype, class GridImp >
70  class AlbertaGridLeafIterator;
71 
72  template< int codim, PartitionIteratorType pitype, class GridImp >
73  class AlbertaGridLevelIterator;
74 
75 
76 
77 
78  // AlbertaGridFamily
79  // -----------------
80 
81  template <int dim, int dimworld>
82  struct AlbertaGridFamily
83  {
84  typedef AlbertaGrid< dim, dimworld > GridImp;
85 
86  typedef Alberta::Real ctype;
87 
88  static const int dimension = dim;
89  static const int dimensionworld = dimworld;
90 
91  typedef AlbertaGridIndexSet< dim, dimworld > LevelIndexSetImp;
92  typedef AlbertaGridIndexSet< dim, dimworld > LeafIndexSetImp;
93 
94  typedef AlbertaGridIdSet< dim, dimworld > IdSetImp;
95  typedef unsigned int IdType;
96 
97  struct Traits
98  {
99  typedef GridImp Grid;
100 
104  < const GridImp, AlbertaGridLeafIntersectionIterator< const GridImp >, AlbertaGridLeafIntersection< const GridImp > >
105  LeafIntersectionIterator;
107  < const GridImp, AlbertaGridLeafIntersectionIterator< const GridImp >, AlbertaGridLeafIntersection< const GridImp > >
108  LevelIntersectionIterator;
109 
111 
112  typedef IdType GlobalIdType;
113  typedef IdType LocalIdType;
114 
115  template< int cd >
116  struct Codim
117  {
118  typedef AlbertaGridGlobalGeometry< dim-cd, dimworld, const Grid > GeometryImpl;
119  typedef AlbertaGridGeometry< dim-cd, dim, const Grid > LocalGeometryImpl;
120  typedef Dune::Geometry< dim-cd, dimworld, const Grid, AlbertaGridGlobalGeometry > Geometry;
121  typedef Dune::Geometry< dim-cd, dim, const Grid, LocalGeometryReference > LocalGeometry;
122 
123  typedef AlbertaGridEntity< cd, dim, const GridImp > EntityImpl;
125 
127 
128  template <PartitionIteratorType pitype>
129  struct Partition
130  {
133  };
134 
135  typedef typename Partition< All_Partition >::LevelIterator LevelIterator;
136  typedef typename Partition< All_Partition >::LeafIterator LeafIterator;
137  };
138 
141 
142  typedef IndexSet< GridImp, LevelIndexSetImp, int, std::array< GeometryType, 1 > > LevelIndexSet;
143  typedef IndexSet< GridImp, LeafIndexSetImp, int, std::array< GeometryType, 1 > > LeafIndexSet;
144  typedef AlbertaGridHierarchicIndexSet< dim, dimworld > HierarchicIndexSet;
145  typedef IdSet<GridImp,IdSetImp,IdType> GlobalIdSet;
146  typedef IdSet<GridImp,IdSetImp,IdType> LocalIdSet;
147 
148  typedef Dune::Communication< No_Comm > Communication;
149  };
150  };
151 
152 }
153 
154 #endif // #if HAVE_ALBERTA
155 
156 #endif // #ifndef DUNE_ALBERTAGRID_GRIDFAMILTY_HH
interface class for an iterator over grid entities
Definition: entityiterator.hh:32
Store a reference to an entity with a minimal memory footprint.
Definition: entityseed.hh:26
Wrapper class for entities.
Definition: entity.hh:66
Wrapper class for geometries.
Definition: geometry.hh:71
Grid view abstract base class.
Definition: gridview.hh:66
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: intersectioniterator.hh:83
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: intersection.hh:164
Wrapper and interface classes for element geometries.
Implements an utility class that provides collective communication methods for sequential programs.
Wrapper and interface classes for element geometries.
concept EntitySeed
Model of an entity seed.
Definition: entity.hh:25
concept Grid
Requirements for implementations of the Dune::Grid interface.
Definition: grid.hh:98
concept Entity
Model of a grid entity.
Definition: entity.hh:107
concept Geometry
Model of a geometry object.
Definition: geometry.hh:29
Dune namespace.
Definition: alignedallocator.hh:13
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 27, 22:29, 2024)