mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-27 00:29:35 +00:00
ksp: c: more work trying to get drag to work
This commit is contained in:
parent
7ef075805c
commit
5b0492681b
@ -1,8 +1,8 @@
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -O2
|
||||
LFLAGS =
|
||||
LFLAGS = -lm
|
||||
|
||||
all: ksp_acpx ksp_launch ksp_loading ksp_vab
|
||||
all: ksp_acpx ksp_atan ksp_drag ksp_launch ksp_loading ksp_vab
|
||||
|
||||
ksp_acpx: ksp_acpx.o
|
||||
$(CC) $(LFLAGS) -o ksp_acpx ksp_acpx.o
|
||||
@ -10,6 +10,18 @@ ksp_acpx: ksp_acpx.o
|
||||
ksp_acpx.o: ksp_acpx.c
|
||||
$(CC) $(CFLAGS) -c ksp_acpx.c
|
||||
|
||||
ksp_atan: ksp_atan.o
|
||||
$(CC) $(LFLAGS) -o ksp_atan ksp_atan.o
|
||||
|
||||
ksp_atan.o: ksp_atan.c
|
||||
$(CC) $(CFLAGS) -c ksp_atan.c
|
||||
|
||||
ksp_drag: ksp_drag.o
|
||||
$(CC) $(LFLAGS) -o ksp_drag ksp_drag.o
|
||||
|
||||
ksp_drag.o: ksp_drag.c
|
||||
$(CC) $(CFLAGS) -c ksp_drag.c
|
||||
|
||||
ksp_launch: ksp_launch.o
|
||||
$(CC) $(LFLAGS) -o ksp_launch ksp_launch.o -lm
|
||||
|
||||
@ -30,5 +42,5 @@ ksp_vab.o: ksp_vab.c
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o ksp_launch ksp_loading ksp_vab ksp_acpx
|
||||
rm -f *~ *.o ksp_launch ksp_loading ksp_vab ksp_acpx ksp_drag ksp_atan
|
||||
|
||||
|
53
ksp/c/ksp_drag.c
Normal file
53
ksp/c/ksp_drag.c
Normal file
@ -0,0 +1,53 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
double v0=0;
|
||||
double g=9.8;
|
||||
double mass=700;
|
||||
double coeff=0.5;
|
||||
double area=3.0*1000.0;
|
||||
double density=0.1;
|
||||
double time=0.0;
|
||||
double a=0.0;
|
||||
double altitude=20000.0;
|
||||
double deltat=1.0;
|
||||
double pressure,pressure0=101325.0;
|
||||
double temperature=273.0;
|
||||
double v_dir;
|
||||
double ga,da;
|
||||
double terminal_velocity;
|
||||
|
||||
#define KERBIN_RADIUS 600000.0
|
||||
|
||||
while(1) {
|
||||
|
||||
terminal_velocity=sqrt( (2*mass*g)/(density*area*coeff));
|
||||
|
||||
if (v0>0) v_dir=-1; else v_dir=1;
|
||||
ga=-g;
|
||||
da=v_dir*(1.0/(2.0*mass))*coeff*density*area*v0*v0;
|
||||
|
||||
a=ga+da;
|
||||
|
||||
// v0=v0+(a*deltat);
|
||||
v0=-terminal_velocity;
|
||||
altitude=altitude+(v0*deltat);
|
||||
time+=deltat;
|
||||
|
||||
pressure=pressure0*exp(-(altitude)/5600);
|
||||
density=pressure/(287*temperature);
|
||||
|
||||
g=9.8/(
|
||||
((altitude+KERBIN_RADIUS)/KERBIN_RADIUS)*
|
||||
((altitude+KERBIN_RADIUS)/KERBIN_RADIUS));
|
||||
|
||||
|
||||
printf("t=%lf ga=%lf da=%lf a=%lf v=%lf y=%lf tv=%lf\n",time,ga,da,a,v0,altitude,
|
||||
terminal_velocity);
|
||||
if ((altitude<0) || (altitude>21000)) break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user