10 #ifndef SRC_INCLUDE_SMASH_MODUSDEFAULT_H_
11 #define SRC_INCLUDE_SMASH_MODUSDEFAULT_H_
61 const OutputsList& = {}) {
68 bool is_box()
const {
return false; }
93 double length()
const {
return -1.; }
95 double radius()
const {
return -1.; }
113 throw std::logic_error(
114 "Only ColliderModus has parameters for initial conditions.");
118 throw std::logic_error(
"Only ColliderModus has a fluid background.");
122 throw std::logic_error(
"Only ColliderModus has a fluid lattice.");
133 [[maybe_unused]]
const double t,
134 [[maybe_unused]]
const std::vector<Particles>& ensembles,
155 const Particles& particles,
double min_cell_length,
157 const bool include_unformed_particles,
167 include_unformed_particles,
183 const std::array<double, 3> l =
185 const std::array<double, 3> origin = {-0.5 * l[0], -0.5 * l[1],
187 const bool periodicity =
false;
188 return std::make_unique<GrandCanThermalizer>(conf, l, origin, periodicity);
196 using std::invalid_argument::invalid_argument;
204 using BadInput::BadInput;
Interface to the SMASH configuration files.
T take(const Key< T > &key)
The default interface for SMASH to read configuration values.
A class to pre-calculate and store parameters relevant for density calculation.
Abstracts a list of cells that partition the particles in the experiment into regions of space that c...
Base class for Modus classes that provides default function implementations.
const RectangularLattice< EnergyMomentumTensor > & fluid_lattice()
bool calculation_frame_is_fixed_target() const
std::unique_ptr< GrandCanThermalizer > create_grandcan_thermalizer(Configuration &conf) const
Creates GrandCanThermalizer.
double velocity_target() const
int impose_boundary_conditions(Particles *, const OutputsList &={})
Enforces sensible positions for the particles.
double max_timestep(double) const
double nuclei_passing_time() const
Get the passing time of the two nuclei in a collision.
void build_fluidization_lattice([[maybe_unused]] const double t, [[maybe_unused]] const std::vector< Particles > &ensembles, [[maybe_unused]] const DensityParameters &dens_par)
Build lattice of energy momentum tensor.
FermiMotion fermi_motion() const
double velocity_projectile() const
bool is_IC_for_hybrid() const
double impact_parameter() const
void sample_impact() const
sample impact parameter for collider modus
double equilibration_time() const
const InitialConditionParameters & IC_parameters() const
const std::map< int32_t, double > & fluid_background()
Grid< GridOptions::Normal > create_grid(const Particles &particles, double min_cell_length, double timestep_duration, CollisionCriterion crit, const bool include_unformed_particles, CellSizeStrategy strategy=CellSizeStrategy::Optimal) const
Creates the Grid with normal boundary conditions.
The Particles class abstracts the storage and manipulation of particles.
A container class to hold all the arrays on the lattice and access them.
FermiMotion
Option to use Fermi Motion.
@ Off
Don't use fermi motion.
CollisionCriterion
Criteria used to check collisions.
@ Stochastic
Stochastic Criteiron.
CellNumberLimitation
Identifies whether the number of cells should be limited.
@ ParticleNumber
Limit the number of cells to the number of particles.
@ None
No cell number limitation.
CellSizeStrategy
Indentifies the strategy of determining the cell size.
@ Optimal
Look for optimal cell size.
The variables in this POD struct are of type std::optional<double> so that only the relevant paramete...
Thrown when the requested energy is smaller than the masses of two particles.