STEM: Open-Source Railway Vibration Prediction Tool
Introduction
As urbanization accelerates, buildings increasingly encroach upon railway corridors, amplifying resident complaints about ground-borne vibrations. Engineers face a critical challenge: how to accurately predict railway-induced vibrations before construction and evaluate the effectiveness of mitigation measures?
STEM (Spoor Trillingen Emissie Model, Dutch for Railway Vibration Emission Model) addresses this challenge. Developed collaboratively by ProRail, Deltares, TNO, and TU Delft, STEM is an open-source Python tool that simulates vibration transmission from train wheels through track structures into layered soil.
| Feature | Benefit |
|---|---|
| Open Source | No licensing costs; full transparency for research |
| Python-Based | Easy scripting; integrates with scientific Python stack |
| Kratos Backend | Production-ready FEM solver with parallel computing |
| Purpose-Built | Pre-configured workflows for railway vibration analysis |
Key Capabilities
- Track Irregularities: Model measured or statistical rail unevenness profiles
- Vehicle Dynamics: Configure train types, axle loads, and speeds
- Layered Soil: Handle heterogeneous stratigraphy with varying properties
- Mitigation Assessment: Evaluate elastic pads, floating slabs, and wave barriers
Installation
STEM requires Python 3.10 or 3.11 (Python 3.12+ not yet fully supported).
Prerequisites: Python 3.10/3.11, ParaView for visualization. See Installation Guide for troubleshooting.
| Resource | Link |
|---|---|
| Documentation | stemvibrations.readthedocs.io |
| GitHub | github.com/StemVibrations/STEM |
| License | BSD 3-Clause |
Tutorial: Moving Load on Embankment
This tutorial follows STEM Tutorial 2 —simulating a moving load on an embankment with layered soil.
Model Overview
The 3D model consists of:
- Two soil layers (each 1 m thick, 5 m wide)
- Trapezoidal embankment (1 m high, 3 m base, 0.75 m top)
- Extrusion: 50 m in $z$-direction
A 10 kN/m line load moves at 30 m/s along the embankment top.
Material Properties
| Layer | $\rho$ (kg/m³) | $E$ (MPa) | $\nu$ | Porosity |
|---|---|---|---|---|
| Soil 1 (bottom) | 2650 | 30 | 0.2 | 0.3 |
| Soil 2 | 2550 | 30 | 0.2 | 0.3 |
| Embankment | 2650 | 10 | 0.2 | 0.3 |
The embankment has lower stiffness ($E = 10$ MPa) than the soil layers ($E = 30$ MPa), representing typical ballast/subgrade material.
Boundary & Solver Settings
Boundary Conditions:
- Base ($y = 0$): Fixed
- Lateral sides: Roller (fixed in $x$ and $z$)
- Top: Free surface
Solver:
- Dynamic analysis with Newmark time integration
- Duration: $t = 1.5$ s, time step: $\Delta t = 0.01$ s
- Rayleigh damping: $\alpha_M = 0.6$, $\alpha_K = 0.0002$
Code Example
tutorial_moving_load.py (click to expand)
| |
Results
Animations of the dynamic soil response (visualized in ParaView):
Displacement
Velocity
Acceleration
Key observations:
- Maximum displacement occurs directly beneath the moving load
- Wave propagation is slower in the softer embankment layer
- Acceleration peaks at material interfaces (relevant for vibration perception)
Extensibility & Applications
Custom Interfaces
| Interface | Purpose |
|---|---|
| UVEC | User-defined vehicle models (suspension, multi-body dynamics) |
| UMAT | User-defined material models (hypoplasticity, nonlinear soil) |
Practical Use Cases
- Environmental compliance: Check vibration levels against SBR-B and other standards
- Mitigation design: Compare under-ballast mats, floating slabs, and trenches
- Parametric studies: Sensitivity analysis on speed, track quality, soil properties
- Maintenance planning: Identify track sections requiring priority intervention
Alternative Software
This simulation can also be performed with general-purpose FEM software:
| Software | Type | Moving Load | Notes |
|---|---|---|---|
| COMSOL | Commercial | Scripted | Excellent multi-physics; custom load functions needed |
| ABAQUS | Commercial | *DLOAD | Industry standard; steep learning curve |
| PLAXIS | Commercial | Limited | Geotechnical focus; better for static/seismic |
| ANSYS | Commercial | APDL/ACT | Comprehensive but complex |
| OpenSees | Open-source | TCL scripts | Earthquake-focused |
Choose STEM for rapid Python prototyping of railway-specific problems without licensing costs. Choose commercial tools when you need multi-physics coupling, complex CAD import, or certified software for regulatory compliance.
Summary
STEM brings railway vibration prediction into the open-source ecosystem. By combining finite element rigor with Python accessibility, it offers engineers a transparent, cost-effective tool for:
- Predicting ground-borne vibrations from train operations
- Evaluating mitigation measures before construction
- Conducting parametric studies and sensitivity analyses
For railway design, environmental assessment, or vibration research, STEM provides a practical alternative to commercial software—with full code transparency and zero licensing costs.