Skip to main content

TensorRank2

Struct TensorRank2 

Source
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>

Source

pub fn invariants(&self) -> TensorRank0List<3>

Returns the invariants of the 3x3 symmetric tensor.

Source

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>

Source

pub fn determinant(&self) -> TensorRank0

Returns the determinant of the rank-2 tensor.

Source

pub fn inverse(&self) -> TensorRank2<D, J, I, <U as UnitInv>::Output>
where U: UnitInv,

Returns the inverse of the rank-2 tensor.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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>

Source

pub fn logm(&self) -> Result<Self, TensorError>

Returns the matrix logarithm of the 3x3 symmetric tensor.

Source

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>

Source

pub fn powm(&self, exponent: TensorRank0) -> Result<Self, TensorError>

Returns the matrix power of the 3x3 symmetric tensor.

Source

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.

Source

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.

Source

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>

Source

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>

Source

pub const fn as_ptr(&self) -> *const TensorRank1<D, J, U>

Returns a raw pointer to the slice’s buffer.

Source

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>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the + operator.
Source§

fn add(self, tensor_rank_2: Self) -> Self::Output

Performs the + operation. Read more
Source§

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>

The resulting type after applying the + operator.
Source§

fn add(self, tensor_rank_2: &Self) -> Self::Output

Performs the + operation. Read more
Source§

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>

The resulting type after applying the + operator.
Source§

fn add(self, tensor_rank_2: TensorRank2<D, I, J, U>) -> Self::Output

Performs the + operation. Read more
Source§

impl<const D: usize, I, J, U> AddAssign for TensorRank2<D, I, J, U>

Source§

fn add_assign(&mut self, tensor_rank_2: Self)

Performs the += operation. Read more
Source§

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)

Performs the += operation. Read more
Source§

impl<const D: usize, I, J> AssertEq for TensorRank2<D, I, J>

Source§

fn eq(a: Self, b: TensorRank2<D, I, J>) -> Result<(), AssertionError>

Source§

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>

Source§

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>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
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>

Source§

type Output = TensorRank4<D, M, N, O, P, U>

Source§

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>

Source§

type Output = TensorRank4<D, I, J, K, L, U>

Source§

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>

Source§

type Output = TensorRank4<D, M, J, O, P, U>

Source§

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>

Source§

type Output = TensorRank4<D, I, N, K, L, U>

Source§

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>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>

Source§

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>

Source§

type Output = TensorRank4<D, I, J, K, L, U>

Source§

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>,

Source§

type Output = Quantity<<U as UnitMul<V>>::Output>

The quantity the contraction gives.
Source§

fn contract_with(&self, tensor_rank_2: &TensorRank2<D, I, J, V>) -> Self::Output

Returns the full contraction with the other tensor.
Source§

impl<const D: usize, I, J, U> Debug for TensorRank2<D, I, J, U>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const D: usize, I, J, U> Default for TensorRank2<D, I, J, U>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

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>

The derivative with respect to the variable of integration.
Source§

impl<const D: usize, I, J, U> Display for TensorRank2<D, I, J, U>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const D: usize, I, J, U> Div<&f64> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_0: &TensorRank0) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U> Div<&f64> for &TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_0: &TensorRank0) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U, V> Div<Quantity<V>> for TensorRank2<D, I, J, U>
where U: UnitDiv<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitDiv<V>>::Output>

The resulting type after applying the / operator.
Source§

fn div(self, quantity: Quantity<V>) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U, V> Div<Quantity<V>> for &TensorRank2<D, I, J, U>
where U: UnitDiv<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitDiv<V>>::Output>

The resulting type after applying the / operator.
Source§

fn div(self, quantity: Quantity<V>) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U, V> Div<TensorRank2<D, I, J, V>> for &TensorRank1<D, I, U>
where U: UnitDiv<V>,

Source§

type Output = TensorRank1<D, J, <U as UnitDiv<V>>::Output>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_2: TensorRank2<D, I, J, V>) -> Self::Output

Performs the / operation. Read more
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>,

Source§

type Output = TensorRank2<3, K, L, <U as UnitDiv<V>>::Output>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_4: TensorRank4<3, I, J, K, L, V>) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U> Div<f64> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_0: TensorRank0) -> Self::Output

Performs the / operation. Read more
Source§

impl<const D: usize, I, J, U> Div<f64> for &TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the / operator.
Source§

fn div(self, tensor_rank_0: TensorRank0) -> Self::Output

Performs the / operation. Read more
Source§

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)

Performs the /= operation. Read more
Source§

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)

Performs the /= operation. Read more
Source§

