qtrocket/sim/Propagator.h
Travis Hunter e6bf1fea9b
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc-13, g++-13, ubuntu-latest) (push) Has been cancelled
Revert "Merge pull request #20 from cthunter01/propagator"
This reverts commit 6280d9fb0184275843a8f4406c7293e41e65a639, reversing
changes made to 3c9c8b8c6a2b2e7430ff09efdc2cc0c1996b16ca.
2025-04-16 18:23:28 -06:00

72 lines
1.2 KiB
C++

#ifndef SIM_PROPAGATOR_H
#define SIM_PROPAGATOR_H
/// \cond
// C headers
// C++ headers
#include <memory>
// 3rd party headers
/// \endcond
// qtrocket headers
#include "sim/RK4Solver.h"
#include "utils/math/MathTypes.h"
#include "sim/StateData.h"
#include "model/Propagatable.h"
// Forward declare
namespace model
{
class Rocket;
}
class QtRocket;
namespace sim
{
class Propagator
{
public:
Propagator(std::shared_ptr<model::Propagatable> o);
~Propagator();
void setInitialState(const StateData& initialState)
{
object->setInitialState(initialState);
}
const StateData& getCurrentState() const
{
return object->getCurrentState();
}
void runUntilTerminate();
void retainStates(bool s)
{
saveStates = s;
}
void setCurrentTime(double t) { currentTime = t; }
void setTimeStep(double ts) { timeStep = ts; }
void setSaveStats(bool s) { saveStates = s; }
private:
std::unique_ptr<sim::RK4Solver<Vector3>> linearIntegrator;
// std::unique_ptr<sim::RK4Solver<Quaternion>> orientationIntegrator;
std::shared_ptr<model::Propagatable> object;
bool saveStates{true};
double currentTime{0.0};
double timeStep{0.01};
};
} // namespace sim
#endif // SIM_PROPAGATOR_H