4 #ifndef DUNE_PDELAB_ORDERING_LEAFGRIDVIEWORDERING_HH
5 #define DUNE_PDELAB_ORDERING_LEAFGRIDVIEWORDERING_HH
17 template<
typename LocalOrdering>
22 typedef typename LocalOrdering::Traits
Traits;
26 typedef typename Traits::GridView GV;
34 :
BaseT(local_ordering, container_blocked, gfs_data)
35 , _gv(this->template child<0>().gridView())
48 #if HAVE_RVALUE_REFERENCES
55 #endif // HAVE_RVALUE_REFERENCES
62 lo.update_a_priori_fixed_size();
64 const std::size_t
dim = GV::dimension;
66 typedef typename Traits::SizeType size_type;
67 typedef std::vector<GeometryType> GTVector;
70 for (size_type cc = 0; cc <=
dim; ++cc)
72 const GTVector& per_codim_geom_types = _gv.indexSet().geomTypes(cc);
73 std::copy(per_codim_geom_types.begin(),per_codim_geom_types.end(),std::back_inserter(geom_types));
78 lo.update_fixed_size(geom_types.begin(),geom_types.end());
82 lo.pre_collect_used_geometry_types_from_cell();
84 typedef typename GV::template Codim<0>::Iterator CellIterator;
86 const CellIterator end_it = _gv.template end<0>();
87 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
89 lo.collect_used_geometry_types_from_cell(*it);
92 lo.allocate_entity_offset_vector(geom_types.begin(),geom_types.end());
94 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
96 lo.extract_per_entity_sizes_from_cell(*it);
100 lo.finalize_non_fixed_size_update();
110 const GTVector::const_iterator end_it = geom_types.end();
111 for (GTVector::const_iterator it = geom_types.begin(); it != end_it; ++it)
113 const size_type gt_index = GlobalGeometryTypeIndex::index(*it);
114 size_type gt_size = lo.size(gt_index,0);
115 size_type entity_count = _gv.indexSet().size(*it);
116 _size += gt_size * entity_count;
118 gt_size = gt_size > 0;
152 typename Traits::GridView _gv;
156 template<
typename GFS,
typename Transformation>
163 typename GFS::Traits::FiniteElementMap,
164 typename GFS::Traits::GridView,
165 typename Transformation::DOFIndex,
166 typename Transformation::ContainerIndex
176 return transformed_type(make_tuple(make_shared<LocalOrdering>(gfs.finiteElementMapStorage(),gfs.gridView())),gfs.backend().blocked(gfs),
const_cast<GFS*
>(&gfs));
181 return make_shared<transformed_type>(make_tuple(make_shared<LocalOrdering>(gfs->finiteElementMapStorage(),gfs->gridView())),gfs->backend().blocked(*gfs),
const_cast<GFS*
>(gfs.get()));
187 template<
typename GFS,
typename Transformation,
typename Params>
188 direct_leaf_gfs_to_gridview_ordering_descriptor<GFS,Transformation>
195 #endif // DUNE_PDELAB_ORDERING_LEAFORDERING_HH
bool fixedSize(typename Traits::SizeType codim) const
Definition: orderingbase.hh:214
Definition: directleaflocalordering.hh:27
Traits::CodimFlag _codim_fixed_size
Definition: orderingbase.hh:285
LeafGridViewOrdering(const typename NodeT::NodeStorage &local_ordering, bool container_blocked, typename BaseT::GFSData *gfs_data)
Definition: leafgridviewordering.hh:33
std::size_t _max_local_size
Definition: orderingbase.hh:287
bool _fixed_size
Definition: orderingbase.hh:274
static transformed_storage_type transform_storage(shared_ptr< const GFS > gfs, const Transformation &t)
Definition: leafgridviewordering.hh:179
static const int dim
Definition: adaptivity.hh:82
shared_ptr< transformed_type > transformed_storage_type
Definition: leafgridviewordering.hh:172
static const bool recursive
Definition: leafgridviewordering.hh:160
Gridview ordering for leaf spaces.
Definition: leafgridviewordering.hh:18
LeafGridViewOrdering< LocalOrdering > GridViewOrdering
Definition: leafgridviewordering.hh:169
static transformed_type transform(const GFS &gfs, const Transformation &t)
Definition: leafgridviewordering.hh:174
GridViewOrdering transformed_type
Definition: leafgridviewordering.hh:171
TypeTree::VariadicCompositeNode< LocalOrdering > NodeT
Definition: leaforderingbase.hh:37
Generic infrastructure for orderings for leaf spaces.
Definition: leaforderingbase.hh:21
LocalOrdering::Traits Traits
Definition: leafgridviewordering.hh:22
direct_leaf_gfs_to_gridview_ordering_descriptor< GFS, Transformation > register_leaf_gfs_to_ordering_descriptor(GFS *, Transformation *, LeafOrderingTag< Params > *)
std::vector< typename Traits::SizeType > _gt_dof_offsets
Definition: leaforderingbase.hh:286
LocalOrdering & localOrdering()
Definition: leaforderingbase.hh:44
Traits::CodimFlag _codim_used
Definition: orderingbase.hh:284
std::size_t _block_count
Definition: orderingbase.hh:289
std::size_t _size
Definition: orderingbase.hh:288
Definition: leafgridviewordering.hh:157
const bool _container_blocked
Definition: orderingbase.hh:275
virtual void update()
Definition: leafgridviewordering.hh:59
DirectLeafLocalOrdering< typename GFS::Traits::OrderingTag, typename GFS::Traits::FiniteElementMap, typename GFS::Traits::GridView, typename Transformation::DOFIndex, typename Transformation::ContainerIndex > LocalOrdering
Definition: leafgridviewordering.hh:167
Dune::PDELab::impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: orderingbase.hh:35