pub trait ElasticHyperviscousFiniteElementBlock<C, F, const G: usize, const N: usize>where
    C: ElasticHyperviscous,
    F: ElasticHyperviscousFiniteElement<C, G, N>,
    Self: ViscoelasticFiniteElementBlock<C, F, G, N>,{
    // Required methods
    fn viscous_dissipation(
        &self,
        nodal_coordinates: &NodalCoordinatesBlock,
        nodal_velocities: &NodalVelocitiesBlock,
    ) -> Result<Scalar, FiniteElementBlockError>;
    fn dissipation_potential(
        &self,
        nodal_coordinates: &NodalCoordinatesBlock,
        nodal_velocities: &NodalVelocitiesBlock,
    ) -> Result<Scalar, FiniteElementBlockError>;
    fn minimize(
        &self,
        equality_constraint: EqualityConstraint,
        integrator: impl Explicit<NodalVelocitiesBlock, NodalVelocitiesHistory>,
        time: &[Scalar],
        solver: impl SecondOrderOptimization<Scalar, NodalForcesBlock, NodalStiffnessesBlock, NodalCoordinatesBlock>,
    ) -> Result<(Times, NodalCoordinatesHistory, NodalVelocitiesHistory), IntegrationError>;
}Required Methods§
fn viscous_dissipation( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Result<Scalar, FiniteElementBlockError>
fn dissipation_potential( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Result<Scalar, FiniteElementBlockError>
fn minimize( &self, equality_constraint: EqualityConstraint, integrator: impl Explicit<NodalVelocitiesBlock, NodalVelocitiesHistory>, time: &[Scalar], solver: impl SecondOrderOptimization<Scalar, NodalForcesBlock, NodalStiffnessesBlock, NodalCoordinatesBlock>, ) -> Result<(Times, NodalCoordinatesHistory, NodalVelocitiesHistory), IntegrationError>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.