Metadata-Version: 2.4
Name: STEM-Vibrations
Version: 1.4.0
Summary: STEM model
Home-page: https://github.com/StemVibrations/STEM
Author: STEM team
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: numpy>=2.0.2
Requires-Dist: scipy>=1.13.1
Requires-Dist: plotly>=5.24.1
Requires-Dist: gmsh_utils==1.2
Requires-Dist: random_fields==1.0.1
Requires-Dist: StemKratos==1.4.0
Requires-Dist: UVEC==1.1.4
Provides-Extra: testing
Requires-Dist: pytest==7.4.2; extra == "testing"
Requires-Dist: pytest-cov>=6.0; extra == "testing"
Requires-Dist: tox>=4.23; extra == "testing"
Requires-Dist: mypy>=1.13; extra == "testing"
Requires-Dist: pre-commit==3.6.2; extra == "testing"
Requires-Dist: yapf==0.43.0; extra == "testing"
Requires-Dist: flake8==7.0.0; extra == "testing"
Requires-Dist: beautifulsoup4>=4.12; extra == "testing"
Requires-Dist: matplotlib>=3.9.3; extra == "testing"
Provides-Extra: docs
Requires-Dist: Sphinx==7.4.7; extra == "docs"
Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex==2.6.3; extra == "docs"
Dynamic: license-file

```
     _______..___________. _______ .___  ___.
    /       ||           ||   ____||   \/   |
   |   (----``---|  |----`|  |__   |  \  /  |
    \   \        |  |     |   __|  |  |\/|  |
.----)   |       |  |     |  |____ |  |  |  |
|_______/        |__|     |_______||__|  |__|

```

# STEM: Soil and Track System Modelling Tool
![Tests](https://github.com/StemVibrations/STEM/actions/workflows/tests.yml/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/stemvibrations/badge/?version=latest)](https://stemvibrations.readthedocs.io/)
[![codecov](https://codecov.io/gh/stemvibrations/stem/graph/badge.svg?token=0DMYCZF4BU)](https://codecov.io/gh/stemvibrations/stem)
[![PyPI version](https://img.shields.io/pypi/v/STEM-Vibrations.svg)](https://pypi.org/project/STEM-Vibrations/)
[![Python versions](https://img.shields.io/pypi/pyversions/STEM-Vibrations.svg)](https://pypi.org/project/STEM-Vibrations/)
[![License](https://img.shields.io/pypi/l/STEM-Vibrations.svg)](https://pypi.org/project/STEM-Vibrations/)

STEM is an open-source finite element model for computing railway-induced vibrations and evaluating the effectiveness of mitigation measures.
It simulates the train–track interaction and the propagation of vibrations through the subsurface, taking into account track irregularities, the type of train and train speed, and the spatial variability of the track and soil properties.
STEM is powered by [Kratos Multiphysics](https://github.com/KratosMultiphysics/Kratos).

The tool provides a set of commands for creating the geometry of the model, defining the soil and track properties, setting the boundary conditions and loads, generating the mesh, and performing post-processing on the results.

## Features
- Parametric geometry, meshing, and model generation for 2D (plane strain) and 3D soil–track systems
- Beam, triangular, and tetrahedral element support (linear and quadratic order)
- Train–track interaction via a user-defined vehicle model (UVEC), including rail irregularities and dipped rail joints
- Linear elastic soil models, with non-linear models available through the UMAT API definition
- Point, line, surface, and moving loads
- Dirichlet, Neumann, and absorbing (Lysmer) boundary conditions
- Implicit and explicit time integration, dynamic analysis, quasi-static analyses, and multi-stage simulations
- Post-processing and output to JSON and VTK for visualisation in ParaView

## Requirements
- Python 3.10, 3.11, or 3.12
- [ParaView](https://www.paraview.org/) (to visualise results)
- [Git](https://git-scm.com/)

## Installation
STEM can be downloaded and installed on any system that supports Python.
It is recommended to install STEM inside a Python virtual environment. To install the latest stable release, run:

```bash
pip install STEM-Vibrations
```

Further details, including the development and editable (developer) installs, can be found in the [installation guide](https://stemvibrations.readthedocs.io/main/installation.html#).

## Usage
To get started, refer to the [tutorials](https://stemvibrations.readthedocs.io/main/#tutorials), which build up from basic usage to more advanced features.
For the theory and numerical methods behind the model, see the [formulation documentation](https://stemvibrations.readthedocs.io/main/formulation.html).

## Benchmarks
STEM is validated against analytical solutions. The automatically generated benchmark report is available as a PDF [here](https://github.com/StemVibrations/STEM/releases/download/pdf-latest/benchmark_report.pdf).
In addition to these analytical benchmarks, STEM contains a set of benchmarks and unit tests that run automatically
on every commit to the repository.

## Contributing
Contributions are welcome. Please refer to the [contribution guidelines](https://stemvibrations.readthedocs.io/main/contributions.html).

## Authors
See the full list of [authors and contributors](https://stemvibrations.readthedocs.io/main/authors.html).

## License
This project is licensed under the BSD 3-Clause License - see the [LICENSE](LICENSE) file for details.