impl<C1, C2> ElasticIV<TensorRank2<3, Intermediate, Reference>> for ElasticMultiplicative<C1, C2>
where C1: Elastic, C2: Elastic,

Source§

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}_1
Source§

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>

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>

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>

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>

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}^1
Source§

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>

The residual associated with the internal variables. the internal variables are in equilibrium over, typically a stress.
Source§

type TangentVu = TensorRank4<3, Intermediate, Reference, Current, Reference, Stress>

The tangent of the internal variables residual with the deformation gradient.
Source§

type TangentUv = TensorRank4<3, Current, Reference, Intermediate, Reference, Stress>

The tangent of the deformation gradient residual with the internal variables.
Source§

type TangentVv = TensorRank4<3, Intermediate, Reference, Intermediate, Reference, Stress>

The tangent of the internal variables residual with the internal variables.
Source§

fn internal_variables_initial(&self) -> DeformationGradient2

Returns the initial value for the internal variables.
Source§

fn first_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<FirstPiolaKirchhoffTangentStiffness, ConstitutiveError>

Calculates and returns the tangent stiffness associated with the first Piola-Kirchhoff stress. Read more
Source§

fn second_piola_kirchhoff_tangent_stiffness( &self, deformation_gradient: &DeformationGradient, internal_variables: &V, ) -> Result<SecondPiolaKirchhoffTangentStiffness, ConstitutiveError>

Calculates and returns the tangent stiffness associated with the second Piola-Kirchhoff stress. Read more
Source§

impl<const D: usize, I, J, U> Erase for TensorRank2<D, I, J, U>

Source§

type Erased = TensorRank2<D, Reference, Reference>

The tensor with its configurations and unit discarded.
Source§

fn erase(&self) -> &Self::Erased

Views the tensor with its configurations and unit discarded.
Source§

impl<const D: usize, I, J, U> FiniteDifference for TensorRank2<D, I, J, U>

Source§

fn error_fd( &self, comparator: &Self, epsilon: TensorRank0, ) -> Option<(bool, usize)>

Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
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>,

Source§

fn from( (vector_a, vector_b): (&TensorRank1<D, I, U>, &TensorRank1<D, J, V>), ) -> Self

Converts to this type from the input type.
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>,

Source§

fn from( (vector_a, vector_b): (&TensorRank1<D, I, U>, TensorRank1<D, J, V>), ) -> Self

Converts to this type from the input type.
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>,

Source§

fn from( (vector_a, vector_b): (TensorRank1<D, I, U>, &TensorRank1<D, J, V>), ) -> Self

Converts to this type from the input type.
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>,

Source§

fn from( (vector_a, vector_b): (TensorRank1<D, I, U>, TensorRank1<D, J, V>), ) -> Self

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

impl<U> From<TensorRank2<3, Current, Current, U>> for TensorRank2<3, Intermediate, Intermediate, U>

Source§

fn from(tensor_rank_2: TensorRank2<3, Current, Current, U>) -> Self

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Intermediate, Intermediate, U>

Source§

fn from(tensor_rank_2: TensorRank2<3, Reference, Reference, U>) -> Self

Converts to this type from the input type.
Source§

impl<U> From<TensorRank2<3, Reference, Reference, U>> for TensorRank2<3, Current, Current, U>

Source§

fn from(tensor_rank_2: TensorRank2<3, Reference, Reference, U>) -> Self

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

impl<const D: usize, I, J> From<TensorRank2<D, I, J>> for Vector

Source§

fn from(tensor_rank_2: TensorRank2<D, I, J>) -> Self

Converts to this type from the input type.
Source§

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

Converts to this type from the input type.
Source§

impl<const D: usize, I, J, U> From<Vec<Vec<f64>>> for TensorRank2<D, I, J, U>

Source§

fn from(vec: Vec<Vec<TensorRank0>>) -> Self

Converts to this type from the input type.
Source§

impl<const D: usize, I, J, U> From<Vector> for TensorRank2<D, I, J, U>

Source§

fn from(_vector: Vector) -> Self

Converts to this type from the input type.
Source§

impl<const D: usize, I, J, U> From<[[Quantity<U>; D]; D]> for TensorRank2<D, I, J, U>

Source§

fn from(array: [[Quantity<U>; D]; D]) -> Self

Converts to this type from the input type.
Source§

impl<const D: usize, I, J, U> From<[[f64; D]; D]> for TensorRank2<D, I, J, U>

Source§

fn from(array: [[TensorRank0; D]; D]) -> Self

Converts to this type from the input type.
Source§

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

