1#ifndef OPAL_H5PARTWRAPPER_H
2#define OPAL_H5PARTWRAPPER_H
13#include "Utility/IpplInfo.h"
20#define REPORTONERROR(rc) H5PartWrapper::reportOnError(rc, __FILE__, __LINE__)
21#define READFILEATTRIB(type, file, name, value) \
22 REPORTONERROR(H5ReadFileAttrib##type(file, name, value));
23#define WRITESTRINGFILEATTRIB(file, name, value) \
24 REPORTONERROR(H5WriteFileAttribString(file, name, value));
25#define WRITEFILEATTRIB(type, file, name, value, length) \
26 REPORTONERROR(H5WriteFileAttrib##type(file, name, value, length));
28#define READSTEPATTRIB(type, file, name, value) \
29 REPORTONERROR(H5ReadStepAttrib##type(file, name, value));
30#define WRITESTRINGSTEPATTRIB(file, name, value) \
31 REPORTONERROR(H5WriteStepAttribString(file, name, value));
32#define WRITESTEPATTRIB(type, file, name, value, length) \
33 REPORTONERROR(H5WriteStepAttrib##type(file, name, value, length));
35#define READDATA(type, file, name, value) REPORTONERROR(H5PartReadData##type(file, name, value));
36#define WRITEDATA(type, file, name, value) REPORTONERROR(H5PartWriteData##type(file, name, value));
58 H5PartWrapper(
const std::string& fileName, h5_int32_t flags = H5_O_WRONLY);
60 const std::string& fileName,
int restartStep, std::string sourceFile,
61 h5_int32_t flags = H5_O_RDWR);
63 void open(h5_int32_t flags);
65 void copyFile(
const std::string& sourceFile,
int lastStep = -1, h5_int32_t flags = H5_O_WRONLY);
68 void copyStep(h5_file_t source,
int step);
71 void sendFailureMessage(
bool failed,
const std::string& where,
const std::string& what);
74 static void reportOnError(h5_int64_t rc,
const char* file,
int line);
87 *ippl::Error <<
"H5 rc= " << rc <<
" in " << file <<
" @ line " << line << endl;
94 h5_ssize_t numStepsInSource = H5GetNumSteps(
file_m);
95 h5_ssize_t
readStep = numStepsInSource - 1;
98 h5_float64_t pathLength;
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
#define REPORTONERROR(rc)
#define READSTEPATTRIB(type, file, name, value)
bool startedFromExistingFile_m
virtual void readStep(PartBunch_t *, h5_ssize_t firstParticle, h5_ssize_t lastParticle)=0
size_t getNumParticles() const
void receiveFailureMessage(int sourceNode, const std::string &where, const std::string &what)
virtual bool predecessorIsSameFlavour() const =0
void copyStepData(h5_file_t source)
void copyFile(const std::string &sourceFile, int lastStep=-1, h5_int32_t flags=H5_O_WRONLY)
void open(h5_int32_t flags)
virtual void writeStep(PartBunch_t *, const std::map< std::string, double > &)=0
virtual void readHeader()=0
void copyFileSystem(const std::string &sourceFile)
H5PartWrapper(const std::string &fileName, h5_int32_t flags=H5_O_WRONLY)
void copyHeader(h5_file_t source)
std::string predecessorOPALFlavour_m
void storeCavityInformation()
virtual void writeHeader()=0
void copyStepHeader(h5_file_t source)
void copyStep(h5_file_t source, int step)
static std::string copyFilePrefix_m
void sendFailureMessage(bool failed, const std::string &where, const std::string &what)
static void reportOnError(h5_int64_t rc, const char *file, int line)