pub struct TensorRank2<const D: usize, I, J, U = Dimensionless>(/* private fields */);Expand description
A d-dimensional tensor of rank 2.
D is the dimension, I, J are the configurations.
Implementations§
Source§impl<I> TensorRank2<3, I, I, Dimensionless>
impl<I> TensorRank2<3, I, I, Dimensionless>
Sourcepub fn invariants(&self) -> TensorRank0List<3>
pub fn invariants(&self) -> TensorRank0List<3>
Returns the invariants of the 3x3 symmetric tensor.
Sourcepub fn eigen(&self) -> Result<(TensorRank0List<3>, Self), TensorError>
pub fn eigen(&self) -> Result<(TensorRank0List<3>, Self), TensorError>
Returns the eigenvalues and (row-wise) eigenvectors of the 3x3 symmetric tensor.
Reuse this alongside TensorRank2::powm_from_eigen/TensorRank2::dpowm_from_eigen
to evaluate several exponents against the same tensor while sharing one
eigendecomposition, instead of paying for a fresh cubic solve on every
TensorRank2::powm/TensorRank2::dpowm call.
Source§impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
Sourcepub fn determinant(&self) -> TensorRank0
pub fn determinant(&self) -> TensorRank0
Returns the determinant of the rank-2 tensor.
Sourcepub fn inverse(&self) -> TensorRank2<D, J, I, <U as UnitInv>::Output>where
U: UnitInv,
pub fn inverse(&self) -> TensorRank2<D, J, I, <U as UnitInv>::Output>where
U: UnitInv,
Returns the inverse of the rank-2 tensor.
Sourcepub fn inverse_and_determinant(
&self,
) -> (TensorRank2<D, J, I, <U as UnitInv>::Output>, TensorRank0)where
U: UnitInv,
pub fn inverse_and_determinant(
&self,
) -> (TensorRank2<D, J, I, <U as UnitInv>::Output>, TensorRank0)where
U: UnitInv,
Returns the inverse and determinant of the rank-2 tensor.
Sourcepub fn inverse_transpose(&self) -> TensorRank2<D, I, J, <U as UnitInv>::Output>where
U: UnitInv,
pub fn inverse_transpose(&self) -> TensorRank2<D, I, J, <U as UnitInv>::Output>where
U: UnitInv,
Returns the inverse transpose of the rank-2 tensor.
Sourcepub fn inverse_transpose_and_determinant(
&self,
) -> (TensorRank2<D, I, J, <U as UnitInv>::Output>, TensorRank0)where
U: UnitInv,
pub fn inverse_transpose_and_determinant(
&self,
) -> (TensorRank2<D, I, J, <U as UnitInv>::Output>, TensorRank0)where
U: UnitInv,
Returns the inverse transpose and determinant of the rank-2 tensor.
Sourcepub fn lu_decomposition(
&self,
) -> (TensorRank2<D, I, Factor, U>, TensorRank2<D, Factor, J, U>, Vec<usize>)
pub fn lu_decomposition( &self, ) -> (TensorRank2<D, I, Factor, U>, TensorRank2<D, Factor, J, U>, Vec<usize>)
Returns the LU decomposition of the rank-2 tensor.
Sourcepub fn lu_decomposition_inverse(
&self,
) -> (TensorRank2<D, I, Factor, U>, TensorRank2<D, Factor, J, U>, Vec<usize>)
pub fn lu_decomposition_inverse( &self, ) -> (TensorRank2<D, I, Factor, U>, TensorRank2<D, Factor, J, U>, Vec<usize>)
Returns the inverse of the LU decomposition of the rank-2 tensor.
Source§impl<I> TensorRank2<3, I, I, Dimensionless>
impl<I> TensorRank2<3, I, I, Dimensionless>
Sourcepub fn logm(&self) -> Result<Self, TensorError>
pub fn logm(&self) -> Result<Self, TensorError>
Returns the matrix logarithm of the 3x3 symmetric tensor.
Sourcepub fn dlogm(
&self,
) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
pub fn dlogm( &self, ) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
Returns the derivative of the matrix logarithm of the 3x3 symmetric tensor.
Source§impl<I> TensorRank2<3, I, I, Dimensionless>
impl<I> TensorRank2<3, I, I, Dimensionless>
Sourcepub fn powm(&self, exponent: TensorRank0) -> Result<Self, TensorError>
pub fn powm(&self, exponent: TensorRank0) -> Result<Self, TensorError>
Returns the matrix power of the 3x3 symmetric tensor.
Sourcepub fn powm_from_eigen(
eigenvalues: &TensorRank0List<3>,
eigenvectors: &Self,
exponent: TensorRank0,
) -> Result<Self, TensorError>
pub fn powm_from_eigen( eigenvalues: &TensorRank0List<3>, eigenvectors: &Self, exponent: TensorRank0, ) -> Result<Self, TensorError>
Returns the matrix power from an eigendecomposition obtained from Self::eigen.
Sourcepub fn dpowm(
&self,
exponent: TensorRank0,
) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
pub fn dpowm( &self, exponent: TensorRank0, ) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
Returns the derivative of the matrix power of the 3x3 symmetric tensor.
Sourcepub fn dpowm_from_eigen(
eigenvalues: &TensorRank0List<3>,
eigenvectors: &Self,
exponent: TensorRank0,
) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
pub fn dpowm_from_eigen( eigenvalues: &TensorRank0List<3>, eigenvectors: &Self, exponent: TensorRank0, ) -> Result<TensorRank4<3, I, I, I, I, Dimensionless>, TensorError>
Returns the derivative of the matrix power from an eigendecomposition obtained from
Self::eigen.
Source§impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
Sourcepub fn with_unit<V>(self) -> TensorRank2<D, I, J, V>
pub fn with_unit<V>(self) -> TensorRank2<D, I, J, V>
Asserts that the tensor carries the given unit.
Source§impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> TensorRank2<D, I, J, U>
Sourcepub const fn as_ptr(&self) -> *const TensorRank1<D, J, U>
pub const fn as_ptr(&self) -> *const TensorRank1<D, J, U>
Returns a raw pointer to the slice’s buffer.
Sourcepub fn as_tensor_rank_1(&self) -> TensorRank1<9, Factor, U>
pub fn as_tensor_rank_1(&self) -> TensorRank1<9, Factor, U>
Returns the rank-2 tensor reshaped as a rank-1 tensor.
Trait Implementations§
Source§impl<const D: usize, I, J, U> Add for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Add for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Add<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Add<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Add<TensorRank2<D, I, J, U>> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Add<TensorRank2<D, I, J, U>> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
+ operator.Source§impl<const D: usize, I, J, U> AddAssign for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> AddAssign for TensorRank2<D, I, J, U>
Source§fn add_assign(&mut self, tensor_rank_2: Self)
fn add_assign(&mut self, tensor_rank_2: Self)
+= operation. Read moreSource§impl<const D: usize, I, J, U> AddAssign<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> AddAssign<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
Source§fn add_assign(&mut self, tensor_rank_2: &Self)
fn add_assign(&mut self, tensor_rank_2: &Self)
+= operation. Read moreSource§impl<const D: usize, I, J> AssertEq for TensorRank2<D, I, J>
impl<const D: usize, I, J> AssertEq for TensorRank2<D, I, J>
fn eq(a: Self, b: TensorRank2<D, I, J>) -> Result<(), AssertionError>
fn eq_within_tols( tols: &Assert, a: Self, b: TensorRank2<D, I, J>, ) -> Result<(), AssertionError>
Source§impl<const D: usize, I, J> AssertFd for TensorRank2<D, I, J>
impl<const D: usize, I, J> AssertFd for TensorRank2<D, I, J>
fn eq_within_fd_tol( tols: &Assert, a: Self, b: TensorRank2<D, I, J>, ) -> Result<(), AssertionError>
Source§impl<const D: usize, I, J, U> Clone for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Clone for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, K, L, M, N, O, P, U> ContractAllWithFirst<&TensorRank2<D, I, M>, &TensorRank2<D, J, N>, &TensorRank2<D, K, O>, &TensorRank2<D, L, P>> for TensorRank4<D, I, J, K, L, U>
impl<const D: usize, I, J, K, L, M, N, O, P, U> ContractAllWithFirst<&TensorRank2<D, I, M>, &TensorRank2<D, J, N>, &TensorRank2<D, K, O>, &TensorRank2<D, L, P>> for TensorRank4<D, I, J, K, L, U>
type Output = TensorRank4<D, M, N, O, P, U>
fn contract_all_with_first( self, tensor_rank_2_a: &TensorRank2<D, I, M, Dimensionless>, tensor_rank_2_b: &TensorRank2<D, J, N, Dimensionless>, tensor_rank_2_c: &TensorRank2<D, K, O, Dimensionless>, tensor_rank_2_d: &TensorRank2<D, L, P, Dimensionless>, ) -> Self::Output
Source§impl<const D: usize, I, J, K, L, M, N, U> ContractFirstSecondWithSecond<&TensorRank2<D, I, M>, &TensorRank2<D, J, N>> for TensorRank4<D, M, N, K, L, U>
impl<const D: usize, I, J, K, L, M, N, U> ContractFirstSecondWithSecond<&TensorRank2<D, I, M>, &TensorRank2<D, J, N>> for TensorRank4<D, M, N, K, L, U>
type Output = TensorRank4<D, I, J, K, L, U>
fn contract_first_second_with_second( self, tensor_rank_2_a: &TensorRank2<D, I, M, Dimensionless>, tensor_rank_2_b: &TensorRank2<D, J, N, Dimensionless>, ) -> Self::Output
Source§impl<const D: usize, I, J, K, L, M, O, P, U> ContractFirstThirdFourthWithFirst<&TensorRank2<D, I, M>, &TensorRank2<D, K, O>, &TensorRank2<D, L, P>> for TensorRank4<D, I, J, K, L, U>
impl<const D: usize, I, J, K, L, M, O, P, U> ContractFirstThirdFourthWithFirst<&TensorRank2<D, I, M>, &TensorRank2<D, K, O>, &TensorRank2<D, L, P>> for TensorRank4<D, I, J, K, L, U>
type Output = TensorRank4<D, M, J, O, P, U>
fn contract_first_third_fourth_with_first( self, tensor_rank_2_a: &TensorRank2<D, I, M, Dimensionless>, tensor_rank_2_b: &TensorRank2<D, K, O, Dimensionless>, tensor_rank_2_c: &TensorRank2<D, L, P, Dimensionless>, ) -> Self::Output
Source§impl<const D: usize, I, J, K, L, N, U> ContractSecondWithFirst<&TensorRank2<D, J, N>> for TensorRank4<D, I, J, K, L, U>
impl<const D: usize, I, J, K, L, N, U> ContractSecondWithFirst<&TensorRank2<D, J, N>> for TensorRank4<D, I, J, K, L, U>
type Output = TensorRank4<D, I, N, K, L, U>
fn contract_second_with_first( self, tensor_rank_2: &TensorRank2<D, J, N, Dimensionless>, ) -> Self::Output
Source§impl<const D: usize, I, J, K, L, U, V> ContractThirdFourthWithFirstSecond<&TensorRank2<D, K, L, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, U, V> ContractThirdFourthWithFirstSecond<&TensorRank2<D, K, L, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>
fn contract_third_fourth_with_first_second( self, tensor_rank_2: &TensorRank2<D, K, L, V>, ) -> Self::Output
Source§impl<const D: usize, I, J, K, L, M, U> ContractThirdWithFirst<&TensorRank2<D, M, K>> for TensorRank4<D, I, J, M, L, U>
impl<const D: usize, I, J, K, L, M, U> ContractThirdWithFirst<&TensorRank2<D, M, K>> for TensorRank4<D, I, J, M, L, U>
type Output = TensorRank4<D, I, J, K, L, U>
fn contract_third_with_first( &self, tensor_rank_2: &TensorRank2<D, M, K, Dimensionless>, ) -> Self::Output
Source§impl<const D: usize, I, J, U, V> ContractWith<TensorRank2<D, I, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> ContractWith<TensorRank2<D, I, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U> Debug for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Debug for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Default for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Default for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U, T> Differentiate<T> for TensorRank2<D, I, J, U>where
U: UnitDiv<T>,
impl<const D: usize, I, J, U, T> Differentiate<T> for TensorRank2<D, I, J, U>where
U: UnitDiv<T>,
Source§type Derivative = TensorRank2<D, I, J, <U as UnitDiv<T>>::Output>
type Derivative = TensorRank2<D, I, J, <U as UnitDiv<T>>::Output>
Source§impl<const D: usize, I, J, U> Display for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Display for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Div<&f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Div<&f64> for TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
/ operator.Source§impl<const D: usize, I, J, U> Div<&f64> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Div<&f64> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
/ operator.Source§impl<const D: usize, I, J, U, V> Div<Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitDiv<V>,
impl<const D: usize, I, J, U, V> Div<Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitDiv<V>,
Source§impl<const D: usize, I, J, U, V> Div<Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitDiv<V>,
impl<const D: usize, I, J, U, V> Div<Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitDiv<V>,
Source§impl<const D: usize, I, J, U, V> Div<TensorRank2<D, I, J, V>> for &TensorRank1<D, I, U>where
U: UnitDiv<V>,
impl<const D: usize, I, J, U, V> Div<TensorRank2<D, I, J, V>> for &TensorRank1<D, I, U>where
U: UnitDiv<V>,
Source§impl<I, J, K, L, U, V> Div<TensorRank4<3, I, J, K, L, V>> for &TensorRank2<3, I, J, U>where
U: UnitDiv<V>,
impl<I, J, K, L, U, V> Div<TensorRank4<3, I, J, K, L, V>> for &TensorRank2<3, I, J, U>where
U: UnitDiv<V>,
Source§impl<const D: usize, I, J, U> Div<f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Div<f64> for TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
/ operator.Source§impl<const D: usize, I, J, U> Div<f64> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Div<f64> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
/ operator.Source§impl<const D: usize, I, J, U> DivAssign<&f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> DivAssign<&f64> for TensorRank2<D, I, J, U>
Source§fn div_assign(&mut self, tensor_rank_0: &TensorRank0)
fn div_assign(&mut self, tensor_rank_0: &TensorRank0)
/= operation. Read moreSource§impl<const D: usize, I, J, U> DivAssign<f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> DivAssign<f64> for TensorRank2<D, I, J, U>
Source§fn div_assign(&mut self, tensor_rank_0: TensorRank0)
fn div_assign(&mut self, tensor_rank_0: TensorRank0)
/= operation. Read moreSource§impl<C1, C2> ElasticIV<TensorRank2<3, Intermediate, Reference>> for ElasticMultiplicative<C1, C2>
impl<C1, C2> ElasticIV<TensorRank2<3, Intermediate, Reference>> for ElasticMultiplicative<C1, C2>
Source§fn cauchy_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<CauchyStress, ConstitutiveError>
fn cauchy_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<CauchyStress, ConstitutiveError>
Calculates and returns the Cauchy stress.
\boldsymbol{\sigma} = \frac{1}{J_2}\,\boldsymbol{\sigma}_1Source§fn cauchy_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<CauchyTangentStiffness, ConstitutiveError>
fn cauchy_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<CauchyTangentStiffness, ConstitutiveError>
Calculates and returns the tangent stiffness associated with the Cauchy stress.
\boldsymbol{\mathcal{T}} = \frac{1}{J_2}\,\boldsymbol{\mathcal{T}}_1\cdot\mathbf{F}_2^{-T}Source§fn first_piola_kirchhoff_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
fn first_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<FirstPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the first Piola-Kirchhoff stress.
\mathbf{P} = \mathbf{P}_1\cdot\mathbf{F}_2^{-T}Source§fn second_piola_kirchhoff_stress(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
fn second_piola_kirchhoff_stress( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<SecondPiolaKirchhoffStress, ConstitutiveError>
Calculates and returns the second Piola-Kirchhoff stress.
\mathbf{S} = \mathbf{F}_2^{-1}\cdot\mathbf{S}_1\cdot\mathbf{F}_2^{-T}Source§fn internal_variables_residual(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<FirstPiolaKirchhoffStress2, ConstitutiveError>
fn internal_variables_residual( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<FirstPiolaKirchhoffStress2, ConstitutiveError>
Calculates and returns the residual associated with the second deformation gradient.
\mathbf{R} = \mathbf{P}_2 - \mathbf{M}_1\cdot\mathbf{F}_2^{-T}Source§fn tangents(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<(FirstPiolaKirchhoffTangentStiffness, TensorRank4<3, Intermediate, Reference, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Intermediate, Reference, Stress>, FirstPiolaKirchhoffTangentStiffness2), ConstitutiveError>
fn tangents( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<(FirstPiolaKirchhoffTangentStiffness, TensorRank4<3, Intermediate, Reference, Current, Reference, Stress>, TensorRank4<3, Current, Reference, Intermediate, Reference, Stress>, FirstPiolaKirchhoffTangentStiffness2), ConstitutiveError>
Calculates and returns the tangents of the coupled system.
\mathcal{C}_{iJkL} = \frac{\partial P_{iJ}}{\partial F_{kL}}\frac{\partial R_{IJ}}{\partial F_{kL}} = -F_{IL}^{2-T}P_{kJ} - F_{mI}^1\mathcal{C}_{mJkL}\frac{\partial P_{iJ}}{\partial F_{KL}^2} = -P_{iL}F_{KJ}^{2-T} - \mathcal{C}_{iJmL}F_{mK}^1\frac{\partial R_{IJ}}{\partial F_{KL}^2} = \mathcal{C}_{IJKL}^2 + F_{IM}^1P_{ML}{F_{KJ}^{2-T}} - \frac{\partial R_{IJ}}{\partial F_{mL}}\,F_{mK}^1Source§fn internal_variables_fixed(&self) -> &[usize]
fn internal_variables_fixed(&self) -> &[usize]
The second deformation gradient is lower triangular to fix rotational freedom.
Source§type Residual = TensorRank2<3, Intermediate, Reference, Stress>
type Residual = TensorRank2<3, Intermediate, Reference, Stress>
Source§type TangentVu = TensorRank4<3, Intermediate, Reference, Current, Reference, Stress>
type TangentVu = TensorRank4<3, Intermediate, Reference, Current, Reference, Stress>
Source§type TangentUv = TensorRank4<3, Current, Reference, Intermediate, Reference, Stress>
type TangentUv = TensorRank4<3, Current, Reference, Intermediate, Reference, Stress>
Source§type TangentVv = TensorRank4<3, Intermediate, Reference, Intermediate, Reference, Stress>
type TangentVv = TensorRank4<3, Intermediate, Reference, Intermediate, Reference, Stress>
Source§fn internal_variables_initial(&self) -> DeformationGradient2
fn internal_variables_initial(&self) -> DeformationGradient2
Source§fn first_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn first_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>
Source§fn second_piola_kirchhoff_tangent_stiffness(
&self,
deformation_gradient: &DeformationGradient,
internal_variables: &V,
) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
fn second_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>
Source§impl<const D: usize, I, J, U> Erase for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Erase for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> FiniteDifference for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> FiniteDifference for TensorRank2<D, I, J, U>
Source§impl<J, U> From<&TensorRank2<3, Intermediate, J, U>> for &TensorRank2<3, Current, J, U>
impl<J, U> From<&TensorRank2<3, Intermediate, J, U>> for &TensorRank2<3, Current, J, U>
Source§fn from(tensor_rank_2: &TensorRank2<3, Intermediate, J, U>) -> Self
fn from(tensor_rank_2: &TensorRank2<3, Intermediate, J, U>) -> Self
Source§impl<const D: usize, I, J, K, L, U> From<&TensorRank4<D, I, J, K, L, U>> for TensorRank2<9, Factor, Flattened, U>
impl<const D: usize, I, J, K, L, U> From<&TensorRank4<D, I, J, K, L, U>> for TensorRank2<9, Factor, Flattened, U>
Source§fn from(tensor_rank_4: &TensorRank4<D, I, J, K, L, U>) -> Self
fn from(tensor_rank_4: &TensorRank4<D, I, J, K, L, U>) -> Self
Source§impl<const D: usize, I, J, U, V> From<(&TensorRank1<D, I, U>, &TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> From<(&TensorRank1<D, I, U>, &TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
Source§fn from(
(vector_a, vector_b): (&TensorRank1<D, I, U>, &TensorRank1<D, J, V>),
) -> Self
fn from( (vector_a, vector_b): (&TensorRank1<D, I, U>, &TensorRank1<D, J, V>), ) -> Self
Source§impl<const D: usize, I, J, U, V> From<(&TensorRank1<D, I, U>, TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> From<(&TensorRank1<D, I, U>, TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
Source§fn from(
(vector_a, vector_b): (&TensorRank1<D, I, U>, TensorRank1<D, J, V>),
) -> Self
fn from( (vector_a, vector_b): (&TensorRank1<D, I, U>, TensorRank1<D, J, V>), ) -> Self
Source§impl<const D: usize, I, J, U, V> From<(TensorRank1<D, I, U>, &TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> From<(TensorRank1<D, I, U>, &TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
Source§fn from(
(vector_a, vector_b): (TensorRank1<D, I, U>, &TensorRank1<D, J, V>),
) -> Self
fn from( (vector_a, vector_b): (TensorRank1<D, I, U>, &TensorRank1<D, J, V>), ) -> Self
Source§impl<const D: usize, I, J, U, V> From<(TensorRank1<D, I, U>, TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> From<(TensorRank1<D, I, U>, TensorRank1<D, J, V>)> for TensorRank2<D, I, J, <U as UnitMul<V>>::Output>where
U: UnitMul<V>,
Source§fn from(
(vector_a, vector_b): (TensorRank1<D, I, U>, TensorRank1<D, J, V>),
) -> Self
fn from( (vector_a, vector_b): (TensorRank1<D, I, U>, TensorRank1<D, J, V>), ) -> Self
Source§impl<const D: usize, I, J, U> From<TensorList<TensorRank1<D, J, U>, D>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> From<TensorList<TensorRank1<D, J, U>, D>> for TensorRank2<D, I, J, U>
Source§fn from(tensor_rank_1_list: TensorRank1List<D, J, D, U>) -> Self
fn from(tensor_rank_1_list: TensorRank1List<D, J, D, U>) -> Self
Source§impl<U> From<TensorRank2<3, Current, Current, U>> for TensorRank2<3, Intermediate, Intermediate, U>
impl<U> From<TensorRank2<3, Current, Current, U>> for TensorRank2<3, Intermediate, Intermediate, U>
Source§impl<J, U> From<TensorRank2<3, Current, J, U>> for TensorRank2<3, Reference, J, U>
impl<J, U> From<TensorRank2<3, Current, J, U>> for TensorRank2<3, Reference, J, U>
Source§fn from(tensor_rank_2: TensorRank2<3, Current, J, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, Current, J, U>) -> Self
Source§impl<J, U> From<TensorRank2<3, Current, J, U>> for TensorRank2<3, Intermediate, J, U>
impl<J, U> From<TensorRank2<3, Current, J, U>> for TensorRank2<3, Intermediate, J, U>
Source§fn from(tensor_rank_2: TensorRank2<3, Current, J, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, Current, J, U>) -> Self
Source§impl<I, U> From<TensorRank2<3, I, Current, U>> for TensorRank2<3, I, Reference, U>
impl<I, U> From<TensorRank2<3, I, Current, U>> for TensorRank2<3, I, Reference, U>
Source§fn from(tensor_rank_2: TensorRank2<3, I, Current, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, I, Current, U>) -> Self
Source§impl<I, U> From<TensorRank2<3, I, Intermediate, U>> for TensorRank2<3, I, Reference, U>
impl<I, U> From<TensorRank2<3, I, Intermediate, U>> for TensorRank2<3, I, Reference, U>
Source§fn from(tensor_rank_2: TensorRank2<3, I, Intermediate, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, I, Intermediate, U>) -> Self
Source§impl<I, U> From<TensorRank2<3, I, Reference, U>> for TensorRank2<3, I, Intermediate, U>
impl<I, U> From<TensorRank2<3, I, Reference, U>> for TensorRank2<3, I, Intermediate, U>
Source§fn from(tensor_rank_2: TensorRank2<3, I, Reference, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, I, Reference, U>) -> Self
Source§impl<J, U> From<TensorRank2<3, Intermediate, J, U>> for TensorRank2<3, Current, J, U>
impl<J, U> From<TensorRank2<3, Intermediate, J, U>> for TensorRank2<3, Current, J, U>
Source§fn from(tensor_rank_2: TensorRank2<3, Intermediate, J, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, Intermediate, J, U>) -> Self
Source§impl<J, U> From<TensorRank2<3, Reference, J, U>> for TensorRank2<3, Current, J, U>
impl<J, U> From<TensorRank2<3, Reference, J, U>> for TensorRank2<3, Current, J, U>
Source§fn from(tensor_rank_2: TensorRank2<3, Reference, J, U>) -> Self
fn from(tensor_rank_2: TensorRank2<3, Reference, J, U>) -> Self
Source§impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Intermediate, Intermediate, U>
impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Intermediate, Intermediate, U>
Source§impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Current, Current, U>
impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Current, Current, U>
Source§impl<const D: usize, I, J, U> From<TensorRank2<D, I, J, U>> for [[TensorRank0; D]; D]
impl<const D: usize, I, J, U> From<TensorRank2<D, I, J, U>> for [[TensorRank0; D]; D]
Source§fn from(tensor_rank_2: TensorRank2<D, I, J, U>) -> Self
fn from(tensor_rank_2: TensorRank2<D, I, J, U>) -> Self
Source§impl<const D: usize, I, J, U> From<TensorRank2<D, I, J, U>> for Vec<Vec<TensorRank0>>
impl<const D: usize, I, J, U> From<TensorRank2<D, I, J, U>> for Vec<Vec<TensorRank0>>
Source§fn from(tensor: TensorRank2<D, I, J, U>) -> Self
fn from(tensor: TensorRank2<D, I, J, U>) -> Self
Source§impl<const D: usize, I, J> From<TensorRank2<D, I, J>> for Vector
impl<const D: usize, I, J> From<TensorRank2<D, I, J>> for Vector
Source§fn from(tensor_rank_2: TensorRank2<D, I, J>) -> Self
fn from(tensor_rank_2: TensorRank2<D, I, J>) -> Self
Source§impl<const D: usize, I, J, K, L, U> From<TensorRank4<D, I, J, K, L, U>> for TensorRank2<9, Factor, Flattened, U>
impl<const D: usize, I, J, K, L, U> From<TensorRank4<D, I, J, K, L, U>> for TensorRank2<9, Factor, Flattened, U>
Source§fn from(tensor_rank_4: TensorRank4<D, I, J, K, L, U>) -> Self
fn from(tensor_rank_4: TensorRank4<D, I, J, K, L, U>) -> Self
Source§impl<const D: usize, I, J, U> FromIterator<TensorRank1<D, J, U>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> FromIterator<TensorRank1<D, J, U>> for TensorRank2<D, I, J, U>
Source§fn from_iter<Ii: IntoIterator<Item = TensorRank1<D, J, U>>>(
into_iterator: Ii,
) -> Self
fn from_iter<Ii: IntoIterator<Item = TensorRank1<D, J, U>>>( into_iterator: Ii, ) -> Self
Source§impl<const D: usize, I, J, U> FromIterator<TensorRank2<D, I, J, U>> for TensorRank2SparseVec<D, I, J, U>
impl<const D: usize, I, J, U> FromIterator<TensorRank2<D, I, J, U>> for TensorRank2SparseVec<D, I, J, U>
Source§fn from_iter<T>(into_iterator: T) -> Selfwhere
T: IntoIterator<Item = TensorRank2<D, I, J, U>>,
fn from_iter<T>(into_iterator: T) -> Selfwhere
T: IntoIterator<Item = TensorRank2<D, I, J, U>>,
Source§impl<const D: usize, I, J, K, U> FromIterator<TensorRank2<D, J, K, U>> for TensorRank3<D, I, J, K, U>
impl<const D: usize, I, J, K, U> FromIterator<TensorRank2<D, J, K, U>> for TensorRank3<D, I, J, K, U>
Source§fn from_iter<Ii: IntoIterator<Item = TensorRank2<D, J, K, U>>>(
into_iterator: Ii,
) -> Self
fn from_iter<Ii: IntoIterator<Item = TensorRank2<D, J, K, U>>>( into_iterator: Ii, ) -> Self
Source§impl<const D: usize, I, J, U> Hessian for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Hessian for TensorRank2<D, I, J, U>
Source§fn entry(&self, row: usize, column: usize) -> TensorRank0
fn entry(&self, row: usize, column: usize) -> TensorRank0
Source§fn quadratic_form(&self, vector: &Vector) -> TensorRank0
fn quadratic_form(&self, vector: &Vector) -> TensorRank0
Source§fn fill_into(self, square_matrix: &mut SquareMatrix)
fn fill_into(self, square_matrix: &mut SquareMatrix)
Source§fn retain_from(self, _retained: &[bool]) -> SquareMatrix
fn retain_from(self, _retained: &[bool]) -> SquareMatrix
Source§impl<C1, C2> HyperelasticIV<TensorRank2<3, Intermediate, Reference>> for ElasticMultiplicative<C1, C2>where
C1: Hyperelastic,
C2: Hyperelastic,
impl<C1, C2> HyperelasticIV<TensorRank2<3, Intermediate, Reference>> for ElasticMultiplicative<C1, C2>where
C1: Hyperelastic,
C2: Hyperelastic,
Source§fn helmholtz_free_energy_density(
&self,
deformation_gradient: &DeformationGradient,
deformation_gradient_2: &DeformationGradient2,
) -> Result<Quantity<EnergyDensity>, ConstitutiveError>
fn helmholtz_free_energy_density( &self, deformation_gradient: &DeformationGradient, deformation_gradient_2: &DeformationGradient2, ) -> Result<Quantity<EnergyDensity>, ConstitutiveError>
Calculates and returns the Helmholtz free energy density.
a(\mathbf{F}) = a_1(\mathbf{F}_1) + a_2(\mathbf{F}_2)Source§impl<const D: usize, I, J, U> IntoIterator for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> IntoIterator for TensorRank2<D, I, J, U>
Source§type Item = TensorRank1<D, J, U>
type Item = TensorRank1<D, J, U>
Source§type IntoIter = IntoIter<<TensorRank2<D, I, J, U> as IntoIterator>::Item, D>
type IntoIter = IntoIter<<TensorRank2<D, I, J, U> as IntoIterator>::Item, D>
Source§impl<const D: usize, I, J, U> Jacobian for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Jacobian for TensorRank2<D, I, J, U>
Source§fn fill_into_chained(self, other: Vector, vector: &mut Vector)
fn fill_into_chained(self, other: Vector, vector: &mut Vector)
Source§fn retain_from(self, retained: &[bool]) -> Vector
fn retain_from(self, retained: &[bool]) -> Vector
Source§impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, const W: usize, U, V> Mul<&TensorList<TensorRank1<D, J, V>, W>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, const W: usize, U, V> Mul<&TensorList<TensorRank1<D, J, V>, W>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
* operator.Source§impl<const D: usize, I, J, const W: usize, U, V> Mul<&TensorList<TensorRank1<D, J, V>, W>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, const W: usize, U, V> Mul<&TensorList<TensorRank1<D, J, V>, W>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
* operator.Source§impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2List2D<D, I, J, W, X, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2List2D<D, I, J, W, X, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2Vec2D<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2Vec2D<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<&TensorRank2<D, J, K, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank2<D, L, M, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank2<D, L, M, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank4<D, M, J, K, L, V>> for TensorRank2<D, I, M, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank4<D, M, J, K, L, V>> for TensorRank2<D, I, M, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank4<D, M, J, K, L, V>> for &TensorRank2<D, I, M, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<&TensorRank4<D, M, J, K, L, V>> for &TensorRank2<D, I, M, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<&TensorVector<TensorRank1<D, J, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&TensorVector<TensorRank1<D, J, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, U, V> Mul<&TensorVector<TensorRank1<D, J, V>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<&TensorVector<TensorRank1<D, J, V>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, U> Mul<&f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Mul<&f64> for TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
* operator.Source§impl<const D: usize, I, J, U> Mul<&f64> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Mul<&f64> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
* operator.Source§impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorList<TensorList<TensorRank2<D, J, K, V>, W>, X>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorList<TensorList<TensorRank2<D, J, K, V>, W>, X>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
* operator.Source§impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorList<TensorList<TensorRank2<D, J, K, V>, W>, X>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorList<TensorList<TensorRank2<D, J, K, V>, W>, X>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
* operator.Source§impl<const D: usize, I, J, const W: usize, U, V> Mul<TensorList<TensorRank1<D, J, V>, W>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, const W: usize, U, V> Mul<TensorList<TensorRank1<D, J, V>, W>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
* operator.Source§impl<const D: usize, I, J, const W: usize, U, V> Mul<TensorList<TensorRank1<D, J, V>, W>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, const W: usize, U, V> Mul<TensorList<TensorRank1<D, J, V>, W>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>
* operator.Source§impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2List2D<D, I, J, W, X, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, const W: usize, const X: usize, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2List2D<D, I, J, W, X, U>where
U: UnitMul<V>,
Source§type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2SparseVec2D<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2SparseVec2D<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2Vec2D<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2Vec2D<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorRank2<D, J, K, V>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank2<D, L, M, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank2<D, L, M, V>> for TensorRank4<D, I, J, K, L, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank4<D, M, J, K, L, V>> for TensorRank2<D, I, M, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank4<D, M, J, K, L, V>> for TensorRank2<D, I, M, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank4<D, M, J, K, L, V>> for &TensorRank2<D, I, M, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, L, M, U, V> Mul<TensorRank4<D, M, J, K, L, V>> for &TensorRank2<D, I, M, U>where
U: UnitMul<V>,
Source§impl<const D: usize, I, J, U, V> Mul<TensorVector<TensorRank1<D, J, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<TensorVector<TensorRank1<D, J, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, U, V> Mul<TensorVector<TensorRank1<D, J, V>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, U, V> Mul<TensorVector<TensorRank1<D, J, V>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorRank2SparseVec<D, J, K, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorRank2SparseVec<D, J, K, V>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>
type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorVector<TensorRank2<D, J, K, V>>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorVector<TensorRank2<D, J, K, V>>>> for TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
* operator.Source§impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorVector<TensorRank2<D, J, K, V>>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
impl<const D: usize, I, J, K, U, V> Mul<TensorVector<TensorVector<TensorRank2<D, J, K, V>>>> for &TensorRank2<D, I, J, U>where
U: UnitMul<V>,
Source§type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>
* operator.Source§impl<const D: usize, I, J, U> Mul<f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Mul<f64> for TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
* operator.Source§impl<const D: usize, I, J, U> Mul<f64> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Mul<f64> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
* operator.Source§impl<const D: usize, I, J, U, V> MulAssign<&TensorRank2<D, J, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V, Output = U>,
impl<const D: usize, I, J, U, V> MulAssign<&TensorRank2<D, J, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V, Output = U>,
Source§fn mul_assign(&mut self, tensor_rank_2: &TensorRank2<D, J, J, V>)
fn mul_assign(&mut self, tensor_rank_2: &TensorRank2<D, J, J, V>)
*= operation. Read moreSource§impl<const D: usize, I, J, U> MulAssign<&f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> MulAssign<&f64> for TensorRank2<D, I, J, U>
Source§fn mul_assign(&mut self, tensor_rank_0: &TensorRank0)
fn mul_assign(&mut self, tensor_rank_0: &TensorRank0)
*= operation. Read moreSource§impl<const D: usize, I, J, U, V> MulAssign<TensorRank2<D, J, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V, Output = U>,
impl<const D: usize, I, J, U, V> MulAssign<TensorRank2<D, J, J, V>> for TensorRank2<D, I, J, U>where
U: UnitMul<V, Output = U>,
Source§fn mul_assign(&mut self, tensor_rank_2: TensorRank2<D, J, J, V>)
fn mul_assign(&mut self, tensor_rank_2: TensorRank2<D, J, J, V>)
*= operation. Read moreSource§impl<const D: usize, I, J, U> MulAssign<f64> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> MulAssign<f64> for TensorRank2<D, I, J, U>
Source§fn mul_assign(&mut self, tensor_rank_0: TensorRank0)
fn mul_assign(&mut self, tensor_rank_0: TensorRank0)
*= operation. Read moreSource§impl<const D: usize, I, J, U> PartialEq for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> PartialEq for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Rank2 for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Rank2 for TensorRank2<D, I, J, U>
Source§type Transpose = TensorRank2<D, J, I, U>
type Transpose = TensorRank2<D, J, I, U>
Source§fn deviatoric(&self) -> Self
fn deviatoric(&self) -> Self
Source§fn deviatoric_and_trace(&self) -> (Self, Quantity<U>)
fn deviatoric_and_trace(&self) -> (Self, Quantity<U>)
Source§fn is_diagonal(&self) -> bool
fn is_diagonal(&self) -> bool
Source§fn is_identity(&self) -> bool
fn is_identity(&self) -> bool
Source§fn is_symmetric(&self) -> bool
fn is_symmetric(&self) -> bool
Source§fn squared_trace(&self) -> Quantity<Square<U>>where
U: UnitMul<U>,
fn squared_trace(&self) -> Quantity<Square<U>>where
U: UnitMul<U>,
Source§impl<const D: usize, I, J, U> Solution for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Solution for TensorRank2<D, I, J, U>
Source§fn decrement_from(&mut self, other: &Vector)
fn decrement_from(&mut self, other: &Vector)
Source§fn decrement_from_chained(&mut self, other: &mut Vector, vector: &Vector)
fn decrement_from_chained(&mut self, other: &mut Vector, vector: &Vector)
Source§fn decrement_from_retained(&mut self, retained: &[bool], other: &Vector)
fn decrement_from_retained(&mut self, retained: &[bool], other: &Vector)
Source§impl<const D: usize, I, J, U> Sub for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Sub for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Sub for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Sub for &TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Sub<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Sub<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Sub<TensorRank2<D, I, J, U>> for &TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Sub<TensorRank2<D, I, J, U>> for &TensorRank2<D, I, J, U>
Source§type Output = TensorRank2<D, I, J, U>
type Output = TensorRank2<D, I, J, U>
- operator.Source§impl<const D: usize, I, J, U> SubAssign for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> SubAssign for TensorRank2<D, I, J, U>
Source§fn sub_assign(&mut self, tensor_rank_2: Self)
fn sub_assign(&mut self, tensor_rank_2: Self)
-= operation. Read moreSource§impl<const D: usize, I, J, U> SubAssign<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> SubAssign<&TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
Source§fn sub_assign(&mut self, tensor_rank_2: &Self)
fn sub_assign(&mut self, tensor_rank_2: &Self)
-= operation. Read moreSource§impl<const D: usize, I, J, U> Sum for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Sum for TensorRank2<D, I, J, U>
Source§impl<'a, const D: usize, I, J, U> Sum<&'a TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
impl<'a, const D: usize, I, J, U> Sum<&'a TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>
Source§impl<const D: usize, I, J, U> Tensor for TensorRank2<D, I, J, U>
impl<const D: usize, I, J, U> Tensor for TensorRank2<D, I, J, U>
Source§type Item = TensorRank1<D, J, U>
type Item = TensorRank1<D, J, U>
Source§fn iter_mut(&mut self) -> impl Iterator<Item = &mut Self::Item>
fn iter_mut(&mut self) -> impl Iterator<Item = &mut Self::Item>
Source§fn error_count_zero(&self, tol_abs: Scalar, tol_rel: Scalar) -> Option<usize>
fn error_count_zero(&self, tol_abs: Scalar, tol_rel: Scalar) -> Option<usize>
Source§fn error_count(
&self,
other: &Self,
tol_abs: Scalar,
tol_rel: Scalar,
) -> Option<usize>
fn error_count( &self, other: &Self, tol_abs: Scalar, tol_rel: Scalar, ) -> Option<usize>
Source§fn full_contraction(&self, tensor: &Self) -> TensorRank0
fn full_contraction(&self, tensor: &Self) -> TensorRank0
Source§fn norm_p_sum(&self, p: TensorRank0) -> TensorRank0
fn norm_p_sum(&self, p: TensorRank0) -> TensorRank0
norm_p).