pub struct DcPfOptions {
pub headroom_slack_bus_indices: Option<Vec<usize>>,
pub participation_factors: Option<Vec<(usize, f64)>>,
pub angle_reference: AngleReference,
pub external_p_injections_mw: Vec<(u32, f64)>,
}Expand description
Options controlling the DC power flow solve.
All fields are optional – pass DcPfOptions::default() for the classic
single-slack behavior.
Fields§
§headroom_slack_bus_indices: Option<Vec<usize>>Buses participating in headroom-limited slack balancing.
When Some, the total power imbalance is redistributed among the listed
buses in proportion to available generator headroom at those buses.
When None (default), the classic single-bus slack formulation is used.
participation_factors: Option<Vec<(usize, f64)>>Participation-factor slack weights: (internal_bus_index, weight).
When Some, the total power imbalance is redistributed among the
listed buses in proportion to their weights (normalized internally to
sum to 1.0). This is the RTO-style distributed slack model where
weights typically come from generator AGC participation factors
aggregated by bus.
Takes precedence over headroom_slack_bus_indices when both are set.
angle_reference: AngleReferenceOutput angle reference convention for reported theta.
This affects only the returned bus angles. It does not affect branch flows, slack redistribution, or the DC power balance itself.
external_p_injections_mw: Vec<(u32, f64)>External real-power injections added to the DC power flow RHS.
Each entry is (bus_number, p_mw) where bus_number is the external
bus number (matching Bus::number) and p_mw is the injection in MW
(positive = generation / injection into AC network, negative = load /
withdrawal from AC network).
Use this to pass pre-computed MTDC converter injections, external schedules, or any other bus-level P corrections that should be folded into the DC power flow injection vector.
Implementations§
Source§impl DcPfOptions
impl DcPfOptions
Sourcepub fn with_headroom_slack(participating_bus_indices: &[usize]) -> Self
pub fn with_headroom_slack(participating_bus_indices: &[usize]) -> Self
Build options with headroom-limited slack balancing on the listed buses.
Indices are internal (0-based array position in Network::buses),
not external bus numbers.
Sourcepub fn with_participation_factors(weights: &[(usize, f64)]) -> Self
pub fn with_participation_factors(weights: &[(usize, f64)]) -> Self
Build options with explicit participation-factor slack weights.
Each entry is (internal_bus_index, weight). Weights are normalized
internally. Zero and negative weights are ignored.
Sourcepub fn with_network_participation(network: &Network) -> Self
pub fn with_network_participation(network: &Network) -> Self
Build options using AGC participation factors from the network’s generators.
Aggregates Generator::agc_participation_factor by bus, producing
the standard RTO-style distributed slack model. Falls back to
single-slack if no generators have participation factors set.
Sourcepub fn with_angle_reference(self, angle_reference: AngleReference) -> Self
pub fn with_angle_reference(self, angle_reference: AngleReference) -> Self
Set the output angle reference convention.
Trait Implementations§
Source§impl Clone for DcPfOptions
impl Clone for DcPfOptions
Source§fn clone(&self) -> DcPfOptions
fn clone(&self) -> DcPfOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DcPfOptions
impl Debug for DcPfOptions
Source§impl Default for DcPfOptions
impl Default for DcPfOptions
Source§fn default() -> DcPfOptions
fn default() -> DcPfOptions
Auto Trait Implementations§
impl Freeze for DcPfOptions
impl RefUnwindSafe for DcPfOptions
impl Send for DcPfOptions
impl Sync for DcPfOptions
impl Unpin for DcPfOptions
impl UnsafeUnpin for DcPfOptions
impl UnwindSafe for DcPfOptions
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
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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