Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
0ba020f
Added Obliqua to config.
MarijnJ0 Jan 31, 2026
e3246f7
Added Obliqua to orbit wrapper. Added get_obliqua script.
MarijnJ0 Jan 31, 2026
a5cbea4
Fixed config file.
MarijnJ0 Jan 31, 2026
d8e224f
Rebased to HEAD.
MarijnJ0 Feb 4, 2026
f6d3ae2
Added obliqua config and wrapper script.
MarijnJ0 Jun 27, 2026
3e863eb
Updated config and coupler with new parameters.
MarijnJ0 Jun 29, 2026
065f8e5
Updated data storage class. Added Hansen coefficient function.
MarijnJ0 Jun 29, 2026
42a4b97
Added new tidal model Obliqua. Updated existing models.
MarijnJ0 Jun 29, 2026
d2a8b4e
Added/updated orbital evolution models for both planet-star and plane…
MarijnJ0 Jun 29, 2026
bd35198
Added changes to main proteus loop and wrapper to include new models.
MarijnJ0 Jun 29, 2026
a47ab03
Cleaned up code and fixed bugs.
MarijnJ0 Jul 3, 2026
a723a91
Removed some params from config that are not used.
MarijnJ0 Jul 3, 2026
374c9b4
Added small bug fixes: lookup LN spectrum is now symmetric across +- …
MarijnJ0 Jul 16, 2026
f62eceb
Added fix for orbit evolution. Added new plots for orbit and tides.
MarijnJ0 Jul 17, 2026
f184df9
Added fix for tidal locking in orbit models. Added Lovenumber plot. A…
MarijnJ0 Jul 26, 2026
773ba74
Updated config.
MarijnJ0 Jul 26, 2026
ebf5276
Fixed small typo.
MarijnJ0 Jul 27, 2026
a7cd436
Added orbit fixes.
Aug 23, 2026
a2fd200
Added obliqua module tracking.
MarijnJ0 Sep 4, 2026
d370304
Updated tides+orbit scripts. Improved stability of evection solver. A…
MarijnJ0 Sep 4, 2026
b1f235e
Added unit/smoke tests for all changes in previous commit.
MarijnJ0 Sep 4, 2026
49d8850
Added slow-tier literature validation test for evection model.
MarijnJ0 Sep 4, 2026
ea77f76
Obliqua docs+validation tracking.
MarijnJ0 Sep 6, 2026
155af06
Corrected LovePy/Obliqua phase and orbit-evolution terminology
MarijnJ0 Sep 6, 2026
f0dbc49
Cleaned up orbit config file.
MarijnJ0 Sep 6, 2026
c40be67
Merge origin/main into md/Obliqua
MarijnJ0 Sep 8, 2026
5511554
Gate satellite-derived helpfile columns behind include_satellite
MarijnJ0 Sep 8, 2026
e76973f
Homogenize orbit models. Solver params added to config. Smooth gyrati…
MarijnJ0 Sep 8, 2026
f2e8269
Added the ER to PROTEUS event detection.
MarijnJ0 Sep 8, 2026
d91fe16
Updated orbit/common tests. Fixed function ref in plot. Added suppres…
MarijnJ0 Sep 8, 2026
f69bcce
Fixed stale issues and orbit test.
MarijnJ0 Sep 8, 2026
a526448
Added new obliqua core option to config.
MarijnJ0 Sep 8, 2026
6e89227
Added fixes for failing tests. Added code quality suggestions.
MarijnJ0 Sep 9, 2026
d1d38f8
Added more tests. Removed plot A function.
MarijnJ0 Sep 9, 2026
2d7e8ff
Added tests for new plots.
MarijnJ0 Sep 9, 2026
570b3c1
Added more tests.
MarijnJ0 Sep 9, 2026
f59d880
Added config check for Obliqua, enforcing perturber to be defined.
MarijnJ0 Sep 9, 2026
562c6d1
Restructured rel_change_fn for full test coverage.
MarijnJ0 Sep 9, 2026
2f973f1
Added bypass check for perturber.
MarijnJ0 Sep 9, 2026
fd87fa1
Added Obliqua to PROTEUS doctor command.
MarijnJ0 Sep 9, 2026
abd5920
Added additional tests to PROTEUS doctor.
MarijnJ0 Sep 9, 2026
0996be9
Improved event detection, slows down PROTEUS clock to allow complete …
MarijnJ0 Sep 10, 2026
9a893e4
Added fixes for Lovepy tides_o, get_C_planet, new termination criteria.
MarijnJ0 Sep 10, 2026
2e8ebce
Added sp0d-obliqua mismatch config check.
MarijnJ0 Sep 10, 2026
65a09e6
Set ER dt_max to 100 yr.
MarijnJ0 Sep 10, 2026
0676bb2
Set ER dt_max to 100 yr.
MarijnJ0 Sep 10, 2026
cba9a13
Added several changes to improve code structure, logging, and bug fixes.
MarijnJ0 Sep 11, 2026
cafd152
Cleaned up docstrings and online comments. Added new docs page for or…
MarijnJ0 Sep 11, 2026
0433b88
Updated tests.
MarijnJ0 Sep 11, 2026
8dd46bf
Updated config migration tool.
MarijnJ0 Sep 12, 2026
22e488a
Improved orbit docs page. Improved compatibility between orbit and ti…
MarijnJ0 Sep 12, 2026
f2ec4eb
Added tests and changes to config-docs.
MarijnJ0 Sep 12, 2026
3a92374
Added model example use cases to docs.
MarijnJ0 Sep 13, 2026
4059102
Added stability fix for normal mode resonances.
MarijnJ0 Sep 13, 2026
3640ea2
Added fixes for orbit/tides models, all are now functional. Added sma…
MarijnJ0 Sep 14, 2026
0ee9d7f
Added tutorial page. Renamed unbound to seismic resonance.
MarijnJ0 Sep 14, 2026
b17b0e7
Merge remote-tracking branch 'origin/main' into md/Obliqua
MarijnJ0 Sep 14, 2026
6243e23
Added whitespace fixes.
MarijnJ0 Sep 14, 2026
8f971af
Added tutorial file.
MarijnJ0 Sep 15, 2026
6d5193c
Added add obliqua and version checking.
MarijnJ0 Sep 15, 2026
2350168
Changed default evection band timestep parameter values to none, adde…
MarijnJ0 Sep 15, 2026
17508e2
Added verification message.
MarijnJ0 Sep 15, 2026
a4ef58f
Added tests for full coverage. Added safety check in Lovepy, similar …
MarijnJ0 Sep 15, 2026
a395864
Merge remote-tracking branch origin/main into md/Obliqua
MarijnJ0 Sep 15, 2026
5e2a246
Updated orbit_system plot. Added moon data. Updated Obliqua pin.
MarijnJ0 Sep 16, 2026
9f6ffba
Added improvements for obliqua version checking and installation scri…
MarijnJ0 Sep 16, 2026
7a6e9b8
Updated module version.
MarijnJ0 Sep 16, 2026
37b4241
Added test for unknown module and obliqua version.
MarijnJ0 Sep 16, 2026
14a66f6
Remove hardcoded dT=4K check on SPIDER step when tides active; make c…
nichollsh Sep 17, 2026
609b928
Merge branch 'main' into md/Obliqua
nichollsh Sep 17, 2026
3cf5d4a
docs and config
nichollsh Sep 17, 2026
9d7df08
docs and config
nichollsh Sep 17, 2026
79b91fb
output ref
nichollsh Sep 17, 2026
c401b24
v2 v3 config
nichollsh Sep 17, 2026
7f3826b
Updated tutorial, now runs in 20 minutes.
MarijnJ0 Sep 17, 2026
1ea0517
Updated AGNI and Obliqua version pins.
MarijnJ0 Sep 17, 2026
dbca0ca
Updated badges.
MarijnJ0 Sep 17, 2026
46e9a1a
Updating the CI default Julia version to 1.13.0.
MarijnJ0 Sep 17, 2026
5bcf961
Updated v2 configs/tests to v3. Changed dummy termination status, sin…
MarijnJ0 Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/setup-proteus/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ inputs:
julia-version:
description: Julia version
required: false
default: '1.12.6'
default: '1.13.0'
install-editable-submodules:
description: >
Whether to clone MORS / aragog / JANUS / CALLIOPE / ZEPHYRUS / Zalmoxis
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,13 @@ jobs:
os: ubuntu-latest
files: >-
tests/integration/test_slow_agni_aragog.py
# ---- shard: orbit-evection (pure orbit.satellite physics,
# no real submodule needed; Linux-only, ~25-40 min) ----
- shard: orbit-evection
tier: extended
os: ubuntu-latest
files: >-
tests/integration/test_slow_orbit_evection_ctl.py
# ---- shard: grid (dummy-backend parameter grid; a single
# module-scoped fixture runs the whole grid, ~27 min. Linux-only
# extended because it needs no macOS parity) ----
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ lovepy
Lovepy
LOVEPY
LovePy
obliqua
Obliqua
OBLIQUA
Obliqua_data
platon
Platon
PLATON
/prt
petitradtrans
petitRADTRANS
Expand Down
2 changes: 1 addition & 1 deletion docs/Explanations/code_architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ coupled planetary evolution simulation:
- [`atmos_chem/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/atmos_chem): atmospheric photochemistry (VULCAN, dummy)
- [`escape/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/escape): atmospheric mass loss (ZEPHYRUS, dummy)
- [`outgas/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/outgas): volatile partitioning (CALLIOPE, atmodeller, dummy)
- [`orbit/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/orbit): orbital evolution and tides (Obliqua/LovePy, dummy)
- [`orbit/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/orbit): tidal response (Obliqua/LovePy, dummy) and orbital evolution (native)
- [`star/`](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/star): stellar evolution and spectra (MORS, dummy)

Most modules follow a common pattern: a `wrapper.py` defining the dispatch
Expand Down
2 changes: 1 addition & 1 deletion docs/Explanations/dummy_modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ from Kepler's third law. A configurable tidal heating amplitude
(`H_tide`) is applied to mantle layers where the melt fraction exceeds
a threshold (`Phi_tide`), providing a simple parameterised heat source
for testing the interior module's response to tidal power without
running the full LovePy viscoelastic solver.
running the full LovePy or Obliqua viscoelastic solvers.

---

Expand Down
17 changes: 12 additions & 5 deletions docs/Explanations/model.md
Comment thread
MarijnJ0 marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ atmosphere), enabling hierarchical model intercomparison.
| Star | [MORS](https://proteus-framework.org/MORS/), dummy | Stellar evolution and spectrum |
| Escape | [ZEPHYRUS](https://github.com/FormingWorlds/ZEPHYRUS), dummy | Atmospheric escape |
| Outgassing | [CALLIOPE](https://proteus-framework.org/CALLIOPE/), [atmodeller](https://github.com/djbower/atmodeller), dummy | Volatile exchange between interior and atmosphere |
| Orbit | [Obliqua](https://github.com/FormingWorlds/Obliqua), dummy | Orbital evolution and tidal heating |
| Tides | [Obliqua](https://proteus-framework.org/Obliqua), [Lovepy](https://github.com/nichollsh/LovePy), dummy | Tidal response of the planet (Love numbers, heating) |
| Orbit | PROTEUS (internal) | Orbital evolution (semi-major axis, eccentricity, spin) |
| Observations | [petitRADTRANS](https://petitradtrans.readthedocs.io/), none | Synthetic transit and eclipse spectra |

Each module is maintained in its own repository and can be used as a standalone package outside of PROTEUS. The following sections describe each module's physical role and how PROTEUS couples to it.
Expand Down Expand Up @@ -189,11 +190,17 @@ Some notable consequences of step 3:

`utils.coupler.assert_mass_conservation` therefore checks two things separately. `M_atm <= M_planet` is enforced under `outgas.vapourise = false`. `M_vol_atm` equals the sum of the per-species atmospheric masses; rock vapour is excluded from `M_vol_atm` by definition.

## Orbital evolution: Obliqua
## Tidal evolution: Obliqua, Lovepy

**[Obliqua](https://github.com/FormingWorlds/Obliqua)** (Julia) evolves the orbital semi-major axis and eccentricity under the influence of tidal dissipation. The tidal response of the planet is computed from its interior structure and rheology using a viscoelastic love-number solver (LovePy). Tidal heating power is distributed radially across the mantle and fed back into the interior energy equation. Obliqua also computes the spin-orbit evolution and checks for dynamical stability (Roche limit, Hill sphere).
**[Obliqua](https://proteus-framework.org/Obliqua)** (Julia) computes the multi-phase tidal response of the planet. The tidal love-numbers of the planet is computed from its interior structure and rheology using various viscoelastic rheological models. Tidal heating power is distributed radially across the mantle and fed back into the interior energy equation. The model is valid for arbitrary eccentricity and spin-orbit misalignment, as it models arbitrary tidal degrees and modes.

Config section: `[orbit]`. Reference: [Star and orbit configuration](../Reference/config/star_orbit.md).
**[Lovepy](https://github.com/nichollsh/LovePy)** (Julia) computes the solid-only tidal response of the planet using a Maxwell rheology. Tidal heating power is distributed radially across the mantle and fed back into the interior energy equation. It assumes spin-orbit synchronisation and a small eccentricity, as only the dominant degree-2 tidal modes are considered.

## Orbital evolution: PROTEUS (internal)

**[Orbital evolution](https://github.com/FormingWorlds/PROTEUS/tree/main/src/proteus/orbit)** (Python) computes the time evolution of the independent orbital parameters (semi-major axis, eccentricity, spin, apsidal precession) under the influence of tidal dissipation in both the primary and the perturbing body. The model combines spin-orbit dynamics with eccentricity evolution, based on a vectorial approach expressed in Hansen coefficients. The model allows for angular momentum draining through the evection resonance, but conserves it in all other cases.

Config section: `[orbit]`. Reference: [Star and orbit configuration](../Reference/config/star_orbit.md). For the full set of star-planet and planet-satellite models (sp0d/sp1d/ps0d/ps1d/ps1d_evec), the evection resonance, and the satellite Love-number lookup workflow, see [Orbital dynamics and tides](orbit.md).

## Synthetic observations: petitRADTRANS

Expand Down Expand Up @@ -240,7 +247,7 @@ architecture and for quick parameter exploration.
| Star | Fixed effective temperature and luminosity; Planck-function spectrum at a user-specified $T_\mathrm{eff}$ |
| Escape | Constant bulk mass loss rate (user-specified kg/s), distributed proportionally across elements |
| Outgassing | Melt-fraction-dependent volatile partitioning with fixed stoichiometry, no equilibrium chemistry |
| Orbit | Fixed semi-major axis and eccentricity; configurable parameterised tidal heating |
| Orbit & Tides | Fixed semi-major axis and eccentricity; configurable parameterised tidal heating |

The [Quick start tutorial](../Tutorials/quick_start_dummy.md) runs PROTEUS
with all modules set to dummy.
Expand Down
Loading
Loading