Skip to content

v3.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Jul 09:34

ropesim 3.1.0 — 2026-07-13

Climbing rope physics engine — Python library, CLI, TUI, and a native 3D desktop app.

ropesim models lead-fall dynamics with a UIAA 101 / EN 892 impact-force model and
RK4 damped-spring integration in a Rust core (optional Rapier3D full-physics mode).
One engine, four frontends: a pip-installable Python library, a 20+ command CLI, a
Textual terminal UI, and a native C++ / Qt6 desktop application with a 60 fps OpenGL
rope renderer.

Added

  • Nonlinear rope model (nonlinear_rope_from_spec, nonlinear_impact_force, nonlinear_force_curve): cubic force–strain law F(ε) = a·ε + b·ε³ calibrated against both the rated impact force and the dynamic elongation (two-point EN 892 calibration). Exact in force and elongation at the test point; predicts higher (more realistic) forces than the linear model at low fall factors.
  • Capstan route friction (capstan_ratio, route_friction, route_transmission): tension propagation through every carabiner via the capstan equation T_out = T_in·e^(−μθ), per-piece resultant loads, belay-device tension, and overall drag factor. Physically derived replacement for the scalar belay_friction guess.
  • Two-body belayer dynamics (two_body_catch): coupled climber + belayer ODE over the top piece with capstan friction; the soft catch (typically 5–25 % force reduction, scaling inversely with belayer mass) emerges from the belayer being lifted rather than being asserted.
  • Validation regression suite (tests/validation/): every rope in the 25-rope database is a manufacturer drop-test data point that the models must reproduce within tolerance, plus analytic invariants (Wexler closed form, energy conservation, capstan closed form, limiting cases). Table for external literature drop tests included (empty until transcribed with page references).
  • CI: Python test job builds the Rust core fresh with maturin on Linux + Windows (Python 3.10/3.12), deletes any committed prebuilt binaries first, and runs the full suite including validation — a committed stale binary can no longer mask failures.

Fixed

  • compute_force_curve truncated the simulation when timestep_ms < ~0.25 ms (hardcoded 3000-step cap): peaks were silently under-reported (~3 % at 0.1 ms, catastrophic at 0.01 ms). The cap now scales with the timestep (3 s of simulated time).

Install

Python library / CLI / TUI (all platforms, Python 3.10–3.12):

pip install ropesim          # library + CLI
pip install "ropesim[tui]"   # + terminal UI

Desktop app (no Python required) — download an asset below and run:

  • Windows — unzip ropesim-gui-windows-x64.zip, run ropesim-gui.exe
  • macOS — open ropesim-gui-macos.dmg (unsigned: right-click → Open the first time)
  • Linuxchmod +x ropesim-gui-linux-x86_64.AppImage && ./ropesim-gui-linux-x86_64.AppImage

Verify your download (SHA-256)

sha256sum -c SHA256SUMS.txt        # Linux
shasum -a 256 -c SHA256SUMS.txt    # macOS

Desktop apps

  • ropesim-gui-linux-x86_64.AppImage
    7b3946d40e2c29d8e9879d76ef808efc476b8f93702e53a1c9d67f90480dde19
  • ropesim-gui-macos.dmg
    ec476cfdd199ea876af47edbcef657be19c20f8e40af86a102781592f19e846a
  • ropesim-gui-windows-x64.zip
    b1f535317b10be7238626ec445eaa10107cce2a78a5ca4a28d86d2a528fc798c

Python wheels

  • ropesim-3.1.0-cp310-cp310-macosx_11_0_arm64.whl
    a78c79a0c57a305f4a0ef1dea5384a6476d784076c3aba065ee9a3cf483bc2c0
  • ropesim-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    041ec724b55e5628987ca8b841dc662563ce6faf0e3b279f7e589e1feca19509
  • ropesim-3.1.0-cp310-cp310-win_amd64.whl
    5807c25d2fff9d5df57f509c1a52bbcdda1a83ea277ca934158add053f509f34
  • ropesim-3.1.0-cp311-cp311-macosx_11_0_arm64.whl
    d05e41198782429bbea805f5cfb95441a951b329856e2811043580b6ff4d41fc
  • ropesim-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    eccbe5fd452503fe065d9f0896ce9ba34d59bed3f26370a16dc23b1c4e4bc994
  • ropesim-3.1.0-cp311-cp311-win_amd64.whl
    302047f1681480f7d136390185bcfe777c8b611522d8ded74fc617e54b789c08
  • ropesim-3.1.0-cp312-cp312-macosx_11_0_arm64.whl
    9c4fec4592af9066dc407e8c2a85a7033fa8aff84bcbb66948e8f39e108fea08
  • ropesim-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    49e88a7480bfd14a2cb64ee6e63809e6a6a29792a3c37bed509041610f13b2d9
  • ropesim-3.1.0-cp312-cp312-win_amd64.whl
    2597a366dcd724acb10f10501cd82a7a42f20ee8ee8f7971087ea899e3c9fc62

⚠️ ropesim informs judgement — it is for education and planning, never a substitute for testing, redundancy, and experience at the crag.