2
3
4
5
6
7
8
9
10
11
12
13
14
15
17
18
19
20
22#ifndef MODELS_SUPPORT_SIX_DOF_DYNAMICS_MODEL
23#define MODELS_SUPPORT_SIX_DOF_DYNAMICS_MODEL
29#include "architecture/Time.h"
30#include "architecture/Tasks.h"
31#include "architecture/Executive.h"
32#include "six_dof_dynamics/Frame.hpp"
33#include "six_dof_dynamics/Node.hpp"
34#include "six_dof_dynamics/Body.hpp"
35#include "six_dof_dynamics/FrameDynamics.hpp"
36#include "utils/ForwardEulerIntegrator.hpp"
37#include "utils/RK4Integrator.hpp"
38#include "simulation/SimulationSteps.h"
42 enum integrator_type_e {
78
81
104 : clockwerk::
Task(pnt
, schedule_slot
, m_name
) {}
105 SixDOFDynamicsModel(clockwerk::
Executive &e,
int schedule_slot=-2,
const std::string &m_name=
"six_dof_dynamics")
106 : clockwerk::
Task(e
, schedule_slot
, m_name
) {}
107 ~SixDOFDynamicsModel() {}
132 unsigned int _integrator_steps_per_step = 0;
#define NUM_INTEGRATED_STATES
Definition Frame.hpp:35
Class for inter-object communication.
Definition DataIO.hpp:46
DataIO(GraphTreeObject *data_parent, std::string data_name, T initial_value)
Constructor for the DataIO object.
Definition DataIO.hpp:134
Central control mechanism to run simulations and software.
Definition Executive.h:43
Definition ForwardEulerIntegrator.hpp:34
Definition FrameDynamics.hpp:34
Frame class definition.
Definition Frame.hpp:92
Base class for object organization.
Definition GraphTreeObject.h:87
Definition RK4Integrator.hpp:34
This is the base implementation of the task class.
Definition Tasks.h:68
Task(Task &pnt, int slot, const std::string &m_name="Unnamed")
Task-based constructor for the task. Auto-assigns executive.
Definition Tasks.cpp:47
Task(Executive &executive, int slot, const std::string &m_name="Unnamed")
Executive-based constructor for the task.
Definition Tasks.cpp:62
Wrapper to manage and convert time as timespce.
Definition Time.h:45
Model to implement 6-DOF dynamics.
Definition SixDOFDynamicsModel.h:72
clockwerk::FrameDynamics< double > _frame_dynamics
Our dynamics model for frames.
Definition SixDOFDynamicsModel.h:141
clockwerk::Time _half_step_size
Temporary variable for time calculation in RK4.
Definition SixDOFDynamicsModel.h:149
int start()
Function to perform task startup activities (step once after creation)
Definition SixDOFDynamicsModel.cpp:23
std::array< double, 13 > _tmp_state
Temporary variables to hold state output from integrator and frame children for recursion.
Definition SixDOFDynamicsModel.h:145
int _integrateRecursiveRk4(clockwerk::Frame< double > *frame_ptr)
Function to recursively integrate the frame tree via RK4.
Definition SixDOFDynamicsModel.cpp:148
void reset()
Function to reset our integrator for next step.
Definition SixDOFDynamicsModel.h:110
unsigned int _integrator_step_num
Variables to track integrator type and steps.
Definition SixDOFDynamicsModel.h:131
std::list< clockwerk::ForwardEulerIntegrator< double, 13 > > _fe_integrators
Vectors of integrators – allows for dynamic integrator numbers.
Definition SixDOFDynamicsModel.h:135
int execute()
Function to execute the task. All math and calculations should be here.
Definition SixDOFDynamicsModel.cpp:57
int _recurseRefreshFrameIntegratorSet(clockwerk::Frame< double > *frame_ptr)
Function to recursively loop through frames and set their integrators.
Definition SixDOFDynamicsModel.cpp:230
int _integrateRecursiveForwardEuler(clockwerk::Frame< double > *frame_ptr)
Function to recursively integrate the frame tree via forward euler.
Definition SixDOFDynamicsModel.cpp:109
SixDOFDynamicsModel(clockwerk::Task &pnt, int schedule_slot=-2, const std::string &m_name="six_dof_dynamics")
Model-specific implementations of startup and derivative Must be scheduled manually to derivative.
Definition SixDOFDynamicsModel.h:103
#define SIGNAL(NAME, TYPE, INITIAL_VALUE)
Definition macros.h:87
#define START_PARAMS
Definition macros.h:96
#define END_OUTPUTS
Definition macros.h:90
#define END_PARAMS
Definition macros.h:98
#define START_OUTPUTS
Definition macros.h:88
#define END_INPUTS
Definition macros.h:94
#define START_INPUTS
Definition macros.h:92
Class to propagate CR3BP dynamics in characteristic units.
Definition ConfigurationWriter.cpp:18
clockwerk::DataIO< clockwerk::Time > current_time
Definition SixDOFDynamicsModel.h:98
clockwerk::DataIO< modelspace::integrator_type_e > integrator_type
Definition SixDOFDynamicsModel.h:79
clockwerk::DataIO< clockwerk::Frame< double > * > root_frame_ptr
Definition SixDOFDynamicsModel.h:82