Taken from sources in CVS at: https://sourceforge.net/projects/rocketworkbench/ Sources extracted in two steps: 1. Pull entire project tree into a subdir "rwb" via "rsync": rsync -a a.cvs.sourceforge.net::cvsroot/rocketworkbench/ rwb/. 2. Export sources: export CVSROOT=$(pwd)/rwb SUBDIRS="analyser cpropep cpropep-web CVSROOT data libcompat libcpropep libnum libsimulation libthermo prop rocketworkbench rockflight" mkdir rwbx; cd rwbx cvs export -D now ${SUBDIRS} After this (and some backups for safety), the directory content was added to a Git repo: git init . git add *
175 lines
4.5 KiB
C++
175 lines
4.5 KiB
C++
/* cpropep.c - Calculation of Complex Chemical Equilibrium */
|
||
/* Copyright (C) 2000 */
|
||
/* Antoine Lefebvre <antoine.lefebvre@polymtl.ca> */
|
||
|
||
/* This program is free software; you can redistribute it and/or modify*/
|
||
/* it under the terms of the GNU General Public License as published by*/
|
||
/* the Free Software Foundation; either version 2 of the License, or */
|
||
/* (at your option) any later version. */
|
||
|
||
/* This program is distributed in the hope that it will be useful, */
|
||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||
/* GNU General Public License for more details. */
|
||
|
||
/* You should have received a copy of the GNU General Public License */
|
||
/* along with this program; if not, write to the Free Software */
|
||
/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||
|
||
#if !defined (rocket_h)
|
||
#define rocket_h 1
|
||
|
||
#include <iostream>
|
||
|
||
#include "c++rocket.h"
|
||
|
||
// enumeration for data
|
||
|
||
typedef enum
|
||
{
|
||
pression_sol, // ground pressure in Pa
|
||
masse_molaire, // molar mass of the atmosphere
|
||
temperature, // temperature of the atmosphere
|
||
ATM_DATA_LAST
|
||
} AtmData;
|
||
|
||
typedef enum
|
||
{
|
||
masse, // mass of the plenet in Kg
|
||
rayon, // radius of the planet in m
|
||
PLANETE_DATA_LAST
|
||
} PlaneteData;
|
||
|
||
typedef enum
|
||
{
|
||
Kdrag, // drag coefficient
|
||
Kdd, // Kd variation with delta
|
||
Klift, // lift coefficient
|
||
Kspin, // cross-spin coefficient
|
||
Kmoment, // moment coefficient
|
||
Kdamping, // damping coefficient
|
||
dmoment, // restoring moment asymetry
|
||
dlift, // lift asymetry
|
||
Diameter, // diameter of the rocket in m
|
||
Mass, // rocket mass in kg (without booster)
|
||
rcm_throat, // distance between mass center and throat throat
|
||
rcm_exit, // distance between mass center and 'exit area'
|
||
k, // radius of geryration about a transverse axis in meter
|
||
// this field should become a function of time
|
||
dt, // angle of the thrust about the rocket axis
|
||
PARA_ROCKET_LAST
|
||
} ParaRocket;
|
||
|
||
// Classes ********************************************
|
||
|
||
class propulseur {
|
||
|
||
char name[32];
|
||
double diameter;
|
||
double length;
|
||
|
||
double masse_poudre;
|
||
double masse_totale;
|
||
double **thrust; // table of thrust in function of time
|
||
int check(void); // function to verify if there is data loaded
|
||
public:
|
||
double burntime;
|
||
int ndata; // number of point in **thrust
|
||
int load_data(char*); // char* is the file name
|
||
int print_data(void);
|
||
|
||
//#ifdef WITH_GTK
|
||
//int plot_data(void); //plot a graph of the thrust as a fonction of time
|
||
//#endif
|
||
|
||
propulseur(void) { ndata = 0; }
|
||
~propulseur(void);
|
||
|
||
double T(double time); // thrust in function of time
|
||
double M(double time); // mass in function of time
|
||
|
||
// to be verify
|
||
double impulse(void); // total impulse of the motor
|
||
double favg(void); // mean thrust of the motor
|
||
|
||
double vg(void); // gaz speed at the exit
|
||
double isp(void); // specific impulse
|
||
|
||
double propellant_mass_fraction(void);
|
||
double impulse_to_weight(void);
|
||
};
|
||
|
||
|
||
|
||
class rocket
|
||
{
|
||
int nprop; // nomber of stage
|
||
|
||
public:
|
||
char name[32]; // name of the rocket
|
||
|
||
double r_data[PARA_ROCKET_LAST];
|
||
class propulseur prop[MAXPROP];
|
||
|
||
// set a stage of the rocket (file is the path name of the data file)
|
||
int set_propulseurs(int stage, char file[128]);
|
||
int n_prop(void) { return nprop; }
|
||
rocket(void);
|
||
rocket(double *);
|
||
~rocket() { cout << "Destroying rocket\n"; }
|
||
|
||
};
|
||
|
||
|
||
|
||
class atmosphere
|
||
{
|
||
public:
|
||
double a_data[ATM_DATA_LAST];
|
||
atmosphere(void);
|
||
atmosphere(double *);
|
||
~atmosphere() { cout << "Destroying atmosphere\n";}
|
||
};
|
||
|
||
|
||
class planete : public atmosphere
|
||
{
|
||
public:
|
||
double p_data[PLANETE_DATA_LAST];
|
||
|
||
double densiteatm(double); // g/cm^3
|
||
|
||
planete(void);
|
||
planete(double *);
|
||
planete(double *planete_data, double *atm_data);
|
||
|
||
~planete() { cout << "Destroying planete\n"; }
|
||
};
|
||
|
||
|
||
|
||
|
||
class flight_program
|
||
{
|
||
public:
|
||
double ta[MAXPROP]; //temps de l'allumage (depuis le largage du pr<70>c<EFBFBD>dent)
|
||
double tl[MAXPROP]; //temps du largage (apr<70>s la fin de la combustion)
|
||
|
||
int set_prog(int stage, double allumage, double largage);
|
||
|
||
flight_program(void);
|
||
~flight_program(void) { }
|
||
};
|
||
|
||
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|