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§
Required Methods§
Sourcefn 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<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.
Sourcefn 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>
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".