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;
156 template <
typename T,
typename T_key,
typename T_container>
160 template <
typename T>
161 friend T &internal::makeOwning(
T &
self,
Series);
174 using IterationIndex_t = uint64_t;
181 template <
typename T>
190 template <
typename T>
198 template <
typename T>
207 template <
typename T>
279 [[deprecated(
"This attribute is no longer set by the openPMD-api.")]]
bool
298 uint64_t getCachedIterationIndex()
const;
301 std::shared_ptr<Data_t> m_iterationData;
303 inline Data_t const &get()
const
305 return *m_iterationData;
310 return *m_iterationData;
313 inline std::shared_ptr<Data_t> getShared()
315 return m_iterationData;
318 inline void setData(std::shared_ptr<Data_t> data)
320 m_iterationData = std::move(data);
321 Attributable::setData(m_iterationData);
349 void reread(std::string
const &path);
352 std::string
const &filePath,
353 std::string
const &groupPath,
356 std::string
const &groupPath, internal::BeginStep
const &beginStep);
357 void read_impl(std::string
const &groupPath);
358 void readMeshes(std::string
const &meshesPath);
359 void readParticles(std::string
const &particlesPath);
366 struct BeginStepStatus
368 using AvailableIterations_t = std::vector<IterationIndex_t>;
375 AvailableIterations_t iterationsInOpenedStep;
389 inline operator std::tuple<AdvanceStatus &, AvailableIterations_t &>()
391 return std::tuple<AdvanceStatus &, AvailableIterations_t &>{
392 stepStatus, iterationsInOpenedStep};
403 BeginStepStatus beginStep(
bool reread);
410 static BeginStepStatus
411 beginStep(std::optional<Iteration> thisObject,
Series &series,
bool reread);
445 virtual void linkHierarchy(
Writable &w);
452 void runDeferredParseAccess();
460 constexpr
static bool is_noop =
false;
461 template <
typename Iterator>
462 void operator()(Iterator &it)
464 it->second.get().m_iterationIndex = it->first;
469 extern template float Iteration::time<float>()
const;
471 extern template double Iteration::time<double>()
const;
473 extern template long double Iteration::time<long double>()
const;
475 template <
typename T>
478 return this->readFloatingpoint<T>(
"time");
481 extern template float Iteration::dt<float>()
const;
483 extern template double Iteration::dt<double>()
const;
485 extern template long double Iteration::dt<long double>()
const;
487 template <
typename T>
490 return this->readFloatingpoint<T>(
"dt");
503 using index_t = Iteration::IterationIndex_t;
504 index_t
const iterationIndex;
507 :
Iteration(std::move(pair.second)), iterationIndex(pair.first)
511 template <
typename Iteration_t>
513 :
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:498
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:155
Iteration & setTimeUnitSI(double newTimeUnitSI)
Set the conversion factor to convert time and dt to seconds.
Definition: Iteration.cpp:99
bool parsed() const
Has the iteration been parsed yet? If not, it will contain no structure yet.
Definition: Iteration.cpp:212
double timeUnitSI() const
Definition: Iteration.cpp:94
Iteration & setTime(T newTime)
Set the global reference time for this iteration.
Definition: Iteration.cpp:73
bool closedByWriter() const
Has the iteration been closed by the writer? Background: Upon calling Iteration::close(),...
Definition: Iteration.cpp:226
T time() const
Definition: Iteration.hpp:476
bool closed() const
Has the iteration been closed?
Definition: Iteration.cpp:193
T dt() const
Definition: Iteration.hpp:488
Iteration & open()
Open an iteration.
Definition: Iteration.cpp:156
Iteration & close(bool flush=true)
Close an iteration.
Definition: Iteration.cpp:107
Iteration & setDt(T newDt)
Set the time step used to reach this iteration.
Definition: Iteration.cpp:84
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< uint64_t > m_iterationIndex
Cached copy of the key under which this Iteration lives in Series::iterations.
Definition: Iteration.hpp:139
std::optional< DeferredParseAccess > m_deferredParseAccess
Information on a parsing request that has not yet been executed.
Definition: Iteration.hpp:145
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
Container Element Creation Policy.
Definition: Container.hpp:52