34 virtual void scaleTemperature(
const std::unique_ptr<ParticleContainer>& particle_container)
const = 0;
52 void setTemperature(
double new_temperature,
const std::unique_ptr<ParticleContainer>& particle_container);
ThirdDimension
Enum class to define the dimension count of the simulation (2D or 3D). Affects primarily the dimensio...
Class to represent a particle.
A thermostat that can be used to control the temperature of a particle container. Allows for gradual ...
Thermostat(double target_temperature, double max_temperature_change, ThirdDimension third_dimension)
Construct a new Thermostat object.
const double max_temperature_change
The maximum temperature change allowed per thermostat application.
virtual void scaleTemperature(const std::unique_ptr< ParticleContainer > &particle_container) const =0
Scale the temperature of a particle container towards the target temperature. Capped by the maximum t...
ThirdDimension getThirdDimension() const
Get if the third dimension is enabled on this thermostat or not.
virtual ~Thermostat()=default
Destroy the Thermostat object.
const double target_temperature
The target temperature for thermostat applications.
virtual double getCurrentContainerTemperature(const std::unique_ptr< ParticleContainer > &particle_container) const =0
Get the current temperature of a particle container.
void setTemperature(double new_temperature, const std::unique_ptr< ParticleContainer > &particle_container)
Set the initial temperature of a particle container. This function sets the velocity of all particles...
double getMaxTemperatureChange() const
Get the maximum temperature change of the thermostat.
const ThirdDimension third_dimension
Defines whether the third dimension is enabled.
static void setParticleTemperature(double new_temperature, Particle &particle, ThirdDimension third_dimension)
Set the temperature of a particle. This method adds a random velocity to the particle according to th...
double getTargetTemperature() const
Get the target temperature of the thermostat.