6#include <dune/common/fvector.hh>
16 template <
class Gr
idView,
class Derived>
23 using ctype =
typename GridView::ctype;
38 return this->
asDerived().wholeExtentImpl();
48 template <
class Writer>
51 this->
asDerived().writeLocalPieceImpl(writer);
55 template <
class Writer>
58 this->
asDerived().writePiecesImpl(writer);
85 return this->
asDerived().template coordinatesImpl<T>();
104 requests_.resize(numRanks, MPI_REQUEST_NULL);
105 for (
int i = 1; i < numRanks; ++i)
117 std::uint64_t num = 1;
118 for (
int d = 0; d <
dim; ++d)
137 template <
class T,
class GlobalFunction>
144 template <
class Writer>
151 MPI_Status sendStatus;
168 template <
class Writer>
175 for (
int p = 1; p < numRanks; ++p) {
178 MPI_Waitany(numRanks,
requests_.data(), &idx, &status);
179 if (idx != MPI_UNDEFINED) {
180 assert(idx == status.MPI_SOURCE && status.MPI_TAG == 6);
185 writer(0, this->
extent(),
true);
211 std::array<std::vector<T>, 3> ordinates{};
212 for (
int d = 0; d <
dim; ++d) {
214 ordinates[d].resize(s);
215 for (
int i = 0; i < s; ++i)
219 for (
int d =
dim; d < 3; ++d)
220 ordinates[d].resize(1, T(0));
239 template <
class Gr
idView,
class Gr
id>
240 struct StructuredDataCollectorImpl;
243 template <
class Gr
idView>
245 =
typename Impl::StructuredDataCollectorImpl<GridView, typename GridView::Grid>::type;
typename Impl::StructuredDataCollectorImpl< GridView, typename GridView::Grid >::type StructuredDataCollector
Definition: structureddatacollector.hh:245
Base class for data collectors in a CRTP style.
Definition: datacollectorinterface.hh:20
std::uint64_t numPoints() const
Return the number of points in (this partition of the) grid.
Definition: datacollectorinterface.hh:58
static constexpr auto partition
The partitionset to collect data from.
Definition: datacollectorinterface.hh:23
Derived & asDerived()
Definition: datacollectorinterface.hh:106
GridView GridView
Definition: datacollectorinterface.hh:25
@ dim
Definition: datacollectorinterface.hh:28
GridView gridView_
Definition: datacollectorinterface.hh:133
void update()
Update the DataCollector on the current GridView.
Definition: datacollectorinterface.hh:40
Implementation of DataCollector for linear cells, with continuous data.
Definition: continuousdatacollector.hh:21
The Interface for structured data-collectors.
Definition: structureddatacollector.hh:19
std::uint64_t numCellsImpl() const
Return number of grid cells.
Definition: structureddatacollector.hh:114
std::array< std::vector< T >, 3 > coordinatesImpl() const
Definition: structureddatacollector.hh:205
void writePieces(Writer const &writer) const
Call the writer with piece number and piece extent.
Definition: structureddatacollector.hh:56
MPI_Request sendRequest_
Definition: structureddatacollector.hh:232
FieldVector< ctype, 3 > originImpl() const
Definition: structureddatacollector.hh:190
typename GridView::ctype ctype
Definition: structureddatacollector.hh:23
std::vector< std::array< int, 6 > > extents_
Definition: structureddatacollector.hh:230
void writeLocalPiece(Writer const &writer) const
Call the writer with extent.
Definition: structureddatacollector.hh:49
void writePiecesImpl(Writer const &writer) const
Definition: structureddatacollector.hh:169
std::array< int, 6 > extent() const
Sequence of Index pairs [begin, end) for the cells in each direction of the local partition.
Definition: structureddatacollector.hh:42
std::array< int, 6 > wholeExtent() const
Sequence of Index pairs [begin, end) for the cells in each direction.
Definition: structureddatacollector.hh:36
std::array< std::vector< T >, 3 > coordinates() const
The coordinates defines point coordinates for an extent by specifying the ordinate along each axis.
Definition: structureddatacollector.hh:83
std::vector< T > pointDataImpl(GlobalFunction const &fct) const
Definition: structureddatacollector.hh:138
FieldVector< ctype, 3 > spacingImpl() const
Definition: structureddatacollector.hh:197
SubDataCollector subDataCollector_
Definition: structureddatacollector.hh:227
void updateImpl()
\copyref DefaultDataCollector::update.
Definition: structureddatacollector.hh:94
std::vector< T > pointsImpl() const
Definition: structureddatacollector.hh:131
FieldVector< ctype, 3 > origin() const
Lower left corner of the grid.
Definition: structureddatacollector.hh:65
StructuredDataCollectorInterface(GridView const &gridView)
Definition: structureddatacollector.hh:30
std::uint64_t numPointsImpl() const
Return number of grid vertices.
Definition: structureddatacollector.hh:124
void writeLocalPieceImpl(Writer const &writer) const
Definition: structureddatacollector.hh:145
std::vector< MPI_Request > requests_
Definition: structureddatacollector.hh:231
FieldVector< ctype, 3 > spacing() const
Constant grid spacing in each coordinate direction.
Definition: structureddatacollector.hh:71
Definition: function.hh:18