ORNL / ORNL/GridKit

Thoughts on how to design a generalized co-simulation

Open
#547 1 comment 0 reactions 1 assignee View on GitHub

@PhilipFackler is already working on this.

Since Aug 20, 2026.

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

Description

The path toward a general co-simulation application diverges (after #546) depending on how often we want to synchronize: just at every time step OR at every call to evaluateResidual. In either case, I would recommend resurrecting the "IOPorts" PR (#481).

  • Every residual: Extend the "IOPorts" implementation to make ports configurable...enabling the zmq exchange to be triggered at the moment signals are read from ports.
  • Every step
    • Add a modified version of ConstantSignalSource that would interface with zmq to update its (no-longer-constant) values.
    • Use "IOPorts" as-is/was to enable a more natural means of access from outside the system (no new component needed). This would make the most sense from the application perspective because the application input file could simply specify which signals to assign to the network.

I'll add that in either of the "IOPorts" scenarios the co-simulation "manager" could be set up to exchange all necessary variables in one send/recv.

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.