BD_Integratoren/src/Calculation.h
2021-10-25 15:45:29 +02:00

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;
};