Morrigan
Morrigan is the protoplanet accretion module of the PROTEUS coupled atmosphere-interior evolution framework. It follows a system of protoplanets through the giant impacts and gravitational scattering by which they accrete, implementing the semi-analytical Monte Carlo model of Kimura et al. (2025). The protoplanets are the planetary embryos of the post-disk stage, and that is what the model and this documentation call them: a set of embryos evolves through secular eccentricity oscillations, orbit crossings, gravitational scatterings, ejections, and giant impacts, until the system settles into a Hill-stable configuration.
Morrigan runs standalone from a TOML settings file, producing per-system tables of the full evolution, every merger, and the surviving planets, and it runs in memory through morrigan.run_system, the entry point PROTEUS uses to drive its accretion coupling: each reported impact grows the coupled planet, re-melts its mantle, delivers volatiles, erodes its atmosphere, and moves its orbit.
Named after Morrigan, a shapeshifting figure from Irish mythology thought to represent the dynamical nature of existence.
Where to go
-
Get started
The shortest path from a clone to a result
-
Follow a tutorial
One system standalone, or one inside PROTEUS
-
Install
From PyPI, or as an editable checkout
-
Run a model
Drive a system from a settings file
-
Configure
Choose the initial conditions and what they do
-
Understand the model
The physics, equation by equation
-
Find it in the source
Where each piece of the model lives
-
Couple to PROTEUS
The TOML recipe and the pitfalls
-
Understand the coupling
Why it is built the way it is
-
Look up a setting
Every field of the settings file
-
Browse the API
The entry points a caller uses
-
See what is validated
Each routine pinned against a published or analytical value
-
Know the limits
What the model does not represent
-
Browse the code
The repository and its history
-
Raise an issue
Report a problem or ask for a feature
The model in one paragraph
Embryos are laid out with a fixed spacing in mutual Hill radii and evolve under the classical Laplace-Lagrange secular solution. The time to the next orbit crossing is predicted from the Petit et al. (2020) three-body resonance-overlap timescale, gated by a two-planet stability criterion. When a crossing falls due, the interacting pair either collides, with a probability built from the ratio of its relative eccentricity to the mutual escape eccentricity, or scatters; scattering can excite an orbit past unity eccentricity and eject a body. Collisions merge the pair perfectly, summing the masses and placing the merged body on the orbital-energy-weighted orbit; the model tracks no atmosphere, so impact erosion is left to the consumer. The run ends when the system is Hill-stable or the evolution time is spent.