Skip to main content

ArcLength

Struct ArcLength 

Source
pub struct ArcLength<NId = NodeId> {
Show 13 fields pub initial_radius: f64, pub min_radius: f64, pub max_radius: f64, pub target_iterations: usize, pub max_retries: usize, pub direction: ArcDirection, pub scales: ArcScales, pub predictor: ArcPredictor, pub seed: Option<ArcSeed<NId>>, pub arc_tolerance: f64, pub correction_tolerance: Option<f64>, pub backtracking: Backtracking, pub stop: ArcStopCriteria<NId>,
}
Expand description

Arc-length continuation settings (Integrator::ArcLength). Build with ArcLength::fixed or ArcLength::adaptive and adjust fields from there; every field is validated when the first step runs.

Fields§

§initial_radius: f64

Radius of the first step, in the dimensionless metric.

§min_radius: f64

Cutbacks never go below this radius.

§max_radius: f64

Growth never goes above this radius. Setting all three radii equal gives a fixed-radius run with no retries or growth.

§target_iterations: usize

Corrector solves the adaptive radius aims for (docs/arclength.md §7: s_next = s * clamp(sqrt(target / N), 0.5, 1.5)).

§max_retries: usize

Cutbacks allowed per step before the step fails.

§direction: ArcDirection

Initial direction of travel in lambda.

§scales: ArcScales

How the metric is scaled.

§predictor: ArcPredictor

Predictor used after the first step.

§seed: Option<ArcSeed<NId>>

Orients the first tangent when it is singular (or overrides the default direction-based orientation when given).

§arc_tolerance: f64

Acceptance tolerance on the constraint, |g| / s^2.

§correction_tolerance: Option<f64>

Optional acceptance tolerance on the last undamped coupled correction, relative to the radius: ||delta||_M <= tol * s.

§backtracking: Backtracking§stop: ArcStopCriteria<NId>

Implementations§

Source§

impl<NId> ArcLength<NId>

Source

pub fn fixed(radius: f64, scales: ArcScales) -> Self

Fixed radius radius with every other setting at its default.

Source

pub fn adaptive( initial_radius: f64, min_radius: f64, max_radius: f64, scales: ArcScales, ) -> Self

Adaptive radius in [min_radius, max_radius], starting at initial_radius, with every other setting at its default.

Source

pub fn validate_with( &self, algorithm: &Algorithm, test: &ConvergenceTest, ) -> Result<(), AnalysisError>

Checks this configuration together with the algorithm and convergence test it will run under — the same checks every arc step makes, exposed so wire decoders can reject bad input up front. Arc length needs Newton { tangent: Current, line_search: None } (its coupled backtracking replaces line search) and a force test (NormUnbalance or Combined); displacement/work tests alone don’t certify equilibrium.

Source

pub fn validate(&self) -> Result<(), AnalysisError>

Range checks on this configuration alone.

Trait Implementations§

Source§

impl<NId: Clone> Clone for ArcLength<NId>

Source§

fn clone(&self) -> ArcLength<NId>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<NId: Debug> Debug for ArcLength<NId>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<NId: PartialEq> PartialEq for ArcLength<NId>

Source§

fn eq(&self, other: &ArcLength<NId>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<NId: PartialEq> StructuralPartialEq for ArcLength<NId>

Auto Trait Implementations§

§

impl<NId> Freeze for ArcLength<NId>
where NId: Freeze,

§

impl<NId> RefUnwindSafe for ArcLength<NId>
where NId: RefUnwindSafe,

§

impl<NId> Send for ArcLength<NId>
where NId: Send,

§

impl<NId> Sync for ArcLength<NId>
where NId: Sync,

§

impl<NId> Unpin for ArcLength<NId>
where NId: Unpin,

§

impl<NId> UnsafeUnpin for ArcLength<NId>
where NId: UnsafeUnpin,

§

impl<NId> UnwindSafe for ArcLength<NId>
where NId: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.