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

  • HO: 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 HO 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): HO, 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 (HO 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 HO, 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_eq

Interactive Simulation: Habitable Zone Calculator

Python

Calculates 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.

habitable_zone_calculator.py102 lines

Click Run to execute the Python code

Code will be executed with Python 3 on the server