trick/trick_sims/SIM_splashdown/models/CrewModule/include/CrewModuleDynamics.hh

70 lines
2.1 KiB
C++

/************************************************************************
PURPOSE: (Simulate a ... .)
LIBRARY DEPENDENCIES:
((CrewModule/src/CrewModuleDynamics.o)((CrewModule/src/CrewModuleShape.o)))
**************************************************************************/
#ifndef CREW_MODULE_DYNAMICS_HH
#define CREW_MODULE_DYNAMICS_HH
#include "../include/CrewModuleShape.hh"
class CrewModuleDynamics {
public:
double R[3][3]; /* (--) Vehicle body to World rotation matrix. */
double Rdot[3][3];
double angular_velocity[3];
double I_body[3][3]; /* (kg*m2) Inertia Tensor in Body frame. */
double I_body_inverse[3][3];
double momentum[3]; /* (N*s) Linear Momentum */
double force_total[3]; /* (N) */
double force_gravity[3]; /* (N) */
double force_buoyancy[3]; /* (N) */
double force_drag[3]; /* (N) */
double position[3]; // (m) Position (world coordinates).
double velocity[3]; // (m/s) Velocity (world coordinates).
double mass_vehicle; // (kg) Vehicle mass
double angular_momentum[3]; /* (kg*m2/s) Angular Momentum */
double torque_buoyancy[3]; /* (N*m) */
double torque_drag[3]; /* (N*m) */
double torque_total[3]; /* (N*m) */
double center_of_buoyancy[3];
double volume_displaced; // (m^3)
double mass_displaced; // (kg) mass of displaced water.
CrewModuleShape crewModuleShape;
double density_of_water; // (kg/m^3) density of water.
CrewModuleDynamics();
void init_defaults();
void init_inertia_tensor(double A, double B, double C);
void calcVolumeAndCenterOfBuoyancy();
void calcVelocity();
void calcRDot();
void calcAngularVelocity();
void calcTotalTorque();
void calcBuoyancyTorque();
void calcDragTorque();
void calcMassDisplaced();
void calcTotalForce();
void calcBuoyancyForce();
void calcGravityForce();
void calcDragForce();
int calc_derivatives();
int calc_state();
};
#endif