Skip to content

A Julia library for working with groups and their representations

License

Notifications You must be signed in to change notification settings

NickMcNutt/Groups.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Groups.jl

Build Status codecov.io

Overview

How to install

In Julia:

Pkg.clone("https://github.com/NickMcNutt/Groups.jl")

Examples

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

Functionality

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}

Contributing

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.

Completed

  • Base types and irreducible representations for O(3), SO(3), and Sn

Todo

  • 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

About

A Julia library for working with groups and their representations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages