Skip to main content

Accretion and dynamical evolution of a system of protoplanets via giant impacts.

Project description

Morrigan

License Docs codecov Unit Tests Integration Tests

Morrigan is the protoplanet accretion module of the PROTEUS coupled atmosphere-interior evolution framework. It follows a system of protoplanets, the planetary embryos of the post-disk stage, through the giant impacts and gravitational scattering by which they accrete, tracking how each collision changes the masses and orbits of the bodies that survive. It implements the semi-analytical Monte Carlo model of Kimura et al. (2025).

Named after Morrigan, a shapeshifting figure from Irish mythology thought to represent the dynamical nature of existence.

Installation

git clone git@github.com:FormingWorlds/Morrigan.git
cd Morrigan
pip install -e .

Running a model

Settings live in a .toml file; initialise.toml in the repository root is a worked example covering the number of systems, the embryo masses, the stellar mass, and how long to evolve for.

morrigan -c initialise.toml

Keeping several settings files side by side and pointing at whichever you want is the reason for the -c flag. The repository ignores *.toml apart from initialise.toml, so a settings file you want to keep alongside the results it produced has to be added to git explicitly.

Results are written under the save_directory named in the settings file. A relative save_directory is taken from the directory you run the command in, not from wherever the settings file happens to live, so the run prints the full path it is writing to:

Path Contents
data/full_systems/ State of every planet through time
data/mergers/ One row per collision: the bodies involved and the collision velocity
data/survivors/ Final mass, orbit, and eccentricity of each surviving planet
batch_summary.csv Runtime and surviving-planet count for each system

To plot the results of a run, point the plotting script at the same settings file:

pip install -e ".[plot]"
python plot.py -c initialise.toml

plot.py is a script kept in the repository rather than part of the installed package, so it is run from a checkout. Its plotting dependencies (matplotlib, scipy) are in the plot extra, which keeps them out of the way of anything that only wants to import the model.

Documentation

The full documentation, including the model physics, the PROTEUS coupling contract, and the per-source validation anchors, lives at proteus-framework.org/Morrigan. Build it locally with pip install -e ".[docs]" and zensical serve.

Testing

pip install -e ".[develop]"
pytest -m "(unit or smoke) and not skip"

The suite is tiered (unit and smoke on every pull request, seed-ensemble statistics nightly) and every physics routine is pinned against a published value, an analytical limit, or a cross-implementation check; see the documentation's testing guide for the full contract.

Reproducibility

Each system's seed is mixed from random_seed in the settings file and the system's own index, so a given settings file reproduces the same systems exactly and two ensembles with neighbouring seeds are independent of each other.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fwl_morrigan-26.7.26.tar.gz (693.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fwl_morrigan-26.7.26-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file fwl_morrigan-26.7.26.tar.gz.

File metadata

  • Download URL: fwl_morrigan-26.7.26.tar.gz
  • Upload date:
  • Size: 693.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fwl_morrigan-26.7.26.tar.gz
Algorithm Hash digest
SHA256 ba302818e43792465ae50173e9126d268c0a0722f7641dadb4e2ad1eacafbae7
MD5 3f22dbebc873e3c8c5efdd5c8d26c2d8
BLAKE2b-256 c54c6d8753860df9519705744840ad4f0f1cec23af642e2da3210a2096391286

See more details on using hashes here.

Provenance

The following attestation bundles were made for fwl_morrigan-26.7.26.tar.gz:

Publisher: publish.yaml on FormingWorlds/Morrigan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fwl_morrigan-26.7.26-py3-none-any.whl.

File metadata

  • Download URL: fwl_morrigan-26.7.26-py3-none-any.whl
  • Upload date:
  • Size: 31.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fwl_morrigan-26.7.26-py3-none-any.whl
Algorithm Hash digest
SHA256 516ba89e396e5e665589d205a840a8bb0c6eeda92937ee109b2c671f415f0d3c
MD5 5eb8ea933b9d6a2c1b4742657549c3d5
BLAKE2b-256 fb79de0bac6af2bb8691b2952a45cbc09d289dbd581bd6380ed626f28e842d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for fwl_morrigan-26.7.26-py3-none-any.whl:

Publisher: publish.yaml on FormingWorlds/Morrigan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page