fork download
  1. from math import sqrt, acos
  2.  
  3. G = 6.67428e-11
  4. earth_mass = 5.9736e24
  5. earth_radius = 6.371e6
  6.  
  7. def potential_energy(m1, m2, r):
  8. return -G * m1 * m2 / r
  9.  
  10. def orbital_speed(m, r):
  11. return sqrt(G * m / r)
  12.  
  13. def orbital_kinetic_energy(m, m2, r):
  14. return m * orbital_speed(m2, r) ** 2 / 2
  15.  
  16. def free_fall_time(y0, y, m):
  17. return (sqrt(y0 ** 3 / (2 * G * m)) *
  18. (sqrt(y / y0 * (1 - y / y0)) + acos(sqrt(y / y0))))
  19.  
  20. earth_surface_p = potential_energy(1.0, earth_mass, earth_radius)
  21.  
  22. def print_params(orbit_name, orbit_radius):
  23. print(orbit_name)
  24. my_potential_energy = (potential_energy(1.0, earth_mass, orbit_radius) - earth_surface_p)
  25. my_kinetic_energy = orbital_kinetic_energy(1.0, earth_mass, orbit_radius)
  26. my_total_energy = my_potential_energy + my_kinetic_energy
  27. my_impact_velocity = sqrt(2 * my_potential_energy)
  28. my_free_fall_time = free_fall_time(orbit_radius, earth_radius, earth_mass)
  29. print('Potential energy: {} MJ/kg'.format(my_potential_energy / 1e6))
  30. print('Kinetic energy: {} MJ/kg'.format(my_kinetic_energy / 1e6))
  31. print('Total energy: {} MJ/kg'.format(my_total_energy / 1e6))
  32. print('Impact velocity: {} km/s'.format(my_impact_velocity / 1e3))
  33. print('Free fall time: {} minutes ({} days)'.format(my_free_fall_time / 60, my_free_fall_time / (60 * 60 * 24)))
  34. print()
  35.  
  36. print_params('ISS (400km)', earth_radius + 0.4e6)
  37. print_params('2000 km', earth_radius + 2e6)
  38. print_params('3000 km', earth_radius + 3e6)
  39. print_params('4000 km', earth_radius + 4e6)
  40. print_params('Geostationary (35,786 km)', earth_radius + 35.786e6)
  41. print_params('Moon (385,000 km)', 385e6)
Success #stdin #stdout 0.02s 27704KB
stdin
Standard input is empty
stdout
ISS (400km)
Potential energy: 3.696920683811307 MJ/kg
Kinetic energy: 29.441352095702253 MJ/kg
Total energy: 33.138272779513564 MJ/kg
Impact velocity: 2.719161886983306 km/s
Free fall time: 5.0048372628751405 minutes (0.003475581432552181 days)

2000 km
Potential energy: 14.95152905870644 MJ/kg
Kinetic energy: 23.81404790825469 MJ/kg
Total energy: 38.76557696696113 MJ/kg
Impact velocity: 5.4683688717398065 km/s
Free fall time: 13.396146838789178 minutes (0.009302879749159151 days)

3000 km
Potential energy: 20.034027811935484 MJ/kg
Kinetic energy: 21.272798531640163 MJ/kg
Total energy: 41.30682634357565 MJ/kg
Impact velocity: 6.329933303271921 km/s
Free fall time: 18.081689565930745 minutes (0.012556728865229684 days)

4000 km
Potential energy: 24.136389885340208 MJ/kg
Kinetic energy: 19.2216174949378 MJ/kg
Total energy: 43.358007380278 MJ/kg
Impact velocity: 6.947861525007562 km/s
Free fall time: 22.804098383780726 minutes (0.01583617943318106 days)

Geostationary (35,786 km)
Potential energy: 53.12224436711514 MJ/kg
Kinetic energy: 4.728690254050335 MJ/kg
Total energy: 57.85093462116548 MJ/kg
Impact velocity: 10.307496724919696 km/s
Free fall time: 247.12843152953445 minutes (0.1716169663399545 days)

Moon (385,000 km)
Potential energy: 61.54405399189114 MJ/kg
Kinetic energy: 0.5177854416623376 MJ/kg
Total energy: 62.06183943355347 MJ/kg
Impact velocity: 11.094508009992254 km/s
Free fall time: 6997.290917572443 minutes (4.859229803869751 days)