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, ConstitutiveError>;
fn dissipation_potential(
&self,
nodal_coordinates: &NodalCoordinatesBlock,
nodal_velocities: &NodalVelocitiesBlock,
) -> Result<Scalar, ConstitutiveError>;
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, ConstitutiveError>
fn dissipation_potential( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Result<Scalar, ConstitutiveError>
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.