pub enum DcIslandStatus {
Solved,
SolvedMultipleReferences,
Singular,
NoReferenceBus,
}Expand description
How one connected component’s DC solve turned out.
Deliberately not solver::IslandStatus.
A direct solve has no iterations, so that enum’s MaxIterationsReached
is unrepresentable here — and two of its cases genuinely come out better
in DC, which a shared type could not express:
IslandStatus::Singulardocuments that it cannot attribute a singular factorization to one component, because the AC path solves every component in one shared system. DC factorizes each island separately (the LU of a block-diagonal matrix is the sum of the block LUs, so this costs nothing), and so can name the island that failed.IslandStatus::AmbiguousReferenceBusexists because two independently fixed complex voltages over-determine an AC island. DC fixes only angles, so the same island stays perfectly well posed — seeSolvedMultipleReferences.
Variants§
Solved
Reduced B factorized; this island’s angles satisfy its equations.
SolvedMultipleReferences
Two or more Slack buses, and solved anyway. Every non-slack bus’s
injection is still met exactly — only the split of slack pickup
among the references is arbitrary, since DC pins their angles
independently and lets each supply whatever its own incident branches
demand. The per-island slack_pickup total is still meaningful; the
individual references’ shares are not.
Singular
The reduced B was singular, so this island’s angles were left
untouched and its branch flows are zero. Attributable to exactly this
island, unlike the AC path’s best-effort equivalent.
NoReferenceBus
No Slack bus, so there is no angle reference and nothing to solve
against. Pinned to θ = 0 by
network::mark_unreferenced_islands, which never
fabricates a reference.
Trait Implementations§
Source§impl Clone for DcIslandStatus
impl Clone for DcIslandStatus
impl Copy for DcIslandStatus
Source§impl Debug for DcIslandStatus
impl Debug for DcIslandStatus
impl Eq for DcIslandStatus
Source§impl PartialEq for DcIslandStatus
impl PartialEq for DcIslandStatus
impl StructuralPartialEq for DcIslandStatus
Auto Trait Implementations§
impl Freeze for DcIslandStatus
impl RefUnwindSafe for DcIslandStatus
impl Send for DcIslandStatus
impl Sync for DcIslandStatus
impl Unpin for DcIslandStatus
impl UnsafeUnpin for DcIslandStatus
impl UnwindSafe for DcIslandStatus
Blanket Implementations§
impl<T> Boilerplate for T
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