5 #ifndef TOOLS_MERCURYDATA_H
6 #define TOOLS_MERCURYDATA_H
19 template<std::
size_t NDIMS>
94 template<std::
size_t NDIMS>
98 for (
i = 0;
i < NDIMS;
i++)
101 for (
i = 0;
i < NDIMS;
i++) {
109 for (
i = 0;
i < NDIMS;
i++)
112 for (
i = 0;
i < NDIMS;
i++) {
126 in >> part.position[0] >> part.position[2];
127 part.position[1] = 0;
129 in >> part.velocity[0] >> part.velocity[2];
130 part.velocity[1] = 0;
134 in >> part.rotation[1];
135 part.rotation[0] = part.rotation[2] = 0;
137 in >> part.angularV[1];
138 part.angularV[0] = part.angularV[2] = 0;
140 in >> part.speciesID;
148 template<std::
size_t NDIMS>
155 template<std::
size_t NDIMS>
211 typename std::vector< MercuryParticle<NDIMS> >::iterator
begin()
219 typename std::vector< MercuryParticle<NDIMS> >::const_iterator
begin()
const
227 typename std::vector< MercuryParticle<NDIMS> >::iterator
end()
235 typename std::vector< MercuryParticle<NDIMS> >::const_iterator
end()
const
303 template<std::
size_t NDIMS2>
317 template<std::
size_t NDIMS>
323 for (
i = 0;
i < NDIMS;
i++)
326 for (
i = 0;
i < NDIMS;
i++)
341 template<std::
size_t NDIMS>
454 template<std::
size_t NDIMS>
458 std::ios::pos_type currentPosition =
file_.tellg();
464 file_.seekg(currentPosition);
466 std::istringstream lineStream(
line);
473 bool isValid = lineStream.good() || (lineStream.eof() && !lineStream.fail());
478 isValid = isValid && !lineStream.good();
488 template<std::
size_t NDIMS>
509 template<std::
size_t NDIMS>
524 template<std::
size_t NDIMS>
534 template<std::
size_t NDIMS>
545 template<std::
size_t NDIMS>
547 template<std::
size_t NDIMS>
551 template<std::
size_t NDIMS>
559 std::istringstream lineStream(
line);
564 if (lineStream.eof())
579 lineStream.str(
line);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
std::istream & operator>>(std::istream &in, MercuryParticle< NDIMS > &part)
Read a single particle from a istream.
Definition: MercuryData.h:95
Definition: MercuryData.h:490
MercuryDataFile * data_
Definition: MercuryData.h:496
MercuryTimeStepIterator< NDIMS > end()
Definition: MercuryData.h:502
MercuryTimeStepIterator< NDIMS > begin()
Definition: MercuryData.h:498
IteratorProxy(MercuryDataFile *pData)
Definition: MercuryData.h:492
Definition: MercuryData.h:420
MercuryDataFile(std::string name)
Definition: MercuryData.h:427
MercuryTimeStepIterator< NDIMS > end() const
Returns a forwarditerator one past the last time step.
Definition: MercuryData.h:535
IteratorProxy< NDIMS > as()
Definition: MercuryData.h:510
MercuryTimeStepIterator< NDIMS > begin()
Returns a forwarditerator to the time steps Returns a forwarditerator to the time steps,...
Definition: MercuryData.h:525
std::ifstream file_
Definition: MercuryData.h:543
bool isMercuryDataFile()
Checks if this file is a valid Mercury 3D data file. This function jumps to the start of the file,...
Definition: MercuryData.h:455
Definition: MercuryData.h:343
const MercuryTimeStep< NDIMS > & operator*() const
Const dereference operator, as defined for constant ForwardIterators.
Definition: MercuryData.h:364
MercuryTimeStep< NDIMS > & operator*()
Dereference operator, as defined for ForwardIterators.
Definition: MercuryData.h:356
MercuryTimeStepIterator()
Definition: MercuryData.h:380
MercuryTimeStep< NDIMS > lastReadTimeStep_
Definition: MercuryData.h:399
bool operator!=(MercuryTimeStepIterator< NDIMS > other) const
Not-equals operator, as defined for ForwardIterators.
Definition: MercuryData.h:348
void operator++()
Pre-increment operator, as defined for ForwardIterators This method populates the time step,...
Definition: MercuryData.h:552
MercuryDataFile * dataFile_
Definition: MercuryData.h:407
MercuryTimeStepIterator(MercuryDataFile *pData)
Definition: MercuryData.h:389
bool isEOFTimeStep_
Definition: MercuryData.h:403
Definition: MercuryData.h:157
std::size_t numParticles_
Definition: MercuryData.h:286
std::vector< MercuryParticle< NDIMS > >::iterator end()
Iterator functions for range based for loops.
Definition: MercuryData.h:227
std::size_t size() const
Gets the number of particles recorded in this time step.
Definition: MercuryData.h:194
MercuryTimeStep(std::size_t id, MercuryDataFile *pData)
Constructor used by the MercuryTimeStepIterator, to flag a functional time step.
Definition: MercuryData.h:262
std::vector< MercuryParticle< NDIMS > >::const_iterator begin() const
Iterator functions for range based for loops.
Definition: MercuryData.h:219
double max_[NDIMS]
Definition: MercuryData.h:290
std::size_t getNumberOfParticles() const
Gets the number of particles recorded in this time step.
Definition: MercuryData.h:184
friend std::istream & operator>>(std::istream &, MercuryTimeStep< NDIMS2 > &)
std::size_t ID_
Definition: MercuryData.h:282
std::vector< MercuryParticle< NDIMS > > storage_
Definition: MercuryData.h:301
double getTime() const
Gets the time associated with this time step.
Definition: MercuryData.h:163
std::vector< MercuryParticle< NDIMS > >::const_iterator end() const
Iterator functions for range based for loops.
Definition: MercuryData.h:235
double time_
Definition: MercuryData.h:278
MercuryParticle< NDIMS > & operator[](std::size_t idx)
Random access function into the particles.
Definition: MercuryData.h:243
std::size_t getTimeStepID() const
Gets the time step ID Returns the time step ID, which is a consecutively ascending number unique for ...
Definition: MercuryData.h:174
MercuryDataFile * dataFile_
Definition: MercuryData.h:296
constexpr std::size_t getNumberOfDimensions() const
returns the number of dimensions used.
Definition: MercuryData.h:203
MercuryTimeStep()
EOF-TimeStep constructor used by MercuryTimeStepIterator (and MercuryDataFile::isMercury3DDataFile())
Definition: MercuryData.h:270
const MercuryParticle< NDIMS > & operator[](std::size_t idx) const
Random access function into the particles.
Definition: MercuryData.h:251
double min_[NDIMS]
Definition: MercuryData.h:290
std::vector< MercuryParticle< NDIMS > >::iterator begin()
Iterator functions for range based for loops.
Definition: MercuryData.h:211
for(int j=0;j< nb;++j)
Definition: level2_impl.h:287
line
Definition: calibrate.py:103
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
string name
Definition: plotDoE.py:33
Definition: MercuryData.h:60
std::size_t speciesID
Definition: MercuryData.h:87
double radius
Definition: MercuryData.h:82
Definition: MercuryData.h:21
std::size_t speciesID
Definition: MercuryData.h:48
double rotation[NDIMS]
Definition: MercuryData.h:34
double angularV[NDIMS]
Definition: MercuryData.h:38
double radius
Definition: MercuryData.h:43
double velocity[NDIMS]
Definition: MercuryData.h:30
double position[NDIMS]
Definition: MercuryData.h:26