10.4 Exoplanet Atmospheres
With over 5,500 confirmed exoplanets, atmospheric characterization has become the frontier of planetary science. Transit and emission spectroscopy, combined with atmospheric retrieval techniques, allow us to determine composition, temperature structure, and dynamics of worlds orbiting distant stars. JWST is revolutionizing this field with unprecedented spectral precision down to ~20 ppm.
Transit (Transmission) Spectroscopy
When an exoplanet transits its host star, a thin annulus of the planet's atmosphere filters starlight. Different wavelengths are absorbed to different degrees, producing a wavelength-dependent transit depth. The effective transit radius depends on wavelength through the absorption cross section:
$$R_{\text{eff}}(\lambda) = R_p + nH\ln\left(\frac{\sigma(\lambda) P_0}{mg}\sqrt{\frac{2\pi R_p}{H}}\right)$$
n = number of scale heights probed, $\sigma(\lambda)$ = cross section
The atmospheric scale height determines the amplitude of spectral features in transmission:
$$H = \frac{k_B T}{\mu g}, \quad \delta_{\text{transit}} \approx \frac{2R_p \cdot nH}{R_\star^2}$$
For a hot Jupiter (T=1500 K, $\mu$=2.3 amu, g=10 m/s²): H ~ 550 km, $\delta$ ~ 200 ppm per scale height
What Transmission Spectra Reveal
- H₂O: broad features at 1.1, 1.4, 1.8, 2.7 $\mu$m
- CO₂: strong band at 4.3 $\mu$m (detected by JWST on WASP-39b)
- CH₄: 3.3 $\mu$m band; CO: 4.6 $\mu$m band
- Na/K: visible doublets at 589/766 nm
- Cloud/haze opacity mutes features, producing flat spectra
Signal Sizes
- Hot Jupiter (HD 209458b): $\Delta\delta$ ~ 200 ppm
- Warm Neptune (GJ 436b): $\Delta\delta$ ~ 30-50 ppm
- Super-Earth (GJ 1214b): $\Delta\delta$ ~ 10-30 ppm
- Earth-like around M-dwarf: $\Delta\delta$ ~ 10-30 ppm
- Earth-like around Sun: $\Delta\delta$ ~ 0.1 ppm (inaccessible)
Secondary Eclipse & Phase Curves
During secondary eclipse, the planet passes behind its star and its thermal emission is blocked. The eclipse depth gives the planet's brightness temperature:
$$\frac{F_p(\lambda)}{F_\star(\lambda)} = \left(\frac{R_p}{R_\star}\right)^2 \frac{B_\lambda(T_{\text{day}})}{B_\lambda(T_\star)}$$
$B_\lambda$ = Planck function; ratio is ~10⁻³ for hot Jupiters in IR
Thermal Emission Spectrum
At opaque wavelengths, emission originates from higher, cooler altitudes producing absorption features. Thermal inversions (hotter upper atmosphere) produce emission features instead -- detected on ultra-hot Jupiters with TiO/VO absorbers at T > 2200 K.
Phase Curves: Longitudinal Mapping
As the planet orbits, different longitudes face us. The phase curve reveals: (1) day-night temperature contrast $\Delta T$; (2) hot spot offset from substellar point (typically ~20-40 deg eastward due to equatorial superrotation); (3) nightside temperature constraining heat redistribution.
Phase curve decomposition:
$$F_p(\alpha) = \sum_{n=0}^{N} C_n \cos(n\alpha + \phi_n)$$
The offset $\phi_1$ of the fundamental gives the hot spot longitude
Hot Jupiters: Tidally Locked Worlds
Hot Jupiters orbit at ~0.05 AU with periods of 1-5 days. They are tidally locked with a permanent dayside and nightside. The atmospheric dynamics follow the Matsuno-Gill pattern:
Substellar equilibrium temperature:
$$T_{\text{sub}} = T_\star\sqrt{\frac{R_\star}{a}} \left(\frac{1-A_B}{f}\right)^{1/4}$$
f = 1/4 (full redistribution), f = 2/3 (dayside only), f = 1 (no redistribution)
Matsuno-Gill Circulation
Day-night heating drives equatorial Kelvin waves (eastward) and Rossby waves (westward). The Kelvin wave produces an equatorial superrotating jet (1-5 km/s) that advects the hot spot eastward. On ultra-hot Jupiters (T > 2500 K), H₂ dissociation on the dayside and recombination on the nightside drives additional heat transport.
Key JWST Detections
WASP-39b (T ~ 1170 K): first CO₂ detection in an exoplanet; also SO₂ from photochemistry. WASP-43b: JWST phase curve resolved day-night chemistry differences. WASP-18b (ultra-hot): thermal inversion detected via H₂O and CO emission features. These represent a new era of precision atmospheric characterization.
Super-Earths & Mini-Neptunes
Planets between 1-4 R_Earth are the most common in the Galaxy. The mass-radius relationship is degenerate -- the same radius can correspond to very different compositions:
$$R_p \propto M_p^{0.27} \text{ (rocky)}, \quad R_p \propto M_p^{0.59} \text{ (H}_2\text{/He envelope)}$$
A 2 R_Earth planet could be a rocky super-Earth or a mini-Neptune with ~1% H₂/He envelope
The Radius Valley at ~1.8 R_Earth
The observed planet radius distribution shows a gap separating rocky super-Earths from volatile-rich mini-Neptunes. Planets with thin H₂ envelopes lose them to photoevaporation or core-powered mass loss, leaving bare rocky cores. K2-18b (2.6 R_Earth): H₂O, CO₂, and possible DMS detected by JWST -- a potential "Hycean" world with a hydrogen atmosphere over a water ocean.
Habitable Zone: Inner & Outer Edges
The habitable zone (HZ) is where a rocky planet could maintain liquid water on its surface. The boundaries are set by climate feedback processes:
Inner Edge: Moist Greenhouse Limit
When T_surface > ~340 K, the troposphere becomes saturated with water vapor reaching the stratosphere. UV photolysis enables irreversible hydrogen escape:$\text{H}_2\text{O} + h\nu \to \text{OH} + \text{H}$. For the Sun: inner edge ~ 0.95-0.99 AU. The OLR saturates at the Simpson-Nakajima limit of ~282 W/m².
Outer Edge: Maximum Greenhouse Limit
Beyond ~8 bar CO₂, Rayleigh scattering exceeds the greenhouse effect and further CO₂ causes net cooling. CO₂ condensation also limits atmospheric abundance. The maximum greenhouse limit for the Sun is ~1.67 AU. For M-dwarfs ($L \sim 0.01 L_\odot$): HZ is at 0.1-0.17 AU, well within the tidal locking radius.
HZ boundary flux (Kopparapu et al. parameterization):
$$S_{\text{eff}} = S_{\text{eff},\odot} + aT_\star + bT_\star^2 + cT_\star^3 + dT_\star^4$$
where $T_\star = T_{\text{eff}} - 5780$ K; orbital distance $d = \sqrt{L_\star / S_{\text{eff}}}$ in AU
Biosignatures & False Positives
A biosignature is an observable atmospheric feature indicating biological activity. The strongest candidates involve thermodynamic disequilibrium:
O₂ + CH₄ Disequilibrium
On Earth, O₂ and CH₄ coexist far from equilibrium. The reaction$\text{CH}_4 + 2\text{O}_2 \to \text{CO}_2 + 2\text{H}_2\text{O}$ has$\Delta G \approx -818$ kJ/mol -- their coexistence requires continuous biological production. Detection of both in an exoplanet atmosphere would be highly suggestive of life.
False Positives: Abiotic O₂
O₂ can accumulate without life through: (1) water photolysis + hydrogen escape on desiccated planets; (2) CO₂ photolysis in high-UV environments; (3) pre-biotic buildup on young planets. Context is critical -- O₂ alone is not definitive.
Triple Signature
The most robust biosignature: simultaneous O₂ (or O₃), CH₄, and liquid water (H₂O vapor + temperate climate), plus absence of known abiotic sources. Additional context from CO₂ and N₂ abundance helps rule out false positives.
JWST Capabilities & TRAPPIST-1
JWST Instruments for Exoplanets
NIRISS SOSS (0.6-2.8 $\mu$m, R~700): ideal for transits. NIRSpec (0.6-5.3 $\mu$m, R~100-2700): detected CO₂ on WASP-39b. MIRI (5-28 $\mu$m): thermal emission of rocky planets. Noise floor ~20-50 ppm. For TRAPPIST-1 HZ planets, detecting a 1-scale-height feature in N₂/CO₂ atmosphere requires ~10-50 transits.
TRAPPIST-1 System
Seven rocky planets orbiting an M8 dwarf (0.09 M_Sun, 2560 K) at 12 pc. Planets d, e, f in HZ. JWST secondary eclipse of TRAPPIST-1b and c: consistent with bare rock or very thin atmosphere. TRAPPIST-1e remains the prime target for potential Earth-like atmosphere detection. All planets are tidally locked (orbital periods 1.5-19 days).
Atmospheric Escape & the Radius Valley
Atmospheric escape determines which planets retain atmospheres over Gyr timescales:
Jeans (Thermal) Escape
Molecules in the high-energy tail of the Maxwell-Boltzmann distribution exceed escape velocity. The Jeans parameter and escape flux:
$$\lambda_J = \frac{GMm}{k_B T r_{\text{exo}}}, \quad \Phi_J \propto n v_{\text{th}} (1 + \lambda_J) e^{-\lambda_J}$$
Significant only for light species (H, He) on small or warm bodies
Hydrodynamic Escape & Photoevaporation
Intense XUV irradiation heats the upper atmosphere to >10,000 K, driving bulk outflow. The energy-limited escape rate:
$$\dot{M} = \frac{\epsilon \pi R_{\text{XUV}}^2 F_{\text{XUV}} R_p}{G M_p}$$
$\epsilon$ ~ 0.1-0.3 heating efficiency. Strips H₂/He envelopes from close-in sub-Neptunes in ~100 Myr, creating the radius valley.
1D Atmospheric Models & Opacity Sources
The transmission spectrum is computed by integrating optical depth along tangent paths:
$$\tau(\lambda, z) = 2\int_0^{x_{\max}} \sum_i n_i(z') \sigma_i(\lambda, T, P) \, dx$$
Sum over H₂O, CO₂, CH₄, CO, NH₃, H₂-H₂ CIA, Rayleigh
Key databases: HITRAN/HITEMP/ExoMol for molecular line lists. Collision-induced absorption (H₂-H₂, H₂-He) provides continuum opacity. Rayleigh scattering ($\sigma \propto \lambda^{-4}$) dominates at short wavelengths. Cloud/haze Mie scattering adds gray or wavelength-dependent opacity that can mute spectral features in the transmission spectrum.
Fortran: 1D Radiative Equilibrium for Irradiated Planet
A 1D radiative equilibrium model computing the temperature profile of a hot Jupiter under intense stellar irradiation using gray two-stream radiative transfer:
! exoplanet_rad_eq.f90
! 1D radiative equilibrium for irradiated hot Jupiter
! Gray two-stream with Guillot (2010) initial profile
!
! Compile: gfortran -O2 -o exo_rad exoplanet_rad_eq.f90
! Run: ./exo_rad
program exoplanet_rad_eq
implicit none
integer, parameter :: dp = selected_real_kind(15)
integer, parameter :: nlev = 100
integer, parameter :: niter = 80000
! Physical constants
real(dp), parameter :: sigma_sb = 5.67d-8
real(dp), parameter :: R_gas = 8.314d0
! Planet parameters (HD 209458b-like)
real(dp), parameter :: g_p = 9.36d0 ! surface gravity (m/s^2)
real(dp), parameter :: T_eq = 1450.0d0 ! equilibrium temperature (K)
real(dp), parameter :: T_int = 200.0d0 ! internal temperature (K)
real(dp), parameter :: mu_mol = 2.3d-3 ! mean molecular weight (kg/mol)
real(dp), parameter :: cp = 13000.0d0 ! specific heat (J/kg/K)
! Opacity parameters
real(dp), parameter :: kappa_ir = 0.01d0 ! IR opacity (m^2/kg)
real(dp), parameter :: kappa_vis = 0.004d0
real(dp), parameter :: gamma_op = kappa_vis / kappa_ir
real(dp) :: F_irr, F_int_flux, mu_star, p_top, p_bot
real(dp) :: p(nlev), T(nlev), tau_ir(nlev), tau_vis(nlev)
real(dp) :: F_up(nlev), F_dn(nlev), F_vis(nlev)
real(dp) :: dTdt(nlev), dp_lev, dt_relax
integer :: k, iter
F_irr = sigma_sb * T_eq**4; F_int_flux = sigma_sb * T_int**4
mu_star = 0.5d0; p_top = 1.0d0; p_bot = 1.0d7
do k = 1, nlev ! Log-spaced pressure grid
p(k) = p_top * (p_bot / p_top) ** (dble(k-1) / dble(nlev-1))
tau_ir(k) = kappa_ir * p(k) / g_p
tau_vis(k) = kappa_vis * p(k) / g_p
end do
do k = 1, nlev ! Guillot (2010) analytic initial profile
T(k) = ( 0.75d0 * T_int**4 * (tau_ir(k) + 2.0d0/3.0d0) + &
0.75d0 * T_eq**4 * mu_star * ( &
2.0d0/3.0d0 + mu_star/gamma_op + &
(gamma_op/(3.0d0*mu_star) - mu_star/gamma_op) * &
exp(-gamma_op * tau_ir(k) / mu_star) &
) ) ** 0.25d0
end do
dt_relax = 0.001d0
! === Iterative relaxation ===
do iter = 1, niter
do k = 1, nlev
F_up(k) = sigma_sb * T(k)**4
F_vis(k) = F_irr * mu_star * exp(-tau_vis(k) / mu_star)
end do
F_up(nlev) = F_up(nlev) + F_int_flux
F_dn(1) = 0.0d0
do k = 2, nlev
F_dn(k) = 0.5d0 * sigma_sb * T(k-1)**4 * &
(1.0d0 - exp(-(tau_ir(k) - tau_ir(k-1))))
F_dn(k) = F_dn(k) + F_dn(k-1) * &
exp(-(tau_ir(k) - tau_ir(k-1)))
end do
do k = 2, nlev - 1
dp_lev = p(k+1) - p(k-1)
dTdt(k) = g_p / cp * ( &
(F_up(k+1) - F_up(k-1) - F_dn(k+1) + F_dn(k-1) + &
F_vis(k-1) - F_vis(k+1)) / dp_lev )
T(k) = T(k) - dt_relax * dTdt(k)
T(k) = max(T(k), 100.0d0)
T(k) = min(T(k), 4000.0d0)
end do
! Convective adjustment
do k = 2, nlev
if (T(k) > T(k-1) * (p(k)/p(k-1))**(R_gas/(mu_mol*cp))) then
T(k) = T(k-1) * (p(k)/p(k-1))**(R_gas/(mu_mol*cp))
end if
end do
if (mod(iter, 20000) == 0) then
write(*,'(A,I7,A,F8.1,A,F8.1,A,F8.1)') &
' iter=', iter, ' T_top=', T(1), &
' T_phot=', T(nlev/2), ' T_deep=', T(nlev)
end if
end do
! === Output final profile ===
write(*,'(A)') '=== Hot Jupiter Radiative Equilibrium ==='
write(*,'(A)') ' P(bar) T(K) tau_IR'
do k = 1, nlev, 5
write(*,'(ES12.3, F10.1, F10.4)') p(k)/1.0d5, T(k), tau_ir(k)
end do
write(*,'(A,F8.1,A)') ' T_top=', T(1), ' K T_deep=', T(nlev), ' K'
end program exoplanet_rad_eqInteractive Simulation: Habitable Zone Calculator
PythonCalculates habitable zone boundaries as a function of stellar luminosity and temperature using the Kopparapu et al. parameterization. Plots HZ for different stellar types (M, K, G, F stars), places known exoplanets on the diagram, and shows inner (runaway greenhouse) and outer (maximum greenhouse) limits.
Click Run to execute the Python code
Code will be executed with Python 3 on the server