pub struct ConstrainedSolution {
pub stats: SolveStats,
pub flows: Vec<(f64, f64)>,
pub indeterminate: Vec<usize>,
}Expand description
The outcome of a constrained solve.
Fields§
§stats: SolveStats§flows: Vec<(f64, f64)>Per switch, the flow (P, Q) leaving its from end, in per unit.
Exactly zero for an open switch, and for every switch named in
indeterminate.
indeterminate: Vec<usize>Switches whose flow the network does not determine, so this pinned it to zero to keep the system nonsingular.
Three ways in, all reported the same way because the caller’s question is the same one — is this number physical?:
- A loop of closed switches.
θ_i = θ_jaround a cycle is one redundant equation, and the flows around it are one free parameter.Regularizehides this by resolving the split with its own stiffness; there is no more information there than here. - A self-loop, both ends on one bus. Nothing to tie.
- Both ends fixed — two
Slackbuses, or twoPVbuses for the reactive half. The constraint is vacuous and the flow is absorbed by whatever holds those buses.
The reactive half can be indeterminate while the active half is not (a
switch between two PV buses), in which case the switch appears here and
its Q is zero while its P is real. See ConstrainedSolution::flows.
Trait Implementations§
Source§impl Clone for ConstrainedSolution
impl Clone for ConstrainedSolution
Auto Trait Implementations§
impl Freeze for ConstrainedSolution
impl RefUnwindSafe for ConstrainedSolution
impl Send for ConstrainedSolution
impl Sync for ConstrainedSolution
impl Unpin for ConstrainedSolution
impl UnsafeUnpin for ConstrainedSolution
impl UnwindSafe for ConstrainedSolution
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
Mutably borrows from an owned value. Read more
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> ⓘ
Converts
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> ⓘ
Converts
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