Version: SMASH-1.7
vtkoutput.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2019
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 
62  void at_eventend(const Particles &particles, const int event_number,
63  double impact_parameter, bool empty_event) override;
64 
72  void at_intermediate_time(const Particles &particles,
73  const std::unique_ptr<Clock> &clock,
74  const DensityParameters &dens_param) override;
75 
85  const ThermodynamicQuantity tq, const DensityType dt,
86  RectangularLattice<DensityOnLattice> &lattice) override;
87 
97  const ThermodynamicQuantity tq, const DensityType dt,
99 
106  void thermodynamics_output(const GrandCanThermalizer &gct) override;
107 
108  private:
114  void write(const Particles &particles);
115 
122  std::string make_filename(const std::string &description, int counter);
123 
130  std::string make_varname(const ThermodynamicQuantity tq,
131  const DensityType dens_type);
132 
140  template <typename T>
141  void write_vtk_header(std::ofstream &file, RectangularLattice<T> &lat,
142  const std::string &description);
143 
152  template <typename T, typename F>
153  void write_vtk_scalar(std::ofstream &file, RectangularLattice<T> &lat,
154  const std::string &varname, F &&function);
155 
164  template <typename T, typename F>
165  void write_vtk_vector(std::ofstream &file, RectangularLattice<T> &lat,
166  const std::string &varname, F &&function);
167 
169  const bf::path base_path_;
170 
172  int current_event_ = 0;
175 
188 };
189 
190 } // namespace smash
191 
192 #endif // SRC_INCLUDE_VTKOUTPUT_H_
A class to pre-calculate and store parameters relevant for density calculation.
Definition: density.h:106
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:203
void write_vtk_header(std::ofstream &file, RectangularLattice< T > &lat, const std::string &description)
Write the VTK header.
Definition: vtkoutput.cc:168
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:229
int vtk_tmn_output_counter_
Number of energy-momentum tensor lattice vtk output in current event.
Definition: vtkoutput.h:179
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:183
const bf::path base_path_
filesystem path for output
Definition: vtkoutput.h:169
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:172
std::string make_filename(const std::string &description, int counter)
Make a file name given a description and a counter.
Definition: vtkoutput.cc:216
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:181
int vtk_output_counter_
Number of vtk output in current event.
Definition: vtkoutput.h:174
void write_vtk_scalar(std::ofstream &file, RectangularLattice< T > &lat, const std::string &varname, F &&function)
Write a VTK scalar.
Definition: vtkoutput.cc:185
Helper structure for Experiment to hold output options and parameters.
The GrandCanThermalizer class implements the following functionality:
void at_intermediate_time(const Particles &particles, const std::unique_ptr< Clock > &clock, const DensityParameters &dens_param) override
Writes out all current particles.
Definition: vtkoutput.cc:80
int vtk_fluidization_counter_
Number of fluidization output.
Definition: vtkoutput.h:185
bool is_thermodynamics_output_
Is the VTK output a thermodynamics output.
Definition: vtkoutput.h:187
int vtk_density_output_counter_
Number of density lattice vtk output in current event.
Definition: vtkoutput.h:177
void at_eventend(const Particles &particles, const int event_number, double impact_parameter, bool empty_event) override
Writes the final particle information list of an event to the VTK output.
Definition: vtkoutput.cc:75
void write(const Particles &particles)
Write the given particles to the output.
Definition: vtkoutput.cc:89
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:223
Abstraction of generic output.
Definition: action.h:24