dune-grid  2.3beta2
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 >
25  {
26  static const int dimension = Grid::dimension;
27 
28  typedef typename Grid::template Codim< 0 >::Entity Entity;
30  typedef typename EntityObject::ImplementationType EntityImp;
31 
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  Grid::getRealImplementation( father_ ).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  Grid::getRealImplementation( father_ ).setElement( fatherInfo, 0 );
57  rpOp_.postRefinement( (const Entity &)father_ );
58  }
59  };
60 
61  }
62 
63 }
64 
65 #endif // #if HAVE_ALBERTA
66 
67 #endif