shamash-orogen
Algorithms that turn a plate-tectonic history into terrain: the
reconstruction of the plates themselves, and from it global lon/lat grids that
GDAL and QGIS read directly. Its input is one tectonics phase as
shamash-core lays it out
(<body>/tectonics/phase-N/: the plates and continents as drawn and every
plate's Euler pole; then a snapshot of them every few Myr, and the present with
new seafloor shared along mid-ocean ridges). shamash-core depends on it and
calls it in-process.
Plain Python with numpy and shapely; it never imports GDAL, QGIS or pygplates:
uv pip install --python ~/Dev/projects/shamash/shamash-core/venv/bin/python -e ~/Dev/projects/shamash/shamash-orogen
Algorithms
One verb each, all python -m orogen VERB PHASE OUT [--resolution DEG] [--crs WKTFILE]
but reconstruct, which writes into the phase:
-
reconstruct: the plates drawn atdurationMa turned rigidly about their Euler poles at a constant rate to 0 Ma (Rodrigues' rotation, Cox & Hart 1986), cut at the antimeridian and closed through a pole a plate comes to cover; continents split along the plates and carried by them; slivers of imperfect snapping resolved; the overlap and gap reported. Writesreconstructed/{plates,continents}_<t>Ma.geojsoneverystepMyr andnext/, the present made to tile the globe again (overlaps to the plate with more continent, gaps shared along mid-ocean ridges). ea's 19 plates, 21 snapshots: 4 s. -
seafloor: seafloor age and depth at the present. Within each plate's half of an opened ocean, age runs from 0 at the ridge to the phase's duration at the plate's edge; ocean floor older than the phase is assumedduration + --initial-age(60 Myr). Depth from age by GDH1 (Stein & Stein 1992). Writesseafloor_age.asc,seafloor_depth.asc. -
history: where the action was. On a fixed grid, the Myr each cell lay under two or more plates (convergence) and under none (divergence) over the phase. Writesoverlap_myr.asc,gap_myr.asc. -
boundaries: the present plate boundaries every 0.5°, classified from the two plates' Euler-pole velocities and the crust on each side: collision, subduction, island arc, rift, ridge, transform; with the shortening each has seen (closing rate × duration). Writesboundaries.geojson. -
orogeny: the relief the boundaries raise or cut, Earth-shaped heuristic profiles across each kind (flat-topped collision ranges, trench and cordillera, trench and island arc, rift valley). Writesrelief.asc. -
dem: everything composed: continental lowlands rising inland, shelf and slope down to the age-depth ocean floor, the boundaries' relief, and fractal noise on the sphere, rougher where the ground was raised; relief and noise scaled by Earth's gravity over--gravity, clipped to--range. Writesdem.png(16-bit,--rangespans black to white),dem_8bit.png(the same rounded away from sea level, for a drawing program to reproduce exactly) anddem.json, and with--ascthe float griddem.asc. ea's phase 1 at 0.1°: 2 minutes. -
climate(orogen climate DEM_PNG OUT --planet planet.json --range LOW HIGH): a body's climate from its heights and the parameters shamash-core writes toclimate/planet.json. A seasonal energy balance model on the lon/lat grid (outgoing radiation linearised about the body's own equilibrium, moist and anisotropic heat transport, ice that brightens the albedo while its global mean stays the body's Bond albedo), Hadley cells from Held & Hou scaled to Earth's 30 deg, an ITCZ that follows the warmest air, rain at the ITCZ and along storm tracks, carried upwind over land by a semi-Lagrangian sweep, and the sea's heat carried by wind-driven gyres (ocean.py, the Stommel model: western boundary currents, coastal upwelling). Writes monthly-derived temperatures, precipitation, Köppen-Geiger classes (koppen.py, Kottek et al. 2006, coloured as Beck et al. 2018), solstice winds, ocean currents andclimate.json. Earth at 1 deg: 23 s, 64% of land cells in the right main class.
--crs takes the body's geographic CRS as WKT (shamash-core's
qgis/project.json holds it) and writes it beside each grid as a .prj.
Roadmap
- Seafloor age and depth, convergence footprint (0.5° in seconds)
- Plate boundaries classified from relative Euler velocities: collision, subduction, island arc, rift, transform
- Mountain, trench and arc profiles from them
- One global DEM at 0.1°, as a 16-bit PNG
- Erosion: the ranges are smooth heuristic profiles plus noise, with no valleys cut by water
- More than one phase: ocean floor and mountains carried from phase to phase instead of each phase starting fresh
-
shamash map terrain, writing the inputs and running this - The reconstruction itself, replacing pygplates (2026-10-16)
- A climate model with Köppen-Geiger classes (2026-10-16)
- Wind-driven ocean currents and coastal upwelling (2026-10-16)
- Climate: monsoons, a North Atlantic Drift that reaches Norway, cloud-albedo
- Release to PyPI, since shamash-core depends on it
Metadata
Release files for shamash-orogen 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| shamash_orogen-0.3.0.tar.gz | 60.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shamash_orogen-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 130.8 kB
Release files / shamash_orogen-0.3.0.tar.gz
| Download URL | shamash_orogen-0.3.0.tar.gz |
|---|---|
| Size | 60.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
02e73fdd51818db44e9569b52ceeecc4b74c56649cf8c1d97a1ad500e48269d5
|
|
BLAKE2b-256 checksum How to use checksums |
864a40138a2d0c7409b6c686cb62c357cf1b097b996d5746fff7c21e64f168d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / shamash_orogen-0.3.0-py3-none-any.whl
| Download URL | shamash_orogen-0.3.0-py3-none-any.whl |
|---|---|
| Size | 70.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d6eeef7ff81899dc9583063c546f050892c90b41d1622a3335a12a2b15552da
|
|
BLAKE2b-256 checksum How to use checksums |
f920b36c5379018db08d50dd58ae01606f68dd18abaf7dfaaa5a3ad6dc22802e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for shamash-orogen 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.