Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Electrical readiness before analysis

Parsing, preservation and numerical readiness are separate results. powerio_dist::audit_electrical_readiness reports structural blockers and source defaults. require_electrical_readiness rejects the first blocker. Multiconductor calculation-instance constructors and admittance assembly call that check before numerical use.

OpenDSS line geometry

PowerIO does not calculate conductor impedances from OpenDSS geometry, spacing, wires, cncables or tscables. The reader retains a line using any of these properties as an untyped source object and reports READ.DSS.GEOMETRY_UNRESOLVED with error severity. It creates neither a typed line nor a synthetic linecode or terminal map for that object. This also applies when geometry properties and an explicit linecode occur together.

The original, unmodified source module can still emit its exact source bytes. IR retains the untyped object, but canonical OpenDSS, PMD and BMOPF conversion reject unresolved geometry because they cannot reconstruct its electrical meaning. Retain the source module or provide explicit conductor impedances before requesting those conversions. Numerical calculations reject both these untyped records and geometry-dependent typed lines from earlier IR documents.

This intentionally rejects calculations and canonical conversions that could otherwise use incomplete electrical data. It does not implement Carson’s equations or infer conductor count from a phase count. Explicit linecode data without geometry-dependent properties remains eligible when the remaining checks pass.

Distribution CIM segments without impedance

A CIM ACLineSegment whose impedance the reader cannot read, for example one described only by wire spacing and wire data, parses with a zero placeholder line code and an error finding, READ.CIM_DIST.IMPEDANCE_UNRESOLVED. The audit blocks it as READINESS.CIM_DIST.IMPEDANCE_UNRESOLVED, because the placeholder would be a short circuit between its buses. Numerical calculations and conversion to another format reject it, as they reject an OpenDSS geometry line, and a same format write of a single source document still returns its bytes.

Other structural checks

The audit checks source-specific identifier equality, unresolved line endpoints and linecodes, terminal references, line lengths, conductor counts, matrix shapes and finite matrix entries. It reports source defaults as warnings.

let readiness = powerio_dist::audit_electrical_readiness(network);
for finding in readiness.findings {
    eprintln!("{} {}: {}", finding.code, finding.element, finding.message);
}
powerio_dist::require_electrical_readiness(network)?;

A passing audit establishes only these structural properties. The selected calculation still checks its support for transformer connections, controls, loads and other required physics. PowerIO preserves data that a particular calculation may not support.