1 #ifndef DUNE_ALBERTA_NODEPROJECTION_HH
2 #define DUNE_ALBERTA_NODEPROJECTION_HH
4 #include <dune/common/shared_ptr.hh>
22 template<
class Proj,
class Impl >
45 : projection_( projection )
74 template<
class Proj,
class Impl >
93 This &operator= (
const This &other );
98 return asImpl().hasProjection( elementInfo, face );
103 return asImpl().hasProjection( elementInfo );
108 return asImpl().projection( elementInfo, face );
113 return asImpl().projection( elementInfo );
119 return static_cast< const Impl &
>( *this );
128 template<
class Proj,
class Impl >
129 class ProjectionFactory
130 :
public ProjectionFactoryInterface< Proj, Impl >
133 typedef ProjectionFactoryInterface< Proj, Impl > Base;
144 bool hasProjection (
const ElementInfo &elementInfo,
const int face )
const;
145 bool hasProjection (
const ElementInfo &elementInfo )
const;
158 :
public ProjectionFactory< DuneBoundaryProjection< dim >, DuneGlobalBoundaryProjectionFactory< dim > >
170 : projection_( projection )
203 :
public ALBERTA NODE_PROJECTION
206 : boundaryIndex_( boundaryIndex )
216 return boundaryIndex_;
220 unsigned int boundaryIndex_;
228 template<
int dim,
class Projection >
241 Projection projection_;
245 :
Base( boundaryIndex ),
246 projection_( projection )
259 const This *nodeProjection =
static_cast< const This *
>( info->active_projection );
261 assert( nodeProjection != NULL );
262 nodeProjection->projection_( elementInfo, local, global );
270 #endif // #if HAVE_ALBERTA
272 #endif // #ifndef DUNE_ALBERTA_NODEPROJECTION_HH