Expand description
MG-RAVENS JSON import and export for the multiconductor
MulticonductorNetwork.
MG-RAVENS (https://github.com/lanl-ansi/MG-RAVENS, Apache-2.0) is the
LANL/Triad microgrid data schema: one JSON document of name-keyed hash
tables nested under the CIM class hierarchy, with Ravens.cimObjectType
naming each object’s concrete class and Class::'name' strings pointing
between tables. Values are SI (volts, watts, ohms, meters) and radians.
This is the multiconductor sibling of the balanced MG-RAVENS support in
the powerio-tx crate: that reader takes the MATPOWER-derived transmission
profile and refuses documents with per-phase detail; this one takes the
OpenDSS-derived distribution profile — ACLineSegmentPhase,
EnergyConsumerPhase, PerLengthPhaseImpedance matrices,
TransformerTank ends with catalog TransformerEndInfo records,
EnergySource Thevenin sources — and refuses the balanced profile’s
markers, pointing back. Because it lands in MulticonductorNetwork, a
RAVENS feeder converts to OpenDSS .dss, PowerModelsDistribution
ENGINEERING JSON, BMOPF JSON, and distribution CIM through the same
DistTargetFormat machinery as every other
distribution source, and any of those convert into RAVENS.
The writer emits deterministic UUID-shaped mRIDs derived from class and
name (imported mRIDs pass through the ravens_mrid extras), so write,
read, write is byte stable; a parse retains its source on the module for
the byte-exact echo tier.
The reader’s findings use the READ.RAVENS_DIST.* codes and the writer’s the
EMIT.RAVENS_DIST.* codes of crate::diagnostics. The vocabulary the two
profiles share (the profile markers, deterministic mRIDs, and the phase
kinds) is powerio_core::cim; the balanced profile is read and written
by powerio-tx, and powerio-tnd routes a document to its profile.
§Phase convention
CIM SinglePhaseKind/PhaseCode letters map to the wire-coordinate
terminal names (OpenDSS node numbers) the rest of the crate uses:
A→1, B→2, C→3, N→4, and the split-phase secondary codes
s1/s2→1/2.