pub struct Block<C, F, const G: usize, const M: usize, const N: usize, const P: usize> { /* private fields */ }Implementations§
Trait Implementations§
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Debug for Block<C, F, G, M, N, P>where
F: FiniteElement<G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Debug for Block<C, F, G, M, N, P>where
F: FiniteElement<G, M, N, P>,
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<NodalForcesSolid, FiniteElementBlockError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<NodalStiffnessesSolid, FiniteElementBlockError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticFiniteElementModel for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticFiniteElementModel for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<NodalForcesSolid, FiniteElementModelError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<NodalStiffnessesSolid, FiniteElementModelError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticHyperviscousFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ElasticHyperviscous,
F: ElasticHyperviscousFiniteElement<C, G, M, N, P>,
Self: ViscoelasticFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticHyperviscousFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ElasticHyperviscous,
F: ElasticHyperviscousFiniteElement<C, G, M, N, P>,
Self: ViscoelasticFiniteElementBlock<C, F, G, M, N, P>,
fn viscous_dissipation( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Result<Scalar, FiniteElementBlockError>
fn dissipation_potential( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Result<Scalar, FiniteElementBlockError>
fn minimize( &self, equality_constraint: EqualityConstraint, integrator: impl Explicit<NodalVelocities, NodalVelocitiesHistory>, time: &[Scalar], solver: impl SecondOrderOptimization<Scalar, NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, ) -> Result<(Times, NodalCoordinatesHistory, NodalVelocitiesHistory), IntegrationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ElasticViscoplastic,
F: ElasticViscoplasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ElasticViscoplastic,
F: ElasticViscoplasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G>, ) -> Result<NodalForcesSolid, FiniteElementBlockError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G>, ) -> Result<NodalStiffnessesSolid, FiniteElementBlockError>
fn state_variables_evolution( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G>, ) -> Result<ViscoplasticStateVariables<G>, FiniteElementBlockError>
fn root( &self, bcs: ElasticViscoplasticBCs, integrator: impl ExplicitInternalVariables<ViscoplasticStateVariables<G>, NodalCoordinates, ViscoplasticStateVariablesHistory<G>, NodalCoordinatesHistory>, time: &[Scalar], solver: impl FirstOrderRootFinding<NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, ) -> Result<(Times, NodalCoordinatesHistory, ViscoplasticStateVariablesHistory<G>), IntegrationError>
Source§impl<C, F, const G: usize, const N: usize, const P: usize> FiniteElementBlock<C, F, G, N> for Block<C, F, G, 3, N, P>
impl<C, F, const G: usize, const N: usize, const P: usize> FiniteElementBlock<C, F, G, N> for Block<C, F, G, 3, N, P>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderMinimize<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderMinimize<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
fn minimize( &self, equality_constraint: EqualityConstraint, solver: impl FirstOrderOptimization<Scalar, NodalForcesSolid>, ) -> Result<NodalCoordinates, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderMinimize<C, F, G, M, N, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderMinimize<C, F, G, M, N, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
fn minimize( &self, equality_constraint: EqualityConstraint, solver: impl FirstOrderOptimization<Scalar, NodalTemperatures>, ) -> Result<NodalTemperatures, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderRoot<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>, TensorVector<TensorVector<TensorRank2<3, 1, 1>>>, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderRoot<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>, TensorVector<TensorVector<TensorRank2<3, 1, 1>>>, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
fn root( &self, equality_constraint: EqualityConstraint, solver: impl FirstOrderRootFinding<NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, ) -> Result<NodalCoordinates, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderRoot<C, F, G, M, N, Vector, SquareMatrix, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> FirstOrderRoot<C, F, G, M, N, Vector, SquareMatrix, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
fn root( &self, equality_constraint: EqualityConstraint, solver: impl FirstOrderRootFinding<NodalForcesThermal, NodalStiffnessesThermal, NodalTemperatures>, ) -> Result<NodalTemperatures, OptimizationError>
Source§impl<C, F, const G: usize, const N: usize, const P: usize> From<(C, Vec<[usize; N]>, TensorVector<TensorRank1<3, 0>>)> for Block<C, F, G, 3, N, P>
impl<C, F, const G: usize, const N: usize, const P: usize> From<(C, Vec<[usize; N]>, TensorVector<TensorRank1<3, 0>>)> for Block<C, F, G, 3, N, P>
Source§fn from(
(constitutive_model, connectivity, coordinates): (C, Connectivity<N>, NodalReferenceCoordinates),
) -> Self
fn from( (constitutive_model, connectivity, coordinates): (C, Connectivity<N>, NodalReferenceCoordinates), ) -> Self
Converts to this type from the input type.
Source§impl<C, F, const G: usize, const N: usize, const P: usize> From<(C, Vec<[usize; N]>, TensorVector<TensorRank1<3, 0>>, f64)> for Block<C, F, G, M, N, P>
impl<C, F, const G: usize, const N: usize, const P: usize> From<(C, Vec<[usize; N]>, TensorVector<TensorRank1<3, 0>>, f64)> for Block<C, F, G, M, N, P>
Source§fn from(
(constitutive_model, connectivity, coordinates, thickness): (C, Connectivity<N>, NodalReferenceCoordinates, Scalar),
) -> Self
fn from( (constitutive_model, connectivity, coordinates, thickness): (C, Connectivity<N>, NodalReferenceCoordinates, Scalar), ) -> Self
Converts to this type from the input type.
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> HyperelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
Self: ElasticFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> HyperelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
Self: ElasticFiniteElementBlock<C, F, G, M, N, P>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<Scalar, FiniteElementBlockError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> HyperviscoelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Hyperviscoelastic,
F: HyperviscoelasticFiniteElement<C, G, M, N, P>,
Self: ElasticHyperviscousFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> HyperviscoelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Hyperviscoelastic,
F: HyperviscoelasticFiniteElement<C, G, M, N, P>,
Self: ElasticHyperviscousFiniteElementBlock<C, F, G, M, N, P>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates, ) -> Result<Scalar, FiniteElementBlockError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SecondOrderMinimize<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>, TensorVector<TensorVector<TensorRank2<3, 1, 1>>>, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SecondOrderMinimize<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>, TensorVector<TensorVector<TensorRank2<3, 1, 1>>>, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Hyperelastic,
F: HyperelasticFiniteElement<C, G, M, N, P>,
fn minimize( &self, equality_constraint: EqualityConstraint, solver: impl SecondOrderOptimization<Scalar, NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, ) -> Result<NodalCoordinates, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SecondOrderMinimize<C, F, G, M, N, Vector, SquareMatrix, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SecondOrderMinimize<C, F, G, M, N, Vector, SquareMatrix, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
fn minimize( &self, equality_constraint: EqualityConstraint, solver: impl SecondOrderOptimization<Scalar, NodalForcesThermal, NodalStiffnessesThermal, NodalTemperatures>, ) -> Result<NodalTemperatures, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SolidFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
F: SolidFiniteElement<G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SolidFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
F: SolidFiniteElement<G, M, N, P>,
fn deformation_gradients( &self, nodal_coordinates: &NodalCoordinates, ) -> Vec<DeformationGradientList<G>> ⓘ
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ThermalConductionFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ThermalConductionFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
fn potential( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<Scalar, FiniteElementBlockError>
fn nodal_forces( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<NodalForcesThermal, FiniteElementBlockError>
fn nodal_stiffnesses( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<NodalStiffnessesThermal, FiniteElementBlockError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ThermalFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
F: ThermalFiniteElement<G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ThermalFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
F: ThermalFiniteElement<G, M, N, P>,
fn nodal_temperatures_element( &self, element_connectivity: &[usize; N], nodal_temperatures: &NodalTemperatures, ) -> ElementNodalTemperatures<N>
fn temperature_gradients( &self, nodal_temperatures: &NodalTemperatures, ) -> Vec<TemperatureGradients<G>> ⓘ
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ViscoelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Viscoelastic,
F: ViscoelasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ViscoelasticFiniteElementBlock<C, F, G, M, N, P> for Block<C, F, G, M, N, P>where
C: Viscoelastic,
F: ViscoelasticFiniteElement<C, G, M, N, P>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
fn deformation_gradient_rates( &self, nodal_coordinates: &NodalCoordinates, nodal_velocities: &NodalVelocities, ) -> Vec<DeformationGradientRateList<G>> ⓘ
fn element_velocities( &self, 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>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ZerothOrderRoot<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ZerothOrderRoot<C, F, G, M, N, TensorVector<TensorRank1<3, 1>>> for Block<C, F, G, M, N, P>where
C: Elastic,
F: ElasticFiniteElement<C, G, M, N, P>,
fn root( &self, equality_constraint: EqualityConstraint, solver: impl ZerothOrderRootFinding<NodalCoordinates>, ) -> Result<NodalCoordinates, OptimizationError>
Source§impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ZerothOrderRoot<C, F, G, M, N, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> ZerothOrderRoot<C, F, G, M, N, Vector> for Block<C, F, G, M, N, P>where
C: ThermalConduction,
F: ThermalConductionFiniteElement<C, G, M, N, P>,
fn root( &self, equality_constraint: EqualityConstraint, solver: impl ZerothOrderRootFinding<NodalTemperatures>, ) -> Result<NodalTemperatures, OptimizationError>
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> SolidFiniteElementModel for Block<C, F, G, M, N, P>where
C: Solid,
F: SolidFiniteElement<G, M, N, P>,
impl<C, F, const G: usize, const N: usize, const P: usize> SurfaceFiniteElementBlock<C, F, G, N> for Block<C, F, G, M, N, P>
Auto Trait Implementations§
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Freeze for Block<C, F, G, M, N, P>where
C: Freeze,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> RefUnwindSafe for Block<C, F, G, M, N, P>where
C: RefUnwindSafe,
F: RefUnwindSafe,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Send for Block<C, F, G, M, N, P>
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Sync for Block<C, F, G, M, N, P>
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> Unpin for Block<C, F, G, M, N, P>
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize> UnwindSafe for Block<C, F, G, M, N, P>where
C: UnwindSafe,
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