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