44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
//
|
|
// Created by jholder on 22.10.21.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include "Compute.h"
|
|
#include "Rod2d.hpp"
|
|
#include "Simulation.h"
|
|
|
|
class Calculation {
|
|
private:
|
|
Rod2d rod = Rod2d(1.0);
|
|
Simulation sim;
|
|
std::function<void(Rod2d &, Simulation &)> m_integrator;
|
|
std::vector<Compute> computes;
|
|
|
|
public:
|
|
const Simulation &getSim() const;
|
|
|
|
Calculation(
|
|
std::function<void(
|
|
Rod2d &, Simulation &,
|
|
std::function<Eigen::Vector2d(Eigen::Vector2d, Eigen::Vector2d)>,
|
|
std::function<double(Eigen::Vector2d, Eigen::Vector2d)>)>
|
|
t_integrator,
|
|
std::initializer_list<std::pair<Compute::Type, size_t>> t_computes,
|
|
double deltaT, size_t seed,
|
|
std::function<Eigen::Vector2d(Eigen::Vector2d, Eigen::Vector2d)> force,
|
|
std::function<double(Eigen::Vector2d, Eigen::Vector2d)> torque);
|
|
|
|
explicit Calculation(
|
|
std::function<void(Rod2d &, Simulation &)> t_integrator,
|
|
std::initializer_list<std::pair<Compute::Type, size_t>> t_computes,
|
|
double deltaT, size_t seed);
|
|
|
|
[[nodiscard]] const std::vector<Compute> &getComputes() const;
|
|
|
|
void run(size_t steps);
|
|
|
|
[[nodiscard]] const Rod2d &getRod() const;
|
|
};
|