Version: SMASH-1.5
vtkoutput.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2018
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_VTKOUTPUT_H_
11 #define SRC_INCLUDE_VTKOUTPUT_H_
12 
13 #include <string>
14 
15 #include <boost/filesystem.hpp>
16 
17 #include "density.h"
18 #include "forwarddeclarations.h"
19 #include "outputinterface.h"
20 #include "outputparameters.h"
21 
22 namespace smash {
23 
28 class VtkOutput : public OutputInterface {
29  public:
37  VtkOutput(const bf::path &path, const std::string &name,
38  const OutputParameters &out_par);
39  ~VtkOutput();
40 
48  void at_eventstart(const Particles &particles,
49  const int event_number) override;
50 
60  void at_eventend(const Particles &particles, const int event_number,
61  double impact_parameter) override;
62 
70  void at_intermediate_time(const Particles &particles, const Clock &clock,
71  const DensityParameters &dens_param) override;
72 
82  const ThermodynamicQuantity tq, const DensityType dt,
83  RectangularLattice<DensityOnLattice> &lattice) override;
84 
94  const ThermodynamicQuantity tq, const DensityType dt,
96 
103  void thermodynamics_output(const GrandCanThermalizer &gct) override;
104 
105  private:
111  void write(const Particles &particles);
112 
119  std::string make_filename(const std::string &description, int counter);
120 
127  std::string make_varname(const ThermodynamicQuantity tq,
128  const DensityType dens_type);
129 
137  template <typename T>
138  void write_vtk_header(std::ofstream &file, RectangularLattice<T> &lat,
139  const std::string &description);
140 
149  template <typename T, typename F>
150  void write_vtk_scalar(std::ofstream &file, RectangularLattice<T> &lat,
151  const std::string &varname, F &&function);
152 
161  template <typename T, typename F>
162  void write_vtk_vector(std::ofstream &file, RectangularLattice<T> &lat,
163  const std::string &varname, F &&function);
164 
166  const bf::path base_path_;
167 
169  int current_event_ = 0;
172 
185 };
186 
187 } // namespace smash
188 
189 #endif // SRC_INCLUDE_VTKOUTPUT_H_
A class to pre-calculate and store parameters relevant for density calculation.
Definition: density.h:103
void at_eventstart(const Particles &particles, const int event_number) override
Writes the initial particle information list of an event to the VTK output.
Definition: vtkoutput.cc:59
void write_vtk_vector(std::ofstream &file, RectangularLattice< T > &lat, const std::string &varname, F &&function)
Write a VTK vector.
Definition: vtkoutput.cc:191
void write_vtk_header(std::ofstream &file, RectangularLattice< T > &lat, const std::string &description)
Write the VTK header.
Definition: vtkoutput.cc:156
void at_eventend(const Particles &particles, const int event_number, double impact_parameter) override
Writes the final particle information list of an event to the VTK output.
Definition: vtkoutput.cc:75
void thermodynamics_output(const ThermodynamicQuantity tq, const DensityType dt, RectangularLattice< DensityOnLattice > &lattice) override
Prints the density lattice in VTK format on a grid.
Definition: vtkoutput.cc:217
int vtk_tmn_output_counter_
Number of energy-momentum tensor lattice vtk output in current event.
Definition: vtkoutput.h:176
SMASH output in a paraview format, intended for simple visualization.
Definition: vtkoutput.h:28
int vtk_v_landau_output_counter_
Number of Landau rest frame velocity vtk output in current event.
Definition: vtkoutput.h:180
const bf::path base_path_
filesystem path for output
Definition: vtkoutput.h:166
A container class to hold all the arrays on the lattice and access them.
Definition: lattice.h:46
int current_event_
Event number.
Definition: vtkoutput.h:169
std::string make_filename(const std::string &description, int counter)
Make a file name given a description and a counter.
Definition: vtkoutput.cc:204
ThermodynamicQuantity
Represents thermodynamic quantities that can be printed out.
int vtk_tmn_landau_output_counter_
Number of Landau frame energy-momentum tensor vtk output in current event.
Definition: vtkoutput.h:178
void at_intermediate_time(const Particles &particles, const Clock &clock, const DensityParameters &dens_param) override
Writes out all current particles.
Definition: vtkoutput.cc:79
int vtk_output_counter_
Number of vtk output in current event.
Definition: vtkoutput.h:171
void write_vtk_scalar(std::ofstream &file, RectangularLattice< T > &lat, const std::string &varname, F &&function)
Write a VTK scalar.
Definition: vtkoutput.cc:173
Helper structure for Experiment to hold output options and parameters.
The GrandCanThermalizer class implements the following functionality:
Clock tracks the time in the simulation.
Definition: clock.h:75
int vtk_fluidization_counter_
Number of fluidization output.
Definition: vtkoutput.h:182
bool is_thermodynamics_output_
Is the VTK output a thermodynamics output.
Definition: vtkoutput.h:184
int vtk_density_output_counter_
Number of density lattice vtk output in current event.
Definition: vtkoutput.h:174
void write(const Particles &particles)
Write the given particles to the output.
Definition: vtkoutput.cc:87
The Particles class abstracts the storage and manipulation of particles.
Definition: particles.h:33
DensityType
Allows to choose which kind of density to calculate.
Definition: density.h:34
VtkOutput(const bf::path &path, const std::string &name, const OutputParameters &out_par)
Create a new VTK output.
Definition: vtkoutput.cc:22
std::string make_varname(const ThermodynamicQuantity tq, const DensityType dens_type)
Make a variable name given quantity and density type.
Definition: vtkoutput.cc:211
Abstraction of generic output.
Definition: action.h:24