JANUS
JANUS is the 1D convective-radiative atmosphere module of the PROTEUS coupled atmosphere-interior evolution framework. It builds the vertical temperature-pressure structure of a rocky-planet or magma-ocean atmosphere and computes its radiative fluxes.
Given a surface temperature and pressure, a set of volatile partial pressures, the instellation, and a spectral file, JANUS constructs the profile along a generalised multi-species moist pseudoadiabat capped by a prescribed stratosphere, then evaluates the shortwave, longwave, and net fluxes with SOCRATES. It returns the temperature-pressure profile, the tropopause temperature, and the top-of-atmosphere and surface fluxes. Within PROTEUS it is called each step through the atmos_clim interface; it is also usable standalone for atmosphere-structure studies.
Named for Janus, the two-faced Roman god of transitions and doorways. Pronounced jan-us: Jan as in "january", us as in the collective pronoun.
Atmosphere model
- Generalised moist pseudoadiabat. The troposphere follows the multi-species pseudoadiabat of Graham et al. (2021), which lets several volatiles condense together, capped by a prescribed stratosphere above a diagnosed tropopause.
- Radiative transfer. Shortwave, longwave, and net fluxes are computed with the SOCRATES correlated-k code over a user-selected spectral file and stellar spectrum.
- Two entry points.
RadConvEqmsets the atmosphere to a temperature profile along the general adiabat, whileMCPA_CBLbuilds the multiple-condensible pseudoadiabat and steps the surface temperature to conserve energy across a conductive boundary layer.
Documentation
Full documentation is at proteus-framework.org/JANUS, including:
- Getting started: installation and the quickest path to a first run.
- Tutorial: a first atmosphere-structure calculation.
- How-to guides: install, run the tests, build the documentation.
- Explanations: model overview and the testing suite.
- Validation: the per-source reference-pinned test inventory.
- Publications: the papers that developed and applied JANUS.
Installation
Note: The standard way of installing JANUS is within the PROTEUS framework, as described in the PROTEUS installation guide. The steps below are for a standalone installation.
JANUS has one compiled dependency, SOCRATES, which a helper script clones and builds. Prerequisites: git, Python 3.11+, a Fortran/C build toolchain (gfortran, gcc, make), and NetCDF tools with NetCDF-Fortran development headers.
git clone https://github.com/FormingWorlds/JANUS.git
cd JANUS
# 1. Build SOCRATES and point RAD_DIR at it (omit the path to use ./socrates)
bash tools/get_socrates.sh /path/to/socrates
export RAD_DIR=/path/to/socrates
# 2. Install JANUS (add ,docs for a local documentation build)
pip install -e .[develop]
# 3. Point FWL_DATA at a data directory and download spectral + stellar data
export FWL_DATA=/path/to/fwl_data
janus download spectral
janus download stellar
janus env prints the resolved locations of RAD_DIR and FWL_DATA. The docs extra pulls in Zensical so you can build this documentation locally with zensical serve.
Quick start
The two entry points are importable directly from janus.modules:
from janus.modules import RadConvEqm, MCPA_CBL
The examples/ folder holds runnable scripts that set up an atmosphere, prepare a spectral file, and solve for the profile and fluxes:
python examples/demo_runaway_greenhouse.py # runaway-greenhouse OLR curve
python examples/demo_instellation.py # profile vs instellation
See the first-run tutorial for the full walkthrough.
Citation
If you use JANUS in published work, please cite the methods papers below. The full reference list is on the Publications page.
- Graham, R.J., Lichtenberg, T., Boukrouche, R., & Pierrehumbert, R.T. (2021). A multispecies pseudoadiabat for simulating condensable-rich exoplanet atmospheres. PSJ 2, 207. [DOI]
- Lichtenberg, T., Bower, D.J., Hammond, M., Boukrouche, R., Sanan, P., Tsai, S.-M., & Pierrehumbert, R.T. (2021). Vertically resolved magma ocean-protoatmosphere evolution. JGR Planets 126, e2020JE006711. [DOI]
- Boukrouche, R., Lichtenberg, T., & Pierrehumbert, R.T. (2021). Beyond runaway: initiation of the post-runaway greenhouse state on rocky exoplanets. ApJ 919, 130. [DOI]
License
Apache License 2.0. JANUS is part of the PROTEUS framework.
Metadata
Release files for fwl-janus 26.10.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fwl_janus-26.10.15.tar.gz | 150.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fwl_janus-26.10.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 297.9 kB
Release files / fwl_janus-26.10.15.tar.gz
| Download URL | fwl_janus-26.10.15.tar.gz |
|---|---|
| Size | 150.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c78cbda146d28a6820bba7dc5dc349f1a4780530d8dff1e5f00b6a37a595ee8e
|
|
BLAKE2b-256 checksum How to use checksums |
7d2523383a6e67a45df09b53cb115388e1538c335f9dc36e965aae8188d5594b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / fwl_janus-26.10.15-py3-none-any.whl
| Download URL | fwl_janus-26.10.15-py3-none-any.whl |
|---|---|
| Size | 147.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
43a0a1ce07721e6f22e0018d8f9be9d0b35a26a74b9cc4a0cc7f766d1f4b0773
|
|
BLAKE2b-256 checksum How to use checksums |
d75dff4fc7b5953fb2305e4e39d27692ebb08a356e21c312a77109abbb3b504b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log