This commit is contained in:
Travis Hunter 2023-04-03 18:18:39 -06:00
parent 39920e2777
commit 1b855b2997
2 changed files with 32 additions and 1 deletions

View File

@ -1,10 +1,28 @@
#include "Propagator.h"
#include "sim/RK4Solver.h"
namespace sim {
Propagator::Propagator()
{
// solver = std::make_unique<sim::DESolver>(
// 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<sim::DESolver>(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

View File

@ -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<sim::DESolver> solver;
std::unique_ptr<sim::DESolver> 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