Distribution networks
OpenDSS, PMD JSON, and BMOPF sources parse into a MulticonductorNetwork: buses with named terminals, lines with per length impedance matrices, transformers with windings, loads and generators with per terminal powers.
feeder = parse("IEEE13Nodeckt.dss") # PioModule{MulticonductorNetwork}
net = feeder.value
net.name
net.base_frequency # 60.0
net.source_format # "dss"
net.buses # Elements{MulticonductorBus}
net.line_codes # Elements{MulticonductorLineCode}
net.lines
net.switches
net.transformers
net.loads
net.generators
net.ibrs # inverter based resources
net.control_profiles
net.shunts
net.capacitors
net.voltage_sources
net.untyped_objects # source objects kept without a typed slot
net.commands # retained source commands (solve, ...)
net.options # name => value pairslc = net.line_codes[1]
lc.resistance # conductor_count square, ohm per metre
lc.reactance
lc.susceptance_from + lc.susceptance_to # siemens per metre
line = net.lines[1]
line.bus_from, line.terminals_from # "650", ["1", "2", "3"]
line.line_code, line.length_m
load = net.loads[1]
load.terminals # phases and neutral
load.active_power_nominal_w # one entry per phase
load.voltage_model # "constant_power", ...Units are SI (volts, watts, vars, metres, ohms, siemens), and terminal maps are vectors of terminal names in the order the source lists them.
Writing
emit writes the same three formats. If you read a module from OpenDSS and change nothing, writing it as "dss" gives you the original .dss files back; PMD JSON and BMOPF are canonical output, with diagnostics for whatever the target format cannot represent.
emit(feeder, "dss", "copy.dss")
emit(feeder, "pmd").text
emit(feeder, "bmopf").text
emit(feeder, "bmopf-json@0.1.0").text
emit(feeder, "bmopf-json@0.2.0").textOpenDSS, PMD JSON, and BMOPF are grid exchange formats: other tools read and write them, and they enter PowerIO through parse and leave through emit. PowerIO IR, written by serialize and read by deserialize, is PowerIO's own serialization of a module, diagnostics and history included, for handing a module to another PowerIO consumer. It is not an exchange format, and no other tool reads it.
BMOPF 0.2.0 output follows draft BMOPF 0.2, subject to Task Force review. Its metadata identifies the immutable schema and producer provenance. Explicit schema-version selection converts the typed value even when its source is BMOPF. Fields outside the 0.1.0 schema move to extras, with relocation diagnostics.
Bus phase_to_ground_voltage_min_v and phase_to_ground_voltage_max_v contain unequal phase limits in volts. Their entries follow bus terminal order, excluding neutral and earth terminals. Uniform limits use voltage_min_v and voltage_max_v. These values survive PowerIO IR serialization and typed access after the module that supplied the network leaves scope.
Calculations
to_mc_ac_pf_instance and to_mc_ac_opf_instance construct multiconductor power flow and optimal power flow instances from a network module. The multiconductor admittance matrix is not bound in this release.
PowerIO.MulticonductorNetwork — Type
MulticonductorNetworkA conductor level distribution network. Read the tables through properties: net.buses, net.line_codes, net.lines, net.switches, net.transformers, net.loads, net.generators, net.ibrs, net.control_profiles, net.shunts, net.capacitors, net.voltage_sources, net.untyped_objects, net.commands, net.options. Scalars: net.name, net.base_frequency, net.source_format, net.geo.
PowerIO.MulticonductorBus — Type
MulticonductorBusOne multiconductor bus: its id, terminals, grounded_terminals, and the voltage limits the source states (volts). Phase vectors follow terminal order with neutral and earth terminals excluded. Scalar bounds apply uniformly.
PowerIO.MulticonductorLineCode — Type
MulticonductorLineCodePer length impedance of a line: the resistance, reactance, and terminal conductance_from, susceptance_from, conductance_to, susceptance_to matrices (ohm per metre and siemens per metre, conductor_count square), the per conductor limits, and the source the code came from.
PowerIO.MulticonductorLine — Type
MulticonductorLineOne line from bus_from to bus_to with its terminal maps, line_code, length_m, optional route, and per conductor limits.
PowerIO.MulticonductorSwitch — Type
MulticonductorSwitchOne switch between bus_from and bus_to; open is its state.
PowerIO.MulticonductorTransformer — Type
MulticonductorTransformerOne transformer: its windings, the pairwise short_circuit_reactance_percent values, and phase_count.
PowerIO.MulticonductorTransformerWinding — Type
MulticonductorTransformerWindingOne winding: its bus, terminals, connection (wye or delta), ratings, resistance_percent, tap, and neutral impedance when grounded through one.
PowerIO.MulticonductorLoad — Type
MulticonductorLoadOne load: configuration, per terminal nominal powers, the voltage_model name, and the per terminal ZIP and exponential coefficients.
PowerIO.MulticonductorGenerator — Type
MulticonductorGeneratorOne generator with per terminal nominal powers, optional limits, dispatch cost, and apparent power and current limits.
PowerIO.InverterBasedResource — Type
InverterBasedResourceOne inverter based resource: topology, prime_mover, limits, available active power, and the control_profile it follows.
PowerIO.ControlProfile — Type
ControlProfileOne inverter control profile: a fixed power_factor, a volt_var curve, a volt_watt curve, or a combination.
PowerIO.VoltVarControl — Type
VoltVarControlVolt-var curve of a control profile.
PowerIO.VoltWattControl — Type
VoltWattControlVolt-watt curve of a control profile.
PowerIO.MulticonductorShunt — Type
MulticonductorShuntOne shunt with its conductance and susceptance matrices (siemens).
PowerIO.MulticonductorCapacitor — Type
MulticonductorCapacitorOne rated capacitor bank.
PowerIO.VoltageSource — Type
VoltageSourceOne ideal voltage source with per terminal magnitude (volts), angle (radians), and optional per-phase energy cost rates (dollars/kWh).
PowerIO.UntypedObject — Type
UntypedObjectOne source object retained without a typed PowerIO representation: its class_name, name, and properties as name => value pairs (a positional property has nothing as its name).
PowerIO.SourceCommand — Type
SourceCommand(verb, args)One retained source command, such as an OpenDSS solve line.
Source energy prices from draft BMOPF 0.2 are available as net.voltage_sources[i].energy_cost_rate_per_kwh. The optional vector follows phase order in the source terminal map, excluding neutral terminals. Its unit is $/kWh. The prices survive PowerIO IR serialization; using them in an objective remains the responsibility of the selected calculation.