GitHunt
JO

josiearcuri/PermafrostBankErosionModel

This is a tool for modeling river bank erosion in permafrost environments

PermafrostBankErosionModel

Author: Josie Arcuri
Date: November 2025

PermafrostBankErosionModel is a Python-based simulation tool for modeling riverbank erosion in permafrost-dominated environments, where thermal and mechanical processes interact seasonally. The model simulates river bank ablation and collapse under fluvial and thermal forcing.

Table of Contents


Features

  • Simulates thermal ablation and mechanical collapse of permafrost banks
  • Uses realistic forcing from boundary condition time series
  • Supports customizable input parameters for regional permafrost river characteristics
  • Outputs time-averaged annual erosion rates and bank profile object

Installation

Clone the repository and install the required dependencies:

git clone https://github.com/josiearcuri/PermafrostBankErosionModel.git

cd PermafrostBankErosionModel

Option 1: Using pip

Install Python dependencies directly:

pip install -r requirements.txt

Option 2: Using conda

conda env create -f environment.yml
conda activate permafrostbankerosionmodel


Input Files

The model requires two inputs:

Parameter dictionary (params) with keys:

"run_duration" (in seconds)

"dt" (timestep in seconds)

"dz" (vertical resolution in meters)

"icepercent" (volumetric ice content in percent)

"gravelz" ( in meters)

"surface_d84" (84th percentile grain diameter of gravel on the bank toe in meters)

"bank_d50" (median grain size of inorganic particles in bank material in meters)

"bedslope" (river bed slope in m/m)

"bankheight" (bank height in meters)

"iceon" (day of year freezing starts)

"IWspacing" (ice wedge spacing in m)

"ablationmodel" (currently supports 'bank')

Boundary condition dataframe (bcdf) in pandas.DataFrame format with the following columns:

't_s': time in seconds

'Qw_m3s': water discharge (m³/s)

'H_m': stage height (m)

'Tw_C': water temperature (°C)

'Ta_C': air temperature (°C)

Other datasets that are used as input can be found in the data folder and are:

Mfile1.csv

  • 2023 Meteorological data from the Canning River, AK collected with instruments maintained by Frank Urban.

Mfile2.csv

  • 2023 Meteorological data from Deadhorse, AK made available by the Permafrost Laboratory Geophysical Institute (Deadhorse, 70.1613,-148.4653), available from www.permafrostwatch.org

dmddischarge.csv

  • 2009 daily mean discharge from the Canning River above Staines River near Deadhorse station (15955000, 69.8817, -146.3887) (US Geological Survey, 2023).

Running the Model

from src import permafrostbankerosionmodel as pbem
import pandas as pd

Define parameters

params = {
    "run_duration": 60 * 60 *24 * 365 * 3,  # 3 years in seconds
    "dt": 86400,                      # daily timestep (seconds)
    "dz": 0.05,                       # vertical resolution (m)
    "icepercent": 50,                 # volumetric ice content of bank material in %
    "gravelz": 0.3,                   # elevation of the uppermost surface of the bank toe above the river bed (m)
    "surface_d84": 0.064,             # 84th percentile grain diameter of the clasts on bank toes (m)
    "bank_d50": 0.01,                 # 50th percentile grain diameter of the inorganic sediment in bank soil (m)
    "bedslope": 0.003,                # river bed slope (m/m)
    "bankheight": 2.0,                # river bank surface height above the river bed (m)
    "iceon": 300,                     # end of the open water season (julian day)
    "IWspacing": 10,                  # distance between ice wedge center, or troughs in the floodplain (m)
}

Load boundary condition data

bcdataframe = pd.read_csv("inputs/example_boundary_conditions.csv")

Initialize and run model

model = pbem.PermafrostBankErosionModel(params, bcdataframe)
model.run()

Get erosion results

mean_annual_erosion_rate = model.get_erosion()
print("Mean annual erosion rate (m/year):", mean_annual_erosion_rate)

Output

default_finalprofile: Bank profile at the end of the simulation. this is a 1-d array of horizantal distance from x = 0.
results: Model inputs and outputs in a data table


Dependencies

numpy
matplotlib
pandas
sphinx
sphinx-autodoc-typehints
furo


License

GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 (GPLv3)


Acknowledgments

Developed by Josie Arcuri (2025). For questions or collaboration inquiries, please contact [Josephine.Arcuri@colorado.edu].


josiearcuri/PermafrostBankErosionModel | GitHunt