Version: SMASH-2.0
boxmodus.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012-2020
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 #ifndef SRC_INCLUDE_SMASH_BOXMODUS_H_
8 #define SRC_INCLUDE_SMASH_BOXMODUS_H_
9 
10 #include <map>
11 #include <memory>
12 
13 #include "forwarddeclarations.h"
14 #include "modusdefault.h"
15 
16 namespace smash {
17 
46 class BoxModus : public ModusDefault {
47  public:
58  explicit BoxModus(Configuration modus_config,
59  const ExperimentParameters &parameters);
60 
71  double initial_conditions(Particles *particles,
72  const ExperimentParameters &parameters);
73 
91  const OutputsList &output_list = {});
92 
95  const Particles &particles, double min_cell_length,
96  double timestep_duration,
98  return {{{0, 0, 0}, {length_, length_, length_}},
99  particles,
100  min_cell_length,
101  timestep_duration,
102  strategy};
103  }
104 
111  std::unique_ptr<GrandCanThermalizer> create_grandcan_thermalizer(
112  Configuration &conf) const {
113  const std::array<double, 3> lat_size = {length_, length_, length_};
114  const std::array<double, 3> origin = {0., 0., 0.};
115  const bool periodicity = true;
116  return make_unique<GrandCanThermalizer>(conf, lat_size, origin,
117  periodicity);
118  }
119 
121  double max_timestep(double max_transverse_distance_sqr) const {
122  return 0.5 * std::sqrt(length_ * length_ - max_transverse_distance_sqr);
123  }
124 
126  double equilibration_time() const { return equilibration_time_; }
128  bool is_box() const { return true; }
129 
130  private:
134  const double length_;
136  const double equilibration_time_;
138  const double temperature_;
140  const double start_time_ = 0.;
145  const bool use_thermal_ = false;
150  const double mub_;
155  const double mus_;
160  const double muq_;
171  const std::map<PdgCode, int> init_multipl_;
176  std::map<PdgCode, double> average_multipl_;
177 
182  const bool insert_jet_ = false;
191  const double jet_mom_;
192 
201  friend std::ostream &operator<<(std::ostream &out, const BoxModus &m);
202 };
203 
204 } // namespace smash
205 
206 #endif // SRC_INCLUDE_SMASH_BOXMODUS_H_
smash::BoxModus::create_grandcan_thermalizer
std::unique_ptr< GrandCanThermalizer > create_grandcan_thermalizer(Configuration &conf) const
Creates GrandCanThermalizer.
Definition: boxmodus.h:111
smash
Definition: action.h:24
smash::BoxModus::account_for_resonance_widths_
const bool account_for_resonance_widths_
In case of thermal initialization: true – account for resonance spectral functions,...
Definition: boxmodus.h:166
smash::CellSizeStrategy::Optimal
Look for optimal cell size.
smash::BoxModus::equilibration_time
double equilibration_time() const
Definition: boxmodus.h:126
smash::BoxModus::max_timestep
double max_timestep(double max_transverse_distance_sqr) const
Definition: boxmodus.h:121
smash::BoxModus::muq_
const double muq_
Charge chemical potential for thermal initialization; only used if use_thermal_ is true.
Definition: boxmodus.h:160
smash::BoxModus::mub_
const double mub_
Baryon chemical potential for thermal initialization; only used if use_thermal_ is true.
Definition: boxmodus.h:150
smash::BoxModus::init_multipl_
const std::map< PdgCode, int > init_multipl_
Particle multiplicities at initialization; required if use_thermal_ is false.
Definition: boxmodus.h:171
modusdefault.h
smash::BoxModus::length_
const double length_
Length of the cube's edge in fm/c.
Definition: boxmodus.h:134
smash::BoxModus::use_thermal_
const bool use_thermal_
Whether to use a thermal initialization for all particles instead of specific numbers.
Definition: boxmodus.h:145
smash::BoxModus::jet_pdg_
const PdgCode jet_pdg_
Pdg of the particle to use as a jet; necessary if insert_jet_ is true, unused otherwise.
Definition: boxmodus.h:187
smash::BoxModus::temperature_
const double temperature_
Temperature of the Box in GeV.
Definition: boxmodus.h:138
smash::BoxModus::insert_jet_
const bool insert_jet_
Whether to insert a single high energy particle at the center of the box (0,0,0).
Definition: boxmodus.h:182
smash::BoxModus
Definition: boxmodus.h:46
BoxInitialCondition
BoxInitialCondition
Initial condition for a particle in a box.
Definition: forwarddeclarations.h:132
smash::BoxModus::initial_condition_
const BoxInitialCondition initial_condition_
Initial momenta distribution: thermal or peaked momenta.
Definition: boxmodus.h:132
smash::BoxModus::create_grid
Grid< GridOptions::PeriodicBoundaries > create_grid(const Particles &particles, double min_cell_length, double timestep_duration, CellSizeStrategy strategy=CellSizeStrategy::Optimal) const
Creates the Grid with normal boundary conditions.
Definition: boxmodus.h:94
smash::CellSizeStrategy
CellSizeStrategy
Indentifies the strategy of determining the cell size.
Definition: grid.h:33
smash::BoxModus::mus_
const double mus_
Strange chemical potential for thermal initialization; only used if use_thermal_ is true.
Definition: boxmodus.h:155
smash::Configuration
Interface to the SMASH configuration files.
Definition: configuration.h:464
forwarddeclarations.h
smash::Grid< GridOptions::PeriodicBoundaries >
smash::BoxModus::average_multipl_
std::map< PdgCode, double > average_multipl_
Average multiplicities in case of thermal initialization.
Definition: boxmodus.h:176
smash::PdgCode
Definition: pdgcode.h:108
smash::ModusDefault
Definition: modusdefault.h:44
smash::BoxModus::initial_conditions
double initial_conditions(Particles *particles, const ExperimentParameters &parameters)
Generates initial state of the particles in the system according to specified parameters: number of p...
Definition: boxmodus.cc:253
smash::BoxModus::operator<<
friend std::ostream & operator<<(std::ostream &out, const BoxModus &m)
Definition: boxmodus.cc:31
smash::Particles
Definition: particles.h:33
smash::BoxModus::BoxModus
BoxModus(Configuration modus_config, const ExperimentParameters &parameters)
Constructor.
Definition: boxmodus.cc:219
smash::ExperimentParameters
Helper structure for Experiment.
Definition: experimentparameters.h:24
smash::BoxModus::impose_boundary_conditions
int impose_boundary_conditions(Particles *particles, const OutputsList &output_list={})
Enforces that all particles are inside the box at the beginning of an event.
Definition: boxmodus.cc:365
smash::BoxModus::equilibration_time_
const double equilibration_time_
time after which output is written
Definition: boxmodus.h:136
smash::BoxModus::start_time_
const double start_time_
Initial time of the box.
Definition: boxmodus.h:140
smash::BoxModus::is_box
bool is_box() const
Definition: boxmodus.h:128
smash::BoxModus::jet_mom_
const double jet_mom_
Initial momentum of the jet particle; only used if insert_jet_ is true.
Definition: boxmodus.h:191