pub struct Blocks<B1, B2>(/* private fields */);Trait Implementations§
Source§impl<B1, B2, const D: usize> ElasticElements<D> for Blocks<B1, B2>where
B1: ElasticElements<D>,
B2: ElasticElements<D>,
impl<B1, B2, const D: usize> ElasticElements<D> for Blocks<B1, B2>where
B1: ElasticElements<D>,
B2: ElasticElements<D>,
fn nodal_forces_into( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_forces: &mut NodalForcesSolid<D>, ) -> Result<(), ElementModelError>
fn nodal_stiffnesses_into( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_stiffnesses: &mut NodalStiffnessesSolid<D>, ) -> Result<(), ElementModelError>
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates<D>, ) -> Result<NodalForcesSolid<D>, ElementModelError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates<D>, ) -> Result<NodalStiffnessesSolid<D>, ElementModelError>
Source§impl<B1, B2, const D: usize> ElasticHyperviscousElements<D> for Blocks<B1, B2>where
B1: ElasticHyperviscousElements<D>,
B2: ElasticHyperviscousElements<D>,
impl<B1, B2, const D: usize> ElasticHyperviscousElements<D> for Blocks<B1, B2>where
B1: ElasticHyperviscousElements<D>,
B2: ElasticHyperviscousElements<D>,
fn viscous_dissipation( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, ) -> Result<Quantity<Power>, ElementModelError>
fn dissipation_potential( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, ) -> Result<Quantity<Power>, ElementModelError>
Source§impl<B1, B2, Y, const D: usize> ElasticViscoplasticDaeElements<Y, D> for Blocks<B1, B2>where
B1: ElasticViscoplasticDaeElements<Y, D>,
B2: ElasticViscoplasticDaeElements<Y, D>,
TensorTuple<<B1::Field as Integrable>::Point, <B2::Field as Integrable>::Point>: Tensor,
TensorTuple<<B1::Field as Integrable>::Increment, <B2::Field as Integrable>::Increment>: Tensor,
TensorTuple<B1::State, B2::State>: Clone + Differentiable + Tensor,
Derivative<B1::State>: Tensor,
Derivative<B2::State>: Tensor,
TensorTupleVec<B1::State, B2::State>: TensorVec<Item = TensorTuple<B1::State, B2::State>>,
impl<B1, B2, Y, const D: usize> ElasticViscoplasticDaeElements<Y, D> for Blocks<B1, B2>where
B1: ElasticViscoplasticDaeElements<Y, D>,
B2: ElasticViscoplasticDaeElements<Y, D>,
TensorTuple<<B1::Field as Integrable>::Point, <B2::Field as Integrable>::Point>: Tensor,
TensorTuple<<B1::Field as Integrable>::Increment, <B2::Field as Integrable>::Increment>: Tensor,
TensorTuple<B1::State, B2::State>: Clone + Differentiable + Tensor,
Derivative<B1::State>: Tensor,
Derivative<B2::State>: Tensor,
TensorTupleVec<B1::State, B2::State>: TensorVec<Item = TensorTuple<B1::State, B2::State>>,
Source§type Field = Product<<B1 as ElasticViscoplasticDaeElements<Y, D>>::Field, <B2 as ElasticViscoplasticDaeElements<Y, D>>::Field>
type Field = Product<<B1 as ElasticViscoplasticDaeElements<Y, D>>::Field, <B2 as ElasticViscoplasticDaeElements<Y, D>>::Field>
The whole-mesh field this topology’s plastic state lives on.
Source§type State = TensorTuple<<B1 as ElasticViscoplasticDaeElements<Y, D>>::State, <B2 as ElasticViscoplasticDaeElements<Y, D>>::State>
type State = TensorTuple<<B1 as ElasticViscoplasticDaeElements<Y, D>>::State, <B2 as ElasticViscoplasticDaeElements<Y, D>>::State>
The per-element grouped state — a per-Gauss-point list for one block,
a
TensorTuple of those for Blocks.Source§type History = TensorVector<TensorTuple<<B1 as ElasticViscoplasticDaeElements<Y, D>>::State, <B2 as ElasticViscoplasticDaeElements<Y, D>>::State>>
type History = TensorVector<TensorTuple<<B1 as ElasticViscoplasticDaeElements<Y, D>>::State, <B2 as ElasticViscoplasticDaeElements<Y, D>>::State>>
Time history of
Self::State.Source§fn unflatten(flat: &<Self::Field as Integrable>::Point) -> Self::State
fn unflatten(flat: &<Self::Field as Integrable>::Point) -> Self::State
The inverse of
Self::flatten.Source§fn dae_rate(
&self,
t: Quantity<Time>,
nodal_coordinates: &NodalCoordinates<D>,
flat: &<Self::Field as Integrable>::Point,
) -> Result<Derivative<<Self::Field as Integrable>::Increment, Time>, ElementModelError>
fn dae_rate( &self, t: Quantity<Time>, nodal_coordinates: &NodalCoordinates<D>, flat: &<Self::Field as Integrable>::Point, ) -> Result<Derivative<<Self::Field as Integrable>::Increment, Time>, ElementModelError>
Evaluates every Gauss point’s plastic rate at
nodal_coordinates.Source§impl<B1, B2, S1, S2, const D: usize> ElasticViscoplasticElements<TensorTuple<S1, S2>, D> for Blocks<B1, B2>where
B1: ElasticViscoplasticElements<S1, D>,
B2: ElasticViscoplasticElements<S2, D>,
S1: Differentiable + Tensor,
S2: Differentiable + Tensor,
Derivative<S1>: Tensor,
Derivative<S2>: Tensor,
impl<B1, B2, S1, S2, const D: usize> ElasticViscoplasticElements<TensorTuple<S1, S2>, D> for Blocks<B1, B2>where
B1: ElasticViscoplasticElements<S1, D>,
B2: ElasticViscoplasticElements<S2, D>,
S1: Differentiable + Tensor,
S2: Differentiable + Tensor,
Derivative<S1>: Tensor,
Derivative<S2>: Tensor,
fn initial_state(&self) -> TensorTuple<S1, S2>
fn nodal_forces_into( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &TensorTuple<S1, S2>, nodal_forces: &mut NodalForcesSolid<D>, ) -> Result<(), ElementModelError>
fn nodal_stiffnesses_into( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &TensorTuple<S1, S2>, nodal_stiffnesses: &mut NodalStiffnessesSolid<D>, ) -> Result<(), ElementModelError>
fn state_variables_evolution( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &TensorTuple<S1, S2>, ) -> Result<Derivative<TensorTuple<S1, S2>>, ElementModelError>
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &S, ) -> Result<NodalForcesSolid<D>, ElementModelError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &S, ) -> Result<NodalStiffnessesSolid<D>, ElementModelError>
Source§impl<B1, B2> Elements for Blocks<B1, B2>
impl<B1, B2> Elements for Blocks<B1, B2>
fn node_neighbors(&self, neighbors: &mut [Vec<usize>])
Source§impl<B1, B2, const D: usize> HyperelasticElements<D> for Blocks<B1, B2>where
B1: HyperelasticElements<D>,
B2: HyperelasticElements<D>,
impl<B1, B2, const D: usize> HyperelasticElements<D> for Blocks<B1, B2>where
B1: HyperelasticElements<D>,
B2: HyperelasticElements<D>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates<D>, ) -> Result<Quantity<Energy>, ElementModelError>
fn nodal_stiffnesses_symmetric_into( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_stiffnesses: &mut NodalStiffnessesSolidSymmetric<D>, ) -> Result<(), ElementModelError>
fn nodal_stiffnesses_symmetric( &self, nodal_coordinates: &NodalCoordinates<D>, ) -> Result<NodalStiffnessesSolidSymmetric<D>, ElementModelError>
Source§impl<B1, B2, S1, S2, const D: usize> HyperelasticViscoplasticElements<TensorTuple<S1, S2>, D> for Blocks<B1, B2>where
B1: HyperelasticViscoplasticElements<S1, D>,
B2: HyperelasticViscoplasticElements<S2, D>,
S1: Differentiable + Tensor,
S2: Differentiable + Tensor,
Derivative<S1>: Tensor,
Derivative<S2>: Tensor,
impl<B1, B2, S1, S2, const D: usize> HyperelasticViscoplasticElements<TensorTuple<S1, S2>, D> for Blocks<B1, B2>where
B1: HyperelasticViscoplasticElements<S1, D>,
B2: HyperelasticViscoplasticElements<S2, D>,
S1: Differentiable + Tensor,
S2: Differentiable + Tensor,
Derivative<S1>: Tensor,
Derivative<S2>: Tensor,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates<D>, state_variables: &TensorTuple<S1, S2>, ) -> Result<Quantity<Energy>, ElementModelError>
Source§impl<B1, B2, const D: usize> HyperviscoelasticElements<D> for Blocks<B1, B2>where
B1: HyperviscoelasticElements<D>,
B2: HyperviscoelasticElements<D>,
impl<B1, B2, const D: usize> HyperviscoelasticElements<D> for Blocks<B1, B2>where
B1: HyperviscoelasticElements<D>,
B2: HyperviscoelasticElements<D>,
fn helmholtz_free_energy( &self, nodal_coordinates: &NodalCoordinates<D>, ) -> Result<Quantity<Energy>, ElementModelError>
Source§impl<B1, B2> ThermalConductionElements for Blocks<B1, B2>where
B1: ThermalConductionElements,
B2: ThermalConductionElements,
impl<B1, B2> ThermalConductionElements for Blocks<B1, B2>where
B1: ThermalConductionElements,
B2: ThermalConductionElements,
fn potential( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<Quantity<PowerTemperature>, ElementModelError>
fn nodal_forces_into( &self, nodal_temperatures: &NodalTemperatures, nodal_forces: &mut NodalForcesThermal, ) -> Result<(), ElementModelError>
fn nodal_stiffnesses_into( &self, nodal_temperatures: &NodalTemperatures, nodal_stiffnesses: &mut NodalStiffnessesThermal, ) -> Result<(), ElementModelError>
fn nodal_forces( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<NodalForcesThermal, ElementModelError>
fn nodal_stiffnesses( &self, nodal_temperatures: &NodalTemperatures, ) -> Result<NodalStiffnessesThermal, ElementModelError>
Source§impl<B1, B2, const D: usize> ViscoelasticElements<D> for Blocks<B1, B2>where
B1: ViscoelasticElements<D>,
B2: ViscoelasticElements<D>,
impl<B1, B2, const D: usize> ViscoelasticElements<D> for Blocks<B1, B2>where
B1: ViscoelasticElements<D>,
B2: ViscoelasticElements<D>,
fn nodal_forces_into( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, nodal_forces: &mut NodalForcesSolid<D>, ) -> Result<(), ElementModelError>
fn nodal_stiffnesses_into( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, nodal_stiffnesses: &mut NodalDampingsSolid<D>, ) -> Result<(), ElementModelError>
fn nodal_forces( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, ) -> Result<NodalForcesSolid<D>, ElementModelError>
fn nodal_stiffnesses( &self, nodal_coordinates: &NodalCoordinates<D>, nodal_velocities: &NodalVelocities<D>, ) -> Result<NodalDampingsSolid<D>, ElementModelError>
Auto Trait Implementations§
impl<B1, B2> Freeze for Blocks<B1, B2>
impl<B1, B2> RefUnwindSafe for Blocks<B1, B2>where
B1: RefUnwindSafe,
B2: RefUnwindSafe,
impl<B1, B2> Send for Blocks<B1, B2>
impl<B1, B2> Sync for Blocks<B1, B2>
impl<B1, B2> Unpin for Blocks<B1, B2>
impl<B1, B2> UnsafeUnpin for Blocks<B1, B2>where
B1: UnsafeUnpin,
B2: UnsafeUnpin,
impl<B1, B2> UnwindSafe for Blocks<B1, B2>where
B1: UnwindSafe,
B2: 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