OPAL (Object Oriented Parallel Accelerator Library)
2.2.0
OPAL
|
#include <LossDataSink.h>
Public Member Functions | |
LossDataSink () | |
LossDataSink (std::string elem, bool hdf5Save, ElementBase::ElementType type=ElementBase::ANY) | |
LossDataSink (const LossDataSink &rsh) | |
~LossDataSink () noexcept(false) | |
bool | inH5Mode () |
void | save (unsigned int numSets=1, OpalData::OPENMODE openMode=OpalData::OPENMODE::UNDEFINED) |
void | addReferenceParticle (const Vector_t &x, const Vector_t &p, double time, double spos, long long globalTrackStep) |
void | addParticle (const Vector_t &x, const Vector_t &p, const size_t id) |
void | addParticle (const Vector_t &x, const Vector_t &p, const size_t id, const double time, const size_t turn, const size_t &bunchNum=0) |
size_t | size () const |
std::set< SetStatistics > | computeStatistics (unsigned int numSets) |
Private Member Functions | |
void | openASCII () |
void | openH5 (h5_int32_t mode=H5_O_WRONLY) |
void | appendASCII () |
void | writeHeaderASCII () |
void | writeHeaderH5 () |
void | saveASCII () |
void | saveH5 (unsigned int setIdx) |
void | closeASCII () |
bool | hasNoParticlesToDump () |
bool | hasTimeAttribute () |
void | reportOnError (h5_int64_t rc, const char *file, int line) |
void | splitSets (unsigned int numSets) |
SetStatistics | computeSetStatistics (unsigned int setIdx) |
Private Attributes | |
std::string | fn_m |
bool | h5hut_mode_m |
std::ofstream | os_m |
h5_file_t | H5file_m |
used to write out data in H5hut mode More... | |
std::string | element_m |
h5_int64_t | H5call_m |
Current record, or time step, of H5 file. More... | |
std::vector< long > | id_m |
std::vector< double > | x_m |
std::vector< double > | y_m |
std::vector< double > | z_m |
std::vector< double > | px_m |
std::vector< double > | py_m |
std::vector< double > | pz_m |
std::vector< size_t > | bunchNum_m |
std::vector< size_t > | turn_m |
std::vector< double > | time_m |
std::vector< Vector_t > | RefPartR_m |
std::vector< Vector_t > | RefPartP_m |
std::vector< h5_int64_t > | globalTrackStep_m |
std::vector< double > | refTime_m |
std::vector< double > | spos_m |
std::vector< unsigned long > | startSet_m |
ElementBase::ElementType | type_m |
Definition at line 62 of file LossDataSink.h.
LossDataSink::LossDataSink | ( | ) |
Definition at line 173 of file LossDataSink.cpp.
LossDataSink::LossDataSink | ( | std::string | elem, |
bool | hdf5Save, | ||
ElementBase::ElementType | type = ElementBase::ANY |
||
) |
LossDataSink::LossDataSink | ( | const LossDataSink & | rsh | ) |
|
noexcept |
Definition at line 177 of file LossDataSink.cpp.
References Communicate::barrier(), CLOSE_FILE, IpplInfo::Comm, and H5file_m.
Definition at line 236 of file LossDataSink.cpp.
References id_m, px_m, py_m, pz_m, x_m, y_m, and z_m.
Referenced by addParticle(), and Ring::apply().
void LossDataSink::addParticle | ( | const Vector_t & | x, |
const Vector_t & | p, | ||
const size_t | id, | ||
const double | time, | ||
const size_t | turn, | ||
const size_t & | bunchNum = 0 |
||
) |
Definition at line 247 of file LossDataSink.cpp.
References addParticle(), bunchNum_m, time_m, and turn_m.
void LossDataSink::addReferenceParticle | ( | const Vector_t & | x, |
const Vector_t & | p, | ||
double | time, | ||
double | spos, | ||
long long | globalTrackStep | ||
) |
Definition at line 223 of file LossDataSink.cpp.
References globalTrackStep_m, RefPartP_m, RefPartR_m, refTime_m, and spos_m.
|
inlineprivate |
Definition at line 98 of file LossDataSink.h.
References fn_m, IpplInfo::myNode(), and os_m.
Referenced by save().
|
inlineprivate |
Definition at line 119 of file LossDataSink.h.
References IpplInfo::myNode(), and os_m.
Referenced by save().
|
private |
Definition at line 577 of file LossDataSink.cpp.
References SetStatistics::element_m, element_m, SetStatistics::eps2_m, SetStatistics::eps_norm_m, SetStatistics::fac_m, floor(), max(), IpplInfo::myNode(), new_reduce(), SetStatistics::nTotal_m, SetStatistics::pmean_m, pow(), SetStatistics::prms_m, SetStatistics::psqsum_m, px_m, py_m, pz_m, SetStatistics::RefPartP_m, RefPartP_m, SetStatistics::RefPartR_m, RefPartR_m, SetStatistics::refTime_m, refTime_m, SetStatistics::rmax_m, SetStatistics::rmean_m, SetStatistics::rmin_m, SetStatistics::rprms_m, SetStatistics::rpsum_m, SetStatistics::rrms_m, SetStatistics::rsqsum_m, SetStatistics::spos_m, spos_m, sqrt(), startSet_m, Util::KahanAccumulation::sum, time_m, SetStatistics::tmean_m, SetStatistics::trms_m, x_m, y_m, and z_m.
Referenced by computeStatistics().
|
inline |
Definition at line 179 of file LossDataSink.h.
References computeSetStatistics(), and splitSets().
|
private |
Definition at line 322 of file LossDataSink.cpp.
Referenced by save().
|
private |
Definition at line 331 of file LossDataSink.cpp.
References reduce(), and time_m.
Referenced by saveASCII(), saveH5(), and writeHeaderH5().
|
inline |
Definition at line 71 of file LossDataSink.h.
References h5hut_mode_m.
|
inlineprivate |
Definition at line 91 of file LossDataSink.h.
References fn_m, IpplInfo::myNode(), and os_m.
Referenced by save().
|
private |
Definition at line 185 of file LossDataSink.cpp.
References fn_m, IpplInfo::getComm(), and OPEN_FILE.
Referenced by save().
|
private |
void LossDataSink::save | ( | unsigned int | numSets = 1 , |
OpalData::OPENMODE | openMode = OpalData::OPENMODE::UNDEFINED |
||
) |
Definition at line 256 of file LossDataSink.cpp.
References appendASCII(), Communicate::barrier(), bunchNum_m, CLOSE_FILE, closeASCII(), IpplInfo::Comm, element_m, Options::enableHDF5, endl(), fn_m, Hypervolume::fs, GET_NUM_STEPS, OpalData::getInstance(), OpalData::getOpenMode(), globalTrackStep_m, H5file_m, h5hut_mode_m, hasNoParticlesToDump(), id_m, INFOMSG, level2(), openASCII(), openH5(), px_m, py_m, pz_m, RefPartP_m, RefPartR_m, refTime_m, saveASCII(), saveH5(), spos_m, time_m, turn_m, OpalData::UNDEFINED, OpalData::WRITE, writeHeaderASCII(), writeHeaderH5(), x_m, y_m, and z_m.
Referenced by Ring::apply().
|
private |
Definition at line 391 of file LossDataSink.cpp.
References bunchNum_m, IpplInfo::Comm, COMM_ANY_NODE, element_m, endl(), ERRORMSG, Message::get(), IpplInfo::getNodes(), hasTimeAttribute(), id_m, IPPL_APP_CYCLE, IPPL_APP_TAG3, TagMaker::next_tag(), os_m, Message::put(), px_m, py_m, pz_m, Communicate::receive_block(), Communicate::send(), time_m, turn_m, x_m, y_m, and z_m.
Referenced by save().
|
private |
Set current record/time step.
Write particle id numbers.
Definition at line 340 of file LossDataSink.cpp.
References bunchNum_m, IpplInfo::getNodes(), globalTrackStep_m, H5call_m, hasTimeAttribute(), id_m, IpplInfo::myNode(), px_m, py_m, pz_m, reduce(), RefPartP_m, RefPartR_m, refTime_m, SET_NUM_PARTICLES, SET_STEP, spos_m, startSet_m, time_m, turn_m, WRITE_DATA_FLOAT64, WRITE_DATA_INT64, WRITE_STEPATTRIB_FLOAT64, WRITE_STEPATTRIB_INT64, x_m, y_m, and z_m.
Referenced by save().
|
inline |
Definition at line 174 of file LossDataSink.h.
References x_m.
|
private |
In Opal-T monitors can be traversed several times. We know how many times the bunch passes because we register the passage of the reference particle. This code tries to determine to which bunch (same bunch but different times) a particle belongs. For this we could use algorithms from data science such as k-means or dbscan. But they are an overkill for this application because the bunches are well separated.
In a first step we a assign to each bunch the same number of particles and compute the mean time of passage and with it a time range. Of course this is only an approximation. So we reassign the particles to the bunches using the time ranges compute a better approximation. Two iterations should be sufficient for Opal-T where the temporal separation is large.
numSets | number of passes of the reference particle |
Definition at line 504 of file LossDataSink.cpp.
References allreduce(), max(), startSet_m, time_m, and x_m.
Referenced by computeStatistics().
|
inlineprivate |
Definition at line 104 of file LossDataSink.h.
References element_m, endl(), IpplInfo::myNode(), os_m, and time_m.
Referenced by save().
|
private |
in case of circular machines
Definition at line 194 of file LossDataSink.cpp.
References ADD_ATTACHMENT, Util::getGitRevision(), OpalData::getInstance(), hasTimeAttribute(), OPAL_PROJECT_NAME, OPAL_PROJECT_VERSION, and WRITE_FILEATTRIB_STRING.
Referenced by save().
|
private |
Definition at line 157 of file LossDataSink.h.
Referenced by addParticle(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 145 of file LossDataSink.h.
Referenced by computeSetStatistics(), save(), saveASCII(), and writeHeaderASCII().
|
private |
Definition at line 134 of file LossDataSink.h.
Referenced by appendASCII(), openASCII(), openH5(), and save().
|
private |
Definition at line 164 of file LossDataSink.h.
Referenced by addReferenceParticle(), save(), and saveH5().
|
private |
Current record, or time step, of H5 file.
Definition at line 148 of file LossDataSink.h.
Referenced by saveH5().
|
private |
used to write out data in H5hut mode
Definition at line 143 of file LossDataSink.h.
Referenced by save(), and ~LossDataSink().
|
private |
Definition at line 137 of file LossDataSink.h.
Referenced by inH5Mode(), and save().
|
private |
Definition at line 150 of file LossDataSink.h.
Referenced by addParticle(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 140 of file LossDataSink.h.
Referenced by appendASCII(), closeASCII(), openASCII(), saveASCII(), and writeHeaderASCII().
|
private |
Definition at line 154 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 155 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 156 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 163 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), save(), and saveH5().
|
private |
Definition at line 162 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), save(), and saveH5().
|
private |
Definition at line 165 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), save(), and saveH5().
|
private |
Definition at line 166 of file LossDataSink.h.
Referenced by addReferenceParticle(), computeSetStatistics(), save(), and saveH5().
|
private |
Definition at line 168 of file LossDataSink.h.
Referenced by computeSetStatistics(), saveH5(), and splitSets().
|
private |
Definition at line 160 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), hasTimeAttribute(), LossDataSink(), save(), saveASCII(), saveH5(), splitSets(), and writeHeaderASCII().
|
private |
Definition at line 159 of file LossDataSink.h.
Referenced by addParticle(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 170 of file LossDataSink.h.
|
private |
Definition at line 151 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), hasNoParticlesToDump(), LossDataSink(), save(), saveASCII(), saveH5(), size(), and splitSets().
|
private |
Definition at line 152 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), LossDataSink(), save(), saveASCII(), and saveH5().
|
private |
Definition at line 153 of file LossDataSink.h.
Referenced by addParticle(), computeSetStatistics(), LossDataSink(), save(), saveASCII(), and saveH5().