ORNL / ORNL/GridKit

Multiple Monitor Sinks + Remove monitor field from case

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

Nobody has claimed this yet.

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

Description

Summary

Ability to make a monitor in the *.solver.json and collect component monitor data based on some regular expression

Rationale

Having the monitors defined in the *.case.json is not intuitive and really difficult to use. Having a wildcard/regex in the .solver.json and beign able to colelct output into different files is what we need.

Description
{
    "system_model_file": "../../../../cases/PhasorDynamics/wecc.case.json",
    "dt_monitor": 0.004166666666666667,
    "tmax": 10.0,
    "events": [
        { "time": 1.0, "type": "fault_on", "element_id": 0 },
        { "time": 1.15, "type": "fault_off", "element_id": 0 }
    ],
    "monitors": [
        {
            "file_name": "wecc.omega.csv",
            "include": "Genrou_*_omega",
            "reference_file": "wecc.omega.ref.csv",
            "error_type": "relative",
            "error_tolerance": 1e-2,
            "abs_err_threshold": 1e-6
        },
        {
            "file_name": "wecc.vmag.csv",
            "include": "Bus_*_Vm",
            "reference_file": "wecc.vmag.ref.csv",
            "error_type": "relative",
            "error_tolerance": 1e-2,
            "abs_err_threshold": 1e-6
        },
        {
            "file_name": "wecc.p.csv",
            "include": "Genrou_*_p",
            "reference_file": "wecc.p.ref.csv",
            "error_type": "relative",
            "error_tolerance": 1e-2,
            "abs_err_threshold": 1e-6
        },
        {
            "file_name": "wecc.q.csv",
            "include": "Genrou_*_q",
            "reference_file": "wecc.q.ref.csv",
            "error_type": "relative",
            "error_tolerance": 1e-2,
            "abs_err_threshold": 1e-6
        }
    ]
}
Additional information

@PhilipFackler I liked your vision for this

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 by locating the code that reads monitors from *.case.json and the solver configuration parser. Use the example monitors array in the issue to trace how component data is selected and written to separate files, then verify that the case-level monitor field is no longer required.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.