marss 0.0.2

Mars celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
  • Coverage
  • 0%
    0 out of 862 items documented0 out of 450 items with examples
  • Size
  • Source code size: 216.38 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 25.13 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 2m 31s Average build duration of successful builds.
  • all releases: 2m 4s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • celestial4498-prog

Marss

Part of the Celestial project.

Marss is a Rust Mars-system simulation core.

It computes state, evolves that state over time, and exposes simulation-ready data for downstream consumers. It is meant to sit behind endpoints, IPC, or another orchestrating runtime. It is not a UI crate, not a viewer, and not a frontend.

Scope

Marss currently ships as:

  • a Cargo package named marss
  • a Rust library crate imported as marss
  • a runtime binary named marss

The project combines scientific subsystems for:

  • atmosphere
  • biosphere
  • geodata
  • geology
  • hydrology
  • lighting
  • physics
  • rendering-oriented physical state
  • satellites
  • temporal systems
  • terrain

The library exposes reusable domain modules. The binary assembles them into a continuously ticking Mars runtime.

What This Crate Is For

Use Marss when you need one of these:

  • a Rust dependency for Mars-system simulation logic
  • a runtime process that advances Mars state continuously
  • a backend core behind REST, gRPC, WebSocket, CLI, or custom IPC endpoints
  • an orchestrated Mars node inside a larger multi-body simulation system
  • a downstream consumer of scientific primitives provided by sciforge

What This Crate Will Not Do

Marss does not provide:

  • any UI
  • any viewer
  • any frontend
  • any visualization layer
  • any render window or presentation loop
  • any bundled large datasets
  • any hardcoded dependency on sibling repositories

If you want visual output, that belongs in another crate or another process consuming Marss.

Key Physical Parameters

Parameter Value
Mass 6.4171e23 kg
Mean radius 3 389.5 km
Surface gravity 3.72 m/s²
Atmosphere CO₂-dominated (95.3 %), thin (636 Pa surface pressure)

Key Features

  • CO₂-dominated atmosphere with dust storm modeling
  • Olympus Mons (21.9 km) and Tharsis volcanic province
  • Phobos and Deimos satellite dynamics
  • Polar ice caps (H₂O + CO₂ ice)
  • Ancient hydrology (Oceanus Borealis, Kasei Valles, Jezero crater lake)
  • Martian sol/year calendar and solar longitude (Ls) tracking
  • Butterscotch sky rendering from Rayleigh/dust scattering

Current Status

  • version: 0.0.1
  • edition: 2024
  • license: MIT
  • validation gates: cargo fmt, cargo clippy, cargo test

Architecture

Marss is split into domain modules plus a runtime binary.

Module Responsibility
atmosphere CO₂ climate, dust storms, saltation winds, barometric pressure, heatwaves
biosphere hypothetical habitability scoring, vegetation survival modeling
geodata Mars oblate ellipsoid coordinates, Hellas/Argyre basins, DEM elevation, regions
geology marsquakes, aeolian erosion, Olympus Mons isostasy, stagnant lid tectonics, volcanism
hydrology polar caps, paleolakes (Jezero), ancient oceans, channel discharge estimates
lighting solar longitude (Ls) day/night, Martian seasons, solar position
physics Keplerian orbit (e = 0.0934), sol/sidereal rotation, Phobos/solar tides, impacts
rendering Rayleigh/dust scattering, dust rendering, PBR regolith/basalt materials, sky color
satellites Phobos, Deimos, artificial probes
temporal Mars sol date, Mars year counting, J2000 epoch, time scaling
terrain Olympus Mons / Hellas DEM, cube-face LOD, spherical mesh, biome texturing

Package Name, Library Name, Binary Name

  • Cargo package name: marss
  • Rust library import path: marss
  • binary name: marss

Dependency declaration:

[dependencies]
marss = "0.0.1"

Rust import path:

use marss::physics::orbit;

Runtime Binary

The binary in src/main.rs is a long-running simulation process.

Today it:

  • constructs a full Mars state object
  • advances simulation time continuously
  • updates orbital state, rotation, temporal state, satellite state, climate, hydrology, terrain, clouds, shaders, and observer-local state
  • keeps running until externally stopped

It does not open a window, draw frames, or embed any visual dashboard.

Why There Is a rendering Module

The rendering module provides physically meaningful data structures and computations for atmospheric scattering parameters, dust rendering, shader-oriented physical uniforms, and material parameters tied to simulated state. It does not make this crate a visual application.

Examples

  • cargo run --example climate_sim
  • cargo run --example earthquake_sim
  • cargo run --example tidal_sim

Validation

cargo fmt --check
cargo clippy
cargo test

sciforge Strategy

Marss is intentionally downstream from sciforge. Mars-specific orchestration belongs here; reusable scientific primitives should move upstream into sciforge when appropriate.

Related Project Files