Creates a value from an iterator. Read more
Source§

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) -> Self
where T: IntoIterator<Item = TensorRank2<D, I, J, U>>,

Creates a value from an iterator. Read more
Source§

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

Creates a value from an iterator. Read more
Source§

impl<const D: usize, I, J, U> Hessian for TensorRank2<D, I, J, U>

Source§

fn entry(&self, row: usize, column: usize) -> TensorRank0

The entry at the given (row, column) position.
Source§

fn quadratic_form(&self, vector: &Vector) -> TensorRank0

The quadratic form of the Hessian with a vector. Read more
Source§

fn fill_into(self, square_matrix: &mut SquareMatrix)

Fills the Hessian into a square matrix.
Source§

fn retain_from(self, _retained: &[bool]) -> SquareMatrix

Return only the retained indices.
Source§

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>

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> Index<usize> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank1<D, J, U>

The returned type after indexing.
Source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
Source§

impl<const D: usize, I, J, U> IndexMut<usize> for TensorRank2<D, I, J, U>

Source§

fn index_mut(&mut self, index: usize) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
Source§

impl<const D: usize, I, J, U> IntoIterator for TensorRank2<D, I, J, U>

Source§

type Item = TensorRank1<D, J, U>

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<<TensorRank2<D, I, J, U> as IntoIterator>::Item, D>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl<const D: usize, I, J, U> Jacobian for TensorRank2<D, I, J, U>

Source§

fn fill_into(&self, vector: &mut Vector)

Fills the Jacobian into a vector.
Source§

fn fill_into_chained(self, other: Vector, vector: &mut Vector)

Fills the Jacobian chained with a vector into another vector.
Source§

fn retain_from(self, retained: &[bool]) -> Vector

Return only the retained indices.
Source§

fn zero_out(&mut self, _indices: &[usize])

Zero out the specified indices.
Source§

impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, quantity: &Quantity<V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<&Quantity<V>> for &TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, quantity: &Quantity<V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_list: &TensorRank1List<D, J, W, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_list: &TensorRank1List<D, J, W, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank1<D, I, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1: &TensorRank1<D, J, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<&TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank1<D, I, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1: &TensorRank1<D, J, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<&TensorRank2<D, I, J, U>> for &Vector

Source§

type Output = f64

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, I, J, U>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<&TensorRank2<D, I, J, U>> for &Matrix

Source§

type Output = Vector

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, I, J, U>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J> Mul<&TensorRank2<D, I, J>> for &CscMatrix

Source§

type Output = Vector

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, I, J>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank2<D, I, K, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank2<D, I, K, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, M, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: &TensorRank2<D, L, M, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, L, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_4: &TensorRank4<D, M, J, K, L, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, L, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_4: &TensorRank4<D, M, J, K, L, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_vec: &TensorRank1Vec<D, J, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_vec: &TensorRank1Vec<D, J, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<&f64> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_0: &TensorRank0) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<&f64> for &TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_0: &TensorRank0) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, quantity: Quantity<V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<Quantity<V>> for &TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank2<D, I, J, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, quantity: Quantity<V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>

The resulting type after applying the * operator.
Source§

fn mul( self, tensor_rank_2_list_2d: TensorRank2List2D<D, J, K, W, X, V>, ) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>

The resulting type after applying the * operator.
Source§

fn mul( self, tensor_rank_2_list_2d: TensorRank2List2D<D, J, K, W, X, V>, ) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_list: TensorRank1List<D, J, W, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorRank1<D, I, <U as UnitMul<V>>::Output>, W>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_list: TensorRank1List<D, J, W, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank1<D, I, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1: TensorRank1<D, J, V>) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U, V> Mul<TensorRank1<D, J, V>> for &TensorRank2<D, I, J, U>
where U: UnitMul<V>,

Source§

type Output = TensorRank1<D, I, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1: TensorRank1<D, J, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorList<TensorList<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>, W>, X>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank2<D, I, K, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank2<D, I, K, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, J, K, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, M, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_2: TensorRank2<D, L, M, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, L, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_4: TensorRank4<D, M, J, K, L, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorRank4<D, I, J, K, L, <U as UnitMul<V>>::Output>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_4: TensorRank4<D, M, J, K, L, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_vec: TensorRank1Vec<D, J, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank1<D, I, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_1_vec: TensorRank1Vec<D, J, V>) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorRank2SparseVec<D, I, K, <U as UnitMul<V>>::Output>>

The resulting type after applying the * operator.
Source§

fn mul( self, tensor_rank_2_sparse_vec_2d: TensorRank2SparseVec2D<D, J, K, V>, ) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>

