Skip to main content

ElasticViscoplasticDaeElements

Trait ElasticViscoplasticDaeElements 

Source
pub trait ElasticViscoplasticDaeElements<Y, const D: usize>
where Self: Elements,
{ type Field: Integrable<Increment: Differentiable<Time>>; type State: Clone + Differentiable + Tensor; type History: TensorVec<Item = Self::State>; // Required methods fn flatten(state: &Self::State) -> <Self::Field as Integrable>::Point; fn unflatten(flat: &<Self::Field as Integrable>::Point) -> Self::State; fn dae_rate( &self, t: Quantity<Time>, nodal_coordinates: &NodalCoordinates<D>, flat: &<Self::Field as Integrable>::Point, ) -> Result<Derivative<<Self::Field as Integrable>::Increment, Time>, ElementModelError>; }
Expand description

Per-topology machinery behind RootRkmkDae: the whole-mesh Integrable every Gauss point’s plastic state lives on (a per-Gauss-point List for one block, a Product of those for Blocks), how to flatten/unflatten between it and the block’s native per-element State, and how to evaluate every Gauss point’s plastic rate at a stage’s nodal coordinates. Composes recursively over nested Blocks and forwards over ElasticViscoplasticAndElastic, the same way ElasticViscoplasticElements does.

Required Associated Types§

Source

type Field: Integrable<Increment: Differentiable<Time>>

The whole-mesh field this topology’s plastic state lives on.

Source

type State: Clone + Differentiable + Tensor

The per-element grouped state — a per-Gauss-point list for one block, a TensorTuple of those for Blocks.

Source

type History: TensorVec<Item = Self::State>

Time history of Self::State.

Required Methods§

Source

fn flatten(state: &Self::State) -> <Self::Field as Integrable>::Point

Flattens Self::State into Self::Field’s Point.

Source

fn unflatten(flat: &<Self::Field as Integrable>::Point) -> Self::State

The inverse of Self::flatten.

Source

fn dae_rate( &self, t: Quantity<Time>, nodal_coordinates: &NodalCoordinates<D>, flat: &<Self::Field as Integrable>::Point, ) -> Result<Derivative<<Self::Field as Integrable>::Increment, Time>, ElementModelError>

Evaluates every Gauss point’s plastic rate at nodal_coordinates.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§

Source§

impl<B1, B2, Y, const D: usize> ElasticViscoplasticDaeElements<Y, D> for Blocks<B1, B2>

Source§

impl<B1, B2, Y, const D: usize> ElasticViscoplasticDaeElements<Y, D> for ElasticViscoplasticAndElastic<B1, B2>

Source§

impl<C, F, const G: usize, const N: usize, const P: usize, Y> ElasticViscoplasticDaeElements<Y, 3> for Block<C, F, G, 3, N, P>