|
|
-
- #ifndef __state_h__
- #define __state_h__
-
- typedef double real;
-
- typedef real scalar_t;
- typedef real vector_t[3];
- typedef real matrix_t[3][3];
-
- typedef enum
- {
- _CONSTANT,
- _FUNCTION,
- _TABLE
- } val_t;
-
- typedef enum
- {
- ALT,
- MACH,
- AOA,
- TIME
- } parameter_t;
-
- typedef struct _function
- {
- char *name;
- val_t type;
-
- /* if type is _CONSTANT */
- float constant_value;
-
- /* if type is _TABLE */
- int n_point;
- parameter_t independant_var;
- float *x, *y;
-
- /* if type is _FUNCTION */
- char *function;
-
- } function_t;
-
- typedef struct state
- {
- int s; /* active stage */
-
- scalar_t m; /* mass of the rocket */
- scalar_t g; /* gravitational acceleration */
-
- scalar_t Ix;
- scalar_t Iy;
- scalar_t Iz;
-
- /* */
- scalar_t alt;
- scalar_t aoa;
- scalar_t mach;
-
- /* aerodynamic coefficients */
- scalar_t Cd;
- scalar_t CL;
- scalar_t CB;
- scalar_t Cspin;
- scalar_t Cmoment;
- scalar_t Cdamping;
-
- scalar_t D; /* Diameter of the rocket */
- scalar_t A; /* reference area (m^2) */
- scalar_t C; /* reference distance */
-
- /* aerodynamic forces */
- vector_t Faero; /* (X, Y, Z) */
- /* moments */
- vector_t Maero; /* (L, M, N) */
-
- /* engine forces and moments */
- vector_t Feng;
- vector_t Meng;
-
- /* component of centripetal acceleration in F_B */
- scalar_t Cx;
- scalar_t Cy;
- scalar_t Cz;
-
- /* earth angular velocity in F_B */
- scalar_t pE;
- scalar_t qE;
- scalar_t rE;
-
- /* relative angular velocity of F_B to F_V */
- scalar_t P;
- scalar_t Q;
- scalar_t R;
-
- matrix_t L_BV;
- matrix_t L_VB;
-
- } state_t;
-
-
-
-
-
-
- typedef struct engine
- {
- float propellant_mass;
- float dry_mass;
-
- function_t thrust;
-
- float c;
- float mass_flow;
-
- float start_time;
- float burn_time;
- float drop_time;
-
- float position[3];
- float direction[3];
-
- } engine_t;
-
- typedef struct rocket_properties
- {
- float dry_mass;
-
- function_t Ix;
- function_t Iy;
- function_t Iz;
-
- function_t Cd;
- function_t CL;
- function_t CB;
-
- float Cspin;
- float Cmoment;
- float Cdamping;
-
- float Diameter;
-
- float active_time;
-
- int n_engine;
- engine_t *engines;
- } rocket_properties_t;
-
- typedef struct rocket
- {
- int n_stage;
- rocket_properties_t *stage_properties;
- state_t state;
- } rocket_t;
-
- typedef struct solution
- {
- float duration;
- float dt;
- float precision;
- } solution_t;
-
- #endif /* __state_h__ */
-
-
-
-
-
-
|