Welcome back to the workbench! One of the most beautiful aspects of physics is its universality—the same math we use to calculate the efficiency of a hydroelectric turbine at Nevada Falls applies to the towering plumes of Enceladus.
In this session, we’re looking at the "Many Faces of Energy." We start by calculating the massive power output of Earth's falling water, then take that same energy budget to the stars.
By keeping our mass and energy fixed, we can see exactly how the varying gravitational pulls of different celestial bodies dictate the height and duration of a geyser’s arc. Whether you're calculating E = mgh for a local power grid or a moon-hopping adventure, the logic remains as steady as the stars.
Summary of the Script's Logic
The script operates on a few core physical principles:
- Newton’s Law of Gravitation: We calculate local gravity (g) using the mass and radius of the target world: Conservation of Energy: By setting Kinetic Energy equal to Potential Energy (1/2 mv^2 = mgh), we find that regardless of the world, a fixed amount of energy results in a fixed initial velocity.
- The Height Equation: The final height is inversely proportional to the local gravity: On a low-gravity moon like Enceladus, that 1.0 MJ of energy doesn't just push water—it launches it into a slow-motion, five-minute journey into the heavens. Let’s look at the numbers.
"""
THE 70-YEAR-OLD CODER: Many Faces of Energy
This script compares the gravitational potential energy and
geyser mechanics across different worlds.
We use the conservation of energy (E = mgh = 1/2 mv^2) to see
how high a 2,000 kg mass would rise if given 1.0 Megajoule.
"""
import math
# --- Constants & Conversions ---
G = 6.6743e-11 # Universal Gravitational Constant
MT_IN_FOOT = 0.3048 # Meters in a foot
M3_IN_CUFT = MT_IN_FOOT**3
SECS_IN_DAY = 24 * 60 * 60
def ht(pe, m, g):
"""Calculates height (h) given Potential Energy (pe), Mass (m), and Gravity (g)."""
return pe / (m * g)
def calculate_g(m, r):
"""Calculates surface gravity (g) using Mass (M) and Radius (R)."""
return G * m / r**2
# --- Example 1: Earth-bound Power (Nevada Falls) ---
print("--- EXAMPLE 1: NEVADA FALLS HYDRO-POWER ---")
height_nf = 180 # meters
water_flow_cuft = 500 # cubic feet per second
density = 1000 # kg/m3
eff_pct = 70 # Turbine efficiency
water_rate_m3 = water_flow_cuft * M3_IN_CUFT
water_mass_rate = water_rate_m3 * density
energy_per_sec = water_mass_rate * 9.81 * height_nf # E = mgh
energy_per_day_mj = (energy_per_sec * SECS_IN_DAY) / 1e06
useful_energy_mj = (eff_pct / 100) * energy_per_day_mj
print(f"Water Mass Flow: {water_mass_rate:.2f} kg/s")
print(f"Total Energy/Day: {energy_per_day_mj:,.0f} MegaJoules")
print(f"Useful Energy (70%): {useful_energy_mj:,.0f} MegaJoules\n")
# --- Example 2: The Universal Geyser ---
print("--- EXAMPLE 2: THE UNIVERSAL GEYSER COMPARISON ---")
energy_geyser = 1e06 # 1.0 MegaJoule
mass_lifted = 2000 # 2000 kg (approx. 2 small cars)
# Initial Velocity is the same for all (Kinetic Energy = 1/2 mv^2)
# v = sqrt(2E/m)
init_vel = math.sqrt(2 * energy_geyser / mass_lifted)
print(f"Fixed Energy: {energy_geyser/1e6:.1f} MJ")
print(f"Fixed Mass: {mass_lifted} kg")
print(f"Shared Launch Velocity: {init_vel:.2f} m/s (~114 km/h)\n")
# Dictionary of celestial bodies: (Mass in kg, Radius in meters)
bodies = {
"Earth": (5.972e24, 6.371e06),
"Io": (8.932e22, 1.8216e06),
"Europa": (4.80e22, 1.5608e06),
"Triton": (2.14e22, 1.3534e06),
"Enceladus": (1.08e20, 0.2521e06)
}
# Header for the table
print(f"{'World':<12 g="" m="" s2="">10} | {'Height (m)':>12} | {'Time to Top (s)':>15}")
print("-" * 58)
for name, (m, r) in bodies.items():
g_local = calculate_g(m, r)
height = ht(energy_geyser, mass_lifted, g_local)
time_to_top = init_vel / g_local
print(f"{name:<12 g_local:="">10.3f} | {height:>12.2f} | {time_to_top:>15.2f}")
print("\nConclusion: On Enceladus, you can watch the geyser rise for nearly 5 minutes!")
12>12>

No comments:
Post a Comment