28 explicit operator std::string()
const {
return "DirectSum"; }
44 explicit operator std::string()
const {
138 const std::variant<DirectSumType, LinkedCellsType>&
container_type,
139 const std::vector<std::shared_ptr<SimulationInterceptor>>&
interceptors,
140 const std::vector<std::shared_ptr<SimpleForceSource>>&
simple_forces,
141 const std::vector<std::shared_ptr<PairwiseForceSource>>&
pairwise_forces,
143 const std::filesystem::path& base_path =
"./output",
size_t start_iteration = 0);
static std::string boundaryConditionToString(const BoundaryCondition &bc)
Returns a string description of a boundary condition.
Contains all parameters needed to run a simulation.
std::vector< std::shared_ptr< PairwiseForceSource > > pairwise_forces
Pairwise Forces to be applied to the particles.
size_t num_particles
Number of particles in the simulation.
double delta_t
Time step of a single simulation iteration.
std::vector< std::shared_ptr< SimulationInterceptor > > interceptors
List of interceptors to be used in the simulation.
bool fresh
Flag to indicate whether the simulation should be run from scratch, or whether cached data should be ...
std::filesystem::path output_dir_path
Path to the directory in which to save the simulation output.
SimulationParams(const std::filesystem::path &input_file_path, double delta_t, double end_time, const std::variant< DirectSumType, LinkedCellsType > &container_type, const std::vector< std::shared_ptr< SimulationInterceptor >> &interceptors, const std::vector< std::shared_ptr< SimpleForceSource >> &simple_forces, const std::vector< std::shared_ptr< PairwiseForceSource >> &pairwise_forces, const std::vector< std::shared_ptr< TargettedForceSource >> &targetted_forces, bool fresh=false, const std::filesystem::path &base_path="./output", size_t start_iteration=0)
Construct a new SimulationParams object.
std::filesystem::path input_file_path
Path to the input file of the simulation.
std::size_t input_file_hash
Hash of the input file of the simulation.
size_t start_iteration
Start iteration of the simulation.
std::vector< std::shared_ptr< SimpleForceSource > > simple_forces
Simple Forces to be applied to the particles.
void logSummary(int depth=0) const
Prints a summary of the simulation parameters to the console.
std::vector< std::shared_ptr< TargettedForceSource > > targetted_forces
Targetted Forces to be applied to the particles.
std::variant< DirectSumType, LinkedCellsType > container_type
Type of the particle container.
double end_time
End time of the simulation.
std::string to_string(const Container &container, const std::string &delimiter=", ", const std::array< std::string, 2 > &surround={"[", "]"})
Struct to specify the type of the particle container as DirectSumType.
Struct to specify the type of the particle container as LinkedCellsType (needs domain_size and cutoff...
std::array< double, 3 > domain_size
std::array< LinkedCellsContainer::BoundaryCondition, 6 > boundary_conditions
LinkedCellsType(const std::array< double, 3 > &domain_size, double cutoff_radius, const std::array< LinkedCellsContainer::BoundaryCondition, 6 > &boundary_conditions)