Planetary accretion and volatile delivery model
Project description
CALLIOPE
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:
- Getting started: installation and a quick path to running.
- Tutorials: first run, Earth and Mars fiducials, two-mode round-trip, coupled-loop driver, speciation phase diagram.
- How-to guides: install, configure, run, couple to PROTEUS, use the authoritative-oxygen mode, test, release.
- Explanations: model overview, equilibrium chemistry, solubility laws, oxygen fugacity, mass balance, authoritative-oxygen mode, CALLIOPE-vs-atmodeller cross-backend comparison.
- API reference and validation anchors: every public function with NumPy-style docstrings, plus the per-source reference-pinned test inventory.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
933bc0db0986b8881f75973c02a9e5c2279e2e21923ad68baeae0b15736bd4d1
|
|
| MD5 |
e03cec96fdbff68ad2bac91aed7f6898
|
|
| BLAKE2b-256 |
02da5966a5be374257124dfda329dff625e302d031845d89d2bc95f5ea938208
|
Provenance
The following attestation bundles were made for fwl_calliope-26.6.1.tar.gz:
Publisher:
publish.yaml on FormingWorlds/CALLIOPE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fwl_calliope-26.6.1.tar.gz -
Subject digest:
933bc0db0986b8881f75973c02a9e5c2279e2e21923ad68baeae0b15736bd4d1 - Sigstore transparency entry: 1690848360
- Sigstore integration time:
-
Permalink:
FormingWorlds/CALLIOPE@b71cb8810465f9877dc9a22e42d02a32dfcbc295 -
Branch / Tag:
refs/tags/26.06.01 - Owner: https://github.com/FormingWorlds
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@b71cb8810465f9877dc9a22e42d02a32dfcbc295 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebfa4ec5380d438553ad29fbe7a5aa24f13c2f1cd01d7ed1801b703dd15a60c4
|
|
| MD5 |
ae596b7eeece6abdaebd0232c243aeee
|
|
| BLAKE2b-256 |
2a0459a57991b70bec3f067b988c8ce865303c17697501e96432d36af647c7e1
|
Provenance
The following attestation bundles were made for fwl_calliope-26.6.1-py3-none-any.whl:
Publisher:
publish.yaml on FormingWorlds/CALLIOPE
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fwl_calliope-26.6.1-py3-none-any.whl -
Subject digest:
ebfa4ec5380d438553ad29fbe7a5aa24f13c2f1cd01d7ed1801b703dd15a60c4 - Sigstore transparency entry: 1690848399
- Sigstore integration time:
-
Permalink:
FormingWorlds/CALLIOPE@b71cb8810465f9877dc9a22e42d02a32dfcbc295 -
Branch / Tag:
refs/tags/26.06.01 - Owner: https://github.com/FormingWorlds
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@b71cb8810465f9877dc9a22e42d02a32dfcbc295 -
Trigger Event:
release
-
Statement type: