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
Copy file name to clipboardExpand all lines: docs/src/man/implementation.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,7 +105,7 @@ H1 = @mpoham sum(-2 * h1{i,j} for (i, j) in nearest_neighbours(lattice))
105
105
H2 =@mpohamsum(h2{i,j} for (i, j) innearest_neighbours(lattice))
106
106
H3 =@mpohamsum(2im* h3{i,j} for (i, j) innearest_neighbours(lattice))
107
107
108
-
H = H1 + J1 * H2 +J3* H3
108
+
H = H1 + J1 * H2 +J2* H3
109
109
````
110
110
111
111
For the matrix product state, we will select $\mathsf{Vec}$ as the module category for now:
@@ -127,7 +127,7 @@ init_mps = FiniteMPS(L, P, V; left = Vb, right = Vb)
127
127
We can now look to find the ground state of the Hamiltonian with two-site DMRG.
128
128
We use this instead of the "usual" one-site DMRG because the two-site algorithm will smartly fill up the blocks of the local tensor during the sweep, allowing one to initialise as a product state in one block and more likely avoid local minima, a common occurence in symmetric tensor network simulations.
129
129
````julia
130
-
dmrg2alg =DMRG2(; verbosity =2, tol =1e-7, trscheme =truncbelow(1e-4))
130
+
dmrg2alg =DMRG2(; verbosity =2, tol =1e-7, trscheme =trunctol(; atol =1e-4))
131
131
ψ, _ =find_groundstate(init_mps, H, dmrg2alg)
132
132
````
133
133
The truncation scheme keyword argument is mandatory when calling `DMRG2` in MPSKit.
@@ -137,10 +137,12 @@ To run one-site DMRG anyway, use `DMRG` which does not require a truncation sche
137
137
138
138
Now that we've found the ground state, we can compute the entanglement spectrum in the middle of the chain.
139
139
````julia
140
-
spec =entanglement_spectrum(ψ, round(Int, L/2))
140
+
entanglement_spectrum(ψ, round(Int, L/2))
141
141
````
142
-
This returns a dictionary which maps the objects grading the virtual space to the singular values.
143
-
In this case, there is one key corresponding to $\mathsf{Vec}$.
142
+
This returns a `TensorKit.SectorVector` containing the singular values.
143
+
This can be sliced to find the singular values corresponding to a particular simple object.
144
+
More information on that can be found in the docstring of `MPSKit.entanglement_spectrum`.
145
+
In this case, all singular values correspond to $\mathsf{Vec}$.
144
146
We can also immediately return a plot of this data by the following:
145
147
````julia
146
148
entanglementplot(ψ; site =round(Int, L/2))
@@ -172,12 +174,10 @@ This plot should be compared to [Lootens_2024; Figure 2](@cite).
172
174
This can be repeated with other parameter values for $J_1$ and $J_2$ in the Hamiltonian to probe the $\mathsf{Rep(\mathbb{Z}_2 \times \mathbb{Z}_2)}$-symmetric or $\mathsf{Rep^\psi(A_4)}$ SPT phase.
173
175
174
176
!!! note "Additional functions and keyword arguments"
175
-
Certain commonly used functions within MPSKit require extra keyword arguments to be compatible with multifusion MPS simulations.
177
+
Certain commonly used functions within MPSKit can pass extra keyword arguments compatible with multifusion MPS simulations.
176
178
In particular, the keyword argument `sector` (note the lowercase "s") appears in
177
-
- `excitations` with `QuasiparticleAnsatz`: the sector is selected by adding an auxiliary space to the *domain* of each eigenvector of the transfer matrix.
178
-
Since in a full contraction the domain of the eigenvector lies in the opposite side of the physical space (labeled by objects in $\mathcal{D} = \mathsf{Rep(A_4)}$), the charged excitations lie in the symmetry category $\mathcal{C} = \mathcal{D^*_M}$.
179
-
- `exact_diagonalization`: the `sector` keyword argument now requires an object in $\mathcal{D}$, since this is the fusion category which specifies the bond algebra from which the Hamiltonian is constructed.
180
-
This is equivalent to adding a charged leg on the leftmost (or rightmost) virtual space of the MPS in conventional MPS cases.
179
+
- `excitations` with `QuasiparticleAnsatz`: the sector is selected by adding an auxiliary space to the *domain* of each eigenvector of the transfer matrix. Since in a full contraction the domain of the eigenvector lies in the opposite side of the physical space (labeled by objects in $\mathcal{D} = \mathsf{Rep(A_4)}$), the excitations lie in the Morita dual category $\mathcal{E} = \mathcal{D^*_M}$. This will default to the unit of $\mathcal{E}$ if not specified.
180
+
- `exact_diagonalization`: the `sector` keyword argument now requires a simple object in $\mathcal{D}$, since this is the fusion category which specifies the bond algebra from which the Hamiltonian is constructed. This is equivalent to adding a charged leg on the leftmost (or rightmost) virtual space of the MPS in conventional MPS cases. This will default to the unit of $\mathcal{D}$ if not specified.
181
181
182
182
## Differences with the infinite case
183
183
We can repeat the above calcalations also for an infinite system.
@@ -197,4 +197,4 @@ It is also clear that boundary terms do not play a role in this case.
197
197
These are
198
198
- `transfer_spectrum`: similar to `excitations`, the (partial) transfer matrix spectrum is selected by adding a charged auxiliary space to the transfer matrix eigenvectors.
199
199
- `correlation_length`: since this function calls `transfer_spectrum`, the same logic applies.
200
-
- `excitations`in the infinite case also requires the keyword argument.
0 commit comments