Skip to content

Component Manifests for public ComponentLibrary - #615

Draft
lukelowry wants to merge 2 commits into
developfrom
lukel/model-schema-dev
Draft

lukelowry wants to merge 2 commits into
developfrom
lukel/model-schema-dev

Conversation

@lukelowry

@lukelowry lukelowry commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds a MANIFEST to component data: the units, symbol and description of every parameter, port and monitor, declared in each model's *Data.hpp beside the enums it describes. ComponentLibrary lists the models that have one, so applications can query GridKit models without a priori information.

Closes #482.

@pelesh @superwhiskers

Proposed changes

  • ComponentManifest holds the units, symbol and description of a component's parameters, buses, inputs, outputs and monitors.
  • IEEET1 and GENROU declare a MANIFEST in their *Data.hpp. The build fails if any enum value is left undescribed.
  • ComponentLibrary lists the models that have a manifest.
  • Unit tests in ComponentManifestTests.

For example, the IEEET1 inputs:

for (const auto& input : Exciter::Ieeet1Data<double, size_t>::MANIFEST.inputs)
{
  std::cout << input.name() << ": " << input.description << '\n';
}
speed: Machine speed deviation
vref: Voltage-control reference
vs: Stabilizer input signal
vuel: Under-excitation limiter input
voel: Over-excitation limiter input

Checklist

  • All tests pass.
  • Code compiles cleanly with flags -Wall -Wpedantic -Wconversion -Wextra.
  • The new code follows GridKit™ style guidelines.
  • There are unit tests for the new code.
  • The new code is documented.
  • The feature branch is rebased with respect to the target branch.
  • The CHANGELOG.md has been updated to reflect the changes.

Further comments

  • Only IEEET1 and GENROU have manifests here. The remaining models follow in a separate PR.
  • The parser and SystemModel are unchanged. ComponentLibrary lists model types so the system composer can construct through it later.

@lukelowry lukelowry added the enhancement New feature or request label Oct 11, 2026
@lukelowry lukelowry self-assigned this Oct 11, 2026
@pelesh
pelesh marked this pull request as draft October 13, 2026 20:13
@pelesh

pelesh commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

I think this needs more discussion. I am setting this to draft until we decide how to proceed. Having said that, this PR is very helpful and a good suggestion. More discussion in #482 is needed.

@pelesh pelesh added question Further information is requested help wanted Extra attention is needed labels Oct 13, 2026
@lukelowry
lukelowry force-pushed the lukel/model-schema-dev branch from 807fc28 to 3b32152 Compare October 13, 2026 22:04
@superwhiskers

Copy link
Copy Markdown
Collaborator

based on my current read of this, i think that it duplicates too much from ComponentData. i'd prefer the two be merged rather than having two separate classes

@lukelowry
lukelowry force-pushed the lukel/model-schema-dev branch 2 times, most recently from 960d257 to d6ec743 Compare October 21, 2026 04:31
@lukelowry lukelowry changed the title Add ComponentDefinition + Public model registry API Component Manifests for public ComponentLibrary Oct 21, 2026
@lukelowry

lukelowry commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator Author

@superwhiskers @pelesh Give this another look, it is much better.

This moves us toward simpler input format parser, SystemModel composition, and feasibly be used to construct a JSON schema, aswell.

@lukelowry
lukelowry force-pushed the lukel/model-schema-dev branch from d6ec743 to 58ddf45 Compare October 22, 2026 16:59
@read-the-docs-community

read-the-docs-community Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 GridKit | 🛠️ Build #35332810 | 📁 Comparing 374d12e against latest (c9a6497)

  🔍 Preview build  

36 files changed · + 9 added · ± 25 modified · - 2 deleted

+ Added

± Modified

- Deleted

@lukelowry
lukelowry force-pushed the lukel/model-schema-dev branch from 58ddf45 to 374d12e Compare October 22, 2026 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request help wanted Extra attention is needed question Further information is requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JSON Schema for Model Spec & Case Formats

3 participants