Skip to main content

Module dc

Module dc 

Source
Expand description

Real-valued DC network model and Newton-Raphson solver.

A DC network has no angle and no reactive power — only a voltage magnitude and a real power/current balance at each node — so this is deliberately not built on crate::types::Bus/crate::types::Line: reusing those would drag in dead fields (voltage_ang, q_spec, q_min/q_max) and make AC-only machinery (BusType::PV Q-limit switching, the complex Y-bus) nonsensically reachable for a DC bus.

Used for CGMES HVDC subsystems: a DcBus per DCTopologicalNode, a DcLine per resistive DC branch (DCLineSegment, a switch/breaker stamped as a near-zero resistance, etc.). These networks are small (a single HVDC link’s switchyard fixture tops out around a dozen nodes), so solve_dc_network uses a plain dense Newton-Raphson solve with Gaussian elimination rather than pulling in solver.rs’s sparse-LU machinery, which exists to scale to real AC networks with thousands of buses.

Structs§

DcBus
DcLine
A resistive two-terminal DC branch: DCLineSegment, DCSeriesDevice, or a switch/breaker/disconnector stamped as a near-zero resistance.
DcSolveStatus

Enums§

DcBusRole
What fixes a DC bus’s voltage/current/power, mirroring the CGMES pPccControl/ACDCConverter/DCGround semantics that produce each role.

Functions§

injected_currents
The net current injected into the network at each bus (S[i] above), computed from buses’ current (typically post-solve) voltages — the per-bus DC current Idc, in the same units as DcLine::r/DcBus::voltage combine to produce (kA, given resistance in Ω and voltage in kV). Used by CGMES conversion to translate a solved DC bus’s state back into a converter’s own AC-side power via its loss curve.
solve_dc_network
Solves a small resistive DC network for the unknown bus voltages, given each bus’s role (fixed voltage, fixed power, fixed current, or passive).