Skip to content

Repository files navigation

Extreme Load Effect Projection for Culvert Structures

Probabilistic modeling and extreme-value analysis of traffic-induced bending moments in reinforced concrete culverts using Monte Carlo simulation and statistical tail fitting.

Python Jupyter Notebook NumPy SciPy License: MIT

This project demonstrates how structural engineering problems can be solved using computational modeling, statistical inference, and scientific programming in Python.

The repository combines civil infrastructure reliability analysis with data-driven statistical modeling techniques.


Project Overview

Infrastructure such as culverts and bridges is subjected to highly variable traffic loads. While most vehicles produce moderate loads, rare heavy axle loads control structural safety.

This project models random axle loads from traffic data and estimates the mean maximum bending moment over a multi-year period using extreme-value theory.

The workflow includes:

  1. Modeling axle load distributions
  2. Generating bending-moment samples via Monte Carlo simulation
  3. Constructing a load spectrum using a normal probability plot
  4. Fitting the upper tail of the distribution
  5. Projecting extreme load effects over a long reference period

The analysis estimates the mean maximum bending moment over 5 years, assuming an average daily truck traffic (ADTT) of 5000.

The final estimate obtained from the provided dataset is approximately:

Mean maximum bending moment over 5 years ≈ 16.18 kip-ft


Key Result — Load Spectrum

The load spectrum is a normal probability plot of the bending-moment samples. The upper 5% of the data is fitted with a straight line in normal-probability space; this linear fit is what drives the extreme-value projection. The fit is excellent (r² ≈ 0.996), reproducing Figure 1 of the problem statement.

Load spectrum with 5% tail fit


Repository Structure

traffic-load-extreme-value-analysis/
├── main.ipynb            # Main notebook: load simulation (a) and extreme-value projection (b)
├── moment_samples.npz    # Provided bending-moment samples (key: "moment_smps", 10,000 values)
├── ProblemStatement.pdf  # Original problem statement and background
├── figures/              # Figures generated by the notebook
├── requirements.txt      # Python dependencies
├── CITATION.cff          # Citation metadata
├── LICENSE               # MIT License
└── README.md             # Project documentation

Getting Started

Requirements

  • Python 3.9+
  • NumPy, SciPy, Matplotlib, Jupyter

Installation

git clone https://github.com/samirhosein/traffic-load-extreme-value-analysis.git
cd traffic-load-extreme-value-analysis
pip install -r requirements.txt

Usage

jupyter notebook main.ipynb

Run the cells from top to bottom. In part (a) the notebook prompts you to choose the axle-load distribution model (lognormal, truncated lognormal, or Weibull); part (b) then loads the provided samples in moment_samples.npz and performs the extreme-value projection.


Methodology

Step 1: Probabilistic Load Modeling

Three probability models are tested for axle loads:

  • Lognormal distribution
  • Truncated lognormal distribution (limited by the legal axle-load limit)
  • Weibull distribution

The Weibull distribution is estimated by solving for its shape and scale parameters using numerical root finding (scipy.optimize.brentq) so that the generated samples match the observed mean and standard deviation.

Step 2: Monte Carlo Simulation

Random axle loads are generated according to the selected probability model, split between single and tandem axles by their observed frequencies. Loads are converted to bending moments using the design-axle scaling factors from the influence-line analysis (single axle: 32 kips → 8.5142 kip-ft; tandem: 50 kips → 10.4275 kip-ft). The resulting bending moments are combined into a simulated load spectrum.

Simulated bending-moment histogram

Step 3: Load Spectrum Construction

The bending moments are used to build:

  • a histogram of load effects,
  • an empirical cumulative distribution function (CDF),
  • a normal probability plot (the load spectrum).

Histogram of provided bending-moment samples

Step 4: Tail Modeling

The upper 5% of the data is extracted and fitted with linear regression in normal-probability space. This provides estimates of the event-level mean and standard deviation of the extreme load effects.

Upper 5% tail linear fit

Step 5: Extreme Value Projection

Using extreme-value theory (Gumbel approximation), the maximum load effect over a multi-year reference period is estimated. The number of loading events is:

N = ADTT × 365 × years

Results (provided dataset, part b)

Quantity Value
Provided bending-moment samples 10,000
Upper-5% tail linear fit r² ≈ 0.996
Event-level mean, μ 5.15 kip-ft
Event-level standard deviation, σ 2.08 kip-ft
Number of events over 5 years (ADTT = 5000) 9,125,000
Gumbel mode, u_N 15.97 kip-ft
Gumbel scale, α_N 2.72
Mean maximum bending moment over 5 years 16.18 kip-ft

References

  • FHWA, 2003. Normal Probability Paper — Simple Methods for Evaluating the Normality of a Set of Data. Federal Highway Administration. Link
  • Sivakumar, B., Ghosn, M., Moses, F., 2011. NCHRP Report 683 (Project 12-76): Protocols for Collecting and Using Traffic Data in Bridge Design. National Cooperative Highway Research Program, Washington, DC. (Statistical projection: pp. 23–24.)

Citation

If you use this project or its results, please cite it using the metadata in CITATION.cff, or:

Moayyedi, A. Extreme Load Effect Projection for Culvert Structures. https://github.com/samirhosein/traffic-load-extreme-value-analysis


License

This project is licensed under the MIT License — see the LICENSE file for details.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages