WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
SixDOFDynamicsModel.h
Go to the documentation of this file.
1/******************************************************************************
2* Copyright (c) ATTX INC 2025. All Rights Reserved.
3*
4* This software and associated documentation (the "Software") are the
5* proprietary and confidential information of ATTX INC. The Software is
6* furnished under a license agreement between ATTX and the user organization
7* and may be used or copied only in accordance with the terms of the agreement.
8* Refer to 'license/attx_license.adoc' for standard license terms.
9*
10* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
11* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
12* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
13* transmitted in any form or by any means, for any purpose, without the express
14* written permission of ATTX INC.
15******************************************************************************/
16/*
176-DOF Dynamics header file
18
19Author: Alex Reynolds
20*/
21/*
22Metadata for MS GUI:
23imdata = {"exclude" : True}
24*/
25
26#ifndef MODELS_SUPPORT_SIX_DOF_DYNAMICS_MODEL
27#define MODELS_SUPPORT_SIX_DOF_DYNAMICS_MODEL
28
29#include <vector>
30#include <array>
31#include <list>
32
33#include "architecture/Time.h"
34#include "flight/App.h"
36#include "frames/Frame.h"
37#include "frames/Node.h"
38#include "frames/Body.h"
43
44namespace warptwin {
45
50
77 public:
88
97
104
109
112 protected:
113 int16 start() override;
114 int16 execute() override;
115
124 int _integrateRecursiveRk4(Frame* frame_ptr);
125
130
132 unsigned int _integrator_step_num = 0;
134
136 std::list<warpos::ForwardEulerIntegrator<NUM_INTEGRATED_STATES>> _fe_integrators;
137 std::list<warpos::RK4Integrator<NUM_INTEGRATED_STATES>> _rk4_integrators;
140
143
146 std::array<double, NUM_INTEGRATED_STATES> _tmp_state;
147 std::vector<GraphTreeObject*> _frame_children;
148
151 };
152
153}
154
155#endif
#define SIGNAL(NAME, TYPE, INITIAL_VALUE)
Definition appmacros.h:27
#define START_PARAMS
Definition appmacros.h:42
#define END_OUTPUTS
Definition appmacros.h:33
#define END_PARAMS
Definition appmacros.h:47
#define START_OUTPUTS
Definition appmacros.h:28
#define END_INPUTS
Definition appmacros.h:40
#define START_INPUTS
Definition appmacros.h:35
Class for inter-object communication.
Definition DataIO.hpp:60
Wrapper to manage and convert time as timespce.
Definition Time.h:53
Base app class for derived implementation.
Definition App.h:55
Executive derivation specifically to run flight systems.
Definition FlightExecutive.h:46
Definition ForwardEulerIntegrator.hpp:34
Definition RK4Integrator.hpp:33
Definition FrameDynamics.h:34
Frame class definition.
Definition Frame.h:96
warpos::ForwardEulerIntegrator< NUM_INTEGRATED_STATES > * _fe_ptr
Definition SixDOFDynamicsModel.h:139
virtual ~SixDOFDynamicsModel()
Definition SixDOFDynamicsModel.h:108
std::array< double, NUM_INTEGRATED_STATES > _tmp_state
Definition SixDOFDynamicsModel.h:146
void reset()
Function to reset our integrator for next step.
Definition SixDOFDynamicsModel.h:111
clockwerk::Time _half_step_size
Temporary variable for time calculation in RK4.
Definition SixDOFDynamicsModel.h:150
int16 execute() override
Definition SixDOFDynamicsModel.cpp:65
unsigned int _integrator_steps_per_step
Definition SixDOFDynamicsModel.h:133
int _recurseRefreshFrameIntegratorSet(Frame *frame_ptr)
Function to recursively loop through frames and set their integrators.
Definition SixDOFDynamicsModel.cpp:250
warpos::RK4Integrator< NUM_INTEGRATED_STATES > * _rk4_ptr
Definition SixDOFDynamicsModel.h:138
std::vector< GraphTreeObject * > _frame_children
Definition SixDOFDynamicsModel.h:147
int _integrateRecursiveRk4(Frame *frame_ptr)
Function to recursively integrate the frame tree via RK4.
Definition SixDOFDynamicsModel.cpp:160
std::list< warpos::ForwardEulerIntegrator< NUM_INTEGRATED_STATES > > _fe_integrators
Vectors of integrators – allows for dynamic integrator numbers.
Definition SixDOFDynamicsModel.h:136
FrameDynamics _frame_dynamics
Our dynamics model for frames.
Definition SixDOFDynamicsModel.h:142
SixDOFDynamicsModel(warpos::FlightExecutive &executive)
Definition SixDOFDynamicsModel.cpp:26
int _integrateRecursiveForwardEuler(Frame *frame_ptr)
Function to recursively integrate the frame tree via forward euler.
Definition SixDOFDynamicsModel.cpp:117
std::list< warpos::RK4Integrator< NUM_INTEGRATED_STATES > > _rk4_integrators
Definition SixDOFDynamicsModel.h:137
int16 start() override
Definition SixDOFDynamicsModel.cpp:31
unsigned int _integrator_step_num
Variables to track integrator type and steps.
Definition SixDOFDynamicsModel.h:132
Class to propagate CR3BP dynamics in characteristic units.
Definition statistics.hpp:22
integrator_type_e
Definition SixDOFDynamicsModel.h:46
@ FORWARD_EULER
Definition SixDOFDynamicsModel.h:47
@ RK4
Definition SixDOFDynamicsModel.h:48
clockwerk::DataIO< clockwerk::Time > step_end_time
Definition SixDOFDynamicsModel.h:95
clockwerk::DataIO< clockwerk::Time > step_start_time
Definition SixDOFDynamicsModel.h:93
clockwerk::DataIO< clockwerk::Time > current_time
Definition SixDOFDynamicsModel.h:102
clockwerk::DataIO< Frame * > root_frame_ptr
Definition SixDOFDynamicsModel.h:86
clockwerk::DataIO< int > integrator_type
Definition SixDOFDynamicsModel.h:83