-
A generic Julia package for working with groups
-
Able to compute linear group representations (including irreducible representations)
-
Code is focused on high performance and high generality
-
Serves as a base library for other group-oriented packages, like GroupFFT.jl
-
Licensed under the MIT License
In Julia:
Pkg.clone("https://github.com/NickMcNutt/Groups.jl")
Generate an element of the orthogonal group O(3) using the Euler ZYZ parameterization:
using Groups
α, β, γ = π/2, π/2, π/2
g = O3(α, β, γ)
Compute the unitary irreducible representations of element g
. For the group O(3), these are Wigner-D matrices.
unitary_irreps = [unitary_irrep(g, i) for i in 0:2]
display.(round.(unitary_irreps, 3))
1×1 Array{Complex{Float64},2}:
1.0+0.0im
3×3 Array{Complex{Float64},2}:
-0.5+0.0im 0.0+0.707im 0.5+0.0im
-0.0-0.707im 0.0+0.0im 0.0-0.707im
0.5+0.0im -0.0+0.707im -0.5-0.0im
5×5 Array{Complex{Float64},2}:
0.25-0.0im -0.0-0.5im -0.612+0.0im 0.0+0.5im 0.25+0.0im
0.0+0.5im 0.5-0.0im 0.0+0.0im 0.5+0.0im 0.0-0.5im
-0.612+0.0im -0.0-0.0im -0.5-0.0im 0.0-0.0im -0.612-0.0im
-0.0-0.5im 0.5+0.0im -0.0+0.0im 0.5+0.0im -0.0+0.5im
0.25+0.0im -0.0+0.5im -0.612-0.0im 0.0-0.5im 0.25+0.0im
If we don't want complex numbers, we can generate real irreducible representations instead:
orthogonal_irreps = [orthogonal_irrep(g, i) for i in 0:2]
display.(round.(orthogonal_irreps, 3))
1×1 Array{Float64,2}:
1.0
3×3 Array{Float64,2}:
-1.0 -0.0 0.0
0.0 -0.0 1.0
-0.0 1.0 0.0
5×5 Array{Float64,2}:
-0.0 -1.0 -0.0 0.0 -0.0
-1.0 0.0 0.0 -0.0 0.0
0.0 -0.0 -0.5 -0.0 0.866
-0.0 0.0 -0.0 1.0 0.0
0.0 -0.0 0.866 0.0 0.5
Groups.jl specifies an abstract base type Group
from which all group types derive. Currently, support is available for the following groups:
OrthogonalGroup{T, 3}
SpecialOrthogonalGroup{T, 3}
SymmetricGroup{T, N}
For convenience, type aliases are provided for groups of low dimension:
O3{T}
SO3{T}
Groups.jl aims to be a comprehensive package that provides base types and linear representations for all of the most widely used groups. We welcome the support of anyone who wishes to contribute to this project.
- Base types and irreducible representations for O(3), SO(3), and Sn
- Base types and representations for O(n), U(n), SU(n), SL(n), SE(n), PSL(n)
- Support for other kinds of group representations (standard, faithful, etc.)
- Support for fields other than the complex and real numbers