#[non_exhaustive]pub enum BranchSusceptanceFormula {
ReactanceOnly,
TapAdjustedReactance,
SeriesSusceptance,
}Expand description
Rule for the DC branch susceptance b.
The public b follows PowerModels: it is negative for an inductive
branch, the imaginary part of the series admittance the selected formula
models. The positive edge weight a sparse factorization uses is its
negation, calc_solver_edge_weight.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ReactanceOnly
b = -1/x, ignoring resistance, transformer taps, and phase shifts.
The textbook DC linearization, which a paper reproducing a published result needs exactly as written.
TapAdjustedReactance
b = -1/(x tau) with phase shift injections, matching MATPOWER
makeBdc up to MATPOWER’s own sign spelling.
SeriesSusceptance
b = imag(inv(r + jx)) = -x/(r² + x²) with phase shift injections.
Reads the whole series impedance, so it describes a branch with a real
r/x ratio. A transformer tap does not scale it, and it reduces to
-1/x when the resistance is zero. This is PowerModels’ DC branch
susceptance exactly.
Implementations§
Source§impl BranchSusceptanceFormula
impl BranchSusceptanceFormula
Sourcepub fn calc_branch_susceptance(
self,
resistance: f64,
reactance: f64,
effective_tap: f64,
) -> f64
pub fn calc_branch_susceptance( self, resistance: f64, reactance: f64, effective_tap: f64, ) -> f64
The public branch susceptance, in PowerModels signs: the imaginary
part of the series admittance the selected formula models, negative
for an inductive branch. Only Self::TapAdjustedReactance reads the
tap, and only Self::SeriesSusceptance reads the resistance; a
value the selected formula never reads cannot reject a branch.
Non-finite in, non-finite out. The reciprocal rules need the guard
because 1/±inf is a finite 0.0: a branch Y_bus rejects outright
would otherwise join the DC system as a zero-weight edge with nothing
to report it.
Sourcepub fn calc_solver_edge_weight(
self,
resistance: f64,
reactance: f64,
effective_tap: f64,
) -> f64
pub fn calc_solver_edge_weight( self, resistance: f64, reactance: f64, effective_tap: f64, ) -> f64
The internal positive factor weight of the same branch: the edge
weight of the positive semidefinite DC Laplacian a sparse Cholesky
solver factors, which is the negation of
calc_branch_susceptance. Public results carry
PowerModels signs; a solver path fills its factor from this weight and
converts sign only while writing a caller’s output.
Sourcepub fn reads_tap(self) -> bool
pub fn reads_tap(self) -> bool
Whether the selected formula reads the transformer tap, and so whether the tap can bound or reject a branch.
Sourcepub fn includes_phase_shifts(self) -> bool
pub fn includes_phase_shifts(self) -> bool
Whether phase shifts contribute to the nodal injection vector.
Sourcepub fn formula_name(self) -> &'static str
pub fn formula_name(self) -> &'static str
The formula’s stable cross language name.
Sourcepub fn from_formula_name(name: &str) -> Option<BranchSusceptanceFormula>
pub fn from_formula_name(name: &str) -> Option<BranchSusceptanceFormula>
The formula for one stable name, or None for an unknown name.
Trait Implementations§
Source§impl Clone for BranchSusceptanceFormula
impl Clone for BranchSusceptanceFormula
Source§fn clone(&self) -> BranchSusceptanceFormula
fn clone(&self) -> BranchSusceptanceFormula
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BranchSusceptanceFormula
Source§impl Debug for BranchSusceptanceFormula
impl Debug for BranchSusceptanceFormula
Source§impl Default for BranchSusceptanceFormula
impl Default for BranchSusceptanceFormula
Source§fn default() -> BranchSusceptanceFormula
fn default() -> BranchSusceptanceFormula
Source§impl<'de> Deserialize<'de> for BranchSusceptanceFormula
impl<'de> Deserialize<'de> for BranchSusceptanceFormula
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BranchSusceptanceFormula, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BranchSusceptanceFormula, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for BranchSusceptanceFormula
Source§impl PartialEq for BranchSusceptanceFormula
impl PartialEq for BranchSusceptanceFormula
Source§fn eq(&self, other: &BranchSusceptanceFormula) -> bool
fn eq(&self, other: &BranchSusceptanceFormula) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for BranchSusceptanceFormula
impl Serialize for BranchSusceptanceFormula
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for BranchSusceptanceFormula
Auto Trait Implementations§
impl Freeze for BranchSusceptanceFormula
impl RefUnwindSafe for BranchSusceptanceFormula
impl Send for BranchSusceptanceFormula
impl Sync for BranchSusceptanceFormula
impl Unpin for BranchSusceptanceFormula
impl UnsafeUnpin for BranchSusceptanceFormula
impl UnwindSafe for BranchSusceptanceFormula
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.