Version: SMASH-3.1
smash::BinaryOutputBase Class Reference

#include <binaryoutput.h>

Base class for SMASH binary output.

Definition at line 29 of file binaryoutput.h.

Inheritance diagram for smash::BinaryOutputBase:
smash::OutputInterface smash::BinaryOutputCollisions smash::BinaryOutputInitialConditions smash::BinaryOutputParticles

Protected Member Functions

 BinaryOutputBase (const std::filesystem::path &path, const std::string &mode, const std::string &name, bool extended_format)
 Create binary output base. More...
 
void write (const char c)
 Write byte to binary output. More...
 
void write (const std::string &s)
 Write string to binary output. More...
 
void write (const double x)
 Write double to binary output. More...
 
void write (const FourVector &v)
 Write four-vector to binary output. More...
 
void write (const std::int32_t x)
 Write integer (32 bit) to binary output. More...
 
void write (const std::uint32_t x)
 Write unsigned integer (32 bit) to binary output. More...
 
void write (const std::uint16_t x)
 Write unsigned integer (16 bit) to binary output. More...
 
void write (const size_t x)
 Write a std::size_t to binary output. More...
 
void write (const Particles &particles)
 Write particle data of each particle in particles to binary output. More...
 
void write (const ParticleList &particles)
 Write each particle data entry to binary output. More...
 
void write_particledata (const ParticleData &p)
 Write particle data to binary output. More...
 

Protected Attributes

RenamingFilePtr file_
 Binary particles output file path. More...
 
- Protected Attributes inherited from smash::OutputInterface
const bool is_dilepton_output_
 Is this the dilepton output? More...
 
const bool is_photon_output_
 Is this the photon output? More...
 
const bool is_IC_output_
 Is this the IC output? More...
 

Private Attributes

const uint16_t format_version_ = 9
 Binary file format version number. More...
 
bool extended_
 Option for extended output. More...
 

Additional Inherited Members

- Public Member Functions inherited from smash::OutputInterface
 OutputInterface (std::string name)
 Construct output interface. More...
 
virtual ~OutputInterface ()=0
 Pure virtual destructor to make class abstract and prevent its instantiation. More...
 
virtual void at_eventstart (const Particles &, const int, const EventInfo &)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventstart (const std::vector< Particles > &, int)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventstart (const int, const ThermodynamicQuantity, const DensityType, RectangularLattice< DensityOnLattice >)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventstart (const int, const ThermodynamicQuantity, const DensityType, RectangularLattice< EnergyMomentumTensor >)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventend (const int, const ThermodynamicQuantity, const DensityType)
 Output launched at event end. More...
 
virtual void at_eventend (const ThermodynamicQuantity)
 Output launched at event end. More...
 
virtual void at_eventend (const Particles &, const int, const EventInfo &)
 Output launched at event end. More...
 
virtual void at_eventend (const std::vector< Particles > &, const int)
 Output launched at event end. More...
 
virtual void at_interaction (const Action &, const double)
 Called whenever an action modified one or more particles. More...
 
virtual void at_intermediate_time (const Particles &, const std::unique_ptr< Clock > &, const DensityParameters &, const EventInfo &)
 Output launched after every N'th time-step. More...
 
virtual void at_intermediate_time (const std::vector< Particles > &, const std::unique_ptr< Clock > &, const DensityParameters &)
 Output launched after every N'th timestep. More...
 
virtual void thermodynamics_output (const ThermodynamicQuantity, const DensityType, RectangularLattice< DensityOnLattice > &)
 Output to write thermodynamics from the lattice. More...
 
virtual void thermodynamics_output (const ThermodynamicQuantity, const DensityType, RectangularLattice< EnergyMomentumTensor > &)
 Output to write energy-momentum tensor and related quantities from the lattice. More...
 
virtual void thermodynamics_lattice_output (RectangularLattice< DensityOnLattice > &, const double)
 Output to write thermodynamics from the lattice. More...
 
virtual void thermodynamics_lattice_output (RectangularLattice< DensityOnLattice > &, const double, const std::vector< Particles > &, const DensityParameters &)
 Output to write thermodynamics from the lattice. More...
 
virtual void thermodynamics_lattice_output (const ThermodynamicQuantity, RectangularLattice< EnergyMomentumTensor > &, const double)
 Output to write energy-momentum tensor and related quantities from the lattice. More...
 
virtual void thermodynamics_output (const GrandCanThermalizer &)
 Output to write energy-momentum tensor and related quantities from the thermalizer class. More...
 
virtual void fields_output (const std::string, const std::string, RectangularLattice< std::pair< ThreeVector, ThreeVector >> &)
 Write fields in vtk output Fields are a pair of threevectors for example electric and magnetic field. More...
 
bool is_dilepton_output () const
 Get, whether this is the dilepton output? More...
 
bool is_photon_output () const
 Get, whether this is the photon output? More...
 
bool is_IC_output () const
 Get, whether this is the IC output? More...
 
const char * to_string (const ThermodynamicQuantity tq)
 Convert thermodynamic quantities to strings. More...
 
const char * to_string (const DensityType dens_type)
 Convert density types to strings. More...
 

Constructor & Destructor Documentation

◆ BinaryOutputBase()

smash::BinaryOutputBase::BinaryOutputBase ( const std::filesystem::path &  path,
const std::string &  mode,
const std::string &  name,
bool  extended_format 
)
explicitprotected

Create binary output base.

Parameters
[in]pathOutput path.
[in]modeIs used to determine the file access mode.
[in]nameName of the output.
[in]extended_formatIs the written output extended.

