Skip to content

Commit e101244

Browse files
committed
update scripts
1 parent 3a14c12 commit e101244

File tree

6 files changed

+568
-7
lines changed

6 files changed

+568
-7
lines changed

benchmark/MPSKitBenchmarks/derivatives/DerivativesBenchmarks.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import ..BenchUtils: tomlify, untomlify
1313
const SUITE = BenchmarkGroup()
1414

1515
const allparams = Dict(
16-
"heisenberg_NN" => TOML.parsefile(joinpath(@__DIR__, "heisenberg_NN.toml"))
16+
"heisenberg_nn" => TOML.parsefile(joinpath(@__DIR__, "heisenberg_nn.toml")),
17+
"heisenberg_nnn" => TOML.parsefile(joinpath(@__DIR__, "heisenberg_nnn.toml")),
18+
"heisenberg_cylinder" => TOML.parsefile(joinpath(@__DIR__, "heisenberg_cylinder.toml")),
19+
"heisenberg_coulomb" => TOML.parsefile(joinpath(@__DIR__, "heisenberg_coulomb.toml"))
1720
)
1821

1922
include("AC2_benchmarks.jl")

benchmark/MPSKitBenchmarks/derivatives/heisenberg_coulomb.toml

Lines changed: 152 additions & 0 deletions
Large diffs are not rendered by default.

benchmark/MPSKitBenchmarks/derivatives/heisenberg_cylinder.toml

Lines changed: 137 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
[[Trivial]]
2+
mps_virtualspaces = ["ℂ^1", "ℂ^3", "ℂ^1"]
3+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
4+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
5+
physicalspaces = ["ℂ^3", "ℂ^3"]
6+
[[Trivial]]
7+
mps_virtualspaces = ["ℂ^4", "ℂ^4", "ℂ^4"]
8+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
9+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
10+
physicalspaces = ["ℂ^3", "ℂ^3"]
11+
[[Trivial]]
12+
mps_virtualspaces = ["ℂ^4", "ℂ^7", "ℂ^4"]
13+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
14+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
15+
physicalspaces = ["ℂ^3", "ℂ^3"]
16+
[[Trivial]]
17+
mps_virtualspaces = ["ℂ^12", "ℂ^12", "ℂ^12"]
18+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
19+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
20+
physicalspaces = ["ℂ^3", "ℂ^3"]
21+
[[Trivial]]
22+
mps_virtualspaces = ["ℂ^21", "ℂ^21", "ℂ^21"]
23+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
24+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
25+
physicalspaces = ["ℂ^3", "ℂ^3"]
26+
[[Trivial]]
27+
mps_virtualspaces = ["ℂ^29", "ℂ^31", "ℂ^29"]
28+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
29+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
30+
physicalspaces = ["ℂ^3", "ℂ^3"]
31+
[[Trivial]]
32+
mps_virtualspaces = ["ℂ^53", "ℂ^56", "ℂ^53"]
33+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
34+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
35+
physicalspaces = ["ℂ^3", "ℂ^3"]
36+
[[Trivial]]
37+
mps_virtualspaces = ["ℂ^81", "ℂ^88", "ℂ^81"]
38+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
39+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
40+
physicalspaces = ["ℂ^3", "ℂ^3"]
41+
[[Trivial]]
42+
mps_virtualspaces = ["ℂ^81", "ℂ^148", "ℂ^81"]
43+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
44+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
45+
physicalspaces = ["ℂ^3", "ℂ^3"]
46+
[[Trivial]]
47+
mps_virtualspaces = ["ℂ^81", "ℂ^243", "ℂ^81"]
48+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
49+
mpo_virtualspaces = ["(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)", "(ℂ^1 ⊞ ℂ^3 ⊞ ℂ^1)"]
50+
physicalspaces = ["ℂ^3", "ℂ^3"]
51+
52+
[["Irrep[U₁]"]]
53+
mps_virtualspaces = ["Rep[U₁](0 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1)"]
54+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
55+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
56+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
57+
[["Irrep[U₁]"]]
58+
mps_virtualspaces = ["Rep[U₁](0 => 2, 1 => 1, -1 => 1)", "Rep[U₁](0 => 2, 1 => 1, -1 => 1)", "Rep[U₁](0 => 2, 1 => 1, -1 => 1)"]
59+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
60+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
61+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
62+
[["Irrep[U₁]"]]
63+
mps_virtualspaces = ["Rep[U₁](0 => 2, 1 => 1, -1 => 1)", "Rep[U₁](0 => 2, 1 => 1, -1 => 1)", "Rep[U₁](0 => 2, 1 => 1, -1 => 1)"]
64+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
65+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
66+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
67+
[["Irrep[U₁]"]]
68+
mps_virtualspaces = ["Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)", "Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)", "Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)"]
69+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
70+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
71+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
72+
[["Irrep[U₁]"]]
73+
mps_virtualspaces = ["Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)", "Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)", "Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)"]
74+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
75+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
76+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
77+
[["Irrep[U₁]"]]
78+
mps_virtualspaces = ["Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)", "Rep[U₁](0 => 4, 1 => 3, -1 => 3, 2 => 2, -2 => 2, 3 => 1, -3 => 1)", "Rep[U₁](0 => 3, 1 => 2, -1 => 2, 2 => 1, -2 => 1)"]
79+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
80+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
81+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
82+
[["Irrep[U₁]"]]
83+
mps_virtualspaces = ["Rep[U₁](0 => 4, 1 => 3, -1 => 3, 2 => 2, -2 => 2, 3 => 1, -3 => 1)", "Rep[U₁](0 => 4, 1 => 3, -1 => 3, 2 => 2, -2 => 2, 3 => 1, -3 => 1)", "Rep[U₁](0 => 4, 1 => 3, -1 => 3, 2 => 2, -2 => 2, 3 => 1, -3 => 1)"]
84+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
85+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
86+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
87+
[["Irrep[U₁]"]]
88+
mps_virtualspaces = ["Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)", "Rep[U₁](0 => 4, 1 => 3, -1 => 3, 2 => 2, -2 => 2, 3 => 1, -3 => 1)", "Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)"]
89+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
90+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
91+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
92+
[["Irrep[U₁]"]]
93+
mps_virtualspaces = ["Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)", "Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)", "Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)"]
94+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
95+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
96+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
97+
[["Irrep[U₁]"]]
98+
mps_virtualspaces = ["Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)", "Rep[U₁](0 => 6, 1 => 5, -1 => 5, 2 => 4, -2 => 4, 3 => 3, -3 => 3, 4 => 2, -4 => 2, 5 => 1, -5 => 1)", "Rep[U₁](0 => 5, 1 => 4, -1 => 4, 2 => 3, -2 => 3, 3 => 2, -3 => 2, 4 => 1, -4 => 1)"]
99+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
100+
mpo_virtualspaces = ["(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))", "(Rep[U₁](0=>1) ⊞ Rep[U₁](0=>1, 1=>1, -1=>1) ⊞ Rep[U₁](0=>1))"]
101+
physicalspaces = ["Rep[U₁](0 => 1, 1 => 1, -1 => 1)", "Rep[U₁](0 => 1, 1 => 1, -1 => 1)"]
102+
103+
[["Irrep[SU₂]"]]
104+
mps_virtualspaces = ["Rep[SU₂](0 => 1)", "Rep[SU₂](1 => 1)", "Rep[SU₂](0 => 1)"]
105+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
106+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
107+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
108+
[["Irrep[SU₂]"]]
109+
mps_virtualspaces = ["Rep[SU₂](0 => 1, 1 => 1)", "Rep[SU₂](0 => 1, 1 => 1)", "Rep[SU₂](0 => 1, 1 => 1)"]
110+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
111+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
112+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
113+
[["Irrep[SU₂]"]]
114+
mps_virtualspaces = ["Rep[SU₂](0 => 1, 1 => 1)", "Rep[SU₂](0 => 1, 1 => 2)", "Rep[SU₂](0 => 1, 1 => 1)"]
115+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
116+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
117+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
118+
[["Irrep[SU₂]"]]
119+
mps_virtualspaces = ["Rep[SU₂](0 => 1, 1 => 2, 2 => 1)", "Rep[SU₂](0 => 1, 1 => 2, 2 => 1)", "Rep[SU₂](0 => 1, 1 => 2, 2 => 1)"]
120+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
121+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
122+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
123+
[["Irrep[SU₂]"]]
124+
mps_virtualspaces = ["Rep[SU₂](0 => 2, 1 => 3, 2 => 2)", "Rep[SU₂](0 => 2, 1 => 3, 2 => 2)", "Rep[SU₂](0 => 2, 1 => 3, 2 => 2)"]
125+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
126+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
127+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
128+
[["Irrep[SU₂]"]]
129+
mps_virtualspaces = ["Rep[SU₂](0 => 2, 1 => 4, 2 => 3)", "Rep[SU₂](0 => 2, 1 => 4, 2 => 2, 3 => 1)", "Rep[SU₂](0 => 2, 1 => 4, 2 => 3)"]
130+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
131+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
132+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
133+
[["Irrep[SU₂]"]]
134+
mps_virtualspaces = ["Rep[SU₂](0 => 3, 1 => 6, 2 => 5, 3 => 1)", "Rep[SU₂](0 => 3, 1 => 7, 2 => 5, 3 => 1)", "Rep[SU₂](0 => 3, 1 => 6, 2 => 5, 3 => 1)"]
135+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
136+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
137+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
138+
[["Irrep[SU₂]"]]
139+
mps_virtualspaces = ["Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)", "Rep[SU₂](0 => 4, 1 => 10, 2 => 8, 3 => 2)", "Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)"]
140+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
141+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
142+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
143+
[["Irrep[SU₂]"]]
144+
mps_virtualspaces = ["Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)", "Rep[SU₂](0 => 6, 1 => 12, 2 => 11, 3 => 6, 4 => 1)", "Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)"]
145+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
146+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
147+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]
148+
[["Irrep[SU₂]"]]
149+
mps_virtualspaces = ["Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)", "Rep[SU₂](0 => 6, 1 => 15, 2 => 15, 3 => 10, 4 => 4, 5 => 1)", "Rep[SU₂](0 => 3, 1 => 6, 2 => 6, 3 => 3, 4 => 1)"]
150+
nonzero_keys = [[[1, 1], [3, 3], [2, 3], [1, 2]], [[1, 1], [3, 3], [2, 3], [1, 2]]]
151+
mpo_virtualspaces = ["(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))", "(Rep[SU₂](0=>1) ⊞ Rep[SU₂](1=>1) ⊞ Rep[SU₂](0=>1))"]
152+
physicalspaces = ["Rep[SU₂](1 => 1)", "Rep[SU₂](1 => 1)"]

