You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
where $\alpha \sim 1.618, 1.502$ for Fibonacci chain, hard core square lattice, $k \sim 5$. So for fully ED, $D \sim 10^6$. When doing dynamics, Krylov subspace $K_m=\text{span}\{v,Hv,H^2v,⋯,H^{m−1}v\}$ is usually incorporated, which can scale up to $N=32$ even without anyon symmetry ($D \sim 10^{10}, m \sim 10^4$, as long as the locality of interaction ensuring sparse matrix). In such basis, the Its complexity decreases to $O(m^2D)$
15
+
where $\alpha \sim 1.618, 1.502$ for Fibonacci path_graph, hard core square lattice, $k \sim 5$. So for fully ED, $D \sim 10^6$. When doing dynamics, Krylov subspace $K_m=\text{span}\{v,Hv,H^2v,⋯,H^{m−1}v\}$ is usually incorporated, which can scale up to $N=32$ even without anyon symmetry ($D \sim 10^{10}, m \sim 10^4$, as long as the locality of interaction ensuring sparse matrix). In such basis, the Its complexity decreases to $O(m^2D)$
16
16
17
17
18
18
## *Tensor Networks, TN*
@@ -95,7 +95,7 @@ Supplemental Material](https://arxiv.org/pdf/1911.04882), which maybe helpful?
[^Leshouches]: Les houch notes for Exact Diagonalizaton. https://indico.ictp.it/event/a14246/session/31/contribution/51/material/0/0.pdf
98
-
[^QMBSPRB]: Quantum scarred eigenstates in a Rydberg atom chain: Entanglement, breakdown of thermalization, and stability to perturbations. https://journals.aps.org/prb/pdf/10.1103/PhysRevB.98.155134
98
+
[^QMBSPRB]: Quantum scarred eigenstates in a Rydberg atom path_graph: Entanglement, breakdown of thermalization, and stability to perturbations. https://journals.aps.org/prb/pdf/10.1103/PhysRevB.98.155134
99
99
[^LauchliKagome]: S = 1/2 kagome Heisenberg antiferromagnet revisited https://journals.aps.org/prb/pdf/10.1103/PhysRevB.100.155142
g::SimpleGraph{Int}# g is used to store the connections between the tensors
4
+
site_tensors::Vector{TA}# the tensors are stored as vector of arrays, corresponding to vertices of the graph. The virtual bounds are in order of its neighbors, the last dimension is the open dimension
5
+
gauge_tensors::Vector{TB}# corresponding to edges of the graph, listed in the order of edges(g), and enforce e.src < e.dst, real valued diagonal matrices
6
+
gauge_tensors_map::Dict{Tuple{Int, Int}, Int}# maps between the edge and the index of the gauge tensor
t =zeros(Complex{type}, [d_virtual for _ in1:length(neighbors(g, v))]..., d_open)
17
+
push!(site_tensors, t)
18
+
end
19
+
20
+
for e inedges(g)
21
+
t = (one(type) * I)(d_virtual)
22
+
push!(gauge_tensors, t)
23
+
end
24
+
25
+
map =Dict{Tuple{Int, Int}, Int}()
26
+
for (i, e) inenumerate(edges(g))
27
+
src, dst =minmax(e.src, e.dst)
28
+
map[(src, dst)] = i
29
+
end
30
+
31
+
new{TA, TB}(g, site_tensors, gauge_tensors, map)
32
+
end
33
+
34
+
functionTensorNetworkAnsatz(g::SimpleGraph{Int}, site_tensors::Vector{TA}, gauge_tensors::Vector{TB}, map::Dict{Tuple{Int, Int}, Int}) where {TA, TB}
35
+
@assertlength(site_tensors) ==nv(g)
36
+
@assertlength(gauge_tensors) ==ne(g)
37
+
new{TA, TB}(g, site_tensors, gauge_tensors, map)
38
+
end
39
+
end
40
+
41
+
Base.show(io::IO, ansatz::TensorNetworkAnsatz{TA, TB}) where {TA, TB} =print(io, "TensorNetworkAnsatz{$(TA), $(TB)} with $(nv(ansatz.g)) sites and $(ne(ansatz.g)) edges")
42
+
43
+
Base.adjoint(ansatz::TensorNetworkAnsatz{TA, TB}) where {TA, TB} =TensorNetworkAnsatz(ansatz.g, TA[conj(t) for t in ansatz.site_tensors], ansatz.gauge_tensors, ansatz.gauge_tensors_map)
44
+
45
+
functioninner_product(bra::TensorNetworkAnsatz{TA, TB}, ket::TensorNetworkAnsatz{TA}; optimizer =GreedyMethod()) where {TA, TB}
0 commit comments