Go to the documentation of this file.
4 #ifndef DUNE_PDELAB_ORDERING_LEAFLOCALORDERING_HH
5 #define DUNE_PDELAB_ORDERING_LEAFLOCALORDERING_HH
7 #include <dune/typetree/leafnode.hh>
9 #include <dune/geometry/referenceelements.hh>
10 #include <dune/localfunctions/common/interfaceswitch.hh>
11 #include <dune/localfunctions/common/localkey.hh>
20 template<
typename OrderingTag,
typename FEM,
typename ES,
typename DI,
typename CI>
22 :
public TypeTree::LeafNode
39 :
BaseT(*this,backend_blocked,gfs_data)
51 return _es.gridView();
59 template<
typename CodimMask>
62 for (
typename ES::dim_type codim = 0; codim <= ES::dimension; ++codim)
63 if (_fem->hasDOFs(codim))
79 typedef FiniteElementInterfaceSwitch<
80 typename FEM::Traits::FiniteElement
85 FESwitch::setStore(_pfe,_fem->find(cell));
87 const typename FESwitch::Coefficients& coeffs =
88 FESwitch::coefficients(*_pfe);
93 ReferenceElements<typename Traits::EntitySet::Traits::CoordinateField,Traits::EntitySet::dimension>::general(cell.type());
95 for (std::size_t i = 0; i < coeffs.size(); ++i)
97 const LocalKey& key = coeffs.localKey(i);
98 Dune::GeometryType gt = ref_el.type(key.subEntity(),key.codim());
106 std::vector<typename Traits::SizeType>& gt_sizes)
109 std::fill(gt_sizes.begin(),gt_sizes.end(),0);
111 FESwitch::setStore(_pfe,_fem->find(cell));
113 const typename FESwitch::Coefficients& coeffs =
114 FESwitch::coefficients(*_pfe);
121 ReferenceElements<typename Traits::EntitySet::Traits::CoordinateField,Traits::EntitySet::dimension>::general(cell.type());
123 for (std::size_t i = 0; i < coeffs.size(); ++i)
125 const LocalKey& key = coeffs.localKey(i);
126 GeometryType gt = ref_el.type(key.subEntity(),key.codim());
129 const size_type entity_index = _es.indexSet().subIndex(cell,key.subEntity(),key.codim());
136 for (size_type i = 0; i < gt_sizes.size(); ++i)
158 std::shared_ptr<const FEM> _fem;
160 typename FESwitch::Store _pfe;
164 template<
typename GFS,
typename Transformation,
typename Params>
165 struct leaf_gfs_to_local_ordering_descriptor<GFS,Transformation,
LeafOrderingTag<Params> >
168 static const bool recursive =
false;
171 typename GFS::Traits::OrderingTag,
172 typename GFS::Traits::FiniteElementMap,
173 typename GFS::Traits::EntitySet,
174 typename Transformation::DOFIndex,
175 typename Transformation::ContainerIndex
182 return transformed_type(gfs.finiteElementMapStorage(),gfs.entitySet(),
false,&
const_cast<GFS*
>(gfs));
187 return std::make_shared<transformed_type>(gfs->finiteElementMapStorage(),gfs->entitySet(),
false,
const_cast<GFS*
>(gfs.get()));
197 #endif // DUNE_PDELAB_ORDERING_LEAFLOCALORDERING_HH
std::vector< bool > _gt_used
Definition: localorderingbase.hh:356
Definition: gridviewordering.hh:204
typename ES::GridView GridView
Definition: ordering/utility.hh:215
Definition: leaflocalordering.hh:21
std::vector< typename Traits::SizeType > _gt_entity_offsets
Definition: localorderingbase.hh:358
std::size_t index
Definition: interpolate.hh:118
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
friend struct collect_used_geometry_types_from_cell
Definition: localorderingbase.hh:36
std::shared_ptr< transformed_type > transformed_storage_type
Definition: leaflocalordering.hh:178
Definition: ordering/utility.hh:208
void collect_used_codims(CodimMask &codims) const
Definition: leaflocalordering.hh:60
const Traits::GridView & gridView() const
Definition: leaflocalordering.hh:49
Definition: gridviewordering.hh:283
LeafLocalOrdering(const std::shared_ptr< const FEM > &fem, const ES &es, bool backend_blocked, typename BaseT::GFSData *gfs_data)
Definition: leaflocalordering.hh:38
BaseT::Traits Traits
Definition: leaflocalordering.hh:36
LeafLocalOrdering< typename GFS::Traits::OrderingTag, typename GFS::Traits::FiniteElementMap, typename GFS::Traits::EntitySet, typename Transformation::DOFIndex, typename Transformation::ContainerIndex > transformed_type
Definition: leaflocalordering.hh:176
bool _fixed_size_possible
Definition: localorderingbase.hh:348
const FEM & finiteElementMap() const
Definition: leaflocalordering.hh:54
friend struct extract_per_entity_sizes_from_cell
Definition: localorderingbase.hh:39
void update_a_priori_fixed_size()
Definition: leaflocalordering.hh:67
static transformed_storage_type transform_storage(std::shared_ptr< const GFS > gfs, const Transformation &t)
Definition: leaflocalordering.hh:185
std::vector< typename Traits::SizeType > _gt_dof_offsets
Definition: localorderingbase.hh:359
DI::size_type SizeType
Definition: ordering/utility.hh:201
void setup_fixed_size_possible()
Definition: leaflocalordering.hh:72
Definition: localorderingbase.hh:19
const Traits::EntitySet & entitySet() const
Definition: leaflocalordering.hh:44
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:183
std::size_t _max_local_size
Definition: localorderingbase.hh:350
static transformed_type transform(const GFS &gfs, const Transformation &t)
Definition: leaflocalordering.hh:180
bool _fixed_size
Definition: localorderingbase.hh:347
Traits::CodimFlag _codim_used
Definition: localorderingbase.hh:355
ES EntitySet
Definition: ordering/utility.hh:214
std::vector< typename Traits::SizeType > _entity_dof_offsets
Definition: localorderingbase.hh:360
impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: localorderingbase.hh:61