Skip to main content

StateEvolution

Trait StateEvolution 

Source
pub trait StateEvolution<T = Time, Y = Quantity>
where <Self::Field as Integrable>::Increment: Differentiable<T>,
{ type Field: Integrable; type Drive; // Required methods fn initial_state(&self) -> <Self::Field as Integrable>::Point; fn state_rate( &self, time: Quantity<T>, drive: &Self::Drive, state: &<Self::Field as Integrable>::Point, ) -> Result<Derivative<<Self::Field as Integrable>::Increment, T>, String>; }
Expand description

A model whose internal state evolves as a product of Lie-algebra rates, ready for the field drivers. Self::Drive is the externally-imposed input the rate needs beside the state (e.g. the total deformation gradient).

Y is only a discriminant: a model type (e.g. Canonical) that could carry several kinds of internal state selects one impl per Y, so it appears here even though nothing in the trait names it.

Required Associated Types§

Source

type Field: Integrable

Geometry of the composite internal state.

Source

type Drive

The externally-imposed driving input.

Required Methods§

Source

fn initial_state(&self) -> <Self::Field as Integrable>::Point

The initial internal state.

Source

fn state_rate( &self, time: Quantity<T>, drive: &Self::Drive, state: &<Self::Field as Integrable>::Point, ) -> Result<Derivative<<Self::Field as Integrable>::Increment, T>, String>

The product of Lie-algebra rates at (time, drive, state).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<C, Y> StateEvolution<Time, Y> for C

The internal state (F_p, Y) evolves as F_p on the unimodular group (Reference → Intermediate, so its algebra element D_p Δt is Intermediate → Intermediate) and the hardening variable Y additively. The rate is (D_p, Ẏ), from the model’s plastic_evolution (D_p recovered as Ḟ_p F_p⁻¹), driven by the total deformation gradient through the Mandel stress. Blanket over any ElasticViscoplastic model — not Canonical-specific — so a hybrid composition gets it automatically as soon as it implements ElasticViscoplastic<Y>.