6 #include <dune/geometry/referenceelements.hh>
7 #include <dune/grid/common/partitionset.hh>
8 #include <dune/grid/utility/globalindexset.hh>
18 template <
class Gr
idView,
class Partition = Partitions::InteriorBorder>
39 auto const& indexSet =
gridView_.indexSet();
45 numCells_ = std::distance(std::begin(e), std::end(e));
64 auto v = vertex.geometry().center();
65 for (std::size_t j = 0; j < v.size(); ++j)
66 data.emplace_back(v[j]);
67 for (std::size_t j = v.size(); j < 3u; ++j)
76 std::vector<std::uint64_t> data;
80 data.emplace_back(globalIndexSet.index(vertex));
95 auto const& indexSet =
gridView_.indexSet();
96 auto types = indexSet.types(0);
97 int maxVertices = std::accumulate(types.begin(), types.end(), 1, [](
int m, GeometryType t) {
98 auto refElem = referenceElement<double,dim>(t);
99 return std::max(m, refElem.size(dim));
107 std::int64_t old_o = 0;
110 for (
unsigned int j = 0; j < c.subEntities(
dim); ++j)
119 template <
class T,
class GlobalFunction>
122 std::vector<T> data(
numPoints_ * fct.numComponents());
123 auto const& indexSet =
gridView_.indexSet();
124 auto localFct = localFunction(fct);
128 auto refElem = referenceElement(e.geometry());
129 for (
unsigned int j = 0; j < e.subEntities(
dim); ++j) {
130 std::size_t idx = fct.numComponents() *
indexMap_[indexSet.subIndex(e,cellType.permutation(j),
dim)];
131 for (
int comp = 0; comp < fct.numComponents(); ++comp)
132 data[idx + comp] = T(localFct.evaluate(comp, refElem.position(cellType.permutation(j),
dim)));
GridViewType GridView
Definition: datacollectorinterface.hh:25
Implementation of DataCollector for linear cells, with continuous data.
Definition: continuousdatacollector.hh:21
std::uint64_t numPointsImpl() const
Return number of grid vertices.
Definition: continuousdatacollector.hh:52
ContinuousDataCollector(GridView const &gridView)
Definition: continuousdatacollector.hh:30
std::vector< T > pointDataImpl(GlobalFunction const &fct) const
Evaluate the fct at the corners of the elements.
Definition: continuousdatacollector.hh:120
void updateImpl()
Collect the vertex indices.
Definition: continuousdatacollector.hh:35
std::uint64_t numCells_
Definition: continuousdatacollector.hh:142
std::uint64_t numCellsImpl() const
Return number of grid cells.
Definition: continuousdatacollector.hh:86
std::vector< std::int64_t > indexMap_
Definition: continuousdatacollector.hh:143
Cells cellsImpl() const
Definition: continuousdatacollector.hh:93
std::vector< T > pointsImpl() const
Return the coordinates of all grid vertices in the order given by the indexSet.
Definition: continuousdatacollector.hh:59
std::vector< std::uint64_t > pointIdsImpl() const
Return a vector of global unique ids of the points.
Definition: continuousdatacollector.hh:74
std::uint64_t numPoints_
Definition: continuousdatacollector.hh:141
Definition: unstructureddatacollector.hh:14
std::vector< std::int64_t > offsets
Definition: unstructureddatacollector.hh:16
std::vector< std::int64_t > connectivity
Definition: unstructureddatacollector.hh:17
std::vector< std::uint8_t > types
Definition: unstructureddatacollector.hh:15
Definition: unstructureddatacollector.hh:23
@ dim
Definition: datacollectorinterface.hh:28
static constexpr auto partition
The partitionset to collect data from.
Definition: datacollectorinterface.hh:23
Cells cells() const
Return cell types, offsets, and connectivity.
Definition: unstructureddatacollector.hh:36
GridView gridView_
Definition: datacollectorinterface.hh:133
Mapping of Dune geometry types to VTK cell types.
Definition: types.hh:160
std::uint8_t type() const
Return VTK Cell type.
Definition: types.hh:203
int permutation(int idx) const
Return a permutation of Dune elemenr vertices to conform to VTK element numbering.
Definition: types.hh:209