Skip to content

Commit a4dac43

Browse files
Simple update for PEPO (3-site version) (#262)
* Add 3-site simple update for PEPO * fix InfinitePEPO rotation * Fix physical axis fusing * Add J1-J2 example test * Modify _apply_gate(mpo!)
1 parent 999e37a commit a4dac43

8 files changed

Lines changed: 321 additions & 143 deletions

File tree

src/algorithms/time_evolution/evoltools.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ Apply 2-site `gate` on the reduced matrices `a`, `b`
189189
```
190190
"""
191191
function _apply_gate(
192-
a::AbstractTensorMap{T, S}, b::AbstractTensorMap{T, S},
192+
a::AbstractTensorMap, b::AbstractTensorMap,
193193
gate::AbstractTensorMap{T, S, 2, 2}, trscheme::TruncationScheme
194194
) where {T <: Number, S <: ElementarySpace}
195195
V = space(b, 1)

src/algorithms/time_evolution/simpleupdate.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ using the Hamiltonian `ham`, which can contain up to next-nearest-neighbor inter
200200
## Keyword Arguments
201201
202202
- `bipartite::Bool=false`: If `true`, enforces the bipartite structure of the PEPS.
203-
- `gate_bothsides::Bool=true`: (Effective only for PEPO evolution)
203+
- `gate_bothsides::Bool=true`: (Effective only for PEPO evolution) If true, apply the Trotter gate to both side of the PEPO. Otherwise, the gate is only applied to the physical codomain legs.
204204
- `force_3site::Bool=false`: Forces the use of the 3-site simple update algorithm, even if the Hamiltonian contains only nearest-neighbor terms.
205205
- `check_interval::Int=500`: Specifies the number of evolution steps between printing progress information.
206206
@@ -220,7 +220,7 @@ function simpleupdate(
220220
@assert !(bipartite && use_3site) "3-site simple update is incompatible with bipartite lattice."
221221
# TODO: check SiteDependentTruncation is compatible with bipartite structure
222222
if use_3site
223-
return _simpleupdate3site(state, ham, alg, env; check_interval)
223+
return _simpleupdate3site(state, ham, alg, env; gate_bothsides, check_interval)
224224
else
225225
return _simpleupdate2site(state, ham, alg, env; bipartite, gate_bothsides, check_interval)
226226
end

0 commit comments

Comments
 (0)