23 #include "openPMD/config.hpp"
24 #include "openPMD/backend/Attributable.hpp"
25 #include "openPMD/backend/Container.hpp"
26 #include "openPMD/IO/AbstractIOHandler.hpp"
27 #include "openPMD/IO/Access.hpp"
28 #include "openPMD/IO/Format.hpp"
29 #include "openPMD/Iteration.hpp"
30 #include "openPMD/IterationEncoding.hpp"
31 #include "openPMD/Streaming.hpp"
32 #include "openPMD/WriteIterations.hpp"
33 #include "openPMD/auxiliary/Option.hpp"
34 #include "openPMD/auxiliary/Variant.hpp"
35 #include "openPMD/backend/Attributable.hpp"
36 #include "openPMD/backend/Container.hpp"
37 #include "openPMD/config.hpp"
38 #include "openPMD/version.hpp"
48 #ifndef OPENPMD_private
49 # define OPENPMD_private private
57 class SeriesInterface;
85 std::string m_filenamePrefix;
86 std::string m_filenamePostfix;
87 int m_filenamePadding = -1;
98 bool m_parseLazily =
false;
99 bool m_lastFlushSuccessful =
true;
188 std::string
author()
const;
221 [[deprecated(
"Set the version with the second argument of setSoftware()")]]
228 std::string
date()
const;
293 std::string
name()
const;
315 static constexpr
char const *
const BASEPATH =
"/data/%T/";
318 using iterations_t = decltype(internal::SeriesData::iterations);
319 using iterations_iterator = iterations_t::iterator;
331 throw std::runtime_error(
332 "[Series] Cannot use default-constructed Series." );
344 throw std::runtime_error(
345 "[Series] Cannot use default-constructed Series." );
348 std::unique_ptr< ParsedInput > parseInput(std::string);
349 bool hasExpansionPattern( std::string filenameWithExtension );
350 bool reparseExpansionPattern( std::string filenameWithExtension );
351 void init(std::shared_ptr< AbstractIOHandler >, std::unique_ptr< ParsedInput >);
364 std::future< void > flush_impl(
365 iterations_iterator begin,
366 iterations_iterator end,
368 bool flushIOHandler =
true );
369 void flushFileBased( iterations_iterator begin, iterations_iterator end );
377 void flushGorVBased( iterations_iterator begin, iterations_iterator end );
378 void flushMeshesPath();
379 void flushParticlesPath();
380 void readFileBased( );
381 void readOneIterationFileBased( std::string
const & filePath );
387 void readGorVBased(
bool init =
true );
389 std::string iterationFilename( uint64_t i );
391 enum class IterationOpened : bool
402 IterationOpened openIterationIfDirty( uint64_t index,
Iteration iteration );
409 void openIteration( uint64_t index,
Iteration iteration );
437 iterations_iterator it,
445 friend struct SeriesShared;
453 std::string
const & filepath,
456 std::string
const & options =
"{}" );
460 std::string
const & filepath,
462 std::string
const & options =
"{}" );
481 std::shared_ptr< internal::SeriesInternal > m_series;
488 std::string
const & filepath,
491 std::string
const & options =
"{}" );
504 std::string
const & filepath,
506 std::string
const & options =
"{}" );
508 virtual ~
Series() =
default;
518 operator bool()
const;
550 #include "openPMD/ReadIterations.hpp"
Layer to mirror structure of logical data and persistent data in file.
Definition: Writable.hpp:64
Definition: Attributable.hpp:68
SeriesInterface & setMeshesPath(std::string const &meshesPath)
Set the path to mesh records, relative(!) to basePath.
Definition: Series.cpp:151
std::string machine() const
Definition: Series.cpp:255
SeriesInterface & setBasePath(std::string const &basePath)
Set the common prefix for all data sets and sub-groups of a specific iteration.
Definition: Series.cpp:134
IterationEncoding
Encoding scheme of an Iterations Series'.
Definition: IterationEncoding.hpp:32
Format
File format to use during IO.
Definition: Format.hpp:30
SeriesInterface & setMachine(std::string const &newMachine)
Indicate the machine or relevant hardware that created the file.
Definition: Series.cpp:261
SeriesInterface & setParticlesPath(std::string const &particlesPath)
Set the path to groups for each particle species, relative(!) to basePath.
Definition: Series.cpp:173
SeriesInterface & setSoftwareDependencies(std::string const &newSoftwareDependencies)
Indicate dependencies of software that were used to create the file.
Definition: Series.cpp:248
std::string software() const
Definition: Series.cpp:202
std::string author() const
Definition: Series.cpp:189
SeriesInterface & setOpenPMD(std::string const &openPMD)
Set the version of the enforced openPMD standard.
Definition: Series.cpp:108
std::string meshesPath() const
Definition: Series.cpp:145
StepStatus m_stepStatus
Whether a step is currently active for this iteration.
Definition: Series.hpp:97
Writing side of the streaming API.
Definition: WriteIterations.hpp:47
Definition: Series.hpp:443
AdvanceStatus
In step-based mode (i.e.
Definition: Streaming.hpp:20
Root level of the openPMD hierarchy.
Definition: Series.hpp:478
std::string name() const
Definition: Series.cpp:334
std::string date() const
Definition: Series.cpp:229
Simple Option type based on variantSrc::variant.
Definition: Option.hpp:47
Implementation for the root level of the openPMD hierarchy.
Definition: Series.hpp:112
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:39
Public definitions of openPMD-api.
Definition: Date.cpp:29
SeriesInterface & setDate(std::string const &date)
Indicate the date of creation.
Definition: Series.cpp:235
StepStatus
Used in step-based mode (i.e.
Definition: Streaming.hpp:44
std::string softwareDependencies() const
Definition: Series.cpp:242
std::string openPMD() const
Definition: Series.cpp:102
ReadIterations readIterations()
Entry point to the reading end of the streaming API.
Definition: Series.cpp:1571
AdvanceMode
In step-based mode (i.e.
Definition: Streaming.hpp:33
Definition: ReadIterations.hpp:50
Layer to manage storage of attributes associated with file objects.
Definition: Attributable.hpp:115
SeriesInterface & setIterationEncoding(IterationEncoding iterationEncoding)
Set the encoding style for multiple iterations in this series.
Definition: Series.cpp:274
std::string backend() const
The currently used backend.
Definition: Series.cpp:374
SeriesInterface & setName(std::string const &name)
Set the pattern for file names.
Definition: Series.cpp:340
std::string iterationFormat() const
Definition: Series.cpp:313
SeriesInterface & setIterationFormat(std::string const &iterationFormat)
Set a pattern describing how to access single iterations in the raw file.
Definition: Series.cpp:319
Access
File access mode to use during IO.
Definition: Access.hpp:28
WriteIterations writeIterations()
Entry point to the writing end of the streaming API.
Definition: Series.cpp:1577
std::string softwareVersion() const
Definition: Series.cpp:216
std::string basePath() const
Definition: Series.cpp:128
FlushLevel
Determine what items should be flushed upon Series::flush()
Definition: AbstractIOHandler.hpp:63
void flush()
Execute all required remaining IO operations to write or read data.
Definition: Series.cpp:380
SeriesInterface & setSoftware(std::string const &newName, std::string const &newVersion=std::string("unspecified"))
Indicate the software/code/simulation that created the file.
Definition: Series.cpp:208
SeriesInterface & setAuthor(std::string const &author)
Indicate the author and contact for the information in the file.
Definition: Series.cpp:195
Reading side of the streaming API.
Definition: ReadIterations.hpp:92
IterationEncoding iterationEncoding() const
Definition: Series.cpp:268
Data members for Series.
Definition: Series.hpp:67
SeriesInterface & setSoftwareVersion(std::string const &softwareVersion)
Indicate the version of the software/code/simulation that created the file.
Definition: Series.cpp:222
SeriesInterface & setOpenPMDextension(uint32_t openPMDextension)
Set a 32-bit mask of applied extensions to the openPMD standard.
Definition: Series.cpp:121
std::string particlesPath() const
Definition: Series.cpp:167
uint32_t openPMDextension() const
Definition: Series.cpp:115