pub enum Integrator<NId = NodeId> {
LoadControl {
increment: f64,
},
DisplacementControl {
node: NId,
dof: usize,
increment: f64,
},
ArcLength(ArcLength<NId>),
}Expand description
Static/pseudo-static integration strategy. Closed enum.
LoadControl/DisplacementControl only change how this step’s load
factor is chosen (the “predictor”) — the iteration that follows
(see Algorithm) proceeds identically regardless of which one picked it.
ArcLength is different in kind: it predicts displacement and load
factor and corrects both together through a bordered system, so
Analysis::step hands it to its own continuation driver instead of
predict/correct (see arclength.rs and docs/arclength.md).
Generic over NId (the controlled node’s ID type — NodeId or
Node3Id), defaulted to the planar profile so bare Integrator keeps
working, the same trick Domain uses. predict/correct take the rest
of the profile (NDIM/NDOF/ELEMENT_DOF/E) as their own
generic parameters instead of Integrator’s, since an integrator’s
identity only depends on which node/DOF it controls, not which Domain
it’s later used with.
Variants§
LoadControl
DisplacementControl
Chooses this step’s pseudo-time increment so that the controlled
node/DOF’s displacement changes by exactly increment, via the
standard unit-load technique: solve the current tangent against the
sensitivity of the total applied load to a unit pseudo-time
increment (Domain::assemble_reference_load_sensitivity — every
non-frozen LoadPattern‘s contribution, weighted by its series’
slope at the current pseudo-time; a hold_pattern_constant-frozen
or LoadSeries::Constant pattern contributes nothing, since it
doesn’t respond to pseudo-time at all) once, then scale by whatever
factor makes the controlled DOF’s response match increment.
ArcLength(ArcLength<NId>)
Arc-length continuation along the equilibrium path, through load
limits and snap-back — see ArcLength.
Trait Implementations§
Source§impl<NId: Clone> Clone for Integrator<NId>
impl<NId: Clone> Clone for Integrator<NId>
Source§fn clone(&self) -> Integrator<NId>
fn clone(&self) -> Integrator<NId>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<NId: Debug> Debug for Integrator<NId>
impl<NId: Debug> Debug for Integrator<NId>
Source§impl<NId: PartialEq> PartialEq for Integrator<NId>
impl<NId: PartialEq> PartialEq for Integrator<NId>
impl<NId: PartialEq> StructuralPartialEq for Integrator<NId>
Auto Trait Implementations§
impl<NId> Freeze for Integrator<NId>where
NId: Freeze,
impl<NId> RefUnwindSafe for Integrator<NId>where
NId: RefUnwindSafe,
impl<NId> Send for Integrator<NId>where
NId: Send,
impl<NId> Sync for Integrator<NId>where
NId: Sync,
impl<NId> Unpin for Integrator<NId>where
NId: Unpin,
impl<NId> UnsafeUnpin for Integrator<NId>where
NId: UnsafeUnpin,
impl<NId> UnwindSafe for Integrator<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.