dune-fem  2.8-git
temporary.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_FUNCTION_LOCALFUNCTION_TEMPORARY_HH
2 #define DUNE_FEM_FUNCTION_LOCALFUNCTION_TEMPORARY_HH
3 
4 #include <dune/common/ftraits.hh>
5 #include <dune/common/dynvector.hh>
6 
9 
10 
11 namespace Dune
12 {
13 
14  namespace Fem
15  {
16 
17  // internal forward declarations
18  // -----------------------------
19 
20  template< class DiscreteFunctionSpace, class DoFVector >
21  class BasicTemporaryLocalFunction;
22 
23  template< class DiscreteFunctionSpace, class Dof >
24  class TemporaryLocalFunction;
25 
26 
39  template< class DiscreteFunctionSpace, class DofVector >
40  class BasicTemporaryLocalFunction
41  : public LocalFunction < typename DiscreteFunctionSpace :: BasisFunctionSetType, DofVector >
42  {
43  typedef BasicTemporaryLocalFunction< DiscreteFunctionSpace, DofVector > ThisType;
44  typedef LocalFunction < typename DiscreteFunctionSpace :: BasisFunctionSetType, DofVector > BaseType;
45 
46  public:
49 
52 
55 
58 
59  /* \copydoc Dune::Fem::LocalFunction :: localDofVector */
61 
77  const LocalDofVectorType &dofVector = LocalDofVectorType() )
78  : BaseType( dofVector ),
79  dfSpace_( dfSpace )
80  {
81  localDofVector().reserve( DiscreteFunctionSpaceType::localBlockSize * dfSpace_.blockMapper().maxNumDofs() );
82  }
83 
98  const LocalDofVectorType &dofVector = LocalDofVectorType() )
99  : BaseType( dofVector ),
100  dfSpace_( dfSpace )
101  {
102  localDofVector().reserve( DiscreteFunctionSpaceType::localBlockSize * dfSpace_.blockMapper().maxNumDofs() );
103  init( entity );
104  }
105 
118  void init ( const EntityType &entity )
119  {
120  BaseType::init( dfSpace_.basisFunctionSet( entity ) );
121  }
122 
135  void bind ( const EntityType &entity ) { init( entity ); }
136 
139  void unbind ()
140  {
142  }
143 
159  template <class IntersectionType>
160  void bind(const IntersectionType &intersection, IntersectionSide side)
161  {
162  bind( side==IntersectionSide::in?
163  intersection.inside(): intersection.outside() );
164  }
165 
169  {
170  return dfSpace_;
171  }
172 
173  protected:
175  };
176 
177 
194  template< class DiscreteFunctionSpace, class Dof >
196  }
197 
198  template< class DiscreteFunctionSpace, class Dof >
199  struct FieldTraits< Fem::TemporaryLocalFunction<DiscreteFunctionSpace,Dof> >
200  : public FieldTraits< Dof >
201  {};
202 
203  namespace Fem
204  {
205  template< class DiscreteFunctionSpace, class Dof = typename DiscreteFunctionSpace::RangeFieldType >
207  : public BasicTemporaryLocalFunction< DiscreteFunctionSpace, Dune::DynamicVector< Dof > >
208  {
211 
212  public:
215 
218 
234  : BaseType( dfSpace ) {}
235 
250  : BaseType( dfSpace, entity ){}
251  };
252 
253  } // namespace Fem
254 
255 } // namespace Dune
256 
257 #endif // #ifndef DUNE_FEM_FUNCTION_LOCALFUNCTION_TEMPORARY_HH
Definition: bindguard.hh:11
IntersectionSide
Definition: intersectionside.hh:10
interface for local functions
Definition: localfunction.hh:77
void init(const EntityType &entity)
initialize the local function for an entity
Definition: localfunction.hh:437
const EntityType & entity() const
obtain the entity, this local function lives on
Definition: localfunction.hh:302
BasisFunctionSet BasisFunctionSetType
type of basis function set
Definition: localfunction.hh:83
const LocalDofVectorType & localDofVector() const
return const reference to local Dof Vector
Definition: localfunction.hh:415
void unbind()
clears the local function by removing the basisFunctionSet
Definition: localfunction.hh:458
BasisFunctionSetType::EntityType EntityType
type of the entity, the local function lives on is given by the space
Definition: localfunction.hh:95
LocalDofVector LocalDofVectorType
type of local Dof Vector
Definition: localfunction.hh:86
A temporary function carrying values for one entity.
Definition: temporary.hh:24
const DiscreteFunctionSpaceType & dfSpace_
Definition: temporary.hh:174
void bind(const IntersectionType &intersection, IntersectionSide side)
initialize the local function for an entity adjacent to the intersection
Definition: temporary.hh:160
BaseType ::BasisFunctionSetType BasisFunctionSetType
type of BasisFunctionSet
Definition: temporary.hh:54
DiscreteFunctionSpace DiscreteFunctionSpaceType
type of the discrete function space
Definition: temporary.hh:48
BaseType ::LocalDofVectorType LocalDofVectorType
type of LocalDofVector
Definition: temporary.hh:57
BasicTemporaryLocalFunction(const DiscreteFunctionSpaceType &dfSpace, const LocalDofVectorType &dofVector=LocalDofVectorType())
constructor creating a local function without binding it to an entity
Definition: temporary.hh:76
const LocalDofVectorType & localDofVector() const
return const reference to local Dof Vector
Definition: localfunction.hh:415
void init(const EntityType &entity)
initialize the local function for an entity
Definition: temporary.hh:118
void bind(const EntityType &entity)
initialize the local function for an entity
Definition: temporary.hh:135
BaseType ::EntityType EntityType
type of Entity
Definition: temporary.hh:51
BasicTemporaryLocalFunction(const DiscreteFunctionSpaceType &dfSpace, const EntityType &entity, const LocalDofVectorType &dofVector=LocalDofVectorType())
constructor creating a local function and binding it to an entity
Definition: temporary.hh:97
const DiscreteFunctionSpaceType & space() const
return discrete function space this local function belongs to
Definition: temporary.hh:168
void unbind()
Unbinds a local function from an entity.
Definition: temporary.hh:139
A temporary function carrying values for one entity.
Definition: temporary.hh:208
BaseType ::EntityType EntityType
type of Entity
Definition: temporary.hh:214
BaseType ::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
type of the discrete function space
Definition: temporary.hh:217
TemporaryLocalFunction(const DiscreteFunctionSpaceType &dfSpace, const EntityType &entity)
constructor creating a local function and binding it to an entity
Definition: temporary.hh:249
TemporaryLocalFunction(const DiscreteFunctionSpaceType &dfSpace)
constructor creating a local function without binding it to an entity
Definition: temporary.hh:233
discrete function space