Skip to main content

Planetary accretion and volatile delivery model

Project description

CALLIOPE

License Docs codecov Unit Tests Integration Tests

CALLIOPE is the equilibrium outgassing solver of the PROTEUS coupled atmosphere-interior evolution framework. It computes the partitioning of volatile elements (H, C, N, O, S) between a partially molten silicate mantle and an overlying gas-phase atmosphere, assuming both reservoirs are in thermochemical equilibrium at the planetary surface.

Given an elemental inventory, a magma ocean temperature, a melt fraction, and an oxygen fugacity (specified as a log10 shift from the iron-wüstite buffer, defaulting to the Fischer et al. 2011 parameterisation), CALLIOPE returns the surface partial pressures of eleven volatile species, the dissolved volatile masses, and the atmospheric mass.

Two solver modes are available: equilibrium_atmosphere takes fO2 as a control variable and derives O from the buffered chemistry, while equilibrium_atmosphere_authoritative_O takes total O mass as input and inverts to recover fO2. The buffered mode remains the default for standalone use; the authoritative-O mode is the chemistry side of whole-planet oxygen accounting on the PROTEUS side.

Named after the Greek muse of eloquence and epic poetry. Pronounced kal-IGH-uh-pee.

Supported species

H2O, CO2, N2, S2 (primary unknowns); H2, CH4, CO, NH3, SO2, H2S, O2 (derived from gas-phase equilibrium).

Documentation

Full documentation is at proteus-framework.org/CALLIOPE, including:

Installation

pip install fwl-calliope

Or, for development:

git clone https://github.com/FormingWorlds/CALLIOPE.git
cd CALLIOPE
pip install -e .[develop,docs]

The docs extra pulls in Zensical so you can build this documentation locally with zensical serve.

Quick start

from calliope.solve import equilibrium_atmosphere, get_target_from_params
from calliope.constants import volatile_species

ddict = {
    'M_mantle': 4.03e24,                      # kg
    'gravity': 9.81, 'radius': 6.371e6,
    'T_magma': 2500.0, 'Phi_global': 1.0,
    'fO2_shift_IW': 0.5,                      # log10 shift relative to IW
    'hydrogen_earth_oceans': 1.0, 'CH_ratio': 0.1,
    'nitrogen_ppmw': 2.0, 'sulfur_ppmw': 200.0,
}
for sp in volatile_species:
    ddict[f'{sp}_included'] = 1
    ddict[f'{sp}_initial_bar'] = 0.0

target = get_target_from_params(ddict)
result = equilibrium_atmosphere(target, ddict)
print(f"P_surf = {result['P_surf']:.1f} bar, "
      f"H2O = {result['H2O_bar']:.1f} bar")

See the first-run tutorial for the full walkthrough.

Citation

If you use CALLIOPE in published work, please cite the four methods papers below. The full reference list (chemistry constants, solubility laws, oxygen-fugacity buffers, applications) is on the Publications page.

  • Bower, D.J., Kitzmann, D., Wolf, A.S., Sanan, P., Dorn, C., & Oza, A.V. (2019). Linking the evolution of terrestrial interiors and an early outgassed atmosphere to astrophysical observations. A&A 631, A103. [SciX] [DOI] [arXiv]
  • Bower, D.J., Hakim, K., Sossi, P.A., & Sanan, P. (2022). Retention of water in terrestrial magma oceans and carbon-rich early atmospheres. PSJ 3, 93. [SciX] [DOI] [arXiv]
  • Nicholls, H., Lichtenberg, T., Bower, D.J., & Pierrehumbert, R. (2024). Magma ocean evolution at arbitrary redox state. JGR Planets 129, e2024JE008576. [SciX] [DOI] [arXiv]
  • Nicholls, H., Lichtenberg, T., Chatterjee, R.D., Guimond, C.M., Postolec, E., & Pierrehumbert, R.T. (2026). Volatile-rich evolution of molten super-Earth L 98-59 d. Nature Astronomy. [SciX] [DOI] [arXiv]

License

Apache License 2.0. CALLIOPE is part of the PROTEUS framework.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fwl_calliope-26.6.1.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fwl_calliope-26.6.1-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file fwl_calliope-26.6.1.tar.gz.

File metadata

  • Download URL: fwl_calliope-26.6.1.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fwl_calliope-26.6.1.tar.gz
Algorithm Hash digest
SHA256 933bc0db0986b8881f75973c02a9e5c2279e2e21923ad68baeae0b15736bd4d1
MD5 e03cec96fdbff68ad2bac91aed7f6898
BLAKE2b-256 02da5966a5be374257124dfda329dff625e302d031845d89d2bc95f5ea938208

See more details on using hashes here.

Provenance

The following attestation bundles were made for fwl_calliope-26.6.1.tar.gz:

Publisher: publish.yaml on FormingWorlds/CALLIOPE

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fwl_calliope-26.6.1-py3-none-any.whl.

File metadata

  • Download URL: fwl_calliope-26.6.1-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fwl_calliope-26.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ebfa4ec5380d438553ad29fbe7a5aa24f13c2f1cd01d7ed1801b703dd15a60c4
MD5 ae596b7eeece6abdaebd0232c243aeee
BLAKE2b-256 2a0459a57991b70bec3f067b988c8ce865303c17697501e96432d36af647c7e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fwl_calliope-26.6.1-py3-none-any.whl:

Publisher: publish.yaml on FormingWorlds/CALLIOPE

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page