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)
149 std::shared_ptr<const FEM> _fem;
151 typename FESwitch::Store _pfe;
155 template<
typename GFS,
typename Transformation,
typename Params>
156 struct leaf_gfs_to_local_ordering_descriptor<GFS,Transformation,
LeafOrderingTag<Params> >
159 static const bool recursive =
false;
162 typename GFS::Traits::OrderingTag,
163 typename GFS::Traits::FiniteElementMap,
164 typename GFS::Traits::EntitySet,
165 typename Transformation::DOFIndex,
166 typename Transformation::ContainerIndex
173 return transformed_type(gfs.finiteElementMapStorage(),gfs.entitySet(),
false,&
const_cast<GFS*
>(gfs));
178 return std::make_shared<transformed_type>(gfs->finiteElementMapStorage(),gfs->entitySet(),
false,
const_cast<GFS*
>(gfs.get()));
std::size_t index
Definition: interpolate.hh:97
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:185
Definition: gridviewordering.hh:207
Definition: gridviewordering.hh:286
Definition: leaflocalordering.hh:24
const FEM & finiteElementMap() const
Definition: leaflocalordering.hh:54
const Traits::EntitySet & entitySet() const
Definition: leaflocalordering.hh:44
const Traits::GridView & gridView() const
Definition: leaflocalordering.hh:49
void collect_used_codims(CodimMask &codims) const
Definition: leaflocalordering.hh:60
BaseT::Traits Traits
Definition: leaflocalordering.hh:36
LeafLocalOrdering(const std::shared_ptr< const FEM > &fem, const ES &es, bool backend_blocked, typename BaseT::GFSData *gfs_data)
Definition: leaflocalordering.hh:38
void setup_fixed_size_possible()
Definition: leaflocalordering.hh:72
void update_a_priori_fixed_size()
Definition: leaflocalordering.hh:67
LeafLocalOrdering< typename GFS::Traits::OrderingTag, typename GFS::Traits::FiniteElementMap, typename GFS::Traits::EntitySet, typename Transformation::DOFIndex, typename Transformation::ContainerIndex > transformed_type
Definition: leaflocalordering.hh:167
static transformed_type transform(const GFS &gfs, const Transformation &t)
Definition: leaflocalordering.hh:171
std::shared_ptr< transformed_type > transformed_storage_type
Definition: leaflocalordering.hh:169
static transformed_storage_type transform_storage(std::shared_ptr< const GFS > gfs, const Transformation &t)
Definition: leaflocalordering.hh:176
Definition: localorderingbase.hh:20
std::vector< typename Traits::SizeType > _gt_entity_offsets
Definition: localorderingbase.hh:360
bool _fixed_size_possible
Definition: localorderingbase.hh:350
friend struct collect_used_geometry_types_from_cell
Definition: localorderingbase.hh:36
bool _fixed_size
Definition: localorderingbase.hh:349
std::vector< bool > _gt_used
Definition: localorderingbase.hh:358
Traits::CodimFlag _codim_used
Definition: localorderingbase.hh:357
friend struct extract_per_entity_sizes_from_cell
Definition: localorderingbase.hh:39
impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: localorderingbase.hh:63
std::vector< typename Traits::SizeType > _gt_dof_offsets
Definition: localorderingbase.hh:361
static constexpr auto GT_UNUSED
Definition: localorderingbase.hh:59
std::size_t _max_local_size
Definition: localorderingbase.hh:352
std::vector< typename Traits::SizeType > _entity_dof_offsets
Definition: localorderingbase.hh:362
DI::size_type SizeType
Definition: ordering/utility.hh:201
Definition: ordering/utility.hh:212
ES EntitySet
Definition: ordering/utility.hh:214
typename ES::GridView GridView
Definition: ordering/utility.hh:215