Monday, 30 March 2026

Life on a Lava World: Decoding the Physics of Kepler-10b

Imagine a world where a "year" lasts less than an Earth day, the ground beneath your feet is a shifting ocean of molten lava, and the gravity is so intense it would make you feel more than twice your normal weight. This isn't science fiction—it’s Kepler-10b.
Located about 560 light-years away, Kepler-10b was the first rocky planet ever confirmed by NASA’s Kepler mission, proving that Earth-sized worlds exist elsewhere in the cosmos. But the similarities end there. By applying the fundamental laws of orbital mechanics and Newtonian gravity, we can strip away the mystery of this "iron planet" and see the extreme numbers that define its existence. In this post, we’re using Python to break down the orbital velocity, surface gravity, and sheer kinetic energy of this cosmic speedster. Let’s dive into the code and see what it really takes to survive on one of the most hostile planets ever discovered.

import math

# Constants
G = 6.67430e-11  # Universal gravitational constant (m3 kg-1 s-2)
G_EARTH = 9.81   # Acceleration due to gravity on Earth (m/s2)
KG_TO_LBS = 2.20462  # Conversion factor for mass/weight
KM_TO_M = 1000
HR_TO_SEC = 3600

# Earth Data
RADIUS_EARTH_KM = 6378

def vol_sphere(r_meters):
    """Calculates volume of a sphere given radius in meters."""
    return (4 / 3) * math.pi * r_meters**3

def acc_gravity(m_kg, r_meters):
    """Calculates acceleration due to gravity (g = GM/r^2)."""
    return G * m_kg / r_meters**2

def kepler_constant(t, r):
    """Calculates T^2 / r^3."""
    return t**2 / r**3

def calc_mass_star(k):
    """Calculates mass from Kepler constant."""
    return (4 * math.pi**2) / (G * k)

def calc_linear_vel(t, r):
    """Calculates orbital speed (v = 2*pi*r / t)."""
    return (2 * math.pi * r) / t

def centripetal_acc(v, r):
    return v**2 / r

def gravitational_pe(m_star, m_planet, r):
    return -G * m_star * m_planet / r

def kinetic_energy(m, v):
    return (1 / 2) * m * v**2

def total_orb_energy_func(m_star, m_planet, r):
    return -G * m_star * m_planet / (2 * r)

def escape_vel_func(m_star, r):
    return math.sqrt(2 * G * m_star / r)

def sp_ang_momentum(v, r):
    return v * r

def std_grav_parameter(m_star):
    return G * m_star

# --- Planet Kepler-10b Data ---
name_planet = "Kepler-10b"
orbit_radius_km = 2.5e06  
period_hrs = 20
# Kepler-10b is roughly 1.4 times the radius of Earth
radius_planet_m = (RADIUS_EARTH_KM * 1.4) * 1000
density_planet = 8800  # kg/m3

# --- Basic Planet Stats ---
volume_planet = vol_sphere(radius_planet_m)
mass_planet = volume_planet * density_planet
acc_gr_planet = acc_gravity(mass_planet, radius_planet_m)

# Weight Calculation for a Human
mass_human_kg = 68
wt_on_earth_lbs = mass_human_kg * KG_TO_LBS
wt_on_planet_lbs = wt_on_earth_lbs * (acc_gr_planet / G_EARTH)

# --- Orbital Dynamics ---
orb_radius_m = orbit_radius_km * KM_TO_M
period_secs = period_hrs * HR_TO_SEC

# Core orbital calculations
kepler_star_val = kepler_constant(period_secs, orb_radius_m)
mass_of_star = calc_mass_star(kepler_star_val)
v_orbit = calc_linear_vel(period_secs, orb_radius_m)

# Derived parameters
centri_acc = centripetal_acc(v_orbit, orb_radius_m)
gpe = gravitational_pe(mass_of_star, mass_planet, orb_radius_m)
ke_planet_val = kinetic_energy(mass_planet, v_orbit)
tot_energy = total_orb_energy_func(mass_of_star, mass_planet, orb_radius_m)
esc_vel = escape_vel_func(mass_of_star, orb_radius_m)
sp_ang_mom = sp_ang_momentum(v_orbit, orb_radius_m)
mu_param = std_grav_parameter(mass_of_star)

# --- Output Results ---
print("-" * 45)
print(f"PHYSICS ANALYSIS: {name_planet}")
print("-" * 45)
print(f"Volume of {name_planet}      : {volume_planet:.2e} m3")
print(f"Mass of {name_planet}        : {mass_planet:.2e} kg")
print(f"Surface Gravity (g)       : {acc_gr_planet:.2f} m/s2")
print(f"Relative Gravity (vs Earth): {acc_gr_planet / G_EARTH:.2f}x")
print("-" * 45)
print(f"Weight of {mass_human_kg}kg person on Earth : {wt_on_earth_lbs:.2f} lbs")
print(f"Weight of {mass_human_kg}kg person on {name_planet}: {wt_on_planet_lbs:.2f} lbs")
print("-" * 45)
print(f"Orbital Velocity (v)      : {v_orbit/1000:.2f} km/s")
print(f"Kepler's Constant         : {kepler_star_val:.2e} s2/m3")
print(f"Mass of parent star       : {mass_of_star:.2e} kg")
print(f"Centripetal Acceleration  : {centri_acc:.2f} m/s2")
print(f"Gravitational PE          : {gpe:.2e} J")
print(f"Kinetic Energy (Planet)   : {ke_planet_val:.2e} J")
print(f"Total Orbital Energy      : {tot_energy:.2e} J")
print(f"Escape Velocity           : {esc_vel/1000:.2f} km/s")
print(f"Specific Ang. Momentum    : {sp_ang_mom:.2e} m2/s")
print(f"Standard Grav. Parameter  : {mu_param:.2e} m3/s2")
print("-" * 45)


No comments:

Post a Comment

Visualizing Particle Kinematics with Python

Understanding the relationship between position, velocity, and acceleration is fundamental to physics. However, seeing how these variables e...