pub struct Su3Algebra(/* private fields */);Expand description
Lie algebra su(3) - 8-dimensional space of traceless anti-Hermitian 3×3 matrices
Elements are represented by 8 real coefficients [a₁, a₂, …, a₈] corresponding to the linear combination:
X = i·∑ⱼ aⱼ·λⱼwhere λⱼ are the Gell-Mann matrices (j = 1..8).
§Basis Elements
The 8 Gell-Mann matrices form a basis for su(3). They satisfy:
- Hermitian: λⱼ† = λⱼ
- Traceless: Tr(λⱼ) = 0
- Normalized: Tr(λⱼ λₖ) = 2δⱼₖ
§Examples
use lie_groups::su3::Su3Algebra;
use lie_groups::traits::LieAlgebra;
// First basis element (λ₁)
let e1 = Su3Algebra::basis_element(0);
assert_eq!(*e1.components(), [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]);Implementations§
Source§impl Su3Algebra
impl Su3Algebra
Source§impl Su3Algebra
impl Su3Algebra
Sourcepub fn to_matrix(&self) -> Array2<Complex64>
pub fn to_matrix(&self) -> Array2<Complex64>
Convert algebra element to 3×3 anti-Hermitian matrix
Returns X = i·∑ⱼ aⱼ·(λⱼ/2) where λⱼ are Gell-Mann matrices. Convention: tr(Tₐ†Tᵦ) = ½δₐᵦ where Tₐ = iλₐ/2.
Sourcepub fn from_matrix(matrix: &Array2<Complex64>) -> Self
pub fn from_matrix(matrix: &Array2<Complex64>) -> Self
Extract algebra element from 3×3 anti-Hermitian matrix
Inverse of to_matrix(). Uses the normalization Tr(λⱼ λₖ) = 2δⱼₖ.
Given X = i·∑ⱼ aⱼ·(λⱼ/2), we have Tr(X·λⱼ) = i·aⱼ, so aⱼ = -i·Tr(X·λⱼ).
Sourcepub fn gell_mann_matrix(j: usize) -> Array2<Complex64>
pub fn gell_mann_matrix(j: usize) -> Array2<Complex64>
Get the j-th Gell-Mann matrix (j = 0..7 for λ₁..λ₈)
Returns the Hermitian Gell-Mann matrix λⱼ (not i·λⱼ).
Trait Implementations§
Source§impl AbsDiffEq for Su3Algebra
impl AbsDiffEq for Su3Algebra
Source§fn default_epsilon() -> Self::Epsilon
fn default_epsilon() -> Self::Epsilon
Source§fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool
fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool
Source§fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
AbsDiffEq::abs_diff_eq.Source§impl Add<&Su3Algebra> for &Su3Algebra
impl Add<&Su3Algebra> for &Su3Algebra
Source§type Output = Su3Algebra
type Output = Su3Algebra
+ operator.Source§fn add(self, rhs: &Su3Algebra) -> Su3Algebra
fn add(self, rhs: &Su3Algebra) -> Su3Algebra
+ operation. Read moreSource§impl Add<&Su3Algebra> for Su3Algebra
impl Add<&Su3Algebra> for Su3Algebra
Source§type Output = Su3Algebra
type Output = Su3Algebra
+ operator.Source§fn add(self, rhs: &Su3Algebra) -> Su3Algebra
fn add(self, rhs: &Su3Algebra) -> Su3Algebra
+ operation. Read moreSource§impl Add<Su3Algebra> for &Su3Algebra
impl Add<Su3Algebra> for &Su3Algebra
Source§type Output = Su3Algebra
type Output = Su3Algebra
+ operator.Source§fn add(self, rhs: Su3Algebra) -> Su3Algebra
fn add(self, rhs: Su3Algebra) -> Su3Algebra
+ operation. Read moreSource§impl Add for Su3Algebra
impl Add for Su3Algebra
Source§impl Casimir for Su3Algebra
impl Casimir for Su3Algebra
Source§fn higher_casimir_eigenvalues(irrep: &Self::Representation) -> Vec<f64>
fn higher_casimir_eigenvalues(irrep: &Self::Representation) -> Vec<f64>
Cubic Casimir eigenvalue for SU(3).
For representation (p, q), the cubic Casimir eigenvalue is:
c₃(p,q) = (1/18)(p - q)(2p + q + 3)(p + 2q + 3)§Properties
- Conjugation: c₃(p,q) = -c₃(q,p). Conjugate representations have opposite c₃.
- Self-conjugate representations: c₃ = 0 when p = q (e.g., adjoint (1,1)).
- Physical interpretation: In QCD, distinguishes quarks (positive c₃) from antiquarks (negative c₃) beyond the quadratic Casimir.
§Examples
(0,0): c₃ = 0 (trivial)
(1,0): c₃ = 10/9 (fundamental)
(0,1): c₃ = -10/9 (antifundamental)
(1,1): c₃ = 0 (adjoint, self-conjugate)
(2,0): c₃ = 70/9 (symmetric tensor)§Reference
Georgi, “Lie Algebras in Particle Physics” (1999), Chapter 7.
Source§type Representation = Su3Irrep
type Representation = Su3Irrep
Source§fn quadratic_casimir_eigenvalue(irrep: &Self::Representation) -> f64
fn quadratic_casimir_eigenvalue(irrep: &Self::Representation) -> f64
Source§fn num_casimirs() -> usize
fn num_casimirs() -> usize
Source§impl Clone for Su3Algebra
impl Clone for Su3Algebra
Source§fn clone(&self) -> Su3Algebra
fn clone(&self) -> Su3Algebra
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Su3Algebra
impl Debug for Su3Algebra
Source§impl Display for Su3Algebra
impl Display for Su3Algebra
Source§impl LieAlgebra for Su3Algebra
impl LieAlgebra for Su3Algebra
Source§fn bracket(&self, other: &Self) -> Self
fn bracket(&self, other: &Self) -> Self
Lie bracket for su(3): [X, Y] = XY - YX
Computed using structure constants fᵢⱼₖ for O(1) performance.
§Mathematical Formula
For X = i·∑ᵢ aᵢ·(λᵢ/2) and Y = i·∑ⱼ bⱼ·(λⱼ/2):
[X, Y] = -i·∑ₖ (∑ᵢⱼ aᵢ·bⱼ·fᵢⱼₖ)·(λₖ/2)§Performance
Uses pre-computed table of non-zero structure constants.
- Old implementation: O(512) iterations with conditional checks
- New implementation: O(54) direct lookups
- Speedup: ~10× fewer operations
§Complexity
O(1) - constant time (54 multiply-adds)
§Properties
- Antisymmetric: [X, Y] = -[Y, X]
- Jacobi identity: [X, [Y, Z]] + [Y, [Z, X]] + [Z, [X, Y]] = 0
Source§fn basis_element(i: usize) -> Self
fn basis_element(i: usize) -> Self
Source§fn from_components(components: &[f64]) -> Self
fn from_components(components: &[f64]) -> Self
Source§impl Mul<Su3Algebra> for f64
impl Mul<Su3Algebra> for f64
Source§type Output = Su3Algebra
type Output = Su3Algebra
* operator.Source§fn mul(self, rhs: Su3Algebra) -> Su3Algebra
fn mul(self, rhs: Su3Algebra) -> Su3Algebra
* operation. Read moreSource§impl Mul<f64> for Su3Algebra
impl Mul<f64> for Su3Algebra
Source§impl Neg for Su3Algebra
impl Neg for Su3Algebra
Source§impl PartialEq for Su3Algebra
impl PartialEq for Su3Algebra
Source§impl RelativeEq for Su3Algebra
impl RelativeEq for Su3Algebra
Source§fn default_max_relative() -> Self::Epsilon
fn default_max_relative() -> Self::Epsilon
Source§fn relative_eq(
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon,
) -> bool
fn relative_eq( &self, other: &Self, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool
Source§fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon,
) -> bool
fn relative_ne( &self, other: &Rhs, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool
RelativeEq::relative_eq.Source§impl Sub for Su3Algebra
impl Sub for Su3Algebra
impl AntiHermitianByConstruction for Su3Algebra
su(3) algebra elements are anti-Hermitian by construction.
The representation uses {iλⱼ} where λⱼ are Hermitian Gell-Mann matrices.
impl Copy for Su3Algebra
impl StructuralPartialEq for Su3Algebra
impl TracelessByConstruction for Su3Algebra
su(3) algebra elements are traceless by construction.
The representation Su3Algebra::new([f64; 8]) stores coefficients in the
Gell-Mann basis {iλ₁, …, iλ₈}. All Gell-Mann matrices are traceless.
Auto Trait Implementations§
impl Freeze for Su3Algebra
impl RefUnwindSafe for Su3Algebra
impl Send for Su3Algebra
impl Sync for Su3Algebra
impl Unpin for Su3Algebra
impl UnsafeUnpin for Su3Algebra
impl UnwindSafe for Su3Algebra
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.