#define EV 3.0E3 // "exhaust velocity" de los gases 3 km/s (2.5 km/s en 1969)
#define MC 2941.12E3 // masa del cohete Saturn V (misión Apollo 11) 2941.12 toneladas
#define DT 0.1 // incremento de tiempo por iteración de cálculo 0.1 segundos
#define MT 5.97E24 // masa de la Tierra
#define RT 6.379E6 // radio de la Tierra
#define ML 7.35E22 // masa de la Luna
#define RL 1.739E6 // radio de la Luna
#define DTL 356400E3 // distancia Tierra-Luna (entre los centros de masas)
#define GG 6.67259E-11 // constante de gravitación universal
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
double mm; // masa restante del cohete
double mg; // masa de gas expulsada en iteración
double ff; // fuerza sobre el cohete
double aa; // aceleración del cohete
double vvi; // velocidad inicial del cohete
double vvf; // velocidad final del cohete
double rri; // posición inicial del cohete
double rrf; // posición final del cohete
double tt; // tiempo
double rr2; // posición donde se anulan las fuerzas
double vescape; // velocidad de escape
rr2 = (DTL*(MT-sqrt(MT*ML)))/(MT-ML);
tt = 0.0;
mm = MC;
vvi = 0.0;
rri = RT;
do {
mg = (DT*mm*AA)/(EV+DT*AA);
mm = mm - mg;
ff = mg*EV/DT + GG*(mm*ML)/pow(DTL-rri,2.0) - GG*(mm*MT)/pow(rri,2.0);
aa = ff/mm;
vvf = aa*DT + vvi;
rrf = aa*pow(DT,2.0)/2.0 + vvi*DT + rri;
vescape = sqrt(2.0*GG*(MT*(1.0/rrf - 1.0/rr2) + ML*(1.0/(DTL-rrf) - 1.0/(DTL-rr2)))); // MAL
tt = tt + DT;
printf("Tiempo : %g [s]\n", tt);
printf("Velocidad de salida de los gases respecto al cohete : %g [m/s]\n", EV);
printf("Masa de gas expulsada por segundo : %g [kg/s]\n", mg/DT);
printf("Masa restante del cohete : %g [kg]\n", mm);
printf("Masa restante del cohete (porcentaje) : %g [%%]\n", mm/MC*100.0);
printf("Empuje del cohete : %g [N]\n", mg*EV/DT);
printf("Fuerza total sobre el cohete : %g [N]\n", ff);
printf("Aceleración sufrida por los astronautas : %g [m/(s^2)]\n", AA);
printf("Aceleración del cohete : %g [m/(s^2)]\n", aa);
printf("Velocidad del cohete : %g [m/s]\n", vvf);
printf("Velocidad del cohete (km/h) : %g [km/h]\n", vvf/1000.0*3600.0);
printf("Velocidad de escape : %g [m/s]\n", vescape);
printf("Velocidad de escape (km/h) : %g [km/h]\n", vescape/1000.0*3600.0);
printf("Posición del cohete : %g [m]\n", rrf);
printf("Altura del cohete sobre la superficie de la Tierra : %g [m]\n", rrf-RT);
printf("Altura del cohete sobre la superficie de la Tierra (km) : %g [km]\n", (rrf-RT)/1000.0);
printf("Distancia del cohete a la superficie de la Luna : %g [m]\n", DTL-rrf-RL);
printf("Distancia del cohete a la superficie de la Luna (km) : %g [km]\n\n", (DTL-rrf-RL)/1000.0);
vvi = vvf;
rri = rrf;
} while (vvf < vescape);
return 0;
}
MAL
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.