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 *
66 lines
1.8 KiB
C++
66 lines
1.8 KiB
C++
/* rk4.h - Simulation of rocket flight */
|
|
/* 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 (rk4_h)
|
|
#define rk4_h 1
|
|
|
|
#include "c++rocket.h"
|
|
|
|
extern int model_1(int neq, double time,
|
|
double* z, double* dy,
|
|
int ierr);
|
|
|
|
extern int model_2(int neq, double time,
|
|
double* z, double* dy,
|
|
int ierr);
|
|
|
|
typedef int (*ModelFunc_t) (int, double,
|
|
double*, double*, int);
|
|
|
|
extern "C" int rk4( int (*f)(int neq, double time,
|
|
double *y, double *dy,
|
|
int ierr),
|
|
int neq, double step, double duration,
|
|
double *ic, double **y );
|
|
|
|
class rk4_solver
|
|
{
|
|
|
|
private:
|
|
void *md; // pointer to the model function
|
|
int memory;
|
|
|
|
double time;
|
|
|
|
int neq;
|
|
int length;
|
|
double **ans;
|
|
|
|
public:
|
|
rk4_solver(Model_t model);
|
|
~rk4_solver();
|
|
|
|
void print();
|
|
void export_octave(char *filename);
|
|
|
|
int solve(double *st, double duration, double step);
|
|
};
|
|
|
|
|
|
#endif
|