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: f64Radius of the first step, in the dimensionless metric.
min_radius: f64Cutbacks never go below this radius.
max_radius: f64Growth never goes above this radius. Setting all three radii equal gives a fixed-radius run with no retries or growth.
target_iterations: usizeCorrector solves the adaptive radius aims for (docs/arclength.md
§7: s_next = s * clamp(sqrt(target / N), 0.5, 1.5)).
max_retries: usizeCutbacks allowed per step before the step fails.
direction: ArcDirectionInitial direction of travel in lambda.
scales: ArcScalesHow the metric is scaled.
predictor: ArcPredictorPredictor 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: f64Acceptance 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>
impl<NId> ArcLength<NId>
Sourcepub fn fixed(radius: f64, scales: ArcScales) -> Self
pub fn fixed(radius: f64, scales: ArcScales) -> Self
Fixed radius radius with every other setting at its default.
Sourcepub fn adaptive(
initial_radius: f64,
min_radius: f64,
max_radius: f64,
scales: ArcScales,
) -> Self
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.
Sourcepub fn validate_with(
&self,
algorithm: &Algorithm,
test: &ConvergenceTest,
) -> Result<(), AnalysisError>
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.
Sourcepub fn validate(&self) -> Result<(), AnalysisError>
pub fn validate(&self) -> Result<(), AnalysisError>
Range checks on this configuration alone.
Trait Implementations§
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> 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
impl<T> Scalar for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.