ORNL / ORNL/GridKit

Co-simulation should manually drive solver steps

Open
#545 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Summary

Manually take each simulation step in co-simulation app(s) rather than using the step callback.

Rationale

In the initial implementation of a co-simulation example (#537), the client side uses the step_callback in the interface to Ida::runSimulation to trigger network exchanges. This is already a problem since we want to remove the step callback parameter altogether. Also, we want to manually drive the solver steps so that we can synchronize time step size between the two instances in the co-simulation.

Description

Don't call runSimulation. Instead, drive the simulation by manually taking each step on both client and server side between data exchanges.

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.

Research direction

Start with the co-simulation example from #537 and inspect how the client and server use Ida::runSimulation and its step_callback to trigger network exchanges. The work is complete when both sides manually drive each solver step between data exchanges without calling runSimulation or relying on step_callback.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
distributed-systems
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.