Expand description
Multiconductor distribution network models and converters for OpenDSS
.dss, PowerModelsDistribution ENGINEERING
JSON (“PMD JSON”), and the draft JSON schema of the IEEE PES Task Force on
Benchmarking Multiconductor OPF (“BMOPF JSON”,
https://github.com/frederikgeth/bmopf-report).
The model uses wire coordinates: string bus IDs, ordered terminal names,
explicit grounding, terminal maps on every element, SI units, and radians.
The transmission model in powerio is positive sequence and remains a
separate type.
let net = powerio_dist::parse_file("feeder.dss", None)?;
for w in &net.warnings {
eprintln!("parse: {w}");
}
let conv = net.to_format(powerio_dist::DistTargetFormat::PmdJson);§Fidelity rules
Writing to the retained source format returns the original bytes. Cross
format conversion writes from the typed model and reports fields the target
cannot represent in Conversion::warnings. The DSS reader expands OpenDSS
class defaults into explicit model values and records them in
DistNetwork::defaulted. BMOPF output includes those values.
The per fixture results live in docs/conversion-matrix.md.
§Float formatting
Canonical output formats every number as its shortest round trip
representation: Rust’s Display for .dss, serde_json (ryu) for both
JSON formats. The readers parse with serde_json’s float_roundtrip
feature, so a parse of canonical output recovers the exact bit pattern
and canonical writes are idempotent. JSON cannot carry Inf/NaN: the
PMD writer emits null (PMD restores the value from the field name
suffix), and the BMOPF writer emits 0 with a warning, since the schema
requires numbers. The byte exact echo tier is unaffected; it never
reformats.
Re-exports§
pub use bmopf::BMOPF_SCHEMA_ID;pub use bmopf::BMOPF_SCHEMA_VERSION;pub use bmopf::BmopfWriteOptions;pub use bmopf::parse_bmopf_file;pub use bmopf::parse_bmopf_str;pub use bmopf::write_bmopf_json;pub use bmopf::write_bmopf_json_with_options;pub use convert::Conversion;pub use convert::ConversionSidecar;pub use convert::DistTargetFormat;pub use convert::classify_distribution_json;pub use convert::convert_file;pub use convert::convert_str;pub use convert::dist_target_from_name;pub use convert::parse_file;pub use convert::parse_str;pub use diagnostics::DiagnosticCode;pub use diagnostics::DiagnosticSeverity;pub use diagnostics::DiagnosticStage;pub use diagnostics::StructuredDiagnostic;pub use dss::DssLoadVoltageBounds;pub use dss::DssWriteOptions;pub use dss::parse_dss_file;pub use dss::parse_dss_str;pub use dss::write_dss;pub use dss::write_dss_with_options;pub use error::Error;pub use error::Result;pub use geo::Canvas;pub use geo::CoordinateSpace;pub use geo::CoordsKind;pub use geo::GeoMeta;pub use geo::Location;pub use graph::DistGraph;pub use graph::DistGraphAttachment;pub use graph::DistGraphAttachmentKind;pub use graph::DistGraphBus;pub use graph::DistGraphEdge;pub use graph::DistGraphEdgeKind;pub use model::ActivePowerReference;pub use model::ActivePowerUnit;pub use model::Configuration;pub use model::ControlVoltageReference;pub use model::DistBus;pub use model::DistCapacitor;pub use model::DistControlProfile;pub use model::DistGenerator;pub use model::DistIbr;pub use model::DistLine;pub use model::DistLineCode;pub use model::DistLoad;pub use model::DistLoadVoltageModel;pub use model::DistNetwork;pub use model::DistShunt;pub use model::DistSourceFormat;pub use model::DistSwitch;pub use model::DistTransformer;pub use model::Extras;pub use model::IbrPrimeMover;pub use model::IbrTopology;pub use model::IbrVoltageAggregation;pub use model::Mat;pub use model::MulticonductorNetwork;pub use model::PowerFactorControl;pub use model::ReactivePowerReference;pub use model::ReactivePowerUnit;pub use model::UntypedObject;pub use model::VoltVarControl;pub use model::VoltWattControl;pub use model::VoltageSource;pub use model::Winding;pub use model::WindingConn;pub use pmd::parse_pmd_file;pub use pmd::parse_pmd_str;pub use pmd::write_pmd_json;
Modules§
- bmopf
- The draft BMOPF task force JSON schema (frederikgeth/bmopf-report).
- convert
- Cross format conversion output and the format dispatcher.
- diagnostics
- Structured diagnostics for distribution conversions.
- dss
- OpenDSS
.dsssupport: tokenizer, RPN, class tables, raw object layer. - error
- geo
- Typed coordinate metadata for the distribution model.
- graph
- Render ready bus and terminal graph projection.
- model
- The canonical multiconductor network model.
- pmd
- The PowerModelsDistribution ENGINEERING model as JSON (“PMD JSON”).