23 #include "openPMD/IterationEncoding.hpp"
24 #include "openPMD/Mesh.hpp"
25 #include "openPMD/ParticleSpecies.hpp"
26 #include "openPMD/Streaming.hpp"
27 #include "openPMD/auxiliary/Variant.hpp"
28 #include "openPMD/backend/Attributable.hpp"
29 #include "openPMD/backend/Container.hpp"
45 enum class CloseStatus
55 namespace BeginStepTypes
67 using BeginStep = std::variant<
72 namespace BeginStepTypes
74 template <
typename T,
typename... Args>
75 constexpr
auto make(Args &&...args) -> BeginStep
77 return BeginStep{
T{std::forward<Args>(args)...}};
113 CloseStatus m_closed = CloseStatus::Open;
121 bool allow_reopening_implicitly =
false;
147 template <
typename T,
typename T_key,
typename T_container>
151 template <
typename T>
152 friend T &internal::makeOwning(
T &
self,
Series);
163 using IterationIndex_t = uint64_t;
170 template <
typename T>
179 template <
typename T>
187 template <
typename T>
196 template <
typename T>
268 [[deprecated(
"This attribute is no longer set by the openPMD-api.")]]
bool
280 std::shared_ptr<Data_t> m_iterationData;
282 inline Data_t const &get()
const
284 return *m_iterationData;
289 return *m_iterationData;
292 inline std::shared_ptr<Data_t> getShared()
294 return m_iterationData;
297 inline void setData(std::shared_ptr<Data_t> data)
299 m_iterationData = std::move(data);
300 Attributable::setData(m_iterationData);
328 void reread(std::string
const &path);
331 std::string
const &filePath,
332 std::string
const &groupPath,
335 std::string
const &groupPath, internal::BeginStep
const &beginStep);
336 void read_impl(std::string
const &groupPath);
337 void readMeshes(std::string
const &meshesPath);
338 void readParticles(std::string
const &particlesPath);
345 struct BeginStepStatus
347 using AvailableIterations_t = std::vector<uint64_t>;
354 AvailableIterations_t iterationsInOpenedStep;
368 inline operator std::tuple<AdvanceStatus &, AvailableIterations_t &>()
370 return std::tuple<AdvanceStatus &, AvailableIterations_t &>{
371 stepStatus, iterationsInOpenedStep};
382 BeginStepStatus beginStep(
bool reread);
389 static BeginStepStatus
390 beginStep(std::optional<Iteration> thisObject,
Series &series,
bool reread);
424 virtual void linkHierarchy(
Writable &w);
431 void runDeferredParseAccess();
434 extern template float Iteration::time<float>()
const;
436 extern template double Iteration::time<double>()
const;
438 extern template long double Iteration::time<long double>()
const;
440 template <
typename T>
443 return this->readFloatingpoint<T>(
"time");
446 extern template float Iteration::dt<float>()
const;
448 extern template double Iteration::dt<double>()
const;
450 extern template long double Iteration::dt<long double>()
const;
452 template <
typename T>
455 return this->readFloatingpoint<T>(
"dt");
468 using index_t = Iteration::IterationIndex_t;
469 index_t
const iterationIndex;
472 :
Iteration(std::move(pair.second)), iterationIndex(pair.first)
476 template <
typename Iteration_t>
478 :
Iteration(std::forward<Iteration_t>(it)), iterationIndex(index)
Layer to manage storage of attributes associated with file objects.
Definition: Attributable.hpp:222
Map-like container that enforces openPMD requirements and handles IO.
Definition: Container.hpp:104
Subclass of Iteration that knows its own index withing the containing Series.
Definition: Iteration.hpp:463
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:146
Iteration & setTimeUnitSI(double newTimeUnitSI)
Set the conversion factor to convert time and dt to seconds.
Definition: Iteration.cpp:89
bool parsed() const
Has the iteration been parsed yet? If not, it will contain no structure yet.
Definition: Iteration.cpp:202
double timeUnitSI() const
Definition: Iteration.cpp:84
Iteration & setTime(T newTime)
Set the global reference time for this iteration.
Definition: Iteration.cpp:63
bool closedByWriter() const
Has the iteration been closed by the writer? Background: Upon calling Iteration::close(),...
Definition: Iteration.cpp:216
T time() const
Definition: Iteration.hpp:441
bool closed() const
Has the iteration been closed?
Definition: Iteration.cpp:183
T dt() const
Definition: Iteration.hpp:453
Iteration & open()
Open an iteration.
Definition: Iteration.cpp:146
Iteration & close(bool flush=true)
Close an iteration.
Definition: Iteration.cpp:97
Iteration & setDt(T newDt)
Set the time step used to reach this iteration.
Definition: Iteration.cpp:74
Legacy Iterator type for Series::readIterations()
Definition: ReadIterations.hpp:39
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:288
Based on the logic of the former class ReadIterations, integrating into itself the logic of former Wr...
Definition: StatefulIterator.hpp:204
Definition: ContainerImpls.hpp:36
Layer to mirror structure of logical data and persistent data in file.
Definition: Writable.hpp:76
Definition: Attributable.hpp:107
Definition: Iteration.hpp:102
StepStatus m_stepStatus
Whether a step is currently active for this iteration.
Definition: Iteration.hpp:130
std::optional< DeferredParseAccess > m_deferredParseAccess
Information on a parsing request that has not yet been executed.
Definition: Iteration.hpp:136
Public definitions of openPMD-api.
Definition: Date.cpp:29
StepStatus
Used in step-based mode (i.e.
Definition: Streaming.hpp:57
AdvanceStatus
In step-based mode (i.e.
Definition: Streaming.hpp:32
Definition: Iteration.hpp:62
Definition: Iteration.hpp:60
Definition: Iteration.hpp:58
Definition: Iteration.hpp:82
uint64_t iteration
The iteration index as accessed by the user in series.iterations[i].
Definition: Iteration.hpp:92
std::string path
The group path within /data containing this iteration.
Definition: Iteration.hpp:88
bool fileBased
If this iteration is part of a Series with file-based layout.
Definition: Iteration.hpp:97
Parameters recursively passed through the openPMD hierarchy when flushing.
Definition: AbstractIOHandler.hpp:106