Skip to main content

API

Probabilistic Grid Reliability Analysis with Energy Storage Systems (ProGRESS)

Current release version: v2.0.1

Release date: 09/25/2026

Table of Contents

Introduction

Probabilistic Grid Reliability Analysis with Energy Storage Systems (ProGRESS) is an open-source, Python-based software tool for assessing the resource adequacy of modern electric power systems with high penetrations of energy storage systems (ESS), variable energy resources (VER), and emerging large loads such as AI data centers. ProGRESS employs a Markov Chain Monte Carlo (MCMC) stochastic simulation engine to generate thousands of diverse operating scenarios that capture the uncertainty and variability of future power systems.

The tool includes detailed, state-of-the-art ESS models that represent charge-discharge behavior, state-of-charge (SOC) evolution, failures, repairs, and technology-specific degradation mechanisms, enabling realistic assessment of storage availability and performance over time. Multiple ESS operating modes are supported, including reliability mode, economic dispatch mode, and market participation mode through integration with the QuESt PCM tool, allowing users to evaluate storage performance under a variety of operational strategies.

ProGRESS also models the uncertainty associated with VERs by incorporating historical weather-driven generation data, enabling users to simulate thousands of diverse generation scenarios that reflect realistic operating conditions. Users can build custom power system models, download and integrate historical VER datasets through supported APIs, and perform comprehensive probabilistic reliability analyses. The software quantifies expected outage frequency, duration, and magnitude using industry-standard reliability metrics while also providing detailed reliability assessments at the individual bus level, enabling users to identify localized reliability risks and evaluate the impact of storage and generation resources across the network.

By combining advanced stochastic simulation, detailed component modeling, and flexible ESS operating strategies, ProGRESS enables planners, researchers, and system operators to evaluate reliability tradeoffs, assess the value of energy storage, and make informed decisions for the planning and operation of future electric grids.

Back to Top

Key Features of ProGRESS

  • Probabilistic resource-adequacy assessment: Uses sequential Monte Carlo simulation to model stochastic failures and repairs of generators, transmission lines, and energy-storage systems. It calculates reliability metrics including LOLP, LOLH, LOLE, LOLF, EUE, EPNS, and mean outage duration.

  • Comprehensive energy-storage modeling: Represents ESS charge/discharge behavior, state of charge, efficiency, operating limits, duration, component availability, failures, and repairs. It supports single-period reliability operation and multi-period economic dispatch, as well as chemistry-specific degradation models for LMO, LFP, NMC, and NCA batteries. Degradation can account for depth of discharge, state of charge, C-rate, cycling, and temperature using an optional PyBaMM thermal model.

  • Flexible power-system and optimization models: Supports copper-sheet, zonal, and nodal network representations, enabling users to balance computational speed and transmission detail. Configurable optimization horizons support both reliability-focused operation and multi- period dispatch considering generation costs, renewable curtailment, storage scheduling, and load shedding.

  • Variable generation and uncertainty modeling: Accepts user-provided variable generation data or downloads ERA5 meteorological data through the Copernicus Climate Data Store. Solar generation is calculated using pvlib and modeled stochastically with k-means clustering and month-specific probabilities. Wind generation uses configurable turbine power curves and transition-rate matrices.

  • Data-center load modeling: Incorporates data-center demand into resource-adequacy studies using user-provided collections of load profiles. ProGRESS randomly selects a profile for each Monte Carlo sample, adds it to matching system load buses, and can aggregate bus- level data-center demand into zone-level profiles for zonal studies.

  • Production-cost-model integration: Integrates with QuESt PCM for detailed nodal day-ahead unit commitment and economic dispatch, including generator and transmission outages, renewable availability, storage constraints, ancillary services, and optional pricing calculations.

  • Detailed results and visualization: Generates per-sample records for load curtailment, generator dispatch, transmission flows, ESS state of charge, and ESS capacity. Aggregate outputs include reliability indices, convergence plots, outage heat maps, and bus- level outage frequency and magnitude rankings. A built-in results browser can be used to preview CSV, Excel, PDF, PNG, text, JSON, and HTML results.

  • Accessible and scalable workflows: Provides a desktop GUI for data preparation, validation, simulation configuration, execution, logging, and results review. Simulations can also run from the command line or across multiple MPI processes on high-performance computing systems.

  • Customizable and reproducible open-source platform: Uses documented CSV schemas for custom grid, load, storage, solar, and wind datasets, with an RTS-GMLC example included. Its modular Python architecture supports research extensions, while timestamped result directories and saved configuration snapshots make runs easier to reproduce.

Back to Top

Getting started

Manual Installation Instructions

Prerequisites

  • Python (>= 3.11) installed on your system
  • Git installed on your system

Installing Python

  1. Installers can be found at: https://www.python.org/downloads/release/python-3119/
  2. Make sure to check the box "Add Python to PATH" at the bottom of the installer prompt.

