Conversation
Carry IREG, RMPCT, the signed transformer CONT with CR/CX, the two-terminal DC commutating bus and tap transformer references, the VSC REMOT/RMPCT and the FACTS and switched shunt remote buses through the PowerModels dictionary into the OpenAPI writers. Generators, converters, FACTS devices and switched shunts get a nullable remote_regulated_bus_id, and generators get voltage_setpoint in per unit on the regulated bus base. Devices that share a regulated bus become members of one ReactivePowerSharing group per bus, weighted by RMPCT/100; a device alone on its bus gets no group. Transformer circuits get regulated_bus_id, regulated_bus_side derived from the CONT sign when the bus lies off the arc, and load_drop_compensation scaled to the circuit base. LCC lines reference their commutating buses and tap transformers by id. Two synthetic fixtures (v33 and v35) exercise every record, and the generator builders stage the required enum fields before the voltage setpoint so the shadow instance the unit conversion needs can be built.
A reservoir hydro unit maps to HydroTurbine but is created as a HydroDispatch, so the member lookup under the mapped name failed on every case with hydro generation. The generator makers now hand back the component they created and the member takes its type and id from it.
Asking a model type for a discriminated property's unit raises by design, and the staging code caught that exception on every set_value! to fall back to a shadow instance. The answer never changes for a (type, property) pair, so it is now remembered; on platforms where recording a backtrace is slow this cuts the Eastern Interconnect document build from minutes to seconds.
Real cases name a converter tap transformer that the TRANSFORMER data holds as three-winding or not at all. The line is still valid, so the reference is reported and left unset instead of failing the import.
… hold A generator, shunt, FACTS device or converter can name an IREG-style bus the parser dropped as isolated or that never existed. The reference is reported and the device regulates its own bus, which is also what PSS/E does, and its sharing-group membership follows the bus it actually regulates.
CR and CX go to load_drop_compensation_r and load_drop_compensation_x, the schema's split of the transformer circuit's compensation impedance.
This was referenced Sep 28, 2026
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remote and shared voltage control
Writes the PSS/E remote and shared voltage control data to the OpenAPI document instead of dropping it or leaving it in
ext.What changes
remote_regulated_bus_idfrom IREG/REMOT/FCREG/SWREG.voltage_setpoint(VS) in per unit on the regulated bus base.ReactivePowerSharinggroup per bus, weighted by RMPCT/100. A device alone on its bus gets no group.regulated_bus_id,regulated_bus_sidefrom the sign of CONT (UNDEFINEDwhen the bus is an arc end) andload_drop_compensation_r/_xfrom CR/CX.Breaking
REMOT_FROM/TOandRMPCT_FROM/TOonvscline,IREGon legacy generators andRMPCTon v34 and v35 FACTS devices move out ofextinto first-class keys of the PowerModels dictionary.Verification
Full suite: 2823 pass, rebased on
psy6(2026-09-28).Stack
Merge in this order.
The Julia branches pin each other's
mb/remote-controlbranches in[sources], and each pin moves back tomainorpsy6as its dependency merges.Depends on: Sienna-Platform/PowerOpenAPIModels#28.
This branch writes the fields Sienna-Platform/PowerSystems.jl#1819 reads, and that PR's round-trip tests exercise it.
🤖 Generated with Claude Code