The resulting type after applying the * operator.
Source§

fn mul( self, tensor_rank_2_list_2d: TensorRank2Vec2D<D, J, K, V>, ) -> Self::Output

Performs the * operation. Read more
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>,

Source§

type Output = TensorVector<TensorVector<TensorRank2<D, I, K, <U as UnitMul<V>>::Output>>>

The resulting type after applying the * operator.
Source§

fn mul( self, tensor_rank_2_list_2d: TensorRank2Vec2D<D, J, K, V>, ) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<f64> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_0: TensorRank0) -> Self::Output

Performs the * operation. Read more
Source§

impl<const D: usize, I, J, U> Mul<f64> for &TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the * operator.
Source§

fn mul(self, tensor_rank_0: TensorRank0) -> Self::Output

Performs the * operation. Read more
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>,

Source§

fn mul_assign(&mut self, tensor_rank_2: &TensorRank2<D, J, J, V>)

Performs the *= operation. Read more
Source§

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)

Performs the *= operation. Read more
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>,

Source§

fn mul_assign(&mut self, tensor_rank_2: TensorRank2<D, J, J, V>)

Performs the *= operation. Read more
Source§

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)

Performs the *= operation. Read more
Source§

impl<const D: usize, I, J, U> PartialEq for TensorRank2<D, I, J, U>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<const D: usize, I, J, U> Rank2 for TensorRank2<D, I, J, U>

Source§

type Transpose = TensorRank2<D, J, I, U>

The type that is the transpose of the tensor.
Source§

fn deviatoric(&self) -> Self

Returns the deviatoric component of the rank-2 tensor.
Source§

fn deviatoric_and_trace(&self) -> (Self, Quantity<U>)

Returns the deviatoric component and trace of the rank-2 tensor.
Source§

fn is_diagonal(&self) -> bool

Checks whether the tensor is a diagonal tensor.
Source§

fn is_identity(&self) -> bool

Checks whether the tensor is the identity tensor.
Source§

fn is_symmetric(&self) -> bool

Checks whether the tensor is a symmetric tensor.
Source§

fn squared_trace(&self) -> Quantity<Square<U>>
where U: UnitMul<U>,

Returns the trace of the rank-2 tensor squared.
Source§

fn trace(&self) -> Quantity<U>

Returns the trace of the rank-2 tensor, which carries its unit.
Source§

fn transpose(&self) -> Self::Transpose

Returns the transpose of the rank-2 tensor.
Source§

fn second_invariant(&self) -> Quantity<Square<Self::Unit>>
where Self::Unit: UnitMul<Self::Unit>,

Returns the second invariant of the rank-2 tensor.
Source§

impl<const D: usize, I, J, U> Solution for TensorRank2<D, I, J, U>

Source§

fn decrement_from(&mut self, other: &Vector)

Decrements the solution from another vector.
Source§

fn decrement_from_chained(&mut self, other: &mut Vector, vector: &Vector)

Decrements the solution chained with a vector from another vector.
Source§

fn decrement_from_retained(&mut self, retained: &[bool], other: &Vector)

Decrements the solution from another vector on retained entries.
Source§

impl<const D: usize, I, J, U> Sub for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the - operator.
Source§

fn sub(self, tensor_rank_2: Self) -> Self::Output

Performs the - operation. Read more
Source§

impl<const D: usize, I, J, U> Sub for &TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the - operator.
Source§

fn sub(self, tensor_rank_2: Self) -> Self::Output

Performs the - operation. Read more
Source§

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>

The resulting type after applying the - operator.
Source§

fn sub(self, tensor_rank_2: &Self) -> Self::Output

Performs the - operation. Read more
Source§

impl<const D: usize, I, J, U> Sub<&Vector> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the - operator.
Source§

fn sub(self, vector: &Vector) -> Self::Output

Performs the - operation. Read more
Source§

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>

The resulting type after applying the - operator.
Source§

fn sub(self, tensor_rank_2: TensorRank2<D, I, J, U>) -> Self::Output

Performs the - operation. Read more
Source§

impl<const D: usize, I, J, U> Sub<Vector> for TensorRank2<D, I, J, U>

Source§

type Output = TensorRank2<D, I, J, U>

The resulting type after applying the - operator.
Source§

fn sub(self, vector: Vector) -> Self::Output

Performs the - operation. Read more
Source§

impl<const D: usize, I, J, U> SubAssign for TensorRank2<D, I, J, U>

Source§

fn sub_assign(&mut self, tensor_rank_2: Self)

Performs the -= operation. Read more
Source§

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)

Performs the -= operation. Read more
Source§

impl<const D: usize, I, J, U> Sum for TensorRank2<D, I, J, U>

Source§

fn sum<Ii>(iter: Ii) -> Self
where Ii: Iterator<Item = Self>,

Takes an iterator and generates Self from the elements by “summing up” the items.
Source§

impl<'a, const D: usize, I, J, U> Sum<&'a TensorRank2<D, I, J, U>> for TensorRank2<D, I, J, U>

Source§

fn sum<Ii>(iter: Ii) -> Self
where Ii: Iterator<Item = &'a Self>,

Takes an iterator and generates Self from the elements by “summing up” the items.
Source§

impl<const D: usize, I, J, U> Tensor for TensorRank2<D, I, J, U>

Source§

type Item = TensorRank1<D, J, U>

The type of item encountered when iterating over the tensor.
Source§

type Unit = U

The physical unit the tensor carries.
Source§

fn iter(&self) -> impl Iterator<Item = &Self::Item>

Returns an iterator. Read more
Source§

fn iter_mut(&mut self) -> impl Iterator<Item = &mut Self::Item>

Returns an iterator that allows modifying each value. Read more
Source§

fn len(&self) -> usize

Returns the number of elements, also referred to as the ‘length’.
Source§

fn size(&self) -> usize

Returns the total number of entries.
Source§

fn error_count_zero(&self, tol_abs: Scalar, tol_rel: Scalar) -> Option<usize>

Returns number of nonzero entries given absolute and relative tolerances.
Source§

fn error_count( &self, other: &Self, tol_abs: Scalar, tol_rel: Scalar, ) -> Option<usize>

Returns number of different entries given absolute and relative tolerances.
Source§

fn full_contraction(&self, tensor: &Self) -> TensorRank0

Returns the full contraction with another tensor.
Source§

fn is_zero(&self) -> bool

Checks whether the tensor is the zero tensor.
Source§

fn norm(&self) -> Quantity<Self::Unit>

Returns the tensor norm.
Source§

fn norm_inf(&self) -> Quantity<Self::Unit>

Returns the infinity norm.
Source§

fn norm_l1(&self) -> Quantity<Self::Unit>

Returns the L1 (Manhattan) norm.
Source§

fn norm_p_sum(&self, p: TensorRank0) -> TensorRank0

Returns the sum of p-th powers of absolute values (used internally by norm_p).
Source§

fn norm_p(&self, p: TensorRank0) -> Quantity<Self::Unit>

Returns the Minkowski (Lp) norm.
Source§

fn norm_squared(&self) -> Quantity<Square<Self::Unit>>
where Self::Unit: UnitMul<Self::Unit>,

Returns the tensor norm squared, which carries the square of its unit.
Source§

fn normalize(&mut self)

Normalizes the tensor in place.
Source§

fn sub_abs(&self, other: &Self) -> Self

Returns the positive difference of the two tensors.
Source§

fn sub_rel(&self, other: &Self) -> Self

Returns the relative difference of the two tensors.
Source§

impl<const D: usize, I, J, U> TensorArray for TensorRank2<D, I, J, U>

Source§

type Array = [[f64; D]; D]

The type of array corresponding to the tensor.
Source§

type Item = TensorRank1<D, J, U>

The type of item encountered when iterating over the tensor.
Source§

fn as_array(&self) -> Self::Array

Returns the tensor as an array.
Source§

fn identity() -> Self

Returns the identity tensor.
Source§

fn zero() -> Self

Returns the zero tensor.

Auto Trait Implementations§

§

impl<const D: usize, I, J, U> Freeze for TensorRank2<D, I, J, U>

§

impl<const D: usize, I, J, U> RefUnwindSafe for TensorRank2<D, I, J, U>

§

impl<const D: usize, I, J, U> Send for TensorRank2<D, I, J, U>
where I: Send, J: Send, U: Send,

§

impl<const D: usize, I, J, U> Sync for TensorRank2<D, I, J, U>
where I: Sync, J: Sync, U: Sync,

§

impl<const D: usize, I, J, U> Unpin for TensorRank2<D, I, J, U>
where I: Unpin, J: Unpin, U: Unpin,

§

impl<const D: usize, I, J, U> UnsafeUnpin for TensorRank2<D, I, J, U>

§

impl<const D: usize, I, J, U> UnwindSafe for TensorRank2<D, I, J, U>
where I: UnwindSafe, J: UnwindSafe, U: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AssertEq<&'a T> for T
where T: Display + PartialEq + Tensor,

Source§

impl<'a, T> AssertFd<&'a T> for T

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Is<T> for T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.