From 76ef7ad0d42a4d8529517ba059df5318468be831 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 14:07:06 +0100 Subject: [PATCH 01/24] add contact info file --- docs/contact.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/contact.md diff --git a/docs/contact.md b/docs/contact.md new file mode 100644 index 0000000..39d2663 --- /dev/null +++ b/docs/contact.md @@ -0,0 +1,9 @@ +# Contact + +We encourage you to reach out! Choose the most appropriate channel below. + +| Channel | Use for | +|---------|---------| +| [Forming Worlds Discussions](https://github.com/orgs/FormingWorlds/discussions) | Questions, installation help, feature suggestions | +| [GitHub Issues](https://github.com/FormingWorlds/MORS/issues) | Bug reports, specific feature requests | +| [proteus_dev@formingworlds.space](mailto:proteus_dev@formingworlds.space) | General enquiries | From 4dab5282ff218e21c28287214a82a13217e2bee7 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 14:07:37 +0100 Subject: [PATCH 02/24] add javascript file to allow for clickable PROTEUS logo and MORS title --- docs/javascripts/header-links.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/javascripts/header-links.js diff --git a/docs/javascripts/header-links.js b/docs/javascripts/header-links.js new file mode 100644 index 0000000..7f1f768 --- /dev/null +++ b/docs/javascripts/header-links.js @@ -0,0 +1,28 @@ +console.log("header-links.js loaded"); + +function wire() { + const homepage = "https://proteus-framework.org/"; + + const logo = document.querySelector(".md-header__button.md-logo"); + if (logo) logo.href = homepage; + + const title = document.querySelector(".md-header__title[data-md-component='header-title']"); + if (title && !title.dataset.spiderWired) { + title.dataset.spiderWired = "1"; + title.style.cursor = "pointer"; + + // always go to /SPIDER/ when hosted there, else "/" (mkdocs serve) + const href = location.href; + const docsHome = href.includes("/SPIDER/") + ? href.split("/SPIDER/")[0] + "/SPIDER/" + : location.origin + "/"; + + title.addEventListener("click", (e) => { + if (e.target.closest("a, button, input, label")) return; + window.location.assign(docsHome); + }, true); + } +} + +document.addEventListener("DOMContentLoaded", wire); +if (window.document$?.subscribe) window.document$.subscribe(wire); From 11f64bf361e6db223ed1eef14b2440451aadd69c Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 14:34:30 +0100 Subject: [PATCH 03/24] add publications + bibliography --- docs/Reference/publications.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 docs/Reference/publications.md diff --git a/docs/Reference/publications.md b/docs/Reference/publications.md new file mode 100644 index 0000000..7748863 --- /dev/null +++ b/docs/Reference/publications.md @@ -0,0 +1,15 @@ +# Publications and bibliography + +## MORS publication + +- Johnstone, C. P., Bartel, M., & Güdel, M. (2021). The active lives of stars: A complete description of the rotation and XUV evolution of F, G, K, and M dwarfs. *Astronomy & Astrophysics*, 649, A96. [https://doi.org/10.1051/0004-6361/202038407](https://doi.org/10.1051/0004-6361/202038407) + +Additionally, MORS is part of all publications of the PROTEUS Framework, which can be found [here](https://scixplorer.org/public-libraries/EVAJ1UgWTCy2Z7TRoSmjtQ). + +## Bibliography + +- Spada, F., Demarque, P., Kim, Y. C., & Sills, A. (2013). The radius discrepancy in low-mass stars: single versus binaries. *The Astrophysical Journal*, 776(2), 87. [https://doi.org/10.1088/0004-637X/776/2/87](https://doi.org/10.1088/0004-637X/776/2/87) + +- Kopparapu, R. K., Ramirez, R., Kasting, J. F., Eymet, V., Robinson, T. D., Mahadevan, S., ... & Deshpande, R. (2013). Habitable zones around main-sequence stars: new estimates. *The Astrophysical Journal*, 765(2), 131. [https://doi.org/10.1088/0004-637X/765/2/131](https://doi.org/10.1088/0004-637X/765/2/131) + +- Baraffe, I., Chabrier, G., Allard, F., & Hauschildt, P. H. (2002). Evolutionary models for low-mass stars and brown dwarfs: Uncertainties and limits at very young ages. *Astronomy & Astrophysics*, 382(2), 563-572. [https://doi.org/10.1051/0004-6361:20011638](https://doi.org/10.1051/0004-6361:20011638) \ No newline at end of file From 0c2fad12418a7bf21c095faf8c978461d49130bc Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 14:36:20 +0100 Subject: [PATCH 04/24] update structure, module links and add dark/light switch + jaascripts --- mkdocs.yml | 71 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 5f3bcf9..fa07915 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -7,7 +7,6 @@ nav: - Home: index.md - How-to guides: - - Overview: How-to/index.md - Installation: How-to/installation.md - Calculate stellar evolution: How-to/evolution.md - Calculate cluster evolution: How-to/clusters.md @@ -19,34 +18,71 @@ nav: - Find stellar activity timelines: How-to/activity_timelines.md - Tutorials: - - Overview: Tutorials/index.md - First run: Tutorials/first_run.md - - Contributing: CONTRIBUTING.md - - Code of Conduct: CODE_OF_CONDUCT.md + - Reference: + - Publications and bibliography: Reference/publications.md + + - Community: + - Contributing: CONTRIBUTING.md + - Code of Conduct: CODE_OF_CONDUCT.md + - Developers: https://proteus-framework.org/people + - Contact: Community/contact.md + - Source code: https://github.com/FormingWorlds/MORS - Issues page: https://github.com/FormingWorlds/MORS/issues - - 🔗 PROTEUS: https://proteus-framework.org/PROTEUS/ - - 🔗 JANUS: https://proteus-framework.org/JANUS/ - - 🔗 ZEPHYRUS: https://proteus-framework.org/ZEPHYRUS/ - - 🔗 CALLIOPE: https://proteus-framework.org/CALLIOPE/ - - 🔗 AGNI: https://h-nicholls.space/AGNI/dev/ - - 🔗 Obliqua: https://proteus-framework.org/Obliqua/ - - 🔗 VULCAN: https://github.com/FormingWorlds/VULCAN - - 🔗 Zalmoxis: https://proteus-framework.org/Zalmoxis/ - - 🔗 Aragog: https://proteus-framework.org/aragog/ + + - Other PROTEUS modules: + - 🔗 PROTEUS: https://proteus-framework.org/PROTEUS/ + - 🔗 JANUS: https://proteus-framework.org/JANUS/ + - 🔗 ZEPHYRUS: https://proteus-framework.org/ZEPHYRUS/ + - 🔗 CALLIOPE: https://proteus-framework.org/CALLIOPE/ + - 🔗 AGNI: https://www.h-nicholls.space/AGNI/ + - 🔗 Obliqua: https://proteus-framework.org/Obliqua/ + - 🔗 VULCAN: https://proteus-framework.org/VULCAN/ + - 🔗 Zalmoxis: https://proteus-framework.org/Zalmoxis/ + - 🔗 Aragog: https://proteus-framework.org/aragog/ + - 🔗 SPIDER: https://proteus-framework.org/SPIDER/ + - 🔗 Atmodeller: https://atmodeller.readthedocs.io/en/latest/ + - 🔗 FastChem: https://newstrangeworlds.github.io/FastChem/ + - 🔗 PLATON: https://platon.readthedocs.io/en/latest/ theme: name: material + custom_dir: docs/overrides + features: + - content.code.copy + - navigation.expand + + # Default assets (used unless overridden per palette below) favicon: assets/PROTEUS_black_on_white_logo_only.png logo: assets/PROTEUS_white_on_black.png + palette: - primary: black - accent: deep orange + # Auto: follow system preference (and show a toggle) + - media: "(prefers-color-scheme: light)" + scheme: default + primary: black + accent: deep orange + favicon: assets/PROTEUS_black_on_white_logo_only.png + logo: assets/PROTEUS_white_on_black.png + toggle: + icon: material/weather-night + name: Switch to dark mode + + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: black + accent: deep orange + favicon: assets/PROTEUS_white_on_black_logo_only.png + logo: assets/PROTEUS_white_on_black.png + toggle: + icon: material/weather-sunny + name: Switch to light mode extra_css: - stylesheets/extra.css - + markdown_extensions: - admonition - attr_list @@ -55,10 +91,11 @@ markdown_extensions: - pymdownx.extra - pymdownx.arithmatex: generic: true + - footnotes extra_javascript: - - https://polyfill.io/v3/polyfill.min.js?features=es6 - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + - javascripts/header-links.js plugins: - search From 8cc933d20bccf4ddd3d69f72ae4d8e8ee7ccd541 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 14:39:03 +0100 Subject: [PATCH 05/24] update landing page --- docs/index.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/index.md b/docs/index.md index a85034d..a966fec 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,19 +5,15 @@ **This code is distributed as a python package for the purpose of the [PROTEUS framework](https://proteus-framework.org/PROTEUS/), a coupled simulation tool for the long-term evolution of atmospheres and interiors of rocky planets. The MORS package solves specifically the stellar rotation and evolution. It is based on the [original code](https://www.aanda.org/articles/aa/pdf/2021/05/aa38407-20.pdf) and model developed by Colin P. Johnstone.** -**Original Author:** Colin P. Johnstone +This code solves the stellar rotation and XUV evolution model presented in [Johnstone et al. (2021)](Reference/publications.md#mors-publication). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of [Spada et al. (2013]((Reference/publications.md#bibliography)). When publishing results that were calculated using this code, both the [Johnstone et al. (2021)](Reference/publications.md#mors-publication) paper and [Spada et al. (2013]((Reference/publications.md#bibliography)) should be cited. -This code solves the stellar rotation and XUV evolution model presented in Johnstone et al. (2021). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of Spada et al. (2013). When publishing results that were calculated using this code, both the Johnstone et al. (2020) paper and Spada et al. (2013) should be cited. +!!! note + This version contains the fix for the error in the equation converting EUV1 to EUV2. -**NOTE:** This version contains the fix for the error in the equation converting EUV1 to EUV2. +## Getting started -### Contributors - -| Name | Email address | -| - | - | -| Colin P. Johnstone | colinjohnstone@gmail.com | -| Laurent Soucasse | l.soucasse@esciencecenter.nl | -| Harrison Nicholls | harrison.nicholls@physics.ox.ac.uk | -| Stef Smeets | s.smeets@esciencecenter.nl | -| Tim Lichtenberg | tim.lichtenberg@rug.nl | -| Karen Stuitje | e.k.e.stuitje@student.rug.nl | \ No newline at end of file +- [Installation guide](How-to/installation.md) +- [First-run tutorial](Tutorials/first_run.md) +- [Publications and bibliography](Reference/publications.md) +- [Source code](https://github.com/FormingWorlds/MORS) +- [Contact](contact.md) \ No newline at end of file From 97a5d07b198b4103c0bd60fc4a16faf3c54d0e5e Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:11:32 +0100 Subject: [PATCH 06/24] add overrides (copied from SPIDER) for dark/light mode favicon --- docs/overrides/main.html | 54 ++++++++++++++++++++++++++ docs/overrides/partials/extrahead.html | 3 ++ 2 files changed, 57 insertions(+) create mode 100644 docs/overrides/main.html create mode 100644 docs/overrides/partials/extrahead.html diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 0000000..be8f24d --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,54 @@ +{% extends "base.html" %} + +{% block extrahead %} + {{ super() }} + + + + + + + +{% endblock %} diff --git a/docs/overrides/partials/extrahead.html b/docs/overrides/partials/extrahead.html new file mode 100644 index 0000000..31c4170 --- /dev/null +++ b/docs/overrides/partials/extrahead.html @@ -0,0 +1,3 @@ + + + From 9015224e4255d8582a21223bbe08efb6c4d0dbcc Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:11:43 +0100 Subject: [PATCH 07/24] update homepage --- docs/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index a966fec..a947ccf 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,7 @@ **This code is distributed as a python package for the purpose of the [PROTEUS framework](https://proteus-framework.org/PROTEUS/), a coupled simulation tool for the long-term evolution of atmospheres and interiors of rocky planets. The MORS package solves specifically the stellar rotation and evolution. It is based on the [original code](https://www.aanda.org/articles/aa/pdf/2021/05/aa38407-20.pdf) and model developed by Colin P. Johnstone.** -This code solves the stellar rotation and XUV evolution model presented in [Johnstone et al. (2021)](Reference/publications.md#mors-publication). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of [Spada et al. (2013]((Reference/publications.md#bibliography)). When publishing results that were calculated using this code, both the [Johnstone et al. (2021)](Reference/publications.md#mors-publication) paper and [Spada et al. (2013]((Reference/publications.md#bibliography)) should be cited. +This code solves the stellar rotation and XUV evolution model presented in [Johnstone et al. (2021)](Reference/publications.md#mors-publication). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of [Spada et al. (2013)]((Reference/publications.md#bibliography)). When publishing results that were calculated using this code, both the [Johnstone et al. (2021)](Reference/publications.md#mors-publication) paper and [Spada et al. (2013)]((Reference/publications.md#bibliography)) should be cited. !!! note This version contains the fix for the error in the equation converting EUV1 to EUV2. @@ -16,4 +16,7 @@ This code solves the stellar rotation and XUV evolution model presented in [John - [First-run tutorial](Tutorials/first_run.md) - [Publications and bibliography](Reference/publications.md) - [Source code](https://github.com/FormingWorlds/MORS) -- [Contact](contact.md) \ No newline at end of file +- [Contact](contact.md) + +If you plan to contribute to MORS, please read our [Code of Conduct](CODE_OF_CONDUCT.md). +If you are running into problems, please do not hesitate to raise an [Issue](https://github.com/FormingWorlds/MORS/issues). \ No newline at end of file From 127e23d64ac1e3eddef8b34e81492de80681066e Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:45:38 +0100 Subject: [PATCH 08/24] update note block --- docs/Tutorials/first_run.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/Tutorials/first_run.md b/docs/Tutorials/first_run.md index bcfcd46..a8fbf45 100644 --- a/docs/Tutorials/first_run.md +++ b/docs/Tutorials/first_run.md @@ -10,11 +10,12 @@ By the end of this tutorial you will: 5. Find stellar values at specific ages 6. Save and reload the result -> **Time/units cheat sheet:** `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. +!!! Units + `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. --- -## 0) Prerequisites +## 0. Prerequisites You need: - Python 3 environment with `pip` @@ -34,7 +35,7 @@ source .venv/bin/activate --- -## 1) Install MORS +## 1. Install MORS ```bash pip install fwl-mors ``` @@ -46,7 +47,7 @@ python -c "import mors; print('mors imported:', mors.__version__ if hasattr(mors --- -## 2) Download stellar evolution data +## 2. Download stellar evolution data MORS requires stellar evolution tracks (downloaded once): ```bash mors download all @@ -64,7 +65,7 @@ export FWL_DATA=/path/to/your/data --- -## 3) Create your first star +## 3. Create your first star Create a 1 M☉ star with an initial rotation period of 2.7 days (at ~1 Myr): ```python import mors @@ -78,7 +79,7 @@ star = mors.Star(Mstar=1.0, Omega=10.0) --- -## 4) Inspect what tracks exist +## 4. Inspect what tracks exist Print track names and units: ```python star.PrintAvailableTracks() @@ -98,7 +99,7 @@ lx = star.LxTrack --- -## 5) Plot a track +## 5. Plot a track ```python import matplotlib.pyplot as plt @@ -112,7 +113,7 @@ If you see a plot and no errors, your installation + data are working. --- -## 6) Find stellar values at specific ages +## 6. Find stellar values at specific ages Use the generic accessor: ```python print(star.Value(Age=150.0, Quantity="Lx")) @@ -125,7 +126,7 @@ print(star.Lx(150.0)) --- -## 7) (Optional) Try percentiles: slow/medium/fast rotators +## 7. (Optional) Try percentiles: slow/medium/fast rotators This uses the built-in model distribution: ```python slow = mors.Star(Mstar=1.0, percentile="slow") # 5th percentile @@ -138,7 +139,7 @@ print("fast percentile:", fast.percentile) --- -## 8) Save and reload (recommended) +## 8. Save and reload (recommended) Save: ```python star.Save(filename="star.pickle") From fa5f9e79f480a1c120e4b2ed79ab59f2290e58d7 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:48:03 +0100 Subject: [PATCH 09/24] note blocks -> unit blocks --- docs/How-to/activity_quantities.md | 3 ++- docs/How-to/activity_timelines.md | 3 ++- docs/How-to/clusters.md | 3 ++- docs/How-to/distribution_percentile.md | 3 ++- docs/How-to/evolution.md | 3 ++- docs/How-to/habitablezone.md | 3 ++- docs/How-to/track_quantities.md | 6 ++++-- 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/How-to/activity_quantities.md b/docs/How-to/activity_quantities.md index 3b70f88..2d9a7a7 100644 --- a/docs/How-to/activity_quantities.md +++ b/docs/How-to/activity_quantities.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. Luminosities are in **erg s⁻¹** and surface fluxes in **erg s⁻¹ cm⁻²**. +!!! Units + `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. Luminosities are in **erg s⁻¹** and surface fluxes in **erg s⁻¹ cm⁻²**. --- diff --git a/docs/How-to/activity_timelines.md b/docs/How-to/activity_timelines.md index d0f19ea..800d2f4 100644 --- a/docs/How-to/activity_timelines.md +++ b/docs/How-to/activity_timelines.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** thresholds must match the quantity you use (e.g., `Lx` in **erg s⁻¹**). Ages returned are in **Myr**. +!!! Units + Thresholds must match the quantity you use (e.g., `Lx` in **erg s⁻¹**). Ages returned are in **Myr**. --- diff --git a/docs/How-to/clusters.md b/docs/How-to/clusters.md index 657cf0b..506e0aa 100644 --- a/docs/How-to/clusters.md +++ b/docs/How-to/clusters.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. +!!! Units + `Mstar` in **M☉**, `Age` in **Myr**, `Prot` in **days**, `Omega` in **Ω☉**. --- diff --git a/docs/How-to/distribution_percentile.md b/docs/How-to/distribution_percentile.md index 7b806af..6acaadc 100644 --- a/docs/How-to/distribution_percentile.md +++ b/docs/How-to/distribution_percentile.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Omega` is in units of the current solar rotation rate (**Ω☉**). `Prot` is in **days**. `Mstar` is in **M☉**. +!!! Units + `Omega` is in units of the current solar rotation rate (**Ω☉**). `Prot` is in **days**. `Mstar` is in **M☉**. --- diff --git a/docs/How-to/evolution.md b/docs/How-to/evolution.md index b1980de..56486a7 100644 --- a/docs/How-to/evolution.md +++ b/docs/How-to/evolution.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Age` is in **Myr**, `Prot` is in **days**, and `Omega` is in units of the **current solar rotation rate (Ω☉)**. +!!! Units + `Age` is in **Myr**, `Prot` is in **days**, and `Omega` is in units of the **current solar rotation rate (Ω☉)**. --- diff --git a/docs/How-to/habitablezone.md b/docs/How-to/habitablezone.md index 8fb915b..4b09c2c 100644 --- a/docs/How-to/habitablezone.md +++ b/docs/How-to/habitablezone.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Mstar` in **M☉**, `Age` in **Myr**, returned distances in **AU**. +!!! Units + **Units:** `Mstar` in **M☉**, `Age` in **Myr**, returned distances in **AU**. **Citation note:** If you use these HZ boundaries in research, cite **Kopparapu et al. (2013)** (HZ prescription) and **Spada et al. (2013)** (stellar parameters used). diff --git a/docs/How-to/track_quantities.md b/docs/How-to/track_quantities.md index 6fdf79e..26adf70 100644 --- a/docs/How-to/track_quantities.md +++ b/docs/How-to/track_quantities.md @@ -11,7 +11,8 @@ pip install fwl-mors mors download all ``` -> **Units:** `Mstar` in **M☉**, `Age` in **Myr**. Output units depend on the quantity (listed below). +!!! Units + `Mstar` in **M☉**, `Age` in **Myr**. Output units depend on the quantity (listed below). ## Spada tracks @@ -130,7 +131,8 @@ If it’s already loaded, this call does nothing. MORS also provides access to Baraffe et al. (2002) tracks, which use **different units** than the Spada helpers above. -> **Baraffe units:** `Mstar` in **M☉** (valid range: ~0.01–1.4), `time` in **years (yr)**. +!!! Baraffe units + `Mstar` in **M☉** (valid range: ~0.01–1.4), `time` in **years (yr)**. ### Step 1. Load a Baraffe track (with interpolation) ```python From eda6030c8f84df6fbdae0317520a7f996a9e2752 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:50:26 +0100 Subject: [PATCH 10/24] update citation blocks --- docs/How-to/clusters.md | 3 ++- docs/How-to/habitablezone.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/How-to/clusters.md b/docs/How-to/clusters.md index 506e0aa..ad177a7 100644 --- a/docs/How-to/clusters.md +++ b/docs/How-to/clusters.md @@ -136,7 +136,8 @@ Mstar, Omega = mors.ModelCluster() cluster = mors.Cluster(Mstar=Mstar, Omega=Omega) ``` -**Citation note:** If you use this model cluster distribution in research, cite the rotation-measurement sources listed in **Johnstone et al. (2020), Table 1** (150 Myr bin), in addition to the MORS model paper(s). +!!! Citation + If you use this model cluster distribution in research, cite the rotation-measurement sources listed in **Johnstone et al. (2021), Table 1** (150 Myr bin), in addition to the MORS model paper(s). --- diff --git a/docs/How-to/habitablezone.md b/docs/How-to/habitablezone.md index 4b09c2c..7ba3d7e 100644 --- a/docs/How-to/habitablezone.md +++ b/docs/How-to/habitablezone.md @@ -14,7 +14,8 @@ mors download all !!! Units **Units:** `Mstar` in **M☉**, `Age` in **Myr**, returned distances in **AU**. -**Citation note:** If you use these HZ boundaries in research, cite **Kopparapu et al. (2013)** (HZ prescription) and **Spada et al. (2013)** (stellar parameters used). +!!! Citation + If you use these HZ boundaries in research, cite [Kopparapu et al. (2013)](../Reference/publications.md#bibliography) (HZ prescription) and [Spada et al. (2013)](../Reference/publications.md#bibliography)(stellar parameters used). --- From 36f1e01a3e4a4b5de6c5e70a66f4aca63b083e2b Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:52:43 +0100 Subject: [PATCH 11/24] add link to johnstone et al pdf at page 4 (table 1) --- docs/How-to/clusters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/How-to/clusters.md b/docs/How-to/clusters.md index ad177a7..592c033 100644 --- a/docs/How-to/clusters.md +++ b/docs/How-to/clusters.md @@ -137,7 +137,7 @@ cluster = mors.Cluster(Mstar=Mstar, Omega=Omega) ``` !!! Citation - If you use this model cluster distribution in research, cite the rotation-measurement sources listed in **Johnstone et al. (2021), Table 1** (150 Myr bin), in addition to the MORS model paper(s). + If you use this model cluster distribution in research, cite the rotation-measurement sources listed in [Johnstone et al. (2021), Table 1](https://www.aanda.org/articles/aa/pdf/2021/05/aa38407-20.pdf#page=4) (150 Myr bin), in addition to the MORS model paper(s). --- From baa13bb06e483284f686074e9a26137cecd5678a Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:54:06 +0100 Subject: [PATCH 12/24] small reformat --- docs/How-to/clusters.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/How-to/clusters.md b/docs/How-to/clusters.md index 592c033..78cdec2 100644 --- a/docs/How-to/clusters.md +++ b/docs/How-to/clusters.md @@ -16,7 +16,7 @@ mors download all --- -### Step 1 — Create a cluster from arrays +### Step 1: Create a cluster from arrays Create arrays/lists of masses and rotation rates (same length). If `Age` is omitted, MORS interprets `Omega` as the **initial (~1 Myr)** rotation rate. @@ -38,7 +38,7 @@ cluster = mors.Cluster(Mstar=Mstar, Omega=Omega, verbose=True) --- -### Step 2 — Fit tracks through a specified age (optional) +### Step 2: Fit tracks through a specified age (optional) If you provide `Age`, MORS fits tracks so that each star passes through the given rotation rate at that age. @@ -67,7 +67,7 @@ cluster = mors.Cluster(Mstar=Mstar, Omega=Omega, Age=Age) --- -### Step 3 — Access per-star tracks +### Step 3: Access per-star tracks Each star is a `mors.Star` instance stored in `cluster.stars`. @@ -88,7 +88,7 @@ plt.plot(cluster.stars0.AgeTrack, cluster.stars0.LxTrack) --- -### Step 4 — Get cluster values at a fixed age +### Step 4: Get cluster values at a fixed age Use `Values(Age=..., Quantity=...)` to retrieve an array across the cluster: @@ -114,7 +114,7 @@ plt.show() --- -### Step 5 — Save and reload (recommended for large clusters) +### Step 5: Save and reload (recommended for large clusters) Cluster calculations can be expensive for many stars, so saving is recommended. @@ -125,7 +125,7 @@ cluster2 = mors.Load("cluster.pickle") --- -### Step 6 — Evolve the built-in “model cluster” (optional) +### Step 6: Evolve the built-in “model cluster” (optional) MORS includes a composite “model cluster” distribution (derived from observed clusters at ~150 Myr evolved back to 1 Myr). You can load it and evolve it like any other cluster: From 0fc62b89dc899b5c4101c7369b02a594b99abe97 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:57:11 +0100 Subject: [PATCH 13/24] update how-to titles --- docs/How-to/activity_quantities.md | 2 +- docs/How-to/activity_timelines.md | 2 +- docs/How-to/clusters.md | 2 +- docs/How-to/distribution_percentile.md | 2 +- docs/How-to/evolution.md | 2 +- docs/How-to/habitablezone.md | 2 +- docs/How-to/set_parameters.md | 2 +- docs/How-to/track_quantities.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/How-to/activity_quantities.md b/docs/How-to/activity_quantities.md index 2d9a7a7..f83a12e 100644 --- a/docs/How-to/activity_quantities.md +++ b/docs/How-to/activity_quantities.md @@ -1,4 +1,4 @@ -## Rotation and activity quantities (How-to) +# Find stellar rotation and activity quantities ### Goal Compute high-energy emission quantities (X-ray, EUV, Ly-α) from stellar **mass**, **age**, and **rotation**, optionally add variability/scatter, and (if needed) retrieve a larger set of model diagnostics via `ExtendedQuantities`. diff --git a/docs/How-to/activity_timelines.md b/docs/How-to/activity_timelines.md index 800d2f4..5a470c9 100644 --- a/docs/How-to/activity_timelines.md +++ b/docs/How-to/activity_timelines.md @@ -1,4 +1,4 @@ -## Activity timelines (How-to) +# Find stellar activity timelines ### Goal Compute how long a star (or a cluster of stars) stays above an activity threshold (e.g., X-ray luminosity) or how long it remains in the saturated regime. diff --git a/docs/How-to/clusters.md b/docs/How-to/clusters.md index 78cdec2..1f0e3b8 100644 --- a/docs/How-to/clusters.md +++ b/docs/How-to/clusters.md @@ -1,4 +1,4 @@ -## Cluster evolution calculation (How-to) +# Calculate cluster evolution ### Goal Compute rotation/activity evolution tracks for a **cluster of stars**, then (a) inspect per-star tracks, (b) evaluate cluster distributions at a given age, and (c) save/reload the cluster to avoid recomputation. diff --git a/docs/How-to/distribution_percentile.md b/docs/How-to/distribution_percentile.md index 6acaadc..ad53086 100644 --- a/docs/How-to/distribution_percentile.md +++ b/docs/How-to/distribution_percentile.md @@ -1,4 +1,4 @@ -# Model distribution and percentiles (How-to) +# Using model percentiles for initial rotation ### Goal Pick an initial rotation rate from the built-in **model rotation distribution** (Johnstone et al. 2020), inspect a star’s inferred percentile, and convert between **rotation rate and percentile** for a given stellar mass. diff --git a/docs/How-to/evolution.md b/docs/How-to/evolution.md index 56486a7..50417b6 100644 --- a/docs/How-to/evolution.md +++ b/docs/How-to/evolution.md @@ -1,4 +1,4 @@ -## Evolutionary calculations (How-to) +# Calculate a star's evolution ### Goal Compute a star’s rotation and activity evolution tracks, then (a) plot a quantity, (b) query values at specific ages, and (c) save the result for reuse. diff --git a/docs/How-to/habitablezone.md b/docs/How-to/habitablezone.md index 7ba3d7e..a6cd535 100644 --- a/docs/How-to/habitablezone.md +++ b/docs/How-to/habitablezone.md @@ -1,4 +1,4 @@ -## 8. Find habitable zone boundaries (How-to) +# Find habitable zone boundaries ### Goal Compute habitable zone (HZ) boundary orbital distances (AU) as a function of stellar **mass** and **age** using `mors.aOrbHZ`. diff --git a/docs/How-to/set_parameters.md b/docs/How-to/set_parameters.md index 0d33107..a3e3793 100644 --- a/docs/How-to/set_parameters.md +++ b/docs/How-to/set_parameters.md @@ -1,4 +1,4 @@ -## Setting custom simulation parameters (How-to) +# Setting custom simulation parameters ### Goal Create simulation parameters for a `Star` (or `Cluster`) run, and optionally restrict the ages saved in output tracks using `AgesOut`. This overrides MORS default simulation parameters. diff --git a/docs/How-to/track_quantities.md b/docs/How-to/track_quantities.md index 26adf70..7f3f493 100644 --- a/docs/How-to/track_quantities.md +++ b/docs/How-to/track_quantities.md @@ -1,4 +1,4 @@ -## Find stellar quantities using evolution tracks (How-to) +# Find stellar quantities using evolution tracks ### Goal Find basic stellar evolution properties (radius, luminosity, convective turnover time, moments of inertia, etc.) as a function of **stellar mass** and **age**, using the Spada et al. (2013) tracks bundled with MORS. Optionally, stellar evolution quantities according to the Baraffe model (Baraffe et al., 2002) can be found. From b47213e50e329c150d2be644c8484cbc9be8d496 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 15:59:04 +0100 Subject: [PATCH 14/24] add installation note about installing within proteus framework --- docs/How-to/installation.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/How-to/installation.md b/docs/How-to/installation.md index df45d2e..bb30a97 100644 --- a/docs/How-to/installation.md +++ b/docs/How-to/installation.md @@ -1,5 +1,8 @@ # Installation +!!! note + The standard way of installing this version of MORS is within the PROTEUS Framework, as described in the [PROTEUS installation guide](https://proteus-framework.org/PROTEUS/installation.html#9-install-submodules-as-editable). + ### Prerequisites - **Python:** >3.11 installed - **pip:** available (`python -m pip --version`) From b729a3614304d929a78302a125dbda810fe5be64 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:02:01 +0100 Subject: [PATCH 15/24] update note --- docs/How-to/track_quantities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/How-to/track_quantities.md b/docs/How-to/track_quantities.md index 7f3f493..3e19e94 100644 --- a/docs/How-to/track_quantities.md +++ b/docs/How-to/track_quantities.md @@ -131,7 +131,7 @@ If it’s already loaded, this call does nothing. MORS also provides access to Baraffe et al. (2002) tracks, which use **different units** than the Spada helpers above. -!!! Baraffe units +!!! Units `Mstar` in **M☉** (valid range: ~0.01–1.4), `time` in **years (yr)**. ### Step 1. Load a Baraffe track (with interpolation) From 33aa73cee6d9252fd79a6bb227fb32f38bffa16f Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:02:44 +0100 Subject: [PATCH 16/24] update contact.md location --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index fa07915..03ebec6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -27,7 +27,7 @@ nav: - Contributing: CONTRIBUTING.md - Code of Conduct: CODE_OF_CONDUCT.md - Developers: https://proteus-framework.org/people - - Contact: Community/contact.md + - Contact: contact.md - Source code: https://github.com/FormingWorlds/MORS - Issues page: https://github.com/FormingWorlds/MORS/issues From 0ab918cfaed0e3e738a798b810a51f82c794ae66 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:11:50 +0100 Subject: [PATCH 17/24] add tests badge --- docs/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/index.md b/docs/index.md index a947ccf..cc3ee2e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,7 @@ +[![Tests](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml/badge.svg)](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml) ![Coverage](https://gist.githubusercontent.com/lsoucasse/a25c37a328839edd00bb32d8527aec30/raw/covbadge.svg) + # MODEL FOR ROTATION OF STARS (MORS) **This code is distributed as a python package for the purpose of the [PROTEUS framework](https://proteus-framework.org/PROTEUS/), a coupled simulation tool for the long-term evolution of atmospheres and interiors of rocky planets. From 3873296108d3f8c9d2ece199da0d40df9f603765 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:13:16 +0100 Subject: [PATCH 18/24] use main branch for tests badge --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index cc3ee2e..a3facba 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -[![Tests](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml/badge.svg)](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml) +[![Tests](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/FormingWorlds/MORS/actions/workflows/tests.yaml?query=branch%3Amain) ![Coverage](https://gist.githubusercontent.com/lsoucasse/a25c37a328839edd00bb32d8527aec30/raw/covbadge.svg) From 6ade7bba4d1ff716744b2d0328c1d6a0cfd4f9d1 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:18:04 +0100 Subject: [PATCH 19/24] update coverage badge in workflow --- .github/workflows/tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 471ad1c..1a0eab1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -58,7 +58,7 @@ jobs: echo $'\n```' >> $GITHUB_STEP_SUMMARY - name: Make coverage badge - if: ${{ github.ref == 'refs/heads/main' && matrix.python-version == '3.10' }} + if: ${{ github.ref == 'refs/heads/main' && matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12' }} uses: schneegans/dynamic-badges-action@v1.7.0 with: auth: ${{ secrets.GIST_TOKEN }} @@ -66,6 +66,6 @@ jobs: filename: covbadge.svg label: Coverage message: ${{ env.total }}% - minColorRange: 50 + minColorRange: 10 maxColorRange: 90 valColorRange: ${{ env.total }} From 501b8a81c777ae424a55fc89c68e084fa226aa8d Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 16:27:18 +0100 Subject: [PATCH 20/24] delete homepages for tutorials/how-to --- docs/How-to/index.md | 14 -------------- docs/Tutorials/index.md | 5 ----- 2 files changed, 19 deletions(-) delete mode 100644 docs/How-to/index.md delete mode 100644 docs/Tutorials/index.md diff --git a/docs/How-to/index.md b/docs/How-to/index.md deleted file mode 100644 index 5295db0..0000000 --- a/docs/How-to/index.md +++ /dev/null @@ -1,14 +0,0 @@ -# How-to guides - -Welcome to the how-to guides for MORS. These are task-focused recipes for common MORS workflows. - -1. [(Developer) installation](installation.md) -2. [Calculate a star's evolution](evolution.md) -3. [Calculate a cluster's evolution](clusters.md) -4. [Using model percentiles for initial rotation](distribution_percentile.md) -5. [Setting custom simulation parameters](set_parameters.md) -6. [Find stellar rotation and activity quantities](activity_quantities.md) -7. [Find stellar quantities with stellar evolution tracks](track_quantities.md) -8. [Find habitable zone boundaries](habitablezone.md) -9. [Find stellar activity timelines](activity_timelines.md) - diff --git a/docs/Tutorials/index.md b/docs/Tutorials/index.md deleted file mode 100644 index 6b8f6bd..0000000 --- a/docs/Tutorials/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Tutorials - -Welcome to the tutorials for MORS. So far, there is only one available – but more to come! - -1. [First run](first_run.md) \ No newline at end of file From 05e8984eb5bb68c363938053209a4ab4e2e5b9b6 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 18:40:13 +0100 Subject: [PATCH 21/24] Update docs/index.md: typo fix Co-authored-by: Harrison Nicholls <32022679+nichollsh@users.noreply.github.com> --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index a3facba..415e00f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,7 +7,7 @@ **This code is distributed as a python package for the purpose of the [PROTEUS framework](https://proteus-framework.org/PROTEUS/), a coupled simulation tool for the long-term evolution of atmospheres and interiors of rocky planets. The MORS package solves specifically the stellar rotation and evolution. It is based on the [original code](https://www.aanda.org/articles/aa/pdf/2021/05/aa38407-20.pdf) and model developed by Colin P. Johnstone.** -This code solves the stellar rotation and XUV evolution model presented in [Johnstone et al. (2021)](Reference/publications.md#mors-publication). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of [Spada et al. (2013)]((Reference/publications.md#bibliography)). When publishing results that were calculated using this code, both the [Johnstone et al. (2021)](Reference/publications.md#mors-publication) paper and [Spada et al. (2013)]((Reference/publications.md#bibliography)) should be cited. +This code solves the stellar rotation and XUV evolution model presented in [Johnstone et al. (2021)](Reference/publications.md#mors-publication). The package can be used to calculate evolutionary tracks for stellar rotaton and X-ray, EUV, and Ly-alpha emission for stars with masses between 0.1 and 1.25 Msun and has additional functionality such as allowing the user to get basic stellar parameters such as stellar radius and luminosity as functions of mass and age using the stellar evolution models of [Spada et al. (2013)](Reference/publications.md#bibliography). When publishing results that were calculated using this code, both the [Johnstone et al. (2021)](Reference/publications.md#mors-publication) paper and [Spada et al. (2013)](Reference/publications.md#bibliography) should be cited. !!! note This version contains the fix for the error in the equation converting EUV1 to EUV2. From 8660ca7c4764251d599e932f7758bc45a854e5f8 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 18:40:46 +0100 Subject: [PATCH 22/24] Update docs/How-to/installation.md: codeblock update Co-authored-by: Harrison Nicholls <32022679+nichollsh@users.noreply.github.com> --- docs/How-to/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/How-to/installation.md b/docs/How-to/installation.md index bb30a97..9224600 100644 --- a/docs/How-to/installation.md +++ b/docs/How-to/installation.md @@ -63,7 +63,7 @@ export FWL_DATA=... Where ... should be replaced with the path to your main data directory. To make this permanent on Ubuntu, use ```console -gedit ~/.profile +nano ~/.bashrc ``` and add the export command to the bottom of the file. From d04af0c295a9b976228dfc53774da6fffa46ebac Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 18:44:57 +0100 Subject: [PATCH 23/24] set use_directory_urls to false in mkdocs.yml --- mkdocs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 03ebec6..93920a9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -127,6 +127,8 @@ plugins: merge_init_into_class: yes filters: ["!^_"] +use_directory_urls: false + watch: - src/ - docs/ From 964e96bd6a96091dc7fc6d22a7b5e6a2b596d3c2 Mon Sep 17 00:00:00 2001 From: Karen Stuitje Date: Sun, 22 Feb 2026 18:46:39 +0100 Subject: [PATCH 24/24] typo fix --- docs/Reference/publications.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/publications.md b/docs/Reference/publications.md index 7748863..c0f0cdd 100644 --- a/docs/Reference/publications.md +++ b/docs/Reference/publications.md @@ -1,6 +1,6 @@ # Publications and bibliography -## MORS publication +## MORS publications - Johnstone, C. P., Bartel, M., & Güdel, M. (2021). The active lives of stars: A complete description of the rotation and XUV evolution of F, G, K, and M dwarfs. *Astronomy & Astrophysics*, 649, A96. [https://doi.org/10.1051/0004-6361/202038407](https://doi.org/10.1051/0004-6361/202038407)