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
@@ -212,4 +220,4 @@ request or an issue on the [GitHub repository](https://github.com/QuantumKitHub/
212
220
- Gertian Roose, Laurens Vanderstraeten, Jutho Haegeman, and Nick Bultinck. Anomalous domain wall condensation in a modified ising chain. Phys. Rev. B, 99: 195132, May 2019. 10.1103/PhysRevB.99.195132.
213
221
https://doi.org/10.1103/PhysRevB.99.195132
214
222
- Roose, G., Bultinck, N., Vanderstraeten, L. et al. Lattice regularisation and entanglement structure of the Gross-Neveu model. J. High Energ. Phys. 2021, 207 (2021). https://doi.org/10.1007/JHEP07(2021)207
215
-
- Roose, G., Haegeman, J., Van Acoleyen, K. et al. The chiral Gross-Neveu model on the lattice via a Landau-forbidden phase transition. J. High Energ. Phys. 2022, 19 (2022). https://doi.org/10.1007/JHEP06(2022)019
223
+
- Roose, G., Haegeman, J., Van Acoleyen, K. et al. The chiral Gross-Neveu model on the lattice via a Landau-forbidden phase transition. J. High Energ. Phys. 2022, 19 (2022). https://doi.org/10.1007/JHEP06(2022)019
Various alternative constructions are possible, such as using a `Dict` with key-value pairs
@@ -229,9 +229,11 @@ general form, by supplying a 3-dimensional array $W$ to the constructor. Here, t
229
229
dimension specifies the site in the unit cell, the second dimension specifies the row of the
230
230
matrix, and the third dimension specifies the column of the matrix.
231
231
232
-
```@example operators
232
+
<!-- TODO: reenable doctest -->
233
+
234
+
```julia
233
235
data = Array{Any,3}(missing, 1, 3, 3) # missing is interpreted as zero
234
-
data[1, 1, 1] = id(Matrix{ComplexF64}, ℂ^2)
236
+
data[1, 1, 1] = id(ComplexF64, ℂ^2)
235
237
data[1, 3, 3] =1# regular numbers are interpreted as identity operators
236
238
data[1, 1, 2] =-J * S_x
237
239
data[1, 2, 3] = S_x
@@ -263,34 +265,3 @@ a collection (direct sum) of spaces, one for each row/column.
263
265
264
266
<!-- TODO: add examples virtualspace once blocktensors are in place -->
265
267
266
-
## DenseMPO
267
-
268
-
This operator is used for statistical physics problems. It is simply a periodic array of mpo tensors.
269
-
270
-
Can be created using
271
-
```julia
272
-
DenseMPO(t::AbstractArray{T,1}) where T<:MPOTensor
273
-
```
274
-
275
-
## SparseMPO
276
-
277
-
`SparseMPO` is similar to a `DenseMPO`, in that it again represents an mpo tensor, periodically repeated. However this type keeps track of all internal zero blocks, allowing for a more efficient representation of certain operators (such as time evolution operators and quantum hamiltonians). You can convert a sparse mpo to a densempo, but the converse does not hold.
278
-
279
-
280
-
Indexing a `SparseMPO` returns a `SparseMPOSlice` object, which has 3 fields
281
-
282
-
```@docs
283
-
MPSKit.SparseMPOSlice
284
-
```
285
-
286
-
When indexing a `SparseMPOSlice` at index `[j, k]` (or equivalently `SparseMPO[i][j, k]`), the code looks up the corresponding field in `Os[j, k]`. Either that element is a tensormap, in which case it gets returned. If it equals `zero(E)`, then we return a tensormap
287
-
```julia
288
-
domspaces[j] * pspace ← pspace * imspaces[k]
289
-
```
290
-
with norm zero. If the element is a nonzero number, then implicitly we have the identity operator there (multiplied by that element).
291
-
292
-
The idea here is that you don't have to worry about the underlying structure, you can just index into a sparsempo as if it is a vector of matrices. Behind the scenes we then optimize certain contractions by using the sparsity structure.
293
-
294
-
SparseMPO are always assumed to be periodic in the first index (position).
295
-
In this way, we can both represent periodic infinite mpos and place dependent finite mpos.
0 commit comments