Skip to content

Extend resource-specific functionality for geographic transmission #49

Description

@espenbodal

Description

This issue implements resource-specific extension functionality for EnergyModelsGeography, following the pattern established in EnergyModelsBase (see EnergyModelsBase#61).

Motivation

Building on the resource-extension framework in EMB, this feature enables EnergyModelsGeography users to define custom resource types with geography-specific variables and coupling constraints. This allows modeling of resource-specific properties (e.g., potential power, temperature in district heating, pressure/composition in gas networks) that degrade or transform during transmission across areas.

Feature Overview

  • New methods: variables_flow_resource and constraints_couple_resource for transmission modes and areas
  • Use case: Track multi-attribute resources (e.g., potential, temperature, pressure) alongside standard flows
  • Coupling: Enforce area-level mass balance with transmission-level resource tracking

Related Issues & Topics

  • Related to: EnergyModelsBase#61 (resource-extension framework)
  • Development branch: enhance/complex_resource_flow

Documentation

Comprehensive how-to guide added at docs/src/how-to/extend-resource-functionality.md with concrete PotentialPower example demonstrating:

  1. Custom resource type definition
  2. Resource-specific variable creation
  3. Transmission mode constraint implementation
  4. Area-to-transmission coupling constraints

Tests

Reference implementation and comprehensive tests in test/test_resource_flow.jl including:

  • PotentialPower resource definition and mode implementation
  • Variable verification and constraint satisfaction checks
  • Integration tests with full optimization

Example Applications

The extension pattern is useful for modeling:

  • Power flow (reactive power, voltages, voltage angles etc.)
  • District heating networks (temperature tracking)
  • Natural gas networks (pressure and gas mixture composition)
  • Any carrier with quality degradation or state attributes

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions