diff --git a/OrbitDecomposition.jl b/OrbitDecomposition.jl index cca93d1..73cfbf9 100644 --- a/OrbitDecomposition.jl +++ b/OrbitDecomposition.jl @@ -250,27 +250,23 @@ function Uπ_matrices(P_matrices; orth=orthSVD) return U_p_matrices end -function compute_orbit_data(name::String, N::Int) +function compute_orbit_data(name::String, G::Group, S::Vector{GroupElem}; radius=2) isdir(name) || mkdir(name) - SOutFN = AutGroup(FreeGroup(N), special=true, outer=true) - S = generators(SOutFN); - S = [S; [inv(s) for s in S]] - @show S - info("Generating ball of radius 4") - @time E4, sizes = generate_balls(S, SOutFN(), radius=4); + @time E4, sizes = generate_balls(S, G(), radius=2*radius); info("Reverse dict") @time E_dict = GroupRings.reverse_dict(E4) info("Product matrix") - @time pm = GroupRings.create_pm(E4, E_dict, sizes[2], twisted=true) - RSOutFN = GroupRing(SOutFN, E4, E_dict, pm) - Δ = PropertyT.splaplacian(RSOutFN, S) + @time pm = GroupRings.create_pm(E4, E_dict, sizes[radius], twisted=true) + RG = GroupRing(G, E4, E_dict, pm) + Δ = PropertyT.splaplacian(RG, S) @assert augmentation(Δ) == 0 save(joinpath(name, "delta.jld"), "Δ", Δ.coeffs) save(joinpath(name, "pm.jld"), "pm", pm) + N = length(G.objectGroup.gens) info("WreathProduct") @time BN = WreathProduct(Nemo.FiniteField(2,1, "a")[1], PermutationGroup(N)) @@ -280,7 +276,7 @@ function compute_orbit_data(name::String, N::Int) save(joinpath(name, "orbits.jld"), "orbits", orbs) info("Action matrices") - E2 = E4[1:sizes[2]] + E2 = E4[1:sizes[radius]] @time BNactionE_mreps = action_mreps(BN, E2, E_dict) info("Projections") @@ -295,7 +291,7 @@ function compute_orbit_data(name::String, N::Int) @show multiplicities dimensions = [Int(p[BN()]*Int(order(BN))) for p in BN_mps]; @show dimensions - @assert dot(multiplicities, dimensions) == sizes[2] + @assert dot(multiplicities, dimensions) == sizes[radius] save(joinpath(name, "U_pis.jld"), "Uπs", Uπs, "dims", dimensions) return 0