DUNE PDELab (2.7)

singlecodimleafordering.hh
1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=8 sw=2 sts=2:
3
4#ifndef DUNE_PDELAB_ORDERING_SINGLECODIMLEAFORDERING_HH
5#define DUNE_PDELAB_ORDERING_SINGLECODIMLEAFORDERING_HH
6
7#include <dune/typetree/leafnode.hh>
8
9#include <dune/pdelab/ordering/utility.hh>
10#include <dune/pdelab/gridfunctionspace/tags.hh>
11
12namespace Dune {
13 namespace PDELab {
14
17
18 template<typename GV, typename DI, typename CI>
19 class SingleCodimLeafOrdering
20 : public TypeTree::LeafNode
21 {
22
23 public:
24
25 typedef FlatContainerAllocationTag ContainerAllocationTag;
26
27 typedef SimpleLFSCacheTag CacheTag;
28
29
30 typedef SimpleOrderingTraits<DI,CI> Traits;
31
32 typename Traits::ContainerIndex mapIndex(const typename Traits::DOFIndex& di) const
33 {
34 return di[0];
35 }
36
37 void mapIndex(typename Traits::DOFIndex di, typename Traits::ContainerIndex& ci) const
38 {
39 ci = di[0];
40 }
41
42 typename Traits::SizeType size() const
43 {
44 return _gv.size(0);
45 }
46
47 typename Traits::SizeType blockCount() const
48 {
49 return size();
50 }
51
52 typename Traits::SizeType maxLocalSize() const
53 {
54 return 1;
55 }
56
57 void update()
58 {
59 }
60
61 SingleCodimLeafOrdering(const GV& gv)
62 : _gv(gv)
63 {
64 }
65
66 bool container_blocked() const
67 {
68 return false;
69 }
70
71 private:
72
73 GV _gv;
74
75 };
76
77
78 template<typename GFS, typename Transformation>
79 struct leaf_gfs_to_ordering_descriptor<GFS,Transformation,SingleCodimMapper>
80 {
81
82 static const bool recursive = false;
83
84 typedef SingleCodimLeafOrdering<
85 typename GFS::Traits::GridView,
86 SimpleDOFIndex<typename GFS::Traits::SizeType>,
87 SimpleContainerIndex<typename GFS::Traits::SizeType>
88 > transformed_type;
89
90 typedef std::shared_ptr<transformed_type> transformed_storage_type;
91
92 static transformed_type transform(const GFS& gfs, const Transformation& t)
93 {
94 return transformed_type(gfs.gridView());
95 }
96
97 static transformed_storage_type transform_storage(std::shared_ptr<const GFS> gfs, const Transformation& t)
98 {
99 return std::make_shared<transformed_type>(gfs->gridView());
100 }
101
102 };
103
105
106 } // namespace PDELab
107} // namespace Dune
108
109#endif // DUNE_PDELAB_ORDERING_SINGLECODIMLEAFORDERING_HH
Dune namespace.
Definition: alignedallocator.hh:14
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 15, 22:36, 2024)