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/auxiliary/Option.hpp" 33 #include "openPMD/auxiliary/Variant.hpp" 34 #include "openPMD/backend/Attributable.hpp" 35 #include "openPMD/backend/Container.hpp" 36 #include "openPMD/config.hpp" 37 #include "openPMD/version.hpp" 47 #ifndef OPENPMD_private 48 # define OPENPMD_private private 55 class WriteIterations;
72 std::string
const & filepath,
75 std::string
const & options =
"{}" );
79 std::string
const & filepath,
81 std::string
const & options =
"{}" );
145 std::string
author()
const;
164 Series&
setSoftware(std::string
const& newName, std::string
const& newVersion = std::string(
"unspecified"));
178 [[deprecated(
"Set the version with the second argument of setSoftware()")]]
185 std::string
date()
const;
247 std::string
name()
const;
300 using iterations_iterator = decltype( iterations )::iterator;
302 std::unique_ptr< ParsedInput > parseInput(std::string);
303 void init(std::shared_ptr< AbstractIOHandler >, std::unique_ptr< ParsedInput >);
305 std::future< void > flush_impl(
306 iterations_iterator begin, iterations_iterator end );
307 void flushFileBased( iterations_iterator begin, iterations_iterator end );
308 void flushGroupBased( iterations_iterator begin, iterations_iterator end );
309 void flushMeshesPath();
310 void flushParticlesPath();
311 void readFileBased( );
320 void readGroupBased(
bool init =
true );
324 std::string iterationFilename( uint64_t i );
325 void openIteration( uint64_t index,
Iteration iteration );
353 iterations_iterator it,
363 std::shared_ptr< StepStatus > m_stepStatus =
364 std::make_shared< StepStatus >( StepStatus::NoStep );
366 static constexpr
char const *
const BASEPATH =
"/data/%T/";
368 std::shared_ptr< IterationEncoding > m_iterationEncoding;
369 std::shared_ptr< std::string > m_name;
370 std::shared_ptr< Format > m_format;
372 std::shared_ptr< std::string > m_filenamePrefix;
373 std::shared_ptr< std::string > m_filenamePostfix;
374 std::shared_ptr< int > m_filenamePadding;
376 std::shared_ptr< auxiliary::Option< WriteIterations > > m_writeIterations =
377 std::make_shared< auxiliary::Option< WriteIterations > >();
389 using iterations_t = decltype( Series::iterations );
390 using index_t = iterations_t::key_type;
391 index_t
const iterationIndex;
394 template<
typename Iteration_t >
396 :
Iteration( std::forward< Iteration_t >( it ) )
397 , iterationIndex( index )
404 using iteration_index_t = IndexedIteration::index_t;
409 iteration_index_t m_currentIteration = 0;
454 using iterations_t = decltype( Series::iterations );
490 struct SharedResources
499 using key_type =
typename iterations_t::key_type;
500 using value_type =
typename iterations_t::key_type;
504 std::shared_ptr< SharedResources > shared;
508 operator[]( key_type
const & key )
override;
510 operator[]( key_type && key )
override;
Subclass of Iteration that knows its own index withing the containing Series.
Definition: Series.hpp:384
Series & setOpenPMD(std::string const &openPMD)
Set the version of the enforced openPMD standard.
Definition: Series.cpp:128
std::string basePath() const
Definition: Series.cpp:148
Access
File access mode to use during IO.
Definition: Access.hpp:28
Series & setSoftwareDependencies(std::string const &newSoftwareDependencies)
Indicate dependencies of software that were used to create the file.
Definition: Series.cpp:266
std::string softwareDependencies() const
Definition: Series.cpp:260
Logical compilation of data from one snapshot (e.g.
Definition: Iteration.hpp:38
Series & setMachine(std::string const &newMachine)
Indicate the machine or relevant hardware that created the file.
Definition: Series.cpp:279
std::string meshesPath() const
Definition: Series.cpp:165
ReadIterations readIterations()
Entry point to the reading end of the streaming API.
Definition: Series.cpp:365
Series & setDate(std::string const &date)
Indicate the date of creation.
Definition: Series.cpp:253
Series & setName(std::string const &name)
Set the pattern for file names.
Definition: Series.cpp:339
Series & setBasePath(std::string const &basePath)
Set the common prefix for all data sets and sub-groups of a specific iteration.
Definition: Series.cpp:154
std::string machine() const
Definition: Series.cpp:273
AdvanceStatus
In step-based mode (i.e.
Definition: Streaming.hpp:20
AdvanceMode
In step-based mode (i.e.
Definition: Streaming.hpp:33
std::string name() const
Definition: Series.cpp:333
std::string author() const
Definition: Series.cpp:207
Writing side of the streaming API.
Definition: Series.hpp:484
Reading side of the streaming API.
Definition: Series.hpp:449
std::string iterationFormat() const
Definition: Series.cpp:313
Root level of the openPMD hierarchy.
Definition: Series.hpp:64
void flush()
Execute all required remaining IO operations to write or read data.
Definition: Series.cpp:359
uint32_t openPMDextension() const
Definition: Series.cpp:135
std::string backend() const
The currently used backend.
Definition: Series.cpp:353
Simple Option type based on variantSrc::variant.
Definition: Option.hpp:47
Series & setMeshesPath(std::string const &meshesPath)
Set the path to mesh records, relative(!) to basePath.
Definition: Series.cpp:171
Public definitions of openPMD-api.
Definition: Date.cpp:29
IterationEncoding iterationEncoding() const
Definition: Series.cpp:286
Definition: Series.hpp:402
Series & setIterationFormat(std::string const &iterationFormat)
Set a pattern describing how to access single iterations in the raw file.
Definition: Series.cpp:319
Series & setSoftwareVersion(std::string const &softwareVersion)
Indicate the version of the software/code/simulation that created the file.
Definition: Series.cpp:240
Series & setIterationEncoding(IterationEncoding iterationEncoding)
Set the encoding style for multiple iterations in this series.
Definition: Series.cpp:292
IterationEncoding
Encoding scheme of an Iterations Series'.
Definition: IterationEncoding.hpp:32
Series & setParticlesPath(std::string const &particlesPath)
Set the path to groups for each particle species, relative(!) to basePath.
Definition: Series.cpp:192
Series & setAuthor(std::string const &author)
Indicate the author and contact for the information in the file.
Definition: Series.cpp:213
WriteIterations writeIterations()
Entry point to the writing end of the streaming API.
Definition: Series.cpp:371
std::string softwareVersion() const
Definition: Series.cpp:234
Series & setOpenPMDextension(uint32_t openPMDextension)
Set a 32-bit mask of applied extensions to the openPMD standard.
Definition: Series.cpp:141
std::string particlesPath() const
Definition: Series.cpp:186
std::string date() const
Definition: Series.cpp:247
Series & setSoftware(std::string const &newName, std::string const &newVersion=std::string("unspecified"))
Indicate the software/code/simulation that created the file.
Definition: Series.cpp:226
std::string openPMD() const
Definition: Series.cpp:122
std::string software() const
Definition: Series.cpp:220
Layer to manage storage of attributes associated with file objects.
Definition: Attributable.hpp:65