dune-fem 2.8.0
Loading...
Searching...
No Matches
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
11namespace 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 >
41 : public LocalFunction < typename DiscreteFunctionSpace :: BasisFunctionSetType, DofVector >
42 {
44 typedef LocalFunction < typename DiscreteFunctionSpace :: BasisFunctionSetType, DofVector > BaseType;
45
46 public:
49
51 typedef typename BaseType :: EntityType EntityType;
52
54 typedef typename BaseType :: BasisFunctionSetType BasisFunctionSetType;
55
57 typedef typename BaseType :: LocalDofVectorType LocalDofVectorType;
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 {
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:
214 typedef typename BaseType :: EntityType EntityType;
215
217 typedef typename BaseType :: DiscreteFunctionSpaceType DiscreteFunctionSpaceType;
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
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: localfunction.hh:437
const EntityType & entity() const
obtain the entity, this local function lives on
Definition: localfunction.hh:302
void unbind()
clears the local function by removing the basisFunctionSet
Definition: localfunction.hh:458
A temporary function carrying values for one entity.
Definition: temporary.hh:42
const LocalDofVectorType & localDofVector() const
return const reference to local Dof Vector
Definition: localfunction.hh:415
const DiscreteFunctionSpaceType & space() const
return discrete function space this local function belongs to
Definition: temporary.hh:168
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::EntityType EntityType
type of Entity
Definition: temporary.hh:51
BaseType::LocalDofVectorType LocalDofVectorType
type of LocalDofVector
Definition: temporary.hh:57
DiscreteFunctionSpace DiscreteFunctionSpaceType
type of the discrete function space
Definition: temporary.hh:48
BasicTemporaryLocalFunction(const DiscreteFunctionSpaceType &dfSpace, const LocalDofVectorType &dofVector=LocalDofVectorType())
constructor creating a local function without binding it to an entity
Definition: temporary.hh:76
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::BasisFunctionSetType BasisFunctionSetType
type of BasisFunctionSet
Definition: temporary.hh:54
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
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::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
type of the discrete function space
Definition: temporary.hh:217
BaseType::EntityType EntityType
type of Entity
Definition: temporary.hh:214
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