dune-grid  2.7.0
albertagrid/datahandle.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_ALBERTAGRIDDATAHANDLE_HH
4 #define DUNE_ALBERTAGRIDDATAHANDLE_HH
5 
6 #include <iostream>
7 
9 
14 
15 #if HAVE_ALBERTA
16 
17 namespace Dune
18 {
19 
20  namespace Alberta
21  {
22 
23  template< class Grid, class RestrictProlongOperator >
24  class AdaptRestrictProlongHandler
25  {
26  static const int dimension = Grid::dimension;
27 
28  typedef typename Grid::template Codim< 0 >::Entity Entity;
29  typedef Dune::MakeableInterfaceObject< Entity > EntityObject;
30  typedef typename EntityObject::ImplementationType EntityImp;
31 
32  typedef Alberta::ElementInfo< dimension > ElementInfo;
33  typedef Alberta::Patch< dimension > Patch;
34 
35  Grid &grid_;
36  RestrictProlongOperator &rpOp_;
37  EntityObject father_;
38 
39  public:
40  AdaptRestrictProlongHandler ( Grid &grid, RestrictProlongOperator &rpOp )
41  : grid_( grid ),
42  rpOp_( rpOp ),
43  father_( EntityImp( grid_ ) )
44  {}
45 
46  void restrictLocal ( const Patch &patch, int i )
47  {
48  ElementInfo fatherInfo = patch.elementInfo( i, grid_.levelProvider() );
49  father_.impl().setElement( fatherInfo, 0 );
50  rpOp_.preCoarsening( (const Entity &)father_ );
51  }
52 
53  void prolongLocal ( const Patch &patch, int i )
54  {
55  ElementInfo fatherInfo = patch.elementInfo( i, grid_.levelProvider() );
56  father_.impl().setElement( fatherInfo, 0 );
57  rpOp_.postRefinement( (const Entity &)father_ );
58  }
59  };
60 
61  }
62 
63 }
64 
65 #endif // #if HAVE_ALBERTA
66 
67 #endif
albertaheader.hh
Dune::MakeableInterfaceObject
Definition: common/grid.hh:1172
elementinfo.hh
provides a wrapper for ALBERTA's el_info structure
refinement.hh
provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather
Dune::Grid::dimension
@ dimension
The dimension of the grid.
Definition: common/grid.hh:387
misc.hh
grid.hh
Different resources needed by all grid implementations.
Dune
Include standard header files.
Definition: agrid.hh:58