From 1b855b2997f2d494f2012e6024e514171fb7af2c Mon Sep 17 00:00:00 2001 From: Travis Hunter Date: Mon, 3 Apr 2023 18:18:39 -0600 Subject: [PATCH] WIP --- sim/Propagator.cpp | 18 ++++++++++++++++++ sim/Propagator.h | 15 ++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/sim/Propagator.cpp b/sim/Propagator.cpp index 43cdaef..2a072b0 100644 --- a/sim/Propagator.cpp +++ b/sim/Propagator.cpp @@ -1,10 +1,28 @@ #include "Propagator.h" +#include "sim/RK4Solver.h" + namespace sim { Propagator::Propagator() { +// solver = std::make_unique( +// new(RK4Solver(/* xvel */ [this](double, double* x) -> double { return }))) + + // The state vector has components of the form: (x, y, z, xdot, ydot, zdot) + + integrator = std::make_unique(new RK4Solver( + /* dvx/dt */ [this](double, double* ) -> double { return getForceX() / getMass(); }, + /* dx/dt */ [this](double, double* s) -> double {return s[3]; }, + /* dvy/dt */ [this](double, double* ) -> double { return getForceY() / getMass() }, + /* dy/dt */ [this](double, double* s) -> double {return s[4]; }, + /* dvz/dt */ [this](double, double* ) -> double { return getForceZ() / getMass() }, + /* dz/dt */ [this](double, double* s) -> double {return s[5]; })); + + + + } } // namespace sim diff --git a/sim/Propagator.h b/sim/Propagator.h index fca37b9..dfcfaf5 100644 --- a/sim/Propagator.h +++ b/sim/Propagator.h @@ -13,9 +13,22 @@ class Propagator public: Propagator(); + double getForceX(); + double getForceY(); + double getForceZ(); + + double getTorqueP(); + double getTorqueQ(); + double getTorqueR(); + + double getMass(); + private: - std::unique_ptr solver; + std::unique_ptr integrator; + + double currentState[6]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double nextState[6]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; }; } // namespace sim