pub trait ViscoelasticFiniteElementBlock<C, F, const G: usize, const M: usize, const N: usize, const P: usize>where
C: Viscoelastic,
F: ViscoelasticFiniteElement<C, G, M, N, P>,{
// Required methods
fn deformation_gradient_rates(
&self,
nodal_coordinates: &NodalCoordinates,
nodal_velocities: &NodalVelocities,
) -> Vec<DeformationGradientRateList<G>> ⓘ;
fn element_velocities(
&self,
nodal_velocities: &NodalVelocities,
nodes: &[usize; N],
) -> ElementNodalVelocities<N>;
fn nodal_forces(
&self,
nodal_coordinates: &NodalCoordinates,
nodal_velocities: &NodalVelocities,
) -> Result<NodalForcesSolid, FiniteElementBlockError>;
fn nodal_stiffnesses(
&self,
nodal_coordinates: &NodalCoordinates,
nodal_velocities: &NodalVelocities,
) -> Result<NodalStiffnessesSolid, FiniteElementBlockError>;
fn root(
&self,
equality_constraint: EqualityConstraint,
integrator: impl Explicit<NodalVelocities, NodalVelocitiesHistory>,
time: &[Scalar],
solver: impl FirstOrderRootFinding<NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>,
) -> Result<(Times, NodalCoordinatesHistory, NodalVelocitiesHistory), IntegrationError>;
}Required Methods§
fn deformation_gradient_rates( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Vec<DeformationGradientRateList<G>> ⓘ
fn element_velocities( &self, nodal_velocities: &NodalVelocities, nodes: &[usize; N], ) -> ElementNodalVelocities<N>
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Result<NodalForcesSolid, FiniteElementBlockError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Result<NodalStiffnessesSolid, FiniteElementBlockError>
fn root( &self, equality_constraint: EqualityConstraint, integrator: impl Explicit<NodalVelocities, NodalVelocitiesHistory>, time: &[Scalar], solver: impl FirstOrderRootFinding<NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, ) -> 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.