Metadata-Version: 2.4
Name: pyrockfall
Version: 0.1.2
Summary: Open-source vectorised framework for stochastic rockfall simulation
Author-email: Guilherme Barros <guilherme.barros@newcastle.edu.au>
Maintainer-email: Guilherme Barros <guilherme.barros@newcastle.edu.au>
License-Expression: GPL-3.0-only
Project-URL: Homepage, https://gbarros92.github.io/PyRockfall/
Project-URL: Repository, https://github.com/gbarros92/PyRockfall
Project-URL: Issues, https://github.com/gbarros92/PyRockfall/issues
Project-URL: Documentation, https://gbarros92.github.io/PyRockfall/
Keywords: rockfall,geomechanics,simulation,stochastic,monte-carlo,vectorised,open-pit,rockfall-hazard
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: GIS
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Requires-Dist: pandas>=1.5
Requires-Dist: matplotlib>=3.7
Requires-Dist: seaborn>=0.13
Requires-Dist: scikit-learn>=1.2
Requires-Dist: plyfile>=0.9
Requires-Dist: open3d>=0.17
Requires-Dist: tensorflow>=2.20
Requires-Dist: xgboost>=3.2
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ipdb; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: rich; extra == "dev"
Dynamic: license-file

<p align="center">
  <img src="https://raw.githubusercontent.com/gbarros92/PyRockfall/main/docs/source/_static/logo.png" alt="PyRockfall logo" width="200">
</p>

# PyRockfall

[![Tests](https://github.com/gbarros92/PyRockfall/actions/workflows/tests.yml/badge.svg)](https://github.com/gbarros92/PyRockfall/actions/workflows/tests.yml)

**PyRockfall** is an open-source Python package for stochastic rockfall simulation. It runs **vectorised Monte Carlo rockfall simulations** on user-defined or 3D-extracted 2D profiles, as well as directly on 3D models, for rockfall hazard assessment and mitigation design.

Rather than simulating Monte Carlo realisations sequentially, PyRockfall represents the ensemble using NumPy arrays and advances all samples simultaneously through vectorised operations. This enables efficient probabilistic analysis of rockfall trajectories and associated engineering design quantities.

## Key Features

- **Vectorised Monte Carlo simulation**  
  Rockfall samples are propagated simultaneously using vectorised numerical operations rather than sample-by-sample Python loops.

- **2D rockfall simulation**  
  Run deterministic or stochastic simulations on user-defined slope profiles.

- **2D simulation from 3D geometry**  
  Extract representative 2D sections from 3D rock-face models and use them for rockfall simulation.

- **3D rockfall simulation**  
  Simulate rockfall trajectories directly on three-dimensional slope geometries.

- **Spatially varying materials**  
  Represent slopes containing multiple geological or surface materials with different rock-slope interaction properties.

- **Probabilistic material properties**  
  Sample uncertain interaction parameters for Monte Carlo analysis.

- **Engineering-oriented outputs**  
  Evaluate quantities relevant to rockfall hazard assessment and mitigation design, including kinetic energy, impact locations, and run-out distances.

- **Result visualisation**  
  Analyse simulation outputs and map calculated quantities onto the original slope geometry.

- **Open-source Python implementation**  
  Designed to support reproducible research, extension of the numerical framework, and integration into other rockfall-analysis workflows.

## Installation

Install PyRockfall from PyPI:

```bash
pip install pyrockfall
```

See the [documentation](https://gbarros92.github.io/PyRockfall/) for full
installation instructions, worked [examples](https://gbarros92.github.io/PyRockfall/examples.html),
and the [manual](https://gbarros92.github.io/PyRockfall/manual.html).
