pub struct AreaInterchange { /* private fields */ }Expand description
Drives every area’s net export to its scheduled value, and the slack to its own schedule, by moving the participating generators.
Reports Invalidates::Nothing for the same reason
DistributedSlack does: only p_spec moves, so
bus types, n_unknowns and the Jacobian’s sparsity pattern all hold, and
the solver keeps its symbolic factorization across the whole loop.
Do not configure this alongside DistributedSlack. It subsumes it (see
the module docs), and running both would move the same schedules twice.
Implementations§
Source§impl AreaInterchange
impl AreaInterchange
pub fn new(areas: AreaDefinition) -> Self
pub fn report(&self) -> &AreaInterchangeReport
pub fn into_report(self) -> AreaInterchangeReport
Sourcepub fn measure(
buses: &[Bus],
lines: &[Line],
transformers: &[Transformer],
of_bus: &[Option<usize>],
n_areas: usize,
) -> Vec<f64>
pub fn measure( buses: &[Bus], lines: &[Line], transformers: &[Transformer], of_bus: &[Option<usize>], n_areas: usize, ) -> Vec<f64>
Each area’s net export at the current state, measured at the area’s own side of every boundary branch.
Public because it is useful on its own: “what is this area actually exchanging” is a question worth asking of a solved network without running a control loop over it.
Trait Implementations§
Source§impl Clone for AreaInterchange
impl Clone for AreaInterchange
Source§impl Debug for AreaInterchange
impl Debug for AreaInterchange
Source§impl OuterLoop for AreaInterchange
impl OuterLoop for AreaInterchange
fn name(&self) -> &'static str
Source§fn invalidates(&self) -> Invalidates
fn invalidates(&self) -> Invalidates
OuterLoopStatus::Unstable. Read by the driver, which then resets
or restamps as required. See the module docs.Source§fn initialize(&mut self, ctx: &mut OuterLoopContext<'_, '_>)
fn initialize(&mut self, ctx: &mut OuterLoopContext<'_, '_>)
Source§fn check(&mut self, ctx: &mut OuterLoopContext<'_, '_>) -> OuterLoopStatus
fn check(&mut self, ctx: &mut OuterLoopContext<'_, '_>) -> OuterLoopStatus
Auto Trait Implementations§
impl Freeze for AreaInterchange
impl RefUnwindSafe for AreaInterchange
impl Send for AreaInterchange
impl Sync for AreaInterchange
impl Unpin for AreaInterchange
impl UnsafeUnpin for AreaInterchange
impl UnwindSafe for AreaInterchange
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