Update about 1:
I have tried three different approaches:
H + O
: adding MPO with default truncation;
add(H, O, alg="directsum")
: adding MPO without truncation;
- Pass
[H, O]
as MPOs into tdvp where the ProjMPOSum
will be called internally.
Some representative outputs are:
1. # adding MPO with truncation
E_electron = -52.13917886125441
linkdims(Hτ) = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 39, 38, 38, 37, 38, 38, 38, 38, 38, 39, 39, 39, 38, 37, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 60, 97, 106, 142, 176, 215, 215, 284, 244, 355, 270, 397, 354, 382, 388, 371, 410, 282, 317, 249, 240, 187, 156, 112, 119, 145, 113, 115, 156, 160, 166, 225, 230, 234, 343, 338, 361, 390, 315, 322, 308, 315, 284, 271, 255, 194, 212, 169, 109, 92, 58, 48, 39, 16, 13, 11, 4, 4, 3, 3, 1, 1, 1, 1, 1]
After sweep 1: maxlinkdim=397 maxerr=9.82E-07 current_time=0.06 time=411.757
----------------------------------------------------------------------
E_electron = -54.80946995491526
linkdims(Hτ) = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 38, 37, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 60, 95, 104, 140, 172, 209, 210, 276, 240, 344, 262, 383, 346, 369, 377, 365, 397, 274, 309, 240, 234, 183, 152, 112, 116, 141, 110, 113, 152, 156, 163, 219, 226, 227, 333, 328, 348, 380, 307, 316, 300, 307, 275, 262, 249, 190, 204, 164, 107, 90, 58, 48, 39, 16, 13, 11, 4, 4, 3, 3, 1, 1, 1, 1, 1]
After sweep 1: maxlinkdim=385 maxerr=9.91E-07 current_time=0.07 time=382.639
2. # directsum MPO
E_electron = -53.06328573894331
linkdims(Hτ) = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 60, 92, 97, 130, 154, 159, 202, 266, 235, 324, 258, 364, 275, 368, 342, 344, 330, 244, 302, 208, 213, 118, 133, 103, 87, 108, 96, 99, 130, 114, 134, 156, 210, 245, 333, 331, 355, 364, 345, 370, 270, 339, 249, 281, 220, 220, 175, 140, 101, 96, 57, 47, 35, 16, 12, 10, 4, 4, 3, 3, 1, 1, 1, 1, 1]
After sweep 1: maxlinkdim=358 maxerr=9.93E-07 current_time=0.06 time=711.231
----------------------------------------------------------------------
E_electron = -55.788064558771566
linkdims(Hτ) = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 60, 90, 95, 126, 150, 153, 197, 258, 229, 313, 251, 351, 268, 358, 328, 334, 316, 236, 294, 206, 204, 116, 129, 101, 87, 104, 94, 97, 127, 112, 132, 154, 206, 239, 320, 323, 345, 353, 336, 357, 265, 327, 243, 273, 214, 214, 170, 138, 99, 94, 57, 47, 35, 16, 12, 10, 4, 4, 3, 3, 1, 1, 1, 1, 1]
After sweep 1: maxlinkdim=348 maxerr=9.99E-07 current_time=0.07 time=692.349
3. # tdvp with ProjSumMPO
E_electron = -52.457098556393056
linkdims(H) = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 45, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 56, 80, 91, 132, 155, 195, 214, 268, 238, 323, 268, 360, 290, 364, 305, 357, 294, 263, 298, 257, 230, 145, 132, 112, 101, 100, 110, 85, 100, 111, 140, 164, 166, 185, 233, 210, 240, 260, 239, 281, 238, 275, 234, 236, 218, 180, 185, 149, 106, 94, 58, 47, 35, 16, 13, 10, 4, 4, 3, 3, 1, 1, 1, 1, 1]
linkdims(O) = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
After sweep 1: maxlinkdim=353 maxerr=9.99E-07 current_time=0.06 time=283.385
----------------------------------------------------------------------
E_electron = -55.119375825532586
linkdims(H) = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 45, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7]
linkdims(psi) = [1, 1, 1, 1, 1, 3, 3, 4, 4, 12, 13, 16, 36, 47, 54, 78, 89, 129, 149, 190, 208, 259, 232, 314, 262, 347, 282, 353, 299, 349, 284, 257, 292, 249, 226, 143, 128, 112, 99, 100, 108, 83, 100, 109, 138, 160, 164, 181, 227, 205, 235, 253, 234, 274, 233, 268, 228, 230, 214, 175, 180, 144, 104, 92, 58, 47, 35, 16, 13, 10, 4, 4, 3, 3, 1, 1, 1, 1, 1]
linkdims(O) = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
After sweep 1: maxlinkdim=344 maxerr=9.94E-07 current_time=0.07 time=474.753
Conclusions:
- Subtracting \langle H \rangle from H with default truncation can lead to MPO with smaller bond dimensions, which makes tdvp faster and the truncation overhead is negligible. But this is elusive to me, if someone can give a hint, I’d greatly appreciate it!
- The unusual fast performance of 3(time=283.385) may results from the fast convergence of KrylovKit, which is off-topic but need to be studied further by extracting the
convergenceInfo
of krylovkit.
BTW, the Hamiltonian is dynamically generated and dependent of another synchronized process dealing with phonon state. The whole process is essentially the iteration between tdvp and phonon-evolution.