1#ifndef DUNE_FEM_FUNCTION_HIERARCHICAL_FUNCTION_HH
2#define DUNE_FEM_FUNCTION_HIERARCHICAL_FUNCTION_HH
4#include <dune/common/fvector.hh>
7#include <dune/istl/bvector.hh>
8#include <dune/istl/multitypeblockvector.hh>
27 template<
class DiscreteFunctionSpace >
28 class HierarchicalDiscreteFunction;
35 template<
class Dof,
class BlockIndices >
36 struct HierarchicalDofContainerChooser;
39 template<
class Dof,
int sz >
40 struct HierarchicalDofContainerChooser< Dof, Hybrid::IndexRange< int, sz > >
42 typedef BlockVector< FieldVector< Dof, sz > > Type;
45 template<
class Dof,
class... SR >
46 struct HierarchicalDofContainerChooser< Dof, Hybrid::CompositeIndexRange< SR... > >
48 typedef MultiTypeBlockVector< typename HierarchicalDofContainerChooser< Dof, SR >::Type... > Type;
51 template<
class Dof,
int sz >
52 struct HierarchicalDofContainerChooser< Dof, Hybrid::IndexRange< int, sz > >
54 typedef MutableBlockVector< DynamicArray< Dof >, sz > Type;
57 template<
class Dof,
class... SR >
58 struct HierarchicalDofContainerChooser< Dof, Hybrid::CompositeIndexRange< SR... > >
71 template<
class DiscreteFunctionSpace >
76 typedef typename DiscreteFunctionSpaceType::RangeFieldType
DofType;
78 typedef typename DiscreteFunctionSpaceType::DomainType
DomainType;
79 typedef typename DiscreteFunctionSpaceType::RangeType
RangeType;
103 template<
class DiscreteFunctionSpace >
142 auto memPair = allocateManagedDofStorage< DofVectorType >(
space.gridPart().grid(),
space.blockMapper() );
144 return *memPair.second;
Definition: bindguard.hh:11
static constexpr Index size()
Definition: hybrid.hh:111
Definition: stackallocator.hh:61
Traits class for a DiscreteFunction.
Definition: common/discretefunction.hh:61
Definition: common/discretefunction.hh:584
const DiscreteFunctionSpaceType & space() const
obtain a reference to the corresponding DiscreteFunctionSpace
Definition: common/discretefunction.hh:709
const std::string & name() const
obtain the name of the discrete function
Definition: common/discretefunction.hh:691
Definition: hierarchical/dofvector.hh:131
Definition: hierarchical/function.hh:106
HierarchicalDiscreteFunction(const ThisType &other)
Definition: hierarchical/function.hh:124
DofVectorType & allocateDofStorage(const DiscreteFunctionSpaceType &space)
Definition: hierarchical/function.hh:140
HierarchicalDiscreteFunction(const std::string &name, const DiscreteFunctionSpaceType &space, DofVectorType &dofVector)
Definition: hierarchical/function.hh:116
BaseType::DofVectorType DofVectorType
Definition: hierarchical/function.hh:112
std::unique_ptr< DofStorageInterface > memObject_
Definition: hierarchical/function.hh:147
DofVectorType & dofVector()
Definition: hierarchical/function.hh:130
const DofVectorType & dofVector() const
Definition: hierarchical/function.hh:131
BaseType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: hierarchical/function.hh:111
void enableDofCompression()
Definition: hierarchical/function.hh:133
HierarchicalDiscreteFunction(const std::string &name, const DiscreteFunctionSpaceType &space)
Definition: hierarchical/function.hh:120
DofVectorType & dofVector_
Definition: hierarchical/function.hh:148
DofType ** DofBlockPtrType
Definition: hierarchical/function.hh:88
ThreadSafeValue< UninitializedObjectStack > LocalDofVectorStackType
Definition: hierarchical/function.hh:91
DiscreteFunctionSpaceType::DomainType DomainType
Definition: hierarchical/function.hh:78
DiscreteFunctionSpace DiscreteFunctionSpaceType
Definition: hierarchical/function.hh:74
const DofType * ConstDofIteratorType
Definition: hierarchical/function.hh:85
DofType * DofIteratorType
Definition: hierarchical/function.hh:84
DiscreteFunctionSpaceType::RangeFieldType DofType
Definition: hierarchical/function.hh:76
HierarchicalDiscreteFunction< DiscreteFunctionSpace > DiscreteFunctionType
Definition: hierarchical/function.hh:95
StackAllocator< DofType, LocalDofVectorStackType * > LocalDofVectorAllocatorType
Definition: hierarchical/function.hh:92
DiscreteFunctionSpaceType::RangeType RangeType
Definition: hierarchical/function.hh:79
DynamicReferenceVector< DofType, LocalDofVectorAllocatorType > LocalDofVectorType
Definition: hierarchical/function.hh:93
HierarchicalDofVector< typename Impl::HierarchicalDofContainerChooser< DofType, typename DiscreteFunctionSpaceType::LocalBlockIndices >::Type > DofVectorType
Definition: hierarchical/function.hh:81
DofType * DofBlockType
Definition: hierarchical/function.hh:86
const DofType * ConstDofBlockType
Definition: hierarchical/function.hh:87
const DofType ** ConstDofBlockPtrType
Definition: hierarchical/function.hh:89
MutableLocalFunction< DiscreteFunctionType > LocalFunctionType
Definition: hierarchical/function.hh:96
An implementation of DenseVector which uses a std::vector of references as storage.
Definition: storage/referencevector.hh:53