pub struct SymmTensor {
pub xx: f64,
pub xy: f64,
pub xz: f64,
pub yy: f64,
pub yz: f64,
pub zz: f64,
}Expand description
Symmetric 3×3 tensor stored in upper-triangle order: xx, xy, xz, yy, yz, zz.
Maps to Foam::symmTensor (Foam::SymmTensor<scalar>).
Fields§
§xx: f64§xy: f64§xz: f64§yy: f64§yz: f64§zz: f64Implementations§
Source§impl SymmTensor
impl SymmTensor
Sourcepub fn new(xx: f64, xy: f64, xz: f64, yy: f64, yz: f64, zz: f64) -> Self
pub fn new(xx: f64, xy: f64, xz: f64, yy: f64, yz: f64, zz: f64) -> Self
Construct from the six upper-triangle components (xx, xy, xz, yy, yz, zz).
Sourcepub fn from_diag(xx: f64, yy: f64, zz: f64) -> Self
pub fn from_diag(xx: f64, yy: f64, zz: f64) -> Self
Construct from diagonal only (off-diagonal = 0).
pub fn row_y(self) -> Vector3
pub fn row_z(self) -> Vector3
Sourcepub fn sph(self) -> SphericalTensor
pub fn sph(self) -> SphericalTensor
Spherical (isotropic) part: (tr/3) * I
Sourcepub fn mag_sqr(self) -> f64
pub fn mag_sqr(self) -> f64
Frobenius norm squared (off-diagonal counted twice, matching OpenFOAM)
pub fn mag(self) -> f64
Sourcepub fn double_inner(self, rhs: Self) -> f64
pub fn double_inner(self, rhs: Self) -> f64
Double contraction (Frobenius inner product). C++ operator&&.
Note: off-diagonal elements contribute twice because the tensor is symmetric.
Sourcepub fn mat_vec(self, v: Vector3) -> Vector3
pub fn mat_vec(self, v: Vector3) -> Vector3
Matrix multiply SymmTensor·Vector → Vector. C++ operator&(SymmTensor, Vector).
Sourcepub fn hodge_dual(self) -> Vector3
pub fn hodge_dual(self) -> Vector3
Hodge dual: returns the axial vector. C++ operator*(SymmTensor).
Sourcepub fn from_outer(v: Vector3) -> Self
pub fn from_outer(v: Vector3) -> Self
Outer (dyadic) product of a vector with itself: v ⊗ v → SymmTensor.
C++ sqr(Vector).
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 + xx*zz) - (xy² + yz² + xz²)
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 the tensor is (approximately) the identity.
Trait Implementations§
Source§impl Add for SymmTensor
impl Add for SymmTensor
Source§impl Add<SphericalTensor> for SymmTensor
impl Add<SphericalTensor> for SymmTensor
Source§type Output = SymmTensor
type Output = SymmTensor
+ operator.Source§fn add(self, spt: SphericalTensor) -> Self
fn add(self, spt: SphericalTensor) -> Self
+ operation. Read moreSource§impl Add<SymmTensor> for SphericalTensor
impl Add<SymmTensor> for SphericalTensor
Source§type Output = SymmTensor
type Output = SymmTensor
+ operator.Source§fn add(self, st: SymmTensor) -> SymmTensor
fn add(self, st: SymmTensor) -> SymmTensor
+ operation. Read moreSource§impl Add<SymmTensor> for Tensor
impl Add<SymmTensor> for Tensor
Source§impl Add<Tensor> for SymmTensor
impl Add<Tensor> for SymmTensor
Source§impl AddAssign for SymmTensor
impl AddAssign for SymmTensor
Source§fn add_assign(&mut self, r: Self)
fn add_assign(&mut self, r: Self)
+= operation. Read moreSource§impl Clone for SymmTensor
impl Clone for SymmTensor
impl Copy for SymmTensor
Source§impl Debug for SymmTensor
impl Debug for SymmTensor
Source§impl Default for SymmTensor
impl Default for SymmTensor
Source§impl Div<f64> for SymmTensor
impl Div<f64> for SymmTensor
Source§impl From<SphericalTensor> for SymmTensor
impl From<SphericalTensor> for SymmTensor
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 for SymmTensor
impl Mul for SymmTensor
Source§impl Mul<SphericalTensor> for SymmTensor
impl Mul<SphericalTensor> for SymmTensor
Source§type Output = SymmTensor
type Output = SymmTensor
* operator.Source§fn mul(self, spt: SphericalTensor) -> Self
fn mul(self, spt: SphericalTensor) -> Self
* operation. Read moreSource§impl Mul<SymmTensor> for f64
impl Mul<SymmTensor> for f64
Source§type Output = SymmTensor
type Output = SymmTensor
* operator.Source§fn mul(self, st: SymmTensor) -> SymmTensor
fn mul(self, st: SymmTensor) -> SymmTensor
* operation. Read moreSource§impl Mul<SymmTensor> for SphericalTensor
impl Mul<SymmTensor> for SphericalTensor
Source§type Output = SymmTensor
type Output = SymmTensor
* operator.Source§fn mul(self, st: SymmTensor) -> SymmTensor
fn mul(self, st: SymmTensor) -> SymmTensor
* operation. Read moreSource§impl Mul<SymmTensor> for Tensor
impl Mul<SymmTensor> for Tensor
Source§impl Mul<Tensor> for SymmTensor
impl Mul<Tensor> for SymmTensor
Source§impl Mul<f64> for SymmTensor
impl Mul<f64> for SymmTensor
Source§impl MulAssign<f64> for SymmTensor
impl MulAssign<f64> for SymmTensor
Source§fn mul_assign(&mut self, s: f64)
fn mul_assign(&mut self, s: f64)
*= operation. Read moreSource§impl Neg for SymmTensor
impl Neg for SymmTensor
Source§impl PartialEq for SymmTensor
impl PartialEq for SymmTensor
impl StructuralPartialEq for SymmTensor
Source§impl Sub for SymmTensor
impl Sub for SymmTensor
Source§impl Sub<SphericalTensor> for SymmTensor
impl Sub<SphericalTensor> for SymmTensor
Source§type Output = SymmTensor
type Output = SymmTensor
- operator.Source§fn sub(self, spt: SphericalTensor) -> Self
fn sub(self, spt: SphericalTensor) -> Self
- operation. Read moreSource§impl Sub<SymmTensor> for SphericalTensor
impl Sub<SymmTensor> for SphericalTensor
Source§type Output = SymmTensor
type Output = SymmTensor
- operator.Source§fn sub(self, st: SymmTensor) -> SymmTensor
fn sub(self, st: SymmTensor) -> SymmTensor
- operation. Read moreSource§impl Sub<SymmTensor> for Tensor
impl Sub<SymmTensor> for Tensor
Source§impl Sub<Tensor> for SymmTensor
impl Sub<Tensor> for SymmTensor
Source§impl SubAssign for SymmTensor
impl SubAssign for SymmTensor
Source§fn sub_assign(&mut self, r: Self)
fn sub_assign(&mut self, r: Self)
-= operation. Read more