benchmark/MPSKitBenchmarks/scripts/setup_heisenberg.jl

Lines changed: 122 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ using .MPSKitBenchmarks
1212
using .MPSKitBenchmarks.DerivativesBenchmarks: AC2Spec
1313
using .MPSKitBenchmarks.BenchUtils: tomlify
1414

15+
# needed to make parsing correct
16+
BlockTensorKit.SUMSPACE_SHOW_LIMIT[] = typemax(Int)
17+
1518
# Utility functions
1619
# ----------------
1720
# setup "product state" -> ⨂^N |↑↓ - ↓↑⟩
@@ -50,9 +53,9 @@ D_steps = 10
5053
D_min = 3
5154

5255

53-
# FiniteChain
54-
# -----------
55-
L = 10
56+
# NN
57+
# --
58+
L = 100
5659
lattice = FiniteChain(L)
5760

5861
symmetry = SU2Irrep
@@ -73,9 +76,123 @@ specs_u1 = filter!(convert.(AC2Spec{U1Space}, specs_su2)) do spec
7376
dim(spec.mps_virtualspaces[1]) < 5000
7477
end
7578

76-
specs = vcat(specs_triv, specs_u1, specs_su2)
79+
output_file = joinpath(@__DIR__, "..", "derivatives", "heisenberg_nn.toml")
80+
open(output_file, "w") do io
81+
TOML.print(
82+
io, Dict(
83+
type_repr(Trivial) => tomlify.(specs_triv),
84+
type_repr(U1Irrep) => tomlify.(specs_u1),
85+
type_repr(SU2Irrep) => tomlify.(specs_su2)
86+
)
87+
)
88+
end
89+
@info("Spaces written to $output_file")
90+
91+
# NNN
92+
# ---
93+
L = 100
94+
lattice = FiniteChain(L)
95+
96+
symmetry = SU2Irrep
97+
alg = DMRG2(;
98+
maxiter = 10, tol = 1.0e-12,
99+
alg_eigsolve = (; tol = 1.0e-5, dynamic_tols = false, maxiter = 3),
100+
trscheme = truncrank(D_max)
101+
)
102+
103+
SS = S_exchange(T, symmetry; spin)
104+
H = @mpoham sum(next_nearest_neighbours(lattice)) do (i, j)
105+
return SS{i, j}
106+
end
107+
H = heisenberg_XXX(T, symmetry, lattice; spin);
108+
specs_su2 = generate_spaces(H, alg; D_min, D_steps)
109+
110+
specs_triv = filter!(convert.(AC2Spec{ComplexSpace}, specs_su2)) do spec
111+
dim(spec.mps_virtualspaces[1]) < 1000
112+
end
113+
114+
specs_u1 = filter!(convert.(AC2Spec{U1Space}, specs_su2)) do spec
115+
dim(spec.mps_virtualspaces[1]) < 5000
116+
end
117+
118+
output_file = joinpath(@__DIR__, "..", "derivatives", "heisenberg_nnn.toml")
119+
open(output_file, "w") do io
120+
TOML.print(
121+
io, Dict(
122+
type_repr(Trivial) => tomlify.(specs_triv),
123+
type_repr(U1Irrep) => tomlify.(specs_u1),
124+
type_repr(SU2Irrep) => tomlify.(specs_su2)
125+
)
126+
)
127+
end
128+
@info("Spaces written to $output_file")
129+
130+
# FiniteCylinder
131+
# --------------
132+
rows = 6
133+
cols = 12
134+
lattice = FiniteCylinder(rows, rows * cols)
135+
136+
symmetry = SU2Irrep
137+
alg = DMRG2(;
138+
maxiter = 10, tol = 1.0e-12,
139+
alg_eigsolve = (; tol = 1.0e-5, dynamic_tols = false, maxiter = 3),
140+
trscheme = truncrank(D_max)
141+
)
142+
143+
H = heisenberg_XXX(T, symmetry, lattice; spin);
144+
specs_su2 = generate_spaces(H, alg; D_min, D_steps)
145+
146+
specs_triv = filter!(convert.(AC2Spec{ComplexSpace}, specs_su2)) do spec
147+
dim(spec.mps_virtualspaces[1]) < 1000
148+
end
149+
150+
specs_u1 = filter!(convert.(AC2Spec{U1Space}, specs_su2)) do spec
151+
dim(spec.mps_virtualspaces[1]) < 5000
152+
end
153+
154+
output_file = joinpath(@__DIR__, "..", "derivatives", "heisenberg_cylinder.toml")
155+
open(output_file, "w") do io
156+
TOML.print(
157+
io, Dict(
158+
type_repr(Trivial) => tomlify.(specs_triv),
159+
type_repr(U1Irrep) => tomlify.(specs_u1),
160+
type_repr(SU2Irrep) => tomlify.(specs_su2)
161+
)
162+
)
163+
end
164+
@info("Spaces written to $output_file")
165+
166+
# Coulomb
167+
# -------
168+
L = 50
169+
SS = S_exchange(T, symmetry; spin)
170+
lattice = fill(space(SS, 1), L)
171+
terms = []
172+
for i in 1:(L - 1), j in (i + 1):L
173+
push!(terms, (i, j) => SS / abs(i - j))
174+
end
175+
H = FiniteMPOHamiltonian(lattice, terms...)
176+
177+
D_max = 5_000
178+
symmetry = SU2Irrep
179+
alg = DMRG2(;
180+
maxiter = 10, tol = 1.0e-12,
181+
alg_eigsolve = (; tol = 1.0e-5, dynamic_tols = false, maxiter = 3),
182+
trscheme = truncrank(D_max)
183+
)
184+
185+
specs_su2 = generate_spaces(H, alg; D_min, D_steps)
186+
187+
specs_triv = filter!(convert.(AC2Spec{ComplexSpace}, specs_su2)) do spec
188+
dim(spec.mps_virtualspaces[1]) < 500
189+
end
190+
191+
specs_u1 = filter!(convert.(AC2Spec{U1Space}, specs_su2)) do spec
192+
dim(spec.mps_virtualspaces[1]) < 3000
193+
end
77194

78-
output_file = joinpath(@__DIR__, "..", "derivatives", "heisenberg_NN.toml")
195+
output_file = joinpath(@__DIR__, "..", "derivatives", "heisenberg_coulomb.toml")
79196
open(output_file, "w") do io
80197
TOML.print(
81198
io, Dict(

benchmark/MPSKitBenchmarks/utils/BenchUtils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ using TensorKit
66
using BlockTensorKit
77
using TOML
88

9-
tomlify(x::VectorSpace) = string(x)
9+
tomlify(x::VectorSpace) = sprint(show, x; context = :limited => false)
1010
untomlify(::Type{<:VectorSpace}, x) = eval(Meta.parse(x))
1111

1212

0 commit comments

Comments
 (0)