Skip to main content

RootRkmkDae

Trait RootRkmkDae 

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

    // Required methods
    fn root_rkmk_dae<Tab: ButcherTableau>(
        &self,
        solver: impl FirstOrderRootFinding<NodalForcesSolid<D>, NodalStiffnessesSolid<D>, NodalCoordinates<D>>,
        time: &[Quantity<Time>],
        bcs: ElasticViscoplasticBCs,
    ) -> Result<(Times, NodalCoordinatesHistory<D>, Self::History), IntegrationError>;
    fn root_rkmk_dae_adaptive<Tab: EmbeddedTableau>(
        &self,
        solver: impl FirstOrderRootFinding<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 RKMK-DAE stage-equilibrium step, mirroring the constitutive-level RootRkmkDae: F (here, nodal equilibrium) is resolved at every RK stage abscissa from every Gauss point’s stage-consistent plastic state, rather than frozen across the load-step window — so the coupling is the tableau’s own order instead of first order, at the cost of Tab::STAGES equilibrium solves per window instead of one. One blanket impl over any Model whose blocks are ElasticViscoplasticDaeElements — 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<Tab: ButcherTableau>( &self, solver: impl FirstOrderRootFinding<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 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<Tab: EmbeddedTableau>( &self, solver: impl FirstOrderRootFinding<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, 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 there.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§