Development Background#

Distribution System Analysis Tools#

SHIFT, ERAD, DISCO, PyDSS, EVOLVE, DITTO, EMERGE, (DG)^2, PRECISE, OEDISI, GET-solar, …

  • Software ecosystem predominantly developed in Python

  • Initial developments project-focused

  • Each tool has its own model and interface

  • In most cases, not easy to explore, serialize and share models

Interface requirements#

  • Easy to serialize / deserialize models

  • Handles both static and time-series data

  • Easy to explore

  • Agnostic to energy domain

Infrastructure Systems#

  • Data store for components and associated time series data

  • Built for Python-based modeling packages

  • Stores components in data structures that provide fast lookup and iteration by type and name.

  • Provides extendable data models that enable validation and unit conversion through PINT.

  • Manages time series data efficiently. Manages serialization and de-serialization of components to JSON

  • Automatic handling of nested objects.

The GDM Package#

GDM is a Python package containing data models for distribution system assets and datasets. This package is actively being developed at the National Renewable Energy Laboratory (NREL).

Why Grid Data Models?#

Distribution models typically contain many components, making them difficult to explore and to resolve modeling errors. Developing “one-off” data models for tools leads to code duplicaton and limits code extensibility. Using a single data model for tool development can help. Additionally, GDM has several features can help with the development of distribution modeling tools:

  • Built-in Validation Layer: The use of pydantic allows for the validation of data models.

  • Time Series Data Management: GDM uses the infrasys package, enabling efficient time series data management by sharing arrays across components and offloading system memory. For example, time series power consumption data can be attached to a load profile.

  • Built-in Unit Conversion: GDM leverages pint for unit conversion of power system quantities, such as power, voltage, and time.

  • JSON Serialization/Deserialization: GDM uses infrasys to serialize and deserialize distribution system components to/from JSON.

  • Track System Changes: Supports tracking changes within a distribution model (both temporal and scenario-based static updates), enabling powerful scenario management capabilities.

  • Graph-Based Analysis: Exposes a connectivity graph using NetworkX, allowing advanced graph-based algorithms and visualizations.

  • Model Reduction: Built-in support for multiple model reduction algorithms.

  • Interoperability: GDM is used by several NREL distribution modeling tools, which enables coordinated workflows between tools.

The GDM Ecosystem#

The following tools currently use GDM.

  • Grid-Data-Models: Foundational model for distribution system analysis.

  • Shift: Builds synthetic distribution models and uses the GDM data model.

  • DiTTo: Tool for converting between inputs for different distribution powerflow solvers, using GDM as the interal data model.

  • ERAD: Resilience analysis for distribution systems, using hazard and GDM models as inputs.

  • CADET: Distribution system optimization frameworks.

  • GridAI: Builds training datasets for PyTorch for generative AI applications from GDM base models.

  • DistDB: Distribution asset cost database, currently being built, will map to GDM equipment models.

  • DistLLM: LLM interface for the entire distribution suite ecosystem.

Check out the GDM Ecosystem#

Join our Discord#