pub struct YBus { /* private fields */ }Expand description
A mutable Y-bus under construction: a COO (triplet) accumulator. Entries
at the same (row, col) are summed once finalized via finish() — this
gives the same accumulation semantics as the old dense ybus[(i,j)] += val, including for parallel branches between the same two buses (e.g.
symmetric/distribution-case’s two parallel transformers).
Implementations§
Source§impl YBus
impl YBus
pub fn new(n: usize) -> Self
pub fn add(&mut self, i: usize, j: usize, val: Complex<f64>)
Sourcepub fn into_entries(self) -> Vec<(usize, usize, Complex<f64>)>
pub fn into_entries(self) -> Vec<(usize, usize, Complex<f64>)>
The raw, unconsolidated COO triplets, for callers that need to modify the matrix by column before solving.
finish is the normal exit and gives a row-major
structure (YBusSparse::row) that cannot serve a column-wise
rewrite. shortcircuit needs exactly that: a bolted fault zeroes the
faulted bus’s whole column, which is a filter over these triplets.
Zeroing a column means removing its entries, not adding a
compensating one. Duplicate (row, col) triplets are summed, both
here in finish and in sparse::solve_complex’s own
try_new_from_triplets, so an added negative would cancel only the
entries it was computed against and silently leave anything else.
Sourcepub fn finish(self) -> YBusSparse
pub fn finish(self) -> YBusSparse
Consolidates the accumulated triplets into the frozen, sparse form
used for the actual power-flow solve. Call once all build_ybus*/
stamp_* contributions have been added.
Auto Trait Implementations§
impl Freeze for YBus
impl RefUnwindSafe for YBus
impl Send for YBus
impl Sync for YBus
impl Unpin for YBus
impl UnsafeUnpin for YBus
impl UnwindSafe for YBus
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> 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