Coupling to PROTEUS
PROTEUS is a coupled planetary evolution framework that simulates the long-term evolution of rocky planets, including their interior, atmosphere, and the stellar environment they orbit in. A high-level schematic of PROTEUS components and corresponding modules can be found below. Please find a description of the PROTEUS architecture here.


Schematic of PROTEUS components and corresponding modules.
MORS in PROTEUS
The host star is not static in PROTEUS simulations; its luminosity, radius, temperature, and high-energy emission all change significantly over geological timescales, and these changes directly affect the planet's atmospheric escape, photochemistry, and surface conditions. MORS is the stellar evolution module within PROTEUS responsible for tracking how the star changes over time. At each iteration of the PROTEUS simulation loop, MORS provides:
- The stellar radius and effective temperature at the current age, used to compute the planetary energy budget
- The bolometric instellation at the planet's orbital distance, which drives the atmospheric energy balance
- The XUV flux (X-ray + EUV) as a function of stellar age and rotation, which drives atmospheric escape
- A historical stellar spectrum at the current age, constructed by scaling a modern reference spectrum using the MORS activity tracks
MORS is selected by setting star.module = 'mors' in the PROTEUS configuration file.
Track options
PROTEUS supports two sets of stellar evolution tracks through MORS, selected via star.mors.tracks:
| Setting | Tracks | Mass range | Time unit | XUV |
|---|---|---|---|---|
'spada' |
Spada et al. (2013) | 0.10–1.25 Msun | Myr | Yes |
'baraffe' |
Baraffe et al. (2015) | 0.01–1.40 Msun | yr | No |
Mass clipped outside valid range
If the configured stellar mass falls outside the valid range for the chosen tracks, it is silently clipped to the nearest limit.
Rotation (Spada tracks only)
For Spada tracks, the initial rotation must be specified using one of two options in the configuration:
star.mors.rot_pcntle: rotation percentile in the 1 Myr distribution. When set, the reference age is fixed at 1 Myr, consistent with the assumptions inmors.Percentile().star.mors.rot_period: rotation period in days at the current stellar age (star.mors.age_now).
Only one of these can be set at a time. Baraffe tracks do not use a rotation model.
Stellar spectrum
PROTEUS requires a modern reference spectrum to initialise the spectral synthesis. This can be a custom stellar spectrum scaled to 1 AU, or an automatically downloaded stellar spectrum. There are three automatic options, configured via star.mors.spectrum_source:
| Setting | Behaviour |
|---|---|
'solar' |
Use modern or historical solar reference spectrum |
'muscles' |
Use MUSCLES observed spectrum |
'phoenix' |
Generate a PHOENIX synthetic spectrum from stellar parameters |
PROTEUS rescales the spectrum to the planet's orbital separation. More information on stellar spectra in PROTEUS can be found here.
Quantities updated during the simulation loop
At each PROTEUS iteration, update_stellar_quantities updates the following:
| Quantity | Spada | Baraffe |
|---|---|---|
| Stellar radius | star.Value(age, 'Rstar') |
BaraffeStellarRadius(age) |
| Effective temperature | star.Value(age, 'Teff') |
BaraffeStellarTeff(age) |
| Bolometric instellation | From Lbol track |
BaraffeSolarConstant(age, sep) |
| XUV instellation | From Lx + Leuv tracks |
Not available (set to 0) |
Ages are passed in years to Baraffe methods and in Myr to Spada methods.
Spectral synthesis during the simulation
For Spada tracks, historical spectra are computed by scaling the modern reference spectrum band-by-band using mors.synthesis.CalcScaledSpectrumFromProps. For Baraffe tracks, spectral synthesis uses BaraffeTrack.BaraffeSpectrumCalc, which scales the modern spectrum by the ratio of historical to modern bolometric luminosity. No band-resolved scaling is available.