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"
30 #include "openPMD/backend/HierarchyVisitor.hpp"
31 #include "openPMD/backend/scientific_defaults/ScientificDefaults.hpp"
47 enum class CloseStatus
57 namespace BeginStepTypes
69 using BeginStep = std::variant<
74 namespace BeginStepTypes
76 template <
typename T,
typename... Args>
77 constexpr
auto make(Args &&...args) -> BeginStep
79 return BeginStep{
T{std::forward<Args>(args)...}};
115 CloseStatus m_closed = CloseStatus::Open;
123 bool allow_reopening_implicitly =
false;
173 template <
typename T,
typename T_key,
typename T_container>
177 template <
typename T>
178 friend T &internal::makeOwning(
T &
self,
Series);
193 using IterationIndex_t = uint64_t;
200 template <
typename T>
209 template <
typename T>
217 template <
typename T>
226 template <
typename T>
298 [[deprecated(
"This attribute is no longer set by the openPMD-api.")]]
bool
319 uint64_t getCachedIterationIndex()
const;
322 std::shared_ptr<Data_t> m_iterationData;
324 inline Data_t const &get()
const
326 return *m_iterationData;
331 return *m_iterationData;
334 inline std::shared_ptr<Data_t> getShared()
336 return m_iterationData;
339 inline void setData(std::shared_ptr<Data_t> data)
341 m_iterationData = std::move(data);
342 Attributable::setData(m_iterationData);
370 void reread(std::string
const &path);
373 std::string
const &filePath,
374 std::string
const &groupPath,
377 std::string
const &groupPath, internal::BeginStep
const &beginStep);
378 void read_impl(std::string
const &groupPath);
379 void readMeshes(std::string
const &meshesPath);
380 void readParticles(std::string
const &particlesPath);
387 struct BeginStepStatus
389 using AvailableIterations_t = std::vector<IterationIndex_t>;
396 AvailableIterations_t iterationsInOpenedStep;
410 inline operator std::tuple<AdvanceStatus &, AvailableIterations_t &>()
412 return std::tuple<AdvanceStatus &, AvailableIterations_t &>{
413 stepStatus, iterationsInOpenedStep};
424 BeginStepStatus beginStep(
bool reread);
431 static BeginStepStatus
432 beginStep(std::optional<Iteration> thisObject,
Series &series,
bool reread);
466 void linkHierarchy(
Writable &w)
override;
473 void runDeferredParseAccess();
476 void scientificDefaults_impl(
477 internal::WriteOrRead, OpenpmdStandard)
override;
485 constexpr
static bool is_noop =
false;
486 template <
typename Iterator>
487 void operator()(Iterator &it)
489 it->second.get().m_iterationIndex = it->first;
494 extern template float Iteration::time<float>()
const;
496 extern template double Iteration::time<double>()
const;
498 extern template long double Iteration::time<long double>()
const;
500 template <
typename T>
503 return this->readFloatingpoint<T>(
"time");
506 extern template float Iteration::dt<float>()
const;
508 extern template double Iteration::dt<double>()
const;
510 extern template long double Iteration::dt<long double>()
const;
512 template <
typename T>
515 return this->readFloatingpoint<T>(
"dt");
528 using index_t = Iteration::IterationIndex_t;
529 index_t
const iterationIndex;
532 :
Iteration(std::move(pair.second)), iterationIndex(pair.first)
536 template <
typename Iteration_t>
538 :
Iteration(std::forward<Iteration_t>(it)), iterationIndex(index)
Layer to manage storage of attributes associated with file objects.
Definition: Attributable.hpp:225
Map-like container that enforces openPMD requirements and handles IO.
Definition: Container.hpp:106
Definition: HierarchyVisitor.hpp:20
Subclass of Iteration that knows its own index withing the containing Series.
Definition: Iteration.hpp:523
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:172
Iteration & setTimeUnitSI(double newTimeUnitSI)
Set the conversion factor to convert time and dt to seconds.
Definition: Iteration.cpp:111
bool parsed() const
Has the iteration been parsed yet? If not, it will contain no structure yet.
Definition: Iteration.cpp:230
double timeUnitSI() const
Definition: Iteration.cpp:106
Iteration & setTime(T newTime)
Set the global reference time for this iteration.
Definition: Iteration.cpp:85
bool closedByWriter() const
Has the iteration been closed by the writer? Background: Upon calling Iteration::close(),...
Definition: Iteration.cpp:244
T time() const
Definition: Iteration.hpp:501
bool closed() const
Has the iteration been closed?
Definition: Iteration.cpp:211
T dt() const
Definition: Iteration.hpp:513
Iteration & open()
Open an iteration.
Definition: Iteration.cpp:174
Iteration & close(bool flush=true)
Close an iteration.
Definition: Iteration.cpp:119
Iteration & setDt(T newDt)
Set the time step used to reach this iteration.
Definition: Iteration.cpp:96
void visitHierarchy(HierarchyVisitor &v, bool recursive) override
Visitor pattern for the openPMD object hierarchy in postfix traversal.
Definition: Iteration.cpp:257
Definition: Iteration.hpp:543
Legacy Iterator type for Series::readIterations()
Definition: ReadIterations.hpp:39
Definition: Iteration.hpp:152
void visitHierarchy(HierarchyVisitor &v, bool recursive) override
Visitor pattern for the openPMD object hierarchy in postfix traversal.
Definition: Iteration.cpp:57
Definition: Iteration.hpp:158
void visitHierarchy(HierarchyVisitor &v, bool recursive) override
Visitor pattern for the openPMD object hierarchy in postfix traversal.
Definition: Iteration.cpp:62
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:77
Definition: Attributable.hpp:110
Definition: Iteration.hpp:104
StepStatus m_stepStatus
Whether a step is currently active for this iteration.
Definition: Iteration.hpp:132
std::optional< uint64_t > m_iterationIndex
Cached copy of the key under which this Iteration lives in Series::iterations.
Definition: Iteration.hpp:141
std::optional< DeferredParseAccess > m_deferredParseAccess
Information on a parsing request that has not yet been executed.
Definition: Iteration.hpp:147
Definition: ScientificDefaults.hpp:23
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:64
Definition: Iteration.hpp:62
Definition: Iteration.hpp:60
Definition: Iteration.hpp:84
uint64_t iteration
The iteration index as accessed by the user in series.iterations[i].
Definition: Iteration.hpp:94
std::string path
The group path within /data containing this iteration.
Definition: Iteration.hpp:90
bool fileBased
If this iteration is part of a Series with file-based layout.
Definition: Iteration.hpp:99
Parameters recursively passed through the openPMD hierarchy when flushing.
Definition: AbstractIOHandler.hpp:106
Container Element Creation Policy.
Definition: Container.hpp:54