Updated: 06/25/2025
This repository contains code for a spatially lumped model used to estimate the erosion of forest roads.
This spatially lumped model for estimating forest road erosion uses a tri-layered conceptualization (Figure 1) to demonstrate the vertical sediment exchange among layers of a road cross section and incorporates two of four traffic-induced, erosion-enhancing processes discussed in Alvis et al. (2023): pumping (Figure 2) and crushing (Figure 3).
The spatially lumped model also incorporates water-driven sediment transport to model the erosion process itself. The domain of the spatially lumped model is a 1-meter by 4.5-meter section within a larger road segment, where every meter-long section is assumed to have the same characteristics such that sediment production in one section can be extrapolated to every other section and summed to obtain the total sediment yield.
![]() |
|---|
| Figure 4. Schematic of spatially lumped modeling domain within an 80-m by 9-m experimental road segment. |
Alvis, A. D., Luce, C. H., & Istanbulluoglu, E. (2023). How does traffic affect erosion of unpaved forest roads? Environmental Reviews, 31(1), 182–194. https://doi.org/10.1139/er-2022-0032
This folder contains four scripts used to format and plot input data for scripts in rlm_model_runs.
dailyTimestep.pyis a script that groups rainfall data by day.- Input Raw rainfall data in a Pandas-readable format.
- Output Pandas dataframe of rainfall data grouped by day.
Emmett1970Data_script.pyis a script used to plot data from two different experiments discussed in Emmett (1970).- Input: Flow (q) and Manning's n data for two experiments in a Pandas-readable format.
- Output: Clean plots showing the relationship between q and n for two scenarios.
groupStorms_script.pyis a script used to group rainfall data by storm.- Input: Raw rainfall data in a Pandas-readable format and a user-defined minimum threshold of time between storms.
- Output: Pandas dataframe of rainfall data grouped by storm.
pullRainfall.pyis a script used to pull rainfall data from rain gages near field sites using the Mesonet API. Note that the Mesonet API is now known as the Synoptic Data API and is not free to use. This script is kept here for completeness.- Input: Station ID.
- Output: Raw rainfall data in a Pandas-readable format.
This folder contains one script used to run the lumped road erosion model and a Jupyter notebook tutorial. Additionally includes an archive folder with old pieces of code that are out-of-date but are kept for record-keeping, as well as a figs folder with figures used for illustration in the tutorial.
rlm_daily_time_step.pyestimates the erosion of forest roads using rainfall data pulled from the Mesonet API and stochastically generated truck passes.- Input: Output from
dailyTimestep.py. - Output: Plots of road layer depths vs. time and erosion vs. time.
- Input: Output from
rlm_tutorial.ipynbestimates the erosion of forest roads using rainfall data pulled from the Mesonet API and stochastically generated truck passes in a tutorial format.- Input: Output from
dailyTimestep.py. - Output: Plots of road layer depths vs. time and erosion vs. time.
- Input: Output from

