pub struct PdPerturbationHandler {Show 27 fields
pub delta_xs_max: f64,
pub delta_xs_min: f64,
pub delta_xs_first_inc_fact: f64,
pub delta_xs_inc_fact: f64,
pub delta_xs_dec_fact: f64,
pub delta_xs_init: f64,
pub delta_cd_val: f64,
pub delta_cd_exp: f64,
pub perturb_always_cd: bool,
pub reset_last: bool,
pub degen_iters_max: i32,
pub delta_x_curr: f64,
pub delta_s_curr: f64,
pub delta_c_curr: f64,
pub delta_d_curr: f64,
pub delta_x_last: f64,
pub delta_s_last: f64,
pub delta_c_last: f64,
pub delta_d_last: f64,
pub get_deltas_for_wrong_inertia_called: bool,
pub hess_degenerate: DegenType,
pub jac_degenerate: DegenType,
pub degen_iters: i32,
pub test_status: TrialStatus,
pub delta_c_rungs: i32,
pub delta_c_abandoned: bool,
pub delta_c_max_rungs: i32,
}Expand description
State + algorithmic parameters. Defaults mirror
IpPDPerturbationHandler.cpp::RegisterOptions.
Fields§
§delta_xs_max: f64§delta_xs_min: f64§delta_xs_first_inc_fact: f64§delta_xs_inc_fact: f64§delta_xs_dec_fact: f64§delta_xs_init: f64§delta_cd_val: f64§delta_cd_exp: f64§perturb_always_cd: bool§reset_last: bool§degen_iters_max: i32§delta_x_curr: f64§delta_s_curr: f64§delta_c_curr: f64§delta_d_curr: f64§delta_x_last: f64§delta_s_last: f64§delta_c_last: f64§delta_d_last: f64§get_deltas_for_wrong_inertia_called: bool§hess_degenerate: DegenType§jac_degenerate: DegenType§degen_iters: i32§test_status: TrialStatus§delta_c_rungs: i32gh#592: how many rungs of the δ_x ladder have been taken for
the current aug-system while δ_c > 0. Reset by
Self::consider_new_system.
delta_c_abandoned: boolgh#592: δ_c has already been withdrawn once for this
aug-system, so it must not be raised again before the next
Self::consider_new_system. Without the latch a linear solver
that keeps reporting Singular for the same reason would put it
straight back and the walk-back would cycle.
delta_c_max_rungs: i32gh#592: the rung at which δ_c is withdrawn — see
Self::perturb_for_wrong_inertia. 0 disables the walk-back
and restores the pre-#592 escalation exactly.
Implementations§
Source§impl PdPerturbationHandler
impl PdPerturbationHandler
pub fn new() -> PdPerturbationHandler
Sourcepub fn set_perturb_always_cd(&mut self, on: bool)
pub fn set_perturb_always_cd(&mut self, on: bool)
Configure perturb_always_cd_ and rebuild the initial jac
state. Mirrors upstream’s InitializeImpl.
Sourcepub fn consider_new_system(
&mut self,
mu: f64,
ip_data: Option<&dyn PerturbationSink>,
) -> Option<Deltas>
pub fn consider_new_system( &mut self, mu: f64, ip_data: Option<&dyn PerturbationSink>, ) -> Option<Deltas>
First call when starting a new aug-system. mu is the current
barrier parameter (used by the δ_cd formula).
Returns None if no suitable starting perturbation could be
found (the caller bails).
Sourcepub fn perturb_for_singular(
&mut self,
mu: f64,
ip_data: Option<&dyn PerturbationSink>,
) -> Option<Deltas>
pub fn perturb_for_singular( &mut self, mu: f64, ip_data: Option<&dyn PerturbationSink>, ) -> Option<Deltas>
Escalation after Singular factorization status. Mirrors
PerturbForSingularity (cpp:245-364).
Sourcepub fn perturb_for_wrong_inertia(
&mut self,
mu: f64,
ip_data: Option<&dyn PerturbationSink>,
) -> Option<Deltas>
pub fn perturb_for_wrong_inertia( &mut self, mu: f64, ip_data: Option<&dyn PerturbationSink>, ) -> Option<Deltas>
Escalation after WrongInertia factorization status. Mirrors
PerturbForWrongInertia (cpp:419-450).
Sourcepub fn current_perturbation(&self) -> Deltas
pub fn current_perturbation(&self) -> Deltas
Read the most recently committed perturbations.
Trait Implementations§
Source§impl Clone for PdPerturbationHandler
impl Clone for PdPerturbationHandler
Source§fn clone(&self) -> PdPerturbationHandler
fn clone(&self) -> PdPerturbationHandler
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PdPerturbationHandler
impl Debug for PdPerturbationHandler
Source§impl Default for PdPerturbationHandler
impl Default for PdPerturbationHandler
Source§fn default() -> PdPerturbationHandler
fn default() -> PdPerturbationHandler
Auto Trait Implementations§
impl Freeze for PdPerturbationHandler
impl RefUnwindSafe for PdPerturbationHandler
impl Send for PdPerturbationHandler
impl Sync for PdPerturbationHandler
impl Unpin for PdPerturbationHandler
impl UnsafeUnpin for PdPerturbationHandler
impl UnwindSafe for PdPerturbationHandler
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, U> Imply<T> for U
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