FiniteGroups.jl

Julia package finite group theory calculation.
Author jayren3996
Popularity
10 Stars
Updated Last
10 Months Ago
Started In
November 2021

FiniteGroups.jl

Julia package for finite group theory calculation.

Installation

In julia REPL, run the following script:

using Pkg
Pkg.add("FiniteGroups")

Or, install the package directly from the GitHub URL:

using Pkg
Pkg.add(url="https://github.com/jayren3996/FiniteGroups.jl")

Examples

Create a Finite Group

We can creat a point group using the group number or group name. For example, the following command:

julia> g = pointgroup(32)
Point group : Oh
Group order : 48
Classes     : 10

or use the point group name (for example Th group):

julia> g = pointgroup("Th")
Point group : Th
Group order : 24
Classes     : 8

In general, given the multiplication table multab of the group, we can create the group object using the command:

# Multiplication table of point group D3:
multab = [ 
	1  2  3  4  5  6
	2  3  1  6  4  5
 	3  1  2  5  6  4
 	4  5  6  1  2  3
 	5  6  4  3  1  2
 	6  4  5  2  3  1
]
g = FiniteGroup(multab)

Character Table

We can calculate the character table of a finite group using the command

tab = character(g)

If group g is chosen to be the pointgroup Oh, the displayed result is:

julia> charactertable(pointgroup("Oh"))
11×11 Matrix{Any}:
 ""      "1"    "2₀₀₁"    "3₁₁₁⁺"    "2₁₁₀"    "4₀₀₁⁻"    "-1"    "m₀₀₁"    "-3₁₁₁⁺"    "m₁₁₀"    "-4₀₀₁⁻"
 "A1g"  1      1         1          1         1          1       1         1           1         1
 "A1u"  1      1         1          1         1         -1      -1        -1          -1        -1
 "A2g"  1      1         1         -1        -1          1       1         1          -1        -1
 "A2u"  1      1         1         -1        -1         -1      -1        -1           1         1
 "Eg"   2      2        -1          0         0          2       2        -1           0         0
 "Eu"   2      2        -1          0         0         -2      -2         1           0         0
 "T2g"  3     -1         0          1        -1          3      -1         0           1        -1
 "T2u"  3     -1         0          1        -1         -3       1         0          -1         1
 "T1g"  3     -1         0         -1         1          3      -1         0          -1         1
 "T1u"  3     -1         0         -1         1         -3       1         0           1        -1

The chartable is of type CharacterTable, from which we can extract a specific set of characters:

julia> ctable[10]
Characters of Real representation of Oh:
[3.0, -1.0, 0.0, -1.0, 1.0, -3.0, 1.0, 0.0, 1.0, -1.0]

The CharacterTable can be sliced as a matrix:

julia> ctable[3,:]
10-element Vector{Float64}:
  1.0
  1.0
  1.0
 -1.0
 -1.0
  1.0
  1.0
  1.0
 -1.0
 -1.0
julia> ctable[1:3,:]
3×10 Matrix{Float64}:
 1.0  1.0  1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0
 1.0  1.0  1.0   1.0   1.0  -1.0  -1.0  -1.0  -1.0  -1.0
 1.0  1.0  1.0  -1.0  -1.0   1.0   1.0   1.0  -1.0  -1.0

Irreducible Representation

We can also compute all irreducible representations of a finite group g, using the command irreps. For example, the character table for point group T is:

julia> g = pointgroup("T"); charactertable(g)
5×5 Matrix{Any}:
 ""        "1"         "2₀₀₁"       "3₁₁₁⁺"          "3₁₁₁⁻"
 "A"   1.0+0.0im   1.0+0.0im    1.0+0.0im        1.0+0.0im
 "1E"  1.0+0.0im   1.0+0.0im   -0.5-0.866025im  -0.5+0.866025im
 "2E"  1.0+0.0im   1.0+0.0im   -0.5+0.866025im  -0.5-0.866025im
 "T"   3.0+0.0im  -1.0+0.0im    0.0+0.0im        0.0+0.0im

We see there is a three-dimensional T representation. To obtain the representation matrices, simply using the following command:

rep = irreps(g)[end]

The output is a list of matrices:

julia> display.(rep)
3×3 Matrix{Float64}:
 1.0  0.0  0.0
 0.0  1.0  0.0
 0.0  0.0  1.0
3×3 Matrix{Float64}:
 1.0   0.0   0.0
 0.0  -1.0   0.0
 0.0   0.0  -1.0
3×3 Matrix{Float64}:
 -1.0   0.0  0.0
  0.0  -1.0  0.0
  0.0   0.0  1.0
3×3 Matrix{Float64}:
 -1.0  0.0   0.0
  0.0  1.0   0.0
  0.0  0.0  -1.0
3×3 Matrix{Float64}:
 0.0  0.0  1.0
 1.0  0.0  0.0
 0.0  1.0  0.0
3×3 Matrix{Float64}:
 0.0   0.0  -1.0
 1.0   0.0   0.0
 0.0  -1.0   0.0
3×3 Matrix{Float64}:
  0.0   0.0  1.0
 -1.0   0.0  0.0
  0.0  -1.0  0.0
3×3 Matrix{Float64}:
  0.0  0.0  -1.0
 -1.0  0.0   0.0
  0.0  1.0   0.0
3×3 Matrix{Float64}:
 0.0  1.0  0.0
 0.0  0.0  1.0
 1.0  0.0  0.0
3×3 Matrix{Float64}:
 0.0  -1.0   0.0
 0.0   0.0  -1.0
 1.0   0.0   0.0
3×3 Matrix{Float64}:
  0.0  -1.0  0.0
  0.0   0.0  1.0
 -1.0   0.0  0.0
3×3 Matrix{Float64}:
  0.0  1.0   0.0
  0.0  0.0  -1.0
 -1.0  0.0   0.0

Required Packages

Used By Packages

No packages found.