Installing Git

  • Visit git-scm.com to download Git for your operating system.
  • Follow the installation instructions provided on the website.

Setting Up a Virtual Environment

  1. Open Command Prompt on Windows or Terminal on macOS and Linux.
  2. Install virtualenv (if not already installed):
    python -m pip install virtualenv
    
  3. Create a virtual environment:
    cd <your_path>
    python -m virtualenv <env_name>
    
    Replace <your_path> with the path to the folder where you want to create the virtual environment.
  4. Activate the virtual environment:
    • On Windows:
      cd <your_path>
      .\<env_name>\Scripts\activate
      
    • On macOS/Linux:
      source <env_name>/bin/activate
      

Installing ProGRESS

Install from PyPI:

pip install snl-progress

Install from source (for developers/contributors):

  1. Clone the Repository:

    git clone https://github.com/sandialabs/snl-progress.git
    
  2. Navigate to the snl_progress Directory:

    cd <path_to_snl-progress>
    
  3. Install Dependencies:

    python -m pip install -r requirements.txt
    

Solver Installation

Ensure an optimization solver is installed on your machine. Solvers to consider include:

Open-source Solvers

Commercial Solvers

Back to Top

Sample Case Study

A test case is included with this tool. The test system is the IEEE RTS-GMLC, which is a modernized version of the IEEE RTS-96. A zonal model of the test system is illustrated as follows:

RTS

All test system data provided with the tool has been taken from the RTS-GMLC GitHub repository.

Learn More

For detailed documentation on data preparation, simulation workflows, and advanced features, visit the ProGRESS Wiki:

  • Data Requirements — Directory structure, CSV schemas, and file formats for system, solar, and wind data.
  • Workflow — Step-by-step guides for the GUI, command-line, and HPC workflows.
  • Additional Features — Battery degradation, PCM integration, and multi-period optimization.

Citing ProGRESS

If you use ProGRESS in your research, please cite the following paper:

A. Bera, C. J. Newlun, A. Lopez, Y. -J. Pomeroy, T. Nguyen and R. Byrne, "Probabilistic Grid Reliability Analysis with Energy Storage System (ProGRESS): An Open-Source Tool for Assessing the Reliability of Power Systems," 2025 IEEE Electrical Energy Storage Applications and Technologies Conference (EESAT), Charlotte, NC, USA, 2025, pp. 1-5, doi: 10.1109/EESAT62935.2025.10891214.

Bibtex Entry:

@inproceedings{bera2025probabilistic,
title={Probabilistic Grid Reliability Analysis with Energy Storage System (ProGRESS): An Open-Source Tool for Assessing the Reliability of Power Systems},
author={Bera, Atri and Newlun, Cody J and Lopez, Andres and Pomeroy, Yung-Jai and Nguyen, Tu and Byrne, Ray},
booktitle={2025 IEEE Electrical Energy Storage Applications and Technologies Conference (EESAT)},
pages={1--5},
year={2025},
organization={IEEE}
}

Acknowledgment

The ProGRESS tool is developed and maintained by the Energy Storage Analytics Group at Sandia National Laboratories. This material is based upon work supported by the U.S. Department of Energy, Office of Electricity (OE), Energy Storage Division.

Project team:

  • Atri Bera
  • Dilip Pandit
  • Eriel Cabrera
  • Andres Lopez
  • Yung-Jai Pomeroy
  • Cody Newlun
  • Tu Nguyen
SNL DOE

Back to Top

Contact

For reporting bugs and other issues, please use the "Issues" feature of this repository. For more information regarding the tool and collaboration opportunities, please contact project developer: Atri Bera (abera@sandia.gov)

Release files for snl-progress 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snl-progress 2.0.1
File Size Uploaded
snl_progress-2.0.1.tar.gz 19.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for snl-progress 2.0.1
File Interpreter ABI Platform
snl_progress-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 38.2 MB

Release files / snl_progress-2.0.1.tar.gz

Download URL snl_progress-2.0.1.tar.gz
Size 19.0 MB
Tags Source
SHA-256 checksum
How to use checksums
56fe1527a5cf9ed88b917da93def9fd8af91e6d3ae67602cad4772d3e8170289
BLAKE2b-256 checksum
How to use checksums
0f9b7bbd1678f3038662317ffc41e9937f59dd7da0cc57472235f3cb3a3e5faa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / snl_progress-2.0.1-py3-none-any.whl

Download URL snl_progress-2.0.1-py3-none-any.whl
Size 19.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
27911fe3f961cd0afaff8eee8d5a6445f7d31e2b8b3b7dd3e4f8054401b9a890
BLAKE2b-256 checksum
How to use checksums
5a1d9172b033fc828de2bdb51c9a5ce4b5a9e07e8fbad47135315a339366bbd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

2.0.0

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page