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 ImplicitDaeSecondOrderMinimize<Scalar, NodalForcesSolid, NodalStiffnessesSolid, 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, Y> ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y> for Block<C, F, G, M, N, P>where
C: ElasticViscoplastic<Y>,
F: ElasticViscoplasticFiniteElement<C, G, M, N, P, Y>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
Y: Tensor,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize, Y> ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y> for Block<C, F, G, M, N, P>where
C: ElasticViscoplastic<Y>,
F: ElasticViscoplasticFiniteElement<C, G, M, N, P, Y>,
Self: SolidFiniteElementBlock<C, F, G, M, N, P>,
Y: Tensor,
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G, Y>, ) -> Result<NodalForcesSolid, FiniteElementBlockError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G, Y>, ) -> Result<NodalStiffnessesSolid, FiniteElementBlockError>
fn state_variables_evolution( &self, nodal_coordinates: &NodalCoordinates, state_variables: &ViscoplasticStateVariables<G, Y>, ) -> Result<ViscoplasticStateVariables<G, Y>, FiniteElementBlockError>
fn root( &self, integrator: impl ExplicitDaeFirstOrderRoot<NodalForcesSolid, NodalStiffnessesSolid, ViscoplasticStateVariables<G, Y>, NodalCoordinates, ViscoplasticStateVariablesHistory<G, Y>, NodalCoordinatesHistory>, solver: impl FirstOrderRootFinding<NodalForcesSolid, NodalStiffnessesSolid, NodalCoordinates>, time: &[Scalar], bcs: ElasticViscoplasticBCs, ) -> Result<(Times, NodalCoordinatesHistory, ViscoplasticStateVariablesHistory<G, Y>), 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, Y> HyperelasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y> for Block<C, F, G, M, N, P>where
C: HyperelasticViscoplastic<Y>,
F: HyperelasticViscoplasticFiniteElement<C, G, M, N, P, Y>,
Self: ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y>,
Y: Tensor,
impl<C, F, const G: usize, const M: usize, const N: usize, const P: usize, Y> HyperelasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y> for Block<C, F, G, M, N, P>where
C: HyperelasticViscoplastic<Y>,
F: HyperelasticViscoplasticFiniteElement<C, G, M, N, P, Y>,
Self: ElasticViscoplasticFiniteElementBlock<C, F, G, M, N, P, Y>,
Y: Tensor,
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>
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 ImplicitDaeFirstOrderRoot<NodalForcesSolid, NodalStiffnessesSolid, 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