Basis states and GT patterns
GT patterns are the basis states used by GroupFunctions.jl.
Build one directly
julia> using GroupFunctionsjulia> gt = GTPattern([[2, 1, 0], [2, 1], [2]]);julia> gt│ 2 1 0 ╲ │ 2 1 〉 │ 2 ╱
Generate all patterns in an irrep
julia> using GroupFunctionsjulia> λ = [2, 1, 0];julia> basis = basis_states(λ);julia> length(basis)8julia> basis[1]│ 2 1 0 ╲ │ 1 0 〉 │ 0 ╱julia> basis[2]│ 2 1 0 ╲ │ 1 0 〉 │ 1 ╱julia> basis[3]│ 2 1 0 ╲ │ 1 1 〉 │ 1 ╱
Read the weights
julia> using GroupFunctionsjulia> gt = basis_states([2, 1, 0])[1];julia> pweight(gt)3-element Vector{Int64}: 2 1 0julia> zweight(gt)2-element Vector{Float64}: -0.5 -0.5
Bosonic occupation numbers
For symmetric irreps, pweight is the occupation vector.
julia> using GroupFunctionsjulia> λ = [2, 0, 0];julia> basis = basis_states(λ);julia> foreach(gt -> println(pweight(gt)), basis)[2, 0, 0] [1, 1, 0] [1, 0, 1] [0, 2, 0] [0, 1, 1] [0, 0, 2]
Step to the next pattern
julia> using GroupFunctionsjulia> gt = GTPattern([[2, 1, 0], [2, 1], [2]]);julia> determine_next_pattern(gt)
Pick states for a group-function calculation
julia> using GroupFunctionsjulia> using LinearAlgebra: Ijulia> λ = [2, 0, 0];julia> basis = basis_states(λ);julia> initial = basis[findfirst(gt -> pweight(gt) == [1, 1, 0], basis)];julia> final = basis[findfirst(gt -> pweight(gt) == [2, 0, 0], basis)];julia> U = Matrix{ComplexF64}(I, 3, 3);julia> group_function(λ, final, initial, U)0.0 + 0.0im
Next: group functions.