Definition at line 136 of file binaryoutput.cc.

140  : OutputInterface(name), file_{path, mode}, extended_(extended_format) {
141  std::fwrite("SMSH", 4, 1, file_.get()); // magic number
142  write(format_version_); // file format version number
143  std::uint16_t format_variant = static_cast<uint16_t>(extended_);
144  write(format_variant);
145  write(SMASH_VERSION);
146 }
bool extended_
Option for extended output.
Definition: binaryoutput.h:122
void write(const char c)
Write byte to binary output.
const uint16_t format_version_
Binary file format version number.
Definition: binaryoutput.h:120
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:116
OutputInterface(std::string name)
Construct output interface.
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27

Member Function Documentation

◆ write() [1/10]

void smash::BinaryOutputBase::write ( const char  c)
protected

Write byte to binary output.

Parameters
[in]cValue to be written.

Definition at line 149 of file binaryoutput.cc.

149  {
150  std::fwrite(&c, sizeof(char), 1, file_.get());
151 }

◆ write() [2/10]

void smash::BinaryOutputBase::write ( const std::string &  s)
protected

Write string to binary output.

Parameters
[in]sString to be written.

Definition at line 153 of file binaryoutput.cc.

153  {
154  const auto size = smash::numeric_cast<uint32_t>(s.size());
155  std::fwrite(&size, sizeof(std::uint32_t), 1, file_.get());
156  std::fwrite(s.c_str(), s.size(), 1, file_.get());
157 }

◆ write() [3/10]

void smash::BinaryOutputBase::write ( const double  x)
protected

Write double to binary output.

Parameters
[in]xValue to be written.

Definition at line 159 of file binaryoutput.cc.

159  {
160  std::fwrite(&x, sizeof(x), 1, file_.get());
161 }

◆ write() [4/10]

void smash::BinaryOutputBase::write ( const FourVector v)
protected

Write four-vector to binary output.

Parameters
[in]vFour-vector to be written.

Definition at line 163 of file binaryoutput.cc.

163  {
164  std::fwrite(v.begin(), sizeof(*v.begin()), 4, file_.get());
165 }

◆ write() [5/10]

void smash::BinaryOutputBase::write ( const std::int32_t  x)
inlineprotected

Write integer (32 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 71 of file binaryoutput.h.

71  {
72  std::fwrite(&x, sizeof(x), 1, file_.get());
73  }

◆ write() [6/10]

void smash::BinaryOutputBase::write ( const std::uint32_t  x)
inlineprotected

Write unsigned integer (32 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 79 of file binaryoutput.h.

79  {
80  std::fwrite(&x, sizeof(x), 1, file_.get());
81  }

◆ write() [7/10]

void smash::BinaryOutputBase::write ( const std::uint16_t  x)
inlineprotected

Write unsigned integer (16 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 87 of file binaryoutput.h.

87  {
88  std::fwrite(&x, sizeof(x), 1, file_.get());
89  }

◆ write() [8/10]

void smash::BinaryOutputBase::write ( const size_t  x)
inlineprotected

Write a std::size_t to binary output.

Parameters
[in]xValue to be written.

Definition at line 95 of file binaryoutput.h.

95 { write(smash::numeric_cast<uint32_t>(x)); }

◆ write() [9/10]

void smash::BinaryOutputBase::write ( const Particles particles)
protected

Write particle data of each particle in particles to binary output.

Parameters
[in]particlesList of particles, whose data is to be written.

Definition at line 167 of file binaryoutput.cc.

167  {
168  for (const auto &p : particles) {
170  }
171 }
void write_particledata(const ParticleData &p)
Write particle data to binary output.
constexpr int p
Proton.

◆ write() [10/10]

void smash::BinaryOutputBase::write ( const ParticleList &  particles)
protected

Write each particle data entry to binary output.

Parameters
[in]particlesList of particles, whose data is to be written.

Definition at line 173 of file binaryoutput.cc.

173  {
174  for (const auto &p : particles) {
176  }
177 }

◆ write_particledata()

void smash::BinaryOutputBase::write_particledata ( const ParticleData p)
protected

Write particle data to binary output.

Parameters
[in]pParticle data to be written.

Definition at line 179 of file binaryoutput.cc.

179  {
180  write(p.position());
181  double mass = p.effective_mass();
182  std::fwrite(&mass, sizeof(mass), 1, file_.get());
183  write(p.momentum());
184  write(p.pdgcode().get_decimal());
185  write(p.id());
186  write(p.type().charge());
187  if (extended_) {
188  const auto history = p.get_history();
189  write(history.collisions_per_particle);
190  write(p.formation_time());
191  write(p.xsec_scaling_factor());
192  write(history.id_process);
193  write(static_cast<int32_t>(history.process_type));
194  write(history.time_last_collision);
195  write(history.p1.get_decimal());
196  write(history.p2.get_decimal());
197  write(p.type().baryon_number());
198  write(p.type().strangeness());
199  }
200 }

Member Data Documentation

◆ file_

RenamingFilePtr smash::BinaryOutputBase::file_
protected

Binary particles output file path.

Definition at line 116 of file binaryoutput.h.

◆ format_version_

const uint16_t smash::BinaryOutputBase::format_version_ = 9
private

Binary file format version number.

Definition at line 120 of file binaryoutput.h.

◆ extended_

bool smash::BinaryOutputBase::extended_
private

Option for extended output.

Definition at line 122 of file binaryoutput.h.


The documentation for this class was generated from the following files: