DVR-jl/irrep.jl

25 lines
765 B
Julia

using DelimitedFiles
rotations = readdlm("rotations.csv", ',', Int, '\n')
rotations = reshape(rotations, (24, 3, 3))
N = 24
ks = -N÷2:N÷2-1
lattice = hcat((collect.(Iterators.product(ks, ks, ks)))...)
labels = reshape(collect(1:N^3), (N, N, N))
for r in 1:24
rotated_lattice = Matrix(rotations[r, :, :]) * lattice
for index in 1:N^3
rotated_lattice_point = rotated_lattice[:, index]
(i, j, k) = mod1.(rotated_lattice_point .+ (N÷2 + 1), N)
old_label = max(labels[index], labels[i, j, k])
new_label = min(labels[index], labels[i, j, k])
if old_label != new_label
for o in findall(isequal(old_label), labels)
labels[o] = new_label
end
end
end
end
unique(labels)