ORNL / ORNL/GridKit

Enable `Branch` to receive voltage and send current over signals

Open
#546 3 comments 0 reactions 1 assignee View on GitHub

@PhilipFackler is already working on this.

Since Aug 20, 2026.

enhancement
Dominant language
C++
Stars
27
Forks
11
Avg merge
3d 8h
Merged PRs (30d)
23

Description

Summary

We need a way to communicate voltage and current between a branch and something other than a bus.

Rationale

For co-simulation we want to communicate voltage and current between two instances of GridKit over a "network". Presently, the Branch class reads/writes these directly as owned by a BusBase, so we need to devise an alternate means of access.

Description

The "best" way to do this is somewhat open-ended. Here are my ideas (in no particular order):

  • A new type (inherits from BusBase) that would substitute for one of the buses on the branch
    • implementation of Branch does not change
    • new class enables external access through signal nodes
  • A new branch type (inherits from Component) that uses signals instead of buses
    • "true" bus would be connected through BusToSignalAdapter
    • duplicates Branch behavior
  • Modify existing Branch type to be able to use signals
    • Add some logic to prioritize using signals if they are connected. If not, use the bus pointer as before.

In all of these cases the external communication is happening (from the system's perspective) through signal nodes. This is reflecting my expectation of the design the co-simulation will develop into...in which *.case.json files will remain useful as they are now (declaring signals that can be used externally) and adding (either in the case file or a new co-simulation configuration file) the ability to specify which signals are used for network communication.

Additional information

No response

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.