pub struct ElementBlock<F, const N: usize> { /* private fields */ }
Trait Implementations§
Source§impl<C, F, const G: usize, const N: usize> ElasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>
impl<C, F, const G: usize, const N: usize> ElasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinatesBlock, ) -> Result<NodalForcesBlock, ConstitutiveError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinatesBlock, ) -> Result<NodalStiffnessesBlock, ConstitutiveError>
Source§impl<C, F, const G: usize, const N: usize> ElasticHyperviscousFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: ElasticHyperviscous,
F: ElasticHyperviscousFiniteElement<C, G, N>,
Self: ViscoelasticFiniteElementBlock<C, F, G, N>,
impl<C, F, const G: usize, const N: usize> ElasticHyperviscousFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: ElasticHyperviscous,
F: ElasticHyperviscousFiniteElement<C, G, N>,
Self: ViscoelasticFiniteElementBlock<C, F, G, N>,
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>
Source§impl<C, F, const G: usize, const N: usize, Y> FiniteElementBlock<C, F, G, N, Y> for ElementBlock<F, N>
impl<C, F, const G: usize, const N: usize, Y> FiniteElementBlock<C, F, G, N, Y> for ElementBlock<F, N>
fn new( constitutive_model_parameters: Y, connectivity: Connectivity<N>, coordinates: ReferenceNodalCoordinatesBlock, ) -> Self
Source§impl<C, F, const G: usize, const N: usize> FiniteElementBlockMethods<C, F, G, N> for ElementBlock<F, N>where
F: FiniteElementMethods<C, G, N>,
impl<C, F, const G: usize, const N: usize> FiniteElementBlockMethods<C, F, G, N> for ElementBlock<F, N>where
F: FiniteElementMethods<C, G, N>,
fn connectivity(&self) -> &Connectivity<N>
fn coordinates(&self) -> &ReferenceNodalCoordinatesBlock
fn deformation_gradients( &self, nodal_coordinates: &NodalCoordinatesBlock, ) -> Vec<DeformationGradientList<G>> ⓘ
fn elements(&self) -> &[F]
fn nodal_coordinates_element( &self, element_connectivity: &[usize; N], nodal_coordinates: &NodalCoordinatesBlock, ) -> CurrentCoordinates<D>
Source§impl<C, F, const G: usize, const N: usize> FirstOrderRoot<C, F, G, N> for ElementBlock<F, N>
impl<C, F, const G: usize, const N: usize> FirstOrderRoot<C, F, G, N> for ElementBlock<F, N>
fn root( &self, equality_constraint: EqualityConstraint, solver: impl FirstOrderRootFinding<NodalForcesBlock, NodalStiffnessesBlock, NodalCoordinatesBlock>, ) -> Result<NodalCoordinatesBlock, OptimizeError>
Source§impl<C, F, const G: usize, const N: usize> HyperelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, N>,
Self: ElasticFiniteElementBlock<C, F, G, N>,
impl<C, F, const G: usize, const N: usize> HyperelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, N>,
Self: ElasticFiniteElementBlock<C, F, G, N>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinatesBlock, ) -> Result<Scalar, ConstitutiveError>
Source§impl<C, F, const G: usize, const N: usize> HyperviscoelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Hyperviscoelastic,
F: HyperviscoelasticFiniteElement<C, G, N>,
Self: ElasticHyperviscousFiniteElementBlock<C, F, G, N>,
impl<C, F, const G: usize, const N: usize> HyperviscoelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Hyperviscoelastic,
F: HyperviscoelasticFiniteElement<C, G, N>,
Self: ElasticHyperviscousFiniteElementBlock<C, F, G, N>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinatesBlock, ) -> Result<Scalar, ConstitutiveError>
Source§impl<C, F, const G: usize, const N: usize> SecondOrderMinimize<C, F, G, N> for ElementBlock<F, N>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, N>,
Self: ElasticFiniteElementBlock<C, F, G, N>,
impl<C, F, const G: usize, const N: usize> SecondOrderMinimize<C, F, G, N> for ElementBlock<F, N>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, N>,
Self: ElasticFiniteElementBlock<C, F, G, N>,
fn minimize( &self, equality_constraint: EqualityConstraint, solver: impl SecondOrderOptimization<Scalar, NodalForcesBlock, NodalStiffnessesBlock, NodalCoordinatesBlock>, ) -> Result<NodalCoordinatesBlock, OptimizeError>
Source§impl<C, F, const G: usize, const N: usize, const P: usize, Y> SurfaceFiniteElementBlock<C, F, G, N, P, Y> for ElementBlock<F, N>
impl<C, F, const G: usize, const N: usize, const P: usize, Y> SurfaceFiniteElementBlock<C, F, G, N, P, Y> for ElementBlock<F, N>
fn new( constitutive_model_parameters: Y, connectivity: Connectivity<N>, coordinates: ReferenceNodalCoordinatesBlock, thickness: Scalar, ) -> Self
Source§impl<C, F, const G: usize, const N: usize> ViscoelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Viscoelastic,
F: ViscoelasticFiniteElement<C, G, N>,
Self: FiniteElementBlockMethods<C, F, G, N>,
impl<C, F, const G: usize, const N: usize> ViscoelasticFiniteElementBlock<C, F, G, N> for ElementBlock<F, N>where
C: Viscoelastic,
F: ViscoelasticFiniteElement<C, G, N>,
Self: FiniteElementBlockMethods<C, F, G, N>,
fn deformation_gradient_rates( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Vec<DeformationGradientRateList<G>> ⓘ
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Result<NodalForcesBlock, ConstitutiveError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinatesBlock, nodal_velocities: &NodalVelocitiesBlock, ) -> Result<NodalStiffnessesBlock, ConstitutiveError>
fn nodal_velocities_element( &self, element_connectivity: &[usize; N], nodal_velocities: &NodalVelocitiesBlock, ) -> CurrentCoordinates<D>
fn root( &self, equality_constraint: EqualityConstraint, integrator: impl Explicit<NodalVelocitiesBlock, NodalVelocitiesHistory>, time: &[Scalar], solver: impl FirstOrderRootFinding<NodalForcesBlock, NodalStiffnessesBlock, NodalCoordinatesBlock>, ) -> Result<(Times, NodalCoordinatesHistory, NodalVelocitiesHistory), IntegrationError>
Auto Trait Implementations§
impl<F, const N: usize> Freeze for ElementBlock<F, N>
impl<F, const N: usize> RefUnwindSafe for ElementBlock<F, N>where
F: RefUnwindSafe,
impl<F, const N: usize> Send for ElementBlock<F, N>where
F: Send,
impl<F, const N: usize> Sync for ElementBlock<F, N>where
F: Sync,
impl<F, const N: usize> Unpin for ElementBlock<F, N>where
F: Unpin,
impl<F, const N: usize> UnwindSafe for ElementBlock<F, N>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more