pub struct Tensor {
pub xx: f64,
pub xy: f64,
pub xz: f64,
pub yx: f64,
pub yy: f64,
pub yz: f64,
pub zx: f64,
pub zy: f64,
pub zz: f64,
}Expand description
Full (non-symmetric) 3×3 tensor stored row-major.
Component order: xx, xy, xz, yx, yy, yz, zx, zy, zz.
Maps to Foam::tensor (Foam::Tensor<scalar>).
Fields§
§xx: f64§xy: f64§xz: f64§yx: f64§yy: f64§yz: f64§zx: f64§zy: f64§zz: f64Implementations§
Source§impl Tensor
impl Tensor
Sourcepub fn new(
xx: f64,
xy: f64,
xz: f64,
yx: f64,
yy: f64,
yz: f64,
zx: f64,
zy: f64,
zz: f64,
) -> Self
pub fn new( xx: f64, xy: f64, xz: f64, yx: f64, yy: f64, yz: f64, zx: f64, zy: f64, zz: f64, ) -> Self
Construct a tensor from its nine components in row-major order.
Sourcepub fn from_cols(x: Vector3, y: Vector3, z: Vector3) -> Self
pub fn from_cols(x: Vector3, y: Vector3, z: Vector3) -> Self
Construct from three column vectors.
Sourcepub fn mat_mul(self, t: Self) -> Self
pub fn mat_mul(self, t: Self) -> Self
Matrix multiply: self & rhs. C++ operator&(Tensor, Tensor) / .inner(t2).
Sourcepub fn mat_vec(self, v: Vector3) -> Vector3
pub fn mat_vec(self, v: Vector3) -> Vector3
Matrix-vector multiply: T · v. C++ operator&(Tensor, Vector).
Sourcepub fn vec_mat(v: Vector3, t: Self) -> Vector3
pub fn vec_mat(v: Vector3, t: Self) -> Vector3
Vector-matrix multiply: v · T. C++ operator&(Vector, Tensor).
Sourcepub fn double_inner(self, t: Self) -> f64
pub fn double_inner(self, t: Self) -> f64
Double contraction (full Frobenius inner product). C++ operator&&(Tensor, Tensor).
Sourcepub fn symm(self) -> SymmTensor
pub fn symm(self) -> SymmTensor
Symmetric part: 0.5*(T + T^T). Returns SymmTensor.
Sourcepub fn two_symm(self) -> SymmTensor
pub fn two_symm(self) -> SymmTensor
Twice the symmetric part: T + T^T. Returns SymmTensor.
Sourcepub fn dev_symm(self) -> SymmTensor
pub fn dev_symm(self) -> SymmTensor
Deviatoric of symmetric part: symm(T) - (tr/3)*I. Returns SymmTensor.
Sourcepub fn dev_two_symm(self) -> SymmTensor
pub fn dev_two_symm(self) -> SymmTensor
Deviatoric of twice the symmetric part: twoSymm(T) - (2*tr/3)*I. Returns SymmTensor.
Sourcepub fn hodge_dual(self) -> Vector3
pub fn hodge_dual(self) -> Vector3
Hodge dual as a Vector. C++ operator*(Tensor).
Sourcepub fn invariant_i(self) -> f64
pub fn invariant_i(self) -> f64
First invariant: trace
Sourcepub fn invariant_ii(self) -> f64
pub fn invariant_ii(self) -> f64
Second invariant: (xxyy + yyzz + xxzz) - (xyyx + yzzy + xzzx)
Sourcepub fn invariant_iii(self) -> f64
pub fn invariant_iii(self) -> f64
Third invariant: determinant
Sourcepub fn is_identity(self, tol: f64) -> bool
pub fn is_identity(self, tol: f64) -> bool
True if approximately the identity.
Trait Implementations§
Source§impl Add<SphericalTensor> for Tensor
impl Add<SphericalTensor> for Tensor
Source§impl Add<SymmTensor> for Tensor
impl Add<SymmTensor> for Tensor
Source§impl Add<Tensor> for SphericalTensor
impl Add<Tensor> for SphericalTensor
Source§impl Add<Tensor> for SymmTensor
impl Add<Tensor> for SymmTensor
Source§impl AddAssign for Tensor
impl AddAssign for Tensor
Source§fn add_assign(&mut self, r: Self)
fn add_assign(&mut self, r: Self)
+= operation. Read moreimpl Copy for Tensor
Source§impl From<SphericalTensor> for Tensor
impl From<SphericalTensor> for Tensor
Source§fn from(st: SphericalTensor) -> Self
fn from(st: SphericalTensor) -> Self
Source§impl From<SymmTensor> for Tensor
impl From<SymmTensor> for Tensor
Source§fn from(st: SymmTensor) -> Self
fn from(st: SymmTensor) -> Self
Source§impl Mul<SphericalTensor> for Tensor
impl Mul<SphericalTensor> for Tensor
Source§impl Mul<SymmTensor> for Tensor
impl Mul<SymmTensor> for Tensor
Source§impl Mul<Tensor> for SphericalTensor
impl Mul<Tensor> for SphericalTensor
Source§impl Mul<Tensor> for SymmTensor
impl Mul<Tensor> for SymmTensor
Source§impl MulAssign<f64> for Tensor
impl MulAssign<f64> for Tensor
Source§fn mul_assign(&mut self, s: f64)
fn mul_assign(&mut self, s: f64)
*= operation. Read more