pub struct DcSolution {
pub islands: Vec<DcIslandReport>,
pub branch_p: Vec<f64>,
pub max_residual: f64,
pub negative_reactance_branches: Vec<usize>,
pub ignored_branches: Vec<usize>,
}Expand description
The result of a DC solve. Bus angles are written back into the buses
slice; everything that has nowhere to live on a Bus is here.
Fields§
§islands: Vec<DcIslandReport>§branch_p: Vec<f64>Active power entering each branch at its from terminal, per-unit,
indexed by the flat branch index (lines then transformers) — never
by position in dc_branches’s output. Branches that carry no DC
flow hold 0.0.
Sign convention matches
branch_flow::terminal_flow:
positive means power entering the branch at from. DC is lossless, so
the to-terminal flow is always exactly the negation.
max_residual: f64max |Σ(flows out of i) − P_i| over every solved non-slack bus.
A factorization-quality check, not a convergence check — there is
nothing to converge. On a healthy network this is round-off, ~1e-15.
A large value means B was ill-conditioned, which on gridoxide data
most often means clamped zero-impedance branches (see
topology::ZERO_IMPEDANCE_THRESHOLD).
negative_reactance_branches: Vec<usize>Flat indices of branches with a negative susceptance — series
capacitors. Legitimate and kept, but they make B indefinite, so they
are reported rather than passed over in silence.
ignored_branches: Vec<usize>Flat indices of branches that contributed nothing: self-loops
(gridoxide’s half-open representation), transformers with an open
terminal, and any branch whose susceptance came out non-finite (a
purely resistive branch under
DcApproximation::IgnoreR).
Trait Implementations§
Source§impl Clone for DcSolution
impl Clone for DcSolution
Auto Trait Implementations§
impl Freeze for DcSolution
impl RefUnwindSafe for DcSolution
impl Send for DcSolution
impl Sync for DcSolution
impl Unpin for DcSolution
impl UnsafeUnpin for DcSolution
impl UnwindSafe for DcSolution
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more