Group Functions

group_function computes matrix elements between basis states. Theory: background page.

Initialization

julia> using GroupFunctions
julia> λ = [2, 0];
julia> basis = basis_states(λ);
julia> foreach(gt -> println(pweight(gt)), basis)[2, 0] [1, 1] [0, 2]
julia> initial = basis[findfirst(gt -> pweight(gt) == [1, 1], basis)];
julia> final = basis[findfirst(gt -> pweight(gt) == [2, 0], basis)];
julia> initial│ 2 0 ╲ │ 1 ╱
julia> final│ 2 0 ╲ │ 0 ╱

Evaluate one numeric entry

julia> using GroupFunctions
julia> using LinearAlgebra: I
julia> λ = [2, 0];
julia> basis = basis_states(λ);
julia> initial = basis[findfirst(gt -> pweight(gt) == [1, 1], basis)];
julia> final = basis[findfirst(gt -> pweight(gt) == [2, 0], basis)];
julia> U = Matrix{ComplexF64}(I, 2, 2);
julia> group_function(λ, final, initial, U)0.0 + 0.0im
julia> group_function(λ, initial, initial, U)1.0 + 0.0im

Beam splitter example

julia> using GroupFunctions
julia> λ = [2, 0];
julia> basis = basis_states(λ);
julia> initial = basis[findfirst(gt -> pweight(gt) == [1, 1], basis)];
julia> final = basis[findfirst(gt -> pweight(gt) == [2, 0], basis)];
julia> BS = su2_block(2, 1, (0.0, pi/2, 0.0));
julia> amp_11 = group_function(λ, initial, initial, BS)2.220446049250313e-16 + 0.0im
julia> amp_20 = group_function(λ, final, initial, BS)0.7071067811865476 + 0.0im
julia> round(abs2(amp_11), digits=6)0.0
julia> round(abs2(amp_20), digits=6)0.5

Compute the full (every entry) representation

julia> using GroupFunctions
julia> λ = [2, 0];
julia> BS = su2_block(2, 1, (0.0, pi/2, 0.0));
julia> values, patterns = group_function(λ, BS);
julia> size(values)(3, 3)
julia> round.(values, digits=4)3×3 Matrix{ComplexF64}: 0.5+0.0im 0.7071+0.0im 0.5+0.0im -0.7071+0.0im 0.0+0.0im 0.7071+0.0im 0.5+0.0im -0.7071+0.0im 0.5+0.0im

Compute a (single) symbolic entry

julia> using GroupFunctions
julia> λ = [2, 0];
julia> basis = basis_states(λ);
julia> initial = basis[findfirst(gt -> pweight(gt) == [1, 1], basis)];
julia> final = basis[findfirst(gt -> pweight(gt) == [2, 0], basis)];
julia> group_function(λ, final, initial)sqrt(2)*u_2_2*u_2_1

Next: HOM effect.