UNPKG

ts-quantum

Version:

TypeScript library for quantum mechanics calculations and utilities

71 lines (70 loc) 2.82 kB
/** * 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;