Skip to main content

RootRkmkDaeMinimize

Trait RootRkmkDaeMinimize 

Source
pub trait RootRkmkDaeMinimize<const D: usize, Y = Quantity> {
    type History;

    // Required methods
    fn root_rkmk_dae_minimize<Tab: ButcherTableau>(
        &self,
        solver: impl SecondOrderOptimization<Quantity<Energy>, NodalForcesSolid<D>, NodalStiffnessesSolid<D>, NodalCoordinates<D>>,
        time: &[Quantity<Time>],
        bcs: ElasticViscoplasticBCs,
    ) -> Result<(Times, NodalCoordinatesHistory<D>, Self::History), IntegrationError>;
    fn root_rkmk_dae_adaptive_minimize<Tab: EmbeddedTableau>(
        &self,
        solver: impl SecondOrderOptimization<Quantity<Energy>, NodalForcesSolid<D>, NodalStiffnessesSolid<D>, NodalCoordinates<D>>,
        time: &[Quantity<Time>],
        bcs: ElasticViscoplasticBCs,
        abs_tol: Scalar,
        rel_tol: Scalar,
    ) -> Result<(Times, NodalCoordinatesHistory<D>, Self::History), IntegrationError>;
}
Expand description

The minimize-based sibling of crate::domain::solid::elastic_viscoplastic::RootRkmkDae: F (here, nodal equilibrium) is resolved by potential minimization at every RK stage abscissa from every Gauss point’s stage-consistent plastic state, for models whose equilibrium is naturally posed that way rather than as a stress residual. One blanket impl over any Model whose blocks are ElasticViscoplasticDaeElements (the topology/flatten/unflatten/rate machinery, shared with the root-finding sibling since the field shape doesn’t care how a stage is solved) and HyperelasticViscoplasticElements (for the potential itself) — a single Block, nested Blocks to any depth, or an ElasticViscoplasticAndElastic pairing.

Required Associated Types§

Source

type History

The model’s plastic-state history type.

Required Methods§

Source

fn root_rkmk_dae_minimize<Tab: ButcherTableau>( &self, solver: impl SecondOrderOptimization<Quantity<Energy>, NodalForcesSolid<D>, NodalStiffnessesSolid<D>, NodalCoordinates<D>>, time: &[Quantity<Time>], bcs: ElasticViscoplasticBCs, ) -> Result<(Times, NodalCoordinatesHistory<D>, Self::History), IntegrationError>

Solve under an applied load, resolving nodal equilibrium by potential minimization at every RK stage of every load-step window while every Gauss point’s plastic state advances on its group.

Source

fn root_rkmk_dae_adaptive_minimize<Tab: EmbeddedTableau>( &self, solver: impl SecondOrderOptimization<Quantity<Energy>, NodalForcesSolid<D>, NodalStiffnessesSolid<D>, NodalCoordinates<D>>, time: &[Quantity<Time>], bcs: ElasticViscoplasticBCs, abs_tol: Scalar, rel_tol: Scalar, ) -> Result<(Times, NodalCoordinatesHistory<D>, Self::History), IntegrationError>

As Self::root_rkmk_dae_minimize, but the whole span is stepped under embedded (Tab::D) error control rather than on the supplied load grid.

Two times in time give only the span, and the controller’s own accepted steps are reported. More than two are requested report times — the convention of the flat DAE loop — and every Gauss point’s plastic state is served at each from the geodesic HermiteSegment of the accepted step containing it, so nodal equilibrium is then re-solved (by minimization) there.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§