Molecular Dynamics Simulation  1.0
CuboidSpawner.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <array>
4 
6 #include "utils/Enums.h"
7 
16  private:
20  const std::array<double, 3> lower_left_corner;
21 
25  const std::array<int, 3> grid_dimensions;
26 
30  const double grid_spacing;
31 
35  const double mass;
36 
40  const int type;
41 
45  double epsilon;
46 
50  double sigma;
51 
56 
60  const std::array<double, 3> initial_velocity;
61 
66 
70  const double initial_temperature;
71 
72  public:
89  CuboidSpawner(const std::array<double, 3>& lower_left_corner, const std::array<int, 3>& grid_dimensions, double grid_spacing,
90  double mass, const std::array<double, 3>& initial_velocity, int type, double epsilon = 1.0, double sigma = 1.2,
92  double initial_temperature = 0.1);
93 
100  int spawnParticles(std::vector<Particle>& particles) const override;
101 
108  [[nodiscard]] size_t getEstimatedNumberOfParticles() const override;
109 };
ThirdDimension
Enum class to define the dimension count of the simulation (2D or 3D). Affects primarily the dimensio...
Definition: Enums.h:7
LockState
Enum class to define the lockstate of particles. Locked particles are not allowed to move.
Definition: Enums.h:12
Class to spawn particles in a cuboid. Implements the interface ParticleSpawner.
Definition: CuboidSpawner.h:15
int spawnParticles(std::vector< Particle > &particles) const override
Spawns particles in the given container.
const ThirdDimension third_dimension
Defines whether to use the third dimension.
Definition: CuboidSpawner.h:65
const int type
Defines the type of the particles in the cuboid.
Definition: CuboidSpawner.h:40
double sigma
Defines the Lennard-Jones sigma parameter of the particles in the cuboid.
Definition: CuboidSpawner.h:50
CuboidSpawner(const std::array< double, 3 > &lower_left_corner, const std::array< int, 3 > &grid_dimensions, double grid_spacing, double mass, const std::array< double, 3 > &initial_velocity, int type, double epsilon=1.0, double sigma=1.2, LockState lock_state=LockState::UNLOCKED, ThirdDimension third_dimension=ThirdDimension::ENABLED, double initial_temperature=0.1)
Constructor.
const double initial_temperature
Defines the initial temperature of the particles in the cuboid.
Definition: CuboidSpawner.h:70
const std::array< double, 3 > lower_left_corner
Defines the lower left corner where the cuboid will be spawned.
Definition: CuboidSpawner.h:20
size_t getEstimatedNumberOfParticles() const override
Estimate the number of particles to be spawned.
const LockState lock_state
Defines whether the particles in the cuboid are locked.
Definition: CuboidSpawner.h:55
const double mass
Defines the mass of the particles in the cuboid.
Definition: CuboidSpawner.h:35
const std::array< int, 3 > grid_dimensions
Defines how big the cuboid will be. Each entry defines the number of particles in the respective dire...
Definition: CuboidSpawner.h:25
const double grid_spacing
Defines the spacing between neighboring particles in the cuboid.
Definition: CuboidSpawner.h:30
double epsilon
Defines the Lennard-Jones epsilon parameter of the particles in the cuboid.
Definition: CuboidSpawner.h:45
const std::array< double, 3 > initial_velocity
Defines the initial velocity of the particles in the cuboid.
Definition: CuboidSpawner.h:60
Interface for particle spawner classes.