ts-quantum
Version:
TypeScript library for quantum mechanics calculations and utilities
71 lines (70 loc) • 2.82 kB
TypeScript
/**
* Wigner symbols implementation
* Includes 3j, 6j, and 9j symbols for angular momentum coupling
*/
import { Complex } from '../core/types';
/**
* Validates triangle inequality for three angular momenta
*
* @param j1 First angular momentum
* @param j2 Second angular momentum
* @param j3 Third angular momentum
* @returns true if triangle inequality is satisfied
*/
export declare function isValidTriangle(j1: number, j2: number, j3: number): boolean;
/**
* Calculates Wigner 3j symbol using Clebsch-Gordan coefficients
*
* The Wigner 3j symbol is related to Clebsch-Gordan coefficients by:
* (j1 j2 j3) = (-1)^(j1-j2-m3) / sqrt(2*j3+1) * ⟨j1,m1;j2,m2|j3,-m3⟩
* (m1 m2 m3)
*
* Based on verified formula from Sage/SymPy documentation:
* ⟨j₁ m₁ j₂ m₂ | j₃ m₃⟩ = (-1)^(j₁-j₂+m₃) * √(2j₃+1) * Wigner3j(j₁, j₂, j₃, m₁, m₂, -m₃)
*
* @param j1 First angular momentum
* @param j2 Second angular momentum
* @param j3 Third angular momentum
* @param m1 First magnetic quantum number
* @param m2 Second magnetic quantum number
* @param m3 Third magnetic quantum number
* @returns Wigner 3j symbol value
*/
export declare function wigner3j(j1: number, j2: number, j3: number, m1: number, m2: number, m3: number): Complex;
/**
* Applies symmetry operation to Wigner 3j symbol
* There are 12 symmetry operations for 3j symbols
*
* @param j1 First angular momentum
* @param j2 Second angular momentum
* @param j3 Third angular momentum
* @param m1 First magnetic quantum number
* @param m2 Second magnetic quantum number
* @param m3 Third magnetic quantum number
* @param operation Symmetry operation index (0-11)
* @returns Transformed 3j symbol with phase factor
*/
export declare function wigner3jSymmetry(j1: number, j2: number, j3: number, m1: number, m2: number, m3: number, operation: number): {
value: Complex;
phase: number;
};
/**
* Calculates Wigner 6j symbol using Racah's formula
*
* Uses the explicit sum formula:
* {j1 j2 j3} = Delta(j1,j2,j3)Delta(j1,l2,l3)Delta(l1,j2,l3)Delta(l1,l2,j3) ×
* {l1 l2 l3} Σ_z (-1)^z [(z-j1-j2-j3)!(z-j1-l2-l3)!(z-l1-j2-l3)!(z-l1-l2-j3)! ×
* (j1+j2+l1+l2-z)!(j2+j3+l2+l3-z)!(j3+j1+l3+l1-z)!]^(-1)
*
* where Delta(a,b,c) is the triangle coefficient.
*
* @param j1 Angular momentum j1
* @param j2 Angular momentum j2
* @param j3 Angular momentum j3
* @param l1 Angular momentum l1
* @param l2 Angular momentum l2
* @param l3 Angular momentum l3
* @returns Wigner 6j symbol value
*/
export declare function wigner6j(j1: number, j2: number, j3: number, l1: number, l2: number, l3: number): Complex;
export declare function wigner9j(j1: number, j2: number, j3: number, l1: number, l2: number, l3: number, k1: number, k2: number, k3: number): Complex;