dune-pdelab  2.0.0
Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
Dune::PDELab::LocalOrderingBase< GV, DI, CI > Class Template Reference

#include <dune/pdelab/ordering/localorderingbase.hh>

Inheritance diagram for Dune::PDELab::LocalOrderingBase< GV, DI, CI >:
Inheritance graph

Public Types

typedef LocalOrderingTraits
< GV, DI, CI > 
Traits
 

Public Member Functions

void map_local_index (const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, typename Traits::TreeIndexView mi, typename Traits::ContainerIndex &ci) const
 
template<typename ItIn , typename ItOut >
void map_lfs_indices (const ItIn begin, const ItIn end, ItOut out) const
 
template<typename CIOutIterator , typename DIOutIterator = DummyDOFIndexIterator>
Traits::SizeType extract_entity_indices (const typename Traits::DOFIndex::EntityIndex &ei, typename Traits::SizeType child_index, CIOutIterator ci_out, const CIOutIterator ci_end, DIOutIterator di_out=DIOutIterator()) const
 
Traits::SizeType size (const typename Traits::DOFIndex::EntityIndex &index) const
 
Traits::SizeType size (const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index) const
 
Traits::SizeType size (const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, const typename Traits::SizeType child_index) const
 
Traits::SizeType offset (const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, const typename Traits::SizeType child_index) const
 
template<typename Node >
 LocalOrderingBase (Node &node, bool container_blocked, GFSData *gfs_data)
 
bool fixedSize () const
 
bool contains (const GeometryType &gt) const
 
bool contains_geometry_type (typename Traits::SizeType gt_index) const
 
bool contains (typename Traits::SizeType codim) const
 
Traits::SizeType maxLocalSize () const
 
bool containsPartition (PartitionType partition) const
 Returns whether this ordering contains entities with PartitionType partition. More...
 
std::bitset< 6 > containedPartitions () const
 Returns the internal representation of the set of contained entities. More...
 

Static Public Attributes

static const bool has_dynamic_ordering_children = true
 
static const bool consume_tree_index = true
 

Protected Types

typedef
impl::GridFunctionSpaceOrderingData
< typename Traits::SizeType
GFSData
 

Protected Member Functions

LocalOrderingBasechildOrdering (typename Traits::SizeType i)
 
const LocalOrderingBasechildOrdering (typename Traits::SizeType i) const
 
void disable_container_blocking ()
 
void setup_fixed_size_possible ()
 Initial setup of the flag indicating whether a fixed size ordering is possible. More...
 
void clearPartitionSet ()
 Empties the set of contained partitions. More...
 
void mergePartitionSet (const PartitionInfoProvider &r)
 Adds all partitions contained in r the set of contained partitions. More...
 
void setPartitionSet (const std::bitset< 6 > &partitions)
 Sets the set of contained partitions to the passed-in value. More...
 
void setPartitionSet (const PartitionInfoProvider &r)
 Copies the set of contained partitions from r. More...
 
template<typename It >
void mergePartitionSets (It begin, It end)
 Adds the partitions from all PartitionInfoProviders in the range [begin,end). More...
 

Protected Attributes

bool _fixed_size
 
bool _fixed_size_possible
 
bool _container_blocked
 
std::size_t _max_local_size
 
const std::size_t _child_count
 
std::vector< LocalOrderingBase * > _children
 
Traits::CodimFlag _codim_used
 
std::vector< bool > _gt_used
 
std::vector< typename
Traits::SizeType
_gt_entity_offsets
 
std::vector< typename
Traits::SizeType
_gt_dof_offsets
 
std::vector< typename
Traits::SizeType
_entity_dof_offsets
 
GFSData_gfs_data
 

Friends

struct collect_a_priori_fixed_size
 
template<typename >
struct update_fixed_size
 
template<typename >
struct post_collect_used_geometry_types
 
template<typename >
struct post_extract_per_entity_sizes
 
struct pre_collect_used_geometry_types
 
template<typename >
struct collect_used_geometry_types_from_cell
 
template<typename >
struct extract_per_entity_sizes_from_cell
 
template<typename >
class GridViewOrdering
 
template<typename size_type >
struct ::Dune::PDELab::impl::update_ordering_data
 

Member Typedef Documentation

