Skip to content

Commit 44f8265

Browse files
author
jjren
committed
update
1 parent 1ff8376 commit 44f8265

27 files changed

+2231
-538
lines changed

example/hubbard.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,29 +70,36 @@
7070
M = 100
7171
procedure = [[M, 0.4], [M, 0.2], [M, 0.1], [M, 0], [M, 0], [M,0], [M,0]]
7272
mps = Mps.random(model, nelec, M, percent=1.0)
73-
logger.info(f"initial mps: {mps}")
73+
mps.canonicalise().normalize("mps_and_coeff").canonicalise()
74+
logger.info(f"initial mps: {mps}, {mps.mp_norm}")
7475

75-
# algorithm 1: DMRG sweep
76-
mps.optimize_config.procedure = procedure
77-
mps.optimize_config.method = "2site"
78-
energies, mps = optimize_mps(mps.copy(), mpo)
79-
gs_e = min(energies)
80-
logger.info(f"lowest energy: {gs_e}")
76+
## algorithm 1: DMRG sweep
77+
#mps.optimize_config.procedure = procedure
78+
#mps.optimize_config.method = "2site"
79+
#energies, mps = optimize_mps(mps.copy(), mpo)
80+
#gs_e = min(energies)
81+
#logger.info(f"lowest energy: {gs_e}")
8182

8283
# algorithm 2: imaginary time propagation
8384
evolve_config = EvolveConfig(EvolveMethod.tdvp_ps,
84-
adaptive=True,
85-
guess_dt=1e-3/1j,
86-
adaptive_rtol=5e-4,
87-
ivp_solver="RK45"
85+
#adaptive=True,
86+
#guess_dt=1e-3/1j,
87+
#adaptive_rtol=5e-4,
88+
#ivp_solver="RK45"
8889
)
8990
mps.evolve_config = evolve_config
90-
evolve_dt = 0.5/1j
91+
evolve_dt = 0.01/1j
9192
energy_old = 0
9293
istep = 0
94+
norm = 1
9395
while True:
94-
mps = mps.evolve(mpo, evolve_dt)
95-
energy = mps.expectation(mpo)
96+
#energy = mps.expectation(mpo) / mps.mp_norm**2
97+
#norm *= np.exp(-energy*0.01/2)
98+
mps = mps.evolve(mpo, evolve_dt, normalize=False)
99+
logger.info(f"norm: {mps.mp_norm}")
100+
energy = mps.expectation(mpo) / mps.mp_norm**2
101+
norm *= np.exp(-energy*0.01)
102+
logger.info(f"norm: {norm}")
96103
logger.info(f"current mps: {mps}")
97104
logger.info(f"istep={istep}, energy={energy}")
98105
if np.abs(energy-energy_old) < 1e-5:

renormalizer/lib/krylov/krylov.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ def expm_krylov(Afunc, dt, vstart: xp.ndarray, block_size=50):
5454
for j in range(len(vstart)):
5555

5656
w = Afunc(V[j])
57-
alpha[j] = xp.vdot(w, V[j]).real
57+
alpha_tmp = xp.vdot(w, V[j])
58+
try:
59+
assert np.allclose(alpha_tmp, alpha_tmp.real)
60+
except:
61+
raise ValueError(f"alpha:{alpha_tmp}, The Hamiltonian must be hermitian when using Krylov, try RK45 as the solver.")
62+
alpha[j] = alpha_tmp.real
5863

5964
if j == len(vstart)-1:
6065
#logger.debug("the krylov subspace is equal to the full space")

0 commit comments

Comments
 (0)