pub trait HyperelasticViscoplasticFiniteElementBlock<C, F, const G: usize, const M: usize, const N: usize, const P: usize, Y>where
C: HyperelasticViscoplastic<Y>,
F: HyperelasticViscoplasticFiniteElement<C, G, M, N, P, Y>,
Self: ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y>,
Y: Tensor,{
// Required methods
fn helmholtz_free_energy(
&self,
nodal_coordinates: &NodalCoordinates,
state_variables: &ViscoplasticStateVariables<G, Y>,
) -> Result<Scalar, FiniteElementBlockError>;
fn minimize(
&self,
integrator: impl ExplicitDaeSecondOrderMinimize<Scalar, NodalForcesSolid, NodalStiffnessesSolid, ViscoplasticStateVariables<G, Y>, NodalCoordinates, ViscoplasticStateVariablesHistory<G, Y>, NodalCoordinatesHistory>,
solver: impl SecondOrderOptimization<Scalar, NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>,
time: &[Scalar],
bcs: ElasticViscoplasticBCs,
) -> Result<(Times, NodalCoordinatesHistory, ViscoplasticStateVariablesHistory<G, Y>), IntegrationError>;
}Required Methods§
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G, Y>, ) -> Result<Scalar, FiniteElementBlockError>
fn minimize( &self, integrator: impl ExplicitDaeSecondOrderMinimize<Scalar, NodalForcesSolid, NodalStiffnessesSolid, ViscoplasticStateVariables<G, Y>, NodalCoordinates, ViscoplasticStateVariablesHistory<G, Y>, NodalCoordinatesHistory>, solver: impl SecondOrderOptimization<Scalar, NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, time: &[Scalar], bcs: ElasticViscoplasticBCs, ) -> Result<(Times, NodalCoordinatesHistory, ViscoplasticStateVariablesHistory<G, Y>), 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.