Sienna-Platform / Sienna-Platform/PowerOperationsModels.jl

Support intra-horizon topology changes

Open
#228 0 comments 0 reactions 1 assignee View on GitHub

@m-bossart is already working on this.

Since Aug 7, 2026.

Dominant language
Julia
Stars
2
Forks
1
Avg merge
1d 16h
Merged PRs (30d)
26

Description

Today a component is either in the model for the entire horizon or absent
entirely. There is no way to represent a line going out of service midway
through the day.

Current state

  • Availability is a build-time boolean (get_available_componentsIS.get_available).
  • NetworkModel.network_matrix is a single matrix for the whole horizon.
  • DCP ohm law uses a constant b for every t; PTDF uses one column per branch for every t.
  • PSY outage attributes (PlannedOutage, FixedForcedOutage) exist but POM never reads them.

Note that driving a BranchRatingTimeSeriesParameter to zero does not emulate an
outage — impedance is unchanged, so the line still carries flow in the PTDF/ohm law.

Proposed approach (exogenous, known outage schedule)

  • Resolve PSY outage attributes into a per-timestep availability mask.
  • DCP: skip the NetworkFlowConstraint row and the branch's ActivePowerBalance
    contribution on outaged steps.
  • PTDF: reuse the MODF machinery from the security-constrained path. modf_matrix[arc, spec]
    already returns a full injection→flow row against the same injection variables, and
    VirtualMODF shares the VirtualPTDF factorization, so states are Woodbury updates
    rather than new PTDF builds.

Known gaps

  • MODF expressions are currently built only for monitored arcs; base-case coverage needs
    every rated branch × state. Each (arc, state) is a serialized KLU solve — needs benchmarking.
  • The outaged branch itself needs its flow zeroed and rating constraint dropped.
  • Islanding: MODF handles it at the matrix level (is_islanding, bus_island_labels), but
    the power balance does not — subnetworks is one partition applied to all t. Affects DCP equally.
  • Outage registration currently skips silently on failure and falls back to the unmodified
    PTDF row. Acceptable for SC monitoring; on this path it would silently solve the intact
    network and must become a hard error.
  • Dual/LMP path not yet traced for single-matrix assumptions.

Out of scope

Endogenous topology (optimal transmission switching) — needs branch binaries and a
disjunctive ohm law, and is structurally incompatible with PTDF.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.