template<typename GV, typename DI, typename CI>
typedef impl::GridFunctionSpaceOrderingData<typename Traits::SizeType> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::GFSData
protected
template<typename GV, typename DI, typename CI>
typedef LocalOrderingTraits<GV,DI,CI> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::Traits

Constructor & Destructor Documentation

template<typename GV, typename DI, typename CI>
template<typename Node >
Dune::PDELab::LocalOrderingBase< GV, DI, CI >::LocalOrderingBase ( Node &  node,
bool  container_blocked,
GFSData gfs_data 
)
inline

Member Function Documentation

template<typename GV, typename DI, typename CI>
LocalOrderingBase& Dune::PDELab::LocalOrderingBase< GV, DI, CI >::childOrdering ( typename Traits::SizeType  i)
inlineprotected
template<typename GV, typename DI, typename CI>
const LocalOrderingBase& Dune::PDELab::LocalOrderingBase< GV, DI, CI >::childOrdering ( typename Traits::SizeType  i) const
inlineprotected
void Dune::PDELab::PartitionInfoProvider::clearPartitionSet ( )
inlineprotectedinherited

Empties the set of contained partitions.

Referenced by Dune::PDELab::PartitionInfoProvider::mergePartitionSets().

std::bitset<6> Dune::PDELab::PartitionInfoProvider::containedPartitions ( ) const
inlineinherited

Returns the internal representation of the set of contained entities.

template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::contains ( const GeometryType &  gt) const
inline
template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::contains ( typename Traits::SizeType  codim) const
inline
template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::contains_geometry_type ( typename Traits::SizeType  gt_index) const
inline
bool Dune::PDELab::PartitionInfoProvider::containsPartition ( PartitionType  partition) const
inlineinherited

Returns whether this ordering contains entities with PartitionType partition.

Referenced by Dune::PDELab::GridFunctionSpaceBase< GridFunctionSpace, PowerCompositeGridFunctionSpaceTraits< GV, B, O, k > >::containsPartition().

template<typename GV, typename DI, typename CI>
void Dune::PDELab::LocalOrderingBase< GV, DI, CI >::disable_container_blocking ( )
inlineprotected
template<typename GV, typename DI, typename CI>
template<typename CIOutIterator , typename DIOutIterator = DummyDOFIndexIterator>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::extract_entity_indices ( const typename Traits::DOFIndex::EntityIndex &  ei,
typename Traits::SizeType  child_index,
CIOutIterator  ci_out,
const CIOutIterator  ci_end,
DIOutIterator  di_out = DIOutIterator() 
) const
inline
template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::fixedSize ( ) const
inline
template<typename GV, typename DI, typename CI>
template<typename ItIn , typename ItOut >
void Dune::PDELab::LocalOrderingBase< GV, DI, CI >::map_lfs_indices ( const ItIn  begin,
const ItIn  end,
ItOut  out 
) const
inline
template<typename GV, typename DI, typename CI>
void Dune::PDELab::LocalOrderingBase< GV, DI, CI >::map_local_index ( const typename Traits::SizeType  geometry_type_index,
const typename Traits::SizeType  entity_index,
typename Traits::TreeIndexView  mi,
typename Traits::ContainerIndex ci 
) const
inline
template<typename GV, typename DI, typename CI>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::maxLocalSize ( ) const
inline
void Dune::PDELab::PartitionInfoProvider::mergePartitionSet ( const PartitionInfoProvider r)
inlineprotectedinherited

Adds all partitions contained in r the set of contained partitions.

Referenced by Dune::PDELab::PartitionInfoProvider::mergePartitionSets().

template<typename It >
void Dune::PDELab::PartitionInfoProvider::mergePartitionSets ( It  begin,
It  end 
)
inlineprotectedinherited

Adds the partitions from all PartitionInfoProviders in the range [begin,end).

Note
The passed-in iterators may yield both references and pointers to the PartitionInfoProviders in the range. This feature exists mostly to simplify implementation of the dynamic ordering base classes, which hold pointers to their children.

References Dune::PDELab::PartitionInfoProvider::clearPartitionSet(), and Dune::PDELab::PartitionInfoProvider::mergePartitionSet().

Referenced by Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::LocalOrderingBase(), and Dune::PDELab::OrderingBase< Ordering::Traits::DOFIndex, Ordering::Traits::ContainerIndex >::OrderingBase().

template<typename GV, typename DI, typename CI>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::offset ( const typename Traits::SizeType  geometry_type_index,
const typename Traits::SizeType  entity_index,
const typename Traits::SizeType  child_index 
) const
inline
void Dune::PDELab::PartitionInfoProvider::setPartitionSet ( const std::bitset< 6 > &  partitions)
inlineprotectedinherited
void Dune::PDELab::PartitionInfoProvider::setPartitionSet ( const PartitionInfoProvider r)
inlineprotectedinherited

Copies the set of contained partitions from r.

template<typename GV, typename DI, typename CI>
void Dune::PDELab::LocalOrderingBase< GV, DI, CI >::setup_fixed_size_possible ( )
inlineprotected

Initial setup of the flag indicating whether a fixed size ordering is possible.

For a non-leaf ordering, a fixed size ordering is possible if all children can support it, so we implement that logic here.

Note
Leaf orderings will usually want to extract this a priori information from somewhere else, so they should override this method (the correct method will get called even without a virtual call, as the call happens from a TypeTree visitor that is aware of the precise type of the ordering).
template<typename GV, typename DI, typename CI>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::size ( const typename Traits::DOFIndex::EntityIndex &  index) const
inline
template<typename GV, typename DI, typename CI>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::size ( const typename Traits::SizeType  geometry_type_index,
const typename Traits::SizeType  entity_index 
) const
inline
template<typename GV, typename DI, typename CI>
Traits::SizeType Dune::PDELab::LocalOrderingBase< GV, DI, CI >::size ( const typename Traits::SizeType  geometry_type_index,
const typename Traits::SizeType  entity_index,
const typename Traits::SizeType  child_index 
) const
inline

Friends And Related Function Documentation

template<typename GV, typename DI, typename CI>
template<typename size_type >
friend struct ::Dune::PDELab::impl::update_ordering_data
friend
template<typename GV, typename DI, typename CI>
friend struct collect_a_priori_fixed_size
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend struct collect_used_geometry_types_from_cell
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend struct extract_per_entity_sizes_from_cell
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend class GridViewOrdering
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend struct post_collect_used_geometry_types
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend struct post_extract_per_entity_sizes
friend
template<typename GV, typename DI, typename CI>
friend struct pre_collect_used_geometry_types
friend
template<typename GV, typename DI, typename CI>
template<typename >
friend struct update_fixed_size
friend

Member Data Documentation

template<typename GV, typename DI, typename CI>
const std::size_t Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_child_count
protected
template<typename GV, typename DI, typename CI>
std::vector<LocalOrderingBase*> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_children
protected
template<typename GV, typename DI, typename CI>
Traits::CodimFlag Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_codim_used
protected
template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_container_blocked
protected
template<typename GV, typename DI, typename CI>
std::vector<typename Traits::SizeType> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_entity_dof_offsets
protected
template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_fixed_size
protected

Referenced by Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::extract_entity_indices(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::fixedSize(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::map_lfs_indices(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::map_local_index(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::offset(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::size(), and Dune::PDELab::LeafLocalOrdering< OrderingTag, FEM, GV, DI, CI >::update_a_priori_fixed_size().

template<typename GV, typename DI, typename CI>
bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_fixed_size_possible
protected
template<typename GV, typename DI, typename CI>
GFSData* Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_gfs_data
protected
template<typename GV, typename DI, typename CI>
std::vector<typename Traits::SizeType> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_gt_dof_offsets
protected
template<typename GV, typename DI, typename CI>
std::vector<typename Traits::SizeType> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_gt_entity_offsets
protected
template<typename GV, typename DI, typename CI>
std::vector<bool> Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_gt_used
protected

Referenced by Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::contains(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::contains_geometry_type(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::extract_entity_indices(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::map_lfs_indices(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::map_local_index(), Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::offset(), and Dune::PDELab::LocalOrderingBase< DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::GridView, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::DOFIndex, DUNE_TYPETREE_COMPOSITENODE_FIRST_CHILD::Traits::ContainerIndex >::size().

template<typename GV, typename DI, typename CI>
std::size_t Dune::PDELab::LocalOrderingBase< GV, DI, CI >::_max_local_size
protected
template<typename GV, typename DI, typename CI>
const bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::consume_tree_index = true
static
template<typename GV, typename DI, typename CI>
const bool Dune::PDELab::LocalOrderingBase< GV, DI, CI >::has_dynamic_ordering_children = true
static

The documentation for this class was generated from the following file: