dune-grid  2.4.1
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
Definition: albertagrid/datahandle.hh:24
AdaptRestrictProlongHandler(Grid &grid, RestrictProlongOperator &rpOp)
Definition: albertagrid/datahandle.hh:40
Patch< 2 >::ElementInfo elementInfo(int i, const LevelProvider &levelProvider) const
Definition: refinement.hh:112
Different resources needed by all grid implementations.
void restrictLocal(const Patch &patch, int i)
Definition: albertagrid/datahandle.hh:46
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:388
provides a wrapper for ALBERTA's refinement patches and the corners for geometryInFather ...
Entity::Implementation ImplementationType
Definition: common/grid.hh:1468
provides a wrapper for ALBERTA's el_info structure
The dimension of the grid.
Definition: common/grid.hh:402
Include standard header files.
Definition: agrid.hh:59
Definition: refinement.hh:37
void prolongLocal(const Patch &patch, int i)
Definition: albertagrid/datahandle.hh:53