Overview
GroupFunctions.jl computes matrix elements of irreducible representations of the unitary group U(n), both numerically and symbolically. Given a unitary matrix and an irrep label, it returns the corresponding transformation matrix, with basis states represented by Gelfand-Tsetlin patterns.
For symbolic calculations, the same API works with symbolic block matrices such as su2_block_symbolic:
julia> U = su2_block_symbolic(2,1);
julia> U
2×2 Matrix{SymEngine.Basic}:
v_1_1 v_1_2
v_2_1 v_2_2
julia> group_function([2,0], U)[1]
3×3 Matrix{SymEngine.Basic}:
v_2_2^2 sqrt(2)*v_2_2*v_2_1 v_2_1^2
sqrt(2)*v_1_2*v_2_2 v_1_1*v_2_2 + v_1_2*v_2_1 sqrt(2)*v_1_1*v_2_1
v_1_2^2 sqrt(2)*v_1_1*v_1_2 v_1_1^2The same approach works for SU(3) irreps with a full symbolic 3×3 matrix:
julia> U = [GroupFunctions.SymEngine.symbols("u_$(i)_$(j)") for i in 1:3, j in 1:3];
julia> U
3×3 Matrix{SymEngine.Basic}:
u_1_1 u_1_2 u_1_3
u_2_1 u_2_2 u_2_3
u_3_1 u_3_2 u_3_3
julia> group_function([2,0,0], U)[1]
6×6 Matrix{SymEngine.Basic}:
u_3_3^2 sqrt(2)*u_3_2*u_3_3 … u_3_1^2
sqrt(2)*u_2_3*u_3_3 u_2_2*u_3_3 + u_2_3*u_3_2 sqrt(2)*u_2_1*u_3_1
sqrt(2)*u_1_3*u_3_3 u_1_2*u_3_3 + u_1_3*u_3_2 sqrt(2)*u_1_1*u_3_1
u_2_3^2 sqrt(2)*u_2_2*u_2_3 u_2_1^2
sqrt(2)*u_2_3*u_1_3 u_2_2*u_1_3 + u_2_3*u_1_2 sqrt(2)*u_2_1*u_1_1
u_1_3^2 sqrt(2)*u_1_2*u_1_3 … u_1_1^2Installation
If this is your first time using Julia, please refer to the language documentation and tutorials. Install the package from the Julia registry with:
julia> ]
pkg> add GroupFunctionsRequires Julia ≥ 1.6.
Contact
Questions and suggestions: david.amaroalcala@savba.sk