Functions related to planet formation or planet structure models.


Build Status


This package provides functions related to the formation and properties of planets. There are formulas to compute the gas accretion rate onto a planet, the core radius of the planet, and the location of the habitable zone. All the formulas are taken from peer reviewed publications in astronomy journals, and links to the Astrophysics Data System (ADS) are included in the documentation.


Planets.jl requires Julia v1.0 or later, as well the packages CSV 0.4.2 or later, Missings, and DataFrames. To install this package run ] add Planets on the Julia REPL.


This function computes the radius of a planetary core made of either pure silicate rock, a rock-iron mix, or a rock-water mix. Cores with all three components are not supported. The function interpolates across the planet structure grid model of Zeng et al (2016), which is publicly available from Li Zeng's website.


# Radius of a 3.0 M_earth core with 10% water + 90% rock:
radius = core_radius(3.0, h2o=0.1) # In Earth radii.

# Radius of a 3.0 M_earth core with 10% iron + 90% rock:
radius = core_radius(3.0, fe=0.1) # In Earth radii.

Citation: Zeng et al (2016)


Compute the gas accretion rate onto a planet, up to Neptune size, embedded in a protoplanetary disk. This function implements Equation (B36) derived in Carrera et al. (2018) which itself is adapted from Ginzburg et al. (2016).

NOTE: Equation (B36) of Carrera et al. is in units of M_earth/Myr but this function returns values in untis of M_earth/year.

NOTE: The accretion rate for a planet with zero atmosphere diverges. You need to initialize the planet's atmosphere to a non-zero value. Furthermore, the accretion rate is initially very high and small timesteps are required to resolve the accretion correctly.


# Gas accretion rate (units: M_earth / year) for a small planet embedded
# in a protoplanetary disk.
# Inputs:
M_core = 8.0  # Planet's core mass in Earth masses.
M_atm = 0.02  # Planet's current H2 mass in Earth masses.
T_disk = 500  # Local disk temperature in Kelvin.

M_atm_dot = accretion_rate(M_core, M_atm, T_disk) # M_earth / year.

Citations: Carrera et al. (2018) and Ginzburg et al. (2016)


Compute the stellar evolution tracks (luminosity, temperature, logg) for AFGKM with a metallicity of Z = 1.0%, up to an age of 0.89 Gyr, using the stellar models of Marigo et al. (2017). This function the following values:

Teff     Star's effective temperature (K)
L_star   Log base 10 of the stellar luminosity (L_sun)
logg     Log gravity.


M_star = 0.5 # Stellar mass (M_sun)
age = 1e9    # Stellar age (years)
Z = 0.01     # Metallicity

Teff, L_star, logg = stellar_evolution(M_star,t=age,Z=Z)

Citation: Marigo et al. (2017)

See also: Web interface


Computes all the limits for the habitable zone from Kopparapu et al. (2013). This function uses the updated coefficients from their website.


Teff       Star's effective temperature (K)
L_star     Star's luminosity (L_sun)


Teff   = 3700  # Temperature of a 0.5 M_sun star.
L_star = 0.04  # Luminosity of a 0.5 M_sun star.

limits = habitable_zone(Teff, L_star)

@info("Recent Venus                  = \$(limits[1]) AU")
@info("Runaway Greenhouse            = \$(limits[2]) AU")
@info("Maximum Greenhouse            = \$(limits[3]) AU")
@info("Early Mars                    = \$(limits[4]) AU")
@info("Runaway Greenhouse for 5.0 ME = \$(limits[5]) AU")
@info("Runaway Greenhouse for 0.1 ME = \$(limits[6]) AU")

Citation: Kopparapu et al. (2013)

See also: Updated values

First Commit


Last Touched

over 2 years ago


41 commits

Used By: