1- import ITensorNetworks as itn
2- using Printf
1+ using Printf : @printf
2+ import ConstructionBase : setproperties
33
44@kwdef mutable struct ApplyExpProblem{State}
55 state:: State
66 operator
77 current_time:: Number = 0.0
88end
99
10- state (tdvp:: ApplyExpProblem ) = tdvp. state
10+ ITensorNetworks . state (tdvp:: ApplyExpProblem ) = tdvp. state
1111operator (tdvp:: ApplyExpProblem ) = tdvp. operator
1212current_time (tdvp:: ApplyExpProblem ) = tdvp. current_time
1313
@@ -31,11 +31,11 @@ function updater(
3131 curr_reg = current_region (region_iterator)
3232 next_reg = next_region (region_iterator)
3333 if ! isnothing (next_reg) && next_reg != curr_reg
34- next_edge = first (itn . edge_sequence_between_regions (state (T), curr_reg, next_reg))
35- v1, v2 = itn . src (next_edge), itn . dst (next_edge)
34+ next_edge = first (edge_sequence_between_regions (state (T), curr_reg, next_reg))
35+ v1, v2 = src (next_edge), dst (next_edge)
3636 psi = copy (state (T))
3737 psi[v1], R = qr (local_state, uniqueinds (local_state, psi[v2]))
38- shifted_operator = itn . position (operator (T), psi, itn . NamedEdge (v1=> v2))
38+ shifted_operator = position (operator (T), psi, NamedEdge (v1=> v2))
3939 R_t, _ = solver (x-> optimal_map (shifted_operator, x), - time_step, R; kws... )
4040 local_state = psi[v1]* R_t
4141 end
@@ -53,7 +53,7 @@ function applyexp_sweep_printer(
5353 if outputlevel >= 1
5454 T = problem (region_iterator)
5555 @printf (" Current time = %s, " , process_time (current_time (T)))
56- @printf (" maxlinkdim=%d" , itn . maxlinkdim (state (T)))
56+ @printf (" maxlinkdim=%d" , maxlinkdim (state (T)))
5757 println ()
5858 flush (stdout )
5959 end
8383
8484function applyexp (H, init_state, exponents; kws... )
8585 init_prob = ApplyExpProblem (;
86- state= permute_indices (init_state), operator= itn . ProjTTN (permute_indices (H))
86+ state= permute_indices (init_state), operator= ProjTTN (permute_indices (H))
8787 )
8888 return applyexp (init_prob, exponents; kws... )
8989end
0 commit comments