Powered by AppSignal & Oban Pro

Mission Fuel Calculator

calculate_fuel_for_mission.livemd

Mission Fuel Calculator

alias BetterThanNASA.Physics
alias BetterThanNASA.MissionControl

Scenario 1: Apollo 11 Mission

  • Path: launch Earth, land Moon, launch Moon, land Earth
  • Equipment mass: 28801 kg
apollo_stops = [
  %{planet: :earth, operation: :launch},
  %{planet: :moon, operation: :landing},
  %{planet: :moon, operation: :launch},
  %{planet: :earth, operation: :landing}
]

apollo_equipment_mass = 28_801
apollo_fuel = MissionControl.calculate_mission_fuel(apollo_equipment_mass, apollo_stops)
IO.puts("Apollo 11 Mission Fuel Required: #{apollo_fuel} kg")
Apollo 11 Mission Fuel Required: 51898 kg
:ok

Scenario 2: Mars Mission

  • Path: launch Earth, land Mars, launch Mars, land Earth
  • Equipment mass: 14606 kg
mars_stops = [
  %{planet: :earth, operation: :launch},
  %{planet: :mars, operation: :landing},
  %{planet: :mars, operation: :launch},
  %{planet: :earth, operation: :landing}
]

mars_equipment_mass = 14_606
mars_fuel = MissionControl.calculate_mission_fuel(mars_equipment_mass, mars_stops)
IO.puts("Mars Mission Fuel Required: #{mars_fuel} kg")
Mars Mission Fuel Required: 33388 kg
:ok

Scenario 3: Passenger Ship Mission

  • Path: launch Earth, land Moon, launch Moon, land Mars, launch Mars, land Earth
  • Equipment mass: 75432 kg
passenger_stops = [
  %{planet: :earth, operation: :launch},
  %{planet: :moon, operation: :landing},
  %{planet: :moon, operation: :launch},
  %{planet: :mars, operation: :landing},
  %{planet: :mars, operation: :launch},
  %{planet: :earth, operation: :landing}
]

passenger_equipment_mass = 75_432
passenger_fuel = MissionControl.calculate_mission_fuel(passenger_equipment_mass, passenger_stops)
IO.puts("Passenger Ship Mission Fuel Required: #{passenger_fuel} kg")
Passenger Ship Mission Fuel Required: 212161 kg
:ok